Skip to main content
Weekly summaries of user-facing changes to Stars Components and the WolfStar plugins. For the full history of one package, open its changelog page below, or see the release history of the stars-components and plugins repositories.

All packages

Stars Components

Plugins

Weekly summaries

2026-10-30

The new @wolfstar/plugin-opentelemetry 0.1.0 traces your bot with OpenTelemetry.

New features

  • New @wolfstar/plugin-opentelemetry package — Load @wolfstar/plugin-opentelemetry/preload with --import to start the OpenTelemetry SDK when an OTLP endpoint is set, with an optional Sentry exporter from SENTRY_DSN. The plugin, or the module under the opentelemetry key of stars.config, opens one span per command and handler. flushTraces() exports pending spans on shutdown. See @wolfstar/plugin-opentelemetry.

2026-10-23

Stars modules can now ship pieces, locales, and client hooks, stars dev gains --host and startup port checks, plugin-gateway 0.15.0 adds application commands, emojis, and monetization, and every plugin gets its own stars.config key.

New features

  • Modules ship pieces, locales, and hooks — @wolfstar/kit 0.3.0 adds ctx.addPiecesDir(directory), ctx.addLocales(directory), and client lifecycle hooks (or ctx.addClientHook(name, source)). stars info lists what each module adds.
  • Opt-in module-only registration — With future.compatibilityVersion: 7, only the modules in stars.config register. Installed @wolfstar/plugin-* packages are no longer activated by name, and a skipped plugin warns with PLUGINS_NOT_REGISTERED. See @wolfstar/schema.
  • stars dev --host and -p — @wolfstar/cli 2.12.0 sets the listen address with --host [address], and a bare --host listens on every interface. -p is now short for --port.
  • Remove a subcommand or group — stars commands clean --name accepts paths like settings server, keeping the parent and its other subcommands.
  • Dev output styles and startup checks — @wolfstar/cli 2.11.0 adds tui.style and --style (Nuxt-style, dashboard, or plain). stars dev checks ports before startup and offers the next free one.
  • stars codegen --only — Run only the i18n or commands generator, for example to check i18next types in CI without secrets or a build.
  • Shared pieces as modules — @wolfstar/shared-http-pieces 2.1.0 and @wolfstar/shared-influx-pieces 1.2.0 add a /module entry to list in modules instead of importing /register.
  • Application commands, emojis, and monetization — @wolfstar/plugin-gateway 0.15.0 adds client.application.commands, guild.commands, client.application.emojis, client.application.entitlements, fetchSKUs(), and subscriptions.
  • RegisterAsDispatchListener — Run a gateway listener on one process only, so a bot sharing pieces between the gateway and plugin-broker workers no longer handles each dispatch twice.
  • More gateway helpers — Message#threadable, client.channels.createMessage(channel, options), and channel.messages.crosspost by ID.

Updates

  • Plugin stars.config keys — Every plugin sets meta.configKey, so you can configure it under its own key (api, broker, i18n, logger, scheduledTasks, …) instead of a modules tuple. Plugins now need @wolfstar/kit ^0.2.0. See the plugin-api changelog.
  • Thread option checks — plugin-gateway rejects mixed thread and forum post options at compile time and before any request. Guild-only message methods throw ChannelMessagesGuildOnly in DMs.
  • @wolfstar/http-framework peer range — decorators, http-framework-test-utils, http-framework-utilities, and the shared pieces now publish a ^6.4.0 range.

Bug fixes

  • EventSub secret and callback — @wolfstar/twitch-helpers 2.0.9 no longer swaps the EventSub secret and callback in setVariables.
  • Stable subcommand order — @wolfstar/plugin-subcommands-advanced 2.2.1 registers modular subcommands sorted by name, so commands no longer update on every start.
  • clientReady and dropped guilds — plugin-gateway no longer stalls clientReady on guilds the bot left during startup, and forwards their guildDelete to broker workers.
  • Steadier stars dev — The dashboard no longer flickers, and --tunnel recovers from a broken cloudflared binary.

2026-10-16

http-framework 6.4.0 can register commands on startup, stars dev gains an ngrok tunnel, varlock projects get first-class CLI support, and plugin-logger 0.4.0 reworks its transports.

New features

  • Startup command registration — @wolfstar/http-framework 6.4.0 registers commands when the client starts through ClientOptions.commands, with incremental ApplicationCommandRegistry.sync(). Pick the registering process with when. Failures warn without stopping the HTTP server.
  • ngrok tunnel provider — Set dev.tunnel: { provider: 'ngrok' } in @wolfstar/cli 2.7.0 to tunnel through ngrok, and add dev.tunnel.domain to keep a reserved hostname across restarts. Install @ngrok/ngrok and set NGROK_AUTHTOKEN. cloudflared stays the default.
  • stars doctor --fix — @wolfstar/cli 2.8.0 reports an implicit varlock loader as VARLOCK_LOADER_IMPLICIT or VARLOCK_NOT_INSTALLED. stars doctor --fix writes env: { loader: 'varlock' } to stars.config for you.
  • Scaffold varlock projects — @wolfstar/create-http-framework 2.10.0 adds --env varlock, which generates a starter .env.schema and derives Env from it. Existing varlock setups are detected automatically. See Environment.
  • client.application — @wolfstar/plugin-gateway 0.14.0 adds a discord.js-style ClientApplication, available from client construction, plus resolveGuildEmoji(client, emojiId).
  • evlog wide events — @wolfstar/plugin-logger 0.4.0 adds an evlog module option and emits one wide event per interaction. Add fields from a command with useInteractionLogger(). SentryTransport can record breadcrumbs and send Sentry Logs.

Updates

  • CLI follows varlock auto-detection — With compatibility version 6, stars dev and stars doctor now read variables through varlock load when the runtime picks varlock on its own.
  • Breaking: plugin-logger peers — The @sentry/node peer is dropped and the evlog peer is raised to ^2.30.0. LogPayload gains message, error, and context. See plugin-logger changelog.
  • plugin-gateway fetch* checks — fetchHighest, fetchPermissions, and fetchPermissionsIn are no longer deprecated. Use them for accurate checks with a filtered cache or a plugin-broker worker.
  • Sentry 11 — @wolfstar/shared-http-pieces 2.0.12 updates @sentry/node to v11.

Bug fixes

  • Crash after an answered interaction — @wolfstar/http-framework 6.3.2 no longer crashes with ERR_STREAM_WRITE_AFTER_END when a handler throws after answering.
  • WinstonTransport close — Closing the transport twice no longer hangs.

2026-10-08

http-framework 6.3.0 adds preconditions, stars.config gains installable modules, and the stars CLI picks up new commands, a full-screen dev dashboard, and typed command options.

New features

  • Preconditions — @wolfstar/http-framework 6.3.0 adds a Precondition piece and a preconditions option on Command.Options and InteractionHandler.Options. Combine entries with nested AND/OR arrays, or run them together with PreconditionRunMode.Parallel. Denials emit chatInputCommandDenied, contextMenuCommandDenied, autocompleteDenied, or interactionHandlerDenied.
  • Modules in stars.config — Add modules to stars.config to install packages built with defineModule from the new @wolfstar/kit. A module can read its options from its own top-level key through meta.configKey. The stars CLI reports keys that no module claims as UNKNOWN_OPTION.
  • Module and plugin entry points for plugins — Every plugin now ships a /module entry point for modules, and most also ship a /plugin entry point for the new object-based definePlugin API in http-framework 6.1.0. See Plugins.
  • New @wolfstar/plugin-scheduled-tasks package — Run ScheduledTask pieces on a BullMQ worker, created with container.tasks.create() or repeated on an interval or cron pattern. 0.2.0 adds a ready gate and waitForReady so tasks wait for your app. See @wolfstar/plugin-scheduled-tasks.
  • New CLI commands — @wolfstar/cli adds stars commands diff, stars commands deploy, stars doctor, stars completions, and stars typecheck.
  • Typed command options — stars codegen with codegen.commands generates a CommandOptionsRegistry. Type options with Command.OptionsOf<'math add'>, or Subcommand.OptionsOf from @wolfstar/plugin-subcommands-advanced 2.2.0.
  • stars dev dashboard — stars dev now opens a clickable full-screen dashboard with log channels and a trace level. Switch to the compact panel with dev.layout: 'panel' or the v key. Turn off mouse support with dev.mouse: false. Toggle the tunnel with --tunnel and --no-tunnel.
  • node env loader — @wolfstar/env-utilities 2.3.0 adds a node loader that needs no extra packages, so dotenv is now optional. varlock’s typed ENV is exported as env from @wolfstar/env-utilities/varlock. See Environment.
  • plugin-gateway additions — @wolfstar/plugin-gateway adds AttachmentBuilder, guild-scoped guild.members, guild.roles, guild.voiceStates, and guild.presences managers, Guild#searchMessages(), voice channel status, discord.js-style sweepers, and synchronous getters such as GuildMember#permissions.
  • Dispatch replay on workers — @wolfstar/plugin-broker 0.4.0 adds replayGatewayDispatches, so workers can run gateway listeners with the same structures and previous state.

Updates

  • Compatibility version 6 is the default — stars prepare now writes separate .stars/tsconfig.app.json and .stars/tsconfig.node.json files. Switch your root tsconfig.json to solution-style, or pin version 5 or 4 to keep the old layout. Projects from @wolfstar/create-http-framework 2.9.0 are already set up.
  • Breaking: UserError goes to *Denied events — A thrown UserError no longer reaches commandError, autocompleteError, or interactionHandlerError. Move user-facing replies to the matching *Denied listener. See http-framework changelog.
  • Breaking: env loader detection — Projects with a .env.schema and varlock installed now load through varlock. Set loader: 'dotenv' to keep the old behaviour. EnvSetupResult is now EnvLoaderOutput.
  • Breaking: plugin-gateway manager caches — Managers now cache in memory by default through manager.cache. Pass cache: null to opt out. manager.get() and Message#fetchEditable() are removed, and bulkDelete resolves to a Collection. See plugin-gateway changelog.
  • Scaffolded projects — create-http-framework now generates AGENTS.md and llms.txt, turns on @wolfstar/eslint-plugin-http-framework rules, and supports --tunnel.
  • Legacy plugin API deprecated — The class-based Plugin, symbol hooks, and registerXHook emit an HTTP_FRAMEWORK_LEGACY_PLUGIN warning. Use definePlugin instead.

Bug fixes

  • stars dev command prompts — stars dev no longer asks you to redeploy commands that did not change.
  • Dev tunnel crash — Closing the tunnel no longer crashes stars dev with an unhandled rejection.
  • Resumed gateway sessions — clientReady now fires and client.user is restored when shards resume a stored session.
  • plugin-sharder cluster defaults — ClusterStrategy no longer throws when execArgv or args are omitted. Failing spawns are reported as ShardSpawnError.
  • Sentry noise — @wolfstar/shared-http-pieces no longer reports a UserError to Sentry.
  • Peer warnings — @wolfstar/http-framework-utilities accepts @wolfstar/plugin-gateway >=0.8.0.

2026-10-01

http-framework 6.0.0 moves the decorators into their own package. stars.config gains env and lifecycle hooks, and three new packages land.

New features

  • env in stars.config — Configure @wolfstar/env-utilities from stars.config with the new env option. The stars CLI loads your environment before plugins and your own modules, so you no longer call setup() by hand. See Environment.
  • Lifecycle hooks — Add hooks to stars.config to run code at build and dev lifecycle points, such as config:resolved, env:options, prepare:*, builder:created, tsdown:options, build:*, and dev:*. See @wolfstar/cli.
  • New @wolfstar/http-framework-utilities package — Type guards, app_permissions-based permission helpers, MessageBuilder, PaginatedMessage, and MessagePrompter for @wolfstar/http-framework. Sessions use a pluggable store: MemorySessionStore for one process, or RedisSessionStore to share across replicas. The optional /gateway entry point adds collectors, GatewayPaginatedMessage, and GatewayMessagePrompter for @wolfstar/plugin-gateway.
  • New @wolfstar/discord-utilities package — Discord limits, regexes, and option resolvers for raw API payloads, with the same exports as @sapphire/discord-utilities.
  • New @wolfstar/decorators package — Utility decorators now live in their own package, mirroring @sapphire/decorators.

Updates

  • Compatibility version 5 is the default — Version 5 is version 4 plus automatic env loading. It turns on when your 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, reports a COMPATIBILITY_VERSION_EOL warning, and will be removed in the next major.
  • Scaffolded projects skip manual setup() — @wolfstar/create-http-framework 2.7.0 projects using the tsdown or vite build rely on the env option. tsc and JavaScript projects keep calling setup() and set env: false.
  • Breaking: decorators moved out of http-framework — @wolfstar/http-framework 6.0.0 no longer exports ApplyOptions, RequiresGuildContext, RequiresDMContext, RequiresUserPermissions, RequiresClientPermissions, Enumerable, EnumerableMethod, createClassDecorator, createMethodDecorator, createProxy, or createFunctionPrecondition. Install @wolfstar/decorators and import them from there. Their behaviour is unchanged. Register* decorators and RestrictGuildIds stay in the framework. CLI auto imports include @wolfstar/decorators by default once it is installed.
  • Breaking: plugin-api 2.0.0 — @wolfstar/plugin-api now aligns with @sapphire/plugin-api 8.3.1, except auth. ApiServer is now Server, ApiPlugin is now Api, and HttpMethod is now MethodName. Routes with no methods no longer default to GET. ApiResponse#json() no longer takes a status code, so use status(code).json(data). The release adds cookies, body readers, a prefix option, and per-route maximumBodyLength. It requires Node.js >=20.18.1.
  • Breaking: plugin-gateway manager.cache — An upcoming @wolfstar/plugin-gateway release exposes a discord.js-style manager.cache, built by a client-level cacheConstructor. Managers now cache every entity in memory by default. Bound memory with cacheOptions or policies.filter, or pass cache: null to keep the previous no-cache behaviour. Replace client.users.get(id) with client.users.cache.get(id).
  • @wolfstar/logger and @wolfstar/http-framework-i18n removed — Both deprecated packages are no longer maintained. Use @wolfstar/plugin-logger and @wolfstar/plugin-i18next instead. See Migration.

Bug fixes

  • plugin-api fixes — Router path, route removal, and supportedMethods bugs are fixed. Server#connect() now rejects instead of throwing uncaught when the port is in use. Malformed Cookie headers no longer crash cookie parsing.

2026-09-24

Nitro deploys, themed dev UI, and clearer diagnostics. This week also brings the http-framework 5.x release and a new @wolfstar/schema package.

New features

  • Nitro builds (experimental) — Set experimental.enableNitro to build your bot with Nitro v3. stars build outputs .output/ for the configured experimental.nitro.preset (node-server by default), so you can deploy to Cloudflare, AWS Lambda, Vercel, Netlify, Bun, Deno Deploy, and more. Install nitro and vite (Vite 8) as dev dependencies. See @wolfstar/cli.
  • Client.fetch() — @wolfstar/http-framework 5.0.0 adds client.fetch(request), the Web Request/Response counterpart of listen(). It runs the same signature verification and routing without binding a port, for Workers, Bun.serve, Deno.serve, and similar runtimes. See @wolfstar/http-framework.
  • stars dev colour themes — Press T in the interactive UI to pick dark, light, colour-blind friendly dark-daltonized/light-daltonized, terminal-palette dark-ansi/light-ansi, or auto. stars dev saves your choice between runs. Use --theme <name> or STARS_THEME to override it for one run.
  • varlock support (experimental) — @wolfstar/env-utilities 2.2.0 can load environment files with varlock instead of dotenv. Opt in with loader: 'varlock' or the DOTENV_LOADER environment variable. See Environment.
  • stars binary ships with http-framework — Installing @wolfstar/http-framework now gives you the stars command, with no separate @wolfstar/cli install.

Updates

  • Structured diagnostics — Config and CLI errors are now nostics diagnostics with stable codes, a reason, an actionable fix, and a docs link. ConfigError and CliError are removed. Catch errors with instanceof Diagnostic instead. Exit codes are unchanged. See Config errors and CLI errors.
  • Readable crash reports — Unexpected errors and stars dev startup crashes now render as sourcemapped, syntax-highlighted reports instead of raw stack traces.
  • Faster stars dev exit — The first Ctrl+C stops your bot gracefully. A second one kills the bot and its helper processes immediately, without waiting for dev.killTimeout.
  • New @wolfstar/schema 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.
  • Optional Vite and Nitro builders — The Vite and Nitro builders now ship as separate @wolfstar/vite-server and @wolfstar/nitro-server packages. They load only when you use them. Your CLI configuration is unchanged.
  • Oxc configs as TypeScript — @wolfstar/oxfmt-config and @wolfstar/oxlint-config 0.2.0 now default-export defineConfig objects. Spread the formatter config into oxfmt.config.ts and pass the linter config to extends in oxlint.config.ts. The index.json and .oxlintrc.json entry points are removed.
  • Plugins support http-framework 5 — @wolfstar/plugin-api, @wolfstar/plugin-i18next, @wolfstar/plugin-logger, and @wolfstar/plugin-subcommands-advanced now target @wolfstar/http-framework 5.x.

Bug fixes

  • stars dev readability on light terminals — The dev UI now uses semantic theme colours, so body text keeps your terminal’s foreground colour and stays readable on light backgrounds.

2026-09-17

Conventions land in the CLI: v4 is the new default, projects auto-register their plugins, and a quick tunnel now works out of the box.

New features

  • Convention-first stars workflow — Compatibility version 4 is now the default in @wolfstar/cli and @wolfstar/http-framework. stars dev forces development mode, src/locales is copied and watched automatically, and environment files are discovered under both src/ and the project root. The interactive dev UI adds a t shortcut to open or close a public quick tunnel without configuring dev.tunnel.
  • Auto-registered WolfStar plugins — Bundler builds now inject the /register side-effect entrypoint of every installed @wolfstar/plugin-* dependency before your app entry, so plugins activate without manual import '@wolfstar/plugin-x/register' lines. See Plugins.
  • Generated TypeScript alias config — stars prepare, stars dev, and stars build write an extendable .stars/tsconfig.json whose paths match the tsdown aliases. Scaffolded projects extend it and pick up Sapphire base, extra-strict, and decorators options automatically. See @wolfstar/create-http-framework.

Updates

  • HTTP-framework 4.0.x — Structured, leveled logging replaces raw console calls for HMR events and command-router warnings. @wolfstar/env-utilities 2.1.x follows the same move, using container.logger from @sapphire/pieces when available and falling back to console.debug for standalone consumers.

Bug fixes

  • Quick tunnel reliability — dev.tunnel now opens the cloudflared tunnel through untun instead of spawning cloudflared and scraping stdout. untun manages the binary (downloading it if missing) and exposes the URL and lifecycle programmatically, which also fixes the tunnel never closing when the spawn failed silently.
  • @wolfstar/shared-http-pieces — Consumer locale paths are preserved and the bundled commands/shared namespace loads correctly when using the register entrypoint. See @wolfstar/shared-http-pieces.
  • @wolfstar/plugin-subcommands-advanced — Subcommand builder callbacks are now deferred until every command piece has been constructed, fixing crashes when builders referenced not-yet-loaded siblings. See @wolfstar/plugin-subcommands-advanced.