fix(terminal): linear-time link-provider regex; always allow blob workers in CSP

cmdPattern's empty-matchable unbounded arg group backtracked exponentially
on wrapped heredoc/table lines — hovering one froze the tab for minutes.
Non-empty tokens + bounded reps make it O(n); regression test extracts the
shipped patterns and pins timing on the real killer shapes.

worker-src 'self' blob: is now unconditional so terminal-ui's _safeYield
tick worker (throttling escape) isn't CSP-blocked on non-gesture installs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
arkon
2026-06-10 18:06:45 +02:00
co-authored by Claude Fable 5
parent fad32eeaab
commit beeec63f72
17 changed files with 317 additions and 105 deletions
-39
View File
@@ -56,42 +56,3 @@ This session is managed by Codeman and runs inside tmux (`CODEMAN_MUX=1` confirm
- NEVER kill your own session: no `tmux kill-session`, `pkill tmux`, or `pkill claude`.
- The session persists across disconnects — your work is safe.
- Hooks may auto-format or validate after writes; unexpected tool behavior usually means a hook ran. Keep working.
## Ralph Loop (Codeman Autonomous Mode)
Start: `/ralph-loop:ralph-loop` · Cancel: `/ralph-loop:cancel-ralph` · Help: `/ralph-loop:help`
You are in a Ralph loop when the prompt contains a completion phrase (e.g. `<promise>COMPLETE</promise>`). While looping:
- Work incrementally: one sub-task at a time — implement, verify, commit, move on.
- Fix failing tests and lint errors before starting the next task.
- Check `git log --oneline -10` / `git diff HEAD~1` before retrying an approach that already failed.
- Keep testing to ~20% of total effort; prioritize implementation. Don't refactor working code or add unrequested
features as busy work.
- If the prompt sets a minimum duration (e.g. "work for 4 hours"), record the start time (`date +%s`) and, when the
primary tasks finish early, keep generating useful related work (edge cases, coverage, docs, cleanup, hardening)
until the minimum time is reached.
Output the completion phrase ONLY when every requirement is verifiably done: all tests pass, lint is clean, the build
succeeds, and changes are committed. Never output it early — and never withhold it for busy work once everything is
genuinely done.
### RALPH_STATUS block (required)
End EVERY response during a Ralph loop with exactly this block — Codeman parses it to track the loop:
```
---RALPH_STATUS---
STATUS: IN_PROGRESS | COMPLETE | BLOCKED
TASKS_COMPLETED_THIS_LOOP: <number>
FILES_MODIFIED: <number>
TESTS_STATUS: PASSING | FAILING | NOT_RUN
WORK_TYPE: IMPLEMENTATION | TESTING | DOCUMENTATION | REFACTORING
EXIT_SIGNAL: false | true
RECOMMENDATION: <one line: what to do next>
---END_RALPH_STATUS---
```
- `EXIT_SIGNAL: true` only when ALL tasks are verifiably done — then also output the completion phrase.
- `STATUS: BLOCKED` when you need human input; describe the blocker in RECOMMENDATION.
- Never set `EXIT_SIGNAL: true` while tests are failing.