Skip to content

Fresh install: 5 Pulse dashboard bugs — template mode stuck, telos data not loading, missing yaml dep, broken logo #1317

@deleyva

Description

@deleyva

Summary

Five bugs found during a fresh PAI install that prevent the Pulse dashboard from showing real user data. All were reproducible and fixed manually. Reporting so they can be fixed in the install/setup flow.


Bug 1: .template-mode marker not deleted after /interview completes

File: install.sh / interview completion hook
Symptom: After completing /interview (TELOS phase filled with real data), the dashboard still shows the "You're looking at template content" banner and renders all sample data instead of user data.
Root cause: PAI/USER/.template-mode is written on install but never deleted when the interview completes.
Fix: Delete ~/.claude/PAI/USER/.template-mode manually, or have the interview skill delete it on completion.


Bug 2: use-telos-data.ts always returns static fallback — never fetches the API

File: Observability/src/app/telos/_v7/use-telos-data.ts
Symptom: TELOS page always shows sample data from data.ts even when real data exists in the API.
Root cause: The hook is a stub — it ignores the version state and unconditionally returns FALLBACK:

void version;
return { telos: FALLBACK, refetch, error: null };

Fix: Implement useEffect to fetch /api/telos/overview and merge with fallback for null fields.


Bug 3: handleTelosOverview() parses TELOS bullet format incorrectly — missions, problems, challenges, strategies always empty

File: Observability/observability.tshandleTelosOverview()
Symptom: /api/telos/overview returns empty arrays for missions, problems, challenges, strategies even when the TELOS markdown files are populated.
Root cause: The function calls parseSourceHeadings() which uses parseHeadingText() with regex /^(PREFIX\d+)\s*:\s*(.+)$/. But parseSections() produces { heading: "M0", body: "text" } for bullet items — the heading field is just the ID with no colon or title, so parseHeadingText never matches.
The actual TELOS markdown format is - **M0:** text, where ** wraps M0: (ID + colon), not just M0. The idBullet regex in parseSections (/^-\s+\*{0,2}([A-Z]{1,3}\d+[a-z]?)\*{0,2}:\s*(.+)$/) also fails to match this because it expects **M0**: not **M0:**.
Fix: Parse the raw markdown directly with a regex that handles - **M0:** text:

const bulletRe = /^-\s+\*{0,2}([A-Z]{1,3}\d+[a-z]?)\*{0,2}:?\*{0,2}\s*(.+)$/

Bug 4: yaml package missing from Observability/package.json

File: Observability/package.json
Symptom: After running bun install in the Observability directory, Pulse fails to start the observability module with: Cannot find package 'yaml' from '.../Observability/observability.ts'
Root cause: observability.ts imports yaml but it's not listed as a dependency in package.json.
Fix: Add "yaml" to dependencies in Observability/package.json.


Bug 5: pai-logo.png not in Observability/public/ — logo and favicon break after bun install

File: Observability/public/
Symptom: After running bun install in the Observability directory, pai-logo.png is missing from public/, so the logo in the nav header and the browser tab favicon both break (show broken image icon).
Root cause: pai-logo.png is not committed to Observability/public/. It lives in PAI-Install/public/assets/pai-logo.png but is not copied to the right location during install.
Fix: Either commit pai-logo.png to Observability/public/, or add a step in the install/build script to copy it from PAI-Install/public/assets/.


Environment

  • macOS 15.x, Apple Silicon
  • Bun latest
  • PAI 5.0.0 / Pulse 2.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions