• 0 Open
    5 Closed
    Updated 2026-05-16 15:09:55 +03:00
    Closed 2026-05-16 00:32:52 +03:00

    Push-update every milestone progress bar over SSE so open/closed issue counts and the completion bar move in real time as issues are closed/reopened/retargeted — no page refresh.

    Same architecture as the project-board SSE feature (oleks/gitea#7 + the #8 fix). Reuses the existing /user/events SharedWorker transport, per-entity event names, publish-time permission filter, and session-tag self-suppression.

    Scope (decided): ALL milestone-count-affecting mutations (issue close/reopen, add/remove issue from milestone, issue deletion, milestone create/edit/close/delete) and EVERY place a milestone progress bar renders (milestone list page, single milestone view, issue-sidebar mini-bar, issues-list milestone header).

    Hard constraint carried from #8: the async publish goroutine MUST use a process-lifetime context (graceful.GetManager().ShutdownContext()), NOT the request context — reusing the request ctx races with DB-session teardown and silently drops every event. Do not reintroduce that bug.

    Deploy must follow the clean git-pinned chain and the store-path verification gate from oleks/claude-plugin-cluster#12 (no --override-input shortcuts; assert running /proc//exe store path == nix eval .#gitea-local-fork.outPath; unique version string).