2025-12-30 - 2026-06-30
Overview
72 Pull requests merged by 1 user
Merged
#247 feat: Reorder Log Fuel fields by usage and add decimal keypad (#246)
Merged
#245 fix: coerce decimals in fuel-logs enhanced repository methods (#244)
Merged
#242 fix: coerce numeric/decimal columns in repository mappers (#241)
Merged
#240 fix: Vehicle summary screen does not display maintenance records (#239)
Merged
#238 fix: Maintenance dates display one day off due to timezone conversion (#237)
Merged
#236 feat: Migrate Gemini SDK to google-genai (#231)
Merged
#230 fix: increase VIN decode timeout for Gemini cold start
Merged
#229 feat: Replace NHTSA VIN decode with Google Gemini via OCR service (#223)
Merged
#222 chore: Update email FROM address and fix unsubscribe link
Merged
#219 chore: migrate user identity from auth0_sub to UUID
Merged
#218 refactor: Clean up subscription admin override and Stripe integration (#205)
Merged
#204 feat: Add online user guide with screenshots (#203)
Merged
#202 feat: Redesign dashboard with vehicle-centric layout (#196)
Merged
#195 fix: Wire up Add Maintenance button on vehicle detail page (#194)
Merged
#193 fix: Mobile login redirects to homepage without showing Auth0 login page (#188)
Merged
#191 fix: Desktop sidebar clips logo after collapse-mode UX changes (#187)
Merged
#186 chore: UX design audit cleanup and receipt flow improvements
Merged
#161 feat: Maintenance Receipt Upload with OCR Auto-populate (#16)
Merged
#147 feat: Expand OCR with fuel receipt scanning and maintenance extraction (#129)
Merged
#128 feat: Google Vision primary OCR with Auth0 WIF and monthly usage cap (#127)
Merged
#126 feat: Improve VIN decode confidence reporting and make/model/trim editability (#125)
Merged
#124 feat: Improve VIN photo capture camera crop (#123)
Merged
#122 feat: Improve OCR process - replace Tesseract with PaddleOCR (#115)
Merged
#114 fix: VIN OCR scanning fails with "No VIN Pattern found" on all images (#113)
Merged
#112 feat: Add Grafana dashboards and alerting (#105)
Merged
#104 fix: rename ipWhiteList to ipAllowList for Traefik v3 (#103)
Merged
#102 chore: upgrade logging stack - mirrors, Alloy, Loki, Grafana (#96, #97, #98, #99)
Merged
#94 docs: add unified logging system documentation and CI/CD integration (#87)
Merged
#93 feat: add Promtail, Loki, and Grafana log aggregation stack (#86)
Merged
#92 feat: Frontend Logger Module (#84)
Merged
#91 feat: migrate backend logging from Winston to Pino with correlation IDs (#82)
Merged
#90 chore: Docker Logging Configuration + Rotation (#85)
Merged
#89 chore: configure Traefik X-Request-Id header forwarding (#83)
Merged
#88 chore: Logging Config Generator Script (#81)
Merged
#79 feat: Owner's Manual OCR Pipeline (#71)
Merged
#78 feat: Receipt Capture Integration (#70)
Merged
#77 feat: Receipt OCR Pipeline (#69)
Merged
#76 feat: VIN Capture Integration (#68)
Merged
#75 feat: VIN Photo OCR Pipeline (#67)
Merged
#74 feat: Core OCR API Integration (#65)
Merged
#73 feat: add camera capture component (#66)
Merged
#72 feat: add OCR service container (refs #64)
Merged
#63 feat: send notifications when subscription tier changes (#59)
Merged
#62 feat: prompt vehicle selection on login after auto-downgrade (#60)
Merged
#61 fix: subscription tier sync on admin override (#58)
Merged
#57 feat: Stripe integration with subscription tiers and donations (#55)
Merged
#56 feat: Accept Payments - Stripe Integration with User Tiers (#55)
Merged
#54 fix: redirect unverified users to verification page (#53)
Merged
#52 fix: Standardize card/list action buttons and hover states (#51)
Merged
#50 fix: Convert DECIMAL columns to numbers in fuel logs API (#49)
Merged
#48 fix: Fuel Logs API 500 error - repository snake_case mismatch (#47)
Merged
#46 perf: fix dashboard load performance (#45)
Merged
#44 feat: Enhance Documents UX with detail view, type-specific cards, and expiration alerts (#43)
Merged
#42 fix: display purchase info and fix validation on vehicle detail (#41)
Merged
#40 fix: remove license plate fallback from VIN field (#39)
Merged
#38 fix: remove legacy TCO fields from vehicle forms (refs #37)
Merged
#36 fix: Standardize checkboxes to use MUI Checkbox component (#35)
Merged
#32 feat: Document feature enhancements (#31)
Merged
#34 fix: add dynamic timeout for document uploads (#33)
Merged
#30 refactor: Link ownership-costs to documents feature (#29)
Merged
#28 feat: Total Cost of Ownership (TCO) per Vehicle
Merged
#27 feat: Add user data import feature (Fixes #26)
Merged
#25 feat: Add tier-based vehicle limit enforcement (#23)
Merged
#24 feat: Add VIN decoding with NHTSA vPIC API (#9)
Merged
#22 feat: Centralized audit logging admin interface (refs #10)
Merged
#21 fix: Implement tiered backup retention classification (refs #6)
Merged
#20 fix: Add document modal file input bottom padding (#19)
Merged
#18 feat: Implement user tier-based feature gating system
Merged
#17 feat: Admin User Management - Vehicle Display Features
Merged
#14 fix: FAB maintenance navigation (#13)
Merged
#5 feat: add Terms & Conditions checkbox to signup (#4)
Merged
#3 feat: Dashboard - Vehicle Fleet Overview (#2)
175 Issues closed from 1 user
Closed
#246 feat: Reorder mobile Log Fuel fields by usage frequency and add decimal keypad
Closed
#243 fix: stations and community-stations repository mappers return DECIMAL prices as strings
Closed
#244 fix: fuel-logs enhanced repository methods return raw rows without mapping, breaking numeric type contract
Closed
#241 fix: maintenance repository mapper returns numeric fields as strings, violating MaintenanceRecord type contract
Closed
#239 fix: Vehicle summary screen does not display maintenance records
Closed
#237 fix: Maintenance dates display one day off due to timezone conversion
Closed
#233 feat: Migrate GeminiEngine to google-genai with Google Search grounding (#231)
Closed
#234 feat: Migrate MaintenanceReceiptExtractor to google-genai (#231)
Closed
#235 feat: Update test mocks for google-genai SDK (#231)
Closed
#231 feat: Migrate Gemini SDK to google-genai and enable Google Search grounding for VIN decode
Closed
#232 feat: Update OCR dependency to google-genai (#231)
Closed
#228 feat: Update frontend and tests for Gemini VIN decode (#223)
Closed
#227 chore: Remove NHTSA code and update documentation (#223)
Closed
#226 feat: Rewire vehicles controller to use OCR VIN decode (#223)
Closed
#225 feat: Add backend OCR client method and types for VIN decode (#223)
Closed
#224 feat: Add VIN decode endpoint to OCR Python service (#223)
Closed
#223 feat: Replace NHTSA VIN decode with Google Gemini via OCR service
Closed
#221 chore: Update email FROM address and fix unsubscribe link
Closed
#220 bug: Post-migration bugs from UUID identity migration (#206)
Closed
#211 chore: Database migration SQL - auth0_sub to UUID (#206)
Closed
#212 chore: Auth plugin and admin guard UUID migration (#206)
Closed
#213 chore: Admin system refactor for UUID migration (#206)
Closed
#214 chore: User profile repository refactor for UUID (#206)
Closed
#215 chore: Feature repository UUID validation (#206)
Closed
#216 chore: Supporting code UUID updates (#206)
Closed
#217 chore: Test fixtures and documentation for UUID migration (#206)
Closed
#206 chore: Migrate user identity from auth0_sub to MVP-generated UUID
Closed
#205 refactor: Clean up subscription admin override and Stripe integration
Closed
#207 refactor: Database migration for nullable stripe_customer_id (#205)
Closed
#208 refactor: Repository updates for nullable stripe_customer_id (#205)
Closed
#209 refactor: Remove resolveStripeCustomerId and harden tier sync (#205)
Closed
#210 refactor: Update Stripe flows for nullable stripe_customer_id (#205)
Closed
#203 feat: Add online user guide with screenshots to public website
Closed
#196 feat: Redesign dashboard with vehicle-centric layout
Closed
#197 feat: Dashboard types and vehicle health data layer (#196)
Closed
#198 feat: VehicleRosterCard component (#196)
Closed
#199 feat: Dashboard ActionBar component (#196)
Closed
#200 feat: DashboardScreen composition and cleanup (#196)
Closed
#201 feat: Dashboard redesign tests (#196)
Closed
#194 fix: Wire up "Add Maintenance" button on vehicle detail page
Closed
#188 fix: Mobile login redirects to homepage without showing Auth0 login page
Closed
#189 fix: Callback route guard allows Auth0 code exchange to complete (#188)
Closed
#190 fix: Detect and clear stale IndexedDB auth tokens on mobile (#188)
Closed
#192 fix: Add pre-auth session clear mechanism on HomePage (#188)
Closed
#187 fix: Desktop sidebar clips logo after collapse-mode UX changes
Closed
#181 chore: differentiate Stations icon from Fuel Logs in bottom nav (#162)
Closed
#183 chore: create AddReceiptDialog component (#182)
Closed
#184 chore: integrate AddReceiptDialog into MaintenanceRecordForm (#182)
Closed
#185 chore: viewport testing for maintenance receipt flow (#182)
Closed
#175 chore: remove Insurance default bias from Add Document modal (#162)
Closed
#176 chore: add desktop sidebar collapse to icon-only mode (#162)
Closed
#177 chore: header greeting use display name instead of email (#162)
Closed
#178 chore: remove dashboard auto-refresh footer text (#162)
Closed
#179 chore: add call-to-action links in zero-state stats cards (#162)
Closed
#180 chore: hide notification bell if non-functional (#162)
Closed
#165 fix: null model display on Settings vehicle list (#162)
Closed
#166 chore: enrich Dashboard with meaningful content (#162)
Closed
#167 chore: vehicle cards show Year Make Model and hide empty VIN (#162)
Closed
#168 chore: Fuel Logs default to list view instead of form-first (#162)
Closed
#169 chore: add Maintenance page title and remove duplicate vehicle dropdown (#162)
Closed
#171 chore: standardize empty field display across all views (#162)
Closed
#172 chore: improve document card with upload date and file type icon (#162)
Closed
#173 chore: remove redundant Stations entry from mobile More menu (#162)
Closed
#174 chore: differentiate identical maintenance schedule names (#162)
Closed
#162 chore: UX design audit cleanup
Closed
#163 fix: mobile routing renders Dashboard instead of correct page (#162)
Closed
#164 fix: add Maintenance to mobile bottom-sheet More menu (#162)
Closed
#182 chore: change maintenance receipt flow to upload-first with camera option (#162)
Closed
#170 fix: FAB button overlaps content and bottom nav on mobile (#162)
Closed
#149 feat: Email Receipt Ingestion via Resend Webhooks
Closed
#158 feat: Vehicle association and record creation (#149)
Closed
#159 feat: Email ingestion notifications and error emails (#149)
Closed
#160 feat: Pending vehicle association resolution UI (#149)
Closed
#16 feat: Maintenance Receipt Upload with OCR Auto-populate
Closed
#150 feat: Maintenance receipt extraction pipeline in OCR microservice (#16)
Closed
#151 feat: Backend migration and API updates for maintenance receipt linking (#16)
Closed
#152 feat: Maintenance receipt OCR hook and review modal (#16)
Closed
#153 feat: Form integration, tier gating, and receipt display (#16)
Closed
#154 feat: Email ingestion database schema and types (#149)
Closed
#155 feat: Resend inbound client and webhook endpoint (#149)
Closed
#156 feat: Email ingestion processing service (#149)
Closed
#157 feat: Receipt classifier and OCR integration (#149)
Closed
#148 fix: Scheduled maintenance list not displaying schedules (#129)
Closed
#138 feat: Tier guard middleware (#129)
Closed
#139 feat: Backend OCR receipt proxy endpoint (#129)
Closed
#140 feat: Tier gating and frontend receipt OCR flow (#129)
Closed
#141 feat: Station matching from receipt (#129)
Closed
#142 feat: Gemini engine module and configuration (#129)
Closed
#143 feat: Manual extractor Gemini rewrite (#129)
Closed
#144 feat: Backend OCR manual proxy endpoint (#129)
Closed
#145 feat: Frontend manual extraction flow (#129)
Closed
#146 docs: Documentation for OCR expansion (#129)
Closed
#129 feat: Expand OCR with fuel receipt scanning and owners manual maintenance extraction
Closed
#130 feat: Backend OCR receipt proxy endpoint (#129)
Closed
#131 feat: Tier gating and frontend receipt OCR flow (#129)
Closed
#132 feat: Station matching from receipt (#129)
Closed
#133 feat: Gemini engine module and configuration (#129)
Closed
#134 feat: Manual extractor Gemini rewrite (#129)
Closed
#135 feat: Backend OCR manual proxy endpoint (#129)
Closed
#136 feat: Frontend manual extraction flow (#129)
Closed
#137 docs: Documentation for OCR expansion (#129)
Closed
#127 feat: Google Vision primary OCR with Auth0 WIF and monthly usage cap
Closed
#125 feat: Improve VIN decode confidence reporting and make/model/trim editability
Closed
#123 feat: Improve VIN photo capture camera crop experience
Closed
#121 chore: Update OCR tests and documentation (#115)
Closed
#115 feat: Improve OCR process - replace Tesseract with PaddleOCR and add cloud fallback for VIN scanning
Closed
#116 feat: OCR engine abstraction layer and PaddleOCR integration (#115)
Closed
#117 feat: Migrate VIN extractor to engine abstraction (#115)
Closed
#118 feat: Optional Google Vision cloud fallback engine (#115)
Closed
#119 chore: Docker and infrastructure updates for PaddleOCR (#115)
Closed
#120 fix: Diagnose and fix crop tool regression (#115)
Closed
#113 fix: VIN OCR scanning fails with "No VIN Pattern found in image" on all images
Closed
#105 feat: Add Grafana dashboards and alerting for application observability
Closed
#106 feat: Grafana dashboard provisioning infrastructure (#105)
Closed
#107 feat: Application Overview Grafana dashboard (#105)
Closed
#108 feat: API Performance Grafana dashboard (#105)
Closed
#109 feat: Error Investigation Grafana dashboard (#105)
Closed
#110 feat: Infrastructure Grafana dashboard (#105)
Closed
#111 feat: Grafana alerting rules and documentation (#105)
Closed
#95 [Chore]: Upgrade container image versions and migrate Promtail to Grafana Alloy
Closed
#103 [Bug]: Grafana unreachable - Traefik v3 ipWhiteList middleware renamed to ipAllowList
Closed
#101 [Docs]: Update documentation for container image upgrades
Closed
#100 [Chore]: Upgrade OCR Python base image from 3.11 to 3.13
Closed
#99 [Chore]: Upgrade Grafana 10.0.0 to 12.4.0
Closed
#98 [Chore]: Upgrade Loki 2.9.0 to 3.6.1
Closed
#97 [Chore]: Replace Promtail with Grafana Alloy
Closed
#96 [Chore]: Update base image mirror script for container upgrades
Closed
#80 [Feature]: Implement Unified Debug Logging System with Centralized Log Aggregation
Closed
#87 [Sub-issue #80-G]: CI/CD Integration + Documentation
Closed
#86 [Sub-issue #80-F]: Promtail + Loki + Grafana Stack
Closed
#84 [Sub-issue #80-D]: Frontend Logger Module
Closed
#82 [Sub-issue #80-B]: Backend Pino Migration + Correlation IDs
Closed
#85 [Sub-issue #80-E]: Docker Logging Configuration + Rotation
Closed
#83 [Sub-issue #80-C]: Traefik X-Request-Id Middleware
Closed
#81 [Sub-issue #80-A]: Logging Config Generator Script
Closed
#68 feat: VIN Capture Integration
Closed
#12 feat: OCR-powered smart capture for VIN, receipts, and owner's manuals
Closed
#71 feat: Owner's Manual OCR Pipeline
Closed
#70 feat: Receipt Capture Integration
Closed
#69 feat: Receipt OCR Pipeline
Closed
#67 feat: VIN Photo OCR Pipeline
Closed
#65 feat: Core OCR API Integration
Closed
#66 feat: Camera Capture Component
Closed
#64 feat: OCR Service Container Setup
Closed
#59 Send notifications when subscription tier changes
Closed
#60 Prompt vehicle selection on login after auto-downgrade to free tier
Closed
#58 Subscription tier not synced properly - displays "Free" after admin changes
Closed
#55 Accept Payments - Stripe Integration with User Tiers
Closed
#53 Login button unresponsive for unverified users - should redirect to verification page
Closed
#51 fix: Standardize card/list action buttons and hover states across all objects
Closed
#49 Bug: Fuel logs display 0.000 for efficiency and gallons due to DECIMAL type mismatch
Closed
#47 fix: Fuel Logs API returns 500 error due to repository/service snake_case mismatch
Closed
#45 Dashboard takes 1-2 seconds to load due to auth polling and duplicate API calls
Closed
#43 Enhance Documents UX with detail view, type-specific cards, and expiration alerts
Closed
#41 Bug: Purchase information not displayed and save fails on vehicle detail page
Closed
#39 VIN Number field displays license plate when VIN is empty
Closed
#37 fix: Remove legacy TCO fields from vehicle forms
Closed
#35 Standardize checkboxes to use MUI Checkbox component
Closed
#31 feat: Document feature enhancements - vehicle associations, editing, and insurance multi-vehicle support
Closed
#33 Document upload fails with timeout error on medium-sized files
Closed
#29 refactor: Link ownership-costs to documents feature
Closed
#15 feat: Total Cost of Ownership (TCO) per Vehicle
Closed
#26 feat: Add user data import feature
Closed
#23 bug: Free tier users can access Add Vehicle modal beyond vehicle limit
Closed
#9 feat: Add VIN decoding button to vehicle dialogs
Closed
#10 feat: Centralized audit logging admin interface
Closed
#6 bug: Backup retention purges all backups
Closed
#19 Fix: Add Document modal file input missing bottom padding
Closed
#8 feat: Implement user tier-based feature gating system
Closed
#11 feat: Admin User Management - Display vehicles per user with system-wide vehicle count widget
Closed
#13 Mobile: FAB + button maintenance option navigates to wrong screen
Closed
#7 docs: Fix documentation drift across repository
Closed
#4 Add Terms & Conditions agreement checkbox to user signup
Closed
#2 [Feature]: Dashboard - Vehicle Fleet Overview
Closed
#1 Short VIN Number Storage
175 Issues created by 0 users
Opened
#1 Short VIN Number Storage
Opened
#2 [Feature]: Dashboard - Vehicle Fleet Overview
Opened
#4 Add Terms & Conditions agreement checkbox to user signup
Opened
#6 bug: Backup retention purges all backups
Opened
#7 docs: Fix documentation drift across repository
Opened
#8 feat: Implement user tier-based feature gating system
Opened
#9 feat: Add VIN decoding button to vehicle dialogs
Opened
#10 feat: Centralized audit logging admin interface
Opened
#11 feat: Admin User Management - Display vehicles per user with system-wide vehicle count widget
Opened
#12 feat: OCR-powered smart capture for VIN, receipts, and owner's manuals
Opened
#13 Mobile: FAB + button maintenance option navigates to wrong screen
Opened
#15 feat: Total Cost of Ownership (TCO) per Vehicle
Opened
#16 feat: Maintenance Receipt Upload with OCR Auto-populate
Opened
#19 Fix: Add Document modal file input missing bottom padding
Opened
#23 bug: Free tier users can access Add Vehicle modal beyond vehicle limit
Opened
#26 feat: Add user data import feature
Opened
#29 refactor: Link ownership-costs to documents feature
Opened
#31 feat: Document feature enhancements - vehicle associations, editing, and insurance multi-vehicle support
Opened
#33 Document upload fails with timeout error on medium-sized files
Opened
#35 Standardize checkboxes to use MUI Checkbox component
Opened
#37 fix: Remove legacy TCO fields from vehicle forms
Opened
#39 VIN Number field displays license plate when VIN is empty
Opened
#41 Bug: Purchase information not displayed and save fails on vehicle detail page
Opened
#43 Enhance Documents UX with detail view, type-specific cards, and expiration alerts
Opened
#45 Dashboard takes 1-2 seconds to load due to auth polling and duplicate API calls
Opened
#47 fix: Fuel Logs API returns 500 error due to repository/service snake_case mismatch
Opened
#49 Bug: Fuel logs display 0.000 for efficiency and gallons due to DECIMAL type mismatch
Opened
#51 fix: Standardize card/list action buttons and hover states across all objects
Opened
#53 Login button unresponsive for unverified users - should redirect to verification page
Opened
#55 Accept Payments - Stripe Integration with User Tiers
Opened
#58 Subscription tier not synced properly - displays "Free" after admin changes
Opened
#59 Send notifications when subscription tier changes
Opened
#60 Prompt vehicle selection on login after auto-downgrade to free tier
Opened
#64 feat: OCR Service Container Setup
Opened
#65 feat: Core OCR API Integration
Opened
#66 feat: Camera Capture Component
Opened
#67 feat: VIN Photo OCR Pipeline
Opened
#68 feat: VIN Capture Integration
Opened
#69 feat: Receipt OCR Pipeline
Opened
#70 feat: Receipt Capture Integration
Opened
#71 feat: Owner's Manual OCR Pipeline
Opened
#80 [Feature]: Implement Unified Debug Logging System with Centralized Log Aggregation
Opened
#81 [Sub-issue #80-A]: Logging Config Generator Script
Opened
#82 [Sub-issue #80-B]: Backend Pino Migration + Correlation IDs
Opened
#83 [Sub-issue #80-C]: Traefik X-Request-Id Middleware
Opened
#84 [Sub-issue #80-D]: Frontend Logger Module
Opened
#85 [Sub-issue #80-E]: Docker Logging Configuration + Rotation
Opened
#86 [Sub-issue #80-F]: Promtail + Loki + Grafana Stack
Opened
#87 [Sub-issue #80-G]: CI/CD Integration + Documentation
Opened
#95 [Chore]: Upgrade container image versions and migrate Promtail to Grafana Alloy
Opened
#96 [Chore]: Update base image mirror script for container upgrades
Opened
#97 [Chore]: Replace Promtail with Grafana Alloy
Opened
#98 [Chore]: Upgrade Loki 2.9.0 to 3.6.1
Opened
#99 [Chore]: Upgrade Grafana 10.0.0 to 12.4.0
Opened
#100 [Chore]: Upgrade OCR Python base image from 3.11 to 3.13
Opened
#101 [Docs]: Update documentation for container image upgrades
Opened
#103 [Bug]: Grafana unreachable - Traefik v3 ipWhiteList middleware renamed to ipAllowList
Opened
#105 feat: Add Grafana dashboards and alerting for application observability
Opened
#106 feat: Grafana dashboard provisioning infrastructure (#105)
Opened
#107 feat: Application Overview Grafana dashboard (#105)
Opened
#108 feat: API Performance Grafana dashboard (#105)
Opened
#109 feat: Error Investigation Grafana dashboard (#105)
Opened
#110 feat: Infrastructure Grafana dashboard (#105)
Opened
#111 feat: Grafana alerting rules and documentation (#105)
Opened
#113 fix: VIN OCR scanning fails with "No VIN Pattern found in image" on all images
Opened
#115 feat: Improve OCR process - replace Tesseract with PaddleOCR and add cloud fallback for VIN scanning
Opened
#116 feat: OCR engine abstraction layer and PaddleOCR integration (#115)
Opened
#117 feat: Migrate VIN extractor to engine abstraction (#115)
Opened
#118 feat: Optional Google Vision cloud fallback engine (#115)
Opened
#119 chore: Docker and infrastructure updates for PaddleOCR (#115)
Opened
#120 fix: Diagnose and fix crop tool regression (#115)
Opened
#121 chore: Update OCR tests and documentation (#115)
Opened
#123 feat: Improve VIN photo capture camera crop experience
Opened
#125 feat: Improve VIN decode confidence reporting and make/model/trim editability
Opened
#127 feat: Google Vision primary OCR with Auth0 WIF and monthly usage cap
Opened
#129 feat: Expand OCR with fuel receipt scanning and owners manual maintenance extraction
Opened
#130 feat: Backend OCR receipt proxy endpoint (#129)
Opened
#131 feat: Tier gating and frontend receipt OCR flow (#129)
Opened
#132 feat: Station matching from receipt (#129)
Opened
#133 feat: Gemini engine module and configuration (#129)
Opened
#134 feat: Manual extractor Gemini rewrite (#129)
Opened
#135 feat: Backend OCR manual proxy endpoint (#129)
Opened
#136 feat: Frontend manual extraction flow (#129)
Opened
#137 docs: Documentation for OCR expansion (#129)
Opened
#138 feat: Tier guard middleware (#129)
Opened
#139 feat: Backend OCR receipt proxy endpoint (#129)
Opened
#140 feat: Tier gating and frontend receipt OCR flow (#129)
Opened
#141 feat: Station matching from receipt (#129)
Opened
#142 feat: Gemini engine module and configuration (#129)
Opened
#143 feat: Manual extractor Gemini rewrite (#129)
Opened
#144 feat: Backend OCR manual proxy endpoint (#129)
Opened
#145 feat: Frontend manual extraction flow (#129)
Opened
#146 docs: Documentation for OCR expansion (#129)
Opened
#148 fix: Scheduled maintenance list not displaying schedules (#129)
Opened
#149 feat: Email Receipt Ingestion via Resend Webhooks
Opened
#150 feat: Maintenance receipt extraction pipeline in OCR microservice (#16)
Opened
#151 feat: Backend migration and API updates for maintenance receipt linking (#16)
Opened
#152 feat: Maintenance receipt OCR hook and review modal (#16)
Opened
#153 feat: Form integration, tier gating, and receipt display (#16)
Opened
#154 feat: Email ingestion database schema and types (#149)
Opened
#155 feat: Resend inbound client and webhook endpoint (#149)
Opened
#156 feat: Email ingestion processing service (#149)
Opened
#157 feat: Receipt classifier and OCR integration (#149)
Opened
#158 feat: Vehicle association and record creation (#149)
Opened
#159 feat: Email ingestion notifications and error emails (#149)
Opened
#160 feat: Pending vehicle association resolution UI (#149)
Opened
#162 chore: UX design audit cleanup
Opened
#163 fix: mobile routing renders Dashboard instead of correct page (#162)
Opened
#164 fix: add Maintenance to mobile bottom-sheet More menu (#162)
Opened
#165 fix: null model display on Settings vehicle list (#162)
Opened
#166 chore: enrich Dashboard with meaningful content (#162)
Opened
#167 chore: vehicle cards show Year Make Model and hide empty VIN (#162)
Opened
#168 chore: Fuel Logs default to list view instead of form-first (#162)
Opened
#169 chore: add Maintenance page title and remove duplicate vehicle dropdown (#162)
Opened
#170 fix: FAB button overlaps content and bottom nav on mobile (#162)
Opened
#171 chore: standardize empty field display across all views (#162)
Opened
#172 chore: improve document card with upload date and file type icon (#162)
Opened
#173 chore: remove redundant Stations entry from mobile More menu (#162)
Opened
#174 chore: differentiate identical maintenance schedule names (#162)
Opened
#175 chore: remove Insurance default bias from Add Document modal (#162)
Opened
#176 chore: add desktop sidebar collapse to icon-only mode (#162)
Opened
#177 chore: header greeting use display name instead of email (#162)
Opened
#178 chore: remove dashboard auto-refresh footer text (#162)
Opened
#179 chore: add call-to-action links in zero-state stats cards (#162)
Opened
#180 chore: hide notification bell if non-functional (#162)
Opened
#181 chore: differentiate Stations icon from Fuel Logs in bottom nav (#162)
Opened
#182 chore: change maintenance receipt flow to upload-first with camera option (#162)
Opened
#183 chore: create AddReceiptDialog component (#182)
Opened
#184 chore: integrate AddReceiptDialog into MaintenanceRecordForm (#182)
Opened
#185 chore: viewport testing for maintenance receipt flow (#182)
Opened
#187 fix: Desktop sidebar clips logo after collapse-mode UX changes
Opened
#188 fix: Mobile login redirects to homepage without showing Auth0 login page
Opened
#189 fix: Callback route guard allows Auth0 code exchange to complete (#188)
Opened
#190 fix: Detect and clear stale IndexedDB auth tokens on mobile (#188)
Opened
#192 fix: Add pre-auth session clear mechanism on HomePage (#188)
Opened
#194 fix: Wire up "Add Maintenance" button on vehicle detail page
Opened
#196 feat: Redesign dashboard with vehicle-centric layout
Opened
#197 feat: Dashboard types and vehicle health data layer (#196)
Opened
#198 feat: VehicleRosterCard component (#196)
Opened
#199 feat: Dashboard ActionBar component (#196)
Opened
#200 feat: DashboardScreen composition and cleanup (#196)
Opened
#201 feat: Dashboard redesign tests (#196)
Opened
#203 feat: Add online user guide with screenshots to public website
Opened
#205 refactor: Clean up subscription admin override and Stripe integration
Opened
#206 chore: Migrate user identity from auth0_sub to MVP-generated UUID
Opened
#207 refactor: Database migration for nullable stripe_customer_id (#205)
Opened
#208 refactor: Repository updates for nullable stripe_customer_id (#205)
Opened
#209 refactor: Remove resolveStripeCustomerId and harden tier sync (#205)
Opened
#210 refactor: Update Stripe flows for nullable stripe_customer_id (#205)
Opened
#211 chore: Database migration SQL - auth0_sub to UUID (#206)
Opened
#212 chore: Auth plugin and admin guard UUID migration (#206)
Opened
#213 chore: Admin system refactor for UUID migration (#206)
Opened
#214 chore: User profile repository refactor for UUID (#206)
Opened
#215 chore: Feature repository UUID validation (#206)
Opened
#216 chore: Supporting code UUID updates (#206)
Opened
#217 chore: Test fixtures and documentation for UUID migration (#206)
Opened
#220 bug: Post-migration bugs from UUID identity migration (#206)
Opened
#221 chore: Update email FROM address and fix unsubscribe link
Opened
#223 feat: Replace NHTSA VIN decode with Google Gemini via OCR service
Opened
#224 feat: Add VIN decode endpoint to OCR Python service (#223)
Opened
#225 feat: Add backend OCR client method and types for VIN decode (#223)
Opened
#226 feat: Rewire vehicles controller to use OCR VIN decode (#223)
Opened
#227 chore: Remove NHTSA code and update documentation (#223)
Opened
#228 feat: Update frontend and tests for Gemini VIN decode (#223)
Opened
#231 feat: Migrate Gemini SDK to google-genai and enable Google Search grounding for VIN decode
Opened
#232 feat: Update OCR dependency to google-genai (#231)
Opened
#233 feat: Migrate GeminiEngine to google-genai with Google Search grounding (#231)
Opened
#234 feat: Migrate MaintenanceReceiptExtractor to google-genai (#231)
Opened
#235 feat: Update test mocks for google-genai SDK (#231)
Opened
#237 fix: Maintenance dates display one day off due to timezone conversion
Opened
#239 fix: Vehicle summary screen does not display maintenance records
Opened
#241 fix: maintenance repository mapper returns numeric fields as strings, violating MaintenanceRecord type contract
Opened
#243 fix: stations and community-stations repository mappers return DECIMAL prices as strings
Opened
#244 fix: fuel-logs enhanced repository methods return raw rows without mapping, breaking numeric type contract
Opened
#246 feat: Reorder mobile Log Fuel fields by usage frequency and add decimal keypad