Commit Graph
108 Commits
Author SHA1 Message Date
fraujulian 18d884bbe7 test(update): cover saved choices and unattended quick previews 2026-09-16 19:18:25 +02:00
fraujulian e62609d433 feat(update): reuse saved choices with quick mode 2026-09-16 19:18:25 +02:00
fraujulian f0fd4349c2 feat(install): remember successful installation choices 2026-09-16 19:18:25 +02:00
fraujulian 3a5790e67c feat(selection): persist validated update preferences atomically 2026-09-16 19:18:24 +02:00
fraujulian 50cb82074e feat(statusline): show compact colored context and token metrics 2026-09-16 19:18:24 +02:00
fraujulian c92ae50e30 test(plugins): cover installed plugin preselection 2026-09-16 19:18:23 +02:00
fraujulian 122cbba9b7 fix(plugins): correct navigation keys and menu encoding 2026-09-16 19:18:23 +02:00
fraujulian c749fcd792 fix(install): preserve codex plugin registrations during sync 2026-09-16 19:18:22 +02:00
Julian lechner c6c8bf7105 feat: add keyboard plugin selection
CI / linux (push) Failing after 11s
2026-09-16 17:37:53 +02:00
Julian lechner 9b5e862d8a feat: persist compact session state 2026-09-16 17:37:48 +02:00
Julian lechner a509509192 feat: add local session telemetry 2026-09-16 17:37:43 +02:00
Julian lechner 9b82f3eecd feat: cache repository context 2026-09-16 17:37:40 +02:00
Julian lechner c7b25b63c9 ci: add prompt budget checks 2026-09-16 17:37:23 +02:00
Julian lechner 67c28d4b08 test(packages): verify compact output and rule deduplication 2026-09-16 16:55:02 +02:00
Julian lechner 2ce60a86ab test(plugins): cover selection and install guards 2026-09-16 16:54:53 +02:00
Julian lechner 1c359729a8 test(scripts): add summary modes to validation tests 2026-09-16 16:54:43 +02:00
Julian lechner 545c9841b2 feat(install): add compact install and update summaries 2026-09-16 16:54:33 +02:00
Julian lechner 5b50f32f4b refactor(install): share target selection helpers 2026-09-16 16:54:23 +02:00
Julian lechner 0c0062d955 fix(doctor): quote TOML parser command 2026-09-16 16:54:10 +02:00
Julian lechner edd874945e test(config): validate generated skill frontmatter 2026-09-16 16:54:01 +02:00
Julian lechner ab3007cf48 feat(build): add compact summary mode 2026-09-16 16:53:51 +02:00
Julian lechner 1355cbe3cd feat(plugins): compact command output and preserve diagnostics 2026-09-16 16:53:40 +02:00
Julian lechner 453da10b61 feat(output): summarize managed file sync 2026-09-16 16:53:28 +02:00
Julian lechnerandClaude Sonnet 5 e02b6cfed2 test: cover embedded general.md dedup and split-rule reference files
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 16:04:35 +02:00
Julian lechnerandClaude Sonnet 5 3fa0d74ad8 feat(build): embed general.md into AGENTS.md, not just CLAUDE.md
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 15:42:36 +02:00
Julian lechnerandClaude Sonnet 5 3a01d28506 feat(build): support directory-shaped rules with references/
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 15:38:28 +02:00
Julian lechner 0a76bd5e54 feat(install,update): thread --summary/-Summary through sync and plugin steps
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-16 15:14:17 +02:00
Julian lechnerandClaude Haiku 4.5 77dab28c9a fix(doctor): implement buffered PASS output in summary mode
Implement proper buffering for PASS lines in summary mode:
- PASS lines are buffered when -Summary/--summary is active
- WARN and FAIL lines print immediately (never buffered)
- On success: buffer is discarded, print tally line only
- On failure: buffer is flushed before tally line

Revert out-of-scope try/catch around Python command (not part of Task 4).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-16 15:06:55 +02:00
Julian lechnerandClaude Haiku 4.5 3fab891383 feat(doctor): add --summary/-Summary output mode
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-16 14:49:49 +02:00
Julian lechner c94dfdcb30 feat(build): accept --summary/-Summary for interface parity
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-16 14:39:22 +02:00
Julian lechnerandClaude Haiku 4.5 0cc6909057 feat(scripts): add summary mode to plugin install/uninstall
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-16 14:32:17 +02:00
Julian lechner 18b6a7e390 feat(scripts): add summary mode to managed-file sync
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-09-16 14:24:39 +02:00
fraujulian a3cee2756c feat(config): validate clients and scope security 2026-09-14 01:07:46 +02:00
fraujulian 5b0c623a8d feat(plugins): add shared client tools 2026-09-14 01:07:28 +02:00
Julian lechnerandClaude Sonnet 5 0ae373c202 fix(installer): tolerate BOM, CRLF, and uppercase in older manifests (Bash)
Bash's manifest reader stripped only the trailing newline, so a
CRLF-terminated manifest left a stray \r on every hash, a UTF-8 BOM on the
header line was folded into the "path" field, and an uppercase hash never
matched sha256sum's lowercase output. Reproduced against a real
manifest written by an earlier version of the PowerShell installer, where
every single managed file was misreported as locally modified.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:07:27 +02:00
Julian lechnerandClaude Sonnet 5 1c2d155fcc fix(installer): write manifest hashes lowercase and without a BOM (PowerShell)
Windows PowerShell 5.1's -Encoding UTF8 always prepends a BOM, and
Get-FileHash returns uppercase hex. Bash's manifest reader expects neither,
so a manifest written by this module and later read by the Bash
equivalent (or vice versa) mismatched on every single entry: the BOM
folded into the header's first field, and every hash comparison failed on
case alone. Hashes are now lowercased on read and write, and the manifest
file itself is written UTF-8 without a BOM.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:07:17 +02:00
Julian lechnerandClaude Sonnet 5 e143f9d087 fix(tests): add explicit exit 0 on success (PowerShell build validation)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:07:06 +02:00
Julian lechnerandClaude Sonnet 5 a4ea912b60 fix(tests): add explicit exit 0 on success (PowerShell managed install)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:07:02 +02:00
Julian lechnerandClaude Sonnet 5 c866fe44f0 fix(tests): add explicit exit 0 on success (PowerShell platform packages)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:06:57 +02:00
Julian lechnerandClaude Sonnet 5 c89aa4885c fix(installer): add explicit exit 0 on success (PowerShell)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:06:52 +02:00
Julian lechnerandClaude Sonnet 5 c9ef92e424 fix(doctor): add explicit exit 0 on success (PowerShell)
doctor.ps1 already exited 1 on failure but relied on the implicit process
exit code on success, which a stale $LASTEXITCODE from an earlier native
call (e.g. codex --version) could turn into a false failure in CI.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:06:48 +02:00
Julian lechnerandClaude Sonnet 5 6314b408b3 fix(build): add explicit exit 0 on success (PowerShell)
Without it, a stale $LASTEXITCODE left over from an earlier native
command in the same PowerShell session could cause a CI step to be
reported as failed even though the script itself completed successfully.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:06:42 +02:00
Julian lechnerandClaude Sonnet 5 1163f6d96e fix: mark shell scripts executable in git
All tracked .sh files were stored as mode 100644 (non-executable), even
though the CI workflow and normal usage invoke several of them directly
(./scripts/build.sh) rather than through `bash`. On a fresh Linux
checkout this fails with a permission error.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:06:37 +02:00
Julian lechnerandClaude Sonnet 5 eff814b245 test: add build-time validation regression tests (Bash)
Bash equivalent of the PowerShell build-validation test, using a tar-based
repo copy per case to check the same four rejected-defect scenarios.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:36 +02:00
Julian lechnerandClaude Sonnet 5 3d6c19814e test: add build-time validation regression tests (PowerShell)
Runs the build against temporary full-repo copies, each with one injected
defect, and asserts the build rejects it: invalid Claude settings.json,
a duplicate agent name, a duplicate plugin name, and a leftover template
placeholder.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:31 +02:00
Julian lechnerandClaude Sonnet 5 f56366969d test: add managed-manifest installer scenarios (Bash)
Bash equivalent of the PowerShell managed-manifest test, covering the same
idempotency, stale-removal, modified-file-protection, foreign-file, and
side-effect-free dry-run scenarios against sync_managed_destination.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:26 +02:00
Julian lechnerandClaude Sonnet 5 0e9de14d46 test: add managed-manifest installer scenarios (PowerShell)
Exercises Sync-ManagedDestination directly against a throwaway
source/destination pair: idempotent second install (no writes, no
backups), removal of a stale-and-untouched file, protection of a
stale-but-locally-modified file (backed up, left in place, warned), a
foreign file that was never installed staying untouched, and a dry run
that reports the planned removal without any side effects.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:21 +02:00
Julian lechnerandClaude Sonnet 5 0fc87fc6b3 feat(doctor): validate managed files, counts, and config syntax (Bash)
Bash equivalent of the PowerShell doctor change: dynamic agent/skill count
checks, JSON validation of installed settings.json (jq, falling back to a
functional python3 probe), a config.toml balance check, a fast tree-wide
placeholder scan, and managed-manifest missing/modified-file reporting.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:15 +02:00
Julian lechnerandClaude Sonnet 5 ec354ca5f6 feat(doctor): validate managed files, counts, and config syntax (PowerShell)
Doctor now compares generated agent/skill counts against the source
directories and the rule-skills manifest, parses installed settings.json
as JSON, sanity-checks installed config.toml for balanced quotes and
brackets, scans generated output for leftover template placeholders, and
reports missing or locally modified files from each destination's managed
manifest. All checks stay local and file-based; no network calls.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:10 +02:00
Julian lechnerandClaude Sonnet 5 e617a2477a feat(installer): install via managed manifest with non-interactive params (Bash)
Bash equivalent of the PowerShell installer change: delegates to
sync_managed_destination, adds --client/--platform for non-interactive
runs (falling back to the existing interactive prompts when omitted), and
requires --update-plugins to update already-installed plugins instead of
doing so by default.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 15:43:04 +02:00