branches
default
2597195d Aly Raffauf main docs(storage): explain online reports and offline cleanup
main
docs(storage): explain online reports and offline cleanup
Describe who owns the report and when local diagnosis applies. Reported paths never authorize local deletion.
2026-10-01
6c003b5d Aly Raffauf master fix(python): release obsolete job output watchers
master
fix(python): release obsolete job output watchers
Use weak callbacks and clear obsolete watchers while preserving early-read notifications and retention limits. Benchmark: retained memory falls 73%, from 5.02 to 1.35 MiB after 256 jobs.
2026-09-30
c9f9ce4d nekomimi.pet tui-verbose-cards-cells Show tool calls as foldable cards, add /cells, scroll while selecting
tui-verbose-cards-cells
Show tool calls as foldable cards, add /cells, scroll while selecting
/v draws each call as a colored card that folds on click. /cells lists every call with the selected one in full. Dragging a selection past an edge scrolls it and copies the rows it crossed. The turn signoff offers copy reply, which copies the turn as markdown.
f76e7a60 nekomimi.pet existing-storage-migrations refactor: organize existing storage migrations
existing-storage-migrations
refactor: organize existing storage migrations
2026-09-29
3ea2dec2 nekomimi.pet page-detail give page rows a detail pane and vents a title
page-detail
give page rows a detail pane and vents a title
6f794228 nekomimi.pet paperclips give page rows a detail pane and vents a title
2026-09-28
1ef80b3d dawn quota-ledger Call the per-attempt provider log requests, not a ledger
quota-ledger
Call the per-attempt provider log requests, not a ledger
"ledger" already names the daemon's store handle (runtime.ledger) and the work and schedule tables, so loop code read ledger.record(runtime.ledger(host), ...). The module is albedo/daemon/requests, the table provider_requests, the route GET /sessions/:id/requests, and robot-docs/provider-requests.md. Nothing outside this branch has stored rows yet, so no migration.
2026-09-27
0fdbac21 nekomimi.pet tests/e2e-harness Prune unit tests down to what E2E cannot catch
tests/e2e-harness
Prune unit tests down to what E2E cannot catch
Every unit test was sorted by the writing-tests policy: deleted when it restated the implementation, pinned constants or formatting, or duplicated E2E coverage; moved to test/e2e when the behaviour is observable end to end; kept, with a comment on the bug it catches, when it guards an invariant or bug-prone logic E2E cannot reach (provider wire formats, security boundaries, process supervision races, migrations, TUI interaction). Test code drops from 26.5k to 11.8k lines: gleam test 298 -> 106 tests, with python_test, compaction_test and daemon_test added to the E2E suite (43 tests). gleam test now runs against a temporary ALBEDO_HOME, so a developer's own ~/.albedo settings no longer fail it, and the E2E harness refuses to boot its shared daemon from a process that never exits. Also finishes moving docs/ to robot-docs/.
e46d8fb1 nekomimi.pet session-rename keep a session's given name when its workspace changes
session-rename
keep a session's given name when its workspace changes
the workspace route put the session's own copy of its info back into the registry, and that copy still has the title the session started with. a renamed root then went back to its old title in the workspace reply and as the sender name on its children's task letters. remember now re-reads the stored row, which has the new workspace, the given name, and the latest title, and answers with it.
4e496711 nekomimi.pet compaction-prior compaction strategies share stored folds through the context
compaction-prior
compaction strategies share stored folds through the context
strategies no longer import each other to see stored summaries. a FoldPlugin supplies them, and the runtime hands every strategy context.prior, which splits history into stored folds and the rest they don't cover, leaving out the active strategy's own provider. lcm-memory provides lcm's folds; rolling and snapcompact read them from the context, and snapcompact keeps them as text ahead of its frames. a compaction strategy enabled by name, for a session or globally, now displaces one that only the defaults enable, so a new default strategy cannot break an older choice. snapcompact-memory hands the snapcompact archive to other strategies as text folds and adds transcript_grep and transcript_read over the durable transcript. snapcompact's frame cap follows oh-my-pi's per-provider image budgets and a 3 MB inline budget (claude uploads through the files api). it reports its window and trigger to /context, and a forced compaction keeps a tail sized to the request, so /compact archives under a large window. a model id several catalog providers publish, served through a gateway the catalog does not list, answers with the input kinds they agree on and the smallest limits instead of nothing. the compaction notice says what the strategy did: archived as frames, folded, or summarized.
2026-09-26
3298618e nekomimi.pet feat/claude-codex-providers Route agents across providers and align Claude OAuth MCP requests
feat/claude-codex-providers
Route agents across providers and align Claude OAuth MCP requests
442fdea7 nekomimi.pet agents-mail providers: rate-limit rotation for every multi-account provider
agents-mail
providers: rate-limit rotation for every multi-account provider
The codex rotation is now albedo/harness/rotation (the retry loop) and albedo_accounts (ordering, session stickiness, limit records). A provider supplies a pool; a limited request moves to a sibling with room, a brief limit is waited out, a lasting one fails fast, and the error names the account the last attempt went to. antigravity: sessions spread across Google accounts and stick; QUOTA_EXHAUSTED is lasting, rate limits brief, MODEL_CAPACITY_EXHAUSTED waits without moving; /login shows limited accounts. alibaba: a key pool from every alibaba profile, auth.json (now also a list), and the environment, the profile's own key first.
2026-09-25
9de8f739 nekomimi.pet fix/tui-markdown-picker-layout Render Markdown with Glamour and keep session picker in two panes
fix/tui-markdown-picker-layout
Render Markdown with Glamour and keep session picker in two panes
2026-09-24
cd55c64d dawn transcript-readability cli: theme every screen from terminal colors, add speaker rails and kaomoji
transcript-readability
cli: theme every screen from terminal colors, add speaker rails and kaomoji