linersh 0.5.3 → 0.5.5
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.
- package/README.md +45 -16
- package/bin/liner.js +125 -1
- package/cli-update-docs/ABOUT.md +1 -1
- package/cli-update-docs/AI-HANDOFF.md +154 -0
- package/cli-update-docs/JOB-STORY-MIGRATION.md +1 -1
- package/cli-update-docs/JTBD-MASTER-PROMPT-ABOUT.md +1 -1
- package/cli-update-docs/LINER-MASTER.md +546 -0
- package/cli-update-docs/MIXTAPE-FORMAT.md +2 -2
- package/cli-update-docs/PLATFORM.md +2 -2
- package/cli-update-docs/README.md +5 -5
- package/cli-update-docs/SKILL.md +3 -3
- package/cli-update-docs/TUI-BACKLOG.md +12 -12
- package/dist/App.js +15 -7
- package/dist/App.js.map +1 -1
- package/dist/agents/detect.js +50 -8
- package/dist/agents/detect.js.map +1 -1
- package/dist/agents/models.js +34 -0
- package/dist/agents/models.js.map +1 -0
- package/dist/agents/runner.js +138 -10
- package/dist/agents/runner.js.map +1 -1
- package/dist/config.js +65 -14
- package/dist/config.js.map +1 -1
- package/dist/ipc.js +9 -0
- package/dist/ipc.js.map +1 -1
- package/dist/phases.js +2 -2
- package/dist/phases.js.map +1 -1
- package/dist/screens/AgentSetup.js +8 -3
- package/dist/screens/AgentSetup.js.map +1 -1
- package/dist/screens/CompileView.js +270 -16
- package/dist/screens/CompileView.js.map +1 -1
- package/dist/screens/JsSetup.js +77 -0
- package/dist/screens/JsSetup.js.map +1 -0
- package/dist/screens/PhaseRunner.js +87 -26
- package/dist/screens/PhaseRunner.js.map +1 -1
- package/dist/screens/ProcessManifest.js +1 -4
- package/dist/screens/ProcessManifest.js.map +1 -1
- package/dist/screens/ProjectHub.js +81 -26
- package/dist/screens/ProjectHub.js.map +1 -1
- package/dist/store.js.map +1 -1
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -23,7 +23,15 @@ For JavaScript-rendered pages, run the setup command from the same npm install:
|
|
|
23
23
|
liner setup-js
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
That command is idempotent and downloads the Playwright browser used for `render: js` and automatic JS-wall fallback. For debugging or local development, `LINER_BIN=/path/to/liner liner` overrides the bundled binary.
|
|
26
|
+
That command is idempotent and downloads the Playwright browser used for `render: js` and automatic JS-wall fallback (about 150MB). The TUI also offers this during first-run onboarding, and again from compile results if a source needs JS rendering. For debugging or local development, `LINER_BIN=/path/to/liner liner` overrides the bundled binary.
|
|
27
|
+
|
|
28
|
+
To reset a machine for clean testing, run:
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
liner uninstall --yes
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
This removes `~/.liner`, Playwright's Chromium cache, and npm's `_npx` execution cache. It does not delete your mixtape project folders. If you installed Liner globally, also run `npm uninstall -g linersh`.
|
|
27
35
|
|
|
28
36
|
## Run
|
|
29
37
|
|
|
@@ -46,7 +54,8 @@ LINER_DIR=~/mixtapes liner
|
|
|
46
54
|
| Key | Action |
|
|
47
55
|
|---|---|
|
|
48
56
|
| `↑` `↓` or `j` `k` | move selection |
|
|
49
|
-
| `enter` or `
|
|
57
|
+
| `enter` or `o` | open the selected mixtape hub |
|
|
58
|
+
| `e` | open the selected mixtape source editor |
|
|
50
59
|
| `n` | new mixtape (prompts for slug) |
|
|
51
60
|
| `c` | compile selected |
|
|
52
61
|
| `s` | share selected (zip to `.mixtape`) |
|
|
@@ -55,7 +64,21 @@ LINER_DIR=~/mixtapes liner
|
|
|
55
64
|
| `r` | refresh |
|
|
56
65
|
| `q` | quit |
|
|
57
66
|
|
|
58
|
-
###
|
|
67
|
+
### Project Hub
|
|
68
|
+
| Key | Action |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `↑` `↓` | select phase |
|
|
71
|
+
| `enter` | run/open the selected phase's primary action |
|
|
72
|
+
| `e` | edit the selected artifact by hand |
|
|
73
|
+
| `p` | open the process manifest |
|
|
74
|
+
| `s` | share the mixtape |
|
|
75
|
+
| `o` | open the project folder |
|
|
76
|
+
| `esc` | back |
|
|
77
|
+
| `q` | quit |
|
|
78
|
+
|
|
79
|
+
Completed mixtapes land in a ready state. If `MIXTAPE.md` is current, pressing `enter` on Compile opens the existing compile result instead of fetching sources again. Press `r` from the compile result screen to explicitly re-run/retry.
|
|
80
|
+
|
|
81
|
+
### Source Editor
|
|
59
82
|
| Key | Action |
|
|
60
83
|
|---|---|
|
|
61
84
|
| `t` `d` `u` | edit title / description / curator |
|
|
@@ -107,24 +130,29 @@ For `web` sources the URL is the load-bearing field; the type is auto-detected a
|
|
|
107
130
|
### Compile
|
|
108
131
|
| Key | Action |
|
|
109
132
|
|---|---|
|
|
133
|
+
| `↑` `↓` | scroll sources |
|
|
134
|
+
| `pgup` `pgdn` | jump through sources |
|
|
135
|
+
| `j` | install JS rendering support when the result says it is needed |
|
|
110
136
|
| `esc` | cancel running compile |
|
|
111
137
|
| `y` | copy compiled `MIXTAPE.md` to clipboard (`pbcopy` / `xclip`) |
|
|
112
138
|
| `s` | share the compiled mixtape (zip to `.mixtape`) |
|
|
113
|
-
| `
|
|
114
|
-
| `
|
|
139
|
+
| `o` | open the project folder |
|
|
140
|
+
| `r` | retry failed sources / re-run compile |
|
|
141
|
+
| `b` | back to hub |
|
|
142
|
+
| `q` | quit |
|
|
115
143
|
|
|
116
|
-
The compile writes `MIXTAPE.md` and `sources/NN-<slug>.md` files directly into the project folder. There's nothing to "save" afterwards — the artifacts are already on disk.
|
|
144
|
+
The compile writes `MIXTAPE.md` and `sources/NN-<slug>.md` files directly into the project folder. A partial compile is still treated as a usable finished state when `MIXTAPE.md` is written; the hub shows "compiled with warnings" and the compile result screen lists the remaining warnings. There's nothing to "save" afterwards — the artifacts are already on disk.
|
|
117
145
|
|
|
118
146
|
## Uninstalling
|
|
119
147
|
|
|
120
|
-
The TUI ships in the same `linersh` package as the CLI.
|
|
148
|
+
The TUI ships in the same `linersh` package as the CLI. For npm/npx installs, use the package uninstaller:
|
|
121
149
|
|
|
122
150
|
```sh
|
|
123
|
-
|
|
124
|
-
|
|
151
|
+
liner uninstall
|
|
152
|
+
liner uninstall --yes
|
|
125
153
|
```
|
|
126
154
|
|
|
127
|
-
It removes
|
|
155
|
+
It removes `~/.liner`, Playwright's Chromium cache, and npm's `_npx` execution cache. Your mixtape project folders are left alone. If you installed Liner globally, also run `npm uninstall -g linersh`. See the root [README — Uninstalling](../../README.md#uninstalling) for the manual recipe.
|
|
128
156
|
|
|
129
157
|
## Develop
|
|
130
158
|
|
|
@@ -149,16 +177,17 @@ LINER_BIN=/path/to/liner npm run dev
|
|
|
149
177
|
## Architecture
|
|
150
178
|
|
|
151
179
|
```
|
|
152
|
-
TapeBrowser
|
|
180
|
+
BootSplash ─────► TapeBrowser ──────► ProjectHub ──────┐
|
|
153
181
|
│ │
|
|
154
182
|
│ ImportPrompt ─────┤
|
|
155
183
|
│ │
|
|
184
|
+
├────► NewProjectWizard ─────┤
|
|
185
|
+
│ │
|
|
156
186
|
├────► TapeEditor ⇄ SourceModal
|
|
157
|
-
│
|
|
158
|
-
|
|
159
|
-
│
|
|
160
|
-
|
|
161
|
-
└────► (share/delete inline)
|
|
187
|
+
│ │
|
|
188
|
+
├────► PhaseRunner / gates / draft review
|
|
189
|
+
│ │
|
|
190
|
+
└────► CompileView (streams NDJSON from `liner compile --emit-events`)
|
|
162
191
|
```
|
|
163
192
|
|
|
164
193
|
State is global via `AppContext`. YAML is parsed and re-written in Node via the `yaml` package's `Document` API so user-written block comments survive edits. All folder operations (`init`, `compile`, `share`, `import`, `list`) go through the Python CLI as subprocesses — the TUI never reimplements them.
|
package/bin/liner.js
CHANGED
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
import { fileURLToPath } from "node:url";
|
|
10
10
|
import { createRequire } from "node:module";
|
|
11
11
|
import { spawn, spawnSync } from "node:child_process";
|
|
12
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
12
|
+
import { existsSync, readFileSync, rmSync } from "node:fs";
|
|
13
|
+
import { homedir } from "node:os";
|
|
13
14
|
import { dirname, join } from "node:path";
|
|
14
15
|
|
|
15
16
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
@@ -26,6 +27,11 @@ if (argv[0] === "--version" || argv[0] === "-v") {
|
|
|
26
27
|
process.exit(0);
|
|
27
28
|
}
|
|
28
29
|
|
|
30
|
+
if (argv[0] === "uninstall") {
|
|
31
|
+
const code = await runUninstall(argv.slice(1));
|
|
32
|
+
process.exit(code);
|
|
33
|
+
}
|
|
34
|
+
|
|
29
35
|
const CLI_COMMANDS = new Set([
|
|
30
36
|
"init",
|
|
31
37
|
"replay",
|
|
@@ -129,6 +135,124 @@ function resolveCliBinary() {
|
|
|
129
135
|
process.exit(1);
|
|
130
136
|
}
|
|
131
137
|
|
|
138
|
+
async function runUninstall(args) {
|
|
139
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
140
|
+
console.log(
|
|
141
|
+
[
|
|
142
|
+
"Usage: liner uninstall [--yes] [--dry-run]",
|
|
143
|
+
"",
|
|
144
|
+
"Remove local Liner traces for a clean reinstall/test:",
|
|
145
|
+
" - ~/.liner config and source cache",
|
|
146
|
+
" - Playwright's Chromium browser cache",
|
|
147
|
+
" - npm's npx execution cache (_npx)",
|
|
148
|
+
"",
|
|
149
|
+
"This does not delete your mixtape project folders.",
|
|
150
|
+
"For global installs, also run: npm uninstall -g linersh",
|
|
151
|
+
].join("\n"),
|
|
152
|
+
);
|
|
153
|
+
return 0;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
const known = new Set(["--yes", "-y", "--dry-run"]);
|
|
157
|
+
const unknown = args.filter((arg) => !known.has(arg));
|
|
158
|
+
if (unknown.length > 0) {
|
|
159
|
+
console.error(`Unknown option: ${unknown.join(", ")}`);
|
|
160
|
+
console.error("Run `liner uninstall --help` for usage.");
|
|
161
|
+
return 1;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
const yes = args.includes("--yes") || args.includes("-y");
|
|
165
|
+
const dryRun = args.includes("--dry-run");
|
|
166
|
+
const targets = uninstallTargets();
|
|
167
|
+
|
|
168
|
+
console.error("liner uninstall will remove:");
|
|
169
|
+
for (const target of targets) {
|
|
170
|
+
console.error(` - ${target.label}: ${target.path}`);
|
|
171
|
+
}
|
|
172
|
+
console.error("");
|
|
173
|
+
console.error("It will not delete your mixtape project folders.");
|
|
174
|
+
|
|
175
|
+
if (!yes && !dryRun) {
|
|
176
|
+
if (!process.stdin.isTTY) {
|
|
177
|
+
console.error("Refusing to run without a TTY prompt. Re-run with --yes.");
|
|
178
|
+
return 1;
|
|
179
|
+
}
|
|
180
|
+
const { createInterface } = await import("node:readline/promises");
|
|
181
|
+
const rl = createInterface({ input: process.stdin, output: process.stderr });
|
|
182
|
+
const answer = (await rl.question("Continue? [y/N] ")).trim().toLowerCase();
|
|
183
|
+
rl.close();
|
|
184
|
+
if (answer !== "y" && answer !== "yes") {
|
|
185
|
+
console.error("Cancelled.");
|
|
186
|
+
return 1;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
let failed = false;
|
|
191
|
+
for (const target of targets) {
|
|
192
|
+
if (dryRun) {
|
|
193
|
+
console.error(`[dry-run] would remove ${target.path}`);
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
rmSync(target.path, { recursive: true, force: true });
|
|
198
|
+
console.error(`Removed ${target.path}`);
|
|
199
|
+
} catch (err) {
|
|
200
|
+
failed = true;
|
|
201
|
+
console.error(`Failed to remove ${target.path}: ${err.message}`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (dryRun) {
|
|
206
|
+
console.error("Dry run complete.");
|
|
207
|
+
return 0;
|
|
208
|
+
}
|
|
209
|
+
if (failed) return 1;
|
|
210
|
+
console.error("Liner local state and caches removed.");
|
|
211
|
+
console.error("For a global install, finish with: npm uninstall -g linersh");
|
|
212
|
+
return 0;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
function uninstallTargets() {
|
|
216
|
+
const home = homedir();
|
|
217
|
+
return [
|
|
218
|
+
{
|
|
219
|
+
label: "Liner config and source cache",
|
|
220
|
+
path: join(home, ".liner"),
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
label: "Playwright Chromium cache",
|
|
224
|
+
path: playwrightCachePath(home),
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
label: "npm npx execution cache",
|
|
228
|
+
path: join(npmCachePath(home), "_npx"),
|
|
229
|
+
},
|
|
230
|
+
];
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
function npmCachePath(home) {
|
|
234
|
+
const npm = spawnSync("npm", ["config", "get", "cache"], {
|
|
235
|
+
encoding: "utf8",
|
|
236
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
237
|
+
});
|
|
238
|
+
const configured = npm.status === 0 ? npm.stdout.trim() : "";
|
|
239
|
+
if (configured) return configured;
|
|
240
|
+
if (process.platform === "win32") {
|
|
241
|
+
return join(process.env.LOCALAPPDATA || join(home, "AppData", "Local"), "npm-cache");
|
|
242
|
+
}
|
|
243
|
+
return join(home, ".npm");
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
function playwrightCachePath(home) {
|
|
247
|
+
if (process.platform === "darwin") {
|
|
248
|
+
return join(home, "Library", "Caches", "ms-playwright");
|
|
249
|
+
}
|
|
250
|
+
if (process.platform === "win32") {
|
|
251
|
+
return join(process.env.LOCALAPPDATA || join(home, "AppData", "Local"), "ms-playwright");
|
|
252
|
+
}
|
|
253
|
+
return join(process.env.XDG_CACHE_HOME || join(home, ".cache"), "ms-playwright");
|
|
254
|
+
}
|
|
255
|
+
|
|
132
256
|
function findBundledBinary() {
|
|
133
257
|
const require = createRequire(import.meta.url);
|
|
134
258
|
const target = `linersh-${process.platform}-${process.arch}`;
|
package/cli-update-docs/ABOUT.md
CHANGED
|
@@ -62,7 +62,7 @@ A curator who learns the methodology can apply it with or without Liner's tools.
|
|
|
62
62
|
|
|
63
63
|
## Project status
|
|
64
64
|
|
|
65
|
-
Active development. The CLI and TUI are both functional
|
|
65
|
+
Active development. The CLI and TUI are both functional and published on npm (current release v0.5.5, Mac, Linux, and Windows x64). Both support the full v1.1 tape format — `youtube`, `web`, and `local_file` sources, with optional Playwright-backed JavaScript rendering for sites that need it (`liner setup-js`, surfaced by the TUI during onboarding and compile warnings). The TUI now treats compilation as the completion milestone and opens existing compile results instead of rerunning by default. The library is empty pending its first methodology-mode entries. The `curating-mixtapes` skill ships inside the TUI package; the MCP server is planned. Maintained as a side project — see [PLATFORM.md](./PLATFORM.md) for the maintenance contract.
|
|
66
66
|
|
|
67
67
|
## License
|
|
68
68
|
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Liner AI Handoff
|
|
2
|
+
|
|
3
|
+
Last updated: 2026-05-31
|
|
4
|
+
|
|
5
|
+
This handoff summarizes the current Liner state after the 0.5.5 TUI/testing pass. It is intended for any AI agent continuing the work without the full chat history.
|
|
6
|
+
|
|
7
|
+
## Current Product State
|
|
8
|
+
|
|
9
|
+
- `linersh@0.5.5` is the active TUI release candidate.
|
|
10
|
+
- The Python core source is now versioned `0.5.5`; publish matching `linersh-*@0.5.5` platform packages before publishing `linersh@0.5.5`.
|
|
11
|
+
- Platform packages are available for macOS arm64/x64, Linux arm64/x64, and Windows x64.
|
|
12
|
+
- The TUI is installed/tested locally from the packed tarball in `/tmp/liner-playwright-test`.
|
|
13
|
+
- The main tested mixtape is `staff-design-engenieer` (typo preserved in the folder name).
|
|
14
|
+
|
|
15
|
+
## Important Local Paths
|
|
16
|
+
|
|
17
|
+
- Repo/worktree: `/Users/arturo/.codex/worktrees/44f8/liner`
|
|
18
|
+
- Original Liner project folder: `/Users/arturo/Documents/Projects/Youtube Grabber/liner`
|
|
19
|
+
- Original mixtapes folder: `/Users/arturo/Documents/Projects/Youtube Grabber/liner/mixtapes`
|
|
20
|
+
- CMD-UX copied mixtapes folder: `/Users/arturo/Documents/Projects/CMD-UX/Case Studies/mixtapes`
|
|
21
|
+
- Local TUI test install: `/tmp/liner-playwright-test`
|
|
22
|
+
- Tested mixtape now moved back to: `/Users/arturo/Documents/Projects/Youtube Grabber/liner/mixtapes/staff-design-engenieer`
|
|
23
|
+
|
|
24
|
+
## What Was Fixed In This Pass
|
|
25
|
+
|
|
26
|
+
- Skill bundle resolution for npm installs:
|
|
27
|
+
- TUI now resolves the bundled `cli-update-docs/SKILL.md` reliably from the installed package.
|
|
28
|
+
- `LINER_SKILL_PATH` can point either at the skill directory or at `SKILL.md`.
|
|
29
|
+
|
|
30
|
+
- Playwright/JS rendering onboarding:
|
|
31
|
+
- First-run TUI flow now asks whether to install JS rendering support after agent/model setup.
|
|
32
|
+
- Compile results that detect missing Chromium show a `JS rendering needed` callout.
|
|
33
|
+
- The callout says: `Some pages require headless Chromium to fetch correctly. Press j to run liner setup-js --yes (~150MB).`
|
|
34
|
+
- Pressing `j` runs setup and retries compile.
|
|
35
|
+
|
|
36
|
+
- Compile result UX:
|
|
37
|
+
- Long source lists use an internal viewport with `↑↓` and `pgup/pgdn`.
|
|
38
|
+
- PhaseRunner done screens use an internal viewport for the final response.
|
|
39
|
+
- Partial compiles now count as complete when `MIXTAPE.md` is written.
|
|
40
|
+
- The hub shows `Ready to use — compiled with warnings` when some sources failed.
|
|
41
|
+
- Pressing Enter on completed Compile opens the existing compile result instead of fetching again.
|
|
42
|
+
- Recompile/retry is explicit with `r` from CompileView.
|
|
43
|
+
|
|
44
|
+
- Web extraction fallback:
|
|
45
|
+
- `trafilatura` crashes are caught.
|
|
46
|
+
- Web handlers keep useful fallback text where possible and surface a soft warning instead of raw Python errors like `'NoneType' object is not subscriptable`.
|
|
47
|
+
|
|
48
|
+
- Clean reinstall:
|
|
49
|
+
- `liner uninstall` was added to the npm shim.
|
|
50
|
+
- It removes `~/.liner`, npm `_npx`, and Playwright Chromium cache.
|
|
51
|
+
- It does not remove mixtape project folders.
|
|
52
|
+
|
|
53
|
+
## Known Gotchas
|
|
54
|
+
|
|
55
|
+
- The tested mixtape folder is misspelled `staff-design-engenieer`; do not silently rename it unless the user asks, because existing references and copied paths use that spelling.
|
|
56
|
+
- `LINER_BIN` matters during local testing. To test TUI changes plus local Python handler fixes, run the TUI with:
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
cd /tmp/liner-playwright-test
|
|
60
|
+
LINER_BIN=/Users/arturo/.codex/worktrees/44f8/liner/.venv/bin/liner ./node_modules/.bin/liner
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
- Running `./node_modules/.bin/liner` without `LINER_BIN` uses the bundled platform binary, which may not include local Python source edits until platform packages are rebuilt.
|
|
64
|
+
- The TUI package generated `packages/tui/cli-update-docs/` during `prepack`; the canonical docs live at repo-root `cli-update-docs/`.
|
|
65
|
+
- The old root `docs/` folder was removed. `LINER-MASTER.md` now lives at `cli-update-docs/LINER-MASTER.md`.
|
|
66
|
+
- The Jhey source URL currently 404s on the live site. The useful archived version is:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
https://web.archive.org/web/20250408204038id_/https://jhey.dev/cheep/rotating-gallery-with-css-scroll-driven-animations/
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Verification Already Run
|
|
73
|
+
|
|
74
|
+
TUI package:
|
|
75
|
+
|
|
76
|
+
```sh
|
|
77
|
+
cd /Users/arturo/.codex/worktrees/44f8/liner/packages/tui
|
|
78
|
+
npm run typecheck
|
|
79
|
+
npm run build
|
|
80
|
+
npm test
|
|
81
|
+
npm pack --json
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Python suite:
|
|
85
|
+
|
|
86
|
+
```sh
|
|
87
|
+
cd /Users/arturo/.codex/worktrees/44f8/liner
|
|
88
|
+
uv run --extra dev pytest
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Result from the latest full Python run in this pass: `179 passed, 1 skipped, 1 deselected`.
|
|
92
|
+
|
|
93
|
+
## Useful Test Commands
|
|
94
|
+
|
|
95
|
+
Install the local TUI tarball into the scratch project:
|
|
96
|
+
|
|
97
|
+
```sh
|
|
98
|
+
cd /tmp/liner-playwright-test
|
|
99
|
+
npm install /Users/arturo/.codex/worktrees/44f8/liner/packages/tui/linersh-0.5.5.tgz
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Run the TUI against the local Python core:
|
|
103
|
+
|
|
104
|
+
```sh
|
|
105
|
+
cd /tmp/liner-playwright-test
|
|
106
|
+
LINER_BIN=/Users/arturo/.codex/worktrees/44f8/liner/.venv/bin/liner ./node_modules/.bin/liner
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Force a fresh compile/fetch:
|
|
110
|
+
|
|
111
|
+
```sh
|
|
112
|
+
cd /tmp/liner-playwright-test
|
|
113
|
+
LINER_BIN=/Users/arturo/.codex/worktrees/44f8/liner/.venv/bin/liner ./node_modules/.bin/liner cache clear --yes
|
|
114
|
+
LINER_BIN=/Users/arturo/.codex/worktrees/44f8/liner/.venv/bin/liner ./node_modules/.bin/liner
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Run JS setup explicitly:
|
|
118
|
+
|
|
119
|
+
```sh
|
|
120
|
+
cd /tmp/liner-playwright-test
|
|
121
|
+
LINER_BIN=/Users/arturo/.codex/worktrees/44f8/liner/.venv/bin/liner ./node_modules/.bin/liner setup-js --yes
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Clean local state for reinstall testing:
|
|
125
|
+
|
|
126
|
+
```sh
|
|
127
|
+
liner uninstall --yes
|
|
128
|
+
npm uninstall -g linersh 2>/dev/null || true
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Documentation State
|
|
132
|
+
|
|
133
|
+
Canonical docs now live in `cli-update-docs/`:
|
|
134
|
+
|
|
135
|
+
- `LINER-MASTER.md` — current conceptual and technical overview.
|
|
136
|
+
- `AI-HANDOFF.md` — this document.
|
|
137
|
+
- `TUI-BACKLOG.md` — backlog and done log.
|
|
138
|
+
- `MIXTAPE-FORMAT.md` — tape/mixtape format.
|
|
139
|
+
- `CURATION.md` — methodology.
|
|
140
|
+
- `SKILL.md` and companion files — bundled curation skill.
|
|
141
|
+
|
|
142
|
+
Package-specific docs still live in `packages/tui/`:
|
|
143
|
+
|
|
144
|
+
- `packages/tui/README.md`
|
|
145
|
+
- `packages/tui/PUBLISH-CHECKLIST.md`
|
|
146
|
+
- `packages/tui/PLATFORM-BUNDLES.md`
|
|
147
|
+
|
|
148
|
+
## Suggested Next Work
|
|
149
|
+
|
|
150
|
+
- Publish/promote `linersh@0.5.5` once final smoke testing passes.
|
|
151
|
+
- Rebuild/publish all platform packages for `0.5.5`, then publish/promote `linersh@0.5.5`.
|
|
152
|
+
- Consider adding Wayback as an automatic fetcher tier between Playwright and agent-summary fallback.
|
|
153
|
+
- Add per-source failure actions in CompileView: open URL, drop source, retry one source.
|
|
154
|
+
- Add a regression test for completed Compile opening existing results rather than running `streamCompile`.
|
|
@@ -26,7 +26,7 @@ Until a real validator exists, the JTBD master prompt's internal rubric is the a
|
|
|
26
26
|
| `cli-update-docs/SKILL.md` | The `curating-mixtapes` skill's Phase 1 paragraph defines what a tight JTBD looks like. Replace examples and any embedded house-form templates. |
|
|
27
27
|
| `cli-update-docs/JTBD-MASTER-PROMPT.md` | Drop in the revised version from the previous turn. |
|
|
28
28
|
| `cli-update-docs/JTBD-MASTER-PROMPT-ABOUT.md` | Substantial rewrite. The current doc explicitly defends choosing the house form over Job Story as a deliberate deviation from the mixtape's synthesis. The new framing inverts: "we initially diverged, then realigned." Update §"Where it came from," the Liner's-house-form choice in §"Design choices worth understanding," and any other instances. |
|
|
29
|
-
| `docs/LINER-MASTER.md` | Project-level overview. Sweep for house-form references and example JTBDs. |
|
|
29
|
+
| `cli-update-docs/LINER-MASTER.md` | Project-level overview. Sweep for house-form references and example JTBDs. |
|
|
30
30
|
|
|
31
31
|
## Files to check (categories — likely exist, names not confirmed)
|
|
32
32
|
|
|
@@ -130,4 +130,4 @@ A few decisions in the prompt aren't obvious and have been pushed back on during
|
|
|
130
130
|
- The Liner curation methodology that places this work in Phase 1: [`cli-update-docs/CURATION.md`](./CURATION.md)
|
|
131
131
|
- The skill that will likely embed this prompt: [`cli-update-docs/SKILL.md`](./SKILL.md)
|
|
132
132
|
- The mixtape format spec defining the `jtbd:` field the prompt's output lands in: [`cli-update-docs/MIXTAPE-FORMAT.md`](./MIXTAPE-FORMAT.md)
|
|
133
|
-
- Project-level overview of Liner: [`
|
|
133
|
+
- Project-level overview of Liner: [`LINER-MASTER.md`](./LINER-MASTER.md)
|