3.6 KiB
3.6 KiB
Created
Created by tickets.sh create.
Decision
Decision note from discussion:
- Short-term direction: keep adding headless commands to the existing user-facing
insomniabinary owned by the currenttuicrate. - Product preference: a single standalone
insomniabinary is easier to distribute and explain than many small binaries. - Known tradeoff: headless commands inherit TUI dependencies such as ratatui/crossterm. This is acceptable until binary size/startup/runtime memory is measured as a real problem.
- Internal structure should still separate headless command dispatch from terminal/TUI initialization.
- Future cleanup: consider renaming the Cargo package/crate from
tuitoinsomnia; treat it as part of this ticket only if the scope remains contained.
Decision
Revised decision from user discussion:
- The intended single-binary work is not merely “put headless subcommands in the existing
insomniabinary”; it is to migrate the currentinsomnia+insomnia-podtwo-binary architecture toward one primary executable. - Pod runtime should remain a separate process. The unification is at the executable/entrypoint/packaging level.
insomnia-poddoes not need to remain as a long-term alias. It was not designed as a human-facing command.- Prefer a normal subcommand
insomnia pod ...for Pod runtime startup instead of a hidden__pod-runtimecommand. tuipackage/crate rename remains separate from binary unification unless it becomes necessary.
Initial implementation should start by extracting the Pod runtime into a library entrypoint and adding insomnia pod ...; subsequent steps can migrate spawn defaults and remove insomnia-pod from packaging.
Closed
Completed the umbrella migration from the previous two-command installed layout toward a single primary insomnia executable.
Completed phases:
insomnia-pod-subcommand-runtime: moved Pod runtime startup behindpod::entrypointand addedinsomnia pod ...dispatch.spawn-through-insomnia-pod-subcommand: changed internal spawn/restore defaults to typed runtime command resolution using current executable plus thepodprefix argument.remove-insomnia-pod-binary: removed the long-terminsomnia-podbinary/package/devshell/flake output.- Follow-up cleanup removed
INSOMNIA_POD_COMMANDandINSOMNIA_RESOURCE_DIR, keeping the runtime command/config surface narrower.
Outcome:
- The installed package exposes
bin/insomniaonly. insomnia pod ...is the Pod runtime entrypoint; Pods remain separate processes.- Internal spawn/restore uses typed command construction rather than shell string parsing.
insomnia-podis not kept as a compatibility alias.- Headless
insomnia memory lintbehavior remains part of theinsomniaCLI surface.
Validation/evidence across completed phases included:
insomnia pod --help- focused parser/spawn/restore tests
cargo fmt --checkcargo check -p tui -p pod -p clientnix build .#insomnia- checks that
bin/insomnia-podis absent ./tickets.sh doctorgit diff --check
Follow-up intentionally remains separate:
insomnia-crate-cli-ownernow tracks the architectural cleanup where theinsomniacrate owns the product CLI/binary entrypoint andtuibecomes a library implementation crate. That is not required for this umbrella's original single-installed-binary migration to be complete.