Commit Graph

  • 25cf022964 feat: add prediction rebuild design spec — Layer 1 ridge model, LLM news overlay, volatility regime detector main Ovidiu U 2026-05-01 13:23:10 +01:00
  • e821a934a5 feat: add weekly_pump_prices migration for BEIS fuel price data Ovidiu U 2026-05-01 13:22:50 +01:00
  • 73de53994f fix: prevent sensitive field leaks in /me, add retry logic to Brent price sources Ovidiu U 2026-05-01 13:22:36 +01:00
  • df70e514e9 refactor: add hard-stop documentation and deny-list for destructive DB commands Ovidiu U 2026-04-30 09:01:20 +01:00
  • 28061541d4 refactor: remove auto-scroll on stations loading Ovidiu U 2026-04-30 09:01:11 +01:00
  • 895d55439b refactor: extract StationSearchService Ovidiu U 2026-04-30 08:20:23 +01:00
  • aff6dd1e0f refactor: SendScheduledWhatsAppJob — drop redundant filtering Ovidiu U 2026-04-29 20:21:30 +01:00
  • 06f5f2035f refactor: extract iterateBatches helper in FuelPriceService Ovidiu U 2026-04-29 20:21:21 +01:00
  • 69eb524e07 fix: ImportPostcodes streams into staging, swaps on success Ovidiu U 2026-04-29 20:21:15 +01:00
  • b4ef1177b2 refactor: PollFuelPricesJob calls service directly Ovidiu U 2026-04-29 20:21:05 +01:00
  • 8e29980dfe perf: memoize PriceReliability + PriceClassification per row Ovidiu U 2026-04-29 20:20:59 +01:00
  • 4ce5066596 refactor: persist EWMA only on LLM failure, dedup EWMA helper Ovidiu U 2026-04-29 20:04:41 +01:00
  • c46b017b51 chore: audit nits — PlanFeatures, test boot, EIA log, static method Ovidiu U 2026-04-29 20:00:09 +01:00
  • 7f64c42a23 refactor: extract DbDialect helper, inline ProfileValidationRules trait Ovidiu U 2026-04-29 20:00:01 +01:00
  • 4d9df1ee19 chore: add OneSignal and Vonage env keys to .env.example Ovidiu U 2026-04-29 19:48:21 +01:00
  • 5369b4a5a0 feat: build FuelPriceAlert notification with multi-channel adapters Ovidiu U 2026-04-29 19:48:10 +01:00
  • 27c82ef103 refactor: extract 6 prediction signals into Signal classes Ovidiu U 2026-04-29 19:43:28 +01:00
  • e39618f5df refactor: extract AbstractLlmPredictionProvider for shared boilerplate Ovidiu U 2026-04-29 19:35:57 +01:00
  • 00d0f7c8ec refactor: extract HaversineQuery helper, fix LL bind quirk Ovidiu U 2026-04-29 19:33:07 +01:00
  • 48af2083f3 feat: add fuel:archive command and monthly scheduler entry Ovidiu U 2026-04-29 18:33:05 +01:00
  • 783297694c fix: model audit cleanups (primaryKey, fuel_type cast, cadence cache) Ovidiu U 2026-04-29 18:32:55 +01:00
  • 775e076bb7 Add current_period tracking to subscriptions, document prediction engine, and refactor station list UI Ovidiu U 2026-04-29 18:14:03 +01:00
  • 8695d5ec95 refactor: flatten plans.features JSON to typed columns Ovidiu U 2026-04-29 18:13:26 +01:00
  • 088fd11058 Remove prediction API endpoint and integrate into stations search Ovidiu U 2026-04-29 13:28:33 +01:00
  • ee6de23709 feat: gate full prediction by ai_predictions feature flag Ovidiu U 2026-04-29 09:29:29 +01:00
  • 2ff3aeba4d fix: admin tier assignment when stripe price env vars are empty Ovidiu U 2026-04-29 09:29:21 +01:00
  • b8adb81c79 chore: gitignore ONSPD source CSV Ovidiu U 2026-04-29 09:29:07 +01:00
  • 3224b186b2 Merge branch 'feat/stripe-lifecycle' Ovidiu U 2026-04-23 12:00:19 +01:00
  • 36444cde05 feat: add past-due payment banner to dashboard Ovidiu U 2026-04-23 10:59:51 +01:00
  • b7175169f0 feat: handle invoice.payment_failed — set grace period and queue reminders Ovidiu U 2026-04-23 10:56:26 +01:00
  • 5b17f4cae4 feat: add SendPaymentFailedReminderJob with grace guard Ovidiu U 2026-04-23 10:51:13 +01:00
  • c127cc379e feat: add day-5 branded payment-failure reminder mailable Ovidiu U 2026-04-23 10:48:22 +01:00
  • de2499636f feat: add day-3 branded payment-failure reminder mailable Ovidiu U 2026-04-23 10:44:37 +01:00
  • 2078c4b83e feat: clear grace period on invoice.payment_succeeded Ovidiu U 2026-04-23 10:37:50 +01:00
  • b9d457578c feat: fold subscription deletion handling into HandleStripeWebhook Ovidiu U 2026-04-23 10:34:05 +01:00
  • 25b79f095b feat: bust plan cache on customer.subscription.updated Ovidiu U 2026-04-23 10:31:07 +01:00
  • a39d4b1b94 feat: consolidate stripe webhook handling into HandleStripeWebhook listener Ovidiu U 2026-04-23 10:27:23 +01:00
  • f1c1a1c572 feat: add grace_period_until to users table Ovidiu U 2026-04-23 10:23:27 +01:00
  • bf013926c0 docs: add stripe subscription lifecycle spec + implementation plan Ovidiu U 2026-04-23 10:05:50 +01:00
  • 19fc61a0a3 feat: accept ArcGIS ONSPD column aliases (PCD7/PCD8/PCDS) in postcodes:import Ovidiu U 2026-04-22 13:31:27 +01:00
  • 13fc227619 docs: link ONSPD attribution to source dataset page Ovidiu U 2026-04-22 13:28:39 +01:00
  • d8f87f964d Merge branch 'feat/self-hosted-postcodes' Ovidiu U 2026-04-22 13:19:39 +01:00
  • 975a1522cf docs: plan for self-hosted UK postcodes Ovidiu U 2026-04-22 13:19:33 +01:00
  • 29ba2f3d86 docs: add ONS/Royal Mail/OS attribution required by OGL v3 Ovidiu U 2026-04-22 12:39:11 +01:00
  • 3ec7cda790 feat: derive outcode centroids from postcodes during import Ovidiu U 2026-04-22 12:36:39 +01:00
  • d01a634f0b test: cover terminated + blank-coord skip paths for postcodes:import Ovidiu U 2026-04-22 12:34:19 +01:00
  • 9ad62538b9 fix: harden postcodes:import against duplicate headers and test collisions Ovidiu U 2026-04-22 12:33:10 +01:00
  • 4a60298606 feat: add postcodes:import command for loading ONSPD CSV Ovidiu U 2026-04-22 12:28:08 +01:00
  • 5426722c71 refactor: scope postcode cache to place names, DB is authoritative for postcodes Ovidiu U 2026-04-22 12:23:50 +01:00
  • d460de1850 fix: guard malformed postcodes.io responses and isolate persist errors from HTTP success Ovidiu U 2026-04-22 12:22:15 +01:00
  • 45bf1c0d24 feat: persist postcodes.io fallback results into local DB Ovidiu U 2026-04-22 12:18:20 +01:00
  • 1e3b246172 feat: resolve outcodes from local DB before HTTP Ovidiu U 2026-04-22 12:13:52 +01:00
  • 9fa9ea7835 feat: resolve full postcodes from local DB before HTTP Ovidiu U 2026-04-22 12:09:19 +01:00
  • 55c81fab7b style: align Postcode/Outcode models with house Fillable+casts convention Ovidiu U 2026-04-22 12:07:23 +01:00
  • 64a7cc3de5 feat: add Postcode and Outcode Eloquent models Ovidiu U 2026-04-22 12:04:39 +01:00
  • 7c114c72e4 style: add void return type to postcodes migration closures Ovidiu U 2026-04-22 12:03:51 +01:00
  • 2fe9c3ef77 feat: add postcodes and outcodes tables for self-hosted lookup Ovidiu U 2026-04-22 12:00:53 +01:00
  • b4bd78ab4c Rename SearchBar to PostSearchFilters, add sort controls and brand filter, relocate station count display Ovidiu U 2026-04-22 11:50:59 +01:00
  • 8335f49fd6 Redesign station cards with compact layout, improved typography, and expandable details Ovidiu U 2026-04-22 11:23:05 +01:00
  • dd9bd95657 Redesign search UI with unified input, expandable filters, and integrated map controls Ovidiu U 2026-04-22 09:38:23 +01:00
  • afe459f248 Lazy-load dashboard and settings views to reduce initial bundle size Ovidiu U 2026-04-20 20:38:04 +01:00
  • d822b77fb0 feat: redesign homepage with responsive hero, verdict card preview, and modular landing components Ovidiu U 2026-04-20 20:27:02 +01:00
  • 831637380c feat: expand station cards with detailed information and add live statistics endpoint Ovidiu U 2026-04-20 18:58:13 +01:00
  • c2466e5a61 feat(tiers): add display-name layer, push.frequency entitlement, and rename pricing cards Ovidiu U 2026-04-20 18:57:24 +01:00
  • 7dc41ba9ee feat: add location-based search, redesign station cards, and implement URL state management Ovidiu U 2026-04-20 15:51:02 +01:00
  • d29f3e6487 Add tier feature design spec, annual billing, fuel type normalization, and admin subscription management Ovidiu U 2026-04-20 14:13:03 +01:00
  • 5acb99c9e3 Remove obsolete Livewire fuel search components and consolidate pricing tiers Ovidiu U 2026-04-20 14:12:15 +01:00
  • aec547cd86 refactor: restructure Stripe pricing config to support monthly and annual tiers Ovidiu U 2026-04-14 19:26:01 +01:00
  • 486f0e689c refactor: split oil price ingestion and prediction into separate services + commands Ovidiu U 2026-04-14 16:59:43 +01:00
  • 1a0381265e refactor: extract Brent price sources into dedicated classes Ovidiu U 2026-04-14 16:29:52 +01:00
  • a7ee9f4557 feat: use EIA as primary Brent crude source with FRED fallback Ovidiu U 2026-04-14 16:23:06 +01:00
  • 4220b1b86a Add subscription tiers, notification preferences, and logging infrastructure Ovidiu U 2026-04-14 16:20:51 +01:00
  • 3cd3467178 config: add EIA API key for Brent crude price source Ovidiu U 2026-04-14 16:20:07 +01:00
  • d25883ead4 feat: add geolocation support with Near Me button and user location marker on map Ovidiu U 2026-04-11 21:27:11 +01:00
  • a969c1b347 feat: add fuel price classification markers and responsive search UI improvements Ovidiu U 2026-04-11 20:51:07 +01:00
  • 951bb0b98d feat: add sort select to homepage SearchBar Ovidiu U 2026-04-11 18:57:03 +01:00
  • b8adc98669 feat: add brand and reliable sort options to StationList Ovidiu U 2026-04-11 18:55:21 +01:00
  • 2747047f53 fix: correct default fuelType in useStations from 'petrol' to 'e10' Ovidiu U 2026-04-11 18:50:29 +01:00
  • 5fe9f9dc6d fix: empty results state and validation error display on homepage Ovidiu U 2026-04-11 18:48:25 +01:00
  • 276f9bf612 feat: wire up homepage search with map and station list Ovidiu U 2026-04-11 18:46:34 +01:00
  • 6f52f3f0d7 feat: add defaultOpen prop to LeafletMap Ovidiu U 2026-04-11 18:45:26 +01:00
  • d11d500a35 fix: accessibility and Enter key handling in SearchBar Ovidiu U 2026-04-11 18:44:34 +01:00
  • b5ee25db67 feat: add fuel type and radius selects to SearchBar Ovidiu U 2026-04-11 17:23:56 +01:00
  • 66c662f471 docs: add homepage search implementation plan Ovidiu U 2026-04-11 17:23:03 +01:00
  • 9f7b45751e docs: add homepage search design spec Ovidiu U 2026-04-11 17:15:23 +01:00
  • 03b0bece2c feat: add auth guards and server-side logout with postcode search integration Ovidiu U 2026-04-11 17:08:19 +01:00
  • 4a3ce4cc1d docs: add advanced skills for Vitest, Pinia, and Vue built-ins Ovidiu U 2026-04-11 16:28:36 +01:00
  • 069a85cf11 refactor: migrate from hardcoded hex colors to Tailwind CSS color tokens Ovidiu U 2026-04-11 16:26:34 +01:00
  • 02b004f381 fix: handle TransientToken in logout for session-based auth Ovidiu U 2026-04-11 13:29:03 +01:00
  • 977ae8a5a1 chore: remove orphaned settings-heading partial Ovidiu U 2026-04-11 13:27:47 +01:00
  • 25770445bc fix: correct $route naming and aria-expanded type in DashboardLayout Ovidiu U 2026-04-11 13:26:22 +01:00
  • 3895356b0d fix: replace Alpine dropdown with Vue reactive state in DashboardLayout Ovidiu U 2026-04-11 13:21:27 +01:00
  • ea7a5b4f10 chore: remove Livewire settings pages — migrated to Vue SPA Ovidiu U 2026-04-11 13:14:34 +01:00
  • 83809cd4f3 feat: add Appearance settings view with light/dark/system theme toggle Ovidiu U 2026-04-11 13:13:09 +01:00
  • f714169183 feat: add Security settings view with password update and 2FA management Ovidiu U 2026-04-11 13:11:58 +01:00
  • 00e99044f6 feat: add Profile settings view with name/email form and delete account modal Ovidiu U 2026-04-11 13:09:40 +01:00
  • 5bf8868124 feat: add settings routes and SettingsLayout sub-nav Ovidiu U 2026-04-11 13:08:11 +01:00
  • bd68a179d8 feat: add user avatar dropdown with settings and logout to dashboard nav Ovidiu U 2026-04-11 13:07:00 +01:00
  • 7976b9facc feat: add logout, updateProfile, updatePassword, deleteAccount to useAuth Ovidiu U 2026-04-11 13:05:04 +01:00
  • e90078d39e feat: add updateProfile, updatePassword, deleteAccount API endpoints Ovidiu U 2026-04-11 13:02:23 +01:00