feat: implement the CLI and Ink TUI #2
ci.yml
on: push
Commitlint
23s
Lint
31s
Typecheck
31s
Test
35s
Smoke test
31s
Attest SBOM and build provenance
0s
Matrix: publish-aliases
Annotations
2 errors
|
Commitlint
You have commit messages with errors
⧗ input: feat: implement the CLI and Ink TUI
27 commander subcommands wrapping documents.js's full conversion/editing/inspection surface: the 19 explicit <source>-to-<target> conversions plus a generic convert command (both built on the identical buildConversionAction factory over createLocalDocumentConverter), formats, odm-to-pdf (with --chapters-dir/--chapter chapter resolution), odb-to-xlsx/odb-to-csv/odb-tables, pdf-inspect, and tui. Shared runtime concerns -- one AbortController-backed signal with SIGINT/timeout handling, stdin/stdout '-' piping, a stderr-only diagnostic reporter so stdout stays reserved for converted bytes, and a five-tier exit-code scheme -- live in src/runtime/ and are used uniformly across every command.
An Ink-based interactive TUI (src/tui/) built on a stack-based screen router and a React Context + useReducer store, deliberately impure for every mutating action since documents.js's editors are live views over mutable XML with no new object reference to key a pure reducer off. Covers full navigate/edit/save for all six live-view editors (docx, pptx, odt, odp, ods, odg -- docx/odt and pptx/odp share components via paragraph-family.tsx/slide-family.tsx, mirroring how documents.js's own odp editor reuses odt's paragraph/run classes), plus read-only browsing for .odb tables and PDF structure, undo via bounded whole-document snapshots, search, a command palette, and PDF export with diagnostics that open their own panel automatically rather than waiting to be noticed.
src/cli.ts is the sole dispatch point between subcommand mode and the TUI, lazily importing the TUI module only once that branch is actually taken so a scripted conversion invocation never loads React or Ink. Both document-cli and doculi are published from one build; package.json's bin field lists both unconditionally so either published npm name installs both commands.
✖ body's lines must not be longer than 100 characters [body-max-line-length]
✖ found 1 problems, 0 warnings
ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
|
|
Test
Coverage upload failed: Coverage upload failed (HTTP 403): Code quality is not enabled for this repository. Enable code quality in your repository settings.. To treat upload errors as warnings, add 'fail-on-error: false' to the action inputs. See https://docs.github.com/en/code-security/how-tos/maintain-quality-code/set-up-code-coverage for more information.
|