Skip to main content
Changes to @wolfstar/schema. For the weekly summary across all packages, see the changelog overview.

0.12.0 (2026-10-18)

New features

  • tui.style — Configure Nuxt-style, dashboard, or plain stars dev output. dev.layout keeps working. (#344)
  • Port conflict policies — Configure how stars dev handles an occupied development port for automation.

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 PORT values are ignored. Nitro runtime ports are read from NITRO_PORT before PORT.

0.11.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 for tsc and none builds. ModulesRuntime gains piecesDirs, stars info lists them, and a relative path fails with MODULE_PIECES_INVALID. (#335)
  • Client lifecycle hooks — hooks in defineModule accepts client:preGenericsInitialization, client:preInitialization, client:postInitialization, client:preLoad, and client:postListen. Give each hook by source ({ from, export }), a function called with (client, clientOptions). ctx.addClientHook(name, source) does the same from setup. A module’s hooks share one runtime plugin named after it. ModulesRuntime gains clientHooks, stars info lists them, and a bad hook fails with MODULE_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’s i18n option before @wolfstar/plugin-i18next builds its handler, and your project’s own languages directory is kept. ModulesRuntime gains locales, stars info lists them, and a bad directory fails with MODULE_LOCALES_INVALID. (#339)
  • future.compatibilityVersion: 7 — Opt in to let stars.config decide what registers. @wolfstar/plugin-* packages in package.json are no longer activated by their name. Only the modules in modules, and the ones they install, are. stars build, prepare, dev, info, and doctor warn with PLUGINS_NOT_REGISTERED about an installed plugin that is left out. (#338)

Updates

  • Registered plugins listed — On compatibility version 6 and below nothing changes, but stars info and stars doctor now list the plugins registered by name.

0.10.0 (2026-10-09)

New features

  • ngrok tunnel provider — dev.tunnel accepts provider: 'ngrok' and a domain reserved in your ngrok account. cloudflared stays the default. The schema exports TUNNEL_PROVIDERS and DEFAULT_TUNNEL_PROVIDER, and ResolvedTunnelConfig quick mode now carries provider and domain. Conflicting options fail with TUNNEL_OPTION_CONFLICT. (#305)
  • detectVarlock(root) — Inspects a project’s .env.schema, varlock installation, and dependency. (#308)

Updates

  • varlock loader follows the runtime — With future.compatibilityVersion 6, a project that depends on @wolfstar/env-utilities, has a .env.schema, has varlock installed, and sets no env.path or env.loader now resolves ResolvedEnvConfig.loader to 'varlock'. ResolvedEnvConfig.options still holds what stars.config wrote.

0.9.0 (2026-10-07)

New features

  • Module config keys — Top-level stars.config keys that aren’t built in are kept as ResolvedStarsConfig.moduleOptions instead of rejected, so a module can read its options from its own key (meta.configKey). BUILT_IN_CONFIG_KEYS lists the keys the schema owns, assertModuleOptionsClaimed reports the first unclaimed key as UNKNOWN_OPTION, and ModulesRuntime.configKeys carries the keys modules claimed. Augment the StarsConfig interface to type your module’s key. #293
  • dev.mouse option — Controls mouse support in the stars dev dashboard (default true). Set it to false, or pass stars dev --no-mouse, to leave the mouse to your terminal. #291

Migration

  • ModulesRuntime.configKeys is required — If you build a ModulesRuntime literal, add configKeys, or start from EMPTY_MODULES_RUNTIME, which already has it.

0.8.0 (2026-10-06)

New features

  • Compatibility version 6 — future.compatibilityVersion 6 is now the latest and the default, gated by the new SPLIT_TSCONFIG_VERSION constant. A tsdown build’s default build.tsconfig becomes the generated .stars/tsconfig.app.json, and dev.typecheck.projects lists what stars typecheck checks (DEFAULT_APP_TSCONFIG, DEFAULT_NODE_TSCONFIG). A tsc or none project keeps its own tsconfig and gets the node config on top. Pin 5 or 4 to keep the single .stars/tsconfig.json. #282

0.7.0 (2026-10-06)

New features

  • codegen.commands — Set codegen.commands (true, or { output }, default src/@types/commands.d.ts) so stars codegen generates a CommandOptionsRegistry from your built bot, read by Command.OptionsOf<'math add'>. stars codegen --check fails with CODEGEN_OUTDATED when the file is stale. #275

Updates

  • Dependencies — Updated all non-major dependencies (#253).

0.6.0 (2026-10-04)

New features

  • stars dev options — New dev.layout ('auto' | 'dashboard' | 'panel'), dev.logs (channels and levels shown at start, dir and keep for one log file per run), dev.commands.refresh ('prompt' | 'auto' | 'off') and dev.hmr. An unknown value for a fixed-choice option is reported with the new INVALID_CHOICE diagnostic. LOG_LEVELS and DEFAULT_LOG_LEVELS are exported. #254
  • Node env loader — env.loader accepts 'node', and the loader is auto-detected when you leave it unset. #265

0.5.0 (2026-10-02)

New features

  • modules option — Add modules to stars.config: a list of package names or [name, options] tuples, installed by the CLI with @wolfstar/kit’s setupModules before config:resolved. The resolved config gains modules and runtime (the runtime plugins and auto-import presets the modules contributed). A failing module is reported as a MODULE_FAILED diagnostic, and MODULES_PRELOAD_REQUIRED warns when a tsc or none build needs the .stars/modules.mjs preload. #247

0.4.0

New features

  • env in stars.config — Added a top-level env option that mirrors @wolfstar/env-utilities’ setup options. It is registered automatically as the first import of the built entry, before plugin registrations and the bot’s own modules.
  • Lifecycle hooks — Added Nuxt-style hooks (config:resolved, env:options, prepare:*, builder:created, tsdown:options, build:*, dev:*) run with hookable.

Migration

  • future.compatibilityVersion: 5 is now the default. It is version 4 plus the automatic env registration, which activates 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 but now reports a COMPATIBILITY_VERSION_EOL warning and will be removed in the next major.
  • Projects generated by @wolfstar/create-http-framework with the tsdown or vite build no longer call setup() from @wolfstar/env-utilities by hand. tsc and JavaScript projects keep it and set env: false (#243).

0.3.0

Updates

  • Decorators split into new package — Moved the utility decorators out of @wolfstar/http-framework into a new package, @wolfstar/decorators, mirroring the split between @sapphire/framework and @sapphire/decorators.
    • Breaking (@wolfstar/http-framework): ApplyOptions, RequiresGuildContext, RequiresDMContext, RequiresUserPermissions, RequiresClientPermissions, Enumerable, EnumerableMethod, createClassDecorator, createMethodDecorator, createProxy, createFunctionPrecondition, and the PieceConstructor/ContextFallback types are no longer exported by the framework. Install @wolfstar/decorators and import them from there instead; their behaviour is unchanged. The Register* decorators and RestrictGuildIds stay in the framework.
    • @wolfstar/decorators declares @wolfstar/http-framework as a peer dependency.
    • @wolfstar/schema now includes @wolfstar/decorators in the default imports.presets, so projects using the stars CLI’s auto imports keep getting the decorators without an explicit import once the package is installed (#238).

0.2.1

Updates

  • Dependencies — Updated all non-major dependencies (#227).

0.2.0

New features

  • Separate Vite and Nitro builder packages — The optional Vite and Nitro builders are now dedicated server packages with a shared host context and builder lifecycle contract in @wolfstar/schema. CLI configuration, lazy loading, project-local dependencies, and plugin registration are preserved (#209).
  • Nuxt-style configuration entry points — Aligned configuration entry points with Nuxt by adding framework schema and package metadata exports, a lightweight schema/config helper, and separating schema input types from config resolution while preserving existing exports (#209).

2026-09-24

New features

  • New package — The stars.config.* schema and loader now live in @wolfstar/schema. Imports from @wolfstar/http-framework/config keep working unchanged. If you install @wolfstar/cli without @wolfstar/http-framework, add @wolfstar/http-framework yourself. Scaffolded projects are unaffected.

Updates

  • Structured diagnostics — Config errors are now nostics diagnostics with stable codes. ConfigError is removed. Catch errors with instanceof Diagnostic instead. See Config errors.