What's New
Release notes for TC Plan Pro.
Added
- Beta launch — promoted from pre-beta across the app and landing page
- Taper snap-to-road — placing a taper near a road now auto-snaps position and rotation to the road centerline
- Hover tooltips on all toolbar tool buttons — shows shortcut key and description on hover
- Contextual ? help on taper property inputs — explains MUTCD Table 6H-2 formulas inline
- /help page — full documentation with MUTCD Tables 6H-2/6H-3, tools reference, keyboard shortcuts, and FAQ
- First-run onboarding tour — 4-step spotlight walkthrough for new users (shown once, skippable)
- Merge Taper template added to the Templates picker
- Shareable read-only plan links — Share button generates a public URL anyone can view
- PDF branding footer — "Created with TC Plan Pro" on every exported plan
Fixed
- Number inputs in Properties panel now select-all on focus — no more fighting to edit a leading digit
- Feedback form badge corrected from "LOGGED IN" to "DETAILS PREFILLED"
- User identity passed via sessionStorage instead of URL query params (privacy improvement)
- Feedback email validated server-side with Pydantic EmailStr
Added
- Lane mask (M), crosswalk (C), turn lane (L), and road shoulder/sidewalk tools
- Export preview modal with QC summary before PDF/PNG download
- MUTCD QC rule checks with live panel
- Template library with starter TCP plans
- Public landing page at tcplanpro.com
- PostHog analytics for beta user tracking
- Searchable sign library with MUTCD codes
- Intersection editor with snap-to-segment
Added
- Cognito sign-up / sign-in / sign-out authentication
- Cloud plan save and load via S3 storage
- Playwright E2E test suite and GitHub Actions CI
- Staging environment infrastructure
Added
- Initial traffic control planner canvas — roads, signs, devices, zones, arrows, text, measurements
- Straight, polyline, smooth, quad-bezier, and cubic-bezier road drawing modes
- Taper tool with MUTCD lane-closure formula
- Address geocoding with live map tile overlay
- Local plan save/load as .tcp.json file