Skip to content

feat(cli): model pin collapses alias slots; fable slot; build time - #7

Merged
duyet merged 4 commits into
mainfrom
feat/update-channel-flags
Aug 21, 2026
Merged

feat(cli): model pin collapses alias slots; fable slot; build time#7
duyet merged 4 commits into
mainfrom
feat/update-channel-flags

Conversation

@duyet

@duyet duyet commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Collapse Claude alias slots (haiku/sonnet/opus/fable + subagent model) onto a pinned --model so subagents and auto-fallback never silently switch models; add --fable as a first-class slot; embed build time shown in local timezone. 150 tests pass.

duyet and others added 4 commits August 21, 2026 16:11
A concrete --model now takes over every unset Claude Code alias slot
(haiku/sonnet/opus/fable + CLAUDE_CODE_SUBAGENT_MODEL) so subagents and
automatic fallback (fable on third-party providers) cannot silently use a
different model. Explicit --haiku/--sonnet/--opus/--fable flags or saved
profile values still win; --model auto keeps independent aliases.

Adds --fable as a first-class slot: launch flag, models use, pickers,
config get JSON, whoami status, claude_fable config key with round-trip.
Picker entries get role descriptions via ANTHROPIC_DEFAULT_*_MODEL_DESCRIPTION.

Co-Authored-By: Claude <noreply@anthropic.com>

Co-authored-by: Duyet Le <me@duyet.net>
Co-authored-by: duyetbot <bot@duyet.net>
build.rs stamps the compile time in UTC (std-only); the CLI renders it
in the viewer's local timezone via localtime_r at runtime. Shown by
--version and ar update. libc was already linked transitively.

Co-Authored-By: Claude <noreply@anthropic.com>

Co-authored-by: Duyet Le <me@duyet.net>
Co-authored-by: duyetbot <bot@duyet.net>
- Launcher renders info panel (left) + action list (right) on wide
  terminals; stacks vertically when narrow. Pickers unchanged.
- Icons derived from row labels (launch/config/switch/credits/login/...)
  with per-category accent colors.
- Credits fetched once per 5-minute TTL in the launcher loop instead of
  per frame; dump mode and pipes stay offline-deterministic ("credits  -").
- Plain dumps keep the same header lines and stay ANSI-free for CI.

Co-Authored-By: Claude <noreply@anthropic.com>

Co-authored-by: Duyet Le <me@duyet.net>
Co-authored-by: duyetbot <bot@duyet.net>
The test calls days_from_civil, which is #[cfg(unix)] — Windows cargo
test failed with E0425.

Co-Authored-By: Claude <noreply@anthropic.com>

Co-authored-by: Duyet Le <me@duyet.net>
Co-authored-by: duyetbot <bot@duyet.net>
@github-actions

Copy link
Copy Markdown
Contributor

anyr size and startup

Startup is wall time for a cold anyr --version / anyr --help (median of 21 runs). Size is the stripped release binary, or the .wasm for the browser demo.

Size budget: anyr-linux-x86_64 must stay ≤ 4.0 MiB (4194304 bytes) stripped.

Asset Kind Size --version median --help median
anyr-darwin-arm64 native 2.3 MiB 2.8 ms 2.36 ms
anyr-linux-arm64 native 2.3 MiB 0.79 ms 0.83 ms
anyr-linux-x86_64 native 2.5 MiB 0.79 ms 0.77 ms
anyr-windows-x86_64.exe native 2.1 MiB 9.4 ms 9.39 ms
anyr.wasm wasm 170.2 KiB

Budget check: ok

raw timings
[
  {
    "asset": "anyr-darwin-arm64",
    "kind": "native",
    "path": "/Users/runner/work/cli/cli/anyr-darwin-arm64",
    "bytes": 2382328,
    "size": "2.3 MiB",
    "version": "0.1.10 (built 2026-08-21 09:50:55)",
    "target": "aarch64-apple-darwin",
    "os": "macos-latest",
    "startup_version": {
      "n": 21,
      "min_ms": 2.56,
      "median_ms": 2.8,
      "p95_ms": 3.28,
      "mean_ms": 2.89
    },
    "startup_help": {
      "n": 21,
      "min_ms": 2.29,
      "median_ms": 2.36,
      "p95_ms": 2.72,
      "mean_ms": 2.42
    }
  },
  {
    "asset": "anyr-linux-arm64",
    "kind": "native",
    "path": "/home/runner/work/cli/cli/anyr-linux-arm64",
    "bytes": 2364384,
    "size": "2.3 MiB",
    "version": "0.1.10 (built 2026-08-21 09:50:45)",
    "target": "aarch64-unknown-linux-gnu",
    "os": "ubuntu-24.04-arm",
    "startup_version": {
      "n": 21,
      "min_ms": 0.74,
      "median_ms": 0.79,
      "p95_ms": 0.98,
      "mean_ms": 0.81
    },
    "startup_help": {
      "n": 21,
      "min_ms": 0.79,
      "median_ms": 0.83,
      "p95_ms": 0.96,
      "mean_ms": 0.85
    }
  },
  {
    "asset": "anyr-linux-x86_64",
    "kind": "native",
    "path": "/home/runner/work/cli/cli/anyr-linux-x86_64",
    "bytes": 2646328,
    "size": "2.5 MiB",
    "version": "0.1.10 (built 2026-08-21 09:50:39)",
    "target": "x86_64-unknown-linux-gnu",
    "os": "ubuntu-latest",
    "startup_version": {
      "n": 21,
      "min_ms": 0.77,
      "median_ms": 0.79,
      "p95_ms": 0.87,
      "mean_ms": 0.8
    },
    "startup_help": {
      "n": 21,
      "min_ms": 0.75,
      "median_ms": 0.77,
      "p95_ms": 0.82,
      "mean_ms": 0.78
    }
  },
  {
    "asset": "anyr-windows-x86_64.exe",
    "kind": "native",
    "path": "D:\\a\\cli\\cli\\anyr-windows-x86_64.exe",
    "bytes": 2189824,
    "size": "2.1 MiB",
    "version": "0.1.10 (built 2026-08-21T09:52:12Z)",
    "target": "x86_64-pc-windows-msvc",
    "os": "windows-latest",
    "startup_version": {
      "n": 21,
      "min_ms": 9.04,
      "median_ms": 9.4,
      "p95_ms": 9.9,
      "mean_ms": 9.46
    },
    "startup_help": {
      "n": 21,
      "min_ms": 8.85,
      "median_ms": 9.39,
      "p95_ms": 9.91,
      "mean_ms": 9.4
    }
  },
  {
    "asset": "anyr.wasm",
    "kind": "wasm",
    "path": "/home/runner/work/cli/cli/target/wasm-pkg/anyr_cli_bg.wasm",
    "bytes": 174254,
    "size": "170.2 KiB",
    "version": "wasm",
    "target": "wasm32-unknown-unknown",
    "os": ""
  }
]

@duyet
duyet merged commit 256e0cb into main Aug 21, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant