linersh 0.5.7 → 1.0.0
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 +65 -165
- package/bin/liner.js +82 -44
- package/cli-update-docs/ABOUT.md +16 -16
- package/cli-update-docs/AI-HANDOFF.md +62 -204
- package/cli-update-docs/CURATION.md +48 -19
- package/cli-update-docs/JTBD-MASTER-PROMPT-ABOUT.md +9 -12
- package/cli-update-docs/JTBD-MASTER-PROMPT.md +1 -1
- package/cli-update-docs/LINER-MASTER.md +77 -63
- package/cli-update-docs/LINER-MD-PRD.md +531 -0
- package/cli-update-docs/MIXTAPE-FORMAT.md +76 -44
- package/cli-update-docs/PLATFORM.md +47 -46
- package/cli-update-docs/README.md +6 -6
- package/cli-update-docs/SKILL.md +72 -37
- package/cli-update-docs/TUI-BACKLOG.md +205 -26
- package/cli-update-docs/quality-check-tests.md +256 -8
- package/cli-update-docs/source-finding-tactics.md +140 -3
- package/cli-update-docs/source-quality-hierarchy.md +83 -0
- package/cli-update-docs/synthesis-guidance.md +19 -5
- package/dist/agents/artifact-validation.js +440 -0
- package/dist/agents/artifact-validation.js.map +1 -0
- package/dist/agents/candidate-longlist.js +100 -0
- package/dist/agents/candidate-longlist.js.map +1 -0
- package/dist/agents/detect.js +3 -2
- package/dist/agents/detect.js.map +1 -1
- package/dist/agents/evaluation-assembly.js +270 -0
- package/dist/agents/evaluation-assembly.js.map +1 -0
- package/dist/agents/headless-runner.js +227 -0
- package/dist/agents/headless-runner.js.map +1 -0
- package/dist/agents/jtbd-clarify.js +42 -41
- package/dist/agents/jtbd-clarify.js.map +1 -1
- package/dist/agents/models.js +6 -7
- package/dist/agents/models.js.map +1 -1
- package/dist/agents/prompts.js +220 -20
- package/dist/agents/prompts.js.map +1 -1
- package/dist/agents/runner.js +462 -21
- package/dist/agents/runner.js.map +1 -1
- package/dist/phases.js +13 -13
- package/dist/phases.js.map +1 -1
- package/dist/source-inbox.js +297 -0
- package/dist/source-inbox.js.map +1 -0
- package/dist/version.js +3 -9
- package/dist/version.js.map +1 -1
- package/dist/yaml-io.js +42 -11
- package/dist/yaml-io.js.map +1 -1
- package/package.json +26 -23
- package/cli-update-docs/JOB-STORY-MIGRATION.md +0 -99
- package/dist/App.js +0 -220
- package/dist/App.js.map +0 -1
- package/dist/colors.js +0 -132
- package/dist/colors.js.map +0 -1
- package/dist/components/Header.js +0 -15
- package/dist/components/Header.js.map +0 -1
- package/dist/components/KeyHints.js +0 -17
- package/dist/components/KeyHints.js.map +0 -1
- package/dist/components/LabeledBox.js +0 -53
- package/dist/components/LabeledBox.js.map +0 -1
- package/dist/components/NextSteps.js +0 -18
- package/dist/components/NextSteps.js.map +0 -1
- package/dist/index.js +0 -17
- package/dist/index.js.map +0 -1
- package/dist/screens/AgentSetup.js +0 -224
- package/dist/screens/AgentSetup.js.map +0 -1
- package/dist/screens/BootSplash.js +0 -163
- package/dist/screens/BootSplash.js.map +0 -1
- package/dist/screens/CompileView.js +0 -567
- package/dist/screens/CompileView.js.map +0 -1
- package/dist/screens/FramingConfirmReview.js +0 -197
- package/dist/screens/FramingConfirmReview.js.map +0 -1
- package/dist/screens/Gate1Review.js +0 -147
- package/dist/screens/Gate1Review.js.map +0 -1
- package/dist/screens/Gate2Review.js +0 -162
- package/dist/screens/Gate2Review.js.map +0 -1
- package/dist/screens/ImportPrompt.js +0 -173
- package/dist/screens/ImportPrompt.js.map +0 -1
- package/dist/screens/JsSetup.js +0 -77
- package/dist/screens/JsSetup.js.map +0 -1
- package/dist/screens/LocalFilePicker.js +0 -139
- package/dist/screens/LocalFilePicker.js.map +0 -1
- package/dist/screens/NewMixtapeWizard.js +0 -662
- package/dist/screens/NewMixtapeWizard.js.map +0 -1
- package/dist/screens/PhaseRunner.js +0 -1203
- package/dist/screens/PhaseRunner.js.map +0 -1
- package/dist/screens/ProcessManifest.js +0 -160
- package/dist/screens/ProcessManifest.js.map +0 -1
- package/dist/screens/ProjectHub.js +0 -557
- package/dist/screens/ProjectHub.js.map +0 -1
- package/dist/screens/SourceModal.js +0 -269
- package/dist/screens/SourceModal.js.map +0 -1
- package/dist/screens/TapeBrowser.js +0 -312
- package/dist/screens/TapeBrowser.js.map +0 -1
- package/dist/screens/TapeDraftReview.js +0 -444
- package/dist/screens/TapeDraftReview.js.map +0 -1
- package/dist/screens/TapeEditor.js +0 -310
- package/dist/screens/TapeEditor.js.map +0 -1
- package/dist/screens/cassette-art.js +0 -72
- package/dist/screens/cassette-art.js.map +0 -1
- package/dist/store.js +0 -10
- package/dist/store.js.map +0 -1
|
@@ -6,13 +6,13 @@ This document explains what Liner is, how it works, how it is built, how it is u
|
|
|
6
6
|
|
|
7
7
|
Liner is an open-source toolkit for building curated AI context bundles called **mixtapes**.
|
|
8
8
|
|
|
9
|
-
A
|
|
9
|
+
A Liner project is a folder. Its mixtape corpus lives under `mixtape/` in v2 projects and contains:
|
|
10
10
|
|
|
11
|
-
- a recipe, `tape.yaml`
|
|
12
|
-
- a curator synthesis, `synthesis.md`
|
|
13
|
-
- extracted source files in `sources/`
|
|
14
|
-
- optional working notes in `working/`
|
|
15
|
-
- a compiled master file, `MIXTAPE.md`
|
|
11
|
+
- a recipe, `mixtape/tape.yaml`
|
|
12
|
+
- a curator synthesis, `mixtape/synthesis.md`
|
|
13
|
+
- extracted source files in `mixtape/sources/`
|
|
14
|
+
- optional working notes in `mixtape/working/`
|
|
15
|
+
- a compiled master file, `mixtape/MIXTAPE.md`
|
|
16
16
|
|
|
17
17
|
The point is simple: AI systems are much better when they are given a thoughtful, domain-specific context bundle instead of a pile of random links or whatever happens to be in the model's training data.
|
|
18
18
|
|
|
@@ -43,7 +43,7 @@ That is what Liner does.
|
|
|
43
43
|
|
|
44
44
|
### Tape
|
|
45
45
|
|
|
46
|
-
A **tape** is the recipe. It lives in `tape.yaml
|
|
46
|
+
A **tape** is the recipe. It lives in `mixtape/tape.yaml` in v2 projects.
|
|
47
47
|
|
|
48
48
|
It names the mixtape, describes its purpose, identifies the curator, and lists the kept sources with notes, sections, and source metadata.
|
|
49
49
|
|
|
@@ -51,13 +51,13 @@ The tape is small and shareable. It can be edited by hand, stored in Git, review
|
|
|
51
51
|
|
|
52
52
|
### Mixtape
|
|
53
53
|
|
|
54
|
-
A **mixtape** is the
|
|
54
|
+
A **mixtape** is the corpus inside the project folder.
|
|
55
55
|
|
|
56
56
|
It includes the tape, the curator's synthesis, extracted source content, working notes, and compiled output.
|
|
57
57
|
|
|
58
58
|
### Consumable Mixtape
|
|
59
59
|
|
|
60
|
-
The **consumable mixtape** is what an AI actually reads: `MIXTAPE.md` plus the referenced files in `sources/`.
|
|
60
|
+
The **consumable mixtape** is what an AI actually reads: `mixtape/MIXTAPE.md` plus the referenced files in `mixtape/sources/`.
|
|
61
61
|
|
|
62
62
|
`MIXTAPE.md` contains the curator synthesis, a source index, and links to the extracted source files.
|
|
63
63
|
|
|
@@ -73,24 +73,30 @@ A compiled project folder looks like this:
|
|
|
73
73
|
|
|
74
74
|
```text
|
|
75
75
|
mobile-design-foundations/
|
|
76
|
-
|--
|
|
77
|
-
|--
|
|
78
|
-
|--
|
|
79
|
-
|--
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|--
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|-- 01-
|
|
87
|
-
|-- 02-
|
|
88
|
-
|
|
89
|
-
|--
|
|
90
|
-
`--
|
|
76
|
+
|-- liner.yaml
|
|
77
|
+
|-- LINER.md
|
|
78
|
+
|-- SKILL.md
|
|
79
|
+
|-- skills/
|
|
80
|
+
|-- working/
|
|
81
|
+
`-- mixtape/
|
|
82
|
+
|-- MIXTAPE.md
|
|
83
|
+
|-- tape.yaml
|
|
84
|
+
|-- synthesis.md
|
|
85
|
+
|-- sources/
|
|
86
|
+
| |-- 01-touch-target-size.md
|
|
87
|
+
| |-- 02-apple-gestures.md
|
|
88
|
+
| `-- ...
|
|
89
|
+
|-- local-sources/
|
|
90
|
+
| `-- touch-target-paper.pdf
|
|
91
|
+
`-- working/
|
|
92
|
+
|-- 01-jtbd-and-knowledge-map.md
|
|
93
|
+
|-- 02-candidate-longlist.md
|
|
94
|
+
|-- 03-evaluation.yaml
|
|
95
|
+
|-- 04-quality-checks.md
|
|
96
|
+
`-- 07-tape-draft.yaml
|
|
91
97
|
```
|
|
92
98
|
|
|
93
|
-
`tape.yaml` is the source recipe. `synthesis.md` is the curator's distilled framing. `sources/` contains extracted content. `working/` contains the curation trace. `MIXTAPE.md` is the compiled entry point.
|
|
99
|
+
`mixtape/tape.yaml` is the source recipe. `mixtape/synthesis.md` is the curator's distilled framing. `mixtape/sources/` contains extracted content. `mixtape/working/` contains the curation trace. `mixtape/MIXTAPE.md` is the compiled entry point.
|
|
94
100
|
|
|
95
101
|
## What Liner Is Good For
|
|
96
102
|
|
|
@@ -141,15 +147,15 @@ Use the Python CLI when you already have a project folder or prefer editing YAML
|
|
|
141
147
|
|
|
142
148
|
```sh
|
|
143
149
|
liner init mobile-design-foundations
|
|
144
|
-
# edit mobile-design-foundations/tape.yaml
|
|
145
|
-
# write mobile-design-foundations/synthesis.md
|
|
150
|
+
# edit mobile-design-foundations/mixtape/tape.yaml
|
|
151
|
+
# write mobile-design-foundations/mixtape/synthesis.md
|
|
146
152
|
liner compile mobile-design-foundations
|
|
147
153
|
```
|
|
148
154
|
|
|
149
155
|
The compile step fetches and extracts sources, then writes:
|
|
150
156
|
|
|
151
|
-
- `MIXTAPE.md`
|
|
152
|
-
- `sources/NN-*.md`
|
|
157
|
+
- `mixtape/MIXTAPE.md`
|
|
158
|
+
- `mixtape/sources/NN-*.md`
|
|
153
159
|
|
|
154
160
|
To share:
|
|
155
161
|
|
|
@@ -182,9 +188,9 @@ Use the `curating-mixtapes` skill when you want an AI assistant to run the curat
|
|
|
182
188
|
|
|
183
189
|
The skill produces a project folder with:
|
|
184
190
|
|
|
185
|
-
- `tape.yaml`
|
|
186
|
-
- `synthesis.md`
|
|
187
|
-
- `working/*` notes
|
|
191
|
+
- `mixtape/tape.yaml`
|
|
192
|
+
- `mixtape/synthesis.md`
|
|
193
|
+
- `mixtape/working/*` notes
|
|
188
194
|
|
|
189
195
|
The skill does not compile. After the skill finishes, run:
|
|
190
196
|
|
|
@@ -198,15 +204,17 @@ The current TUI-driven flow has six authoring phases plus Compile. The empirical
|
|
|
198
204
|
|
|
199
205
|
### Phase 1: Framing
|
|
200
206
|
|
|
201
|
-
Define the job-to-be-done
|
|
207
|
+
Define the job-to-be-done, capability brief, knowledge map, and required source roles.
|
|
202
208
|
|
|
203
209
|
The job-to-be-done is not the topic. "Mobile design" is a topic. *"When I'm designing the core UI of a consumer iOS app, I want to follow Apple's interaction conventions while choosing where to deviate visually, so I can ship something that feels native without looking generic"* is a job. The JTBD is written in Job Story form: `When [circumstance], I want [motivation], so I can [outcome].` See [CURATION.md](CURATION.md) Phase 1 and [JTBD-MASTER-PROMPT.md](JTBD-MASTER-PROMPT.md) for the full rubric.
|
|
204
210
|
|
|
211
|
+
The capability brief says what the corpus should make a downstream AI agent better at. Required source roles name the evidence types the corpus must satisfy before source discovery can proceed.
|
|
212
|
+
|
|
205
213
|
### Phase 2: Candidate Discovery
|
|
206
214
|
|
|
207
215
|
Gather more candidate sources than you expect to keep. This phase is about recall, not precision.
|
|
208
216
|
|
|
209
|
-
Good tactics include following citations, mining expert reading lists, searching course syllabi, checking official docs, and asking AI to critique gaps rather than invent sources.
|
|
217
|
+
Good tactics include following citations, mining expert reading lists, searching course syllabi, checking official docs, searching by required source role, and asking AI to critique gaps rather than invent sources.
|
|
210
218
|
|
|
211
219
|
### Phase 3: Evaluation
|
|
212
220
|
|
|
@@ -216,7 +224,7 @@ A kept source should have a specific role. The curator note should explain why t
|
|
|
216
224
|
|
|
217
225
|
### Phase 4: Quality Checks
|
|
218
226
|
|
|
219
|
-
Run tests for redundancy, coverage, disagreement, framing gaps, and source-
|
|
227
|
+
Run tests for redundancy, coverage, disagreement, framing gaps, source-kind balance, and required source-role fit.
|
|
220
228
|
|
|
221
229
|
This is where the methodology catches "good but narrow" corpora.
|
|
222
230
|
|
|
@@ -228,11 +236,11 @@ The synthesis is not a recap. It is the framing the AI should inherit before usi
|
|
|
228
236
|
|
|
229
237
|
### Phase 6: Assembly
|
|
230
238
|
|
|
231
|
-
Write the final `tape.yaml`, order the sources, and prepare for compile.
|
|
239
|
+
Write the final `mixtape/tape.yaml`, order the sources, and prepare for compile.
|
|
232
240
|
|
|
233
241
|
### Compile
|
|
234
242
|
|
|
235
|
-
Fetch every kept source, extract readable content, write `sources/`, and produce `MIXTAPE.md`.
|
|
243
|
+
Fetch every kept source, extract readable content, write `mixtape/sources/`, and produce `mixtape/MIXTAPE.md`.
|
|
236
244
|
|
|
237
245
|
The TUI treats compilation as the completion milestone. A partial compile is still a usable finished state when `MIXTAPE.md` is written; the hub shows "Ready to use — compiled with warnings" and pressing Enter on Compile opens the existing compile result instead of fetching again. Recompile is explicit with `r` from the compile result screen.
|
|
238
246
|
|
|
@@ -248,13 +256,13 @@ This is a methodology practice, not a driven step in the TUI. As of v0.5.2 the T
|
|
|
248
256
|
|
|
249
257
|
At a high level:
|
|
250
258
|
|
|
251
|
-
1. Parse and validate `tape.yaml`.
|
|
252
|
-
2. Read `synthesis.md`.
|
|
259
|
+
1. Parse and validate `mixtape/tape.yaml`.
|
|
260
|
+
2. Read `mixtape/synthesis.md`.
|
|
253
261
|
3. Fetch or load every source.
|
|
254
262
|
4. Extract readable content.
|
|
255
263
|
5. Use cached content when valid.
|
|
256
|
-
6. Write one file per source into `sources/`.
|
|
257
|
-
7. Write `MIXTAPE.md`.
|
|
264
|
+
6. Write one file per source into `mixtape/sources/`.
|
|
265
|
+
7. Write `mixtape/MIXTAPE.md`.
|
|
258
266
|
|
|
259
267
|
Supported source types:
|
|
260
268
|
|
|
@@ -274,7 +282,7 @@ If `trafilatura` itself crashes on a page, the web handlers now keep the source
|
|
|
274
282
|
|
|
275
283
|
YouTube sources use transcript fetching first and fall back through `yt-dlp` where possible.
|
|
276
284
|
|
|
277
|
-
Local files live under the project's `personal/` directory and can include Markdown, text, HTML, and PDFs.
|
|
285
|
+
Local files live under the project's `local-sources/` directory or the legacy `personal/` directory and can include Markdown, text, HTML, and PDFs.
|
|
278
286
|
|
|
279
287
|
## How Sharing Works
|
|
280
288
|
|
|
@@ -286,9 +294,9 @@ The archive can include:
|
|
|
286
294
|
- synthesis
|
|
287
295
|
- source files
|
|
288
296
|
- working notes
|
|
289
|
-
-
|
|
297
|
+
- local source files, unless excluded
|
|
290
298
|
|
|
291
|
-
Because compiled source content may include copyrighted or private material, a curator can share just the recipe or exclude
|
|
299
|
+
Because compiled source content may include copyrighted or private material, a curator can share just the recipe or exclude local/source content depending on the audience.
|
|
292
300
|
|
|
293
301
|
`liner import <archive>` unpacks a `.mixtape` and can refetch sources locally.
|
|
294
302
|
|
|
@@ -315,24 +323,27 @@ Important areas:
|
|
|
315
323
|
- `src/liner/share.py` handles `.mixtape` archives.
|
|
316
324
|
- `src/liner/manifest.py` aggregates process metadata from agent runs.
|
|
317
325
|
|
|
318
|
-
The Python
|
|
326
|
+
The Python core can still be installed directly for development or fallback testing:
|
|
319
327
|
|
|
320
328
|
```sh
|
|
321
329
|
pipx install linersh
|
|
322
330
|
```
|
|
323
331
|
|
|
324
|
-
###
|
|
332
|
+
### Terminal UI
|
|
325
333
|
|
|
326
|
-
The TUI is a
|
|
334
|
+
The active TUI is a Charm-based Go application in `packages/go-tui`.
|
|
335
|
+
`packages/tui` is still the npm package/shim plus the TypeScript headless
|
|
336
|
+
methodology runner; it is no longer the React/Ink TUI implementation. The old
|
|
337
|
+
React/Ink UI is archived for reference under `ink/`.
|
|
327
338
|
|
|
328
339
|
Important areas:
|
|
329
340
|
|
|
330
|
-
- `packages/tui/
|
|
331
|
-
- `packages/tui/
|
|
341
|
+
- `packages/go-tui/cmd/liner-tui/` starts the active terminal app.
|
|
342
|
+
- `packages/go-tui/internal/app/` owns screen routing, key handling, and UI rendering.
|
|
332
343
|
- `packages/tui/src/yaml-io.ts` reads and writes `tape.yaml`.
|
|
333
344
|
- `packages/tui/src/bin-resolver.ts` finds the Python core.
|
|
334
345
|
- `packages/tui/src/agents/` runs and parses agent-backed methodology phases.
|
|
335
|
-
- `packages/tui/
|
|
346
|
+
- `packages/go-tui/internal/core/` streams compile progress from the Python CLI.
|
|
336
347
|
|
|
337
348
|
The TUI does not reimplement core compile/share/import behavior. It shells out to the Python core and reads structured progress events.
|
|
338
349
|
|
|
@@ -350,7 +361,7 @@ It contains the TUI plus a small `bin/liner.js` shim. Platform-specific Python b
|
|
|
350
361
|
|
|
351
362
|
This follows the native-binary package pattern used by many developer tools: install the lightweight main package, let npm select the platform package that matches the host, then run the bundled binary.
|
|
352
363
|
|
|
353
|
-
**Windows status
|
|
364
|
+
**Windows status:** npm support includes `linersh-win32-x64` as an optional dependency alongside macOS and Linux packages.
|
|
354
365
|
|
|
355
366
|
The shim behavior:
|
|
356
367
|
|
|
@@ -375,11 +386,13 @@ Validation:
|
|
|
375
386
|
python3 scripts/validate-platform-package.py --pack-dry-run
|
|
376
387
|
```
|
|
377
388
|
|
|
378
|
-
The GitHub workflow `.github/workflows/platform-bundles.yml` builds
|
|
389
|
+
The GitHub workflow `.github/workflows/platform-bundles.yml` builds platform
|
|
390
|
+
package artifacts on manual dispatch. Publish manually only after all platform
|
|
391
|
+
artifacts and the clean consumer release smoke pass.
|
|
379
392
|
|
|
380
393
|
### The Skill Bundle
|
|
381
394
|
|
|
382
|
-
The skill bundle lives in `
|
|
395
|
+
The tracked skill bundle lives in `docs/curation-skill/`.
|
|
383
396
|
|
|
384
397
|
It encodes the curation methodology as executable instructions for an AI assistant. It is not the same thing as the CLI or TUI. It is one surface for producing Liner project folders.
|
|
385
398
|
|
|
@@ -448,7 +461,7 @@ sources:
|
|
|
448
461
|
section: foundations
|
|
449
462
|
|
|
450
463
|
- type: local_file
|
|
451
|
-
path:
|
|
464
|
+
path: local-sources/touch-target-paper.pdf
|
|
452
465
|
citation: "Parhi et al., 'Target Size for One-Handed Thumb Use,' Mobile HCI 2006."
|
|
453
466
|
note: The canonical empirical study behind the 44pt minimum.
|
|
454
467
|
section: evidence
|
|
@@ -461,8 +474,8 @@ sources:
|
|
|
461
474
|
liner init mobile-design-foundations
|
|
462
475
|
|
|
463
476
|
# Edit the recipe and synthesis.
|
|
464
|
-
$EDITOR mobile-design-foundations/tape.yaml
|
|
465
|
-
$EDITOR mobile-design-foundations/synthesis.md
|
|
477
|
+
$EDITOR mobile-design-foundations/mixtape/tape.yaml
|
|
478
|
+
$EDITOR mobile-design-foundations/mixtape/synthesis.md
|
|
466
479
|
|
|
467
480
|
# Enable JS rendering if needed.
|
|
468
481
|
liner setup-js
|
|
@@ -471,7 +484,7 @@ liner setup-js
|
|
|
471
484
|
liner compile mobile-design-foundations
|
|
472
485
|
|
|
473
486
|
# Use it in an AI conversation.
|
|
474
|
-
# Paste MIXTAPE.md and selected files from sources/.
|
|
487
|
+
# Paste mixtape/MIXTAPE.md and selected files from mixtape/sources/.
|
|
475
488
|
|
|
476
489
|
# Share it.
|
|
477
490
|
liner share mobile-design-foundations
|
|
@@ -524,23 +537,24 @@ Liner's methodology exists to catch these before compile.
|
|
|
524
537
|
|
|
525
538
|
## Project Status
|
|
526
539
|
|
|
527
|
-
As of
|
|
540
|
+
As of v1.0.0:
|
|
528
541
|
|
|
529
542
|
- The Python CLI is functional.
|
|
530
|
-
- The
|
|
543
|
+
- The active Go TUI is functional. The old React/Ink TUI is decommissioned and archived under `ink/`. The empirical-test phase has been removed from the driven flow — compilation is now the completion milestone (*compiled = complete*). The hub is a single summary view (status box + always-visible phase checklist), import uses a file picker for `.mixtape` archives, and completed/partial compiles open the existing compile result instead of rerunning by default.
|
|
544
|
+
- Phase 1 framing now validates the evidence plan before source discovery. The TUI requires a capability brief and required source roles with why/evidence/minimum coverage before advancing.
|
|
531
545
|
- The npm distribution uses a main `linersh` package plus five optional platform packages (`darwin-arm64`, `darwin-x64`, `linux-arm64`, `linux-x64`, `win32-x64`).
|
|
532
546
|
- The release is installable via `npx linersh` on Mac, Linux, and Windows x64. `liner --version` reports the TUI version (and the bundled core version alongside it).
|
|
533
547
|
- JavaScript-rendered web support is available through `liner setup-js`; the TUI prompts for it during first-run onboarding and from compile warnings when Chromium is missing.
|
|
534
548
|
- `liner uninstall` exists for clean local reinstall tests.
|
|
535
|
-
- The curation skill exists and
|
|
549
|
+
- The curation skill exists, ships with the TUI package, and supports Claude or Codex as the local runner.
|
|
536
550
|
- The MCP server, hosted web builder, and public library are planned.
|
|
537
551
|
|
|
538
552
|
## Where To Read Next
|
|
539
553
|
|
|
540
554
|
- Root README: `README.md`
|
|
541
|
-
- Curation methodology: `
|
|
542
|
-
- Mixtape format: `
|
|
543
|
-
- Skill bundle: `
|
|
555
|
+
- Curation methodology: `docs/curation-skill/CURATION.md`
|
|
556
|
+
- Mixtape format: `docs/curation-skill/MIXTAPE-FORMAT.md`
|
|
557
|
+
- Skill bundle: `docs/curation-skill/SKILL.md`
|
|
544
558
|
- TUI docs: `packages/tui/README.md`
|
|
545
559
|
- Platform binary packaging: `packages/tui/PLATFORM-BUNDLES.md`
|
|
546
560
|
- Publish checklist: `packages/tui/PUBLISH-CHECKLIST.md`
|