Repository navigation
Releases: maksimyaromin/agent-notebook
Release list
anb v2026.09.30.0.10.0
Knowledge that serves one piece of work can now leave with it. Bind a design's Decisions, specs and Questions to its Task, and they move to the archive when the Task does, while the Tasks that cite them still reach them. A session opens on its work and the rules that bind it, and one command reads everything a record connects to.
This is a pre-stable minor release, package version 0.10.0, with interface changes. Read the upgrade notes before updating scripts that parse replies or call recall --for.
New
- Records bound to a Task.
add --taskandedit --taskbind a Decision, Note or Question to the Task it serves, andedit --clear taskremoves the binding. Archiving the Task takes its bound records along in their current state and lists them asbound. An open bound Question refuses the archive. Restoring the Task brings back the records that still bind, and a record restored on its own returns unbound. Aruleis never bound. (#96) - The close reply names what would outlive the work. Closing a Task lists, as
unbound, the Decisions, Notes and Questions born from it that no binding covers, each with the command that binds it. (#96) showreads every relation. It lists every record the named one relates to directly, as ids grouped by relation in both directions, archived records included and never cut.startreplies with the same read underrecord. (#96)edit --kind. A Decision's or Note's kind can be corrected in place. A bound record becomes a rule only when the same edit clears its task. (#96)checkfinds references the tool cannot read. A[[slug]]in a body whose slug names a record is reported asunreadable-reference, with the full id to write. A record left in the working set by its archived Task is reported asbroken-binding. (#96)
Improved
- A session opens with work and rules. A bare
recalland the session hook carry the work, the session's focus as its id and title, and every liveruleanddriftDecision from the project, personal and global notebooks. Each source counts the Decisions and Notes it left out and gives the command that lists them. Under the budget, rule bodies are shortened and then dropped before any work or rule row. (#91, #96) - Search matches words from their start.
list --matchandrecall "<phrase>"share one match: every word of the phrase must start a word in the record, solockfindslockingbut notblocked-by. A recall phrase is a search that lists every match. (#96) - Readable ids.
addderives the id from the title, cut at a word boundary within 64 characters, and names the record that already held a taken id ascollision. Ids may take 96 bytes. A title with no ASCII letter or digit is refused until an id is chosen with--id. (#92, #96) - The skill teaches when to bind and how to cite. It adds a table of the reads that answer a question, the rule to cite a governing Decision by its full id, and when a record should leave with its Task. The worked session runs a design Task end to end. (#96)
Upgrade notes
recall --for <id>is removed. Useanb show <id>to read a record with everything it relates to;startalready replies with that read.- A bare
recalland the hook no longer carryshapeDecisions or Notes. Record a practice every session should see as aruleDecision, correcting an existing one withedit --kind rule. The reply'sfocusis now{id, title, read}, memories no longer carryrelated, and each source may carryotherandmore. A recall phrase returns noworkorfocus. showand therecordblock ofstartprint relations as plain id arrays namedfrom,born,task,bound,blocked-by,blocks,links,linked-by,mentionsandmentioned-by. The previous{count, omitted, rows}sections for mentions and incoming links are gone.addwithout--idno longer creates a random id. Scripts that create a record and name it in a later command should pass--id. Existing ids remain valid.- The graph document is contract version 5 and draws a
boundedge.boundjoinswaits,bornandmentionsas a word a link kind cannot use. - Older binaries report an id longer than 64 bytes as
bad-idand treat ataskfield as unknown. Update every agent that writes to a notebook before using longer ids or bindings in it.
anb v2026.09.12.0.9.0
Project knowledge, personal practices and unfinished work now meet in one working-memory workflow. A conversation can resume its own Task while other conversations and colleagues work independently. Records remain plain Markdown, and a small piece of work needs only a clear outcome, not a separate report or a prescribed planning ceremony.
This is a pre-stable minor release with interface changes. Read the upgrade notes before updating scripts or installed agent integrations.
New
- Recall across three audiences.
anb recallcombines current work, shared project knowledge and private practices, labelling their sources. Search by phrase or use--for <id>to prioritize a subject's context. Shared knowledge remains available regardless of its author; bounded replies disclose omitted content and provide follow-up reads. - Independent conversation focus.
anb startresumes the current session's Task.start --nextselects and claims eligible work under one lock, preferring your assignments before the untaken queue. Session identity stays local and separate from human ownership. Deliberate collaboration between local sessions uses--join. - Project-specific personal practices.
--personalstores knowledge for this person in this project, outside the repository.--globalremains the home for practices across projects. Recall discovers both without requiring the agent to locate their directories. - Import and migration.
importadds an existing record tree while preserving source ids, dates and bodies.migratenormalizes envelopes to YAML and retains recoverable originals. Both provide a read-only--checkpreview. - Date-and-version release names. New tags use
vYYYY.MM.DD.MAJOR.MINOR.PATCH; the final components must match the package version. Published release names are unchanged.
Improved
- One reply document. Default output uses standard TOON through a pinned codec.
--jsonencodes the same fields and selected content. Counts, omissions and recovery commands are structured, and the budget applies to the encoded reply. - A shorter completion workflow. Record a Task's outcome with
close --bodyor--body-file. Create a separate Note only when the finding deserves its own lifetime. Archiving a Task no longer archives related knowledge. - Intent-oriented instructions. The supplied skill teaches selective capture, consolidation, shared domain language and named-work discovery. It distinguishes responsibility for a result from assignment of its individual parts and explains when coordination is needed.
- Project customization without a skill fork. Put workflow extensions in
.agents/anb.md. Setup preserves that file and project-owned instructions while updating managed skills and supported startup hooks. Its discovery paragraph also explains how to read the Markdown without the CLI. - Consistent text inputs. Creation, editing, comments and outcomes accept the corresponding
--bodyand--body-fileinputs, including standard input and multiline text. The book, help and generated examples follow the revised workflow.
Fixed
- Consistent work selection. Recall, its startup hook and other work views honor the same configured
scope. Subject membership follows origin descendants; external prerequisites affect readiness without becoming part of the selected work. - Completion respects prerequisites. Successful closing refuses unfinished dependencies and names what to inspect. Cancellation remains explicit and does not cancel related work. Repeating a completed transition preserves the recorded outcome.
- Safe continuation and recovery. Local claims, locks and interrupted starts preserve session focus and record changes together. Archive and restore refuse divergent copies instead of discarding one. New random ids avoid dependence on a shared sequential allocator.
- Review handoffs stay current. Resuming or reopening a Task clears the previous review recipient so a later review does not silently return to the wrong person.
Upgrade notes
- Replace
close --note,--pr,--sha,--reportand--no-proofwith a concise outcome through--bodyor--body-file. Cite a pull request or commit in that outcome.--reasonstill ends work without completing it; existing report Notes remain readable. - Rerun
anb setup --agent <host>to refresh managed instructions and hooks. Custom integrations usingstatus --hookmust move to the installedanb hookadapter; ordinary session reads useanb recall. - Update consumers of the previous custom text layout or JSON reply shapes. TOON and JSON now share one structured contract; use the reply reference and generated examples when adapting a parser.
- Generated ids are no longer derived from titles. Use the id returned by
add, or supply--idexplicitly when a readable fixed id is needed. Existing ids remain unchanged. - For a work group, ensure its actual children carry
from: <hub>.--forno longer treats dependency or contextual links as membership. Older dependency-only plans need explicit origins on their constituent work, not on external prerequisites. - Preview envelope normalization with
anb migrate --check. Review older values that used surrounding quotes literally before applying migration. Reads do not migrate records automatically. - Knowledge lifetime is independent of Task archival. The former semantic-conflict and private-shadow heuristics have been removed; agents assess conflicting claims from their evidence and scope.
Packages in this release: @supolka/agent-notebook@0.9.0 and its five platform packages at the same version.
anb v2026.09.08.4
A narrowed listing says whose it is. Under scope: mine an agent that never typed a flag read count: 0 as an empty epic or an empty notebook; now every read narrowed to one identity says so and names the call that widens it, as Status did. The packages move to 0.8.0: a line joins three replies and a field joins two JSON documents, which by the versioning rule this release also writes down is a minor.
New
by:onlist,readyandgraph. A read narrowed to one identity, by a flag or by thescopekey, opens withby: <name> — anb <verb> … --team, the other narrowings of the call carried into the widening command; JSONlistandreadycarrybybesidecount. Everyone's read,--teamand--untakenprint nothing. (#83)- Whose question, which flag. The skill's Orient section carries a table: what is mine, what a colleague is doing, where the epic or the team stands, what can be taken, and why a held Task is not in the queue, each with its read and its reason. (#83)
Improved
- Releases move by semantic versioning. The releasing guide states which number a release moves: patch for a fix that changes no documented shape, minor for anything added, major for a removal, a rename or a changed meaning, and only the maintainer moves the major. (#83)
Packages in this release: @supolka/agent-notebook@0.8.0 and its five platform packages at the same version.
anb v2026.09.08.3
A link is an edge, and a record names whom it waits on. A schema Note could not enumerate the documents that declared it theirs, and under scope: mine the person a Question or a review waited on never saw it; this release closes both, under one ruling: the notebook is working memory an agent reads, not a channel, so each relation is one line in the skill and nothing more. The packages move to 0.7.0: the graph document is at version 4, the review section of Status is a table and the questions table gains a column, so a script built on any of those reads the entries below first.
New
- A link to a record id is an edge. A
linkline whose target is a record id relates the two records under the link's kind, out of the record carrying the line into the record it names.showlists the carriers aslinked-by[N]: <id> (<kind>), …and--jsonaslinked-by: {count, rows: [{id, kind}]};graphdraws the edge under the link's own word, so a schema and its documents, or a rule and the drift that departs from it, are one picture;list --for <id>,graph --for <id>and--focusreach what links a record, as far as the links go. A link kind may be any word butwaits,bornandmentions, which the graph draws itself, and a record cannot link itself. The graph document is atv4. (#80) - A record names whom it waits on. A
tofield on a Task or a Question, written byadd --to <name>,submit --to <name>andedit --to <name>, erased byedit --clear to. The record waits on that person only while it waits at all, an open Question or a Task in review, so a Task taken back and submitted again waits on the same reviewer, andadd task --tonames the reviewer ahead of the first submit.list --to <name>narrows any listing by addressee and composes with every other flag. (#80)
Improved
- A narrowed Status shows what waits on you.
--mine,--by <name>andscope: mineanswer with what a person holds, wrote or is waited on for, so a reviewer with nothing of their own still opens on the review that waits on them. The review section isreview[N]{id,taken-by,to}, a table likeheld; the questions table isquestions[N]{id,age,by,to,title}; alist,readyor Status row carriestoin--jsonbesidebyandtaken-by. (#80) - The skill mentions the relations. One sentence each: a
--link "<kind> <id>"declares a relation of your own and the tool walks it back, and a Question put to a person or a review handed to one waits on them. The worked session puts a doubt to a colleague, hands the review over and opens the colleague's narrowed Status on both. (#80)
Packages in this release: @supolka/agent-notebook@0.7.0 and its five platform packages at the same version.
anb v2026.09.08.2
A Task belongs to who holds it. A team in which one person plans and the others do asked for reads that answer with the work each person holds, not with what each person wrote; this release is that ruling and the reads a planner and a developer need beside it. The packages move to 0.6.0: --mine, --by <name> and scope: mine no longer admit a Task by its author, and Status and a listing's JSON filter gain a field, so a script built on either reads the entries below first.
New
- Handing over at creation.
add task --taken-by <name>writes a Task and hands it over in one command, guarded likeedit --taken-by;add task --minetakes it for the identity, and is refused with the fix named when the host knows nobody. A planner's session is one line per Task. (#76) - The pool is one read.
--untakenonready,listandgraphis the Tasks nobody holds, the ones anyone may take. It answers whose outright, so it outranksscope: mineand is refused beside--by,--mineor--team; the truncation hint carries it, and a listing's JSON filter carriesuntaken. (#76) - A narrowed Status counts the pool. Under
scope: minea developer who held nothing saw a quiet notebook while the pool had work. The dashboard now printsuntaken: N — anb ready --untakenwhen it is narrowed and the pool is not empty, a pool alone opens the gate, and--jsoncarriesuntaken.count. The team's dashboard lists the pool in its queue and carries no count. (#76)
Improved
- Mine is what I hold.
taken-bynames a Task's holder andbyits author, and for a Taskmineistaken-byand nothing else;bykeeps meaningminefor a Question, a Note or a Decision. A Task you wrote and handed to a colleague is the colleague's in every read, and a Task nobody holds is nobody's, however many people wrote or planned it.--by <name>answers with a colleague's work the same way, and the dashboard's own-first order and marks read the holder. (#76) - The skill takes from the pool. A session resumes the active Task, else takes the top of the user's queue, else the top of
ready --untaken; the team paragraph is written around holder and author, and the worked session shows a hand-over at creation, the pool and a narrowed Status with an empty queue. (#76)
Packages in this release: @supolka/agent-notebook@0.6.0 and its five platform packages at the same version.
anb v2026.09.08.1
Status is where the work continues, and every listing narrows the same way. A team on one notebook asked for a read side that answers each of its questions once, and for a complexity revision before another flag was added; the revision is this release. The packages move to 0.5.0: search and overview are gone, graph --ready with them, Status no longer prints rules, epics or Debt rows, and the graph document is at version 3, so a script built on any of those reads the entries below first.
New
- One narrowing for every read.
list,readyandgraphtake--for <hub>,--tag,--match <text>,--by <name>,--mineand--team;listandgraphalso take--type,--kindand--archive. Each flag is a predicate over the same notebook, two flags ask for the intersection, and a narrowing changes what is shown, never what is true: a Task waiting on a colleague's stays blocked when their work is left out. A kind no type allows, a malformed tag or an empty text is refused with the vocabulary named, and a truncation hint carries every flag it was asked with.anb <verb> --helpand the commands reference document the flags once. (#72) - The notebook says whose records a read answers with. The config key
scopeisteamby default;scope: minenarrows every read, Status and the session hook included, to the records the identity created or took, and--teamwidens one call.--mineandscope: minewithout an identity are refused with the fix named. (#72) - The open Questions open the session. Status carries a
questions[N]{id,age,by,title}section, the reader's own first and then the oldest first, so a session sees the doubt it is about to work past. (#72) anb debt. Every sign of decay on its own line, in the clock table's order, bounded like every listing, with the same rows as{count, debt}in--json. (#72)
Improved
- Status is the work. Active Tasks with the first one's last log line, review, held, the ready queue, the open Questions, and
debt: N — anb debt. Rules and epics have no section and knowledge never opens the gate: a notebook of rules alone is quiet, and a rule is read before the work it binds withlist --type decision --kind rule. Review and held lead with the reader's own and name another person's, and held carries ataken-bycolumn. Under a narrowing aby: <name> — anb status --teamline says so, and every hint on the dashboard carries the same--by. (#72) searchislist --match. A text is one more predicate over id, title, tags, people and body, composable with every other flag;--archivereaches history, whichsearchread by default.overviewislist --all, and a type of itlist --type <t>. (#72)- The graph is
listwith edges.graphtakes the listing's flags and no--ready: a ready Task waits on nothing live, so a graph of ready Tasks alone had no edges to draw, and every node still carriesreadyfor a page to key on. The document'sslicenames each narrowing under its flag, andvis 3. (#72) - The dashboard opens nothing in the archive. Epic progress is a read of its own:
ready --for <hub>is an epic's queue,list --for <hub> --archiveits whole membership, and a hub's graph node carriesclosed/totalandnext. (#72)
Packages in this release: @supolka/agent-notebook@0.5.0 and its five platform packages at the same version.
anb v2026.09.08
The notebook knows who is asking. Two issues from a team sharing one notebook close here: by was written and never read back, and a notebook of rules with no Task started every session blind to them. The packages move to 0.4.0: the ready table gains a column and a log entry is signed by/via, so a script that parsed either by position reads the header first.
New
- A Task is taken, never assigned.
startrecords who took the Task astaken-byand refuses a Task someone else took, a replay by another identity included, with the newtakenrefusal;edit --taken-byhands it over andedit --clear taken-byerases it. Nobody assigns work:addhas no way to take a Task for someone else. (#67) - Your own records, and a colleague's.
readyandlisttake--mineand--by <name>, composable with--for, keeping the records an identity created or took; the ready table names who took each Task in ataken-bycolumn, andsearchmatchesby,viaandtaken-by. (#67) - The identity the host acts under.
ANB_BYnames it outright, for a checkout with no git identity or one whose git name is not the notebook's; otherwise git'suser.nameanswers.addsignsbywith it, and--minewithout one is refused with the fix named. (#67)
Improved
- Status opens on your work. The caller's active Tasks lead the dashboard, and a Task another person took carries their name after its title; the hook gets the same. Every other section stays the whole project's. (#67)
- A log entry names the person and the hand.
commentsignsby/via, the form a cited record is attributed in, so the human stays in the trail beside the tool. (#67) - Rows carry their people.
list,readyandsearchrows, and Statusactiverows, carrybyandtaken-byin--jsonwhen the record has them. (#67)
Fixed
- A standing rule opens Status. A notebook holding rule Decisions and no Task printed the quiet line, so the session hook delivered nothing of the law until the first Task existed; a live rule now counts as signal, and a shape Decision or a Note alone still leaves the notebook quiet. (#67)
Packages in this release: @supolka/agent-notebook@0.4.0 and its five platform packages at the same version.
anb v2026.09.06.2
The third release of the day, and the first shaped by an adopter: seven issues were filed after the tool was set up on an existing project and its history replayed through the live verbs, and six of them close here. The packages move to 0.3.0: anb setup now refuses to wire an agent nobody named, so a script that ran it bare must name one.
New
- Setup wires only the agents named.
anb setup --agent claude-code,--agent codex, or--agent agents-mdfor any tool that follows the agents.md convention, repeatable; without the flag setup refuses and names the three.--removetakes the same flag, a file two agents read goes only when every reader is named, and a host directory setup emptied goes with its files. (#54) - A body from a file or a pipe.
addandedittake--body-file <path>beside--body, with-for standard input, andclose --note -reads standard input by the same rule. (#52) - A link declared after the fact.
edit --linkandedit --unlinksplice links like tags, and a link naming a record must name one that exists. A Decision that cites another as context declares the relationship once, andmay-conflictthen names only the pair nobody has judged. (#53) - Debt as data. Each row of
status --jsoncarries its signal's fields beside the printed line: the id and days of a clock, the pair of amay-conflict, the file and error count of an invalid record. (#50)
Improved
- A report's id is its Task's.
close --notemintsnote.report-<task slug>, guessable from the Task and never cut on a stopword; existing reports keep their ids. (#51)
Fixed
- The setup snippet is a paragraph of its own. A guide ending with a list item no longer reads the snippet as part of that item, and removal leaves a guide ending on one newline as it was. (#49)
Packages in this release: @supolka/agent-notebook@0.3.0 and its five platform packages at the same version.
anb v2026.09.06.1
The second release of the day, and the first named by the same-day counter. Notes take three new kinds, the skills teach the author's own method from an idea to its proof, and the book and the README present the product in that voice. The packages move to 0.2.0: an older binary refuses the new Note kinds.
New
- Three kinds of Note for shaping work.
ideakeeps a request with its source, its constraints and where the agreement stands;modelholds a piece of the domain as the project understands it;specstates what a change is expected to do. They joinfact,termandguide, and none of them turns knowledge into a Task. (#39) - The author method in the skill. The
anbskill starts a change from an idea Note, lets Tasks emerge--fromit, keeps one Task active, cites what a record rests on and closes with evidence. The atlas skill applies the same method before it acts on review comments and tells a record's type from its kind. (#39) - The Ideas and Domain guides. Two pages in the book on capturing a request and keeping a domain model, beside the guides on the session, Tasks and knowledge. (#39)
- The project's mark. The lockup at the top of the README, the mark beside the site title, the favicons and a brand directory with every variant. (#34, #38)
Improved
- The book in the author's voice. The README and the landing page present the product, the contribution guide addresses developers who know their craft, and the release guide follows the workflow as it runs, with recovery when publication only partly succeeds. (#39)
- A release tag is its day. The first release of a day is
vYYYY.MM.DD; each further release that day appends.N, counting from 1. The Release workflow refuses a tag of another shape before it creates a release or publishes a package. (#40) - The documentation build warns about nothing. A declared translations collection, a 404 page of the site's own, and a chunk limit set just above the diagram grammar. (#36)
Packages in this release: @supolka/agent-notebook@0.2.0 and its five platform packages at the same version.
anb v2026.09.06
The first release published entirely by the repository: a tag builds every platform, creates the GitHub release and publishes the packages through npm's trusted publishing, with no token anywhere. Nothing changes for a user of anb; the packages move to 0.1.1 so the chain has something to publish.
Improved
- The skill module is two symmetric children.
skillowns what the installed skills share: the frontmatter mark, the list of installables, writing a skill's files and diffing them.skill/anbrenders theanbskill from the binary andskill/atlascarries the hand-written atlas skill, one file per skill.
Packages in this release: @supolka/agent-notebook@0.1.1 and its five platform packages at the same version.