v3.3.3 Luxor Released #1622
amrmelsayed
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
v3.3.3 Luxor
Released: 2026-09-05
Summary
What began as a two-fix patch grew into a delivery-integrity release. The
agent-to-agent mailbox no longer replays an already-delivered message, knows
which session it is talking to without guessing, tells you which architect sent
a held message and why it is held, and finds the composer reliably on every
supported harness. Cloud access to Tower through the tunnel works again.
Around that core: the dashboard's held-mail counter opens into a real list,
consult can review merged PRs, non-GitHub forges can open pull requests (with
a working Gitea preset), image generation gains an alternative provider, the
VS Code issue preview grows a metadata block, and the Stream Deck review
dials stop pretending phases without a finished diff are reviewable.
The mailbox never re-sends a message it already wrote (#1584, PR #1585)
3.3.2 added delivery verification: after writing a message to a terminal, the
write edge checks that the message actually appeared on screen before reporting
it delivered. When that check failed on a message whose write had in fact
completed — easy on a busy screen, since a recipient responding to the message
keeps the screen scrolling — the row was held and re-delivered, and each
redelivery failed verification the same way. One message could be re-injected
into the recipient's prompt dozens of times, byte-identical, forcing a response
loop. The write edge now records a completed write durably as the point of no
return: such a row is never written again. If verification still cannot confirm
it, the message surfaces to the owner as unverified instead of looping.
Regression window: 3.3.2 only.
Tunnel-borne requests authenticate to Tower again (#1586, PR #1588)
Since the 3.3.1 security hardening, every non-public Tower route requires the
shared local key, and Tower checks the Host header on arriving requests.
Requests proxied in through the Codev Cloud tunnel carried neither, so browsing
a Tower via cloud.codevos.ai failed even with a healthy tunnel. The tunnel
client now stamps both onto tunnel-borne requests before handing them to Tower
(failing closed when no key is available), restoring the cloud dashboard and
workspace browsing end to end.
Sessions are identified by what actually runs in them (#1475, PR #1511)
Tower used to infer which agent a terminal session belongs to from the launch
command it recorded at spawn time. When that inference misread a session (an
environment-variable prefix on the command was enough), messages a builder sent
to its architect fell back to the default architect instead: in live use, six
consecutive updates from one builder landed on the wrong seat in a single day.
The terminal process itself now reports what it actually spawned during its
handshake, Tower persists that as the authoritative identity, and routing reads
through to it on every access. Inference survives only as a fallback for
sessions predating the upgrade.
Held messages say who sent them and why they are held (#1478, #1479, #1482, PRs #1486, #1604)
Three quality-of-life fixes to the same surface:
shows
architect:maininstead of a barearchitect, the recipient'smessage header names the sender, and the inbox FROM and TO columns size to
their content instead of truncating.
afx inbox,afx send, the dashboard, the VS Code toast). "A human is typing inthat composer" and "the composer could not be verified at all" were
previously the same word: busy. The first clears itself; the second never
does. They now read differently, and the starvation notice no longer
suggests interrupting a person who is mid-draft.
Composer detection works on every supported harness (#1474, PR #1491)
The render gate decides whether a recipient's composer is free before writing
into it. On one supported harness its prompt marker matched any line beginning
with
>, which routinely matched quoted text, menu selection cursors, anddialog options, and missed the bare
>prompt entirely. Delivery could stallor misfire depending on what happened to be on screen. The marker is now
anchored to the cursor row and the harness's prompt color palette, measured
against real captured screens.
The dashboard's held-mail counter opens the list (#1450, PR #1510)
The "N held" counter in the dashboard header was inert text; finding out what
was held meant switching to a terminal for
afx inbox. It is now a buttonthat opens a panel listing each held message: sender to recipient, age, and
the why-held reason, matching the metadata-only redaction rules the inbox
already enforces.
Consult reviews merged PRs (#759, PR #1619)
The forge PR search called the GitHub and GitLab CLIs with their default
state filter, which is open-only, so
consult --type prstopped finding a PRthe moment it merged. The search now spans all states. This removes one of
the roots of the "consult cannot review merged PRs" class of failures.
Non-GitHub forges can open pull requests (#1455, PR #1458; #1137, PR #1146)
Two community contributions:
every other forge operation, instead of shelling out to the GitHub CLI
unconditionally. Projects on other forges get PR creation through their
configured provider, and
codev doctorvalidates the concept like anyother. (@pseudoseed)
through the
teaCLI, whose output differs; it had never run end to end.Its read concepts now route through
tea apiand return the shapes theforge contract expects, verified against a real Gitea instance.
(@pseudoseed)
Image generation gains an Atlas Cloud provider (PR #1618)
codev generate-imagepreviously required a Google AI Studio key. It can nowrun the same model through Atlas Cloud with
--provider atlas; the defaultprovider and its behavior are unchanged. Unsupported flag combinations fail
loudly with a pointer to the provider that supports them rather than
degrading silently. Contributed by @binyangzhu000-sudo.
VS Code polish
seenSet (dedupe by mailboxId with eviction) #1472, PR Fix #1472: bound the mailbox escalation-toast dedupe set #1484). The dedupe set behind the mailbox escalation toast grew for the extension host's lifetime; it now evicts when a workspace's escalations clear, with a hard cap as backstop.Stream Deck: review dials tell the truth (#1606, PR #1607)
The Review: Files and Review: Changes dials silently did nothing for BUGFIX
builders during their whole working life and for AIR builders in the pr phase,
because dial mode was resolved from a phase vocabulary written for SPIR and
PIR. Dials now go to diff mode exactly when a finished diff exists to review
(the pr phase), and every work-in-progress phase shows an honest "No review
target" label instead of a dead control. Ships with the next batched Elgato
Marketplace submission.
Breaking changes
None. The global database migrates automatically on first start after
upgrading.
Install
npm install -g @cluesmith/codev@3.3.3 afx tower stop && afx tower startThe VS Code extension ships separately via the Marketplace —
Codevextensionby
cluesmith.codev, version3.3.3.Contributors
release: authoritative session identity (PR Architect identity: hydrate from the WELCOME frame (authoritative), with running evidence #1511), hold reasons and sender
attribution (PRs Stop suggesting 'afx interrupt' against a human who is just typing (render gate dims + held-verdict detail) #1604, [Air #1478] feat: carry architect:<name> through to inbox and composer attribution #1486), composer detection anchoring (PR [Air #1474] Render gate: anchor the agy prompt marker to the cursor row and marker palette #1491), the
clickable held-mail counter (PR Dashboard: make the held-mail counter clickable, showing the held messages (from → to) #1510), and the bounded escalation toast
(PR Fix #1472: bound the mailbox escalation-toast dedupe set #1484), plus test-infrastructure hardening (PRs [Air #1476] Extract runGlobalMigrations(db) so migration tests drive the real production runner #1485, Fix #1471: replace the render-gate perf wall-clock bound with a deterministic op-count check #1487) — building
on his 3.3.2 serializer work at the terminal write edge.
the mailbox replay fix (PR Fix #1584: never re-write a mailbox row whose write completed #1585), tunnel authentication (PR Fix #1586: stamp Host + local key on tunnel-proxied requests #1588), and
consult-on-merged-PRs (PR Fix #759: pr-search includes all PR states so merged PRs are found #1619).
the review surfaces: test-harness sandboxing, remote-shell polish, docs
corrections (PRs docs: correct Tower-restart rationale in irreversible-acts #1591, Fix #1597: sandbox the user-global agent-farm dir in the vitest harness #1598, Fix #1599: skip the tunnel-status poll when the shell is cloud-served #1600), the VS Code issue-preview metadata
block and restored-preview recovery (PR Issue view metadata: author, created date, assignees, labels, milestone (#1592) #1616), the Stream Deck review-dial
truth fix (PR Fix #1606: revive Stream Deck Review dials for BUGFIX/AIR phases + honest none-mode label #1607), the live cloud-path verification, and the
field-verification campaign on the delivery stack (afx send: long architect→builder messages truncated or delivered empty-body #1564).
(PR [Bugfix #1455] Add a pr-create forge concept so non-GitHub forges can open PRs #1458) and the working Gitea preset (PR [Bugfix #1137] Fix gitea forge preset against the real tea CLI #1146).
generate-image provider (PR feat(generate-image): add Atlas Cloud as an optional provider #1618).
above.
All reactions