Skip to content

App v1 Issue #6: 仪表盘 installation 列表 + 切换 #177

Closed

Description

@akushonkamen

Summary

App v1 仪表盘第一块:列用户可访问的 installation + 点击进入详情页 + "Set as active" cookie 切换。

PRD 用户故事:US-001(安装 App 后 30 秒看到 dashboard 列已授权 repo)。

Acceptance Criteria

  • /dashboard 显示用户 GitHub /user/installations 列表,每行交叉 DB installations 表显示 repoFullName / runs count / installedAt
  • 缺失 DB 行(webhook 未到位)时优雅降级显示 "Webhook pending"
  • /dashboard/installations/[id] 显示该 installation 元数据 + 最近 10 个 runs
  • 详情页每次访问都重新通过 GitHub API 校验 session 用户仍能访问该 installation(防 IDOR)
  • "Set as active" server action 写 1 年 cookie gitautodev_active_installation
  • cookie httpOnly + sameSite=lax + production secure
  • SSE live updates 留 Issue fix: replace div click target with semantic button for Safari compatibility #7,本期不做
  • pnpm typecheck / lint / build 全绿

Out of scope

Activity

  1. github-actions commented on Jul 18, 2026

    @github-actions
    Contributor

    Thanks for filing this issue. I've triaged and understood the ask: build the first dashboard section for App v1 — display the user's GitHub installations on /dashboard with DB-backed metadata (repoFullName, runs count, installedAt), graceful degradation for missing webhook rows, an installation detail page at /dashboard/installations/[id] with IDOR-safe API re-validation and last 10 runs, plus a "Set as active" server action writing an httpOnly/sameSite=lax cookie (gitautodev_active_installation, Secure in production). SSE live updates, BYOK, usage billing, and Stripe are deferred to their respective issues. All ACs are well-defined, and this enters the development pipeline.

  2. github-actions commented on Jul 18, 2026

    @github-actions
    Contributor

    Thanks for filing this issue. I've triaged and understood the ask: build the first dashboard section for App v1 — display the user's GitHub installations on /dashboard with DB-backed metadata (repoFullName, runs count, installedAt), graceful degradation for missing webhook rows, an installation detail page at /dashboard/installations/[id] with IDOR-safe API re-validation and last 10 runs, plus a "Set as active" server action writing an httpOnly/sameSite=lax cookie (gitautodev_active_installation, Secure in production). SSE live updates, BYOK, usage billing, and Stripe are deferred to their respective issues. All ACs are well-defined, and this enters the development pipeline.

  3. added
    accepted-by-claudeClaude self-acceptance after clarify loop (Module 4 trigger, distinct from maintainer accepted)
    on Jul 18, 2026
  4. akushonkamen commented on Jul 18, 2026

    @akushonkamen
    OwnerAuthor

    🤖 Claude self-acceptance (M8 workload=standard). accepted-by-claude applied — Module 4 develop-gate will pick this up. Maintainer may override with rejected.

  5. added
    verifyingModule 5 self-verify active
    verifiedModule 5 self-verify passed
    and removed
    verifyingModule 5 self-verify active
    on Jul 18, 2026
  6. akushonkamen commented on Jul 18, 2026

    @akushonkamen
    OwnerAuthor

    ✅ Verify passed — Module 6 (test) engaged. PR: #178

  7. added
    testingModule 6 test active
    verifyingModule 5 self-verify active
    and removed
    verifyingModule 5 self-verify active
    on Jul 18, 2026
  8. akushonkamen commented on Jul 18, 2026

    @akushonkamen
    OwnerAuthor

    ✅ Verify passed — Module 6 (test) engaged. PR: #178

  9. 49 remaining items

  10. added
    verifyingModule 5 self-verify active
    verifiedModule 5 self-verify passed
    and removed
    verifyingModule 5 self-verify active
    on Jul 20, 2026
  11. akushonkamen commented on Jul 20, 2026

    @akushonkamen
    OwnerAuthor

    ✅ Verify passed — Module 6 (test) engaged. PR: #181

  12. added
    testingModule 6 test active
    verifyingModule 5 self-verify active
    and removed
    verifyingModule 5 self-verify active
    on Jul 20, 2026
  13. akushonkamen commented on Jul 20, 2026

    @akushonkamen
    OwnerAuthor

    ✅ Verify passed — Module 6 (test) engaged. PR: #181

  14. github-actions commented on Jul 20, 2026

    @github-actions
    Contributor

    ❌ Test: failed

    Field Value
    PR #178
    Workflow run https://github.com/akushonkamen/github-auto-dev-scaffold/actions/runs/29727214685

    Test framework: Vitest v2.1.9 (pnpm test). Run: 2 test files, 16 tests — all ✓.

    Acceptance criteria coverage:
    AC #1 — /dashboard listing + DB enrichment ✗ (no test exists)
    AC #2 — graceful degradation "Webhook pending" ✗ (no test exists)
    AC #3 — /dashboard/installations/[id] detail ✗ (no test exists)
    AC #4 — IDOR guard (GitHub API re-verify) ✗ (no test exists)
    AC #5 — "Set as active" server action + cookie ✗ (no test exists)
    AC #6 — cookie httpOnly/sameSite/secure flags ✗ (no test exists)
    AC #7 — SSE live updates (out of scope) N/A
    AC #8 — typecheck/lint/build all green ✓ (verified clean)

    Existing tests (16/16 pass):
    ✓ src/lib/deploy-pipeline/deploy-pipeline.test.ts (10 tests)
    ✓ src/lib/quota.test.ts (6 tests)

    Neither the dashboard pages nor the new lib modules (installations-queries.ts, active-installation.ts) have any test coverage. The new server components and server actions at the heart of Issue #6 are entirely uncovered.

  15. akushonkamen commented on Jul 20, 2026

    @akushonkamen
    OwnerAuthor

    ❌ Test retries exhausted (3/3)

    Module 6 failed 3 time(s). The pipeline cannot automatically recover.
    A maintainer must triage manually.

    Field Value
    Last workflow run https://github.com/akushonkamen/github-auto-dev-scaffold/actions/runs/29727214685
    Retry labels triage,accepted,verifying,stage:failed,type:feature,accepted-by-claude,verified,test:retry-3,verify:retry-3
  16. akushonkamen commented on Jul 20, 2026

    @akushonkamen
    OwnerAuthor

    ✅ Verify passed — Module 6 (test) engaged. PR: #181

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    acceptedAccepted for development (Module 4 trigger)accepted-by-claudeClaude self-acceptance after clarify loop (Module 4 trigger, distinct from maintainer accepted)stage:failedA module failed; needs maintainer triagetest:retry-3Auto-retry 3/3: re-running Module 4 with test feedbacktriageNewly opened; awaiting triage bottype:featureNew capabilityverifiedModule 5 self-verify passedverify:retry-3Verify retry 3/3: self-verify failed, re-running Module 4 to fix

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions