Releases: Agent-Field/CodeAF
Release list
codeaf v0.3.0
Added
-
A model family toggle under the crew, so a preset can answer from open weights or from everything — #1073 ·
chatengine -
custom connections are named, sit beside each other, and switch from the Providers tab — #1089 ·
chatengine -
The crew's seats are picked from a row — table, catalog or learn — #1093 ·
chatengine -
Three pure packages — a crew picker, an additive tally and a measurement-index reader — #1093 ·
engine -
The pool client gains the relay's real addresses, an install nonce, and the index signer's key — #1093 ·
engine -
Three more
internal/poolpackages — an outbox, a settings resolver and a signed-document fetcher — #1093 ·engine -
a landed task is scored by a model outside the crew into the own sheet, outbox and judge seat — #1093 ·
chatengine -
A pure package that scores a finished run seat by seat, by a judge outside the crew — #1093 ·
engine -
A pure package that records a run's judged scores into an own sheet and outbox rows — #1093 ·
engine -
A Cloudflare Worker relay that folds installs' rows into a signed, versioned pool index — #1093 ·
engine -
The Model Pool's index is seated at start-up from a seed in the binary — #1093 ·
chatengine -
A tier row that says
autocomputes its model from the catalog — #1093 ·chatengine -
The Model Pool reaches its first surface — a
model_poolsetting and acodeaf poolverb — #1102 ·chatengine -
a headless exec run leaves a pending judge record at its tail for the pool's sweep — #1137 ·
engine -
the headless task door leaves a pending judge record at its tail — #1138 ·
engine -
a
codeaf doerrand leaves a pending landing for the Model Pool's judge — #1139 ·engine -
pool status says what is waiting for a judge and what the last sweep did — #1142 ·
engine -
The seed index is regenerated from the relay by one in-repo command — #1148 ·
chatengine -
pool show --cells lists the held index's cells with their installs and dims — #1149 ·
engine -
a chat surface now runs under a soft memory limit drawn from the machine — #1158 ·
chat -
the relay can purge fixture vendors and refuse them at the door — #1167 ·
engine -
pool status says the install identity, the judged total, and that nothing has landed — #1169 ·
chat -
A non-verified
codeaf dorun names its kept branch and its verdict — #1182 ·engine -
The
taskstext and the record line name a failed node's kept branch and verdict — #1184 ·engine -
A non-verified
codeaf execorcodeaf runrun names its kept branch and its verdict — #1186 ·engine -
a job subtree is cut when it passes its CPU or process bound — #1190 ·
chatengine
Changed
-
the coverage round buys once, and the envelope says when the requested work was done — #1093 ·
residentdocs -
The crew's default family is
all, and both families' worker, careful and mastermind seats moved — #1093 ·chatengine -
Six cells of the fixed crew tables moved to the measured seats — #1093 ·
chatengine -
The fuel meter asks an installed tariff first, and its table holds the ids this build ships — #1093 ·
engine -
A re-dispatch after running out is granted more room, and one that banks nothing new is refused — #1093 ·
residentdocs -
Every usage row names the seat the call ran under — #1093 ·
engine -
The crew picker blends a measured pool rating into a seat's quality by its observation count — #1101 ·
engine -
The README telemetry section is one collapsed block at the end of Docs — #1115 ·
docs -
a launch compiles 78 fewer patterns, and a surface holds 8 Ps instead of every core — #1125 ·
chatenginebuild -
the relay carries the acceptable metric beside the judge's opinion — #1129 ·
build -
the relay writes a submit batch once per distinct cell and day — #1136 ·
engine -
pool show and verify say both metrics the index carries — #1141 ·
engine -
the seed index follows the relay's first clean publish — #1180 ·
chatengine -
a settle turn runs under the checker's own bound, not the run's wall — #1183 ·
chat -
the status word says working while a task subtree still turns at rest — #1191 ·
chat
Renamed
- the /connect row for a custom service reads Custom OpenAI-compatible API, not Something else — #1107 ·
chatdocs
Fixed
-
a finishing task can read the evidence its context has archived — #808 ·
chatengine -
a question's own answer box answers to the whole caret vocabulary, not a hand-rolled copy of it — #1032 ·
chatdocs -
an answered landing carries its answer's fate, and an in-flight settle holds the question down — #1086 ·
chatengine -
the headless doors wait for the catalog rows a pick reads — #1093 ·
engine -
No git command runs without a directory, and the checkout guard reads a linked worktree's own share — #1093 ·
engine -
A node retry asks the router to avoid the upstream machine that just failed it — #1094 ·
engine -
Usage counts from a hosted chat carry real numbers, and nothing without a version ever leaves — #1111 ·
chatdocs -
a service connected mid-conversation reaches the conversation that is open — #1114 ·
chatengine -
a decision card under --yolo takes its own default instead of waiting for somebody — #1117 ·
chat -
a design's thread stops its parts before it closes, and a node machinery cut says what cut it — #1118 ·
chatengine -
a bare auto row names the pick word's rung, so a seat computed under learn says learned — #1119 ·
chatengine -
a bare auto row under picked from = catalog reads the catalog's figures alone — #1120 ·
chatengine -
the do door seats its worker from the settings the run will use — #1122 ·
engine -
a launch's pool writers stop when the process closes — #1124 ·
chat -
The pool index's min_installs floor counts a cell's installs, not its rows — #1127 ·
engine -
The pool relay folds a retried batch once — #1128 ·
engine -
A row the relay refuses by line leaves the outbox and the rows around it are sent — #1130 ·
engine -
The published pool index holds only the cells that meet its min_installs floor — #1131 ·
engine -
A run a process death left unjudged is judged on the next chat start — #1132 ·
engine -
the outbox file is compacted back to the rows it still holds — #1133 ·
engine -
The finished-tree check finds a project cloned into a subdirectory — #1135 ·
engine -
**the manual said the status row's ledger stays the conversation's; it is...
codeaf v0.2.2-rc.1
Install this rc build:
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/9258f70523791330bf5128fd5aed6c70a70f138f/scripts/install.sh | bash -s -- --rc
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/9258f70523791330bf5128fd5aed6c70a70f138f/scripts/install.sh | VERSION=v0.2.2-rc.1 bashcodeaf staging-20260918-9258f7052379
Install this staging build:
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/9258f70523791330bf5128fd5aed6c70a70f138f/scripts/install.sh | bash -s -- --staging
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/9258f70523791330bf5128fd5aed6c70a70f138f/scripts/install.sh | VERSION=staging-20260918-9258f7052379 bashcodeaf staging-20260918-62cae85802f0
Install this staging build:
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/62cae85802f042463f11d5e0157b4ee092630a54/scripts/install.sh | bash -s -- --staging
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/62cae85802f042463f11d5e0157b4ee092630a54/scripts/install.sh | VERSION=staging-20260918-62cae85802f0 bashcodeaf dev-20260918-fde49a587fc9
Install this dev build:
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/fde49a587fc9e9dca4f8e4896d6a9fce0b6ff3bb/scripts/install.sh | bash -s -- --dev
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/fde49a587fc9e9dca4f8e4896d6a9fce0b6ff3bb/scripts/install.sh | VERSION=dev-20260918-fde49a587fc9 bashcodeaf dev-20260918-9258f7052379
Install this dev build:
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/9258f70523791330bf5128fd5aed6c70a70f138f/scripts/install.sh | bash -s -- --dev
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/9258f70523791330bf5128fd5aed6c70a70f138f/scripts/install.sh | VERSION=dev-20260918-9258f7052379 bashcodeaf dev-20260918-62cae85802f0
Install this dev build:
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/62cae85802f042463f11d5e0157b4ee092630a54/scripts/install.sh | bash -s -- --dev
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/62cae85802f042463f11d5e0157b4ee092630a54/scripts/install.sh | VERSION=dev-20260918-62cae85802f0 bashcodeaf dev-20260918-4add9c9f3100
Install this dev build:
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/4add9c9f310088b68297fbbac1d685651859ee7f/scripts/install.sh | bash -s -- --dev
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/4add9c9f310088b68297fbbac1d685651859ee7f/scripts/install.sh | VERSION=dev-20260918-4add9c9f3100 bashcodeaf v0.2.1
Added
-
Every release carries THIRD-PARTY-NOTICES.md beside its binaries — #1051 ·
builddocs3 things that are no longer true
- This repository reproduced no third-party licence anywhere, and a release published only
dist/codeaf-*andchecksums.txt.THIRD-PARTY-NOTICES.mdnow sits at the root and is copied intodist/before the checksums are written, so every release on every channel carries it andchecksums.txtcovers it. - A licence notice was nobody's job and was written nowhere.
cmd/codeaf-noticesgenerates the whole file fromgo list -deps ./cmd/codeafplus the two copies this tree carries, so it is regenerated withgo run ./cmd/codeaf-notices generateand never edited by hand. - Adding a dependency used to cost nothing beyond
go.mod. A law incmd/codeaf-noticesnow fails when a module compiled into the binary has no section in the committed notice, so a new dependency means regenerating that file in the same change.
internal/pair/cpaceis BSD-3-Clause and is linked into every build; its clause 2
asks for the notice in the materials that go out with a binary distribution, and
internal/connect/ampcatalog/providers.jsonis an embedded copy of the amp-labs
catalog with the same shape of obligation. The notice covers 57 components — the
55 modules in the build and those two copies — each with its version, its licence
identifier and its licence text word for word. - This repository reproduced no third-party licence anywhere, and a release published only
-
a launch says when a newer codeaf is out, and /update installs it and restarts — #1060 ·
chatbuild7 things that are no longer true
- The chat manual's install section ended
Nothing self-updates: run it again when you want a newer build.That sentence is gone and the opposite is now true:/update(alias/upgrade) downloads the newest stable release, checks its sha256, replaces the running executable and restarts on it with--sessionpointing at the same transcript, andcodeaf updatedoes the same from a shell.running-from-the-terminal.mdhas a new section,Is there a newer version — how do I update codeaf — /update — codeaf update — why does it say this every time I start, which states all of it. - A launch said nothing about newer releases. A build stamped with a stable tag that is behind the newest stable release now draws one dim transcript line naming both versions,
/update, and the curl line. A release candidate gets it once its stable line is published. Adev-*orstaging-*channel build, amake buildsha and an unstamped binary make NO request at all and draw nothing, so a developer's build is never told it is behind. The check is asynchronous with a three-second budget, never delays the first frame, and says nothing when it fails; its answer is cached for a day inupdate-check.jsonbesideconfig.json.CODEAF_NO_UPDATE_CHECK=1turns the launch check off without touching/updateorcodeaf update. - The release-tag grammar lived in
cmd/codeaf-release/version.go. It is nowinternal/update, which the release tool reads; there is one parser.scripts/install.shwas accepting anydev-*orstaging-*tag and semver parts with leading zeroes whereinternal/updateaccepts only the shapes the release workflow publishes — it now uses the same grammar, so the two install roads cannot pick different builds. The publish-time ordering #1056 added is unchanged; only which candidates are eligible. codeaf updateis a new command, and it sits under housekeeping incodeaf --helprather than beside the read-only rows:--checkprints one line and exits 0 when this release is newest, 3 when a newer one exists and 1 when it could not ask, while a plain run installs stable or whatever--rc,--dev,--stagingor--version <tag>names. A binary built from source refuses to replace itself in place and names its path; an unwritable executable is left untouched and offered the curl line; sudo is never attempted.codeaf update --check --rc,--dev,--stagingand--version <tag>were believed to apply the selected channel's rule after selecting its tag. They did not: every answer ran through the stable-only comparison, so a newer rc or disposable channel build could be called newest with exit 0 and the selected tag omitted. Every answer now names that tag; stable and rc compare their semantic versions, dev and staging compare for equality because channel builds are disposable, and an exact tag is equal or different with no invented ordering.- A stable build ahead of the newest published stable was believed to get nothing. That was true only of the launch reminder and
--check: bothcodeaf updateand/updatesilently installed the older release. An implicit update now refuses, names both versions, and points at the deliberate override;--version <tag>and/update <tag>still install exactly what the person named. - A deliberate detach in
internal/remotekept the twenty-second torn-link grace that exists for a terminal killed without warning, so a window that had announced its departure still looked attached for two more call deadlines. It now clears that grace once the last view leaves, which is what lets a freshly installed codeaf take the engine the old process had already let go of. Live turns, tasks, unanswered questions and other views still refuse retirement.
The owner asked for two things that turn out to be one: tell somebody a newer
codeaf exists, and give them the command. A line that only names a version makes
a person go looking, so this one carries/updateand the curl line with it, and
/updatefinishes the job rather than printing homework.Everything else follows from not wanting to be wrong in front of somebody. The
check is silent on failure because a network complaint at launch is noise about a
thing nobody asked for. A developer's own build is never told it is behind. The
restart waits for the door, after the frame is down and the terminal is back, and
carries the transcript so the conversation the person was having is the one that
comes back.The curl line every one of those roads offers is
curl -fsSL https://agentfield.ai/get/codeaf | bash,
the supported address that servesscripts/install.shfrommain, so the launch
line, the refusals and the README hand out one road. - The chat manual's install section ended
-
Anonymous usage counts, on by default with a notice printed once — #1095 ·
docswhy
codeaf now sends anonymous usage counts — version, OS, mode (chat or task), and
banded session and error counts — so the parts people rely on get the work. It
never sends prompts, code, paths, names, or anything that identifies you. The
counts are on by default, and the first session prints a notice naming exactly
what leaves;codeaf telemetry showprints what is waiting to leave right now.
Turn it off withCODEAF_TELEMETRY=off,DO_NOT_TRACK=1,codeaf telemetry off,telemetry = offin a project's.codeaf/config.json, or an empty
CODEAF_TELEMETRY_ENDPOINT. The whole contract isdocs/TELEMETRY.md.
Changed
-
The switcher's foot is one instruction and its name column takes the spare width — #1040 ·
chatdocs3 things that are no longer true
- The card's foot read
▸ 9 more on this machine · → reach them, and← just the open oneswith the fold open. It now reads→ show closedand← hide closed— the key and what it does, no glyph and no count, because the head's3 of 12already carries the figure.hopFoldKeyWordandhopShutKeyWordare those two strings; anything quoting the old ones is stale, including the card drawing ininternal/manual/chat/keys.md. - The card drew a wrapped copy of the SELECTED row's title in a block under the list whenever the subject column had abbreviated it. That block is gone —
hopCardLinesbuilds no preview andTestSwitcherShowsLongSelectedTitleBelowTheListis replaced byTestALongNameTakesTheRoomAndIsNotRepeatedUnderTheList. The rows it used to displace on a short card stay drawn. - The subject column was fixed at 34 cells (
hopSubjectCol) and the clause took every cell left over. It is the other way round: the clause ishopNoteCol(32, narrowing tohopTightNote), and the subject takes what is left up tohopSubjectMax(64), keepinghopGutter(2) cells of air so a name that fills its column does not touch the clause.hopSubjectColno longer exists. The narrowing ladder is project, then the clause's tail, then the clock, then the clause — the name is cut last.
All three asked for by the owner, off the running card: a foot spending a row on a
figure the head already says, a summary under the list that was never more than the
selected row's own title and did not appear for every row, and
Investigate the parsing regres…nothing new— a name cut at thirty-four cells
with forty cells ofnothing newbeside it.The gutter is the part that is not about width. A long enough name fills whatever
column it is given, so without two cells held back at the end of the column the name
and the clause run together into one word however wide the card is.keys.md's switcher section was over its size rule by some way after three changes
landed in it, and the retrieval gate said so — a probe that used to reach it started
reaching four other pages. The layout and the ordering are now two sections of their
own with their own headings, which is what that rule is for. - The card's foot read
-
The switcher card lists conversations in the tab row's order, not by recency — #1040 ·...
codeaf v0.2.1-rc.3
Install this rc build:
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/cfdc29deded955d51ec753113232f99f0a35a402/scripts/install.sh | bash -s -- --rc
curl -fsSL https://raw.githubusercontent.com/Agent-Field/CodeAF/cfdc29deded955d51ec753113232f99f0a35a402/scripts/install.sh | VERSION=v0.2.1-rc.3 bash