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.

open commit browse files commits

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.

open commit browse files commits

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.

open commit browse files commits
f76e7a60 nekomimi.pet existing-storage-migrations refactor: organize existing storage migrations

existing-storage-migrations

refactor: organize existing storage migrations

open commit browse files commits

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

open commit browse files commits
6f794228 nekomimi.pet paperclips give page rows a detail pane and vents a title

paperclips

give page rows a detail pane and vents a title

open commit browse files commits

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.

open commit browse files commits

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/.

open commit browse files commits
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.

open commit browse files commits
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.

open commit browse files commits

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

open commit browse files commits
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.

open commit browse files commits

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

open commit browse files commits

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

open commit browse files commits