{"_id":"@aethermc/cli","_rev":"2-4b7e8db9872f3b164eebb73ca3386660","name":"@aethermc/cli","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@aethermc/cli","version":"1.0.0","keywords":["aether","minecraft","launcher","cli","extensions","themes","modding"],"author":{"name":"Aether"},"license":"GPL-3.0","_id":"@aethermc/cli@1.0.0","maintainers":[{"name":"wayback","email":"wayback145b@gmail.com"}],"homepage":"https://github.com/Aether-Launcher/Aether-Cli#readme","bugs":{"url":"https://github.com/Aether-Launcher/Aether-Cli/issues"},"bin":{"aet":"bin/run.js","aether":"bin/run.js","aether-cli":"bin/run.js"},"dist":{"shasum":"f47762f5bbee038368cd3227ffa51608ac263e5b","tarball":"https://registry.npmjs.org/@aethermc/cli/-/cli-1.0.0.tgz","fileCount":5,"integrity":"sha512-YLLDccatTo/VQNS184D2A2PTt0tg8QswkLEuI1FUxjZlthKpY6prCi5LYYJXG/Flcva8Iw8p0n0Oa2G7/83guQ==","signatures":[{"sig":"MEYCIQC9tkB8PbnSp4WsWegVxXyB7b8PFnIeUOHZjIUGT1LzewIhAPikdjl0t9v969jd3JhtiFj0LI1J7KM1t2ji/IhH4NV3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43708},"main":"bin/run.js","gitHead":"3f62ca299780c93442d20331cce0b58aec82d114","scripts":{"test":"node bin/run.js help","postinstall":"node bin/install.js"},"_npmUser":{"name":"wayback","email":"wayback145b@gmail.com"},"repository":{"url":"git+https://github.com/Aether-Launcher/Aether-Cli.git","type":"git"},"_npmVersion":"11.7.0","description":"Official CLI toolkit for Aether Minecraft Launcher extensions and themes","directories":{},"_nodeVersion":"25.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cli_1.0.0_1789079605926_0.9588352141773806","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"_id":"@aethermc/cli@1.0.1","bin":{"aet":"bin/run.js","aether":"bin/run.js","aether-cli":"bin/run.js"},"bugs":{"url":"https://github.com/Aether-Launcher/Aether-Cli/issues"},"dist":{"shasum":"5a5f6bffd659b1c4a4754cce09dead9fba45ab9b","tarball":"https://registry.npmjs.org/@aethermc/cli/-/cli-1.0.1.tgz","fileCount":5,"integrity":"sha512-2U6Z7lYdaQVNqzT9Pvu+OZv5XmfWnwQ+/TSVuJ1f2cR+uPlSmcRiHX8pcQ0n5JLMdIzk+uzXuRx1Atucw1KieA==","signatures":[{"sig":"MEQCICtyqOWmSE0zvY35/Irem2jtvXtXugXKYb3qyBHjnqC3AiAw8rLH6r1rNob3VKGpM0V7+2/DbArnZw8HHRw8MKTO5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIA3uYMyvewmIFK3yJEMV63X2Wbpk/vWw+5UGKmzknd82AiEA8piaT6FmQmvF1ih1rVNM9nqljwdKR6rc8roq/f3sI8I="}],"unpackedSize":43708},"main":"bin/run.js","name":"@aethermc/cli","author":{"name":"Aether"},"gitHead":"9314a1df2a2ba239d6ed4075b18ce9ce4bec061e","license":"GPL-3.0","scripts":{"test":"node bin/run.js help","postinstall":"node bin/install.js"},"version":"1.0.1","_npmUser":{"name":"wayback","email":"wayback145b@gmail.com"},"homepage":"https://github.com/Aether-Launcher/Aether-Cli#readme","keywords":["aether","minecraft","launcher","cli","extensions","themes","modding"],"repository":{"url":"git+https://github.com/Aether-Launcher/Aether-Cli.git","type":"git"},"_npmVersion":"11.7.0","description":"Official CLI toolkit for Aether Minecraft Launcher extensions and themes","directories":{},"maintainers":[{"name":"wayback","email":"wayback145b@gmail.com"}],"_nodeVersion":"25.4.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_1.0.1_1789080566595_0.8045475823094324"}}},"time":{"created":"2026-09-10T22:33:25.774Z","modified":"2026-09-10T22:49:26.864Z","1.0.0":"2026-09-10T22:33:26.083Z","1.0.1":"2026-09-10T22:49:26.682Z"},"bugs":{"url":"https://github.com/Aether-Launcher/Aether-Cli/issues"},"author":{"name":"Aether"},"license":"GPL-3.0","homepage":"https://github.com/Aether-Launcher/Aether-Cli#readme","keywords":["aether","minecraft","launcher","cli","extensions","themes","modding"],"repository":{"url":"git+https://github.com/Aether-Launcher/Aether-Cli.git","type":"git"},"description":"Official CLI toolkit for Aether Minecraft Launcher extensions and themes","maintainers":[{"name":"wayback","email":"wayback145b@gmail.com"}],"readme":"# Aether CLI\n\n<p align=\"center\">\n  <a href=\"https://discord.gg/pQc9NnGhpG\">\n    <img src=\"https://img.shields.io/badge/discord-Join%20our%20Discord-5865F2?logo=discord&logoColor=white&style=for-the-badge\" alt=\"Discord\">\n  </a>\n</p>\n\n`aether` (alias: `aet`) is the official developer toolkit for creating, building, developing, and packaging **extensions** and **themes** for the [Aether Minecraft Launcher](https://github.com/Aether-Launcher/Aether). It lets developers scaffold new projects, hot-reload them into the local launcher, and package them securely into `.aex` (extension) or `.theme` (appearance pack) format.\n\n---\n\n## Installation\n\n### Via npm (Recommended — No Go required)\n\nYou can run commands instantly without installing using `npx`:\n\n```bash\nnpx @aethermc/cli init my-extension com.example.myext\n```\n\nOr install globally to get `aether`, `aet`, and `aether-cli` in your terminal:\n\n```bash\nnpm install -g @aethermc/cli\n```\n\n### Via Go\n\nIf you have Go installed, you can compile and install directly from source:\n\n```bash\ngo install github.com/Aether-Launcher/aether-cli/...@latest\n```\n\nMake sure your Go bin directory is on `PATH` (`$(go env GOPATH)/bin` on macOS/Linux, `%USERPROFILE%\\go\\bin` on Windows), then open a new terminal and run:\n\n```bash\naether help\n# or using the short alias:\naet help\n```\n\n---\n\n## Commands\n\nYou can run any command using either `aether`, `aet`, or `aether-cli`.\n\n### `init` — Scaffold a new project\n\n```bash\n# Scaffold a new extension\naether init <name> <id>\n\n# Scaffold a new theme\naether init <name> <id> --theme\n```\n\n| Flag | Alias | Description |\n|:---|:---|:---|\n| `--theme` | `-t` | Scaffold a theme instead of an extension |\n\n**Extension output:**\n```\n<name>/\n├── manifest.json     # Extension metadata (id, name, version, permissions, api)\n├── package.json      # npm typings dep (@aethermc/sdk)\n├── main.js           # Backend sandbox entry point (Goja)\n└── ui/\n    └── index.html    # Frontend rendered in a sandboxed iframe\n```\n\n**Theme output:**\n```\n<name>/\n├── package.json      # Theme metadata (id, name, version, author, css, overwrite)\n├── theme.css         # CSS overrides (Aether :root design tokens pre-filled)\n├── overwrite.json    # Optional asset overrides (sidebar-logo, background, etc.)\n└── README.md\n```\n\n---\n\n### `dev` — Live extension hot-reloading\n\n```bash\n# Watch and hot-sync the current extension directory to Aether\naether dev\n# or\naet dev\n```\n\nValidates `manifest.json`, deploys the extension directly to your local Aether Launcher directory (`%APPDATA%\\Aether\\extensions\\<id>` on Windows, `~/Library/Application Support/Aether/extensions/<id>` on macOS, `~/.local/share/Aether/extensions/<id>` on Linux), and continuously watches for file changes to keep the launcher in sync.\n\n---\n\n### `validate` — Validate an extension or theme\n\n```bash\n# Validate extension (reads manifest.json)\naether validate\n\n# Validate theme (reads package.json)\naether validate --theme\n```\n\n**Auto-detection:** if `manifest.json` is absent but `package.json` is present, the project is automatically treated as a theme.\n\n| Flag | Alias | Description |\n|:---|:---|:---|\n| `--theme` | `-t` | Force theme validation mode |\n\n**Extension checks:** `manifest.json` exists, valid JSON, required fields: `id`, `name`, `version`, `main`, `api`.\n\n**Theme checks:** `package.json` exists, valid JSON, required fields: `id`, `name`, `version`, CSS file referenced by `css` field actually exists on disk.\n\n---\n\n### `build` — Package into .aex or .theme\n\n```bash\n# Build extension → <id>-<version>.aex\naether build\n\n# Build theme → <id>-<version>.theme\naether build --theme\n```\n\n**Auto-detection:** same logic as `validate` — detects project type automatically.\n\n| Flag | Alias | Description |\n|:---|:---|:---|\n| `--theme` | `-t` | Force theme build mode |\n\nRuns validation first, then packages all project files into a zip-format archive, automatically excluding `.git/`, `node_modules/`, and existing archive files.\n\n---\n\n### `help` — Show help\n\n```bash\naether help\n# or\naet help\n```\n\n---\n\n## Quick Start — Extension\n\n```bash\naet init my-extension com.example.myextension\ncd my-extension\nnpm install   # installs @aethermc/sdk for TypeScript types\naet dev       # live test in local launcher\naet validate\naet build\n# → com.example.myextension-1.0.0.aex\n```\n\n## Quick Start — Theme\n\n```bash\naet init my-theme com.example.mytheme --theme\ncd my-theme\n# Edit theme.css to customise colours, radii, spacing...\naet validate\naet build\n# → com.example.mytheme-1.0.0.theme\n```\n\n---\n\n## Extension SDK\n\nThe scaffolded extension includes a dependency on [`@aethermc/sdk`](https://www.npmjs.com/package/@aethermc/sdk) — the official TypeScript SDK for Aether extensions. It provides full type definitions for the `Aether` global API and helper utilities:\n\n```bash\nnpm install --save-dev @aethermc/sdk\n```\n\nSee the [Aether SDK repository](https://github.com/Aether-Launcher/Aether-SDK) for full documentation.\n\n---\n\n## Publishing Your Extension\n\nOnce built, submit your `.aex` file alongside an entry in `index.json` to the [Aether Extension Registry](https://github.com/Aether-Launcher/Aether-Extensions) by opening a Pull Request. All extensions must comply with the [Aether Extension API License](https://github.com/Aether-Launcher/Aether-SDK/blob/main/LICENSE) — closed-source extensions are allowed, subject to Aether review.\n\n---\n\n## Development\n\nThe CLI is written in Go and uses only the standard library to keep the binary small and dependency-free.\n\n```bash\n# Build and install locally\ngo install ./...\n\n# Run either command\naether help\naet help\n```\n\n---\n\n## License\n\nLicensed under the GNU General Public License v3.0 only. See [LICENSE](LICENSE).\n","readmeFilename":"README.md"}