{"version":"2.1.281","anchor":"version-bump-and-refactors-with-no-behaviour-change","canonical_anchor":"version-bump-and-refactors-with-no-behaviour-change","heading":"Version 2.1.281 build details and internal refactors","tier":"internal","area":"Build","url":"https:\/\/changelogs.core-directive.com\/v\/2.1.281\/e\/version-bump-and-refactors-with-no-behaviour-change","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.281","markdown":"### Version 2.1.281 build details and internal refactors\n\nBuild constants move to 2.1.281, artifact output gains a db_profiles section, MCP counting changes, and many internals are renamed\n\n**What**\n\n- The built-in version is now 2.1.281, with build time 2026-09-23T02:22:43Z and git SHA 3e320108de6831eb996e9a3f7795152073cc0d0c.\n\n- The version helper now also returns `builtAt`.\n\n- The artifact tool's output gains a `db_profiles` section.\n\n- The bookkeeping that counts MCP servers (external tool servers Claude Code connects to) now counts a second category.\n\n- A new helper looks up permission rules by `toolName` and `ruleContent`.\n\n- The rest is refactoring with the same behaviour: sorted-key JSON now goes through `Fe.canonicalJson`, a `skipIf` check and a tool-presence check moved into helpers, directory reading goes through the file-system layer, a detail string comes from a shared function, a hint-stripping step now takes a flag, one step passes a `receiver` along, and one argument changed from undefined to false, which behaves the same.\n\n- Other changes are renamed internals and formatting in areas such as iTerm2 setup, agent summaries, plugin validation, the hooks API table, the message queue, the directory-sync watcher, headless sessions, vim input, the footer hint, settings descriptions, artifact publishing, CLI options, resume and hooks.\n\n**Why**\n\nApart from the new `db_profiles` section and the MCP server count, these changes do not alter how Claude Code behaves.\n\n- Area: Build\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 2\/5"}