@wolfstar/cli. For the weekly summary across all packages, see the changelog overview.
2.12.0 (2026-10-21)
New features
- Remove a subcommand or group —
stars commands clean --nameaccepts the path of a subcommand or a group (settings server,settings group sub). Discord can’t delete one, so the CLI sends the deployed command back with aPATCHwithout that entry, keeping the parent and its other subcommands. Paths under one command share a request. A path that matches nothing still fails withCOMMAND_NOT_FOUND. (#351) - Last subcommand deletes the command — Removing a command’s last subcommand deletes the command, and the confirmation says so.
--jsonoutput gains aremovedlist next todeleted. stars dev --host [address]— Sets the address the application listens on (HTTP_ADDRESS, plusNITRO_HOST/HOSTfor Nitro). A bare--hostlistens on every interface. The occupied-port check probes that address, and an inferred display URL follows a concrete one. (#348)-palias —-pis now short for--port, as in Nuxt’s dev command.
Updates
- Ink 8 — The terminal UI now uses
inkv8. (#320) - Dependencies — Updated
@wolfstar/vite-serverto0.5.2,@wolfstar/nitro-serverto0.2.13.
2.11.0 (2026-10-18)
New features
- Dev output styles — Pick Nuxt-style, dashboard, or plain
stars devoutput withtui.styleor--style.dev.layoutkeeps working. (#344) - Startup port checks —
stars devchecks local development ports before startup and offers to continue, cancel, or use the next port. Use--portor a conflict policy for automation. The chosen port is passed to the runtime. - Startup validation —
stars devvalidates HTTP endpoints and dev listener ports, and reports unwritable development directories before building.
Updates
- Display URLs — Explicit display and health URLs stay independent of the bot listener and are kept across port overrides. In framework mode, unrelated ambient
PORTvalues are ignored. Nitro runtime ports are read fromNITRO_PORTbeforePORT. - Dependencies — Updated
@wolfstar/schemato0.12.0,@wolfstar/kitto0.3.1,@wolfstar/nitro-serverto0.2.12,@wolfstar/vite-serverto0.5.1.
2.10.0 (2026-10-17)
New features
ctx.addPiecesDir(directory)— Modules can register a directory of pieces, with one folder per store (commands,listeners, …). The pieces are registered before the bot loads, including fortscandnonebuilds.ModulesRuntimegainspiecesDirs,stars infolists them, and a relative path fails withMODULE_PIECES_INVALID. (#335)- Client lifecycle hooks —
hooksindefineModuleacceptsclient:preGenericsInitialization,client:preInitialization,client:postInitialization,client:preLoad, andclient:postListen. Give each hook by source ({ from, export }), a function called with(client, clientOptions).ctx.addClientHook(name, source)does the same fromsetup. A module’s hooks share one runtime plugin named after it.ModulesRuntimegainsclientHooks,stars infolists them, and a bad hook fails withMODULE_HOOK_INVALID. (#337) ctx.addLocales(directory)— Modules can add a directory of locales laid out as<language>/<namespace>.json. The locales merge into the client’si18noption before@wolfstar/plugin-i18nextbuilds its handler, and your project’s own languages directory is kept.ModulesRuntimegainslocales,stars infolists them, and a bad directory fails withMODULE_LOCALES_INVALID. (#339)future.compatibilityVersion: 7— Opt in to letstars.configdecide what registers.@wolfstar/plugin-*packages inpackage.jsonare no longer activated by their name. Only the modules inmodules, and the ones they install, are.stars build,prepare,dev,info, anddoctorwarn withPLUGINS_NOT_REGISTEREDabout an installed plugin that is left out. (#338)
Updates
- Registered plugins listed — On compatibility version 6 and below nothing changes, but
stars infoandstars doctornow list the plugins registered by name. - Dependencies — Updated
@wolfstar/schemato0.11.0,@wolfstar/kitto0.3.0,@wolfstar/vite-serverto0.5.0,@wolfstar/nitro-serverto0.2.11.
Bug fixes
- Tunnel error kept when repair fails —
stars dev --tunnelkeeps reporting the originalcloudflarederror, and enters thefailedstate, when it can’t delete the broken binary, instead of rejecting. (#334) - No more dashboard flicker — The
stars devdashboard repaints only the lines that changed instead of rewriting the whole screen on every tick. Switching between the dashboard, the panel, and the overlays redraws the screen once. (#330)
2.9.0 (2026-10-17)
New features
stars codegen --only <i18n|commands>— Runs a single generator. Repeat the flag or comma-separate values to run several. A CI job can now check the i18next types, which only read the locale files, without the bot’s secrets or a build. Naming a generator that is off instars.configfails withCODEGEN_GENERATOR_DISABLED. (#329)
Bug fixes
- Broken
cloudflaredbinary —stars dev --tunnelno longer fails on every run when the downloadedcloudflaredbinary is broken (an interrupted download, or a file without the execute bit). The CLI deletes the file, logs a warning, and opens the tunnel again, once per run. (#328)
2.8.0 (2026-10-09)
New features
- varlock reported in
stars.config— When a project has a.env.schemaandvarlockbutstars.configdoes not setenv.loader,stars prepare,build,dev, andinfonow report it asVARLOCK_LOADER_IMPLICIT, or asVARLOCK_NOT_INSTALLEDwhenvarlockis missing.stars doctorchecks that the schema andenv.loaderagree, flagging a schema with another loader orloader: 'varlock'without the package. (#309) stars doctor --fix— Writesenv: { loader: 'varlock' }for you. It createsstars.config.tsthe way@wolfstar/create-http-frameworkscaffolds it, or edits a literaldefineConfig({ ... })or exported object. When the configuration is too dynamic to edit, it prints the line to add. It asks first (--yesanswers for you) and never writes in CI or without a terminal.
2.7.0 (2026-10-09)
New features
- ngrok tunnel provider — Set
dev.tunnel: { provider: 'ngrok' }to open the tunnel through ngrok’s official Node SDK instead of acloudflaredquick tunnel. Adddev.tunnel.domainto bind a domain reserved in your ngrok account, so the hostname survives restarts. Install the optional peer@ngrok/ngrok, and setNGROK_AUTHTOKENin the environment or the project’s.env. (#305) - Provider-aware tooling — The
tkey,--tunnel,stars info, andstars doctoruse and report the configured provider.stars doctorchecks that the ngrok package and authtoken are present.
Updates
cloudflaredstays the default —tunnel: trueand every existing configuration behave as before.TUNNEL_OPTION_CONFLICTdiagnostic —providerordomainnext to aurlyou already serve, anddomainwithout thengrokprovider, are rejected.- CLI follows varlock auto-detection — With
future.compatibilityVersion6, a project that depends on@wolfstar/env-utilities, has a.env.schema(src/.env.schema,.env.schema, orvarlock.loadPath), hasvarlockinstalled, and sets noenv.pathorenv.loadernow resolves the loader to'varlock'.stars devandstars doctorread variables throughvarlock loadinstead of dotenv files the bot does not load, anddev.urlno longer takes its port from those files. (#308) - Dependencies — Updated
@wolfstar/schemato0.10.0,@wolfstar/kitto0.2.1,@wolfstar/nitro-serverto0.2.10,@wolfstar/vite-serverto0.4.5.
2.6.1 (2026-10-08)
Bug fixes
- No spurious redeploy prompts in
stars dev—stars devno longer asks you to redeploy commands that did not change. The bot doesn’t start or restart while a build is still writing output, and the commands the bot registers are compared with the deployed ones, so a command reported as removed and then re-added no longer prompts. If you accept the prompt while a build runs,stars devrefuses with a warning instead of registering an incomplete set of commands. #302
2.6.0 (2026-10-07)
New features
- Module config keys — A module can read its options from its own top-level
stars.configkey (meta.configKey). Once modules are set up, any key that isn’t built in and that no installed module claimed is reported asUNKNOWN_OPTION, with the claimed keys listed in the fix, so misspelled keys are still errors. The check also runs whenmodulesis empty. Ameta.configKeythat is empty, built in, claimed twice, or holds a non-object fails withMODULE_FAILED. #295 - Clickable
stars devdashboard — Click a channel or level in the sidebar to show or hide it (likeSpace). Click again, orAlt/Ctrl-click, to solo it (likes). Click a group header to fold it, click a key in the list to run it, and use the wheel to scroll logs. Setdev.mouse: falseor passstars dev --no-mouseto leave the mouse to your terminal. #291 --tunneland--no-tunnelflags —stars dev --tunnelopens the public tunnel at start regardless ofdev.tunnel(acloudflaredquick tunnel when it’s off).--no-tunnelkeeps it closed at start even whendev.tunnelenables it. Both work with--no-tui, which prints the URL on thetunnelchannel. #290
Updates
- Dependencies — Updated
@wolfstar/schemato0.9.0,@wolfstar/kitto0.2.0,@wolfstar/nitro-serverto0.2.9,@wolfstar/vite-serverto0.4.4.
2.5.0 (2026-10-06)
New features
- Split app and node tsconfigs — With
future.compatibilityVersion6,stars prepare(andstars dev/stars build) writes.stars/tsconfig.app.jsonfor your bot sources and.stars/tsconfig.node.jsonforstars.config.*,vitest.config.*,tsdown.config.*,vite.config.*andscripts/**, instead of.stars/tsconfig.json.--checkfails when either is outdated, andstars doctorandstars inforeport both. #283 stars typecheck— Regenerates.stars/and runs your project’s checker (golarortsc) once on each project.
Updates
- Dependencies — Updated
@wolfstar/schemato0.8.0,@wolfstar/kitto0.1.3,@wolfstar/nitro-serverto0.2.8,@wolfstar/vite-serverto0.4.3.
Migration
- Solution-style root
tsconfig.json— On compatibility version6, make your roottsconfig.jsona solution-style file that references.stars/tsconfig.app.jsonand.stars/tsconfig.node.json. A roottsconfig.jsonthat still extends./.stars/tsconfig.jsongets aTSCONFIG_LEGACY_EXTENDSwarning fromstars prepareandstars doctor. To keep the single.stars/tsconfig.json, pinfuture.compatibilityVersionto5or4.
2.4.0 (2026-10-06)
New features
- Typed command options with
stars codegen— Setcodegen.commandsinstars.config(true, or{ output }, defaultsrc/@types/commands.d.ts) andstars codegenreads the commands from your built bot and writes aCommandOptionsRegistryentry per command path ('ping','math add'). UseCommand.OptionsOf<'math add'>instead of a hand-writteninterface Options:requiredoptions are non-optional,choicesbecome literal unions, andchannel_typesnarrow the channel.stars codegen --checkfails withCODEGEN_OUTDATEDwhen the file is stale, and--jsongives machine-readable output. #275
Updates
- Dependencies — Updated
@wolfstar/kitto0.1.2,@wolfstar/nitro-serverto0.2.7,@wolfstar/schemato0.7.0,@wolfstar/vite-serverto0.4.2.
2.3.1 (2026-10-05)
Bug fixes
- Tunnel shutdown crash —
stars devno longer crashes with an unhandledcloudflared exited (code=0, ...) before URL was readyerror when the tunnel closes, for example on Ctrl+C. Shutdown now goes through the normalstars devstop sequence, and a requested close is no longer reported as a tunnel failure. #270
2.3.0 (2026-10-04)
New features
stars commands diffandstars commands deploy—diffcompares the commands your built bot defines with the ones deployed on Discord (--checkfor CI).deployoverwrites them after confirmation (--yesfor scripts). Both need@wolfstar/http-framework6.1 or later and a built project. #257stars doctor— Checks the runtime, framework, credentials, dev port, tunnel and generated files, with a fix for each problem.--onlinealso queries Discord, and--jsonis for scripts.- Shell completions —
stars completions <bash|zsh|fish>prints a completion script.stars infonow also lists installed modules and the newdevoptions. - Log channels and bot bridge — Dev log entries now have a channel (
cli,build,bot,types,tunnel), atracelevel and optional detail lines. Usedev.logs,--channeland--levelto choose what’s shown at start. The log file always receives everything, anddev.logs.diradds one file per run. With@wolfstar/http-framework6.1 or later, the bot reportshmr,commands,interactions,httpandlifecycleevents to the CLI over IPC. #255 - Hot reload and command refresh — With the
Client’shmroption enabled, builds that only change pieces are hot-reloaded instead of restarting the bot (dev.hmr: falsealways restarts). When registered application commands change,stars devreports it, and withdev.commands.refresh: 'auto'the bot redeploys them. - Full-screen
stars devdashboard — On terminals of at least 90x20,stars devopens a dashboard with a session sidebar (framework version, uptime, port, tunnel, log file), channel and level filters, and a highlighted log stream with folded stack frames. Switch back to the compact panel withdev.layout: 'panel',--layout panelor thevkey. Withdev.commands.refresh: 'prompt'(the default), aRefresh commands? (y/n)card asks before redeploying. New keys:dstops the bot until the nextr,vswitches layout,←/→/Tabselect a filter,Spacetoggles it,ssolos it,ashows all,bgroups by channel,g/Gjump to top and back to live,/searches. #256
Updates
- Log file format — The log file prints each entry’s channel (
cli,bot,types) where it used to print its source (stars,app,tsc), with detail lines indented under the entry. - Dependencies — Updated
@wolfstar/schemato0.6.0,@wolfstar/kitto0.1.1,@wolfstar/nitro-serverto0.2.6,@wolfstar/vite-serverto0.4.1.
2.2.0 (2026-10-02)
New features
- Stars modules — Add
modulestostars.config: a list of package names or[name, options]tuples, installed with@wolfstar/kit’ssetupModulesbeforeconfig:resolved. The resolved config gainsmodulesandruntime(the runtime plugins and auto-import presets the modules contributed). Packages listed inmodulesare skipped by the legacy/registerauto-imports. For thetscandnonebuild tools,stars devuses anode --importpreload, andstars preparewrites.stars/modules.mjsfor production.stars build,stars prepareandstars infowarn withMODULES_PRELOAD_REQUIREDto point you at it. A failing module is reported as aMODULE_FAILEDdiagnostic (exit code 2). #247
Updates
- Dependencies — Updated
@wolfstar/kitto0.1.0,@wolfstar/schemato0.5.0,@wolfstar/vite-serverto0.4.0,@wolfstar/nitro-serverto0.2.5.
2.1.0
New features
- Automatic
envregistration and lifecycle hooks — Add anenvoption tostars.configthat mirrors@wolfstar/env-utilities’ setup options and is registered automatically as the first import of the built entry, before plugin registrations and the bot’s own modules. Add Nuxt-style lifecyclehooks(config:resolved,env:options,prepare:*,builder:created,tsdown:options,build:*,dev:*) run withhookable.future.compatibilityVersion: 5is now the default: it is version 4 plus the automaticenvregistration, which turns on when the project depends on@wolfstar/env-utilities(and stays off with Nitro). Version 4 is still supported. Version 3 is end-of-life: it still works, now reports aCOMPATIBILITY_VERSION_EOLwarning, and will be removed in the next major. Projects generated by@wolfstar/create-http-frameworkwith thetsdownorvitebuild no longer callsetup()from@wolfstar/env-utilitiesby hand;tscand JavaScript projects keep it and setenv: false. (#243)
Updates
- Dependencies — Updated
@wolfstar/schemato0.4.0,@wolfstar/vite-serverto0.3.0,@wolfstar/nitro-serverto0.2.4.
2.0.4
Updates
- Dependencies — Updated
@wolfstar/schemato0.3.0,@wolfstar/nitro-serverto0.2.3,@wolfstar/vite-serverto0.2.4.
2.0.3
Updates
- Dependencies — Updated all non-major dependencies.
- Dependencies — Updated
@wolfstar/nitro-serverto0.2.2,@wolfstar/schemato0.2.1,@wolfstar/vite-serverto0.2.3.
2.0.2
Bug fixes
- Plugin registration version requirement — Require
@wolfstar/vite-server^0.2.2, so upgrading the CLI always brings the plugin registration fix from #222 (only packages exporting/registerget their registration injected) instead of keeping a locked0.2.1that crashes builds depending on@wolfstar/plugin-cache,@wolfstar/plugin-gatewayor@wolfstar/plugin-sharderwithERR_PACKAGE_PATH_NOT_EXPORTED. (#231)
2.0.1
Updates
- Dependencies — Updated all non-major dependencies.
- Dependencies — Updated
@wolfstar/nitro-serverto0.2.1,@wolfstar/vite-serverto0.2.1.
2.0.0
Updates
- Dependencies — Updated
@wolfstar/schemato0.2.0,@wolfstar/nitro-serverto0.2.0,@wolfstar/vite-serverto0.2.0.
New features
- Dedicated Vite and Nitro builder packages — Extract optional Vite and Nitro builders into dedicated server packages (
@wolfstar/vite-serverand@wolfstar/nitro-server), with a shared host context and builder lifecycle contract in schema. Preserve CLI configuration, lazy loading, project-local dependencies, and plugin registration. (#209)
Updates
- Dependencies — Updated
@wolfstar/schemato0.2.0,@wolfstar/nitro-serverto0.2.0,@wolfstar/vite-serverto0.2.0.
1.0.0
Updates
- Dependencies — Updated
@wolfstar/http-frameworkto5.0.0.
New features
- Nitro builds (experimental) — Implemented
experimental.enableNitro:stars dev/stars buildnow build the bot through Nitro v3’s own Vite plugin (nitro/vite, requires Vite 8) instead of refusing withEXPERIMENT_UNAVAILABLE.@wolfstar/http-framework:Clientnow has afetch(request, options?)method, the WebRequest/Responsecounterpart oflisten(), running the exact same signature verification, routing and replies without binding a port, for anything that speaks Fetch instead ofnode:http(Nitro, a Worker,Bun.serve,Deno.serve, Vite’s own dev middleware). The Discord public key is imported once and reused across calls, the same lifetimelisten()gives its own signing key. The previously-unannounced@wolfstar/http-framework/fetchsubmodule (createFetchHandler/FetchHandler/FetchHandlerOptions) is removed in favour of this.@wolfstar/cli: Nitro v3 is itself a Vite plugin, so the newNitroBuilderreuses the project’s ownvite.config.*/stars.config#vitethe same waybuild.tool: 'vite'does, and adds a generated server entry on top: it imports the entry’s default export (theClientinstance, alreadyload()ed rather thanlisten()ed) and callsclient.fetch(request), in the plain{ fetch(Request): Promise<Response> }shape Nitro’s own server entry convention expects.stars buildnow produces.output/laid out for the configuredexperimental.nitro.preset(node-serverby default, deployable to anything Nitro targets:cloudflare-module,aws-lambda,vercel,netlify,bun,deno-deploy, and more) instead of anode:httpprocess;stars devrebuilds and restarts on every change, the same as the other build tools. Installnitro(andvite) as a dev dependency to use it. The now-implementedEXPERIMENT_UNAVAILABLEdiagnostic code is removed fromcliDiagnostics/CliDiagnosticCode.@wolfstar/cli:NitroBuilderalso turns on Vite’s nativeresolve.tsconfigPaths, andstars prepare’s generated.stars/tsconfig.jsonnow emits the same~/@/~~/@@aliasesbuild.tool: 'tsdown'already gets wheneverexperimental.enableNitrois on. (#207)
Updates
- Dependencies — Updated
@wolfstar/http-frameworkto5.0.0.
0.7.0
New features
- Colour themes for
stars dev—stars devnow has colour themes, like Claude Code. PressTin the interactive UI to preview and pickdark,light, the colour-blind friendlydark-daltonized/light-daltonized, the terminal-palette-onlydark-ansi/light-ansi, orauto(follows the terminal background). The choice is saved to~/.config/stars/preferences.json($XDG_CONFIG_HOME,%APPDATA%or$STARS_CONFIG_DIR).--theme <name>andSTARS_THEMEoverride the saved theme for one run. The UI now paints with semantic theme colours, so body text keeps the terminal’s own foreground and stays readable on light backgrounds. (#204) - Turborepo-style shutdown —
stars devnow shuts down like Turborepo: the firstCtrl+C(orSIGINT/SIGTERM/SIGHUP) stops the bot gracefully and prints a hint, a second one kills the bot and its helper processes right away instead of waiting fordev.killTimeout. (#201) - Readable crash reports — Render unexpected errors (and
stars devstartup crashes) as sourcemapped, syntax-highlighted reports throughmy-bad, the waynuxtdoes, instead of a raw stack trace into the bundleddist. Errors the CLI already explains (CliError,ConfigError) keep their short message and hint.runMainis now exported for programmatic use, and the package’s sources are reorganised afternuxt/cli(commands/,dev/,builders/,utils/,main.ts,run.ts) with no change to thestarscommands or the public exports. (#200)
0.6.1
Bug fixes
- Quick tunnel reliability — Fixed the
dev.tunnelquick tunnel: it now opens thecloudflaredtunnel throughuntuninstead of spawningcloudflareddirectly and scraping its stdout for the URL with a regex.untunmanages thecloudflaredbinary itself (downloading it if missing) and exposes the tunnel URL and lifecycle programmatically, which also fixes the tunnel never closing when spawningcloudflaredfailed silently. (#195)
0.6.0
New features
- Auto-registered WolfStar plugins — Automatically activate
@wolfstar/plugin-*dependencies during bundler builds by injecting each plugin’s/registerside-effect entrypoint before the application entry. (#192)
0.5.0
New features
- Generated TypeScript alias config — Generate an extendable
.stars/tsconfig.jsonduring prepare, dev and build with TypeScript paths matching tsdown aliases, and extend it in scaffolded projects. Include Sapphire base, extra-strict, and decorators compiler options in the generated configuration, with ESNext/Bundler and noEmit for bundler builds. Align bundler compiler options with Nitro: isolated modules, verbatim syntax, JavaScript sources, explicit TypeScript extensions, package imports, and web API types. (#191)
Updates
- Dependencies — Updated all non-major dependencies.
- Dependencies — Updated
@wolfstar/http-frameworkto4.0.1.
0.4.0
New features
- Convention-first workflow — Make the Stars workflow convention-first: compatibility version 4 is now the default,
stars devforces development mode,src/localesis copied and watched automatically, and environment files are discovered under bothsrc/and the project root. The interactive dev UI now supportstto open or close a public quick tunnel without configuringdev.tunnel. (#182)
Updates
- Dependencies — Updated
@wolfstar/http-frameworkto4.0.0.
0.3.0
New features
- Nuxt-style dev panel and folded logs — Align the
stars devterminal UI with Nuxt’s pinned panel and folded logs. The tsdown builder now leaves dependencies external withdeps.neverBundle, removing the deprecated option and keeping shared dependencies external for dynamically loaded pieces. Its entry list, target and output-size table are suppressed; warnings and errors remain available in the log browser and log file. The bottom-aligned panel displays an animated Stars wordmark, aligned URLs, actual build-phase progress and elapsed time, then readiness timing and diagnostic counts.dev.banneraccepts custom text/lines orfalseto hide the wordmark. Log, help and session-info views use the alternate screen and restore the panel when closed. Logs support search, source/level filters, selection, copying, and jumping to the last error with context. Stack frames are dimmed and no longer counted as separate errors; Node warnings are classified as warnings rather than errors. Rebuild state and duration now reset on Rolldown’s per-build hook, including recovery from a failed build. Reduced motion preserves the elapsed clock, and redirected input, dumb terminals and small panes get a safe plain fallback. (#168)
Updates
- Dependencies — Updated all non-major dependencies.
- Dependencies — Updated dependency chokidar to v5.
- Dependencies — Updated
@wolfstar/http-frameworkto3.6.0.
0.2.0
New features
tsdownbuild fromstars.config— Buildtsdownfromstars.config, and wire auto imports into it.stars buildandstars devnow derive the wholetsdownbuild fromstars.config, so a base project configures nothing: every source file next toentry(minus*.test.*/*.spec.*), emitted one-to-one so the stores keep loading pieces fromdist/commandsat runtime, ESM onplatform: 'node', the project’s tsconfig, sourcemaps and treeshaking on, minification off, dependencies left innode_modules(deps.skipNodeModulesBundle), no declaration files, and the output extensionbuild.outputimplies. The build also ships Nuxt’s alias prefixes:~and@resolve to the entry’s directory,~~and@@to the project root. A target written as a relative path ('./src/lib') is resolved against the project root the way every other path instars.configis. The project’stsdownblock is layered on top: its values win, and itspluginsandaliasentries are added to whatstarscontributes rather than replacing them. The auto imports plugin is injected by the CLI instead of by the project’s own configuration file, sofuture: { compatibilityVersion: 4 }is all a project needs for the framework’s exports and itssrc/lib/**,src/utils/**to be usable without animportstatement. Withfuture.compatibilityVersion: 3atsdown.config.*still drives the build and everything above is merged over it, so options can move across one at a time. Theviteblock finally reaches Vite too: it was resolved and validated, but never passed tovite.build().stars infogains aFuturesection with the compatibility version in effect, and twoBuildrows: the file the build tool is configured from, and the option names thetsdown/viteblock sets. (#164)
Updates
- Dependencies — Updated
@wolfstar/http-frameworkto3.5.0.
0.1.0
New features
stars devloop completion — Round out thestars devloop with the pieces a Discord bot needs while developing:dev.typecheckruns a type checker next to the bot and reports type errors on the dev UI’s owntscchannel, without blocking builds or restarts.dev.typecheck.checkerselectstsc,golar(golar tsc) ortsz, and defaults toauto:golarwhen the project depends on it,tscotherwise.tscandgolarwatch the project themselves;tsz, which has no watch mode, is re-run after every build.dev.tunnelexposes the bot’s interactions endpoint publicly, either through acloudflaredquick tunnel (true) or an https URL you already serve (a string), so Discord can reach it.dev.tunnel.updateEndpointwrites that URL to the Discord application’sinteractions_endpoint_urland is opt-in.dev.logFile(default.stars/dev.log) mirrors a dev session’s logs to disk, so a run can be read back after the terminal UI is gone.stars commandslists and cleans the application commands Discord has deployed (--guild,--name,--yes,--json), which is how renamed or removed commands get cleared.stars infonow reports the auto imports and the newdevoptions too. The interactivestars devUI is now an Ink (React) application: the same keys and layout, rebuilt as components, with the terminal’s alternate screen handled by Ink itself.@wolfstar/clitherefore requires Node 22 or newer (Ink’s own requirement); plain mode is unchanged and still takes over on non-interactive output, in CI and with--no-tui.stars commands cleanwithout--name/--yesnow runs an interactive wizard: a checklist of the deployed commands, then a confirmation, instead of an all-or-nothing prompt. (#158)- Typed project configuration and the
starsCLI — Mirroring how Nuxt splitsnuxt.config/defineNuxtConfig(owned by thenuxtframework) fromnuxi(a separate CLI that calls into it), the typedstars.config.{ts,mts,cts,js,mjs,cjs}schema and loader are owned by@wolfstar/http-framework(@wolfstar/http-framework/config:defineConfig,loadStarsConfig,ConfigError), not by the CLI. Any tool can resolve a project’s configuration without depending on@wolfstar/cli. The config module has no side effects; importing it (or astars.config.tsthat imports it) never starts the bot. Configuration is discovered from the working directory or passed with--config, paths are resolved from the file, every option has a default, and invalid options raise aConfigErrorwith a stable code, the offending option path, the file, and an actionable hint.@wolfstar/cliships thestarsbinary that consumes it:dev,build,info,codegen.stars devbuilds through the project’stsdownortsc(or plain-watches JavaScript projects), starts the bot and restarts it after every successful build.dev.urlneeds no configuration: it is detected fromHTTP_PORT(env var,.env.local/.env, ordev.env) or3000, the way Vite’s and Nuxt’s dev servers do, andlocalhostis swapped for127.0.0.1at runtime if that is what is actually reachable. On a terminal it renders an interactive UI (lifecycle, uptime, restart reason, build state, URL/health, filtered logs,rrestart,cclear,h/?help,qquit);--no-tui,STARS_TUI=plain, CI and redirected output switch to plain line output. Both modes honourNO_COLOR, reduced motion, and stop the bot cleanly onSIGINT/SIGTERMwith consistent exit codes.ConfigErrors from the framework are reported with exit code2.stars buildruns the build tool once (exit code3on failure).stars info [--json]prints the resolved configuration and environment.stars codegen [--check] [--json]runs the i18next type generation.stars --helpandstars --versionnever load the configuration machinery, so they stay fast. (#158) - Experimental config block — Add an
experimentalblock tostars.config.*, in the shape Nuxt’s ownexperimentalconfig has: opt-in booleans, allfalseby default, each documented with what it changes and what it still needs.experimental.enableVitelets a project build through its ownviteinstead oftsdown(build.toolaccepts'vite'only with the flag on, and'auto'only then detects avite.config.*).experimental.enableExternalViteleaves the build to the project:stars devstarts no build of its own, it watches what the external one writes and restarts the bot, keeping restarts, health, the tunnel, type checking and the panel working.experimental.enableNitrois declared but not implemented yet: it needs the framework’s Fetch adapter, sostars dev/stars buildrefuse it with an actionable error instead of silently ignoring it.stars inforeports which flags are on. (#158)
Updates
- Dependencies — Updated
@wolfstar/http-frameworkto3.4.0.