chore(release): v0.12.1

Merged
SA
2mo ago
+701-61

Issue for this PR

Closes #

Release PR for v0.12.1. It closes no single issue; the review findings that were deferred are tracked as #1337 (routing ignores the IDE pin, assigned to Sarav) and #1335 (workspace name in the system prompt).

Type of change

  • Bug fix
  • New feature
  • Documentation

What does this PR do?

Both features the release ships are already on main: #1330 (identity every turn) and #1320 (IDE pin). This PR carries what the release process produced on top of them:

  1. Review fixes (c7a8348d25), from a five-persona review of v0.12.0..main that looked specifically at the seam between the two PRs (they changed resolveBindingOutcome from opposite sides and were never reviewed together):
    • a pin served from the offline grace window is marked stale, so identity says "last known" for it; pinValidation is bounded;
    • identity's memo is keyed on the credential digest as well as tenant/host (the pin cache already was);
    • under a pin, identity's deadline fallback never reaches for the project's own cached link;
    • a pinned session is described as pinned, with the caveat that warehouse routing still follows the project's link (#1337); the unknown copy no longer promises that retrying helps;
    • the persistent shell tool strips the same host markers as bash (stripHostMarkers, shared), so a nested serve cannot inherit a pin;
    • pin.ts states the extension contract (a pin is fixed for the process's life); docs for the three pin variables, ALTIMATE_CODE_SERVE, and the identity line.
  2. Adversarial-test fixes (a1852b5574): readPin accepted 1e3/0x10 via Number() — decimal digits only now; MAX_SECTION_CHARS was below the pinned-and-stale identity copy with a maximum-length name, so render dropped the name — raised, with a test over every shape.
  3. release: v0.12.1 (09c092738d): the CHANGELOG entry and test/skill/release-v0.12.1-adversarial.test.ts.

The one P0-candidate from the review — tool routing never consults the pin — was verified in code and downgraded with the release owner: routing behaviour is identical to v0.12.0 (the pin never affected it), the failure is a prompt inconsistency rather than execution against a workspace the project was not already linked to, and the fix belongs in precedence.ts/engine-probes.ts with its own tests (#1337). Identity's pinned copy states the limitation in the meantime.

main's ruleset requires a PR for any push. Once this merges, the release owner tags v0.12.1 on the new main tip.

How did you verify your code works?

  • bun test over test/altimate/workspace, test/altimate/plugin, test/session/prompt.test.ts, test/upstream/bridge-merge.test.ts, test/cli/run/run-mode.test.ts, test/tool/{shell,bash}.test.ts and the new adversarial file: 850 pass / 0 fail before the adversarial commit; the five pin/identity files plus the adversarial file: 104 pass after it. Every new guard was deleted once to confirm its test fails (grace-path stale, credential-scoped key, pin-aware fallback, the id parser, the cap).
  • tsgo --noEmit clean; upstream marker guard clean.
  • OPENCODE_VERSION=0.12.1 bun run pre-release: all four checks pass; the dist binary, run by path, reports 0.12.1.
  • script/release-preflight.ts --version 0.12.1 --stage tag: PASSED.
  • #1330's copy was checked live against freemium before it merged (unlinked, linked, "current workspace", Databricks questions in both states).

Screenshots / recordings

N/A — system-prompt text and process-environment changes; no UI change.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

🤖 Generated with Claude Code

https://claude.ai/code/session_012Q51zFUmPg1WwtS5CrGJE6


Summary by cubic

Release PR for v0.12.1, carrying the two workspace features already on main — the agent naming the Altimate Workspace the project is linked to every turn (#1330) and the IDE extension pinning the workspace for the serve process it launches (#1320) — plus the fixes their joint review and this release's adversarial tests found. The one P0 candidate, tool routing never consulting the pin, was verified as behavior identical to v0.12.0 and tracked separately (#1337).

Pin/identity seam

  • A pin served from the offline grace window is marked stale; identity's memo is keyed on the credential as well as tenant and host, and its deadline fallback never renders the project's own cached link under a pin.
  • Pinned sessions are described as pinned, with the caveat that warehouse tool routing still follows the project's link; the persistent shell tool strips the same host markers as bash via a shared stripHostMarkers, including every case spelling on Windows.
  • readPin accepts decimal ids only and a whitespace-only pin is invalid; the identity section cap fits every shape with a budget-sized name.
  • Identity renders unknown without invoking the resolver when no complete account is configured, so a hung or empty-credential session never stalls a turn.
  • The #937 env-plumbing guard now verifies ALTIMATE_AUTO_ANSWER survives the marker strip both behaviorally and by source.
  • The CHANGELOG now points the resolver-scope caveat at #1339, and the shell child-env test handles Windows' PATH/Path enumeration.

Summary by CodeRabbit

  • New Features
    • Added workspace identity reporting for IDE-selected and project-linked workspaces.
    • Added IDE workspace pinning for sessions launched through supported extensions.
  • Bug Fixes
    • Improved workspace validation, account isolation, caching, and offline handling.
    • Clarified when workspace information reflects the last known verified state.
    • Prevented workspace markers from leaking into child shell processes across platforms.
    • Improved handling of invalid or unavailable workspace pins.
  • Documentation
    • Updated CLI guidance for workspace routing, pinning behavior, environment settings, lifecycle, and limitations.