All features

A rule starts from a preset, not an empty regex box

Try the real interface

Explore this workspace.

Real Torbie UI · mock sessions
Tab bar
Loading Torbie…
Technical background

Add rule is a split button whose caret offers nineteen searchable ready-made rules, and an Apply preset dropdown rewrites the rule you have open. A preset does not own its pattern: anything an integration already matches takes the pattern from that manifest, so the two cannot drift apart.

The problem

Adding a Link Tooltip rule started with an empty regex box. Almost every rule anyone actually wants — a ticket key, a commit hash, a pull request, a media file — is a pattern somebody has already written, and writing it again by hand is both work and a second copy that drifts.

How it works

Add rule is a split button whose caret offers nineteen searchable ready-made rules, and an Apply preset dropdown inside the editor rewrites the rule you have open. The canonical catalog is Lintel's presets.json; both terminals consume generated copies. A preset does not own its pattern: anything an integration already matches takes the pattern from that manifest, selected by running the manifest's own matchers against a canonical example the preset names.

Details
  • The join fails safe. No matcher claims the example, or more than one does, and the preset is simply not offered — rather than falling back to a hardcoded twin that would drift.
  • Presets are per matcher, not per subject, because that is how the manifests are written. Where the reference merges pull|issues into one preset, here they are separate.
  • \b[0-9a-f]{7,40}\b, the reference's commit-hash pattern, is carried here as \b(?=[0-9a-f]*[a-f])[0-9a-f]{7,40}\b. Without the letter it demands, every seven-digit number in the output is a commit — PIDs, ports, epoch seconds — and a rule that decorates everything gets turned off.
  • Applying a preset resets the delay and width overrides and the button suppression, but keeps custom actions: they are the one part of a rule that is unambiguously the user's own work.
  • Every preset is timed through the ReDoS guard and against adversarial input at 512 and 4096 characters — measured worst 0.06 ms to check, 0.05 ms to match. A preset the guard would then refuse is a rule that silently never fires.
What this does not claim
  • The source catalogue records no separate caveats for this entry. The implementation and evidence above define its scope.
Source commits
LinksAdded 2026-09-0618 files+1,340 / −250 lines