Skip to content

contrib: git-issue-board, a self-contained HTML page over a repository's issues - #5

Draft
mparrett wants to merge 1 commit into
nnunley:mainfrom
mparrett:contrib/board-viewer
Draft

mparrett wants to merge 1 commit into
nnunley:mainfrom
mparrett:contrib/board-viewer

Conversation

@mparrett

Copy link
Copy Markdown

Draft, for a look rather than a merge. We started using git-issue today on a shared repository (39 of your items, 16 of ours) and the first thing missing was a way to read the board on a phone, where git issue list is not an option. This is that page.

What it is. contrib/board/git-issue-board.py reads the notes through --porcelain list, export and show, and writes one self-contained HTML file: issues grouped by status in working order (in progress, review, blocked, open, deferred, closed), priority first within a group; a status filter, assignee dropdown and search kept in the URL hash so a filtered view is a link; a dependency graph as inline SVG for the issues that take part in an edge (solid blocks and parent_of, dashed relates_to); each card expands to the description, comments, author, dates and the git issue show line. Light and dark follow the OS, and the layout holds at phone width. Python standard library only; git-issue on PATH.

git fetch origin 'refs/notes/issue-*:refs/notes/issue-*'
contrib/board/git-issue-board.py            # git-issue-board.html in the cwd
contrib/board/git-issue-board.py --repo ~/src/other -o /tmp/board/index.html

Serve the output directory with any static server for a phone; the footer dates the snapshot and names the commit it came from.

Why contrib/ and why a draft. It is a consumer of the porcelain, not a change to the tool, so it sits beside the Emacs client rather than in bin/. Whether you want it in the repository at all, under contrib/ or linked from the docs as an external tool, is your call; the draft is so you can see it and say. It runs 55 issues in about 6 s because it calls export once per issue (#3); when that is fixed the loop collapses to one call.

Checked on a 55-issue repository, on a repository with no notes (exits 1 with the fetch line), and on a non-repository path; screenshots at desktop and 390 px, light and dark, no console errors, no horizontal scroll.

🤖 Generated with Claude Code

…y's issues

A read-only view for a laptop or a phone: status groups in working order,
filters and search kept in the URL hash, the dependency graph as inline
SVG, each card expanding to its body and comments. Python standard
library only; reads the notes through --porcelain list, export and show.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant