Dev#47
Conversation
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughWalkthroughThis PR adds channel creation capability to the web app's sidebar (gated by member permissions), introduces a new download page for the marketing site, overhauls the landing page from a waitlist-focused design to product marketing with download and try-in-browser options, introduces a CopyTerminal component to replace the WaitlistForm, and removes the api-client module from the marketing site. Changes
Sequence DiagramsequenceDiagram
participant User as User
participant Dialog as CreateChannelDialog
participant API as API Server
participant Cache as React Query Cache
participant Router as Next.js Router
User->>Dialog: Opens create dialog (sets parentId)
User->>Dialog: Enters channel name & type
User->>Dialog: Submits form
Dialog->>Dialog: Normalize name (trim, lowercase, spaces→hyphens)
Dialog->>Dialog: Validate required fields
Dialog->>API: POST /guilds/:guildSlug/channels (with parentId)
API-->>Dialog: Response (success or error)
alt Success
Dialog->>Cache: Invalidate ["channels", guildSlug]
Cache-->>Dialog: Cache cleared
Dialog->>Router: Navigate to new channel route
Dialog->>Dialog: Reset form & close
else Error
Dialog->>Dialog: Parse & display error message
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Pull Request Summary
Overview
This PR transitions Townhall from a waitlist-based marketing strategy to a download-focused product marketing approach, while adding channel creation capabilities to the web app's sidebar. The changes are well-integrated across a monorepo structure using shared packages.
Key Changes
Web App (apps/web)
Channel Management Enhancements:
CreateChannelDialogcomponent for creating channels with optional parent channel specificationcanCreateChannels(role: GuildRole)permission helper that properly delegates toroleHasPermissionsfrom the shared@repo/auth/permissionspackageNew CreateChannelDialog Component:
apiClient.v1.guilds[":guildSlug"].channels.$postwith optional parentIdButton,Dialog,Input,Label,Select) from@repo/ui/componentsMarketing Site (apps/www)
Component & Asset Removals:
WaitlistFormcomponent (99 lines)apps/www/lib/api-client.ts(no remaining references in www app)New Features:
CopyTerminalcomponent: styled terminal UI with git clone command, copy-to-clipboard on click with icon feedback, auto-reset after 2 seconds/downloadpage with platform downloads (macOS, Windows, Linux), version management, and GitHub release integrationclassName="dark"to root<html>elementHomepage Redesign:
Pillarssection withFeaturessection with#featuresanchorProductShowcasesection with/desktop-sc.pngCopyTerminalin open-source section with#open-sourceanchor/logo.pngto/townhallicon.pngmax-w-6xl/screenshot-3.pngwith gradient stylingVerification Results
✅ Imports & Integration:
@repo/auth/permissionspackage✅ Assets:
/townhallicon.png(556KB)/screenshot-3.png(656KB)/desktop-sc.png(2.4MB)✅ Component Integration:
createDialogOpen,createParentId)✅ Code Quality:
@repo/namespace for shared packagesMinor Observations
Confidence Score: 4/5
Rationale:
This is a well-structured PR with clear intent and solid execution. All critical integrations are properly implemented using the monorepo's established patterns. The channel creation feature includes proper permission gating, error handling, and cache invalidation. The marketing site transition is comprehensive and cohesive, with all assets in place.
Why not 5:
Merge Ready:
The PR is technically sound and ready to merge. All imports work correctly, assets are present, and component integrations follow established patterns. Recommend addressing test coverage in a follow-up PR or as part of CI/CD pipeline validation.