wip: pull request view & md rendering

This commit is contained in:
2026-05-11 00:32:12 +08:00
parent 9f1e051073
commit c29a923e0e
36 changed files with 2716 additions and 99 deletions

View File

@@ -0,0 +1,6 @@
{
"title": "feat(prompts): split context loading from execution workers",
"state": "OPEN",
"is_draft": true,
"body": "## Goal\n\nSplit context loading from execution workers so delegation stays predictable while this pull request is still in draft.\n\n### Why\n- workers should receive a compact payload\n- prompt packing should be testable without spawning a worker\n- retry policy should stay in one place\n\n### Proposed flow\n1. Load repository context once.\n2. Normalize file excerpts and metadata.\n3. Hand workers a stable execution envelope.\n\n```text\nContextLoader -> PromptAssembler -> WorkerRunner\n```\n\n> Draft status stays until we decide whether token counts belong in the worker response.\n\n### Questions\n- Should `ContextLoader` expose cache hit metrics?\n- Should worker retries carry the same prompt hash?\n- [ ] Add a regression test for interrupted workers"
}

View File

@@ -0,0 +1,6 @@
{
"title": "chore(tokens): tighten dashboard spacing scale",
"state": "OPEN",
"is_draft": false,
"body": "## Summary\n\nTightens the dashboard spacing scale before the next visual refresh.\n\n### Updated tokens\n- `space.3` for compact sidebar gaps\n- `space.5` for section rhythm\n- `space.8` for page-level separation\n\n| Surface | Before | After |\n| --- | --- | --- |\n| Sidebar section gap | `space.6` | `space.5` |\n| Filter row padding | `space.4` | `space.3` |\n| Dashboard gutter | `space.7` | `space.6` |\n\n### Review notes\n- verify heading baselines still align with list content\n- compare 1280px and 1440px screenshots side by side\n- [ ] revisit compact mode once the nav collapse lands\n\n**Design intent:** make dense screens feel more deliberate without looking cramped."
}

View File

@@ -0,0 +1,6 @@
{
"title": "docs(deploy): document manual failover steps",
"state": "CLOSED",
"is_draft": false,
"body": "## Context\n\nDocuments the manual failover sequence for the staging stack while the automated recovery path is still unstable.\n\n### Draft runbook\n1. Put the primary deployment in maintenance mode.\n2. Promote the standby database.\n3. Repoint the app workers.\n4. Warm the cache before reopening traffic.\n\n```bash\n./scripts/failover promote-standby --env staging\n./scripts/failover repoint-workers --env staging\n./scripts/failover verify --env staging\n```\n\n> This pull request was closed because the final DNS validation steps were still changing underneath the runbook.\n\n### Remaining gaps\n- secrets rotation is still manual\n- rollback screenshots are missing\n- [ ] add the final post-cutover checklist"
}

View File

@@ -0,0 +1,6 @@
{
"title": "feat(dashboard): hydrate issue pane from cached query state",
"state": "OPEN",
"is_draft": false,
"body": "## Summary\n\nHydrates the dashboard issue pane from cached query state so selection and scroll position stay stable during refetches.\n\n### Rendering coverage\n- [x] headings\n- [x] bullet lists\n- [x] task list items\n- [x] inline code like `use_query`\n- [x] tables\n\n### Implementation sketch\n```rust\nlet cached = query_store.read(key);\nlet selection = cached.and_then(|data| data.selected_issue_id.clone());\n```\n\n| Case | Expected behavior |\n| --- | --- |\n| Cache hit | Keep the current selection pinned |\n| Cache miss | Fall back to the first visible item |\n| Refetch in flight | Preserve scroll position |\n\n### Follow-up\n- [ ] mirror the same cache behavior in the pull request detail pane\n- [ ] add a smoke test around keyboard navigation during refetch\n\nSee also the [query store](src/query.rs) integration notes."
}

View File

@@ -0,0 +1,6 @@
{
"title": "feat(repo): add cached repository query for titlebar picker",
"state": "OPEN",
"is_draft": false,
"body": "## Summary\n\nIntroduces a cached repository query so the titlebar picker can switch context without hitting GitHub on every open.\n\n### Why\n- reduces flicker while the picker opens\n- keeps recent repositories visible during short reconnects\n- avoids duplicate requests when the titlebar rerenders\n\n### Cache rules\n- explicit refresh invalidates the cached list\n- fresh network data still wins when available\n- empty responses should not overwrite a warm cache\n\n```text\nopen picker -> read cache -> render immediately -> refresh in background\n```\n\n### Follow-up\n1. Measure cache hit rate in debug builds.\n2. Add eviction telemetry.\n3. [ ] Consider persisting the last successful repository list across launches."
}

View File

@@ -0,0 +1,6 @@
{
"title": "feat(calendar): ship release handoff checklist in weekly planner",
"state": "MERGED",
"is_draft": false,
"body": "## Release handoff checklist\n\nAdds the release checklist views and closes the loop for the May rollout.\n\n### Included\n- launch readiness checklist for QA, docs, and release engineering\n- handoff status badges in the weekly planner\n- empty-state copy for weeks without a scheduled release\n\n| Stage | Owner | Status |\n| --- | --- | --- |\n| QA sign-off | `@mariahops` | Done |\n| Docs publish | `@rorycraft` | Done |\n| Release window confirm | `@kennethnym` | Done |\n\n### Verification\n1. Open a release week and confirm checklist sections render in order.\n2. Mark each handoff item complete and confirm the summary badge updates.\n3. Review the planner on a narrow viewport.\n\n> The merged version intentionally keeps the checklist readable even when one section has no pending items.\n\n- [x] QA sign-off state is visible\n- [x] Docs handoff state is visible\n- [ ] Add screenshot coverage for the compact layout"
}

View File

@@ -0,0 +1,101 @@
{
"node": {
"__typename": "PullRequest",
"timelineItems": {
"pageInfo": {
"endCursor": "timeline:PR_kwDOAgent47:page1",
"hasNextPage": false
},
"nodes": [
{
"__typename": "AssignedEvent",
"createdAt": "2026-04-30T14:30:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"assignee": {
"__typename": "Mannequin",
"login": "legacy-ci-owner",
"avatarUrl": "https://avatars.githubusercontent.com/u/90001?v=4"
}
},
{
"__typename": "ReadyForReviewEvent",
"createdAt": "2026-05-01T01:05:00Z",
"actor": {
"__typename": "User",
"login": "leaferiksen",
"avatarUrl": "https://avatars.githubusercontent.com/u/5151?v=4"
}
},
{
"__typename": "ReviewRequestedEvent",
"createdAt": "2026-05-01T01:10:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"requestedReviewer": {
"__typename": "Team",
"name": "prompting"
}
},
{
"__typename": "PullRequestCommit",
"commit": {
"committedDate": "2026-05-01T03:00:00Z",
"abbreviatedOid": "4a8df12",
"messageHeadline": "Split prompt packing from worker execution"
}
},
{
"__typename": "IssueComment",
"createdAt": "2026-05-01T03:20:00Z",
"author": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"body": "Let us keep this in draft until telemetry lands."
},
{
"__typename": "ConvertToDraftEvent",
"createdAt": "2026-05-01T04:00:00Z",
"actor": {
"__typename": "User",
"login": "leaferiksen",
"avatarUrl": "https://avatars.githubusercontent.com/u/5151?v=4"
}
},
{
"__typename": "UnassignedEvent",
"createdAt": "2026-05-01T04:10:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"assignee": {
"__typename": "Mannequin",
"login": "legacy-ci-owner",
"avatarUrl": "https://avatars.githubusercontent.com/u/90001?v=4"
}
},
{
"__typename": "PullRequestReview",
"createdAt": "2026-05-02T00:15:00Z",
"author": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"state": "COMMENTED",
"body": "Split looks good; leaving draft until telemetry is in."
}
]
}
}
}

View File

@@ -0,0 +1,66 @@
{
"node": {
"__typename": "PullRequest",
"timelineItems": {
"pageInfo": {
"endCursor": "timeline:PR_kwDODesign31:page1",
"hasNextPage": false
},
"nodes": [
{
"__typename": "AssignedEvent",
"createdAt": "2026-05-02T11:12:00Z",
"actor": {
"__typename": "User",
"login": "mariahops",
"avatarUrl": "https://avatars.githubusercontent.com/u/6161?v=4"
},
"assignee": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
},
{
"__typename": "PullRequestReview",
"createdAt": "2026-05-02T15:40:00Z",
"author": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"state": "CHANGES_REQUESTED",
"body": "The 12px sidebar gutter still feels cramped."
},
{
"__typename": "BaseRefChangedEvent",
"createdAt": "2026-05-02T18:05:00Z",
"actor": {
"__typename": "User",
"login": "mariahops",
"avatarUrl": "https://avatars.githubusercontent.com/u/6161?v=4"
}
},
{
"__typename": "IssueComment",
"createdAt": "2026-05-02T18:18:00Z",
"author": {
"__typename": "User",
"login": "mariahops",
"avatarUrl": "https://avatars.githubusercontent.com/u/6161?v=4"
},
"body": "Updated the spacing tokens to align with the latest mock."
},
{
"__typename": "AutoMergeEnabledEvent",
"createdAt": "2026-05-03T09:00:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
}
]
}
}
}

View File

@@ -0,0 +1,50 @@
{
"node": {
"__typename": "PullRequest",
"timelineItems": {
"pageInfo": {
"endCursor": "timeline:PR_kwDOInfra19:page1",
"hasNextPage": false
},
"nodes": [
{
"__typename": "IssueComment",
"createdAt": "2026-04-29T07:10:00Z",
"author": {
"__typename": "User",
"login": "piperlane",
"avatarUrl": "https://avatars.githubusercontent.com/u/8181?v=4"
},
"body": "Closing this until the failover runbook stabilizes."
},
{
"__typename": "ReferencedEvent",
"createdAt": "2026-04-30T06:15:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
},
{
"__typename": "ReopenedEvent",
"createdAt": "2026-05-01T09:45:00Z",
"actor": {
"__typename": "User",
"login": "piperlane",
"avatarUrl": "https://avatars.githubusercontent.com/u/8181?v=4"
}
},
{
"__typename": "ClosedEvent",
"createdAt": "2026-05-02T12:05:00Z",
"actor": {
"__typename": "User",
"login": "piperlane",
"avatarUrl": "https://avatars.githubusercontent.com/u/8181?v=4"
}
}
]
}
}
}

View File

@@ -0,0 +1,68 @@
{
"node": {
"__typename": "PullRequest",
"timelineItems": {
"pageInfo": {
"endCursor": "timeline:PR_kwDONovem84:page1",
"hasNextPage": false
},
"nodes": [
{
"__typename": "AssignedEvent",
"createdAt": "2026-05-01T09:20:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"assignee": {
"__typename": "Bot",
"login": "triage-bot",
"avatarUrl": "https://avatars.githubusercontent.com/in/98765?v=4"
}
},
{
"__typename": "PullRequestCommit",
"commit": {
"committedDate": "2026-05-01T10:05:00Z",
"abbreviatedOid": "2bc41de",
"messageHeadline": "Hydrate issue pane from cached dashboard state"
}
},
{
"__typename": "CrossReferencedEvent",
"createdAt": "2026-05-01T12:00:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
},
{
"__typename": "ReviewRequestedEvent",
"createdAt": "2026-05-01T12:05:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"requestedReviewer": {
"__typename": "Bot",
"login": "novem-ci",
"avatarUrl": "https://avatars.githubusercontent.com/in/54321?v=4"
}
},
{
"__typename": "IssueComment",
"createdAt": "2026-05-01T12:20:00Z",
"author": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"body": "Cache hydration is now stable across refetches."
}
]
}
}
}

View File

@@ -0,0 +1,77 @@
{
"node": {
"__typename": "PullRequest",
"timelineItems": {
"pageInfo": {
"endCursor": "timeline:PR_kwDONovem85:page1",
"hasNextPage": false
},
"nodes": [
{
"__typename": "BaseRefChangedEvent",
"createdAt": "2026-05-03T07:50:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
},
{
"__typename": "AssignedEvent",
"createdAt": "2026-05-03T08:00:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"assignee": {
"__typename": "User",
"login": "leaferiksen",
"avatarUrl": "https://avatars.githubusercontent.com/u/5151?v=4"
}
},
{
"__typename": "PullRequestCommit",
"commit": {
"committedDate": "2026-05-03T08:25:00Z",
"abbreviatedOid": "13af7d0",
"messageHeadline": "Cache repository list for titlebar context switcher"
}
},
{
"__typename": "ReviewRequestedEvent",
"createdAt": "2026-05-03T08:40:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"requestedReviewer": {
"__typename": "Bot",
"login": "novem-ci",
"avatarUrl": "https://avatars.githubusercontent.com/in/54321?v=4"
}
},
{
"__typename": "IssueComment",
"createdAt": "2026-05-03T09:05:00Z",
"author": {
"__typename": "User",
"login": "leaferiksen",
"avatarUrl": "https://avatars.githubusercontent.com/u/5151?v=4"
},
"body": "The cached picker feels much faster under repo churn."
},
{
"__typename": "AutoMergeEnabledEvent",
"createdAt": "2026-05-04T06:30:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
}
]
}
}
}

View File

@@ -0,0 +1,82 @@
{
"node": {
"__typename": "PullRequest",
"timelineItems": {
"pageInfo": {
"endCursor": "timeline:PR_kwDOSprint62:page1",
"hasNextPage": true
},
"nodes": [
{
"__typename": "AssignedEvent",
"createdAt": "2026-04-28T10:25:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"assignee": {
"__typename": "User",
"login": "mariahops",
"avatarUrl": "https://avatars.githubusercontent.com/u/6161?v=4"
}
},
{
"__typename": "PullRequestCommit",
"commit": {
"committedDate": "2026-04-29T08:14:00Z",
"abbreviatedOid": "9f3c2ab",
"messageHeadline": "Add release handoff checklist panel"
}
},
{
"__typename": "IssueComment",
"createdAt": "2026-04-29T11:00:00Z",
"author": {
"__typename": "User",
"login": "rorycraft",
"avatarUrl": "https://avatars.githubusercontent.com/u/7171?v=4"
},
"body": "Release checklist is ready for QA."
},
{
"__typename": "ReviewRequestedEvent",
"createdAt": "2026-04-30T09:20:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"requestedReviewer": {
"__typename": "User",
"login": "leaferiksen",
"avatarUrl": "https://avatars.githubusercontent.com/u/5151?v=4"
}
},
{
"__typename": "PullRequestReview",
"createdAt": "2026-05-01T03:42:00Z",
"author": {
"__typename": "User",
"login": "leaferiksen",
"avatarUrl": "https://avatars.githubusercontent.com/u/5151?v=4"
},
"state": "APPROVED",
"body": "Planner handoff flow looks good."
},
{
"__typename": "LabeledEvent",
"createdAt": "2026-05-01T04:10:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"label": {
"name": "release-blocker"
}
}
]
}
}
}

View File

@@ -0,0 +1,91 @@
{
"node": {
"__typename": "PullRequest",
"timelineItems": {
"pageInfo": {
"endCursor": "timeline:PR_kwDOSprint62:page2",
"hasNextPage": true
},
"nodes": [
{
"__typename": "ReviewRequestRemovedEvent",
"createdAt": "2026-05-01T04:20:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"requestedReviewer": {
"__typename": "Team",
"name": "release-engineering"
}
},
{
"__typename": "HeadRefForcePushedEvent",
"createdAt": "2026-05-01T06:10:00Z",
"actor": {
"__typename": "User",
"login": "rorycraft",
"avatarUrl": "https://avatars.githubusercontent.com/u/7171?v=4"
},
"beforeCommit": {
"abbreviatedOid": "9f3c2ab"
},
"afterCommit": {
"abbreviatedOid": "be7a811"
}
},
{
"__typename": "MilestonedEvent",
"createdAt": "2026-05-01T06:35:00Z",
"actor": {
"__typename": "User",
"login": "mariahops",
"avatarUrl": "https://avatars.githubusercontent.com/u/6161?v=4"
},
"milestoneTitle": "May Release"
},
{
"__typename": "UnlabeledEvent",
"createdAt": "2026-05-01T07:05:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"label": {
"name": "tests"
}
},
{
"__typename": "AutoMergeEnabledEvent",
"createdAt": "2026-05-02T02:15:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
},
{
"__typename": "AutoMergeDisabledEvent",
"createdAt": "2026-05-02T02:18:00Z",
"actor": {
"__typename": "User",
"login": "mariahops",
"avatarUrl": "https://avatars.githubusercontent.com/u/6161?v=4"
},
"reason": "Branch protection rules changed"
},
{
"__typename": "CrossReferencedEvent",
"createdAt": "2026-05-02T08:40:00Z",
"actor": {
"__typename": "User",
"login": "piperlane",
"avatarUrl": "https://avatars.githubusercontent.com/u/8181?v=4"
}
}
]
}
}
}

View File

@@ -0,0 +1,86 @@
{
"node": {
"__typename": "PullRequest",
"timelineItems": {
"pageInfo": {
"endCursor": "timeline:PR_kwDOSprint62:page3",
"hasNextPage": false
},
"nodes": [
{
"__typename": "BaseRefChangedEvent",
"createdAt": "2026-05-02T10:00:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
},
{
"__typename": "AddedToMergeQueueEvent",
"createdAt": "2026-05-03T05:12:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
},
{
"__typename": "RemovedFromMergeQueueEvent",
"createdAt": "2026-05-03T05:18:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
},
{
"__typename": "ReferencedEvent",
"createdAt": "2026-05-03T12:05:00Z",
"actor": {
"__typename": "User",
"login": "rorycraft",
"avatarUrl": "https://avatars.githubusercontent.com/u/7171?v=4"
}
},
{
"__typename": "ReviewDismissedEvent",
"createdAt": "2026-05-03T12:50:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
},
{
"__typename": "DemilestonedEvent",
"createdAt": "2026-05-04T07:20:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
},
"milestoneTitle": "May Release"
},
{
"__typename": "MergedEvent",
"createdAt": "2026-05-04T18:10:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
},
{
"__typename": "ClosedEvent",
"createdAt": "2026-05-04T18:15:00Z",
"actor": {
"__typename": "User",
"login": "kennethnym",
"avatarUrl": "https://avatars.githubusercontent.com/u/4242?v=4"
}
}
]
}
}
}

View File

@@ -12,7 +12,7 @@
"state": "open",
"state_reason": null,
"title": "feat(dashboard): hydrate issue pane from cached query state",
"body": "Wires the dashboard issue list to the query store and keeps selection stable while refetching.",
"body": "## Summary\n\nHydrates the dashboard issue pane from cached query state so selection and scroll position stay stable during refetches.\n\n### Changes\n- reuse the cached query result before the network request resolves\n- keep the selected issue id pinned across list refreshes\n- fall back to the first visible item when the cached selection disappears\n\n### Follow-up\n- [ ] mirror the same cache behavior in the pull request detail pane\n- [ ] add a smoke test for refetch during keyboard navigation",
"body_text": "Wires the dashboard issue list to the query store and keeps selection stable while refetching.",
"body_html": null,
"user": {
@@ -101,7 +101,7 @@
"state": "closed",
"state_reason": "completed",
"title": "feat(calendar): ship release handoff checklist in weekly planner",
"body": "Adds the release checklist views and marks the handoff flow complete for the May rollout.",
"body": "## Release handoff checklist\n\nAdds the release checklist views and closes the loop for the May rollout.\n\n### Included\n- launch readiness checklist for QA, docs, and release engineering\n- handoff status badges in the weekly planner\n- empty-state copy for weeks without a scheduled release\n\n### Verification\n1. Open a release week and confirm checklist sections render in order.\n2. Mark each handoff item complete and confirm the summary badge updates.\n3. Review the planner on a narrow viewport.\n\n```text\nrelease_week -> handoff_panel -> checklist_sections\n```",
"body_text": "Adds the release checklist views and marks the handoff flow complete for the May rollout.",
"body_html": null,
"user": {
@@ -230,7 +230,7 @@
"state": "open",
"state_reason": null,
"title": "feat(repo): add cached repository query for titlebar picker",
"body": "Introduces a repository list query so the titlebar can switch context without hitting GitHub repeatedly.",
"body": "## Summary\n\nIntroduces a cached repository query so the titlebar picker can switch context without hitting GitHub on every open.\n\n### Why\n- reduces flicker while the picker opens\n- keeps recent repositories available during short reconnects\n- avoids duplicate requests when the titlebar rerenders\n\n### Notes\n- cache invalidates on explicit refresh\n- fresh network data still wins when available\n- [ ] follow up with eviction metrics",
"body_text": "Introduces a repository list query so the titlebar can switch context without hitting GitHub repeatedly.",
"body_html": null,
"user": {
@@ -344,7 +344,7 @@
"state": "open",
"state_reason": null,
"title": "feat(prompts): split context loading from execution workers",
"body": "Separates prompt packing from worker orchestration to make delegation easier to reason about.",
"body": "## Goal\n\nSeparates prompt packing from worker orchestration to make delegation easier to reason about.\n\n### What changed\n- `ContextLoader` now owns repository and file hydration\n- workers receive a normalized prompt payload\n- retry handling stays at the orchestration layer\n\n### Open questions\n- should prompt packing expose token counts in debug builds?\n- should draft workers emit a dry-run preview?\n\n> Keeps the worker boundary small enough to test in isolation.",
"body_text": "Separates prompt packing from worker orchestration to make delegation easier to reason about.",
"body_html": null,
"user": {

View File

@@ -12,7 +12,7 @@
"state": "open",
"state_reason": null,
"title": "chore(tokens): tighten dashboard spacing scale",
"body": "Normalizes horizontal gutters and sidebar section padding before the visual refresh.",
"body": "## Summary\n\nNormalizes horizontal gutters and sidebar section padding before the visual refresh.\n\n### Token updates\n- `space.3` now anchors compact sidebar gaps\n- `space.5` is used for section-to-section rhythm\n- `space.8` stays reserved for page-level breaks\n\n### Review notes\n- compare the dashboard at 1280px and 1440px\n- verify headings still align with list rows\n- [ ] revisit mobile spacing once nav collapse lands",
"body_text": "Normalizes horizontal gutters and sidebar section padding before the visual refresh.",
"body_html": null,
"user": {
@@ -117,7 +117,7 @@
"state": "closed",
"state_reason": "not_planned",
"title": "docs(deploy): document manual failover steps",
"body": null,
"body": "## Context\n\nDocuments the manual failover sequence for the staging stack while the automated path is still unstable.\n\n### Draft runbook\n1. Put the primary deployment in maintenance mode.\n2. Promote the standby database.\n3. Repoint the app workers and warm the cache.\n4. Verify health checks before reopening traffic.\n\n### Risks\n- secrets rotation is still manual\n- rollback steps need screenshots\n- [ ] add the final DNS validation command",
"body_text": null,
"body_html": null,
"user": {

View File

@@ -12,7 +12,7 @@
"state": "closed",
"state_reason": "completed",
"title": "feat(calendar): ship release handoff checklist in weekly planner",
"body": "Adds the release checklist views and marks the handoff flow complete for the May rollout.",
"body": "## Release handoff checklist\n\nAdds the release checklist views and closes the loop for the May rollout.\n\n### Included\n- launch readiness checklist for QA, docs, and release engineering\n- handoff status badges in the weekly planner\n- empty-state copy for weeks without a scheduled release\n\n### Verification\n1. Open a release week and confirm checklist sections render in order.\n2. Mark each handoff item complete and confirm the summary badge updates.\n3. Review the planner on a narrow viewport.\n\n```text\nrelease_week -> handoff_panel -> checklist_sections\n```",
"body_text": "Adds the release checklist views and marks the handoff flow complete for the May rollout.",
"body_html": null,
"user": {
@@ -141,7 +141,7 @@
"state": "open",
"state_reason": null,
"title": "feat(prompts): split context loading from execution workers",
"body": "Separates prompt packing from worker orchestration to make delegation easier to reason about.",
"body": "## Goal\n\nSeparates prompt packing from worker orchestration to make delegation easier to reason about.\n\n### What changed\n- `ContextLoader` now owns repository and file hydration\n- workers receive a normalized prompt payload\n- retry handling stays at the orchestration layer\n\n### Open questions\n- should prompt packing expose token counts in debug builds?\n- should draft workers emit a dry-run preview?\n\n> Keeps the worker boundary small enough to test in isolation.",
"body_text": "Separates prompt packing from worker orchestration to make delegation easier to reason about.",
"body_html": null,
"user": {
@@ -246,7 +246,7 @@
"state": "open",
"state_reason": null,
"title": "chore(tokens): tighten dashboard spacing scale",
"body": "Normalizes horizontal gutters and sidebar section padding before the visual refresh.",
"body": "## Summary\n\nNormalizes horizontal gutters and sidebar section padding before the visual refresh.\n\n### Token updates\n- `space.3` now anchors compact sidebar gaps\n- `space.5` is used for section-to-section rhythm\n- `space.8` stays reserved for page-level breaks\n\n### Review notes\n- compare the dashboard at 1280px and 1440px\n- verify headings still align with list rows\n- [ ] revisit mobile spacing once nav collapse lands",
"body_text": "Normalizes horizontal gutters and sidebar section padding before the visual refresh.",
"body_html": null,
"user": {

View File

@@ -12,7 +12,7 @@
"state": "open",
"state_reason": null,
"title": "feat(repo): add cached repository query for titlebar picker",
"body": "Introduces a repository list query so the titlebar can switch context without hitting GitHub repeatedly.",
"body": "## Summary\n\nIntroduces a cached repository query so the titlebar picker can switch context without hitting GitHub on every open.\n\n### Why\n- reduces flicker while the picker opens\n- keeps recent repositories available during short reconnects\n- avoids duplicate requests when the titlebar rerenders\n\n### Notes\n- cache invalidates on explicit refresh\n- fresh network data still wins when available\n- [ ] follow up with eviction metrics",
"body_text": "Introduces a repository list query so the titlebar can switch context without hitting GitHub repeatedly.",
"body_html": null,
"user": {
@@ -126,7 +126,7 @@
"state": "open",
"state_reason": null,
"title": "feat(dashboard): hydrate issue pane from cached query state",
"body": "Wires the dashboard issue list to the query store and keeps selection stable while refetching.",
"body": "## Summary\n\nHydrates the dashboard issue pane from cached query state so selection and scroll position stay stable during refetches.\n\n### Changes\n- reuse the cached query result before the network request resolves\n- keep the selected issue id pinned across list refreshes\n- fall back to the first visible item when the cached selection disappears\n\n### Follow-up\n- [ ] mirror the same cache behavior in the pull request detail pane\n- [ ] add a smoke test for refetch during keyboard navigation",
"body_text": "Wires the dashboard issue list to the query store and keeps selection stable while refetching.",
"body_html": null,
"user": {

View File

@@ -12,7 +12,7 @@
"state": "closed",
"state_reason": "not_planned",
"title": "docs(deploy): document manual failover steps",
"body": null,
"body": "## Context\n\nDocuments the manual failover sequence for the staging stack while the automated path is still unstable.\n\n### Draft runbook\n1. Put the primary deployment in maintenance mode.\n2. Promote the standby database.\n3. Repoint the app workers and warm the cache.\n4. Verify health checks before reopening traffic.\n\n### Risks\n- secrets rotation is still manual\n- rollback steps need screenshots\n- [ ] add the final DNS validation command",
"body_text": null,
"body_html": null,
"user": {