Adds a PreToolUse(Bash) hook (block-backslash-winpath.sh) that rejects commands
redirecting/writing to a backslashed Windows drive path (e.g. > D:\claudetools\
.claude\current-mode). On Git Bash those strip the backslashes and PUA-substitute
':' (U+F03A), creating garbled junk files that have repeatedly polluted the repo.
The hook quote-strips the command first, so the pattern appearing inside strings
or commit messages does not false-trigger; Windows-tool args (icacls, pwsh -File)
and forward-slash/relative paths pass. Wired into settings.json so every machine
picks it up on /sync. Pairs with the sync.sh staging guard.
Also: CLAUDE.md note on the Windows mode-write path; record jq install on GURU-KALI.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Removed 5 tracked files whose names were mangled Windows paths (C:\ProgramData\...,
D:\claudetools\.claude\current-mode, and version-bump script fragments) — the
illegal :/\ chars were stored as Unicode Private-Use-Area substitutes (U+F03A, U+F00A).
Added purge_garbled_paths() to sync.sh: before each 'git add -A', any UNTRACKED path
containing control chars, ':', '\', or PUA U+E000-U+F8FF bytes is removed and not
staged, so this cruft never reaches Gitea again. Tracked content is never auto-deleted.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The linked ticket subject must start with "Estimate - " before an estimate
task is considered complete. Added as criterion [4] in both the hard rules
block and the workflow success criteria block, with a self-correction step
(PUT /tickets/{id}) if the check fails.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Change the linked ticket subject format from "Estimate: <subject>" to
"Estimate - <subject>" per Winter's request for consistent formatting.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add scripts/web-fetch-chrome.py — drives the installed Chrome 148 headlessly
via Playwright (channel="chrome", no Chromium download), runs JS, strips the
HeadlessChrome UA tell, isolated profile so it never touches a human's open
Chrome. Wire it into DISCORD_CLAUDE.md ("Web Research / Bot-Blocked Sites":
WebFetch first, real-Chrome fallback) and refine the headless rule to permit
headless fetching while still forbidding visible/interactive browser windows.
Add playwright to requirements.txt (no `playwright install` needed). Restarted bot.
Tested: static + JS-rendered pages render; UA reports Chrome/148 (not Headless).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Rob's CAN list granted full Syncro "same as any tech" (incl. bill time +
create invoices), but the CANNOT list forbade billing actions (add line
items, create invoices, update ticket status) — a direct conflict that left
the bot's behavior on Rob's billing requests undefined. Per Mike, Rob gets
full Syncro including billing; remove the contradicting CANNOT line. Restarted bot.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Pulled 3 commits from DESKTOP-0O8A1RL (Windows machine)
- Synced 10 global commands to ~/.claude/commands/
- Completed directives self-assessment (no violations)
- Documented cross-machine work context
- Total session log: 739 lines with complete context
Session complete. All machines synchronized.
- Updated WordPress version to 7.0 in encrypted vault
- Documented vault access commands and structure
- Added vault commit details (b7a7804)
- Total session log now 655 lines with complete context