deepseek-harness/apps/web
_Kerman cdb4cc3c68 feat(session-projection-cache): store one projection_cache.json per session
Replace the single global session_projcache domain with a per-session
cache file inside the session's own persistence directory, resolved
through sessionPersistence.locate(meta) — the persistence backend owns
the session-directory layout, the cache service keeps every checkpoint
and cold-read responsibility.

- cachedSnapshot(meta) becomes async (one file read per session);
  coldSnapshot takes the session header so it can locate the file, with
  the stored log header remaining the identity witness.
- Backends without a per-session directory (sqlite) disable the durable
  cache: writes no-op and cold reads fall to the full-log rung. An
  obsolete global cache is never read — derived data refolds on first
  cold read (no migration).
- writeAtomic is exported from dsh-storage-json as the shared atomic
  whole-file replace primitive; api-proxy listing and subagent cold
  reads await the now-async cachedSnapshot.
- READMEs and a new Agent Note document the per-session medium.
2026-08-19 21:03:20 +08:00
..
public revert(web): drop the 32x32 PNG favicon fallback 2026-08-10 14:17:17 +08:00
src refactor(client): merge React bindings into UI renderer 2026-08-18 01:34:23 +08:00
stress-tests test(web): add opt-in reasoning chunk stress lane 2026-08-04 14:37:31 +08:00
tests feat(session-projection-cache): store one projection_cache.json per session 2026-08-19 21:03:20 +08:00
.npmignore Merge remote-tracking branch 'origin/master' into feat/web-message-feedback-ui 2026-08-12 10:43:23 +08:00
index.html fix(locale): open in English when the browser names no shipped language 2026-08-17 18:55:28 +08:00
package.json build(client): enforce client package boundaries 2026-08-18 01:34:53 +08:00
tsconfig.json Merge pull request #2673 from deepseek-harness/fix/web-feedback-note-popover 2026-08-19 13:59:30 +08:00
vite.config.ts build(client): enforce client package boundaries 2026-08-18 01:34:53 +08:00