Artiom Tofan
2e194efb3a
fix: resolve Windows command wrapper execution ( #269 )
...
- add PATHEXT-aware command resolution via which\n- migrate affected command runners to resolved_command\n- add regression coverage for wrapper/fallback behavior
2026-03-12 15:36:19 +01:00
Patrick szymkowiak
a8dbe33b84
feat: add structured dotnet support (build/test/restore/format)
...
Integrate PR #172 by @danielmarbach onto develop:
- MSBuild binlog parser (binary format, gzip, 7-bit varint)
- TRX test result parser (quick-xml)
- Format report JSON parser
- Subcommand routing: build, test, restore, format + passthrough
- Sensitive env var scrubbing (GH_TOKEN, AWS_SECRET_ACCESS_KEY, etc.)
- Fallback to text parsing when binlog unavailable
- 86-93% token savings on real .NET projects
Maintainer fixes applied:
- Removed binlog temp path from output (wastes tokens)
- Dropped hook file changes (incompatible with develop architecture)
- Fixed unused variable warnings
888 tests pass.
Signed-off-by: Patrick <patrick@rtk-ai.com >
Signed-off-by: Patrick szymkowiak <patrick.szymkowiak@innovtech.eu >
2026-03-11 21:19:40 +01:00
github-actions[bot]
cc93afc954
chore(master): release 0.28.2 ( #473 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-10 20:26:41 +01:00
github-actions[bot]
aef823c8e6
chore(master): release 0.28.1 ( #466 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-10 18:13:21 +01:00
github-actions[bot]
b9cb238144
chore(master): release 0.28.0 ( #378 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-10 11:46:09 +01:00
github-actions[bot]
34b2474d4c
chore(master): release 0.27.2 ( #365 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-06 12:54:04 +01:00
github-actions[bot]
093e431193
chore(master): release 0.27.1 ( #362 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-06 09:46:33 +01:00
github-actions[bot]
f693e060c6
chore(master): release 0.27.0 ( #353 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-05 23:17:41 +01:00
github-actions[bot]
32ade38e0a
chore(master): release 0.26.0 ( #337 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-05 21:02:37 +01:00
patrick szymkowiak
baff6a2334
feat: anonymous telemetry ping (1/day, opt-out) ( #334 )
...
* feat: add anonymous telemetry ping (1/day, opt-out)
Fire-and-forget daily ping to track active installs for BPI metrics.
- SHA-256 device hash (hostname:user), no PII
- Opt-out: RTK_TELEMETRY_DISABLED=1 or config.toml [telemetry] enabled=false
- Token injected at compile time via option_env!, not in source
- 23h throttle via marker file, 2s timeout, non-blocking thread
* ci: inject RTK_TELEMETRY_TOKEN at build time in release workflow
All 3 build jobs (binary, DEB, RPM) now receive the token from
GitHub secrets so option_env!() compiles it into release binaries.
* refactor: externalize telemetry URL via option_env!(RTK_TELEMETRY_URL)
URL and token are both injected at compile time — no hardcoded
server address in source code. Builds without the env var simply
skip telemetry silently.
2026-03-05 15:34:49 +01:00
github-actions[bot]
99b9f9f926
chore(master): release 0.25.0 ( #321 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-05 14:32:19 +01:00
github-actions[bot]
dd643d2322
chore(master): release 0.24.0 ( #302 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-04 12:48:19 +01:00
aesoft
c9087a4b07
Merge branch 'master' into feat/hook-integrity
2026-03-03 09:48:54 +01:00
github-actions[bot]
44cb9ec44c
chore(master): release 0.23.0 ( #250 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-28 22:10:06 +01:00
github-actions[bot]
ab5dbb1a34
chore(master): release 0.22.2 ( #230 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-20 18:20:48 +01:00
github-actions[bot]
1c025e9bb8
chore(master): release 0.22.1 ( #210 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-19 20:07:20 +01:00
github-actions[bot]
8cb198e245
chore(master): release 0.22.0 ( #201 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-18 16:06:06 +01:00
github-actions[bot]
c29644b7ab
chore(master): release 0.21.1 ( #179 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-17 23:06:03 +01:00
github-actions[bot]
aa0b462182
chore(master): release 0.21.0 ( #178 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-17 22:49:48 +01:00
github-actions[bot]
577e082c5d
chore(master): release 0.20.1 ( #167 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-17 10:33:27 +01:00
github-actions[bot]
78c9e94b7c
chore(master): release 0.20.0 ( #152 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-17 07:29:19 +01:00
github-actions[bot]
5231f98973
chore(master): release 0.19.0 ( #148 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-16 20:16:17 +01:00
github-actions[bot]
a82b2872ba
chore(master): release 0.18.1 ( #133 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-16 08:22:16 +01:00
github-actions[bot]
2bc7d207b6
chore(master): release 0.18.0 ( #132 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-15 16:00:57 +01:00
github-actions[bot]
ec88f5c109
chore(master): release 0.17.0 ( #126 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-15 15:28:48 +01:00
github-actions[bot]
d67ade9ecf
chore(master): release 0.16.0 ( #121 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-14 14:48:30 +01:00
github-actions[bot]
f90a1cbfa7
chore(master): release 0.15.4 ( #120 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-14 13:15:47 +01:00
playb0t
95677e9786
feat(security): add SHA-256 hook integrity verification
...
Add runtime integrity verification for rtk-rewrite.sh to detect
unauthorized modifications to the PreToolUse hook.
The hook auto-approves all rewritten commands via permissionDecision:
"allow", bypassing Claude Code's permission prompts. Any modification
by a local process (malicious dependency, compromised npm postinstall,
etc.) becomes a command injection vector.
Changes:
- New module: src/integrity.rs (SHA-256 hash, verify, runtime gate)
- rtk init: stores hash after hook installation (idempotent)
- rtk verify: new subcommand for manual integrity check
- rtk init --show: displays integrity status
- rtk uninstall: cleans up hash file
- Operational commands check integrity at startup (fail closed)
- Emergency bypass: RTK_SKIP_INTEGRITY=1
Ref: SA-2025-RTK-001 (Finding F-01)
Ref: PromptArmor hook hijacking (Oct 2025)
Ref: CVE-2025-54794, CVE-2025-54795
2026-02-14 18:37:40 +07:00
github-actions[bot]
0517182f5b
chore(master): release 0.15.3 ( #108 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-13 18:08:26 +01:00
github-actions[bot]
737e94696f
chore(master): release 0.15.2 ( #104 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-13 16:06:02 +01:00
github-actions[bot]
61405c8676
chore(master): release 0.15.1 ( #96 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-13 00:40:29 +01:00
github-actions[bot]
72b90200bd
chore(master): release 0.15.0 ( #90 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-12 22:12:23 +01:00
github-actions[bot]
bec3ce8927
chore(master): release 0.14.0 ( #79 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-12 12:29:14 +01:00
github-actions[bot]
9e764c459f
chore(master): release 0.13.1
2026-02-12 10:59:50 +00:00
github-actions[bot]
0d388b3f05
chore(master): release 0.13.0
2026-02-12 09:43:19 +00:00
github-actions[bot]
3dde699240
chore(master): release 0.12.0
2026-02-09 02:00:59 +00:00
github-actions[bot]
22182e48d2
chore(master): release 0.11.0
2026-02-07 22:13:14 +00:00
patrick szymkowiak
a3814fc3d3
Merge branch 'master' into feat/auto-patch-settings-json
2026-02-07 23:12:50 +01:00
github-actions[bot]
109f5d66db
chore(master): release 0.10.0
2026-02-07 16:01:00 +00: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
github-actions[bot]
0cd8d6ea95
chore(master): release 0.9.4
2026-02-06 19:15:05 +00:00
github-actions[bot]
c072201629
chore(master): release 0.9.3
2026-02-06 13:36:27 +00:00
github-actions[bot]
459538c7a2
chore(master): release 0.9.2
2026-02-05 16:13:22 +00:00
github-actions[bot]
8c638e3782
chore(master): release 0.9.1
2026-02-04 17:24:08 +00:00
github-actions[bot]
ca53553501
chore(master): release 0.9.0
2026-02-03 16:12:12 +00:00
github-actions[bot]
5eb65f61d7
chore(master): release 0.8.1
2026-02-02 15:48:14 +00:00
github-actions[bot]
92a3333d10
chore(master): release 0.8.0
2026-02-02 13:32:50 +00:00
Florian BRUNIAUX
cb71237b80
docs: document execution time tracking feature in v0.7.1
...
Add comprehensive documentation for the execution time tracking feature
introduced in upstream v0.7.1:
- CHANGELOG.md: Add v0.7.1 entry with execution time tracking feature
- CHANGELOG.md: Document parser infrastructure and migrations
- README.md: Update rtk gain analytics section with time metrics
- ARCHITECTURE.md: Add exec_time_ms column to database schema
- ARCHITECTURE.md: Update INSERT statement with exec_time_ms
- ARCHITECTURE.md: Update REPORTING example with time metrics
The feature tracks command execution duration with <0.1ms overhead
and displays total/average execution time in rtk gain output.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-02 10:44:34 +01:00
Florian BRUNIAUX
edab4e142e
feat: add parser infrastructure with three-tier fallback system
...
Implement Phase 3 of maintainability plan - unified parser architecture:
**Core Components:**
- parser/mod.rs: OutputParser trait + ParseResult enum (Full/Degraded/Passthrough)
- parser/error.rs: ParseError types with thiserror (JSON, Pattern, Partial, etc.)
- parser/types.rs: Canonical types (TestResult, LintResult, DependencyState, BuildOutput)
- parser/formatter.rs: TokenFormatter trait with Compact/Verbose/Ultra modes
- parser/README.md: Complete usage guide and migration examples
**Three-Tier Fallback System:**
1. Tier 1 (Full): Complete JSON parsing with structured data
2. Tier 2 (Degraded): Partial regex extraction with warnings
3. Tier 3 (Passthrough): Truncated raw output with [RTK:PASSTHROUGH] marker
**Benefits:**
- Never returns false data silently (fixes prisma_cmd issue)
- Graceful degradation on tool version changes
- Unified interface across all tool types
- Observable degradation with [RTK:DEGRADED] warnings
- Foundation for Phase 4 module migrations
**Dependencies:**
- Added thiserror 1.0 for structured error types
**Testing:**
- 3 unit tests for ParseResult tier system
- Tests pass: tier(), is_ok(), map(), warnings()
Next: Phase 4 - Migrate existing modules to use parser trait
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-02 08:43:19 +01:00
github-actions[bot]
c04fe839b8
chore(master): release 0.7.0
2026-02-01 19:07:31 +00:00