Commit graph

459 commits

Author SHA1 Message Date
Virgil
904a5c057b fix(cli): remove hidden chooser fallback
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 10:33:00 +00:00
Virgil
87513483e8 fix(cli): remove implicit chooser defaults
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 10:28:43 +00:00
Virgil
817bdea525 fix(cli): make legacy selection errors actionable
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 10:24:05 +00:00
Virgil
f71bdb3bf4 feat(cli): compile glyph shortcodes in rendered components
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 10:06:52 +00:00
Virgil
b8f3c9698a fix(cli): make command registration snapshot-safe
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 06:45:31 +00:00
Virgil
88ec9264a9 fix(cli): strip ANSI from static frame output
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 06:38:45 +00:00
Virgil
5c8f08b60e fix(cli): harden legacy select helpers
All checks were successful
Security Scan / security (push) Successful in 21s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 06:34:25 +00:00
Virgil
aa537c89ca fix(cli): make styled helpers nil-safe
Some checks are pending
Security Scan / security (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 06:30:14 +00:00
Virgil
a035cb2169 fix(cli): treat eof as empty multi-select
All checks were successful
Security Scan / security (push) Successful in 20s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 06:20:30 +00:00
Virgil
e96ea6d7c2 fix(cli): honor default selection in multi-select
All checks were successful
Security Scan / security (push) Successful in 22s
2026-04-02 06:15:59 +00:00
Virgil
43d4bbd2dc fix(cli): reprompt required prompts on empty input
All checks were successful
Security Scan / security (push) Successful in 23s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 06:10:37 +00:00
Virgil
a5142dea78 fix(cli): render glyphs in prompts and handle EOF
All checks were successful
Security Scan / security (push) Successful in 19s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 06:07:09 +00:00
Virgil
37310c7cbd fix(cli): avoid hanging prompts on EOF
All checks were successful
Security Scan / security (push) Successful in 24s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 06:01:35 +00:00
Virgil
e259ce323b fix(cli): make stream completion idempotent
All checks were successful
Security Scan / security (push) Successful in 20s
2026-04-02 05:30:17 +00:00
Virgil
323f408601 feat(cli): add ASCII table borders
All checks were successful
Security Scan / security (push) Successful in 23s
2026-04-02 05:26:20 +00:00
Virgil
8b30e80688 feat(cli): add ASCII glyph fallbacks for tree and tracker
All checks were successful
Security Scan / security (push) Successful in 21s
Co-authored-by: Virgil <virgil@lethean.io>
2026-04-02 05:23:01 +00:00
Virgil
e29b6e4889 fix(cli): make stream width handling rune-safe
Some checks are pending
Security Scan / security (push) Waiting to run
2026-04-02 05:13:07 +00:00
Virgil
cf9c068650 fix(cli): make width helpers rune-safe
All checks were successful
Security Scan / security (push) Successful in 22s
2026-04-02 05:09:09 +00:00
Virgil
dc30159392 fix(cli): render glyph shortcodes in output
All checks were successful
Security Scan / security (push) Successful in 22s
2026-04-02 05:02:35 +00:00
Virgil
7dadf41670 feat(cli): add string-to-string flag helpers
All checks were successful
Security Scan / security (push) Successful in 21s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 04:54:36 +00:00
Virgil
419e7f745b feat(cli): add formatted security log helper
All checks were successful
Security Scan / security (push) Successful in 19s
2026-04-02 04:47:42 +00:00
Virgil
4d127de05f feat(cli): add security log helper
All checks were successful
Security Scan / security (push) Successful in 21s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 04:43:57 +00:00
Virgil
9fd432aed3 fix(cli): support comma and range multi-select input
All checks were successful
Security Scan / security (push) Successful in 23s
2026-04-02 04:40:23 +00:00
Virgil
b1850124de fix(cli): accept comma-separated multi-select input
All checks were successful
Security Scan / security (push) Successful in 19s
2026-04-02 04:36:07 +00:00
Virgil
02d4ee74e6 feat(cli): add string array flag helpers
All checks were successful
Security Scan / security (push) Successful in 22s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 04:31:29 +00:00
Virgil
12496ba57c feat(cli): add external daemon stop helper
All checks were successful
Security Scan / security (push) Successful in 19s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 04:27:42 +00:00
Virgil
a2f27b9af4 feat(cli): add daemon lifecycle helper
All checks were successful
Security Scan / security (push) Successful in 20s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 04:22:22 +00:00
Virgil
f13c3bf095 fix: add go check to doctor
All checks were successful
Security Scan / security (push) Successful in 20s
2026-04-02 04:17:35 +00:00
Virgil
96aef54baf feat(cli): add filterable generic selection
All checks were successful
Security Scan / security (push) Successful in 25s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 04:13:45 +00:00
Virgil
4e258c80b1 feat(cli): add runtime run helpers
Some checks are pending
Security Scan / security (push) Waiting to run
2026-04-02 04:01:52 +00:00
Virgil
9c64f239a8 fix(cli): respect stdin overrides in prompts
All checks were successful
Security Scan / security (push) Successful in 20s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 03:57:06 +00:00
Virgil
c6fae794b3 fix(cli): load locale sources during registration
All checks were successful
Security Scan / security (push) Successful in 24s
2026-04-02 03:53:21 +00:00
Virgil
fcadba08b1 feat(pkg): support install refs in shorthand
Some checks are pending
Security Scan / security (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 03:47:53 +00:00
Virgil
27e44f069a fix(cli): reset stdin on nil override
All checks were successful
Security Scan / security (push) Successful in 20s
2026-04-02 03:42:16 +00:00
Virgil
d84d8cc838 feat: add persistent CLI flag helpers
All checks were successful
Security Scan / security (push) Successful in 17s
2026-04-01 09:43:59 +00:00
Virgil
9aff00de1e feat(pkg): add JSON output for pkg outdated
All checks were successful
Security Scan / security (push) Successful in 15s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 20:07:59 +00:00
Virgil
c74524bc58 chore: align check output with CLI wrappers
Some checks failed
Deploy / build (push) Failing after 5s
Security Scan / security (push) Successful in 21s
2026-03-30 06:15:24 +00:00
Snider
bcbc25974e fix(cli): resolve build errors and clean up stale API references
All checks were successful
Security Scan / security (pull_request) Successful in 18s
Remove orphaned daemon_cmd_test.go referencing undefined AddDaemonCommand/
DaemonCommandConfig symbols. Update docs to reflect current API types
(CommandSetup, core.Service). Restore .gitignore entries for dist/, .env,
and coverage artefacts. Extract appendLocales helper to deduplicate locale
registration. Fix test reset to clear registeredLocales for proper isolation.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-21 22:56:10 +00:00
Snider
92da6e8a73 refactor: migrate to dappco.re/go/core + Options{} API
Some checks failed
Deploy / build (push) Failing after 6s
Security Scan / security (push) Successful in 19s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-21 20:01:25 +00:00
Snider
542698c579 fix: update for CoreGO API — s.core.App → s.core.App().Runtime
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-18 12:19:03 +00:00
Snider
0c1b74c637 feat: auto-derive i18n keys from command names (Conclave pattern)
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 13s
commandService.applyI18n() walks registered commands and sets
Short/Long from cmd.{name}.short/long keys automatically. Downstream
packages no longer need to call i18n.T() for command descriptions —
the CLI Conclave handles it via service name derivation.

This is the Conclave pattern: services inside a sealed core.New()
auto-discover each other's capabilities via the lifecycle hooks.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 05:22:28 +00:00
Snider
d67295ad2a fix: attach commands after Core startup, disable go-build SDK conflict
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 14s
Commands now attach AFTER i18n service starts — translations resolve.
go-build imports commented out until kin-openapi dep conflict is fixed.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 02:00:43 +00:00
Snider
7e7b83cd70 feat: feed RegisteredLocales into i18n ExtraFS
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 13s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 01:45:41 +00:00
Snider
ee7e9d1abf feat: RegisterCommands accepts locale FS for automatic translation loading
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 15s
Both WithCommands() and RegisterCommands() now accept an optional
fs.FS for translations. The CLI collects them via RegisteredLocales()
and the i18n service loads them on startup.

Packages just pass their embed.FS — no i18n import needed:
  cli.RegisterCommands(AddDevCommands, locales.FS)

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 01:35:04 +00:00
Snider
bf994fab17 feat: embed CLI locale files, wire i18n ExtraFS
Some checks failed
Deploy / build (push) Failing after 7s
Security Scan / security (push) Successful in 20s
- Added locales/en.json with 90 translation keys for doctor, pkg commands
- Main() embeds CLI locales automatically
- MainWithLocales() accepts additional FSSource for consuming binaries
- Ecosystem packages can ship their own locale files

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 00:28:52 +00:00
Snider
2efcbd59ec refactor: move I18nService to go-i18n, simplify log wrapper
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 13s
I18nService now lives in go-i18n as NewCoreService() — any binary can
use it without importing cli. Log convenience functions use go-log
directly. Removed LogService/NewLogService/daemon_cmd wrappers.

Root go.mod: 1 direct forge dep (core/go).

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 16:24:12 +00:00
Snider
55b556d1af refactor: split library from binary, remove ecosystem commands
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 13s
core/cli is now a pure library (pkg/cli). The binary moves to
cmd/core/ as a separate sub-module with its own go.mod.

Removed from binary: gocmd (→ lint/go-build), service (→ go-process),
session (→ go-session), module (→ go-scm), plugin (→ go-scm).
Removed from framework: go-crypt, workspace, daemon_cmd.

Root go.mod: 1 direct forge dep (core/go). Cross-compiles CGO_ENABLED=0.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 16:14:40 +00:00
Snider
76cd3a5306 refactor: code quality improvements from Gemini review
Some checks failed
Deploy / build (push) Failing after 4s
Security Scan / security (push) Successful in 13s
- Split frame.go: extract built-in components to frame_components.go
- Replace custom indexOf with strings.Index in frame_test.go
- Make prompt.go testable: accept io.Reader via SetStdin, add tests
- Decompose runGoQA: extract emitQAJSON and emitQASummary helpers
- DRY: centralise loadConfig into cmd/config/cmd.go
- Remove hardcoded MACOSX_DEPLOYMENT_TARGET from test/fuzz/cov commands
- Add error assertions to coverage_test.go

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 15:29:44 +00:00
Snider
48c3f08bcb fix: use Signal(0) for process polling in daemonRunStop
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 12s
Consistent with cmd/service stopDaemon — polls process directly
instead of PID file removal to avoid PID reuse false positives.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 15:16:20 +00:00
Snider
10a1c8ce07 refactor: remove daemon types moved to go-process, keep Mode/DetectMode
Some checks failed
Deploy / build (push) Failing after 3s
Security Scan / security (push) Successful in 20s
Remove PIDFile, HealthServer, Daemon, DaemonOptions, HealthCheck,
Run, and RunWithTimeout from daemon.go — all now live in go-process.
Retain Mode type (ModeInteractive/ModePipe/ModeDaemon), DetectMode(),
IsTTY(), IsStdinTTY(), and IsStderrTTY() as CLI-specific helpers.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-09 14:14:54 +00:00