assist v0.329
Refining the comment gate and linking Jira
Most of today refined yesterday’s comment gate. The first rough edge was that the gate blocked all comment edits, including removing them — so I relaxed it to allow trimming, meaning I can still delete or shrink existing comments freely while adding new ones stays gated. The bigger change was hardening the escape hatch: the pin that authorises an allowed comment is now delivered out-of-band (issuePin) rather than passed inline, so it can’t be forged in the same edit it’s meant to permit. With the gate carrying the policy properly, I dropped the old block-comments verify step, which had become redundant.
The other feature ties backlog items to Jira. A new assist backlog associate-jira command — and a /associate-jira slash command in front of it — links a ticket to a backlog item: it validates the key shape, fetches the issue to confirm it actually exists, and stores the key, with --clear to remove the association. It’s the connective tissue I’d been missing between my own backlog and the tickets that drive some of the work.
On the daemon side, I added a protocol-version handshake so the WSL and Windows daemons agree on a protocol version up front and a mismatch is caught cleanly at connect time rather than surfacing as confusing downstream failures. Three fixes rounded out the day: a --once session re-watches its done signal after a restore so it still auto-dismisses, the daemon no longer replays its whole log buffer to a reconnecting browser (which had been dumping a wall of stale lines on every reconnect), and the web UI now shows unmerged files in the git status.
A couple more fixes landed later in the cycle, both about sessions behaving as I expect. A session would go idle after a tool ran even though the agent was still working, because I only flipped the status to running on UserPromptSubmit and PreToolUse — adding a PostToolUse hook in ensureHooksSettings closes that gap so the status follows the agent when a tool completes and it resumes. And the review phase was getting too eager about rewinding: the prompt in buildReviewPrompt told the agent to rewind whenever a criterion still failed, which meant it would sometimes throw away already-approved, committed work. I replaced that with explicit precedence rules — approval plus a successful commit means the work is done, diverged-but-approved implementations still complete by default, and rewinding is now a confirm-first exception that must ask me before running assist backlog rewind. Never silently.