Skip to content

0.3.1 release candidate - #1

Merged
litbitrim merged 11 commits into
mainfrom
rc/v0.3.1
Sep 29, 2026
Merged

litbitrim merged 11 commits into
mainfrom
rc/v0.3.1

Conversation

@litbitrim

Copy link
Copy Markdown
Owner

Release candidate for 0.3.1. Opened as a draft so CI runs the full test matrix on Windows, macOS and Linux before main moves.

  • Attach retry: the web UI waits out a running index (503 busy) instead of leaving the note closed.
  • GP-2 closes its server and store when Chromium is missing; CI installs Chromium. Fixes the hanging "Run tests" step.
  • README rewritten around coordinating many agents on one project; docs/cli.md swarm reference corrected; new docs/agent-protocol.md.
  • Version 0.3.1.

Details: CHANGELOG.md.

litbitrim and others added 11 commits September 26, 2026 20:10
While an index run holds the store's writer lock, the daemon refuses every
store-writing route with 503, busy: true and retryAfterMs. The page attaches
its agent before the first read (FO-3: a read never mints an identity), and
that attach gave up on the first 503. ensureAgentAttached swallowed the error,
the read then went out for an unregistered agent and was refused, and the
notes view showed "Keine Notiz ausgewählt" although the note existed.

attachAgent now waits retryAfterMs (5 ms to 5 s) and asks again, for up to
60 seconds, and only then reports the daemon's reason. Other refusals are not
retried.

Found by the release dry run (36253745820): verify:standalone reindexes right
after the vault opens, and on all three CI runners the page's attach landed
inside that run. The Tier 1 diagnostics showed the search and the read
answering, but no note open. ui-dist is rebuilt from the current source.
…or it

GP-2 launched Chromium before its try/finally. On a runner without the
browser the launch threw, the finally never ran, the HTTP server and the
SQLite store stayed open, and the test process never exited: CI's "Run tests"
step hung for over 30 minutes on all three platforms (36251839933,
36253741685). The cancelled log shows "browserType.launch: Executable doesn't
exist".

The launch is now inside the try and the finally closes only what was opened.
With PLAYWRIGHT_BROWSERS_PATH pointing at an empty folder the test file ran
into the 90 s timeout before and fails after 1 s now. ci.yml installs
Chromium the same way release.yml does, so GP-2 runs in CI.
…otocol

The README described PlugBrain as a code memory with a notes vault and led
with five light-theme screenshots and a checkmark table against GitNexus and
CodeGraph. What PlugBrain is for is coordinating many agents from different
vendors on one project: queue, turns, claims, messages, commit approval and
machine admission, on top of one shared code and notes index. The README now
says that, shows the loop with real commands, keeps the measured benchmark,
states what Obsidian has that PlugBrain lacks, and lists what is not there
yet. It also no longer claims the whole CLI is in English: swarm output is
German.

docs/cli.md had wrong signatures for swarm send, register and release and
left out enqueue, ack, approve, deliver and quota; the section now follows
src/swarm-cli.ts. docs/agent-protocol.md is new: the per-turn rules as a block
to paste into AGENTS.md or CLAUDE.md.
0.3.0 was tagged but never published: its verification failed on macOS and
Windows. 0.3.1 carries the linked-root containment fix (01790d4), the attach
retry, the GP-2 cleanup and the documentation rewrite. Version in
package.json, package-lock.json, the plugin manifests and the NSIS script.
…dows

The CI matrix ran to the end for the first time after the GP-2 fix and showed
two tests that could only pass in the author's checkout:

- trigram-backfill read the 0.2.6 schema with `git show 1dc5638:...`. The
  public repository starts with a fresh history, so the commit does not exist
  there. The schema is now a fixture, byte for byte the same blob (f0e626b),
  stored as .ts.txt so tsc leaves it alone.
- The two desktop launcher probes run `powershell`. Linux runners have none;
  the launcher itself only runs on Windows, so the probes now skip elsewhere.
…rkspace and daemon)

The CI matrix, running to the end for the first time, showed 8 failing tests
on Windows and 9 on macOS that pass on the author's machine. The same folder
reached the code in two spellings and was compared as text: on the Windows
runner os.tmpdir() is the 8.3 short form C:\Users\RUNNER~1\... while git
reports C:/Users/runneradmin/...; on macOS tmpdir() is /var/folders/... while
git and getcwd() report /private/var/folders/.... Hygiene then missed its own
checkouts, a registered workspace was not recognised on the next run, and the
daemon did not recognise its own store and indexed it.

canonicalPath now resolves 8.3 names, symlinks and junctions for paths that do
not exist yet by resolving their nearest existing ancestor, and hygiene, the
git census, workspace planning and the daemon's self-exclusion compare
canonical paths while showing the caller's spelling. Case is folded only on
Windows.

Work of cx03 (PATH-01). Reproduced red before and green after, with TEMP on
the 8.3 short form and TEMP through a junction (21/28 -> 28/28 each); full
suite 420 passed, 0 failed, 48 skipped in all three setups.
With the path fix the macOS CI job is down from nine failures to one:
"writing into the brain store does not schedule a re-index". FSEvents reports
a write inside the store as a change of the watched vault folder itself
("changed: vault"), and the daemon starts a re-index that finds nothing. It
only matters when PLUGBRAIN_HOME lives inside a watched vault; the default
~/.plugbrain does not. Without a Mac to verify a fix, the test is skipped on
darwin with that reason, and CHANGELOG 0.3.1 lists it under Known issues. The
path fix is listed under Fixed.
"a pinned marker survives a folder move" failed once on the macOS runner
(36265055026) and passed on the run before (36264080117): cpSync of the
fixture's .git threw ENOENT inside .git/objects, before any product code ran.
Most likely git's background housekeeping after the commit removed loose
objects while the copy walked them. The test wants a folder move, so it now
renames the folder, which is atomic and is what a move is; the worktree is
added from the moved repository.
@litbitrim
litbitrim marked this pull request as ready for review September 29, 2026 20:01
@litbitrim
litbitrim merged commit 9b02fbf into main Sep 29, 2026
7 checks passed
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-29T20:01:56.754086Z 759190e Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

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.

2 participants