feat(app): live session update + tool renderer + input_tokens migration
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>
This commit is contained in:
@@ -42,11 +42,11 @@ For live app refresh, Obelisk watches `~/.claude/projects` and `~/.codex/session
|
||||
You can use obelisk like:
|
||||
|
||||
```
|
||||
/obelisk-skill 上次 auth bug 最后到底改了哪些文件,为什么这么改
|
||||
/obelisk-skill 这个文件最近在哪些 sessions 里被反复修改
|
||||
/obelisk-skill 找出最近失败的 tool calls,它们分别发生在哪些任务里
|
||||
/obelisk-skill 那个 review workflow 的 subagents 各自结论是什么
|
||||
/obelisk-skill recap this week
|
||||
/obelisk 上次 auth bug 最后到底改了哪些文件,为什么这么改
|
||||
/obelisk 这个文件最近在哪些 sessions 里被反复修改
|
||||
/obelisk 找出最近失败的 tool calls,它们分别发生在哪些任务里
|
||||
/obelisk 那个 review workflow 的 subagents 各自结论是什么
|
||||
/obelisk recap this week
|
||||
```
|
||||
|
||||
### Install
|
||||
@@ -60,7 +60,7 @@ Or manually: copy `obelisk-skill/` into your project's `.claude/skills/`
|
||||
Then in any Claude Code session:
|
||||
|
||||
```
|
||||
/obelisk-skill <your question>
|
||||
/obelisk <your question>
|
||||
```
|
||||
|
||||
First run builds the index (~5 seconds for 100 sessions). After that it rebuilds incrementally.
|
||||
|
||||
Reference in New Issue
Block a user