transcript-viewer 0.14.0__tar.gz → 0.14.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/PKG-INFO +11 -12
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/README.md +10 -11
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/pyproject.toml +1 -1
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/src/transcript_viewer/page.html +6 -6
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/page.test.js +20 -1
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/uv.lock +1 -1
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/.coverage +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/.github/workflows/publish.yml +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/.github/workflows/test.yml +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/.gitignore +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/design/Anchor.dc.html +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/design/Dense.dc.html +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/design/Hover.dc.html +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/design/Main.dc.html +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/design/Quiet.dc.html +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/design/canvas.json +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/design/delegation-timeline.html +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/src/transcript_viewer/__init__.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/src/transcript_viewer/ai.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/src/transcript_viewer/cli.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/src/transcript_viewer/config.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/src/transcript_viewer/corpus.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/src/transcript_viewer/fetch.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/src/transcript_viewer/library.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/src/transcript_viewer/store.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/src/transcript_viewer/viewer.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/fixtures/big-command.json +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_ai.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_cli.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_config.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_corpus.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_fetch.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_library.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_page.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_readme.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_store.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_stream.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_style.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_tidiness.py +0 -0
- {transcript_viewer-0.14.0 → transcript_viewer-0.14.1}/tests/test_viewer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: transcript-viewer
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.1
|
|
4
4
|
Summary: Browse agent transcripts in a local, dependency-free web viewer.
|
|
5
5
|
License: MIT
|
|
6
6
|
Requires-Python: >=3.12
|
|
@@ -179,17 +179,16 @@ If that directory is still there, the first run moves it to
|
|
|
179
179
|
`~/.transcript-viewer` — index, annotations and stored keys together — and says
|
|
180
180
|
so. Nothing is left behind and nothing is copied twice.
|
|
181
181
|
|
|
182
|
-
A run that delegated shows what it farmed out, above its steps, as a
|
|
183
|
-
or a **
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
that never did two things at a time. Either way a subagent is called what it was asked to
|
|
182
|
+
A run that delegated shows what it farmed out, above its steps, as a
|
|
183
|
+
**timeline** or a **list**. The timeline leads: a row is shared by everything
|
|
184
|
+
that did not overlap, so a second row exists only because two things ran at
|
|
185
|
+
once. Thirty subagents in one session pack into eight rows, and a session of
|
|
186
|
+
fifteen packs into one, which is the honest picture of a run that never did two
|
|
187
|
+
things at a time.
|
|
188
|
+
|
|
189
|
+
The list is one chip away, and carries what a chart cannot: the task, the kind,
|
|
190
|
+
the steps, how long it took and the tools it reached for, sorted however you
|
|
191
|
+
ask. Whichever you pick is remembered. Either way a subagent is called what it was asked to
|
|
193
192
|
do — "Review backend for bugs and DRY" rather than "general-purpose" — wherever
|
|
194
193
|
that was written down, which is 50 of the 53 Claude Code subagents here; the
|
|
195
194
|
kind is the fallback, and reads as a handle rather than as prose so the
|
|
@@ -166,17 +166,16 @@ If that directory is still there, the first run moves it to
|
|
|
166
166
|
`~/.transcript-viewer` — index, annotations and stored keys together — and says
|
|
167
167
|
so. Nothing is left behind and nothing is copied twice.
|
|
168
168
|
|
|
169
|
-
A run that delegated shows what it farmed out, above its steps, as a
|
|
170
|
-
or a **
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
that never did two things at a time. Either way a subagent is called what it was asked to
|
|
169
|
+
A run that delegated shows what it farmed out, above its steps, as a
|
|
170
|
+
**timeline** or a **list**. The timeline leads: a row is shared by everything
|
|
171
|
+
that did not overlap, so a second row exists only because two things ran at
|
|
172
|
+
once. Thirty subagents in one session pack into eight rows, and a session of
|
|
173
|
+
fifteen packs into one, which is the honest picture of a run that never did two
|
|
174
|
+
things at a time.
|
|
175
|
+
|
|
176
|
+
The list is one chip away, and carries what a chart cannot: the task, the kind,
|
|
177
|
+
the steps, how long it took and the tools it reached for, sorted however you
|
|
178
|
+
ask. Whichever you pick is remembered. Either way a subagent is called what it was asked to
|
|
180
179
|
do — "Review backend for bugs and DRY" rather than "general-purpose" — wherever
|
|
181
180
|
that was written down, which is 50 of the 53 Claude Code subagents here; the
|
|
182
181
|
kind is the fallback, and reads as a handle rather than as prose so the
|
|
@@ -2686,13 +2686,13 @@ function axisMarks(lo, hi) {
|
|
|
2686
2686
|
|
|
2687
2687
|
let LANES = [];
|
|
2688
2688
|
|
|
2689
|
-
/* Which of the two views the box is showing
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2689
|
+
/* Which of the two views the box is showing, remembered between runs. The
|
|
2690
|
+
timeline by default: packed, its rows carry the shape of the run and the
|
|
2691
|
+
parallelism in it at a glance, which is what the box is above the transcript
|
|
2692
|
+
for. The list is where the names and numbers are, one chip away. */
|
|
2693
2693
|
let LANEVIEW = (() => {
|
|
2694
|
-
try { return localStorage.getItem("transcript-viewer.delegation") || "
|
|
2695
|
-
catch (e) { return "
|
|
2694
|
+
try { return localStorage.getItem("transcript-viewer.delegation") || "time"; }
|
|
2695
|
+
catch (e) { return "time"; }
|
|
2696
2696
|
})();
|
|
2697
2697
|
|
|
2698
2698
|
function setLaneView(v) {
|
|
@@ -2338,13 +2338,32 @@ test("a second row exists only because two things ran at once", () => {
|
|
|
2338
2338
|
assert.deepStrictEqual(out.on, [0, 1], "the overlap is what made the row");
|
|
2339
2339
|
});
|
|
2340
2340
|
|
|
2341
|
-
test("the
|
|
2341
|
+
test("the timeline is what the box shows first", () => {
|
|
2342
|
+
// Nothing stored: the timeline, whose packed rows carry the shape of the run.
|
|
2343
|
+
const html = run(`
|
|
2344
|
+
localStorage.getItem = () => null;
|
|
2345
|
+
LANEVIEW = localStorage.getItem("transcript-viewer.delegation") || "time";
|
|
2346
|
+
return drawLanes(${JSON.stringify(TWO_AT_ONCE)});
|
|
2347
|
+
`);
|
|
2348
|
+
assert.match(html, /class="track"/, "the chart is drawn");
|
|
2349
|
+
assert.ok(!/class="lanelist"/.test(html));
|
|
2350
|
+
});
|
|
2351
|
+
|
|
2352
|
+
test("the list is one chip away, and shows what a chart cannot", () => {
|
|
2342
2353
|
const html = run(`LANEVIEW="list"; return drawLanes(${JSON.stringify(TWO_AT_ONCE)})`);
|
|
2343
2354
|
assert.match(html, /class="lanelist"/);
|
|
2344
2355
|
assert.match(html, /what it was asked to do/, "the task leads");
|
|
2345
2356
|
assert.ok(!/class="track"/.test(html), "and no chart is drawn");
|
|
2346
2357
|
});
|
|
2347
2358
|
|
|
2359
|
+
test("what was stored is what is shown", () => {
|
|
2360
|
+
const stored = run(`
|
|
2361
|
+
localStorage.getItem = (k) => (k === "transcript-viewer.delegation" ? "list" : null);
|
|
2362
|
+
return localStorage.getItem("transcript-viewer.delegation") || "time";
|
|
2363
|
+
`);
|
|
2364
|
+
assert.strictEqual(stored, "list", "a choice made once is kept");
|
|
2365
|
+
});
|
|
2366
|
+
|
|
2348
2367
|
test("the list names each one and says what it cost", () => {
|
|
2349
2368
|
const html = run(`LANEVIEW="list"; return drawLanes(${JSON.stringify(TWO_AT_ONCE)})`);
|
|
2350
2369
|
assert.match(html, /find the theme/, "the task, where there was one");
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|