—AI image moderation — every uploaded photo (and every Glen label scan) is screened for inappropriate content before it's stored or sent to AI. Flagged images are rejected while clean ones are kept, and nothing objectionable reaches storage
#521
—Report an image + admin takedown — a "Report this image" control on public bottle photos notifies the admin, who can review and remove or dismiss reports from a new admin queue; serial reporters are flagged
#520
—Terms of Service & Privacy Policy overhaul — enumerated Acceptable Use policy, a DMCA/copyright takedown process, named third-party processors (AWS, Anthropic, Stripe, Namecheap), and disclosure that images are stored and AI-processed. Acceptance is now recorded at signup (#518, #519)
—Re-acceptance gate — when the Terms/Privacy version changes, users are prompted to re-accept before continuing; a remember-me session can't skip it
#525
v1.3.0
2026-07-10
What's New
—Glen's Recommendations redesign — per-bottle recommendations now open in a right-side drawer with a sticky, confirm-before-overwrite Refresh, a loading state on refresh, and state-aware card copy ("Ask Glen" vs "View Picks") (#515, #508)
—Fewer hallucinated recommendations — directional vs. actual-bottle picks are clearer, and the FAQ explains the distinction
#485
—CSV / XLSX bottle import — generic importer with column mapping, plus a WhiskeyShelf import path and free-tier limit enforcement
#477
—Bottler & Barrel Pickers columns added to CSV/JSON export
#476
—Promo codes supported on Stripe checkout (monthly plan)
—Pro-friendly inactivity handling — Pro accounts are exempt from idle-account cleanup, and the inactivity clock resets when a subscription lapses
#511
—Security & correctness hardening (holistic audit, #487–#501) — escaped flash messages and Select2 labels, fixed a user-enumeration vector and a DEBUG leak, corrected Stripe renewal-date handling, and shared decorators / Claude helper refactors
v1.2.0
2026-07-06
What's New
—Glen's Picks for You — collection-wide AI recommendations based on your highest-rated bottles, with 7-day refresh and full pick history
—
Recommendations storage refactored from JSON to relational tables (recommendation_session, recommendation_pick)
—
Glen's Picks history page with week-grouped table, Add to Wish List, and delete with confirmation
—
"In Wish List" state persists across page refreshes — no duplicate adds
—
Glen's Picks for You added to My Lists navbar dropdown (Pro users with history)
—
FAQ updated with Glen's Picks for You questions
v1.1.0
2026-07-02
Glen's Recommendations (Pro)
—
AI-powered bottle recommendations based on a bottle's distinctive traits
—
Pro users get persistent recommendations cached per bottle (7-day cooldown)
—
Free users see recommendations with a permanent dismiss option
Glen Label Scanning
—
Scan whiskey labels to auto-populate bottle details
—
Unlimited scans for Pro users; limited for free users
My Lists
—
Wish List: track bottles you want to try
—
Custom Lists (Pro): create and share curated collections
Collection Insights
—
Visual breakdown of your collection by bottle type, ABV distribution, and more
Other Improvements
—
Authenticated users redirected from `/` to their home page
—
Consistent whiskey type colors across pills and charts
—
Empty-state layout fixed on all list pages
—
"My Bottles" button label consistency on bottle detail page
v1.0.0
2026-06-11
What's in 1.0.0
—
Stripe-powered Pro subscription (monthly and annual)
—
Unlimited bottles and Glen scans for Pro users
—
Collection Insights page — charts and stats for your collection (Pro only)
—
Stripe customer portal — manage or cancel your subscription from your account page
—
Bottle list grouping — bottles with the same name/type are grouped with aggregate stats
—
Bottle list filtering, sorting, and pagination
—
Full-page PNG export of Collection Insights
—
iOS smart quote fix — apostrophe search now works on mobile
—
Add Bottle page no longer gates on having distilleries; shows a nudge with bulk-add option instead
—
Bulk add distilleries from the Add Bottle page via HTMX — no page reload
—
Mobile navbar dropdown fixed (no longer opens off-screen)
—
iOS Safari auto-zoom on input fields fixed
—
Expanded bulk distilleries list (80 → 121 distilleries)
—
Passkey support (register and sign in with a passkey)
—
Account page with plan info, preferences, data export, and danger zone
—
Email change with confirmation flow
—
Private account toggle
—
PostgreSQL on AWS RDS
—
Images on AWS S3
—
Gunicorn on EC2
v0.4.0
2026-06-07
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
—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
v0.3.5
2026-05-13
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
v0.3.0
2026-05-12
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