patrick szymkowiak
1d8a0a083a
Merge pull request #74 from rtk-ai/release-please--branches--master--components--rtk
...
chore(master): release 0.13.0
v0.13.0
2026-02-12 11:03:38 +01:00
github-actions[bot]
0d388b3f05
chore(master): release 0.13.0
2026-02-12 09:43:19 +00:00
patrick szymkowiak
6e181aec08
Merge pull request #72 from agregio-solutions/feat/configurable-db-path
...
feat(sqlite): add custom sqlite db location
2026-02-12 10:42:52 +01:00
Joan Bordeau
93364b5457
feat(sqlite): add custom sqlite db location
2026-02-10 21:42:46 +01:00
patrick szymkowiak
36ebd76e11
Merge pull request #71 from rtk-ai/release-please--branches--master--components--rtk
...
chore(master): release 0.12.0
v0.12.0
2026-02-09 03:07:31 +01:00
github-actions[bot]
3dde699240
chore(master): release 0.12.0
2026-02-09 02:00:59 +00:00
patrick szymkowiak
447002f8ba
Merge pull request #70 from FlorianBruniaux/feat/cargo-install-filtering
...
feat(cargo): add cargo install filtering
2026-02-09 03:00:39 +01:00
Florian BRUNIAUX
645a773a65
feat(cargo): add cargo install filtering with 80-90% token reduction
...
Strip dep compilation, downloading, locking noise from cargo install output.
Keep only installed/replaced/error lines with compact summary format.
Closes #69
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-08 11:36:14 +01:00
patrick szymkowiak
ac9e58806c
Merge pull request #68 from rtk-ai/release-please--branches--master--components--rtk
...
chore(master): release 0.11.0
v0.11.0
2026-02-07 23:17:27 +01:00
github-actions[bot]
22182e48d2
chore(master): release 0.11.0
2026-02-07 22:13:14 +00:00
patrick szymkowiak
2db7197e02
Merge pull request #66 from FlorianBruniaux/feat/auto-patch-settings-json
...
feat(init): auto-patch settings.json for frictionless hook installation
2026-02-07 23:12:58 +01:00
patrick szymkowiak
a3814fc3d3
Merge branch 'master' into feat/auto-patch-settings-json
2026-02-07 23:12:50 +01:00
patrick szymkowiak
3d686aa08c
Merge pull request #67 from rtk-ai/release-please--branches--master--components--rtk
...
chore(master): release 0.10.0
v0.10.0
2026-02-07 17:45:11 +01:00
github-actions[bot]
109f5d66db
chore(master): release 0.10.0
2026-02-07 16:01:00 +00:00
patrick szymkowiak
e7f80ad294
Merge pull request #65 from FlorianBruniaux/master
...
feat: Hook-first installation with 99.5% token reduction
2026-02-07 17:00:43 +01:00
Florian BRUNIAUX
848a63dfac
feat(init): auto-patch settings.json for frictionless hook installation
...
## Summary
Eliminates manual settings.json setup friction by automating hook
registration with safety (backup, atomic writes, idempotency).
## Changes
### Core Features
- **Auto-patch**: Default `rtk init -g` prompts to patch settings.json [y/N]
- **CLI flags**: `--auto-patch` (no prompt), `--no-patch` (manual), `--uninstall` (full cleanup)
- **Safety**: Automatic backup to `settings.json.bak` before modification
- **Idempotency**: Detects existing hook, skips modification
- **Status check**: `rtk init --show` now displays settings.json registration
### Implementation
- New types: `PatchMode` (Ask/Auto/Skip), `PatchResult` (tracking outcomes)
- New functions in `src/init.rs`:
- `hook_already_present()` - Detects RTK hook via substring match
- `insert_hook_entry()` - Deep-merges hook using idiomatic `entry()` API
- `atomic_write()` - Crash-safe writes with tempfile
- `patch_settings_json()` - Main orchestrator
- `uninstall()` - Complete cleanup (hook, RTK.md, settings.json)
- Modified functions: `run()`, `run_default_mode()`, `run_hook_only_mode()`, `show_config()`
### Code Quality Improvements
- Refactored `insert_hook_entry()` to use Rust `entry()` API (no manual unwraps)
- Simplified `hook_already_present()` with iterator chains (3x shorter)
- Improved error messages with file paths and actionable hints
- Fixed string allocation (to_str() vs to_string())
### Dependencies
- Added `preserve_order` feature to `serde_json` (key order preservation)
- Moved `tempfile` to production dependencies (atomic writes)
### Documentation
- **README.md**: Updated Quick Install, added Installation Flags, Uninstalling, Troubleshooting, What Are Hooks sections
- **INSTALL.md**: Updated Recommended Setup, added Common User Flows, Uninstalling sections
- **CHANGELOG.md**: Documented new feature under Unreleased
### Testing
- 11 new unit tests for hook detection, insertion, atomic writes, cleanup
- All 249 tests passing
- Smoke tested: install, idempotency, show, uninstall
## User Impact
**Before**: Users had to manually copy JSON snippet to settings.json
**After**: Single command with prompt, automatic backup, clean uninstall
## Breaking Changes
None. Backwards compatible - manual setup still works via `--no-patch`.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-07 16:12:40 +01:00
Florian BRUNIAUX
8c67a2f1e7
docs: update for hook-first installation mode
...
## README.md Updates
**Quick Start section:**
- Clear 3-step process: verify → install hook → test
- Prominently recommend `rtk init -g` (hook-first mode)
- Explain 99.5% token savings (2000 → 10 tokens)
- Show alternative modes (--claude-md, local init)
**Configuration section:**
- New comparison table: 4 modes with token costs
- Migration instructions for existing users
- Clarify hook vs CLAUDE.md injection differences
**Auto-Rewrite Hook section:**
- Promote automated install (`rtk init -g`) as primary method
- Keep manual install as fallback
- Add verification step (`rtk init --show`)
## INSTALL.md Updates
**Project Initialization:**
- Recommend global hook-first setup (with rationale)
- Show token savings: 99.5% reduction
- Document local setup as alternative
- Add upgrade/migration guide for existing users
## TROUBLESHOOTING.md Updates
**RTK not working section:**
- Option A: Automated (`rtk init -g`) - recommended
- Option B: Manual install - fallback
- Clarify absolute path requirement in settings.json
- Add verification step
## Fixes Documentation Gaps
Before:
- ❌ No mode comparison
- ❌ No migration guide
- ❌ Manual install only
- ❌ Unclear token impact
After:
- ✅ Clear mode comparison with use cases
- ✅ Automatic migration documented
- ✅ Automated install prioritized
- ✅ Quantified token savings (99.5%)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-07 15:28:39 +01:00
Florian BRUNIAUX
38fc860c31
refactor(init): eliminate DRY violations and improve error handling
...
## Code Quality Improvements
**Extracted helper functions:**
- `prepare_hook_paths()`: Prepare hook directory and paths (DRY)
- `ensure_hook_installed()`: Idempotent hook installation with chmod
- `write_if_changed()`: Generic file write with idempotence
**Before (duplicated):**
- Hook path logic repeated in default_mode + hook_only_mode
- Hook write logic repeated (lost idempotence in hook-only)
- RTK.md write logic duplicated
**After (DRY):**
- Single source of truth for each operation
- Consistent idempotence across all modes
- Reusable helpers for future file operations
## Error Handling Enhancements
**Improved error context:**
- `.with_context(|| format!("Failed to write hook to {}", path))`
- All fs operations now include the path that failed
- Migration warnings include line numbers and actionable steps
**Better Windows messaging:**
- Clear explanation of platform limitations
- Explicit fallback behavior
## API Improvements
**Idiomatic Rust:**
- `&PathBuf` → `&Path` for all function parameters
- Pattern match tuple instead of if/else chain
- `anyhow::bail!` for Windows hook-only error
## Impact
- **Maintainability**: Single place to update hook/file logic
- **Debuggability**: Error messages show exact paths
- **Robustness**: Consistent idempotence prevents conflicts
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-07 15:28:24 +01:00
Florian BRUNIAUX
9620f66cd6
feat(init): refactor to hook-first with slim RTK.md
...
## Changes
**New default mode (hook + RTK.md):**
- Embed hook script in binary (include_str!)
- Write hook + chmod +x with guards (rtk/jq check before set -e)
- Write slim RTK.md (10 lines: meta commands only)
- Add @RTK.md reference to CLAUDE.md
- Print settings.json instructions (no auto-patch)
**Migration:**
- Auto-detect old <!-- rtk-instructions --> block
- Remove 137-line block, preserve user content
- Replace with @RTK.md reference
**New CLI flags:**
- `--claude-md`: Legacy mode (full injection)
- `--hook-only`: Hook only, no RTK.md
- Default (no flags): Hook + RTK.md (recommended)
**Enhanced --show:**
- Detect hook executable status (Unix)
- Detect hook guards (rtk/jq)
- Detect @RTK.md vs old block
- Show slim vs legacy mode
**Files added:**
- hooks/rtk-rewrite.sh (embedded, with guards)
- hooks/rtk-awareness.md (slim RTK.md content)
**Token savings:**
~2000 tokens → ~10 tokens in context (99.5% reduction)
Hook rewrites commands transparently (0 tokens overhead)
**Tests:** 9 new tests, all passing (236 total)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-07 15:11:24 +01:00
patrick szymkowiak
3436a39c04
Merge pull request #64 from rtk-ai/release-please--branches--master--components--rtk
...
chore(master): release 0.9.4
v0.9.4
2026-02-06 20:20:33 +01:00
github-actions[bot]
0cd8d6ea95
chore(master): release 0.9.4
2026-02-06 19:15:05 +00:00
patrick szymkowiak
89a57cf0fd
Merge pull request #63 from FlorianBruniaux/fix/discover-cargo-check-passthrough-init
...
Fix discover cargo check + wire RtkStatus + enhance init
2026-02-06 20:14:46 +01:00
Florian BRUNIAUX
d5f8a94604
fix(discover): add cargo check support, wire RtkStatus::Passthrough, enhance rtk init
...
## Discover Registry Fixes
- Add `check` to cargo pattern (registry.rs:52)
- Add `("check", 80.0)` savings to cargo rule
- Wire `RtkStatus::Passthrough` for `cargo fmt` (0% savings, passthrough mode)
- Add `status: RtkStatus` field to `Classification::Supported`
- Extract status from subcommand rules in classify_command()
- Fix UTF-8 truncation bug in report.rs truncate_str() (panic on multi-byte chars)
## Tests (7 new)
- test_classify_cargo_check()
- test_classify_cargo_check_all_targets()
- test_classify_cargo_fmt_passthrough() → status = Passthrough
- test_classify_cargo_clippy_savings()
- test_patterns_rules_length_match() → assert PATTERNS.len() == RULES.len()
- test_registry_covers_all_cargo_subcommands() → coupling test
- test_registry_covers_all_git_subcommands() → coupling test
## RTK Init Rewrite
- Rewrite template in English with 32+ commands grouped by workflow
- Add version marker `<!-- rtk-instructions v2 -->` for idempotency
- Fix idempotency detection: use marker instead of French text
- Add tests:
- test_init_mentions_all_top_level_commands() → 15 key commands
- test_init_has_version_marker()
## Documentation
- CLAUDE.md: dual format (raw + rtk) for all dev commands
- CLAUDE.md: pre-commit gate uses rtk
- ~/.claude/CLAUDE.md: add Cargo section (80-90% savings)
## Verification
✅ 229 tests pass (7 new)
✅ 88 smoke tests pass
✅ cargo fmt + clippy clean
✅ All coupling tests enforce registry/Commands alignment
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-06 16:28:13 +01:00
patrick szymkowiak
b0a1b2c137
Merge pull request #62 from rtk-ai/release-please--branches--master--components--rtk
...
chore(master): release 0.9.3
v0.9.3
2026-02-06 14:37:18 +01:00
github-actions[bot]
c072201629
chore(master): release 0.9.3
2026-02-06 13:36:27 +00:00
patrick szymkowiak
05078ff2da
Merge pull request #61 from FlorianBruniaux/fix/crashes-check-dedup-discover
...
fix: P0 crashes + cargo check + dedup utilities + discover status
2026-02-06 14:36:07 +01:00
Florian BRUNIAUX
60d2d252ef
fix: P0 crashes + cargo check + dedup utilities + discover status
...
Phase 1: Fix P0 crashes (3 bugs)
- Add external_subcommand fallback for cargo/docker/kubectl
- Fixes crashes on unsupported subcommands (e.g., cargo fmt, docker build)
- All passthroughs now route gracefully instead of Clap parse errors
Phase 2: cargo check handler + refactor (-40 lines)
- Add dedicated cargo check handler (most frequently used missing command)
- Extract run_cargo_filtered() to eliminate 90 lines of duplication
- Fix filter_cargo_build() to handle "Checking" prefix (not just "Compiling")
- Normalize exit code propagation in run_test()
Phase 3: Utility deduplication (-60 lines)
- Fix utils::truncate() Unicode handling (char-aware, not byte-based)
- Remove 5 duplicated utility functions across modules:
- 3x truncate() → use crate::utils::truncate
- 1x strip_ansi() → use crate::utils::strip_ansi
- Replace ~60 lines of inline package manager detection with utils::package_manager_exec()
- Clean: lint_cmd, prettier_cmd, playwright_cmd now use shared utils
Phase 4: Discover reporting improvements
- Add RtkStatus enum (Existing/Passthrough/NotSupported)
- Show status column in discover report to distinguish handler types
- Prevents future misleading "build 9 git subcommands" false analyses
Cleanup:
- Remove 2 unused imports (parser::ParseError, std::collections::HashMap)
- Reduce clippy warnings from 23 to 19
Testing:
- 220 tests pass
- 88 smoke tests pass
- All manual verification complete
Net: +10 lines, -3 P0 bugs, -5 duplications, +1 feature, +1 enum
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-06 10:37:50 +01:00
patrick szymkowiak
337ff36705
Merge pull request #60 from rtk-ai/release-please--branches--master--components--rtk
...
chore(master): release 0.9.2
v0.9.2
2026-02-05 17:31:20 +01:00
github-actions[bot]
459538c7a2
chore(master): release 0.9.2
2026-02-05 16:13:22 +00:00
patrick szymkowiak
2ade8fe030
Merge pull request #59 from FlorianBruniaux/fix/git-add-native-flags
...
fix(git): accept native git flags in add command (including -A)
2026-02-05 17:12:57 +01:00
Florian BRUNIAUX
40e7eadbaf
fix(git): accept native git flags in add command (including -A)
...
Problem:
- `rtk git add -A` failed with "unexpected argument '-A' found"
- Git flags like -A, -p, --all were rejected by Clap parser
- Only filenames could be passed to `git add`
Solution:
- Add `allow_hyphen_values = true` to Add command args (following PR #5 pattern)
- Change Add enum variant from `Add { files }` to `Add` (unified with other git commands)
- Modify run_add() to accept args slice and pass all arguments to git
- Add exit code propagation for consistency with other git commands
Impact:
- All native git add flags now work: -A, -p, --all, --update, etc.
- Maintains RTK compact output format ("ok ✓ 2 files changed, ...")
- Preserves backward compatibility (no args defaults to ".")
Testing:
- Manual: `rtk git add -A` works correctly
- All existing tests pass (154 passed)
- Smoke tests unchanged (git add not included in test-all.sh)
Fixes: Argument parsing error for git add with native flags
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-05 15:54:20 +01:00
patrick szymkowiak
9d38986e8d
Merge pull request #58 from rtk-ai/release-please--branches--master--components--rtk
...
chore(master): release 0.9.1
v0.9.1
2026-02-04 20:29:39 +01:00
github-actions[bot]
8c638e3782
chore(master): release 0.9.1
2026-02-04 17:24:08 +00:00
patrick szymkowiak
3df8ce5525
Merge pull request #57 from FlorianBruniaux/fix/rtk-tsc-show-all-errors
...
fix(tsc): show every TypeScript error instead of collapsing by code
2026-02-04 18:23:45 +01:00
Florian BRUNIAUX
67e8de8732
fix(tsc): show every TypeScript error instead of collapsing by code
...
The previous implementation grouped errors by error code within each
file, showing only the first message when multiple errors shared the
same code (e.g. TS2322). This hid critical debugging information and
forced users to bypass rtk entirely.
Changes:
- Show each error individually with line number and full message
- Capture and display tsc continuation/context lines
- Increase message truncation from 60 to 120 chars
- Remove artificial limits (was: 3 codes/file, 10 files max)
- Compact top-codes summary to a single line
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 18:12:46 +01:00
patrick szymkowiak
a5d0fd19fd
Merge pull request #55 from LivioGama/fix/rtk-init-global-path
...
Fix rtk init global path
2026-02-03 17:40:11 +01:00
patrick szymkowiak
690e58de8d
Merge pull request #54 from LivioGama/master
...
Fix install script URL
2026-02-03 17:36:17 +01:00
patrick szymkowiak
8aef730965
Merge pull request #56 from rtk-ai/release-please--branches--master--components--rtk
...
chore(master): release 0.9.0
v0.9.0
2026-02-03 17:14:09 +01:00
github-actions[bot]
ca53553501
chore(master): release 0.9.0
2026-02-03 16:12:12 +00:00
patrick szymkowiak
cb83da104f
Merge pull request #53 from FlorianBruniaux/feat/rtk-tree-clean
...
feat: rtk tree + fix rtk ls + full audit (phase 1-2-3)
2026-02-03 17:09:40 +01:00
Patrick szymkowiak
ea7cdb7a3b
fix(ls): compact output (-72% tokens) + fix discover panic
...
- ls: rewrite to strip permissions/owner/group/dates, show only
names with dir/ suffix and human sizes. Properly handle flag
ordering (path -l), -lh, multi-paths, --all.
- discover: remove orphan diff pattern that caused index out of
bounds panic (PATTERNS had 22 entries vs RULES 21)
- benchmark: add 8 ls test cases
- test-all: add 5 ls smoke tests
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-03 17:05:01 +01:00
Patrick szymkowiak
ffe0d2e037
chore: cleanup diff references, fix docker ps, widen diff truncation
...
- Remove rtk diff from docs, tests, discover registry (command exists
but was over-promoted)
- docker ps: include container ID in compact output
- diff_cmd: widen truncation from 35 to 70 chars per side
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-03 15:38:56 +01:00
Patrick szymkowiak
fcc14624f8
fix(find): rewrite with ignore crate + fix json stdin + benchmark pipeline
...
- find: replace fd/find subprocess with ignore::WalkBuilder for native
.gitignore support, fix "." pattern, fix --max file counting
- json: add stdin support via "-" path (same pattern as read)
- benchmark: one-line-per-test format with icons for CI logs,
local debug files only when not in CI, remove md upload/PR steps
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-03 15:38:17 +01:00
Florian BRUNIAUX
b13d92c9ea
fix(docs): escape HTML tags in rustdoc comments
...
Fixes 6 rustdoc warnings:
- Escape <action>, <detail>, <hash>, <branch>, <stats> tags
- Use backticks for [RTK:PASSTHROUGH] marker
All rustdoc warnings now resolved.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-03 11:33:40 +01:00
Florian BRUNIAUX
521eb1b9bc
docs(tracking): complete API documentation + rustdoc comments
...
Add comprehensive documentation for tracking.rs public APIs:
**New Files:**
- docs/tracking.md (12 pages)
- Architecture & data flow
- All public APIs (12 methods, 7 types)
- Usage examples (basic, CI/CD, dashboards, Rust lib)
- JSON/CSV export schemas
- Database schema & migrations
- Integration examples (GitHub Actions, Python, Rust)
- Security, performance, troubleshooting
- claudedocs/TRACKING_DOCUMENTATION.md
- Documentation summary & metrics
**Updated Files:**
- src/tracking.rs
- Module-level docs (//!)
- Comprehensive doc comments (///) for all public APIs
- Examples with error handling
- Deprecation notices for legacy functions
- README.md
- Pointer to docs/tracking.md after rtk gain section
**Coverage:**
- 7 public structs documented
- 12 public methods documented
- 3 utility functions documented
- 20+ code examples
- 3 integration examples (CI/CD, dashboards, Rust lib)
- JSON/CSV/SQL schemas
**Testing:**
- All 6 tracking tests still pass
- 100% coverage maintained
Closes gap: CLI was documented, but public APIs were not.
Now fully documented for external integration (CI/CD, dashboards, Rust lib usage).
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-03 11:22:20 +01:00
Florian BRUNIAUX
7975624d0a
feat: audit phase 3 + tracking validation + rtk learn
...
## Audit Tracking Phase 3 (Steps 0-6)
- Systematic tracking integration across all command modules
- TimedExecution pattern enforcement (9 files)
- Passthrough timing support for interactive commands
- Exit code preservation for CI/CD reliability
## Tracking Validation Tests
- 6 unit tests in src/tracking.rs (was 0)
- estimate_tokens, args_display, DB round-trip
- Passthrough non-dilution, TimedExecution timing
- 2 UTF-8 tests for gh_cmd truncate() (emoji support)
- scripts/test-tracking.sh: end-to-end smoke tests (9 checks)
## rtk learn (CLI Correction Detector)
- New module: src/learn/ (detector, report, orchestration)
- Analyzes Claude Code JSONL sessions for CLI error patterns
- Auto-generates .claude/rules/cli-corrections.md
- 18 new tests (detector: 15, report: 3)
- Commands: rtk learn [--write-rules] [--since N] [--format json]
## Provider Extensions
- ExtractedCommand: +output_content, +is_error, +sequence_index
- Backward compatible with existing discover::run()
- 3 new provider tests (capture, error flag, sequence)
## Test Results
✓ 201 unit tests passed (183 existing + 18 new)
✓ 9 tracking smoke tests passed
✓ cargo fmt + clippy clean
✓ No deprecation warnings
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-03 10:05:06 +01:00
Livio Gamassia
c58bd95062
Fix global init path and append behavior
2026-02-03 08:30:54 +00:00
Livio Gamassia
abe024db63
Fix install script URL
2026-02-03 08:19:29 +00:00
Florian BRUNIAUX
11d9ccf670
chore: trigger CI
...
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-03 06:48:22 +01:00
Florian BRUNIAUX
060c38b3c1
feat(read): add stdin support via "-" path
...
Add ability to read from stdin using the special path "-", following
Unix conventions. Also fixes a pre-existing bug in git.rs push output.
Changes:
- src/main.rs: Check for Path::new("-") and route to run_stdin()
- src/read.rs: Add run_stdin() function for stdin processing
- src/read.rs: Use Language::Unknown for stdin (no file extension)
- src/git.rs: Fix unused format! result in push command
- Unit test: test_stdin_support_signature verifies function exists
- Smoke tests: 1 assertion for stdin pipe
Usage:
echo "code" | rtk read -
cat file.txt | rtk read - --level aggressive
somecommand | rtk read - -n
Note: Stdin detection requires explicit "-" path to avoid hanging.
No automatic stdin detection is performed.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-02 23:33:45 +01:00