chore(release): prepare public source release
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
# Mercury Toolbox V2 Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** Rebrand the repository as Mercury Toolbox, add four new high-leverage CLI commands, and ship a first-class Windows installer that puts the full toolbox on PATH.
|
||||
|
||||
**Architecture:** Keep the toolbox as a Rust workspace of independent binaries with a shared CLI contract in `crates/common`. Add the new commands as focused crates with heuristic parsers and stable JSON payloads, and implement installation through PowerShell scripts that build and copy the binaries into a dedicated Mercury Toolbox bin directory.
|
||||
|
||||
**Tech Stack:** Rust stable, `lexopt`-style manual CLI parsing, shared `common` crate, `regex`, `serde_json`, PowerShell install scripts, `assert_cmd`, `predicates`, `tempfile`, and the existing Jade verification scripts.
|
||||
|
||||
---
|
||||
|
||||
### Task 1: Branding And Install Surface
|
||||
|
||||
**Files:**
|
||||
- Create: `docs/superpowers/specs/2026-04-21-mercury-toolbox-v2-design.md`
|
||||
- Create: `docs/superpowers/plans/2026-04-21-mercury-toolbox-v2-plan.md`
|
||||
- Modify: `Cargo.toml`
|
||||
- Modify: `README.md`
|
||||
- Modify: `docs/jade-discipline.md`
|
||||
- Create: `scripts/install-toolbox.ps1`
|
||||
- Create: `scripts/uninstall-toolbox.ps1`
|
||||
|
||||
- [ ] Record the Mercury Toolbox design and plan docs in the repo.
|
||||
- [ ] Rename top-level product-facing descriptions and README text from generic toolbox wording to `Mercury Toolbox` / `水星工具箱`.
|
||||
- [ ] Add an install section to the README covering:
|
||||
- `pwsh .\scripts\install-toolbox.ps1`
|
||||
- install root
|
||||
- PATH behavior
|
||||
- uninstall path
|
||||
- manual `cargo install --path` fallback
|
||||
- [ ] Write `scripts/install-toolbox.ps1` with idempotent bin copy and user PATH update behavior.
|
||||
- [ ] Write `scripts/uninstall-toolbox.ps1` with idempotent uninstall and PATH removal behavior.
|
||||
- [ ] Add focused script tests or temp-root verification coverage where practical.
|
||||
|
||||
### Task 2: Workspace Wiring For New Commands
|
||||
|
||||
**Files:**
|
||||
- Modify: `Cargo.toml`
|
||||
- Modify: `README.md`
|
||||
- Create: `fixtures/hits/rg-output.txt`
|
||||
- Create: `fixtures/diag/rust-errors.txt`
|
||||
- Create: `fixtures/diag/unity-errors.txt`
|
||||
- Create: `fixtures/logs/repetitive.log`
|
||||
- Create: `fixtures/binaries/stringscan-sample.bin`
|
||||
- Create: `crates/hitsnip/Cargo.toml`
|
||||
- Create: `crates/hitsnip/src/main.rs`
|
||||
- Create: `crates/hitsnip/src/lib.rs`
|
||||
- Create: `crates/diagpick/Cargo.toml`
|
||||
- Create: `crates/diagpick/src/main.rs`
|
||||
- Create: `crates/diagpick/src/lib.rs`
|
||||
- Create: `crates/logshape/Cargo.toml`
|
||||
- Create: `crates/logshape/src/main.rs`
|
||||
- Create: `crates/logshape/src/lib.rs`
|
||||
- Create: `crates/stringscan/Cargo.toml`
|
||||
- Create: `crates/stringscan/src/main.rs`
|
||||
- Create: `crates/stringscan/src/lib.rs`
|
||||
|
||||
- [ ] Register the four new crates in the workspace member list.
|
||||
- [ ] Add any workspace dependencies required by the new crates.
|
||||
- [ ] Add fixture files with stable, portable sample content for all four commands.
|
||||
- [ ] Add README command inventory entries for `hitsnip`, `diagpick`, `logshape`, and `stringscan`.
|
||||
|
||||
### Task 3: `hitsnip`
|
||||
|
||||
**Files:**
|
||||
- Create: `crates/hitsnip/Cargo.toml`
|
||||
- Create: `crates/hitsnip/src/lib.rs`
|
||||
- Create: `crates/hitsnip/src/main.rs`
|
||||
- Create: `crates/hitsnip/tests/hitsnip_cli.rs`
|
||||
- Use: `fixtures/hits/rg-output.txt`
|
||||
- Use: `fixtures/reading/sample.rs`
|
||||
|
||||
- [ ] Write failing tests for:
|
||||
- `rg -n` line parsing
|
||||
- merged context windows
|
||||
- JSON output shape
|
||||
- PowerShell pipeline usage
|
||||
- `--help`
|
||||
- [ ] Run `cargo nextest run -p hitsnip` and confirm the new tests fail for the expected missing behavior.
|
||||
- [ ] Implement hit parsing that correctly handles Windows drive prefixes and `path:line[:column]` shapes.
|
||||
- [ ] Implement per-file hit grouping, context expansion, max-gap merging, and compact numbered rendering.
|
||||
- [ ] Re-run `cargo nextest run -p hitsnip` until green.
|
||||
|
||||
### Task 4: `diagpick`
|
||||
|
||||
**Files:**
|
||||
- Create: `crates/diagpick/Cargo.toml`
|
||||
- Create: `crates/diagpick/src/lib.rs`
|
||||
- Create: `crates/diagpick/src/main.rs`
|
||||
- Create: `crates/diagpick/tests/diagpick_cli.rs`
|
||||
- Use: `fixtures/diag/rust-errors.txt`
|
||||
- Use: `fixtures/diag/unity-errors.txt`
|
||||
- Use: `fixtures/reading/sample.rs`
|
||||
- Use: `fixtures/reading/sample.cs`
|
||||
|
||||
- [ ] Write failing tests for:
|
||||
- Rust diagnostic extraction
|
||||
- Unity/C# diagnostic extraction
|
||||
- severity filtering
|
||||
- `--with-source`
|
||||
- JSON output shape
|
||||
- `--help`
|
||||
- [ ] Run `cargo nextest run -p diagpick` and confirm failure.
|
||||
- [ ] Implement heuristic text parsers for the supported diagnostic families plus JSONL input support.
|
||||
- [ ] Implement optional source loading with context lines and safe missing-file handling.
|
||||
- [ ] Re-run `cargo nextest run -p diagpick` until green.
|
||||
|
||||
### Task 5: `logshape`
|
||||
|
||||
**Files:**
|
||||
- Create: `crates/logshape/Cargo.toml`
|
||||
- Create: `crates/logshape/src/lib.rs`
|
||||
- Create: `crates/logshape/src/main.rs`
|
||||
- Create: `crates/logshape/tests/logshape_cli.rs`
|
||||
- Use: `fixtures/logs/repetitive.log`
|
||||
|
||||
- [ ] Write failing tests for:
|
||||
- normalization of volatile fields
|
||||
- grouping repeated templates
|
||||
- `--top` and `--min-count`
|
||||
- JSON output shape
|
||||
- PowerShell pipeline usage
|
||||
- `--help`
|
||||
- [ ] Run `cargo nextest run -p logshape` and confirm failure.
|
||||
- [ ] Implement conservative normalization and frequency grouping logic.
|
||||
- [ ] Implement compact text summaries plus JSON records with count and sample metadata.
|
||||
- [ ] Re-run `cargo nextest run -p logshape` until green.
|
||||
|
||||
### Task 6: `stringscan`
|
||||
|
||||
**Files:**
|
||||
- Create: `crates/stringscan/Cargo.toml`
|
||||
- Create: `crates/stringscan/src/lib.rs`
|
||||
- Create: `crates/stringscan/src/main.rs`
|
||||
- Create: `crates/stringscan/tests/stringscan_cli.rs`
|
||||
- Use: `fixtures/binaries/stringscan-sample.bin`
|
||||
|
||||
- [ ] Write failing tests for:
|
||||
- printable string extraction
|
||||
- category detection for URL, DLL, namespace, Unity, IL2CPP, and BepInEx-like strings
|
||||
- summary mode vs detail mode
|
||||
- JSON output shape
|
||||
- PowerShell path pipeline
|
||||
- `--help`
|
||||
- [ ] Run `cargo nextest run -p stringscan` and confirm failure.
|
||||
- [ ] Implement printable-string scanning and category classification helpers.
|
||||
- [ ] Implement summary output, filtered detail output, and JSON payloads.
|
||||
- [ ] Re-run `cargo nextest run -p stringscan` until green.
|
||||
|
||||
### Task 7: Full Documentation And Install Verification
|
||||
|
||||
**Files:**
|
||||
- Modify: `README.md`
|
||||
- Modify: command `after_help` sections in the four new crates
|
||||
- Modify: install/uninstall scripts as needed by verification
|
||||
|
||||
- [ ] Ensure every new command has PowerShell examples in README and `--help`.
|
||||
- [ ] Verify the install script copies all toolbox commands, not just the new ones.
|
||||
- [ ] Verify PATH update behavior against an isolated temp install root when possible.
|
||||
- [ ] Verify uninstall removes the Mercury Toolbox bin path entry without touching unrelated PATH content.
|
||||
|
||||
### Task 8: Final Verification
|
||||
|
||||
**Files:**
|
||||
- Modify only as required by verification failures
|
||||
|
||||
- [ ] Run `cargo fmt --all`.
|
||||
- [ ] Run `cargo nextest run --all-targets --all-features`.
|
||||
- [ ] Run `cargo clippy --all-targets --all-features -- -D warnings -W clippy::pedantic -W clippy::nursery`.
|
||||
- [ ] Run `pwsh -NoProfile -File .\scripts\check-jade.ps1`.
|
||||
- [ ] Fix any regressions and repeat until the full workspace passes.
|
||||
Reference in New Issue
Block a user