intent/static/js/intent.js
Alec Perkins 5811e72a0c Add issues and comment threads (Phase 3)
Issues: per-project numbers, statuses (open, accepted, rejected,
withdrawn, duplicate), feature links, edits, and a timeline of comments
and events. From an issue, collaborators create or update a feature
with the revision tied to the issue and an option to accept it.

Comments: general and line-anchored threads on features, one
discussion thread per issue, edit history, tombstone deletes, resolve,
and promoting a feature thread to an issue. Line threads attach to
top-level Markdown blocks and go outdated only when the text changes.

HTMX swaps threads in place with focus management; every action also
works as a plain form post. Markdown headings are re-levelled so user
text never skips heading levels on the page.

The example flow from concept.md (steps 1-7) is covered end to end in
tests/test_example_flow.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 09:18:45 -04:00

9 lines
455 B
JavaScript

// Keyboard and screen-reader focus after HTMX swaps a thread in place.
// The server marks the element to land on (a new or edited comment, or the thread itself)
// with data-autofocus; without this, focus would fall back to the top of the page.
document.addEventListener("htmx:afterSettle", function () {
var target = document.querySelector("[data-autofocus]");
if (!target) return;
target.removeAttribute("data-autofocus");
target.focus();
});