Skip to content

Next Release#1052

Merged
aeppling merged 107 commits intomasterfrom
develop
Apr 13, 2026
Merged

Next Release#1052
aeppling merged 107 commits intomasterfrom
develop

Conversation

@aeppling
Copy link
Copy Markdown
Contributor

@aeppling aeppling commented Apr 6, 2026

next release building

Summary

features:

  • add support for Kilocode and Antigravity agents
  • install Codex global instructions in CODEX_HOME
  • add and enhance user facing docs + online docs generation
  • add /pr-review skill for batch PR review
  • add missing frontmatter to all project-level skills
  • Cleanup clippy warnings
  • enrich daily ping with gap detection and quality metrics + RGPD compliant telemetry
  • pnpm: add --filter workspace argument support
  • go: report package-level failures (timeouts, signals) in go test
  • clippy: show full error blocks instead of truncated headlines
  • ls : fix ls -la output parsing
  • json rename --schema to --keys-only

Bug fix list below

Bug fix / issue resolved

ISSUE #948 resolved by PR #990
ISSUE #259 resolved by PR #270
ISSUE #602 resolved by PR #1141
ISSUE #621 resolved by PR #890
ISSUE #958 resolved by PR #959 and #1220

GokhanKabar and others added 30 commits March 26, 2026 19:49
…lected"

pytest -q emits the final summary without === wrappers. The parser only
matched === prefixed lines, leaving summary_line empty and triggering
the wrong "No tests collected" message.

- detect bare summary lines in quiet mode (no === wrapper)
- fix false "No tests collected" when only skipped tests exist
- add 2 tests covering both cases

Fixes #565

Signed-off-by: GokhanKabar <gokhankabar@hotmail.fr>
The previous --schema flag name implied output type rather than behavior.
--keys-only is explicit: values are shown by default, this flag strips them.

Closes #621 (json values now preserved by default; --keys-only is opt-in).

Signed-off-by: Florian BRUNIAUX <florian@bruniaux.com>
Adds a one-liner listing all supported ecosystems (ruff, pytest, pip,
golangci-lint, etc.) in the Architecture section to satisfy the pre-push
documentation validation script.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Florian BRUNIAUX <florian@bruniaux.com>
Adds a new Claude Code skill that automates the batch review workflow
for RTK pull requests, ordered by complexity (XS → S → M → L).

For each PR the skill:
- Verifies mergeable state, CLA, and existing reviews before reading
- Reads the full diff and source context for non-trivial logic
- Presents a structured summary (link, size, CLA, analysis, recommendation)
- Waits for explicit user approval before any merge
- Posts boldguy-adapt comments on blocked PRs (conflict, CLA, CHANGES_REQUESTED)
- Tracks session results in a final recap table

Includes templates for conflict/CLA/both comment scenarios, a conflict
post-merge check (CHANGELOG.md, rules.rs, registry.rs, main.rs), and
support for `from:<num>` to resume interrupted sessions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Florian BRUNIAUX <florian@bruniaux.com>
The check compared `^mod ` count in main.rs (8 top-level modules) against
the "Total: 64 modules" number in ARCHITECTURE.md, which are fundamentally
different metrics and will never match. This caused all branches to fail
the pre-push hook regardless of whether docs were actually out of sync.

Also adds the missing ecosystems line to CLAUDE.md so the Python/Go
commands check passes consistently on develop-based branches.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Florian BRUNIAUX <florian@bruniaux.com>
All 8 .claude/skills/ files were missing effort, tags, and allowed-tools
fields. Also added name field to issue-triage, pr-triage, and rtk-triage
which had none. Effort levels inferred from content analysis.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Florian BRUNIAUX <florian@bruniaux.com>
Two issues:
1. Module count compared top-level `mod` in main.rs (8) against
   "Total: 64 modules" in ARCHITECTURE.md -- incompatible metrics,
   always fails. Replaced with a simple .rs source file count (informational only).
2. CLAUDE.md check for Python/Go commands was too strict -- these
   commands belong in README.md (user-facing), not CLAUDE.md (Claude Code guidance).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Florian BRUNIAUX <florian@bruniaux.com>
yadm is a dotfile manager that wraps git — same subcommands, same
output format. Extending the git rule to also match `yadm` gives
yadm users the same token savings without any extra CLI support.

Closes #567
When `rtk gh pr list` or `rtk gh issue list` returns an empty array,
the header ("Pull Requests" / "Issues") is printed with nothing below
it. Display "No Pull Requests" / "No Issues" instead.

Closes #764
Fixes #968

Co-Authored-By: Claude <noreply@anthropic.com>
…rics

Add 6 new fields to the anonymous daily telemetry ping to help identify
which commands need filters and which filters need improvement:

- passthrough_top: top 5 commands with 0% savings (missing filters)
- parse_failures_24h: count of parse failures (filter fragility)
- low_savings_commands: commands averaging <30% savings (weak filters)
- avg_savings_per_command: unweighted average savings
- hook_type: which AI agent hook is installed (claude/gemini/codex/etc)
- custom_toml_filters: count of user-defined TOML filter files

New tracking.rs queries: top_passthrough(), parse_failures_since(),
low_savings_commands(), avg_savings_per_command().

Signed-off-by: Patrick szymkowiak <patrick.szymkowiak@innovtech.eu>
Extend the daily anonymous ping with product-piloting metrics:

Retention: first_seen_days, active_days_30d, commands_total
Ecosystem: ecosystem_mix (category distribution percentages)
Economics: tokens_saved_30d, estimated_savings_usd_30d
Config: has_config_toml, exclude_commands_count, projects_count
Features: meta_usage (gain, discover, proxy, verify, learn counts)

Update README.md privacy section with full field-by-field table
explaining what is collected and why it helps improve RTK.

Signed-off-by: Patrick szymkowiak <patrick.szymkowiak@innovtech.eu>
Comprehensive telemetry documentation covering:
- Why we collect (roadmap prioritization, filter quality, value measurement)
- How it works (daily ping, background thread, fire-and-forget)
- Every field with example values and purpose
- What is NOT collected (explicit exclusion list)
- Opt-out instructions
- Data handling and privacy guarantees
- Contributor guide for adding new fields

Link added from README.md privacy section.

Signed-off-by: Patrick szymkowiak <patrick.szymkowiak@innovtech.eu>
Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
- Add support for pnpm global filter arguments (`--filter`) across all pnpm commands (`list`, `outdated`, `install`, etc.).
- Merge pnpm filters with native command arguments (`--filter` + custom args like `--depth`).
- Implement proper handling for `Vec<String>` (text filters) and `Vec<OsString>` (OS-specific filters).
- Add unit tests for `merge_pnpm_args` and CLI parsing to validate expected behavior.

This enables users to apply workspace-specific filtering directly via `--filter @scope` before running pnpm commands,
reducing token overhead by excluding irrelevant packages/dependencies from output.

Fixes: #259

FIXME: Add notes for typechecking/building with workspaces when filters are applied.
Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
- Add validate_pnpm_filters() to warn when filters used with unsupported commands
- Add comprehensive tests for all scenarios
- Improve comments and use idiomatic rust

Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
- Remove explicit PnpmCommands::Build variant (routed through Other)
- Simplify filter validation for Typecheck only
- Remove redundant warning eprintln!() call

Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
Signed-off-by: Nicolas Le Cam <niko.lecam@gmail.com>
- Convert repo-recap, security-guardian, ship skills from flat .md to
  SKILL.md inside dedicated directories
- Remove performance.md (no replacement needed)
- Add cross-platform clip() helper in issue-triage and pr-triage skills
  (supports pbcopy, xclip, wl-copy)
- Add argument-hint metadata to worktree command files
- Update rust-rtk agent model from pinned ID to "sonnet" alias
- Remove hardcoded absolute paths from diagnose.md
- Add .rtk/filters.toml project-local filter config

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Florian BRUNIAUX <florian@bruniaux.com>
Convert .claude/skills/performance.md to .claude/skills/performance/SKILL.md
to match the same structure as repo-recap, security-guardian, and ship.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Florian BRUNIAUX <florian@bruniaux.com>
Creates docs/README.md (interface contract defining 3-tab structure,
required frontmatter, and conventions) and 4 stub pages with valid
frontmatter for docs/guide/, docs/reference/, and docs/architecture/.
These are the prerequisites for the prepare-docs.mjs pipeline (Plan B)
and for Adrien's Phase 1 content work.

No existing files modified.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Florian BRUNIAUX <florian@bruniaux.com>
Creates the complete user-facing guide for the docs website:

Getting started:
- quick-start.md: 5-minute walkthrough (init, first commands, rtk gain)
- supported-agents.md: Claude Code, Cursor, Copilot, Gemini, Cline, Windsurf,
  Codex, OpenCode — integration tiers, install commands, graceful degradation

Commands (adapted from FEATURES.md, English, --help-first format):
- git.md: status/log/diff/show/add/commit/push/pull/branch + gh CLI
- cargo.md: test/nextest/build/check/clippy/install + generic test/err wrappers
- files.md: ls/read/grep/find/diff/wc/smart with before/after examples
- javascript.md: vitest/playwright/tsc/eslint/prettier/next/pnpm/npm/npx/prisma
- python.md: pytest/ruff/mypy/pip/deps

Reference:
- filters/using-filters.md: 8-stage pipeline, lookup priority, TOML DSL reference,
  Mermaid diagram (adapted from docs/filter-workflow.md)
- analytics/gain.md: rtk gain flags, daily/weekly/monthly breakdowns, export
  formats, token estimation, database management (from docs/AUDIT_GUIDE.md)
- configuration.md: full config.toml reference, env vars, tee system, telemetry
- troubleshooting.md: common issues and fixes (from docs/TROUBLESHOOTING.md)

All pages carry valid frontmatter (title, description, sidebar.order).
No existing files modified.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Florian BRUNIAUX <florian@bruniaux.com>
mgierok and others added 25 commits April 12, 2026 23:14
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.
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.
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>
…ut 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>
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>
@aeppling
Copy link
Copy Markdown
Contributor Author

RTK v0.36.0 — Pre-Release Test Report

Date: 2026-04-13
Branch: developmaster
PR: #1052
Artifact: dev-0.36.0-rc.137
Platform: Linux x86_64 (WSL2)


Verdict: READY TO MERGE

All 1434 unit tests pass, all new features validated, all end-to-end tests green.
2 minor non-blocking issues noted below.


Layer 0 — Build Quality Gate

  • cargo fmt --all --check — clean
  • cargo clippy --all-targets — 0 errors, 4 warnings (unused constants in hooks/constants.rs)
  • cargo test --all1434 passed, 6 ignored, 0 failures
  • cargo build --release — binary 7.6MB

Layer 1 — Install / Uninstall Cycle

  • Download rtk-x86_64-unknown-linux-musl.tar.gz from dev-0.36.0-rc.137 (4.1MB → 9.1MB static binary)
  • Install to PATH, verify version
  • Core commands: git status, git log, ls, gain, --help — all produce compact output
  • Proxy mode: rtk proxy echo hello → passthrough + tracking
  • Exit code propagation: bad flag → exit 128
  • Pipe compatibility: rtk git log -5 | wc -l → correct
  • Uninstall + restore original binary — clean
  • cargo install --path . — source install works
  • ⚠️ Binary reports 0.34.3 — Cargo.toml not bumped yet (release-please handles this)

Layer 2 — New/Changed Command Filters

Layer 3 — Init System (New Agents)

  • Init unit tests — 59 passed
  • rtk init --agent kilocode → creates .kilocode/rules/rtk-rules.md
  • rtk init --agent antigravity → creates .agents/rules/antigravity-rtk-rules.md
  • rtk init (default claude) → creates/updates CLAUDE.md
  • CODEX_HOME=/custom rtk init --codex -g → respects CODEX_HOME env var

Layer 4 — Telemetry (RGPD/GDPR)

  • Telemetry unit tests — 15 passed
  • rtk telemetry status — shows consent, device hash, data controller
  • rtk telemetry disable — disables telemetry
  • rtk telemetry enable (non-interactive) — correctly rejects, requires interactive terminal
  • rtk telemetry forget — deletes local DB, attempts server erasure, provides device hash
  • Config tests — 14 passed

Layer 5 — TOML Filters

  • TOML filter engine — 53 tests passed
  • Liquibase filter (new) — liquibase.toml present and compiled
  • Total: 59 TOML filters

Layer 6 — Hook System

  • Hook tests — 160 passed

Layer 7 — End-to-End (Release Binary)

  • rtk git status — compact one-liner
  • rtk git log -5 — filtered with commit body
  • rtk git diff --stat HEAD~1 — compact stat
  • rtk git branch — grouped local/remote
  • rtk gain — tracking works, per-command breakdown
  • rtk gain --history — history view works
  • rtk proxy echo — passthrough, exit 0
  • Exit code on failure — --nonexistent-flag → exit 128
  • Pipe compatibility — | wc -l works
  • Binary size: 7.6MB (release), 9.1MB (musl static)

Issues Found

1. Version mismatch in Cargo.toml — non-blocking

Pre-release binary reports rtk 0.34.3 instead of 0.36.0. Cargo.toml wasn't bumped on develop.
Action: release-please handles this automatically during merge.

2. rtk hook claude subcommand doesn't exist — pre-existing, non-blocking

~/.claude/settings.json has "command": "rtk hook claude" but rtk hook only supports gemini and copilot. This causes "PreToolUse:Bash hook error" on every Bash call. The Claude Code hook should use the rtk-rewrite.sh script.
Action: Run rtk init -g to fix hook configuration.

3. telemetry forget deletes data without confirmation — minor UX

Deletes all tracking data (history.db) immediately with no "are you sure?" prompt.
Action: Consider adding a confirmation prompt or --yes flag.


Totals

Copy link
Copy Markdown
Collaborator

@pszymkowiak pszymkowiak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok — tested end-to-end in a Multipass Ubuntu 24.04 VM against develop @ f2985ac:

  • 63/63 Rust binary filters PASS
  • 47/59 TOML filters PASS (remaining SKIPs all justified: macOS-only, auth-required, or heavy daemons)
  • 3 WARNs on upstream/distro bugs (markdownlint on Node 18 ICU, oxlint aarch64 binding, shellcheck 0.10 aarch64 segfault) — not RTK regressions
  • rtk verify 145/145 green
  • No routing failures, no shell-escape regressions, no blockers

LGTM. Leaving the merge to @aeppling.

@aeppling
Copy link
Copy Markdown
Contributor Author

All good to me, waiting if @FlorianBruniaux may be available, else we'll merge

Thanks all contributors

@aeppling aeppling merged commit 314978c into master Apr 13, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working effort-small Quelques heures, 1 fichier filter-quality Filter produces incorrect/truncated signal

Projects

None yet

Development

Successfully merging this pull request may close these issues.