SessionDetail live update: - Extract session-view-state.mjs: capture scroll position, disclosure (open/skill-md-open) state, and visible-UUID anchor before refresh; reconcile messages by UUID (in-place update, append tail only); restore scroll and disclosure state after DOM patch. findLastMessageAtOrAbove uses binary search (O(log n)) instead of linear scan. - scrollRevision tracks user scrolls during refresh to avoid stale anchors overriding manual navigation. - Throttle onScroll to one rAF per frame. Tool renderer: - Extract tool-renderer.js: standalone module for rendering tool call cards (Read/Write/Edit diffs, Bash terminal output, search results, JS/TS syntax highlighting). Replaces inline rendering in SessionDetail. - tests/app-tool-renderer.test.mjs covers escaping, highlighting, and terminal formatting. Input tokens semantics migration: - Claude provider now sums input_tokens + cache_creation_input_tokens + cache_read_input_tokens into a single input_tokens value (was previously only the raw field, undercounting when cache tokens are present). - One-time index-wide re-parse triggered when the marker __claude_input_tokens_include_cache_v1__ is absent and the DB already has token data (self-healing on first build after upgrade). - App indexer.ts carries the same marker check for the app's build path. Also: - PRODUCT.md: product register (users, purpose, brand, design principles, accessibility targets). - README.md: minor wording updates. Co-Authored-By: Codex (GPT-5) <noreply@openai.com>
34 lines
1.9 KiB
Markdown
34 lines
1.9 KiB
Markdown
# Product
|
|
|
|
## Register
|
|
|
|
product
|
|
|
|
## Users
|
|
|
|
Developers and coding-agent users who need to revisit past work, understand what an agent did, verify why a decision was made, and manage durable memory without leaving the evidence behind.
|
|
|
|
## Product Purpose
|
|
|
|
Obelisk is explicit memory infrastructure for coding agents. Its core indexes local agent history into a queryable evidence layer; the desktop app is the human observability and memory-control surface for inspecting sessions, auditing evidence, managing the index, and reviewing or revoking durable memories. Success means a person can move from a remembered question to the exact historical evidence with low friction and high confidence.
|
|
|
|
## Brand Personality
|
|
|
|
Calm, exact, auditable. Obelisk should feel trustworthy around private local history, dense without being hostile, and confident without hiding uncertainty or provenance.
|
|
|
|
## Anti-references
|
|
|
|
Obelisk should not resemble an undifferentiated chat-log browser, a terminal log wall, an opaque AI-summary dashboard, or a decorative analytics product that separates conclusions from their source evidence.
|
|
|
|
## Design Principles
|
|
|
|
1. Evidence before assertion: every interpretation keeps a clear path back to the raw session record.
|
|
2. Human-readable by default: expose protocol and storage detail on demand, not as the primary reading experience.
|
|
3. Preserve uncertainty: never present inferred structure as observed execution fact.
|
|
4. Progressive density: make long sessions scannable without discarding the depth experts need.
|
|
5. Local trust is visible: controls, provenance, and failure states should reinforce that the user remains in charge of their history and memories.
|
|
|
|
## Accessibility & Inclusion
|
|
|
|
Target WCAG AA contrast for essential text and controls. Core session navigation and disclosure controls should work from the keyboard, focus must remain visible, state cannot rely on color alone, and motion should respect reduced-motion preferences.
|