feat(web): screen-gaps phase 1 — ProjectDetail + /contact (refs #83)#102
Merged
Conversation
#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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
First phase of #83 — closes the SPA-only quick wins so reviewers aren't sitting on a single 1000-line PR.
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):
Test plan
🤖 Generated with Claude Code