Pro Tier
—
Added `is_pro` flag to User model with admin toggle
—
Full-resolution image retention for pro users (stored in separate S3 prefix)
—
AI label scan : pro users can upload bottle images and have Claude automatically fill in name, distillery, type, ABV, size, and vintage years
Admin
—
Full user management dashboard at `/admin/users`
—
Sortable columns and bottle count in admin user table
—
S3 orphaned image audit command (`flask audit-orphaned-images [--delete]`)
Bug Fixes
—
Fixed `delete_bottle` leaving images behind in S3 (wrong extension + missing full-res bucket cleanup)
UI
—
Images section moved to top of Add Bottle form
—
Homepage headline updated
—
Removed "Made with" tech stack section from homepage
Features
—
Passkey support — sign in with Touch ID / Face ID / hardware keys as an alternative to password
#373
—
Home page redesign — new stats band, pour-bar chart, and two-column hero layout on the design token system
#381
—
Account page redesign — profile, security, preferences, and danger zone cards
#381
—
Changelog page — in-app release notes with two-column section layout (#360, #370)
—
Redirect after login — returns you to the page you were trying to reach
#362
—
Barrel pickers in bottle popover — hover cards on bottle lists now include barrel picker names
#361
—
Bottle detail visual refresh — type-hue accent colors throughout the detail page
#368
Fixes
—
ABV/Proof column populated on distillery, bottler, and barrel picker bottle lists
#375
—
Type filter now applied on the main bottle list page
#377
—
Trix rich-text editor styles now respect dark themes
#382
—
Error pages use correct CSS classes (#379, #380)
—
"Remember me" login persistence
#78
Polish
—
Form pages wrapped in card layout with section labels
#383
—
Hardcoded color values replaced with design tokens throughout
#384
Infrastructure
—
Playwright end-to-end test suite (27 browser tests, runs on every PR)
#355
—
Production server migrated to uv
#366
—
Shared "cannot delete" modal extracted into a reusable macro
#320
Bottle list polish
—
Sort indicators: active column shows a directional arrow (↑/↓), inactive columns show a faint bidirectional hint (↕)
#348
—
Fixed column widths — no more layout shift when switching sort columns (Type column was the main offender: "Rye" vs "American Light Whiskey")
#348
—
Bootstrap tooltip on SB/Private column headers fixed for HTMX — no more stuck tooltips after sorting
#348
—
Empty stars in Cellar theme: increased contrast so placeholder stars are visible
#348
—
Type pills: bumped from 0.72rem → 0.82rem to balance visually with proof/ABV values
#348
—
Private bottle count hint: owners see "N bottles · M private" in the list summary line
#348
Bottle detail cleanup
—
Header stripped to status badges only (Single Barrel, Private) — Type, ABV/Proof, and Distillery pills removed since they duplicated the spec tiles and Details section
#345
—
Name row kept in Details table, with external-link icon when a bottle URL is set
#345
—
VR divider always shown before "My List" on desktop
#345
—
Rich text: bullet list indentation fixed (wrapped lines align with text, not bullet); paragraph spacing tightened
#345
Security & Login
—
Login rate limiting, failed login tracking, and alerting
#302
—
Google reCAPTCHA on password reset form
#303
—
Email alert on login from unrecognized IP address
#304
Account
—
Update email address with confirmation flow
#306
—
Account privacy toggle
#306
—
Change Password moved out of Danger Zone into Account Settings
#306
Images & Export
—
Server-side image resizing on upload — removes file-size rejection
#308
—
Export enhancements: format choice, filters, JSON, and image zip
#307
Bottle List
—
Rich-text hover card with image preview
#330
Maintenance
—
Automated cleanup of inactive user accounts via Flask CLI
#310
—
Local dev HTTPS via mkcert
#309
—
Upgraded python-dotenv (CVE-2026-28684) and urllib3 (CVE-2026-44432)
Full Visual Redesign
—
3-theme system: Barrel Room, Modern Cellar, The Vault
—
CSS design tokens and Google Fonts foundation
—
Theme switcher in navbar
—
Reskinned bottle list with grouped rows, type badges, single barrel indicators, killed bottle styling
—
Reskinned bottle detail, distillery/bottler list and detail pages, add/edit bottle form
—
Navbar logo with SVG icon and themed text treatment
New Features
—
Markdown support for bottle descriptions and notes
—
Bottle descriptions shown as hover tooltips in the list
—
Success flash messages link to the saved item
—
Filter List button hidden when only one bottle type is present
—
Show killed bottles toggle
—
Proof/ABV column toggle
—
Per-page pill buttons (25/50/100/All) persisted in cookie
—
Random Bottle button
—
My Account: Danger Zone — Change Password and Delete Account (with full S3 + DB cleanup)
Fixes & Polish
—
Disable new user registration
—
Updated form field types (EmailInput, etc.)
—
Table and theme polish: rating stars, chevrons, icons
—
Aligned bottler/distillery list table styling with bottle list