Skip to content

feat: v0.13 Sprint summary - #3

Merged
hazeliscoding merged 17 commits into
mainfrom
release/v0.13
Oct 7, 2026
Merged

hazeliscoding merged 17 commits into
mainfrom
release/v0.13

Conversation

@hazeliscoding

@hazeliscoding hazeliscoding commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

The v0.13 milestone from ROADMAP.md: the board opens with how the sprint is going, and turns that into a standup you can paste into Slack or Teams in one click. This stays a draft until the milestone's "Done when" holds.

Decisions (2026-09-29)

  • The health strip tells the sprint's story: days left, open, needs attention, merged and median time to merge, each with a one-line note. Per-status counts stay in the table headings.
  • Sprint numbers are the team's. Author chips, search and snoozes never change the strip or the standup. They only shape the tables and the Sweep.
  • Each open PR appears once in the standup, in its most urgent group: Blocked, Needs attention, then In review. Merged since the last working day comes first. Drafts stay out.
  • Lines name the author's login as plain text, with no @mention and no per-person counts.
  • Copy standup writes rich text and Markdown together, so Slack and Teams paste it formatted with PR links, and plain-text places get Markdown.
  • Markdown links are written [ref](<url>), so Discord doesn't stack a preview card per link. The formatted version writes non-ASCII characters as HTML entities.
  • One click, no preview. The button says what it copied, and only appears when the board's period includes today.
  • The sprint-end line moves from the Sweep header into the strip.
  • No new GitHub fields, so sweep time is unchanged. The sweep result's schema goes to 6, so the first refresh after updating is a full one.

Decisions (2026-10-07)

  • The portable exe says when a new version is out, added to this milestone. It checks on the installed build's schedule, downloads nothing, and the top bar's Download vX.Y.Z opens the release page. It doesn't update itself: electron-updater only installs through the NSIS installer.

Progress

  • Roadmap, AGENTS.md and this pull request
  • Paste test in Teams and Discord (Slack skipped)
  • core/summary.ts with tests
  • Health strip: the sprint's story
  • core/standup.ts with tests
  • Copy standup
  • Screenshots, README, keyboard pass, bundle size
  • Portable exe: update notice
  • Release: v0.13.0, with notes in docs/releases/v0.13.0.md

What changed

  • Health strip: days left, open (and not yet approved), needs attention (and how much is blocked), merged (and since yesterday), and median time to merge. Always the whole team.
  • Copy standup at the end of the strip. The confirmation line says what it copied.
  • The Sweep header no longer has the sprint-end line; it's in the strip now.
  • Under the hood: core/summary.ts and core/standup.ts in main, with tests. The grouping rule is standupGroup in the attention engine. The sweep result's schema is 6, so the first refresh after updating is a full one. No new GitHub fields, so sweeps take as long as before.
  • Portable exe: a Download vX.Y.Z button in the top bar when a new release is out, opening its release page. The installer still updates itself.
  • Renderer size: 989.0 KB, 2.1 KB more than v0.12.

Screenshots

The board states that changed, shot with node e2e/screenshot.mjs --fixtures. All 32 are on the pr-assets branch under v0.13/.

Light theme
State v0.12 v0.13
busy
busy-standup new
calm
empty
error
loading
update-portable new
Dark theme
State v0.12 v0.13
busy
busy-standup new
calm
empty
error
loading
update-portable new

Testing

Build, unit tests and design checks

npm install
npm run build
npm test
npm run check
  • Eleven … pass lines, including summary and standup.
  • npm run check ends with contrast: 63 pairs pass AA in both themes and assets: no remote URLs, stray fonts or raw colors.

Fixture screenshots (no token, no network)

cd desktop
node e2e/screenshot.mjs --fixtures
  • desktop/e2e/shots/ holds 32 images, including busy-standup and update-portable. Your clipboard is untouched: the script stubs it.

Portable update notice

  • A local package versioned 0.11.0, run as the portable launcher runs it, offered Download v0.12.0 from the live releases and downloaded nothing.
  • update-portable shows Download v0.13.1 in the top bar, in both themes.
  • The installed build is unchanged: update-downloading and update-ready look as before.
  • After v0.13.0 ships, the v0.13.0 portable exe shows the button once a newer release is out, and it opens that release's page.

On your own account (classic token)

  • First refresh after updating is a full one (the cache format changed), then the strip fills in.
  • The strip reads right: days left and the end date, open and not approved, needs attention with how many are blocked, merged and how many since yesterday, and the median time to merge.
  • Team-wide: pick an author chip, type in search, snooze a row. No number in the strip changes, while the tables and the Sweep do.
  • Needs attention matches the Sweep's count before you snooze anything.
  • Copy standup, then paste into Teams: bold headings, PR links, bullet lists, and now a gap between the title and the first group.
  • Paste into Discord: Markdown with working links and no preview cards.
  • The standup agrees with the strip: Blocked plus Needs attention equals the strip's Needs attention, and "Merged since …" matches the Merged note.
  • Only for today: step to next sprint and Copy standup disappears; Current brings it back.
  • Keyboard: Tab reaches Copy standup right after the top bar, and Enter copies.

Paste test (done before building)

  • Teams: bold headings, bullet lists and PR links survive; a title's Markdown and HTML characters show as typed; one preview card for the first link, removable with its ×.
  • Discord: takes the Markdown version; no preview cards once links are [ref](<url>).
  • Slack: not tested. It gets the same formatted version as Teams.

…in main

Days left, open, needs attention, merged and median time to merge, team-wide: author chips, search and snoozes never change them. The summary replaces sprintRisk in the sweep result (schema 6), the sprint-end line moves from the Sweep header into the strip, and standupGroup in the attention engine decides what counts as blocked.
…as rich text and Markdown

Merged since the last working day, then Blocked, Needs attention and In review, each open PR once, from the attention engine. Links are [ref](<url>) so Discord doesn't stack preview cards, and the HTML is plain ASCII so no app misreads its encoding.
@hazeliscoding
hazeliscoding marked this pull request as ready for review October 7, 2026 20:50
@hazeliscoding
hazeliscoding merged commit 030a8e5 into main Oct 7, 2026
1 check passed
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