- **Bug fix:** `ApproveAsync` now accepts both `InReview` and `Revised` proposals
- **Revision dropdown:** "Rev X" chip is now a clickable dropdown listing all revisions with status and download
- **Editable Work Order Number:** WO# in admin workspace is now editable; added `WorkOrderNumber` to `UpdateProposalRequest`
- **Info bar reorder:** Customer → Site → WO# → PO# → Category → Priority
- **Download PDF button** in action bar for Sent and Revised proposals
- Typed `getHistory` API to return `ProposalDetail[]`
### Commits 5–7 (this session)
#### Commit 5: Fix layout double-offset from persistent drawer
- The sidebar's persistent Drawer reserved width in the flex container AND the main content had `margin-left` for the same width, pushing content 440px to the right
- Removed the redundant `margin-left` from main content; added `transition: width 250ms` to the Drawer for smooth toggle
#### Commit 6: Add role-aware dashboard stats and recent proposals
-`GetStatsAsync` now returns global counts for admins/sysadmins instead of filtering by `SubmittedById`
- Dashboard recent proposals query uses `mine=false` for admins so they see all proposals
#### Commit 7: Apply UX quick wins from external review
- **"Not priced" display:** New `formatBidAmount()` helper replaces `$0.00` with "Not priced" across Dashboard, ProposalListPage, AdminDashboard, and ProposalDetailPage
- **Login button consistency:** All three dev-login role buttons now use the same filled style with role descriptions (e.g., "Admin — Review and approve proposals")
- **Context-aware empty states:** Proposal list distinguishes "no results match filters" from "you have no proposals" with appropriate copy and actions
- **Clear Filters button:** Added to ProposalListPage and AdminDashboard filter rows; appears when any filter/search is active
- **Workspace button clarity:** "Regenerate" renamed to "Regenerate Suggested Line Items"; disabled Save/Approve buttons show tooltip explanations
- **Plain language:** Similar Proposals empty state changed from "RAG engine" jargon to "Similar proposals will appear here when available"
- **User Management placeholder:** Centered layout with "Coming Soon" heading and Cognito guidance text
- **Screenshot script:** `scripts/screenshot-pages.mjs` captures all pages for all 3 roles via Puppeteer (incognito contexts, dev-login button clicks)
## What's running locally
- Postgres via Docker (port 5432)
- .NET API on http://localhost:5000 (dev mode, ASPNETCORE_ENVIRONMENT=Development)