Skip to content
This repository was archived by the owner on Apr 30, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
e878a7c
feat: reconstruct bun cli build
paoloanzn Mar 31, 2026
c1f9b3e
fix: normalize lf enter in tui input
paoloanzn Mar 31, 2026
9bcc6fc
Revert "fix: normalize lf enter in tui input"
paoloanzn Mar 31, 2026
10853d1
fix: guard missing modifiers addon in binary
paoloanzn Mar 31, 2026
a7427a0
bump version
paoloanzn Mar 31, 2026
a8b18d9
feat: add experimental dev build
paoloanzn Mar 31, 2026
2ed4acd
docs: map feature flags and dev bundle
paoloanzn Mar 31, 2026
aa0762b
feat: rebrand startup ui
paoloanzn Mar 31, 2026
71bf5f2
feat: always compile full startup ui
paoloanzn Mar 31, 2026
4d728a1
fix: trim release notes to recent versions
paoloanzn Mar 31, 2026
9b226e8
feat: give mascot an evil grin
paoloanzn Mar 31, 2026
7a558e9
refactor: disable telemetry backends
paoloanzn Mar 31, 2026
bf222d0
Revert "feat: give mascot an evil grin"
paoloanzn Mar 31, 2026
7667a9c
merge: integrate telemetry removal
paoloanzn Mar 31, 2026
b7d7330
chore: clear cyber risk instruction
paoloanzn Mar 31, 2026
26d7bcc
fix: fall back when voice native module is missing
paoloanzn Mar 31, 2026
98e2b98
feat: enable voice mode in default builds
paoloanzn Mar 31, 2026
6548db2
docs: refresh feature flag audit
paoloanzn Mar 31, 2026
8e159b6
feat: expand dev full experimental bundle
paoloanzn Mar 31, 2026
61a23c1
fix: make ultraplan command available in external builds
paoloanzn Mar 31, 2026
fcf5ab7
feat: add UltraplanLaunchDialog and UltraplanChoiceDialog components
paoloanzn Mar 31, 2026
33f530d
docs: rewrite README for free-code
paoloanzn Mar 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules/
dist/
cli
cli-dev
317 changes: 317 additions & 0 deletions FEATURES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,317 @@
# Feature Flags Audit

Audit date: 2026-03-31

This repository currently references 88 `feature('FLAG')` compile-time flags.
I re-checked them by bundling the CLI once per flag on top of the current
external-build defines and externals. Result:

- 54 flags bundle cleanly in this snapshot
- 34 flags still fail to bundle

Important: "bundle cleanly" does not always mean "runtime-safe". Some flags
still depend on optional native modules, claude.ai OAuth, GrowthBook gates, or
externalized `@ant/*` packages.

## Build Variants

- `bun run build`
Builds the regular external binary at `./cli`.
- `bun run compile`
Builds the regular external binary at `./dist/cli`.
- `bun run build:dev`
Builds `./cli-dev` with a dev-stamped version and experimental GrowthBook key.
- `bun run build:dev:full`
Builds `./cli-dev` with the entire current "Working Experimental Features"
bundle from this document, minus `CHICAGO_MCP`. That flag still compiles,
but the external binary does not boot cleanly with it because startup
reaches the missing `@ant/computer-use-mcp` runtime package.

## Default Build Flags

- `VOICE_MODE`
This is now included in the default build pipeline, not just the dev build.
It enables `/voice`, push-to-talk UI, voice notices, and dictation plumbing.
Runtime still depends on claude.ai OAuth plus either the native audio module
or a fallback recorder such as SoX.

## Working Experimental Features

These are the user-facing or behavior-changing flags that currently bundle
cleanly and should still be treated as experimental in this snapshot unless
explicitly called out as default-on.

### Interaction and UI Experiments

- `AWAY_SUMMARY`
Adds away-from-keyboard summary behavior in the REPL.
- `HISTORY_PICKER`
Enables the interactive prompt history picker.
- `HOOK_PROMPTS`
Passes the prompt/request text into hook execution flows.
- `KAIROS_BRIEF`
Enables brief-only transcript layout and BriefTool-oriented UX without the
full assistant stack.
- `KAIROS_CHANNELS`
Enables channel notices and channel callback plumbing around MCP/channel
messaging.
- `LODESTONE`
Enables deep-link / protocol-registration related flows and settings wiring.
- `MESSAGE_ACTIONS`
Enables message action entrypoints in the interactive UI.
- `NEW_INIT`
Enables the newer `/init` decision path.
- `QUICK_SEARCH`
Enables prompt quick-search behavior.
- `SHOT_STATS`
Enables additional shot-distribution stats views.
- `TOKEN_BUDGET`
Enables token budget tracking, prompt triggers, and token warning UI.
- `ULTRAPLAN`
Enables `/ultraplan`, prompt triggers, and exit-plan affordances.
- `ULTRATHINK`
Enables the extra thinking-depth mode switch.
- `VOICE_MODE`
Enables voice toggling, dictation keybindings, voice notices, and voice UI.

### Agent, Memory, and Planning Experiments

- `AGENT_MEMORY_SNAPSHOT`
Stores extra custom-agent memory snapshot state in the app.
- `AGENT_TRIGGERS`
Enables local cron/trigger tools and bundled trigger-related skills.
- `AGENT_TRIGGERS_REMOTE`
Enables the remote trigger tool path.
- `BUILTIN_EXPLORE_PLAN_AGENTS`
Enables built-in explore/plan agent presets.
- `CACHED_MICROCOMPACT`
Enables cached microcompact state through query and API flows.
- `COMPACTION_REMINDERS`
Enables reminder copy around compaction and attachment flows.
- `EXTRACT_MEMORIES`
Enables post-query memory extraction hooks.
- `PROMPT_CACHE_BREAK_DETECTION`
Enables cache-break detection around compaction/query/API flow.
- `TEAMMEM`
Enables team-memory files, watcher hooks, and related UI messages.
- `VERIFICATION_AGENT`
Enables verification-agent guidance in prompts and task/todo tooling.

### Tools, Permissions, and Remote Experiments

- `BASH_CLASSIFIER`
Enables classifier-assisted bash permission decisions.
- `BRIDGE_MODE`
Enables Remote Control / REPL bridge command and entitlement paths.
- `CCR_AUTO_CONNECT`
Enables the CCR auto-connect default path.
- `CCR_MIRROR`
Enables outbound-only CCR mirror sessions.
- `CCR_REMOTE_SETUP`
Enables the remote setup command path.
- `CHICAGO_MCP`
Enables computer-use MCP integration paths and wrapper loading.
- `CONNECTOR_TEXT`
Enables connector-text block handling in API/logging/UI paths.
- `MCP_RICH_OUTPUT`
Enables richer MCP UI rendering.
- `NATIVE_CLIPBOARD_IMAGE`
Enables the native macOS clipboard image fast path.
- `POWERSHELL_AUTO_MODE`
Enables PowerShell-specific auto-mode permission handling.
- `TREE_SITTER_BASH`
Enables the tree-sitter bash parser backend.
- `TREE_SITTER_BASH_SHADOW`
Enables the tree-sitter bash shadow rollout path.
- `UNATTENDED_RETRY`
Enables unattended retry behavior in API retry flows.

## Bundle-Clean Support Flags

These also bundle cleanly, but they are mostly rollout, platform, telemetry,
or plumbing toggles rather than user-facing experimental features.

- `ABLATION_BASELINE`
CLI ablation/baseline entrypoint toggle.
- `ALLOW_TEST_VERSIONS`
Allows test versions in native installer flows.
- `ANTI_DISTILLATION_CC`
Adds anti-distillation request metadata.
- `BREAK_CACHE_COMMAND`
Injects the break-cache command path.
- `COWORKER_TYPE_TELEMETRY`
Adds coworker-type telemetry fields.
- `DOWNLOAD_USER_SETTINGS`
Enables settings-sync pull paths.
- `DUMP_SYSTEM_PROMPT`
Enables the system-prompt dump path.
- `FILE_PERSISTENCE`
Enables file persistence plumbing.
- `HARD_FAIL`
Enables stricter failure/logging behavior.
- `IS_LIBC_GLIBC`
Forces glibc environment detection.
- `IS_LIBC_MUSL`
Forces musl environment detection.
- `NATIVE_CLIENT_ATTESTATION`
Adds native attestation marker text in the system header.
- `PERFETTO_TRACING`
Enables perfetto tracing hooks.
- `SKILL_IMPROVEMENT`
Enables skill-improvement hooks.
- `SKIP_DETECTION_WHEN_AUTOUPDATES_DISABLED`
Skips updater detection when auto-updates are disabled.
- `SLOW_OPERATION_LOGGING`
Enables slow-operation logging.
- `UPLOAD_USER_SETTINGS`
Enables settings-sync push paths.

## Compile-Safe But Runtime-Caveated

These bundle today, but I would still treat them as experimental because they
have meaningful runtime caveats:

- `VOICE_MODE`
Bundles cleanly, but requires claude.ai OAuth and a local recording backend.
The native audio module is optional now; on this machine the fallback path
asks for `brew install sox`.
- `NATIVE_CLIPBOARD_IMAGE`
Bundles cleanly, but only accelerates macOS clipboard reads when
`image-processor-napi` is present.
- `BRIDGE_MODE`, `CCR_AUTO_CONNECT`, `CCR_MIRROR`, `CCR_REMOTE_SETUP`
Bundle cleanly, but are gated at runtime on claude.ai OAuth plus GrowthBook
entitlement checks.
- `KAIROS_BRIEF`, `KAIROS_CHANNELS`
Bundle cleanly, but they do not restore the full missing assistant stack.
They only expose the brief/channel-specific surfaces that still exist.
- `CHICAGO_MCP`
Bundles cleanly, but the runtime path still reaches externalized
`@ant/computer-use-*` packages. This is compile-safe, not fully
runtime-safe, in the external snapshot.
- `TEAMMEM`
Bundles cleanly, but only does useful work when team-memory config/files are
actually enabled in the environment.

## Broken Flags With Easy Reconstruction Paths

These are the failed flags where the current blocker looks small enough that a
focused reconstruction pass could probably restore them without rebuilding an
entire subsystem.

- `AUTO_THEME`
Fails on missing `src/utils/systemThemeWatcher.js`. `systemTheme.ts` and the
theme provider already contain the cache/parsing logic, so the missing piece
looks like the OSC 11 watcher only.
- `BG_SESSIONS`
Fails on missing `src/cli/bg.js`. The CLI fast-path dispatch in
`src/entrypoints/cli.tsx` is already wired.
- `BUDDY`
Fails on missing `src/commands/buddy/index.js`. The buddy UI components and
prompt-input hooks already exist.
- `BUILDING_CLAUDE_APPS`
Fails on missing `src/claude-api/csharp/claude-api.md`. This looks like an
asset/document gap, not a missing runtime subsystem.
- `COMMIT_ATTRIBUTION`
Fails on missing `src/utils/attributionHooks.js`. Setup and cache-clear code
already call into that hook module.
- `FORK_SUBAGENT`
Fails on missing `src/commands/fork/index.js`. Command slot and message
rendering support are already present.
- `HISTORY_SNIP`
Fails on missing `src/commands/force-snip.js`. The surrounding SnipTool and
query/message comments are already there.
- `KAIROS_GITHUB_WEBHOOKS`
Fails on missing `src/tools/SubscribePRTool/SubscribePRTool.js`. The command
slot and some message handling already exist.
- `KAIROS_PUSH_NOTIFICATION`
Fails on missing `src/tools/PushNotificationTool/PushNotificationTool.js`.
The tool slot already exists in `src/tools.ts`.
- `MCP_SKILLS`
Fails on missing `src/skills/mcpSkills.js`. `mcpSkillBuilders.ts` already
exists specifically to support that missing registry layer.
- `MEMORY_SHAPE_TELEMETRY`
Fails on missing `src/memdir/memoryShapeTelemetry.js`. The hook call sites
are already in place in `sessionFileAccessHooks.ts`.
- `OVERFLOW_TEST_TOOL`
Fails on missing `src/tools/OverflowTestTool/OverflowTestTool.js`. This
appears isolated and test-only.
- `RUN_SKILL_GENERATOR`
Fails on missing `src/runSkillGenerator.js`. The bundled skill registration
path already expects it.
- `TEMPLATES`
Fails on missing `src/cli/handlers/templateJobs.js`. The CLI fast-path is
already wired in `src/entrypoints/cli.tsx`.
- `TORCH`
Fails on missing `src/commands/torch.js`. This looks like a single command
entry gap.
- `TRANSCRIPT_CLASSIFIER`
The first hard failure is missing
`src/utils/permissions/yolo-classifier-prompts/auto_mode_system_prompt.txt`.
The classifier engine, parser, and settings plumbing already exist, so the
missing prompt/assets are likely the first reconstruction target.

## Broken Flags With Partial Wiring But Medium-Sized Gaps

These do have meaningful surrounding code, but the missing piece is larger
than a single wrapper or asset.

- `BYOC_ENVIRONMENT_RUNNER`
Missing `src/environment-runner/main.js`.
- `CONTEXT_COLLAPSE`
Missing `src/tools/CtxInspectTool/CtxInspectTool.js`.
- `COORDINATOR_MODE`
Missing `src/coordinator/workerAgent.js`.
- `DAEMON`
Missing `src/daemon/workerRegistry.js`.
- `DIRECT_CONNECT`
Missing `src/server/parseConnectUrl.js`.
- `EXPERIMENTAL_SKILL_SEARCH`
Missing `src/services/skillSearch/localSearch.js`.
- `MONITOR_TOOL`
Missing `src/tools/MonitorTool/MonitorTool.js`.
- `REACTIVE_COMPACT`
Missing `src/services/compact/reactiveCompact.js`.
- `REVIEW_ARTIFACT`
Missing `src/hunter.js`.
- `SELF_HOSTED_RUNNER`
Missing `src/self-hosted-runner/main.js`.
- `SSH_REMOTE`
Missing `src/ssh/createSSHSession.js`.
- `TERMINAL_PANEL`
Missing `src/tools/TerminalCaptureTool/TerminalCaptureTool.js`.
- `UDS_INBOX`
Missing `src/utils/udsMessaging.js`.
- `WEB_BROWSER_TOOL`
Missing `src/tools/WebBrowserTool/WebBrowserTool.js`.
- `WORKFLOW_SCRIPTS`
Fails first on `src/commands/workflows/index.js`, but there are more gaps:
`tasks.ts` already expects `LocalWorkflowTask`, and `tools.ts` expects a
real `WorkflowTool` implementation while only `WorkflowTool/constants.ts`
exists in this snapshot.

## Broken Flags With Large Missing Subsystems

These are the ones that still look expensive to restore because the first
missing import is only the visible edge of a broader absent subsystem.

- `KAIROS`
Missing `src/assistant/index.js` and much of the assistant stack with it.
- `KAIROS_DREAM`
Missing `src/dream.js` and related dream-task behavior.
- `PROACTIVE`
Missing `src/proactive/index.js` and the proactive task/tool stack.

## Useful Entry Points

- Feature-aware build logic:
[scripts/build.ts](/Users/paolo/Repos/claude-code/scripts/build.ts)
- Feature-gated command imports:
[src/commands.ts](/Users/paolo/Repos/claude-code/src/commands.ts)
- Feature-gated tool imports:
[src/tools.ts](/Users/paolo/Repos/claude-code/src/tools.ts)
- Feature-gated task imports:
[src/tasks.ts](/Users/paolo/Repos/claude-code/src/tasks.ts)
- Feature-gated query behavior:
[src/query.ts](/Users/paolo/Repos/claude-code/src/query.ts)
- Feature-gated CLI entry paths:
[src/entrypoints/cli.tsx](/Users/paolo/Repos/claude-code/src/entrypoints/cli.tsx)
Loading