Skip to content

feat(web): screen-gaps phase 1 — ProjectDetail + /contact (refs #83)#102

Merged
themightychris merged 4 commits into
mainfrom
feat/screen-gaps-phase1
May 30, 2026
Merged

feat(web): screen-gaps phase 1 — ProjectDetail + /contact (refs #83)#102
themightychris merged 4 commits into
mainfrom
feat/screen-gaps-phase1

Conversation

@themightychris
Copy link
Copy Markdown
Member

Summary

First phase of #83 — closes the SPA-only quick wins so reviewers aren't sitting on a single 1000-line PR.

  • ProjectDetail "Share to Slack" button — copies a pre-formatted Slack message to the clipboard (project title + URL).
  • ProjectDetail "What does this stage mean?" link + modal — opens a StageInfoDialog listing all seven stages with their canonical descriptions from `specs/behaviors/project-stages.md`. Current stage highlighted.
  • ProjectDetail "Edit on GitHub" footer link — shown only when `developersUrl` is a github.com URL. Small, muted styling per spec.
  • /contact page — replaces the `` placeholder with a real page rendering a mailto link to hello@codeforphilly.org + a pointer to /chat.

The Home "Start a Project" routing for signed-in users (also listed in #83's audit) is already in place at `apps/web/src/screens/Home.tsx:134` — no work needed there. Plan documents this so it doesn't look like an omission.

Deferred to follow-up plans (each gets its own PR):

  • PersonDetail email/slackHandle (cross-cuts API serializer + permissions)
  • /pages/:slug content rendering (needs content directory + route)
  • /projects/:slug/buzz/new create form

Test plan

  • ProjectDetail tests: Share-to-Slack button present, stage modal link present, Edit-on-GitHub absent for non-github URL, Edit-on-GitHub present + href correct for github URL
  • Contact tests: mailto link present, /chat link present
  • 332 API + 39 web + 75 shared tests green
  • `npm run type-check && npm run lint` clean

🤖 Generated with Claude Code

themightychris and others added 4 commits May 30, 2026 11:00
#83 is an umbrella for spec-vs-implementation gaps across several
detail screens. Splitting into phased plans so reviewers aren't
sitting on a single 1000-line PR. This phase covers SPA-only quick
wins on ProjectDetail (Share-to-Slack button, Edit-on-GitHub footer
link, "What does this stage mean?" modal) and the /contact mailto
page. PersonDetail email/slackHandle, /pages/:slug content, and the
buzz-new form get their own plans.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Closes three spec gaps on the project detail screen
(specs/screens/project-detail.md):

  - **Share to Slack** button next to Copy link. Copies a
    pre-formatted message to the clipboard ("Check out <title> on Code
    for Philly: <url>"). Spec offers either system-share or
    copy-message; copy works in every browser without a Web Share
    API gate.
  - **"What does this stage mean?"** link in the Info sidebar opens a
    StageInfoDialog listing all seven stages with their canonical
    descriptions (already in STAGES, sourced from
    specs/behaviors/project-stages.md). Current stage highlighted.
  - **Edit on GitHub** footer link, shown only when developersUrl is
    a github.com URL. Small, muted styling per spec.

The new StageInfoDialog component reads from the existing STAGES
constant — descriptions stay co-located with rendering rather than
being duplicated.

4 new tests: Share-to-Slack button presence, stage-info link
presence, Edit-on-GitHub absent for non-github developersUrl,
Edit-on-GitHub present + href correct for github developersUrl.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the ComingSoon placeholder at /contact with the minimum
specs/behaviors/app-shell.md requires — a mailto link to
hello@codeforphilly.org and a pointer to the /chat redirect for
real-time conversation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
All 5 validation checkboxes ticked. Notes covers the STAGES-as-source-
of-truth observation, the Home audit-was-outdated note, the URL-based
GitHub detection rationale, and the copy-only-not-Web-Share choice.

Follow-ups split out the deferred #83 work into named plans: PersonDetail
email/slackHandle (phase 2), /pages/:slug content rendering (static-pages),
and /projects/:slug/buzz/new form (buzz-new-form).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@themightychris themightychris merged commit 8b62943 into main May 30, 2026
1 check passed
@themightychris themightychris deleted the feat/screen-gaps-phase1 branch May 30, 2026 15:26
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