commits on main

← newer commits

2026-10-01

0199830b Aly Raffauf docs(context): report snapshot retention benchmarks

docs(context): report snapshot retention benchmarks

Record timing ranges and memory savings, including zero retained replay bytes and the 79 to 145 microsecond text-capture regression. Replay counting still serializes JSON, and inspection still renders the full history per page.

open commit browse files
c203a010 Aly Raffauf test(context): cover payload release and benchmark snapshots

test(context): cover payload release and benchmark snapshots

Check payload release, replay delivery and session cleanup through real snapshots and daemon sessions. Offline runs measure capture, inspection and replacement with one warm-up and five samples.

open commit browse files
ad123998 Aly Raffauf perf(context): drop omitted payloads from snapshot retention

perf(context): drop omitted payloads from snapshot retention

History retention drops from O(n + v + p) to O(n + v), with n entries/images, v visible bytes and p discarded payload bytes; capture complexity is unchanged. The 64 KiB replay fixture releases 62.5 MiB, while 1k-text capture shifts from 79 to 145 microseconds.

open commit browse files
25b84fc5 Aly Raffauf test(tui): cover transcript buffer ownership

test(tui): cover transcript buffer ownership

Cover retained snapshots, detached history, discard, chunk boundaries, and message deduplication. The full repository gate and TUI race suite pass.

open commit browse files
92cb518d Aly Raffauf perf(tui): assemble live chunks in amortized O(n)

perf(tui): assemble live chunks in amortized O(n)

Replace O(n²) copying per live chunk with amortized O(n) assembly, immutable snapshots, and detached history. For 256 KiB in 32-byte deltas, median assembly fell from 46.35 to 0.56 ms and allocated bytes from 288.83 to 1.43 MB (-benchmem -benchtime=300ms -count=3).

open commit browse files
b0338715 Aly Raffauf perf(daemon): bound preview tail memory to O(1)

perf(daemon): bound preview tail memory to O(1)

Preview extraction stays O(n) time; extra space drops from O(n) to O(1), capped at 512 runes. Growth-sequence medians before -> after (-benchmem -benchtime=300ms -count=3): 16 KiB: 1.493 -> 0.307 ms, 273 -> 238 allocs, 838432 -> 180889 bytes 128 KiB: 157.109 -> 12.879 ms, 2178 -> 1830 allocs, 44233404 -> 9233466 bytes

open commit browse files
acc7dbef Aly Raffauf test(daemon): cover streamed preview tails and benchmark argument growth

test(daemon): cover streamed preview tails and benchmark argument growth

Pin rune offsets and sanitized tails at partial JSON boundaries that E2E cannot reliably pause at. Benchmark complete 16/128 KiB growth sequences in 1 KiB steps.

open commit browse files
75f8b534 Aly Raffauf test(python): cover trace lifetime and daemon persistence

test(python): cover trace lifetime and daemon persistence

Cover late tasks, nested delivery gates, failed writes, and traces surviving capture eviction.

open commit browse files
b5ead43d Aly Raffauf fix(python): seal and release finalized traces

fix(python): seal and release finalized traces

Retained trace storage drops from O(B + A) to O(1), with B snapshot bytes and A activity bytes. Python 3.11 tracemalloc, 16 traces with sixteen 120 KiB files and 64 activities each: 30.3 MiB to 6.7 KiB after release.

open commit browse files
5ae5e3d2 Aly Raffauf test(tui): check survivor ownership after trimming

test(tui): check survivor ownership after trimming

Cover row, byte, and complete eviction, including descriptor clearing and independent survivor storage.

open commit browse files
3356236d Aly Raffauf perf(tui): reduce survivor allocations to O(1)

perf(tui): reduce survivor allocations to O(1)

Copying survivors drops from O(n + B) to O(n), where n is surviving rows and B is their text bytes. Three 300ms benchmark runs cut row-cap allocations/op from 1,002 to 2 and bytes/op from 136,960 to 40,960; byte-cap allocations/op fell from 510 to 2 and bytes/op from about 314,369 to 21,760.

open commit browse files
4b3d439c Aly Raffauf test(tui): benchmark trimming a full display

test(tui): benchmark trimming a full display

Measure append-and-trim allocations at the row and byte caps, with rendering outside the timer.

open commit browse files
8928450c Aly Raffauf perf(python): release delivered cell images

perf(python): release delivered cell images

Delivered-image archive space drops from O(R * B) to zero for R retained cells and B image bytes per cell; delivery remains O(B). Across three runs of 24 fresh 512x512 PNG cells, post-GC Python allocations fell from 12.03 MiB to 18.7 KiB, with zero archived image bytes and identical payloads.

open commit browse files
8339043a Aly Raffauf fix(test): read complete owner frames without buffering

fix(test): read complete owner frames without buffering

Keep frames visible to select and read each payload fully, including large image results.

open commit browse files
6c003b5d Aly Raffauf fix(python): release obsolete job output watchers

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
48eabe56 nekomimi.pet make bursts clickable to see what agent did

make bursts clickable to see what agent did

open commit browse files
708c1b03 Aly Raffauf fix(python): validate protocol messages and remote settings

fix(python): validate protocol messages and remote settings

open commit browse files
24e71780 Aly Raffauf fix(python): align tooling and Nix runtimes with Python 3.11

fix(python): align tooling and Nix runtimes with Python 3.11

open commit browse files
77f1bc82 nekomimi.pet fix: preserve Python 3.11 compatibility in remote kernels

fix: preserve Python 3.11 compatibility in remote kernels

open commit browse files
29ab4406 Aly Raffauf chore: remove audit cruft and exclude generated reports

chore: remove audit cruft and exclude generated reports

open commit browse files
70774ed1 Aly Raffauf chore: remove lint audit CSVs

chore: remove lint audit CSVs

open commit browse files
b5853135 Aly Raffauf refactor(gleam): clean up code and enforce focused lint checks

refactor(gleam): clean up code and enforce focused lint checks

open commit browse files
4ad84fdc Aly Raffauf fix(python): enforce ruff and ty checks

fix(python): enforce ruff and ty checks

open commit browse files
8209acaa Aly Raffauf fix(fmt): format test.sh

fix(fmt): format test.sh

open commit browse files
83fc9148 Aly Raffauf refactor(cli): remove redundant daemon startup wrapper

refactor(cli): remove redundant daemon startup wrapper

open commit browse files
db307c37 Aly Raffauf refactor(antigravity): move schema policy into Gleam

refactor(antigravity): move schema policy into Gleam

open commit browse files
9f28af07 Aly Raffauf fix(daemon): return 503 when request actors disappear

fix(daemon): return 503 when request actors disappear

Restart regression passed three runs.

open commit browse files
a6513292 Aly Raffauf perf(retrieval): page O(n) rows and retain O(k) results

perf(retrieval): page O(n) rows and retain O(k) results

Sparse search: 2 pages, 2 decodes. 2200 matches: 20 retained; count remains exact. Node page: 7 of 45 summaries read. Text page: 128 of 300 rows decoded.

open commit browse files
61dad0e7 Aly Raffauf perf(lcm): cut below-trigger payload decodes from O(n) to O(1)

perf(lcm): cut below-trigger payload decodes from O(n) to O(1)

802-row fixture: 0 decodes below trigger or for stored prior. Forced compaction: 2 eligible rows decoded.

open commit browse files
a670c29b Aly Raffauf perf(history): cut image fitting from O(n*f) to O(n log(f+1))

perf(history): cut image fitting from O(n*f) to O(n log(f+1))

Add indexed row classes and resumable backfill. Add snapshot-bounded source folds.

open commit browse files
935f0b19 Aly Raffauf refactor(harness): remove unused projection and API wrappers

refactor(harness): remove unused projection and API wrappers

open commit browse files
351b8df9 Aly Raffauf refactor(models): move provider cache schemas into Gleam

refactor(models): move provider cache schemas into Gleam

Keep Erlang adapters focused on transport, storage, and refresh coordination. Add parser, refresh, and picker regression coverage. Validated with gleam check, 170 Gleam tests, model-catalog E2E, and test.sh.

open commit browse files
b467ef82 Aly Raffauf refactor(harness): move instruction policy into Gleam

refactor(harness): move instruction policy into Gleam

Move selection, precedence, and rendering into Gleam. Keep discovery and validated reads in Erlang, with E2E coverage for ordering and file selection.

open commit browse files
7ba2cb0b Aly Raffauf perf(cache-ttl): make warm reads O(1) and globs O(p*v)

perf(cache-ttl): make warm reads O(1) and globs O(p*v)

Cache typed tables and failed revisions; reject duplicate layer IDs. 8,000-entry warm table: 34.4 ms -> 0.11 ms. 16-wildcard cold lookup: >2 s -> 13.4 ms.

open commit browse files
9f29d5af Aly Raffauf perf(claude): cut required checks from O(r^2) to O(r log r)

perf(claude): cut required checks from O(r^2) to O(r log r)

Index branch requirements and skip overwritten fields. 800 names per branch: 46.8 ms -> 1.02 ms median normalization.

open commit browse files
dd17f428 Aly Raffauf perf(models): replace O(p) provider scans with O(log p) lookups

perf(models): replace O(p) provider scans with O(log p) lookups

Return typed results and trust catalog efforts; infer only for absent models. Use direct provider lookup without an endpoint and remove unused wrappers.

open commit browse files
ae878c51 Aly Raffauf perf(capabilities): cut preference reads from O(n) to O(1)

perf(capabilities): cut preference reads from O(n) to O(1)

Reuse one snapshot per selection and share the 1 MiB read/write cap. 128 checks on 198,914 bytes: 256.2 ms -> 2.8 ms.

open commit browse files
6e605797 Aly Raffauf perf(cache-ttl): cut merging from O(n^2) to O(n log n)

perf(cache-ttl): cut merging from O(n^2) to O(n log n)

Move merge policy into Gleam and replace repeated list scans with an ID index. Preserve ordering and override behavior; file I/O and caching stay in Erlang. Three 8,000-entry layers: 7,329 ms in the original Erlang merge, 14 ms now. Median of three runs, merge only. Parity checks and test.sh pass.

open commit browse files
506b634e Aly Raffauf refactor(models): move catalog selection into Gleam

refactor(models): move catalog selection into Gleam

Provider matching and conservative fallback limits are application policy. Move selection into catalog.gleam while keeping fetching, caching, and index persistence in Erlang. Preserve the JSON contract, persisted index format, and existing selection behavior. Replace duplicate unit tests with daemon coverage for shared capabilities, endpoint matching, and restart persistence. Verified 11,260 old/new selection and listing comparisons and the full test.sh gate.

open commit browse files
4d41fe57 Aly Raffauf refactor(claude): move schema normalization into Gleam

refactor(claude): move schema normalization into Gleam

Claude schema normalization is pure provider policy, so it belongs beside the request encoder. Move the merge rules into schema.gleam and remove the Erlang module. Keep arbitrary schema metadata and nested schemas intact. Add a request regression test for property precedence, required fields, and descriptions. Verified 1,009 cases against the old normalizer, 159 Gleam tests, and the full test.sh gate.

open commit browse files
cfbde4bd Aly Raffauf refactor(capabilities): move preference rules into Gleam

refactor(capabilities): move preference rules into Gleam

Use typed decoding for overrides and validation while Erlang retains file persistence.

open commit browse files
8d2c14de Aly Raffauf refactor(cli): share login state cleanup

refactor(cli): share login state cleanup

Delete the temporary provider before restoring the saved config. Report cleanup errors and attempt restoration even when deletion fails.

open commit browse files
336310f2 Aly Raffauf chore(cli): drop unused snapshot cursor

chore(cli): drop unused snapshot cursor

The stream snapshot helper only reads events. Remove the unused cursor field from its response struct.

open commit browse files
2d22f905 Aly Raffauf refactor(cli): share open mode classification

refactor(cli): share open mode classification

Use one helper to classify file modes for Python open calls and Path.open calls.

open commit browse files
e1bfeeb7 Aly Raffauf fix(cli): preserve cache fade in usage events

fix(cli): preserve cache fade in usage events

Decode cache fade steps so the footer can age cached token counts. Ignore malformed fade data while keeping the rest of the usage event.

open commit browse files
7de30f74 dawn extensions: add cdp browser tool

extensions: add cdp browser tool

Signed-off-by: dawn <90008@klbr.net>

open commit browse files
647eb43e dawn remote: run commands under login shell, discover agent socket, and raise timeouts

remote: run commands under login shell, discover agent socket, and raise timeouts

Signed-off-by: dawn <90008@klbr.net>

open commit browse files
963a4a76 dawn python: block daemon tokens and secret-shaped variables in clean_environment

python: block daemon tokens and secret-shaped variables in clean_environment

Signed-off-by: dawn <90008@klbr.net>

open commit browse files
f204382a Aly Raffauf fix(config): move provider validation beside its Gleam types

fix(config): move provider validation beside its Gleam types

.

open commit browse files
9c745c52 Aly Raffauf fix(tui): report terminal restoration failures during color detection

fix(tui): report terminal restoration failures during color detection

Stop TUI startup if restoring terminal settings fails, while keeping default colors for ordinary query failures.

open commit browse files
older commits →