diff --git a/src/viewer/index.html b/src/viewer/index.html
index d43d3f9e5..db0b5100c 100644
--- a/src/viewer/index.html
+++ b/src/viewer/index.html
@@ -1550,10 +1550,8 @@
';
html += '
Sessions
' + d.sessions.length + '
' + activeSessions + ' active
';
html += '
Memories
' + d.memories.length + '
latest versions
';
- var lessonCount = (d.lessons || []).length;
- var crystalCount = (d.crystals || []).length;
- html += '
Lessons
' + lessonCount + '
confidence-scored
';
- html += '
Crystals
' + crystalCount + '
action digests
';
+ html += '
';
+ html += '
Crystals
—
load tab to view
';
html += '
Graph Nodes
' + nodeCount + '
' + edgeCount + ' edges
';
html += '
Health
' + esc(healthStatus) + '
';
html += '
' + esc(snap.connectionState || 'unknown') + '
';
diff --git a/test/viewer-session-id.test.ts b/test/viewer-session-id.test.ts
index 292e1bd32..5bb5b18ef 100644
--- a/test/viewer-session-id.test.ts
+++ b/test/viewer-session-id.test.ts
@@ -226,6 +226,16 @@ describe("viewer session rendering", () => {
expect(paths).toHaveLength(10);
});
+ it("marks lesson and crystal counts as deferred", () => {
+ const { sandbox, getElement } = loadViewerSandbox();
+
+ sandbox.renderDashboard();
+
+ const html = getElement("view-dashboard").innerHTML;
+ expect(html).toContain('
Lessons
—
');
+ expect(html).toContain('
Crystals
—
');
+ });
+
it("attaches the saved viewer bearer to API calls", async () => {
const { sandbox } = loadViewerSandbox();
const requests: Array<{ url: string; opts: { headers?: Record
} }> = [];