396 Commits

Author SHA1 Message Date
aesoft df8e03558d Merge pull request #1346 from rtk-ai/feat-hook-engine
fix: P0+P1 fixes from pre-merge review of hook engine
2026-04-16 21:29:35 +02:00
aesoft d8ddefe78e fix: isolate cursor hook tests from local settings (determinist) 2026-04-16 21:00:13 +02:00
aesoft a1d46f39c2 fix(stream): missing stderr fields 2026-04-16 20:39:01 +02:00
aesoft e92d0993c9 fix(runner): preserve fd separation on command failure 2026-04-16 20:27:13 +02:00
aesoft d34389c3d0 fix: P0+P1 fixes from pre-merge review of hook engine
- runner: print captured output on non-zero exit (P0.1)
- main: add hook/pipe to META_COMMANDS (P0.2)
- init: store integrity hash after Gemini script install (P0.3)
- hook_cmd: audit log + permission check for all agent paths (P1.1, P1.2)
- runner: include failure_lines in cargo test summary (P1.5)
- Cargo.toml: remove unconditional libc dep (P1.7)
- init: clean stale settings.json entries during migration (P1.8)
2026-04-16 15:41:20 +02:00
aesoft e7b7f9ab66 Merge pull request #956 from rtk-ai/feat-hook-engine
feat(refacto-core): binary hook w/ native cmd exec + streaming
2026-04-15 18:58:17 +02:00
aesoft 0f93f0e3e6 Merge branch 'develop' into fix/release-please-changelog 2026-04-14 20:54:08 +02:00
aesoft 906dedd75a Merge remote-tracking branch 'origin/develop' into feat-hook-engine 2026-04-13 21:14:55 +02:00
aesoft 9e96caa0a1 Merge pull request #355 from KuSh/pnpx+dlx
feat(discover): handle more npm/npx/pnpm/pnpx patterns
2026-04-13 20:31:12 +02:00
Florian BRUNIAUX f2985ac5b4 Merge pull request #1217 from ousamabenyounes/fix/issue-1215 2026-04-13 10:30:10 +02:00
Florian BRUNIAUX 1436c2d6bb Merge pull request #1188 from ousamabenyounes/fix/git-push-u-flag-conflict-1086 2026-04-13 10:30:07 +02:00
Florian BRUNIAUX 8126a20824 Merge pull request #1200 from ousamabenyounes/fix/issue-1105 2026-04-13 10:30:04 +02:00
Florian BRUNIAUX e3a86a463b Merge pull request #1199 from ousamabenyounes/fix/issue-1101 2026-04-13 10:30:00 +02:00
Florian BRUNIAUX 9be5cc23f3 Merge pull request #1239 from KuSh/fix-pnpm-list 2026-04-13 10:29:57 +02:00
Florian BRUNIAUX b61f672ab8 Merge pull request #1227 from davidalecrim1/fix/cc-economics-hang 2026-04-13 10:29:55 +02:00
Florian BRUNIAUX 3223c76338 Merge pull request #1172 from iRonin/fix/curl-json-schema-values 2026-04-13 10:18:44 +02:00
Florian BRUNIAUX 60c8416c9e Merge pull request #1214 from rtk-ai/fix/permission-compound-allow-escalation 2026-04-13 10:18:41 +02:00
Florian BRUNIAUX 8f28a05917 Merge pull request #1173 from iRonin/fix/hook-auto-allow-bypass 2026-04-13 10:18:38 +02:00
Florian BRUNIAUX b41be60dd7 Merge pull request #1072 from rtk-ai/fix/tee-utf8-panic 2026-04-13 10:18:35 +02:00
Florian BRUNIAUX e09a53e5f7 Merge pull request #1181 from rtk-ai/rgpd-telemetry 2026-04-13 09:26:46 +02:00
Florian BRUNIAUX 24875a2e0d Merge pull request #798 from mgierok/fix/golangci-lint-run-wrapper-develop 2026-04-13 09:26:16 +02:00
Florian BRUNIAUX a9e857e725 Merge pull request #1036 from s2005/feat/liquibase 2026-04-13 09:26:11 +02:00
Florian BRUNIAUX f86c1521cc Merge pull request #961 from chojs23/fix/invalid-gh-pr-status-json-field 2026-04-13 09:25:53 +02:00
Florian BRUNIAUX 3606bce216 Merge pull request #940 from niklasmarderx/fix/yadm-support-567 2026-04-13 09:25:41 +02:00
Florian BRUNIAUX aa54613df8 Merge pull request #935 from Bortlesboat/fix/empty-pr-issue-list-output 2026-04-13 09:25:32 +02:00
Ousama Ben Younes 6b76fdb87d fix(git): remove -u short alias from --ultra-compact to fix git push -u
The global --ultra-compact flag used -u as its short form which caused
`rtk git push -u origin <branch>` to silently consume -u as ultra-compact
mode instead of forwarding it to git as --set-upstream. The push succeeded
but the upstream tracking branch was never written to .git/config, causing
subsequent plain `git push` calls to fail with "no upstream branch".

Fixes #1086

Generated by Claude Code
Vibe coded by ousamabenyounes

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-12 21:34:52 +00:00
Ousama Ben Younes 3db8070b51 fix(permissions): glob_matches middle-wildcard matches commands without trailing args (#1105)
When glob_matches processed a pattern like "git -C * diff:*" (normalized
to "git -C * diff *"), middle segment " diff " requires a trailing space
to match. For "git -C /path diff" the remaining text is "/path diff"
which ends with " diff" — no trailing space — so .find(" diff ") returned
None and the command was incorrectly rejected.

Fix: in the middle-segment branch, if the full substring search fails,
also check if the remaining text ends with the trimmed (right-stripped)
segment. This handles commands that terminate at the middle token with
no trailing arguments.

Add regression test covering the exact reproduction case from the issue.

Closes #1105

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:33:44 +00:00
Ousama Ben Younes dbeeaed16a fix(find): include hidden files when pattern targets dotfiles (#1101)
rtk find used WalkBuilder with .hidden(true), which skips ALL hidden
files and directories. As a result, `rtk find . -name ".claude.json"`
always returned "0 for '.claude.json'" even when the files existed.

Fix: detect when the -name pattern starts with a dot and set
.hidden(false) for that walk, so hidden entries are visited.
Non-dotfile patterns keep the default .hidden(true) behaviour.

Add regression tests covering both cases.

Closes #1101

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:33:44 +00:00
mgierok 24f2adaf8f fix(golangci-lint): support inline global flags before run
Handle --flag=value forms consistently in both the runtime parser and discover rewrite logic.
Add regression coverage for classify and rewrite paths using inline global flag values before run.
2026-04-12 23:14:47 +02:00
mgierok d85303ec48 fix(discover): preserve golangci-lint flags in rewrite
Normalize golangci-lint global flags before run during classification and keep them in rewritten commands.
Add regression coverage for classify_command and rewrite_command with pre-run global flags.
2026-04-12 23:14:47 +02:00
mgierok 4f4e4d2b5a fix(golangci-lint): restore run wrapper and align guidance
Keep bare golangci-lint invocations as passthrough while preserving compact filtering for golangci-lint run.
Update discover/rewrite rules, regression tests, and docs to advertise only the supported compact run path.
2026-04-12 23:14:47 +02:00
s2005 630f0a2800 Add liquibase TOML filter 2026-04-12 22:25:04 +02:00
Nicolas Le Cam 010596c696 Revert "feat(pnpm): handle pnpm build rewrite"
This reverts commit 94a35325790a8a62715e66863ad5a6cd17417d81.
Build is no longer a pnpm command with specific handling.

Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
2026-04-12 22:03:39 +02:00
Nicolas Le Cam 70610da4bb fix(vitest): rework command to handle differences between vitest and jest
Also remove duration computation as there's no endTime attribute in json output

Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
2026-04-12 22:03:39 +02:00
Nicolas Le Cam 45938b2a4d feat(js): distinguish between jest and vitest and don't rewrite npm test commands as we don't know which test framework is used under the hood
Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
2026-04-12 22:03:39 +02:00
Nicolas Le Cam c47edac35d chore: fix clippy warning 2026-04-12 22:03:39 +02:00
Nicolas Le Cam f936138819 feat(pnpm): handle pnpm build rewrite
Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
2026-04-12 22:03:39 +02:00
Nicolas Le Cam 325a42e09f fix: remove pnpx -> rtk pnpx rule as rtk pnpx command doesn't exist
Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
2026-04-12 22:03:39 +02:00
Nicolas Le Cam bab3a53f24 feat(discover): handle more npm/npx/pnpm/pnpx patterns
- handle npm exec|run and their aliases
- handle pnpm exec|run and their aliases like npm
- handle pnpx and its alias like npx
- handle all forms of js script/package execution

Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
2026-04-12 22:03:39 +02:00
aesoft 8156081261 fix(telemetry): clean code 2026-04-12 15:28:25 +02:00
aesoft 7821e9872f fix(telemetry): non-terminal consent, single config load
- P0: non-terminal `rtk init` no longer writes consent_given=false leaves consent as None so next interactive run prompts normally
- P1: maybe_ping() loads Config once instead of twice per command
2026-04-12 15:05:58 +02:00
aesoft 2e4cc4bb52 fix(telemetry): consent, erasure, auth, docs 2026-04-12 12:59:22 +02:00
aesoft 57502a5bef Merge pull request #588 from GokhanKabar/fix/pytest-quiet-mode-no-tests-collected
fix(pytest): -q mode summary line not detected
2026-04-12 12:22:53 +02:00
Nicolas Le Cam ba235d8597 fix(pnpm): list command not working
Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
2026-04-12 02:31:06 +02:00
David Alecrim f68fa0087c fix(ccusage): add --yes flag and warn when falling back to npx
Fixes silent hang when ccusage is not installed globally. npx prompts
for confirmation before installing the package, blocking the subprocess
indefinitely. Adding --yes auto-confirms and the info message sets user
expectations.

Fixes rtk-ai/rtk#1226
2026-04-11 12:43:54 -03:00
aesoft 840571fe90 fix(core): review 956 various fix
4 fixes applied (all confirmed introduced by PR #956, all tests pass):

- P0 NEW-passthrough — pipe_cmd.rs: passthrough before cap read
- P1 BUFFERED-panic — stream.rs: catch_unwind on Buffered filter
- P1 STREAM-postcap — stream.rs: stop feeding filter after cap
- P2 OFFBYONE-rawcap — stream.rs: 5 cap boundary checks fixed

5 findings dropped (not introduced by PR or not bugs):

- DENY-claude: pre-existing on master
- AUDIT-asymmetry: intentional scope choice, not a bug
- GEMINI-test: pre-existing test pattern from master
- SAVINGS-threshold: 40% is correct (filters achieve ~46%)
- STDERR-test: cosmetic CI, not correctness
2026-04-11 17:24:04 +02:00
Ousama Ben Younes 9722d5ebd8 fix(go): prevent double-counting failures when package-level fail cascades from test failures (#958)
go test -json emits both a test-level {"action":"fail","Test":"..."}
and a trailing package-level {"action":"fail"} (no Test field) for
every failing test. The parser was counting both events, so a run with
1 failing test was reported as "2 failed" in the summary header.

Fix: total_pkg_fail now only includes packages where package_failed is
true AND there are no individual test- or build-level failures — i.e.
pure package-level failures such as timeouts and panics. Also exclude
such packages from the [FAIL] display section when test-level results
are already shown below.

Three new tests cover:
- no double-count on a regular test failure
- exact reproduction from issue #958 (signal: quit line)
- timeout with passing tests before the kill

Generated by Claude Code
Vibe coded by ousamabenyounes

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-11 10:30:03 +00:00
Ousama Ben Younes 9979c69930 fix(git): re-insert -- separator when clap consumes it from git diff args (#1215)
clap's trailing_var_arg=true silently drops -- when it appears as the first
positional argument. This caused `rtk git diff -- <path>` to arrive in
run_diff without the separator, making git treat the path as a revision and
emit "fatal: ambiguous argument". Adds normalize_diff_args() which re-inserts
-- before the first path-like argument (contains /, \, starts with . or ~)
when -- is absent from the args vec. The fix is a no-op when -- is already
present (e.g. rtk git diff HEAD -- file preserves the separator correctly).

Generated by Claude Code
Vibe coded by ousamabenyounes

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-11 10:27:12 +00:00
aesoft aaf4d1d9fe Merge pull request #422 from KuSh/cleanup-warnings
chore: apply clippy suggestions
2026-04-11 12:08:40 +02:00
aesoft 2ba8d372df Merge pull request #270 from KuSh/pnpm-filters
feat(pnpm): Add filter argument support
2026-04-11 10:42:36 +02:00