Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion viewer/sw.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,11 @@
// installed service worker keeps serving the affine without this bump (§CRISIS LESSON 4). Paired
// with _GANTT_CACHE_VERSION 37→38 (the IDB kernel_ops self-heal) in the same commit.
// DEPLOY: bump CACHE_VERSION on every OCI upload. Old caches are purged on activate.
const CACHE_VERSION = 'v1123'; // bump on each deploy; per-change detail is the git commit message.
const CACHE_VERSION = 'v1125'; // bump on each deploy; per-change detail is the git commit message.
// v1125 (rebase of PR #1318 onto origin/main) §GANTT_CACHE_ERR_STACK: time_machine.js's
// injectGantt cache-activate catch block now logs the stack + which phase failed (pre/post
// loadOps) instead of the bare error message, which could not locate a live user's GUID-key
// crash. Logging-only, no behavior change.
// MERGE NOTE (2026-09-01, third of the day, same standing rule: KEEP BOTH notes, take the HIGHER
// version, each separate change gets its OWN bump):
// v1119 (2026-09-01) §WALL_SIDE_AND_LIGHT_FLOOR: streaming.js class-keyed material.side (census-
Expand Down
9 changes: 8 additions & 1 deletion viewer/time_machine.js
Original file line number Diff line number Diff line change
Expand Up @@ -8719,7 +8719,14 @@
_finishActivate(app, silent);
resolve(true);
}).catch(async function(e) { // §GANTT_REFOLD_HANG: awaits chunked injectGantt in the fallback
console.warn('§GANTT_CACHE_ERR ' + e.message);
// §GANTT_CACHE_ERR_STACK (2026-08-12) — this handler wraps the WHOLE async activate body
// (cache read, _materializeNativeSchedule, injectGantt, loadOps, cachePut), so a message
// alone cannot say which. Live user report: "Cannot read properties of undefined (reading
// '3iM76qwej9Tf9ttHcbQp2z')" — a GUID used as a key on an undefined object, recovered by the
// fallback below (TM still opened with 63,416 ops) but with no way to locate it. Log the
// stack and the phase so the next occurrence names its own line.
console.warn('§GANTT_CACHE_ERR ' + e.message + ' | phase=' + (_ops && _ops.length ? 'post-loadOps' : 'pre-loadOps') +
' | stack=' + String(e && e.stack || '(none)').split('\n').slice(0, 4).join(' << '));
// Fallback: compute without cache
_ops = loadOps(); _ganttDirty = true;
if (!_ops.length) { await _load4DTemplate(); _materializeNativeSchedule(A()); await injectGantt(); _ops = loadOps(); _ganttDirty = true; } // §GANTT_SINGLE_LOAD, same as the main path (await: loadOps must see the chunked writes)
Expand Down
Loading