v1.72.02026-05-28
Features
- sales-rep accounts bypass FFL/plan gates across nav, search, and dashboard; admin role dropdown gains Sales Rep option
v1.71.02026-05-27
Features
- impersonate button on the users table
v1.70.02026-05-27
Features
- contextualized /trial-ended + route existing customers to portal
v1.69.02026-05-27
Features
- /trial-ended routes to existing open invoice when present
v1.68.02026-05-27
Features
- days late admin column + dashboard past-due card
v1.67.02026-05-27
Features
- add FFL + stats hero to the dashboard
- compatible accessories sidebar preview + dialog; alternatives only when all out of stock
v1.66.02026-05-27
Features
- move usage into a Search History tab on the dashboard; remove standalone /usage page
- dashboard product search, per-period savings cards, results per-search savings, activity chart hover/axis/legend
- drive home feature badges from the live subscription plan matrix
Bug Fixes
- show cumulative search volume (searches table) as the searches metric on usage + savings site-wide
Refactors
- remove the seed default plans admin button
- remove all lint-disable comments — ExternalImage wrapper, chat useImperativeHandle, onboarding lifecycle hook
Chores
- bump web catalog deps (sentry, tanstack, date-fns, resizable-panels)
v1.65.02026-05-27
Features
- clamp admin watch description to one line with click-to-expand popover
- add sales-rep role
- add dashboard savings widget, search history, and vendor price badges
- sales-rep self-enrollment via SR- codes + admin management
- in-app banner when a member payment is past due
- mount past-due payment banner app-wide
- show next payment and days-late on admin user detail
- aggregate vendor-sync changelog fragments on prod deploy
- show past-due status and days-late in admin users table
- support UPC, MPN, or product name search from results page sidebar
- add /api/searches/savings-events proxy route with time-window support
- pure period-bounds and deriveTimeline logic for usage timeline
- useUsageTimeline hook with fetch-once derive-per-period design
- add period selector cards component for usage timeline
- add period-aware activity bar chart component
- secondary stats component for streak and peak hour
- optional period filter props for SearchHistory component
- time-aware savings widget copy and period dollar total
- unified usage timeline dashboard with period-aware savings and search history
Bug Fixes
- allow coreware CDN subdomains for next/image
Refactors
- remove RevenueCat + coupon UI (Stripe-only billing)
- split personal analytics dashboard into read/ card components
Styles
- fix import ordering in sales-rep web files
v1.64.02026-05-24
Features
- move /status to /activity (permanent redirect), relocate footer legal/version links into the user menu, and show per-vendor changes-tracked counts on partner cards
v1.63.02026-05-24
Features
- redesign /status as Market Activity page and relocate footer chrome to sidebar
- rewrite /faq as docs-site shell with sidebar, per-faq pages, copy/share, helpful widget
- add sitemap with FAQ article URLs; fix admin FAQ ?edit deep link
- show per-vendor changes-tracked count on partner cards via /api/changes-total/by-vendor proxy
Documentation
- update privacy policy and terms of service content
v1.62.22026-05-22
Chores
- hide partners link in nav and footer
v1.62.12026-05-22
Build System
- stage regenerated OpenAPI client during deploy to prevent dirty working tree
Chores
- remove fflscan sync button and paste-import dialog (dmca takedown)
v1.62.02026-05-22
Features
- signal-aware deal-detail dialog, rebuilt home cards, price-history + changes-total endpoints, vendor-logos in distributor list
v1.61.02026-05-22
Features
- per-UPC price-history endpoint + real sparkline on deal detail
v1.60.02026-05-22
Features
- rebrand home deals section ("The Real Price, Everywhere") and switch OFF badge from orange to emerald
Bug Fixes
- guard null logs array in user detail api usage tab
- use live distributor count on home "See What You're Missing" section
v1.59.12026-05-22
Chores
- bun 1.3.5→1.3.12, node →24.13.0, consolidate explicit deps into root catalog
v1.59.02026-05-21
Features
- maintenance mode (full-page screen for users, admin banner)
v1.58.62026-05-21
Refactors
- drop Settings JSON editor from admin system credentials page
v1.58.52026-05-21
Refactors
- strip dead vendor config fields from Configure Vendor dialog — only credentials remain editable
v1.58.42026-05-21
Chores
- extend TopPriceChangeRow with enrichment fields
v1.58.32026-05-21
Bug Fixes
- use white photo frame for product cards in dark mode
- route onboarding success/warning colors through theme tokens for dark mode
- route hardcoded colors through success/warning/info/destructive theme tokens for dark mode
v1.58.22026-05-19
Documentation
- P5.1 T6 prod verification notes
- accessories metrics baseline + external-api decision
v1.58.12026-05-18
Bug Fixes
- use real cron parser so /admin/vendors syncs tab shows next-run for offset-minute schedules instead of "Unknown schedule"
v1.58.02026-05-18
Features
- product-field config served from PG via typed REST routes; admin tabs swapped off Convex
Bug Fixes
- hydrate /admin/deals kill-switch/per-platform/redditSlots from persisted settings on load
Refactors
- remove Reddit social-credential card; add Reddit posts/day slot control
Documentation
- sync-invariant comments on credential-platform union
Chores
- regen rest-hooks for dealSocial reddit bridge
v1.57.02026-05-15
Features
- Social credentials card on /admin/deals with mask, reveal, and test button
- auto-attach Convex JWT to $api/fetchClient; full OpenAPI coverage (69 routes); public /api/openapi.json + /api-docs; admin vendor-comparison route replacing the Convex action
Refactors
- flip per-platform pause card to per-platform enabled with new semantics
v1.56.22026-05-15
Bug Fixes
- skip FFL document query when no FFL is selected (was throwing ArgumentValidationError)
v1.56.12026-05-15
Bug Fixes
- add VisuallyHidden DialogTitle to deals and chat-image dialogs
Chores
- bump catalog deps (convex 1.39, expo 55.0.24, sdk patches)
v1.56.02026-05-15
Features
- midnight-Denver deal pipeline + shared deals-grid component; admin regenerate is single-shot
- wire /api/admin/dropship-inventory-stats and -by-vendor to the Go vendor-service (drop 501s)
Refactors
- drop 5 stale dashboard cards backed by deleted Convex normalization queries
- migrate upc-search-form + use-upc-search from convex normalizedSearchQueries to /api/search-results (PG)
- migrate dealSocial/dropship admin/productConfig admin/upc-vendor-lookup off convex vendorInventory to PG endpoints
- delete orphaned components/user-vendor/ folder (post-userVendorInventory cutover)
v1.55.12026-05-14
Refactors
- remove unused "Populate Normalized Fields" admin button
v1.55.02026-05-14
Features
- regenerate REST hooks for new vendor-product-counts and vendor-field-coverage endpoints
- add /api/vendor-product-counts and /api/vendor-field-coverage proxy routes + tanstack hooks
- search-results route + useSearchResultsPG surface normalized_* attributes; canonical mfr/model/caliber win over vendor strings
v1.54.02026-05-13
Features
- register /api/product-search openapi schema
- add /api/product-search proxy to Go vendor-inventory search
- add useProductSearch hook with 300ms debounce backed by /api/product-search
- migrate SearchSuggestions to PG-backed product search API
- rewrite /unified-search as PG-backed product grid
- add product thumbnails, stock filter, and price gating to /unified-search results
Bug Fixes
- reject hex/scientific notation in limit param for /api/product-search
- suppress empty-state flash on /unified-search UPC queries
Refactors
- use existing useDebounce hook and remove unsafe cast in useProductSearch
- drop SearchType toggle types and remove UPC/MPN-specific validation
- drop UPC/MPN toggle from UnifiedSearchForm — auto-detect server-side
v1.53.02026-05-12
Features
- OG card uses brand name and hides price; admin date input + Activate row action
v1.52.02026-05-12
Features
- /deals/[slug] auth-aware view with live distributor count
v1.51.02026-05-12
Features
- /api/og/deal/[slug] route for branded social images
- deal-of-the-day landing teaser, /deals/[slug], dashboard tile, /admin/deals
- admin/deals adds dry-run button, per-platform pause toggles, OG preview links
- show picker timestamp in Recent Deals date column
- /admin/deals adds Pick by UPC form; proxy passes current-gaps + new params
Bug Fixes
- nav entry + Quick Nav button for Deal of the Day
- /deals/[slug] uses convex api directly so server component does not pull in React hooks
- useProductData reads from /api/search-results, not stale Convex products
v1.50.02026-05-11
Features
- sync convex user_id and user properties to GA4 for session attribution
- fire GA4 search event with UPC + vendor result summary on every search
v1.49.02026-05-11
Features
- client-side GA4 event tracking — view_pricing, signup_start, begin_checkout, bullseye_watch_created — and gaClientId capture for server-side correlation
Bug Fixes
- address CodeRabbit review on PR #265 — dataLayer fallback uses gtag tuple format, GaClientIdSync gates on auth state, vendors fallback consistent, behavior tests for tracking hooks/components, --pull respects --preview target
- resolve all oxlint errors and flaky test timing issues
Chores
- bump catalog and web package versions
v1.48.12026-05-08
Bug Fixes
- ensure NEXT_PUBLIC_* env vars ship to production builds via turbo cache invalidation and auto-pull
v1.48.02026-05-08
Features
- show Loops emails in /admin/email-history and add Loops/Resend badge in user outreach tab
- route GA4 through sGTM at sst.projectparabellum.com
Bug Fixes
- address CodeRabbit review — dialog test prop, scoped row assertions, provider label map, JSDoc, FFL filter test
v1.47.12026-05-08
Bug Fixes
- wrap onboarding useSearchParams in Suspense for production build
v1.47.02026-05-08
Features
- add stripe checkout utility
- BillingPeriodToggle shared component
- handle Stripe success return in onboarding
- paywall step uses Stripe Checkout
- trial-ended page uses Stripe Checkout
- membership pricing uses Stripe Checkout
- membership dashboard uses Stripe
- refactor users-table — editable Plan, Stripe Status badge, Grant Promotional dialog
- add server-side multi-select user filtering and filter presets to admin users table
Bug Fixes
- update CouponCode type to handle optional createdAt field
- pass requireCardForTrial through getFlowWithSteps and useWebOnboarding so paywall step honors the no-card toggle
Styles
- fix import spacing in Stripe checkout files
Chores
- remove @revenuecat/purchases-js dependency
v1.46.02026-05-08
Features
- forgot-password flow on login modal (Welcome Back / Sign in)
Bug Fixes
- suppress "Invalid Reset Link" flash on /reset-password after successful reset
Documentation
- add RevenueCat to Stripe migration design spec
- address review feedback in RC→Stripe migration spec
- add RC→Stripe migration implementation plan
Chores
- bump all outdated packages to latest versions
v1.45.02026-05-08
Features
- vendor-status page uses typed $api.useQuery hook instead of manual fetch
v1.44.02026-05-07
Features
- verify user credentials before save in admin edit dialog
v1.43.02026-05-07
Features
- rewire admin UI hooks from deleted modernVendorSync to vendorSyncCrons + vendorStatusQueries
Chores
- fail-fast commit-message lint at top of pre-commit hook
v1.42.02026-05-07
Features
- rich user-sync detail dialog with change details, price ledger, name-based filtering
v1.41.02026-05-07
Features
- dual-write API usage logs to PG; port products + exclusives to PG endpoints
v1.40.12026-05-06
Chores
- bump catalog deps (next, react-dom, tanstack-query, zod, postcss, etc.)
v1.40.02026-05-06
Features
- admin users table shows new-user onboarding step and sorts by name
- add user-vendor sync history dashboard
- admin can edit other users personal vendor credentials from user-vendor accounts table
- vendor-specific credential FAQ help on settings + onboarding entry surfaces
Tests
- add UsersTable + useUserManagement test coverage
Chores
- bump TS lib/target to ES2023 (shared base + web app inherits)
- bundle pre-staged session work (product-views/vendor-feedback API tests, loops cleanup)
v1.39.02026-05-06
Features
- port admin user vendor management pricing analytics to typed REST hook
- port admin FFL registry stats/filters/syncs to PG-backed typed hooks
- port user-facing FFL search call sites onto /api/ffl/search PG proxy
- port platform-summary, top-price-changes, top-inventory-changes consumers off Convex onto typed PG REST proxies
- add typed /api/product-images schema and rewire useProductImage hooks to use $api typed client
- port /results alternatives card from convex suggestAlternatives to typed REST hook (PG-backed)
- port trackProductView consumer onto /api/product-views proxy backed by Postgres
- port AccessoriesSection to typed PG-backed /api/accessories proxy
- port vendor-feedback submit to pg via /api/vendor-feedback proxy and useSubmitVendorFeedback hook
v1.38.02026-05-06
Features
- port Restock Intelligence card from Convex to typed REST hook ($api.useQuery against new /api/restock-intelligence endpoint)
Refactors
- drop unused UserInventoryCache type after Convex userVendorInventoryCache table removal
v1.37.32026-05-05
Bug Fixes
- auto-skip ffl upload for already-verified users
Chores
- import order tidy in category-admin-table test
v1.37.22026-05-05
Bug Fixes
- render MultiSelect options in a 90vh/90vw dialog so long lists are scrollable
v1.37.12026-05-05
Bug Fixes
- MultiSelect uses cmdk default overflow so dropdown actually scrolls
v1.37.02026-05-05
Features
- surface vendor-derived FAQ categories in admin/faq/categories
Bug Fixes
- restore MultiSelect dropdown scroll so all options are reachable
v1.36.02026-05-05
Features
- FAQ category management at admin/faq/categories with CRUD + cascade rename/delete
v1.35.32026-05-05
Bug Fixes
- cap MultiSelect popover height to 60vh so long lists scroll
v1.35.22026-05-05
Bug Fixes
- FAQ admin edit modal shows all categories and includes vendor options
v1.35.12026-05-05
Bug Fixes
- populate FAQ edit modal fields with existing data
v1.35.02026-05-02
Features
- typed REST factory + SPEC_HASH for non-web environments
- wire DeleteThreadDialog to thread sidebar
v1.34.02026-05-01
Features
- typed REST hooks via OpenAPI + TanStack Query
v1.33.22026-05-01
Bug Fixes
- refresh toast surfaces backend error message instead of always saying 'doesn't carry this product'
v1.33.12026-05-01
Bug Fixes
- admin schedule display now reflects the real weekly cron
v1.33.02026-05-01
Features
- collapse force/run-first sync buttons into single "Sync Now"
v1.32.62026-05-01
Bug Fixes
- fix vercel build packaging and deploy for monorepo setup
- surface lastChangeReason on /results Last Changed tooltip
- trigger-all-vendors calls Convex directly per-vendor (HTTP self-fetch was failing on Vercel); surface trigger-vendor-sync error details
v1.32.52026-05-01
Bug Fixes
- run vercel build from app dir so Next.js framework is detected correctly
v1.32.42026-05-01
Bug Fixes
- strip static/dev from vercel output before deploy
v1.32.32026-05-01
Bug Fixes
- skip trim_oversized_functions when functions dir does not exist
v1.32.22026-05-01
Bug Fixes
- remove clerk validation from deploy script
v1.32.12026-05-01
Bug Fixes
- wrap useSearchParams in Suspense boundary on auth/transfer page
v1.32.02026-05-01
Features
- migrate /api/search and user-vendor dashboard from Convex to PG via new vendor-service endpoints; new useUserVendorAccounts hook
- migrate use-sales-analytics to PG hooks, replacing Convex rollup queries
- migrate use-market-intelligence-summary to PG analytics, add transform tests
- port search history reads + writes to Postgres
Bug Fixes
- resolve HotProduct typecheck errors in market velocity card
Chores
- misc updates
- update gitignore for vendor-sync binaries
v1.31.02026-04-30
Features
- getPublicVendorList returns _id so PG-readers can map vendor_id_ref -> vendor_key
- search results read from PG via /api/search-results proxy (was Convex useQuery)
- Raw Data Preview tab fetches from /api/raw-data-sample (vendor-service PG) instead of Convex query
- /status page fetches vendor status + recent changes from /api/vendor-status (vendor-service PG) instead of Convex
- sync-history dashboard fetches from /api/sync-history/* (vendor-service PG); /api/vendor-sync-status powers consolidated cron table
- admin FFL pages fetch from /api/pg/ffl/* (vendor-service PG) instead of Convex queries
Chores
- remove manual image upload UI
v1.30.02026-04-29
Features
- product images now read from PG via /api/product-images proxy (was Convex useQuery)
- product image cache TTL bumped to 5min with jitter (avoid thundering herd)
Bug Fixes
- product-image route uses VENDOR_SERVICE_API_KEY (separate from local CRON_SECRET)
- vendor-service URL uses vendor-api.projectparabellum.com (TLS cert valid)
- SafeImage syncs currentSrc when src prop changes; useProductImage uses simple useState pattern
- validate UPC format before proxying to vendor-service
v1.29.02026-04-28
Features
- contact detail panel reads derived plan/lead-source/touch counts from enriched query
- outreach tab on user detail showing all sends/scans/clicks/redemptions
Bug Fixes
- show auto-detected lead source badge when derived value is not in the options list
- sort user-detail tabs alphabetically (Outreach moves between Notifications and Searches)
Refactors
- update CRM/Loops admin components to read _creationTime instead of deprecated createdAt
Documentation
- add outreach identity consolidation design spec
- add outreach identity consolidation implementation plan
- operational notes for Loops webhook + runtime caveats
v1.28.12026-04-27
Styles
- apply lint-staged import reorder to step-list test
Tests
- add coverage for onboarding guard, paywall, step editor/list, FFL overview, and trial-ended page
v1.28.02026-04-27
Features
- typed returns on shouldSkip Convex query hooks (FunctionReturnType vs as any)
- show OCR verification status for FFL documents and allow re-running
Chores
- adopt tsgo, consolidate typescript configs, ratchet strictness
v1.27.02026-04-25
Features
- add delete icon to FFL verification table with cascade-delete confirmation
v1.26.02026-04-23
Features
- add test profiles with e2e-mobile Maestro flow checking to SRP config
- replace header logo with favicon icon and add dark mode variant
- send FFL business details to Loops contact on ffl_approved event
Bug Fixes
- use branded red favicon as header logo
- ffl_approved Loops event now falls back to tradeName/licenseName when businessName is empty
- fall back to tradeName/licenseName when businessName is empty across ffl_approved flows
v1.25.02026-04-22
Features
- add useSignupCode hook for campaign ref capture
- capture campaign ref on sign-in + sign-up via useSignupCode
- dispatch signup code by prefix on onboarding
- dispatch /t/[code] by campaign audience
- add CampaignGreetingBanner component
- render campaign greeting banner on prospect homepage
- add audience + destinationUrl to CreateCampaignDialog
- allow editing campaign audience + destination from detail page
- add Restart button to campaign detail page
- Add Users dialog on campaign detail page
- render OG previews for social crawlers on /t/[code]
- add EventTypeMultiSelect component
- add SecretRevealDialog
- add AddEditDestinationDialog
- add DeliveryHistoryDrawer
- add WebhookDestinationsPanel
- mount WebhookDestinationsPanel in settings notifications tab
- add admin webhooks page with system/users/preferences tabs
- add UserNotificationAdminPanel
- add Notifications tab to admin user detail page
- add Send test button and style destinations table
- add Clear all personal notifications card on settings page
- add Edit + Copy URL buttons to destinations list
- click UPCs on search-trends/alerts/sales tabs to see shared UpcPreview popover
- move EventTypeMultiSelect to channels namespace
- move SecretRevealDialog to channels namespace
- move DeliveryHistoryDrawer to channels namespace
- add type-aware AddressField
- add type-aware AddEditChannelDialog
- add GlobalSettingsCard
- add ChannelsPanel with scope-aware data source
- wire new panels into /settings?tab=notifications
- add /admin/notifications with three tabs + redirect /admin/webhooks
- rewrite admin user detail Notifications tab
- scope-aware EventTypeMultiSelect with human labels
- ManageFiltersDrawer for per-(user, vendor) channel mutes
- wire ManageFiltersDrawer into ChannelsPanel + show owner name/email in admin audit
Bug Fixes
- style EventTypeMultiSelect and widen dialogs to 90vw
- add Send Notifications links to admin-panel + breadcrumbs
- update EventTypeMultiSelect tests for exact event name matching
- replace hardcoded UPC-Me with Project Parabellum in user-facing strings
- route admin-scope channel delete/toggle through admin mutations
- route admin-viewing-user channel edits through adminUpdateUserChannel
- allow editing auto-managed channel types (inApp, mobilePush) in edit mode
- wrap HomeScreen in Suspense so useSearchParams prerender bail works
Performance
- swap usage tab to bounded getUsageStats query (fixes navigation stall after opening /settings?tab=usage); settings tabs ordered alphabetically
- render Market Data tab immediately; defer only summary cards while 30-day analytics action runs
- summary is now a live Convex query that updates instantly instead of re-running a 30-day scan on every mount
Refactors
- rename "Codes Generated" to "Recipients" across campaign admin
- consolidate campaign codes into engagement table + add search
- delete legacy webhook/slack frontend components
Styles
- reskin /admin/notifications tables to match admin/users pattern
- drop trailing space in describe name
Chores
- fix import ordering in use-signup-code test
v1.24.12026-04-18
Chores
- add brochure + label generators for print campaigns
v1.24.02026-04-17
Features
- delete button in contact detail dialog + bulk delete for selected rows
- contact detail opens in a modal dialog instead of side panel
- pipeline phase filter in Import Existing dialog and Purge dialog, phase column on CRM table and purge table with multi-phase tooltip
- rename Automation tab to Loops
Bug Fixes
- single AlertDialog for purge confirmation so step transitions do not lose state
v1.23.02026-04-17
Features
- choose which contacts to purge in local Loops purge dialog
Bug Fixes
- correct test mock shape and remove redundant state reset in purge dialog
v1.22.02026-04-16
Features
- tooltip on restock intelligence prediction badges showing event count
Bug Fixes
- render user_welcome notification with a personalized greeting and unify distributor count across landing, pricing, and welcome surfaces
Documentation
- spec for splitting user_welcome from user_joined notification
v1.21.22026-04-16
Bug Fixes
- make BullsEye Watch entire button clickable to toggle (was only the icon)
- make Sonner toast description text readable (was almost invisible)
v1.21.12026-04-16
Bug Fixes
- show BullsEye Watch toggle when only unconfigured vendors block the all-unavailable gate
- make BullsEye Watch toggle button readable and obviously clickable in dark and light mode
v1.21.02026-04-16
Features
- add Select Existing mode to campaign import wizard — multi-select CRM contacts, skip review step, route to generateCodesForCrmContacts
- Loops CSV import dialog with metadata (stage/priority/status/phase + override)
- CRM bulk edit with row selection and dialog
- CRM mailing list multi-select filter popover
- Copy URL button now a dropdown with QR URL and Link URL options in outreach views
- remove dead views column from campaign codes table
- enforce 20-char max on campaign name input with live counter
- show per-vendor results on search + api-usage admin views
Bug Fixes
- re-enable web vitest suite, remove unauthorized e2e exclusions
- update useCrmContactsList/Search call sites for mailingListKeys param
- remove Generate Codes button, show CRM contact name in codes table, add Remove Orphan Codes action
Tests
- add real RTL tests for CSV import, bulk edit, mailing list filter, and create campaign dialogs
Chores
- remove native app from monorepo and bundle in-progress admin/test updates
v1.20.02026-04-13
Features
- unified outreach hub implementation plan
- add unified outreach hub page with route redirects
- add campaign funnel bar, engagement table, and contact engagement timeline components
- add 4-step bulk import wizard to campaign detail for importing CRM contacts and generating codes
- add campaign name inline editing and delete with confirmation dialog
- add Purge Local button to Loops contacts table
- add Import Audience button to Loops contacts table
- CSV parser extracts all columns into customProperties
- display custom properties in contact detail panel and CRM field settings
- display custom properties in contact detail and CRM settings
Bug Fixes
- remove unused searchParams import in crm-page-content
- move Outreach nav entry to alphabetical position
- campaign detail links point to /admin/outreach route
- Import Audience button now accepts CSV file upload
- use RFC 4180 CSV parser for Loops audience import
- replace as-any casts with Id<"campaigns"> types, add email regex validation in CSV import
Refactors
- extract shared PageLoadingFallback component from 6 admin pages
Documentation
- add unified outreach hub design spec
Chores
- gitignore .superpowers dir
- commit formatter changes
v1.19.02026-04-08
Features
- tooltip + presence badges in chat header and admin chat sidebar
Documentation
- add chat header presence design spec
v1.18.02026-04-08
Features
- show hypothetical API overage spend for super-admins on admin user detail page
v1.17.02026-04-07
Features
- unified user vendor configurations table with Source column on credentials tab
v1.16.02026-04-07
Features
- show shop name on admin user overview
Bug Fixes
- show suggested alternatives above results table for all users
Tests
- install vitest infrastructure, add lib/utils + hooks tests, scope SRP rule
v1.15.12026-04-07
Bug Fixes
- wrap useSearchParams consumers in Suspense for Next 16 prerender
Styles
- apply formatter import order to admin page wrappers
v1.15.02026-04-07
Features
- standalone /api-usage page mirroring admin /admin/api-usage layout
- admin breadcrumbs, quick-nav search & layout consistency
Bug Fixes
- respect iOS safe-area inset on mobile bottom nav
Chores
- expand SRP testRequired exclusions for framework files
v1.14.02026-04-07
Features
- usage spending limits panel for api overages in user settings and admin user detail
- distinguish global default vs per-user override on api spending limits panel
Bug Fixes
- handle null heartbeat result from presence:heartbeat
Styles
- reorder imports in presence-provider
v1.13.02026-04-01
Features
- add monthly API quota progress bar and overage alerts to settings
- add API Calls/Month input to admin plan editor
v1.12.32026-04-01
Refactors
- use _creationTime for API usage log display
v1.12.22026-04-01
Bug Fixes
- remove degraded status from vendor status page
v1.12.12026-04-01
Bug Fixes
- treat plan field as source of truth for subscription status badge
- use data-layer hook in api-usage-dashboard instead of direct convex imports
Performance
- use local SHA256 hashing for API key validation
Documentation
- add Loops.so integration documentation
v1.12.02026-03-31
Features
- show upgrade teasers for Pro+ gated features instead of hiding them
Bug Fixes
- resolve redirect loop for returning cancelled trial users
- document onboarding query deduplication and restock skip pattern
v1.11.12026-03-27
Refactors
- migrate onboarding steps to data-layer hooks
Chores
- update safe patch/minor dependencies across monorepo
- upgrade zod to v4
- upgrade lucide-react to v1.7.0, rename deprecated icons
v1.11.02026-03-26
Features
- add full sync change manifest with item-level details in sync history dialog
Bug Fixes
- load sync change data on-demand instead of auto-loading all pages
- address code review - CSV injection, type safety, on-demand loading progress
- fix double csvSafe, filename sanitization, proper useEffect loading, type-safe interfaces
v1.10.02026-03-25
Features
- add public vendor status page at /status showing connection status and 30-day uptime
- add landing navigation header to status page
- add landing navigation header to status page
- add public /partners page with vendor directory and partner application form
- add Partners link to landing page navigation and footer
- add live per-UPC vendor refresh button to search results
- expand sync history detail dialog to 90vh x 90vw
- expand sync detail dialog to 90vh x 90vw
Bug Fixes
- capture global vendor sync time in feedback when user has no personal inventory
- use correct data-layer import for status page hooks
- suppress overly strict FunctionArgs type on paginated notification query
- fix sync history detail dialog rendering
v1.9.12026-03-24
Bug Fixes
- disable SMS notification toggles with coming soon label
v1.9.02026-03-24
Features
- add vendor credential failure and recovery notification preferences to System & Admin settings
Bug Fixes
- improve notification preference warning copy for notify every occurrence toggle
v1.8.02026-03-14
Features
- add API usage history and stats to settings page
- add API usage tab to admin user page and vendor results to usage logs
Refactors
- remove tier pricing fields and admin pricing model UI
v1.7.12026-03-13
Refactors
- remove user inventory quantity display from search results
v1.7.02026-03-11
Features
- add backfill sync status button to Loops contacts table
Bug Fixes
- show diagnostic info in backfill sync status toast
v1.6.02026-03-11
Features
- show Loops sync status indicator on CRM contacts
- add separate Sync New and Update Existing buttons for CRM-to-Loops sync
v1.5.02026-03-11
Features
- add vendor credential help links in onboarding, settings, and dashboard error surfaces
- add server-side CRM contact filtering and search with debounced text search
- add CSV export/import buttons to CRM admin page
- repurpose campaigns page as Loops marketing dashboard with contacts, events, and stats
- add CRM phases management UI, contact phase selector, and phase filter
- add sync dialog with filter controls for CRM-to-Loops contact sync
Bug Fixes
- remove non-existent oxlint rule no-pass-ref-to-parent
- remove non-existent oxlint rule and ignore .d.ts files
- always show CRM phase filter dropdown
v1.4.12026-02-26
Bug Fixes
- use direct convex API import in campaign tracking route for React 19.2 compat
v1.4.02026-02-26
Features
- add invoices tab to settings for viewing and downloading billing invoices
- update favicon to Project Parabellum branding
- add personal analytics dashboard with search trends, top products, vendor usage, and activity feed
- add subscription management - manage subscription button, upgrade/downgrade plans
- add campaign tracking admin pages with QR code generation and CSV export
- add invoice history to membership page
- unify billing settings tab with membership dashboard
- sync RevenueCat subscriber attributes on membership dashboard init
- add campaigns to admin sidebar navigation
- add CRM admin page with pipeline stats, filters, and contact table
- add CRM contact detail panel with split-panel layout and inline editing
- replace hardcoded CRM dropdowns with DB-driven field options and settings tab
Styles
- fix import ordering in campaign tracking components
- align invoice card width with membership dashboard cards
Chores
- update bun.lock
v1.3.12026-02-25
Bug Fixes
- add @tailwindcss/typography for proper markdown prose rendering in legal pages
Refactors
- remove landing page content management admin page and legacy dead code
v1.3.02026-02-25
Features
- add vendor exemption from credential validation via env var
- update fallback pricing plan feature lists to match DB-driven data
- consolidate plan features into DB-driven array with admin management, DnD reorder, and comingSoon flag
- add Google Analytics via @next/third-parties
Bug Fixes
- add missing useEffect dependencies in hero-search-mock
- add useEffect dependency and document buildFeatureRows semantics
Refactors
- remove deprecated feature list items from fallback pricing plans
- update comments referencing removed platformFeatures table
v1.2.02026-02-24
Features
- show version and changelog in web app settings and footer
- add coupon code redemption to paywall and billing settings
- add admin coupon management page with stats, table, create/deactivate dialogs, and redemption history
- add Test Connection button for vendor credential validation during onboarding
- add Test Connection button to vendor settings credential form
- display subscription platform icon and smart manage URL on membership dashboard
- add Test Credentials button to vendor cards, use data-layer hooks
- vendor card Test Credentials uses server-side stored credential lookup
- switch Test Credentials to async ECS validation with reactive status
- synchronous credential validation replaces async ECS pattern
- add abort generation button and smooth text streaming to AI assistant
- add test credentials button to uniform pricing vendor cards and admin vendor management tabs
- auto-download hook binaries with staleness cache
- add invalid credentials status to search results and prominent vendor card indicators
- show stored credential validation status in admin vendor tabs
Bug Fixes
- enable Turbo TUI for interactive dev sidebar
- address code review findings for coupon admin UI - missing durations, parseInt radix, type safety
- add opticMount productType to alternative types and display
- wrap isOptic and isRedDot in useMemo for consistency
- derive Alternative type from Convex query and add enter animation to prevent layout shift
- exclude credentials_required from unavailable results check to avoid misleading alternatives
- remove unreachable match and unsafe reverse category lookup in formatters
- align grain suffix in header and alternatives titles, add loading skeleton, improve img alt text for accessibility
- use plan homeRoute instead of hardcoded /dashboard on home screen
- show actual plan name and fix manage subscription button on membership page
- show credential config button for vendors with system-allocated credentials
- route uniform pricing vendor credential tests through system credentials action
- route uniform pricing vendor credential tests through system credentials action
- replace hardcoded bg-white with theme-aware bg-background in vendor management cards
Refactors
- remove legacy member plan references, use pro/pro_plus only
Styles
- apply formatter fixes
Tests
- add unit tests for buildProductTitle, normalizeCaliber, normalizeManufacturer
Chores
- migrate linting from ESLint to OxLint
v1.1.02026-02-09
Features
- per-vendor restock intelligence with env var override
- add per-app changelog aggregation with just release recipes
Bug Fixes
- use bun instead of pnpm in vercel build config
- stub native workspace for vercel bun install
- clear notification records when viewing a conversation
- handle \*/30 cron schedule in next run calculation
- show entriesProcessed as fallback when totalEntriesAfterSync is missing in sync history table
- show BullsEye Watch button when unconfigured vendors are present in search results
Performance
- reduce redundant markAsRead calls on subscription refreshes
Refactors
- remove ETL config editor from vendor management
- rename allOutOfStockOrNotCarried to allResultsUnavailable and add unit tests
- use strict Result type in computeAllResultsUnavailable and add all-loading test
Documentation
- add README and CLAUDE.md with project setup instructions
Chores
- enable lintTypecheck, fullLintOnCommit, changelog, convexValidation, and mockCheck pre-commit features
- add setup-hooks make command for cross-platform hook binary installation
- add manual workflow_dispatch trigger to build workflow
- migrate pnpm references to bun