Skip to content

Commit 27282df

Browse files
authored
chore: release v0.12.1
1 parent c88ef20 commit 27282df

3 files changed

Lines changed: 145 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,149 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [0.12.1] - 2026-04-19
6+
7+
### Bug Fixes
8+
9+
- *(app)* Explain failures no longer abort -p mode after successful compile
10+
11+
### Documentation
12+
13+
- *(readme)* Slim to quickstart + link to docs/
14+
README grew to 431 lines over v0.11.0 and v0.12.0 — past the point
15+
where first-time readers scroll through the content they actually
16+
need (install + "does it do X?"). Splits into a focused README
17+
(121 lines) plus four topic pages under docs/:
18+
19+
- docs/usage.md — CLI flags, batch mode, filter mode, --json
20+
JSONL recipes, workspaces, completions
21+
- docs/shortcuts.md — main TUI, vim mode, filter mode tables
22+
- docs/integrations.md — VS Code, Neovim, Zed, tmux
23+
- docs/advanced.md — test suite mode, config, engine matrix,
24+
comparison vs terminal tools + regex101
25+
26+
The new README keeps the header, "who is this for?", one-liner
27+
install, five-line quickstart, a compressed feature list, and an
28+
engines-at-a-glance table. Everything deeper is one click away.
29+
30+
Total content preserved; anchors and internal links verified.
31+
- *(readme)* Add "Pairs well with" section linking agx/sift/stepwise
32+
Introduces rgx as one of three terminal-native step-through debuggers
33+
under the stepwise umbrella. Links the sibling tools (agx for agent
34+
timelines, sift for AI-write review) and the landing-site repo. Each
35+
tool is called out as independent — the section clarifies that no
36+
sibling install is ever required for rgx to work on its own.
37+
- *(roadmap)* Reframe as maintenance + bounded stepwise hooks
38+
Updates the public roadmap for the post-v0.12.0 / stepwise positioning
39+
state. The Road A opportunity-cost argument (rgx stays in maintenance;
40+
main-project capacity reinvests in SaaS) is preserved, but the plan
41+
now acknowledges a small integration backlog introduced by the
42+
stepwise umbrella.
43+
44+
- "Current direction" rewritten: maintenance + bounded stepwise hooks,
45+
not pure maintenance. Stepwise hooks live or die on whether they
46+
make rgx materially more useful to existing rgx users — not a
47+
reason to expand audience or rewrite the core.
48+
- New "Relationship to the stepwise stack" section with a three-tool
49+
table and a pointer to the landing repo. States the kill criterion:
50+
each tool earns its place independently; the suite cannot rescue a
51+
failing tool.
52+
- "Recently Shipped" updated through v0.12.0 and the post-release
53+
hardening pass (per-line byte cap, bracketed JSON keys, match_haystack
54+
pub, UTF-8-safe UI slicing, Result-returning constructor, unicode-
55+
aware json_path errors).
56+
- New "Open — bounded stepwise integration hooks" table. Each hook has
57+
two gates (sibling prerequisite + opportunity-cost fit) before it
58+
ships. No hook is promised; both get reassessed on the sibling tool's
59+
next release. If either turns out to need more than an evening, it
60+
gets parked by the opportunity-cost argument.
61+
- "Future considerations" preserved as low-priority parking spots
62+
(theme customization is the most-requested).
63+
- "Not planned" tightened: no AI/LLM inside rgx, no web version, no
64+
hosted pattern-sharing, no ripgrep-scope rewrite.
65+
- "When to rethink" aligned with the sibling roadmaps' discipline.
66+
67+
### Features
68+
69+
- *(filter)* Post-v0.11.0 hardening and cleanup pass
70+
Three new capabilities:
71+
72+
- 10 MiB per-line byte cap (MAX_LINE_BYTES) in read_input prevents
73+
an unbounded line from OOMing before --max-lines engages.
74+
Truncation is reflected in the returned `truncated` flag, and the
75+
max-lines-exceeded peek is now bounded to a single byte so a giant
76+
post-cap line can't OOM the peek itself.
77+
- Bracketed string-key syntax in json_path: ["hyphen-key"], ["日本語"],
78+
etc. Unlocks --json addressing for keys that aren't bare
79+
identifiers. Recognises \" and \\ escapes; unknown escapes error.
80+
- rgx::filter::match_haystack promoted to pub — the helper all three
81+
match paths already use is now callable from third-party
82+
integrations.
83+
84+
### Refactoring
85+
86+
- Clippy modernization + small simplifications across codebase
87+
Post-v0.12.0 sweep through every crate module. No behavior change;
88+
each hunk is either a modern-idiom rewrite clippy flagged or a
89+
dead-code / redundant-closure cleanup.
90+
91+
- main.rs: merge duplicate debug-jump-start match arms (Home and 'g'
92+
both call the same handler — fold into one arm)
93+
- ui/mod.rs: `border_type` doc comment now names the real parameter;
94+
`render_codegen_overlay` takes `EngineFlags` by value (it is Copy)
95+
- app.rs:
96+
- `truncate()` collapses two `chars()` passes into one `char_indices().nth()`
97+
- `history_next` uses `let...else` for the `None` early return
98+
- `map(String::as_str)` and `map(ToString::to_string)` replace one-shot
99+
closures that clippy::redundant_closure_for_method_calls flagged
100+
- explain/formatter.rs: `format!("{}", lit.c)``lit.c.to_string()`
101+
- engine/mod.rs: `|b| b.is_ascii_digit()``u8::is_ascii_digit`
102+
- engine/pcre2.rs: `and_then(|n| n.clone())``and_then(Clone::clone)`
103+
- engine/pcre2_debug.rs: `let...else` for the early `Vec::new()` return
104+
- filter/mod.rs: `extract_strings` flattens its JSON decode with
105+
`.ok().and_then(..)` instead of `match Ok/Err`
106+
- filter/ui.rs: `map(Vec::as_slice)` replaces the redundant closure
107+
- input/editor.rs: `line_end` uses `map_or`; `drain(a..b + 1)``drain(a..=b)`
108+
- config/workspace.rs: `match Ok/Err` collapses to `Result::is_ok_and`
109+
- ui/syntax_highlight.rs: `let...else` for the AST-parse early return
110+
111+
349 tests passing, clippy -D warnings clean, rustfmt clean.
112+
- *(engine)* Align EngineFlags default with runtime, add regex-style prefix
113+
No user-visible behavior change. Two cleanups that set up the next
114+
commit's `-p` fix and guard against a latent bug the existing tests
115+
weren't catching.
116+
117+
- `EngineFlags::default()` now has `unicode: true`. The old derived
118+
default had `unicode: false` (the bool default), which diverged from
119+
the runtime `Settings::default().unicode = true`. Every production
120+
caller already overrode this via the `EngineFlags { ... }` literal in
121+
main.rs, but tests using `EngineFlags::default()` were silently
122+
testing a configuration no user ever hits.
123+
- New `to_regex_inline_prefix` (private) is the `wrap_pattern` helper
124+
for the `regex` and `fancy-regex` engines. Emits `(?-u)` only when
125+
unicode is explicitly disabled; never emits `(?u)` because unicode
126+
is default-on in both engines. This is a correctness fix: emitting
127+
`(?u)` in front of a lookaround pattern has been observed to push
128+
fancy-regex into its non-fancy backend in our build, which then
129+
errors with "look-around not supported".
130+
- Existing `to_inline_prefix` stays as-is for PHP codegen (where `u`
131+
flips to mean "enable unicode", opposite of the regex crate).
132+
- Both `to_*` methods take `&self` for API stability; `#[allow]` on
133+
`clippy::wrong_self_convention` since `EngineFlags` is `Copy` so the
134+
borrow is free.
135+
136+
New tests:
137+
- `wrap_pattern_omits_prefix_when_flags_are_defaults` / `_emits_minus_u_when_unicode_disabled` /
138+
`_combines_enable_and_disable_unicode` / `_does_not_emit_u_when_unicode_on`
139+
pin the new prefix semantics.
140+
- `to_inline_prefix_still_emits_positive_u_for_php` — locks the split
141+
between the two prefix methods.
142+
- `test_lookahead_with_unicode_flag` / `test_lookbehind_with_unicode_flag`
143+
regression guards at the fancy-engine layer.
144+
145+
All 360 tests passing, clippy -D warnings clean, rustfmt clean.
146+
147+
5148
## [0.12.0] - 2026-04-18
6149

7150
### Documentation

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rgx-cli"
3-
version = "0.12.0"
3+
version = "0.12.1"
44
edition = "2021"
55
rust-version = "1.74"
66
authors = ["rgx contributors"]

0 commit comments

Comments
 (0)