Changelog

Everything we ship in Keel HQ. Releases go out daily.

Releases

156

Days since last

0

Current

v1.103.0

Releases over time

156 total

log 0589 Nov 2026

v1.103.0Latestminor

Added

  • integrations: connect Google Analytics 4 and map properties to stores
  • integrations: import Google Analytics daily sessions and users
  • overview: Revenue per session from Google Analytics sessions
  • security: disconnecting a bank or removing an imported account now needs an admin and is recorded

Changed

  • hardening: November state-machine audit

Fixed

  • finance: forecast Other row explainer says Finance Settings
  • ops: quiet one-off Meta creative timeouts; plain-language cron alerts
  • shopify: a store's first import no longer gets stuck when its bulk export is replaced

log 0578 Nov 2026

v1.102.0minor

Added

  • finance: Cash is now Finance, since it covers debts, bills, sales tax and forecasts as well as cash. Old /cash links and bookmarks redirect to /finance
  • finance: search your debts from the command palette (⌘K)
  • inventory: select several products and set their lead time and MOQ in one go

Fixed

  • overview: CM2 uses your recent ShipStation label costs when the selected period has no labels yet, instead of showing "Shipping cost not set"
  • shopify: one order Shopify can't return no longer stalls a historical backfill. Keel skips past it and keeps going
  • shopify: customer names stored before 1.101.0 are removed. Wholesale accounts show their company name or a customer reference
  • reports: generating several past months at once stays within your hourly report limit and starts with the oldest month, so a batch no longer fails partway through
  • integrations: Amazon Ads asks for your region (North America, Europe or Far East) before connecting, and a reconnect re-syncs the current connection
  • integrations: the Amazon Ads card sits with the other ad platforms, with clearer labels
  • settings: Sales Tax settings line up, and Amazon regions show readable names

log 0567 Nov 2026

v1.100.0 – v1.101.0minor

Added

  • ads: connect Amazon Ads (beta): Sponsored Products, Sponsored Brands and Sponsored Display spend counts in your ad spend, MER and Blended ROAS, with campaign results and attributed sales
  • integrations: Amazon Seller Central: orders, FBA and merchant-fulfilled inventory, settlements, fees and returns (beta)
  • reports: monthly reports are now opt-in, you can generate past months on demand, and Claude or ChatGPT tell you plainly when a month has no report yet
  • overview: estimated debt interest (from the debts you track in Cash, at their APR) now sits below the operating line, and the Overview reminds you to check your fixed costs against your books
  • settings: mark each Shopify store as Retail, Wholesale or Both in Settings → Integrations. Wholesale questions in Claude or ChatGPT use that setting, plus Shopify B2B company orders in any store
  • mcp: ask about wholesale accounts: each account's last order, order count, lifetime and period revenue, and its full order history
  • mcp: product performance by product, variant, product type, category, discount code or order tag
  • mcp: costs split per store, and COGS for new customers' first orders
  • mcp: check data quality, read your cost settings and look up how each metric is calculated
  • billing: Settings → Plan shows how your usage tracks against your plan, with a chart
  • pricing: a seasonal spike like Q4 won't move you to a higher plan

Fixed

  • shopify: order sync and Overview refresh work again for stores that stopped syncing after 1.100.0. Wholesale accounts are now named by their company, or a customer reference, rather than the customer's name
  • cash: cash actions no longer repeat, and they close themselves when the deadline passes or when a matching bank payment covers the amount owed
  • overview: month-to-date compares with the same days last month, not the whole month
  • mcp: Claude and ChatGPT read the MER target you set in Goals
  • inventory: gift cards, untracked items and products you've excluded stay out of stock planning
  • inventory: no reorder date is shown until a product has a lead time, so products without one no longer say "reorder today"
  • settings: the margin helpers in Settings match how CM2 is calculated
  • mcp: cohort margin counts only eligible first orders
  • integrations: when ShipHero's API credits run low, Keel waits for them instead of dropping the sync
  • ads: Meta sync results are saved reliably, and a failed save is reported instead of passing silently

log 0556 Nov 2026

v1.97.0 – v1.99.0minor

Added

  • mcp: ask Claude or ChatGPT about any date range: totals and trends by day, week, month or quarter, for DTC, B2B or both, and for new or returning customers
  • mcp: customer cohorts, which first products bring buyers back, how long customers take to order again, and products bought together
  • mcp: the inventory list is compact by default, with filters, sorting, product search, product categories and seasonal sales pace
  • inventory: stores that share one warehouse can count one stock pool, matched by SKU, so totals, value and days of cover aren't doubled. It's on by default for workspaces with two stores; turn it off in Settings → Inventory
  • integrations: ShipHero inventory and fulfillment costs (beta)
  • cash: an alert when a credit card is close to its limit, so you can pay it down before a charge is declined
  • cash: Plaid bank connections (beta) show when a bank needs you to reconnect, and removing a bank also disconnects it from Plaid
  • marketing: the invite page for friends shows the offer, what it's worth, when it expires and a QR code
  • ads: Kill, Keep and Scale for Meta ads now use each product's margin. Ads are judged against a break-even ROAS from their category's margin after product and variable costs, and you can set a margin for a category, or override it for one ad or ad group. Each verdict says which margin it used. Products with no cost set keep your target ROAS
  • ads: Today and Yesterday in the Ads Performance date picker. Today shows figures as of their last pull. Verdicts need a longer window, so they're hidden on a single day
  • inventory: a margin grade beside the sales grade in the catalog, with a filter and the working on hover
  • fulfillment: Warehouse is now Fulfillment, with Shipping and Warehouse inside it. Old links still work

Fixed

  • overview: CM2 now includes shipping, from your label costs or the average you set, and a returns allowance. If you haven't set them, the breakdown says so instead of guessing
  • inventory: inventory cost value now uses each variant's unit cost, and oversold stock no longer makes stock value negative
  • ads: Meta campaign spend history fills in back to 13 months without needing a monthly report. Purchases count as conversions, and you can set which campaigns are prospecting or retargeting in Settings → Ads
  • ads: when Meta asks Keel to slow down, the pull shows as Delayed instead of failed, retries the same day, and lets you pull again from the Ads page
  • ads: full ad names wrap instead of being cut off, disapproved ads read Rejected, and the ads pages work better on mobile
  • reports: reports with more than one currency no longer show ratios or comparisons that mix them
  • shopify: when a customer asks to be forgotten, their shipment tracking numbers are removed too
  • shopify: a store's first order import always finishes. Large stores could get stuck partway through and never finish importing their history
  • shopify: if Keel can't read your Shopify payouts, the Shopify card asks you to grant access instead of showing an error on every sync
  • cash: the Helm reports actual cash for weeks that have closed, and uses the real current week
  • cash: each cash forecast stays linked to the run that produced it
  • cash: Plaid transactions re-import correctly after duplicates are cleaned up
  • ads: the Google Ads account picker marks disabled and test accounts
  • integrations: Recharge never reports a sync as complete when it had to skip records
  • integrations: Loop Returns resets its data in one step and takes turns fairly between workspaces
  • shopify: connecting a store with a long order history no longer stalls its first import. Orders import in the background, and Settings shows the progress
  • inventory: a product's margin card names the ad spend it subtracts (Google Shopping and Performance Max spend on that product)
  • reports: the monthly report shows amounts in a different currency from your workspace as unknown, never labelled in your currency

log 0545 Nov 2026

v1.95.0 – v1.96.0minor

Added

  • helm: insight cards in The Helm. Before you ask anything, the Helm shows what needs you in your numbers right now: a product that will sell out before a restock can land, cash dipping below your minimum, ads Keel would pause, cash tied up in slow stock, products with no cost set, a big week-over-week move in MER or ROAS, your best email send time, and payouts on the way. Each card shows the dollar impact, one action and why it appeared, and you can dismiss or snooze it. The Overview shows how many are waiting
  • inventory: product margins in each product's detail, from net revenue down to CM3
  • overview: See breakdown on CM1, CM2, CM3 and net profit lists every cost behind each margin
  • inventory: the same product sold on more than one storefront shows as one catalog row, matched by SKU or linked by hand, with a per-store breakdown
  • inventory: drops can sell on DTC, wholesale or both, and can be edited after you create them
  • warehouse: raw materials get an automatic reorder point from daily usage, supplier lead time and safety days, with the working shown. Set a fixed number to override it
  • warehouse: consumption rules can be edited, count per shipment, and work from Shopify fulfillments when ShipStation isn't connected. Every rule change is recorded in the audit log
  • shopify: subscription orders: subscription revenue and its share, new subscribers, recurring orders and subscription AOV, from your Shopify orders. Keel counts your past orders in the background
  • cash: the forecast shows when it was last updated, which sources fed it and how fresh each one is, with a banner when a source failed. It also refreshes after you add or edit a debt
  • app: a command palette. Press ⌘K (Ctrl+K on Windows) or use Search to jump to any page, find a product by name or SKU, or start an action like a new purchase order
  • roadmap: comment on and follow roadmap cards, and get an email when a card you follow moves
  • support: a contact form on the Support page
  • ads: Kill, Keep and Scale verdicts for Google campaigns and ad groups. Set a minimum ROAS per campaign (ad groups use their campaign's target until they have their own), and campaigns still collecting conversions are marked as still maturing
  • overview: dismiss or snooze an item in Alerts & Action Items, and restore it from the dismissed list
  • roadmap: a public roadmap at keelhq.io/roadmap. In the app, open Roadmap from the account menu to vote on features and suggest your own
  • cash: large PDF statements are compressed in your browser before upload, so they fit the upload limit

Fixed

  • cash: the forecast shows the weeks ahead by default, with past weeks behind Show history, and the chart's bars now add up to the cash line
  • reports: the monthly report no longer labels amounts in another currency with your workspace currency; they show as unknown
  • overview: on mobile, the vs-prior change stays inside its KPI card
  • ads: a clearer message when Meta doesn't return images for Instagram ads
  • ads: Meta spend now carries its ad account's currency. Before, Meta beside Google or manual spend read as a currency mismatch, which left MER, Blended ROAS, CPA and CM3 blank even when everything was in one currency. Existing days are filled in from each connected account

log 0534 Nov 2026

v1.93.0 – v1.94.0minor

Added

  • currency: Keel now works in your store's currency. Each workspace's currency comes from its Shopify store (change it in Settings → Workspace), and every figure, report and AI answer is labelled in it. Keel doesn't convert between currencies: ad spend in a different currency shows as unknown, never as $0
  • settings: a Workspace tab for owners and admins, with time zone and currency
  • overview: two revenue tiles: Product Sales (line items after discounts) and a new Net Revenue (plus shipping, minus refunds), the figure margins, MER and ROAS use
  • overview: Top Products can be filtered by storefront
  • ads: Google Shopping and Performance Max results by product, with ROAS against each product's margin
  • email: the Email page offers the same periods as the Overview (Today through 90 days), plus year to date and the last 365 days
  • cash: upload a PDF statement or paste a screenshot (⌘V / Ctrl+V) when adding a debt; screenshots paste into every image upload
  • app: the new-version prompt links to what's new
  • marketing: a simpler homepage, an About page, and the full pricing comparison on the Pricing page
  • security: a plain-English security page explaining how Keel keeps each workspace's data separate and safe
  • shopify: order line-item properties (engraving, gift notes and other custom options) are kept with each order, including past orders
  • marketing: a clearer homepage that leads with what Keel does for you and your AI agents

Fixed

  • ads: the tag editor no longer locks every tag on save, tags can go back to automatic, and the Namer, editor and classifier agree on hooks and formats
  • ads: Meta and Google fill in missing days after a workspace time zone change
  • ads: a Meta account with many ads no longer fails its daily sync when Meta asks for smaller requests
  • cogs: an even exchange's returned item now comes back out of cost of goods
  • marketing: a post's engagement rate stays correct when two edits overlap
  • brand: the favicon and app icons use the pixel compass
  • privacy: clearer descriptions of the order details and Google Ads data Keel reads
  • ads: boosted Instagram posts show the real reel frame, and catalog (DPA) ads show their first products instead of a blank tile
  • ui: every clickable element shows a pointer cursor, including menus, selects and tabs
  • meta: Meta beta access requests go to support@keelhq.io

log 0523 Nov 2026

v1.90.0 – v1.92.0minor

Added

  • cash: statement alerts and notices open that card's edit drawer directly, and the drawer has its own link
  • layout: the bottom of the sidebar is now one account menu with Settings, Alerts, Changelog, Help and Sign out, so the navigation has more room
  • ads: Google Ads campaign and ad-group performance on the Ads page, with a Meta / Google / All channel switch: spend, conversions, ROAS, CPA and trend for 7, 14, 30 or 90 days
  • ads: see each ad's creative (thumbnail, copy and call to action) in Performance, the Library, ad detail and Intelligence top combos
  • meta: Meta Ads beta access: brands can request to be added as testers while Meta reviews Keel

Changed

  • performance: margin, COGS and inventory pages load faster
  • performance: lighter database load from background syncs

Fixed

  • mcp: connecting Claude.ai (and other AI apps) to Keel works again, and the workspace picker is easy to read
  • ads: Google campaign results pick up conversions that arrive weeks after the click
  • accessibility: better contrast and labels on Inventory and Ads, and a lighter, faster sign-in page
  • ads: ad creatives show the right image for each format (the video frame for reels, the first card for carousels), refresh when Meta updates them, and catalog ads get a clear tile instead of a blank box
  • ads: campaign spend, CPA and ROAS show in your ad account's currency for Meta and Google, and are never shown half-known
  • cash: "Still right" on a card's new statement works again, and amounts typed with commas or a $ sign save correctly
  • ads: ad creatives (thumbnail, copy and call to action) load again after Meta retired the request Keel used, with sharp 400px thumbnails for video ads
  • release: completes the 1.90.0 rollout
  • overview: month-to-date ad spend on the 1st now uses today's Meta figure instead of showing unknown, and month-to-date windows include today's ad spend

log 0512 Nov 2026

v1.89.0minor

Added

  • signup: start a 14-day free trial straight from keelhq.io: create an account, verify your email, name your workspace and pick a plan (card up front, one free trial per card)
  • marketing: full FAQ page, nav links to it, and mobile menu icons

log 0501 Nov 2026

v1.87.0 – v1.88.0minor

Added

  • marketing: surface the live demo on the homepage, nav and feature pages, and promote it on every release

Fixed

  • marketing: bad links show the public 404 page and its game instead of the login screen
  • marketing: centre the KEEL wordmark on the compass and nav line
  • marketing: pricing comparison says Meta Ads is in beta, sharper history line
  • reports: monthly report cron reads inventory per org without a session
  • ads: spend-weighted Intelligence, honest settings labels, safe CSV, slim Library
  • cash: forecast regen no longer fails before the newest day's ad spend syncs
  • marketing: homepage share image says what Keel is and the pain it solves

log 04931 Oct 2026

v1.86.0minor

Added

  • brand: hidden ocean game on the 404 page
  • marketing: Keel HQ is listed on the Shopify App Store

Changed

  • marketing: draw KEEL wordmark as SVG and stop loading Alegreya

Fixed

  • auth: re-check the caller's role inside the write for high-risk writes
  • cash: an RBF what-if counts an operator-pinned debt-service week against the balance
  • marketing: mega menu nav blurbs for free tools
  • marketing: sharper homepage hero, derived app count, AI-agents angle
  • shopify: uninstall webhook follow-ups

log 04830 Oct 2026

v1.84.0 – v1.85.0minor

Added

  • email: daily Klaviyo data layer (storage, sync, backfill, window totals)
  • shopify: store order tags, discount codes, shipping lines, cancel reason and fulfillment status (+ backfill)

Fixed

  • ads: convert Meta and Google Ads spend into the workspace timezone
  • marketing: changelog copy-link and hash target highlight
  • overview: full-width per-store revenue chart with one store connected
  • shipstation: label created time, Shopify order number, labels voided after sync, label vs insurance cost
  • layout: mobile dashboard shell frame and PageShell padding
  • marketing: legal pages: Lindahl LLC entity, Meta token storage, PlanetScale and Supabase, public-authority requests
  • overview: a $0 order's shipping and refunds stay out of net revenue under the $0 rule
  • overview: REFUNDED/VOIDED exclusion matches an order by storefront too

log 04729 Oct 2026

v1.82.0 – v1.83.0minor

Added

  • ads: per-budget-level targets and a minimum spend before any kill
  • cash: keep a card's minimum payment current
  • mcp: OAuth for the MCP server (Claude web/mobile, ChatGPT)
  • overview: CAC in place of CPA when customer history covers the window
  • warehouse: shipped-within-N-business-hours KPI with configurable business hours

Fixed

  • overview: responsive Key Metrics window switcher on mobile
  • ads: keep stock-gate advisories out of pull failure warnings
  • ads: show the ad set minimum spend scoring enforces under a CBO campaign
  • cash: linked-bill forecast and Must Pay hardening (#1534 #1537 #1595 #1613)
  • cash: PO preview sees automatic card-payment matches in its freshness check
  • cogs: bound the provenance backfill's Shopify requests by the cron deadline
  • cogs: count a fully edited-out order as handled in the provenance backfill
  • overview: CPA availability is window-aware for cost-only ad spend
  • overview: repeat purchase rate honours the exclude $0 orders setting like CAC

log 04628 Oct 2026

v1.80.0 – v1.81.0minor

Added

  • app: on-brand new-version prompt: 'New charts are in' + an animated pixel ship
  • app: prompt a refresh when a long-open tab is behind the deployed build
  • cash: revenue-based financing as a real debt type that drives the forecast
  • cash: the remaining statement balance on cards
  • cogs: per-product margin for mystery boxes, cost snapshot, repair-list fix
  • costs: tag fixed and variable costs, with suggestions, totals by tag and a P&L breakdown
  • marketing: a distinct pixel icon per integration page
  • marketing: monthly Ops notes newsletter as a Resend broadcast draft
  • orders: new vs returning customer flag per order
  • overview: CPA KPI card (ad spend ÷ orders)
  • overview: repeat purchase rate graph
  • shopify: let merchants name their storefronts, shown everywhere
  • cash: interest-only, balloon and amortizing repayment for lines of credit and loans
  • inventory: offer the weekly out-of-stock email during onboarding
  • marketing: a new site navigation: Product, Free tools, Compare and Pricing, with pixel icons

Fixed

  • ads: a CTR-only kill candidate needs the kill spend gate
  • ads: harden the Kill/Keep/Scale scoring
  • ads: list every Google Ads env var and show Google Ads everywhere Meta is listed
  • ads: Phosphor icons on the verdict pills
  • ads: show why Google Ads accounts could not be loaded
  • cogs: backfill order-edit component provenance for orders synced before 1.80.0
  • marketing: nav active page uses the orange accent on the dropdown icon and title
  • marketing: transparent mobile nav over the homepage hero
  • overview: a single per-store revenue chart spans the full width
  • overview: use the shared Tabs control for the date-window toggle
  • reports: backfill the daily ad-spend ledger back to the oldest report month
  • settings: rename the API Tokens tab to "MCP & API tokens"
  • ads: bounded Google Ads account selection for more than 100 accounts
  • cogs: prevent mystery box double counting

log 04527 Oct 2026

v1.78.0 – v1.79.0minor

Added

  • ads: connect Google Ads daily spend
  • costs: weekly and bi-weekly cost frequencies with real pay dates in the cash forecast
  • inventory: let each workspace choose the day and time of the weekly out-of-stock email
  • overview: animate KPI numbers when they change after a refresh
  • ads: ad spend by channel on the Overview, plus manual spend for channels without an integration (TikTok, influencers…)
  • cash: explain forecast provenance
  • inventory: alert on stockout transitions
  • inventory: email weekly stockout digest
  • marketing: capture demo opt-ins in Resend contacts
  • platform: email the reporter a confirmation when they file an in-app bug report
  • settings: product-updates opt-in and email preferences

Changed

  • marketing: improve mobile homepage critical path

Fixed

  • cash: widen the Add/Edit Debt side panel so selects like 'You pay' aren't cut off
  • costs: keep a cost's history: Stop before Delete, run dates, restore from Activity
  • overview: show full product names in the uncosted products dialog
  • shopify: show a partial order sync as a warning, not success
  • ai: say what's wrong when the AI provider refuses a call, and test keys with a real request
  • cash: preserve baseline scenario math
  • cash: prevent incorrect creditor logos
  • cash: resolve cash and cost dates in org timezone
  • cash: separate card statement balance
  • inventory: the weekly out-of-stock email is opt-in (default off)
  • marketing: the closing CTA's ship sails on the footer's top border, full width, not on its own short line
  • settings: align profile settings card widths
  • settings: resolve inventory and warehouse dates per workspace
  • settings: resolve workspace dates at request boundaries
  • settings: use each workspace's zone in cron alerts
  • timezone: resolve remaining workspace calendars

log 04426 Oct 2026

v1.76.0 – v1.77.0minor

Added

  • overview: refresh automatically on open when the data is stale
  • settings: a per-workspace time zone, part 1: the setting, the resolver, Overview, reports and the forecast
  • marketing: the Helm's animated ship scene at the top of /features/helm

Fixed

  • marketing: bucket the send-time heatmap in the business time zone and keep overnight sends
  • ads: the MER target check rounds the way the label does
  • ai: treat an interrupted AI answer as incomplete in the P&L import mapping
  • api: cap every request body and count collections before zod parses them (#1395, part 1)
  • cash: keep the debt sheet open until the list behind it is current
  • cash: log every Mercury account the pull leaves out, with its status and kind
  • cash: the cash dashboard never renders a partial read
  • deps: clear the critical and high npm audit findings in production dependencies
  • deps: zod 3 → 4 (#1395, part 2)
  • marketing: move /templates to /tools with permanent redirects, and give pages short nav labels
  • marketing: read the post list and the archive in one statement
  • overview: count orders, not line items, in the activity line
  • overview: read the margin's revenue and COGS from one statement
  • settings: replace logos, fonts and avatars with a compare-and-set write
  • superadmin: sessions index, credential and store-token health, hydration-safe invite date

log 04325 Oct 2026

v1.73.0 – v1.75.0minor

Added

  • cash: mark one payment of a repeating bill paid or skipped
  • cash: pay Settings → Costs fixed costs in the 14-week forecast, linked both ways
  • marketing: financing cost calculator, bank loan vs sales-based advance as a true APR
  • marketing: profit margin calculator, CM1/CM2/CM3, break-even ROAS and target price
  • marketing: working capital calculator with the cash conversion cycle
  • brand: dashboard loading avatar, onboarding completion moment, team-list avatars
  • brand: generative avatar on sign-in and a path-seeded mark on the 404
  • cash: cash tied up in stock and the cash conversion cycle
  • cash: sales tax remittance in the 14-week forecast
  • marketing: bring the small-ecom-brands byline back in the footer
  • marketing: click-to-zoom homepage screenshots and outcome-led module headlines
  • marketing: mega-menu nav and sitemap footer generated from the content layer
  • inventory: import suppliers, open purchase orders and per-SKU lead time, minimum order and reorder settings from a Stocky, Inventory Planner or Prediko export (CSV or XLSX); imported POs flow into the cash forecast
  • overview: a goal pill that needs attention gets stronger the further off target the metric is, and its tooltip says by how much
  • marketing: feature pages for profit, marketing and Helm, with icons across every feature page
  • marketing: free reorder-point and cash-runway calculators

Changed

  • marketing: slim the landing commit graph cells

Fixed

  • ads: a reconnect to another Meta ad account stops showing the old account's pull as current
  • ads: an unstored ad spend makes the latest pull's spend unknown, not smaller
  • ads: one Meta pull per org at a time, so a same-day overlap can't tear the latest pull
  • ads: persist and show a failed Pull now, keep the error toast up
  • ads: promote testing cards in one statement, so no paged read can leave one out
  • analytics: Ads Performance empty state reports not_configured when ad_settings is missing
  • auth: the team invite refuses anyone already on the team, confirmed or not
  • cash: the payouts warning names the connecting staff account's View payouts permission
  • costs: a comma or slash in an ad account's name is a qualifier, not a second provider
  • cron: list a failed sync-status write on the cron run instead of leaving it ok
  • integrations: a sync's failure is its own, with its time; Mercury's freshness waits for its closed-account cleanup
  • invites: page the founder-friend invite list by keyset, and refuse revoking an invite that is not active
  • klaviyo: send the monthly report's timeframe as offset instants on the business month's edges
  • marketing: kanban and post write helpers tell a failed write from a missing row
  • settings: disable Connect and Disconnect Meta Ads for viewers instead of a raw JSON 403
  • shopify: first-sync follow-ups: every resource dated, the typed-token import followed, one guarded final write, a superseded forecast regen stands down
  • shopify: pin the reconnect undo to the reconnect's connected_at, not updated_at; the card shows a legacy reconnect at once
  • shopify: shop/redact needs a recorded uninstall for a store whose token can't be refreshed; an expired token's 401 isn't one
  • ui: scroll the Ads and Marketing sub-navs inside their row on mobile
  • waitlist: refuse waitlist emails over 254 characters
  • cash: count expected payments in the cash forecast, Low only by scenario, and write off ones that won't be paid
  • cash: store a card's due day of the month, not a date that goes stale
  • inventory: the PO import marks payments already made as paid, so the cash forecast doesn't count deposits twice
  • marketing: share images on the content index pages and integrations, with a coverage test from the sitemap
  • cash: seasonality in the cash forecast comes from your own sales history and no longer stacks on top of an already-seasonal baseline, which made forecasts run high (most in January)
  • overview: a store that isn't connected no longer shows as an empty store; you get one line with a link to connect it
  • overview: chart axis labels line up with each card's title on phones

log 04224 Oct 2026

v1.67.0 – v1.72.0minor

Added

  • cash: add, edit, mark paid or skipped, and delete bills and expected payments right on the Cash Flow page, not only by CSV import; a repeating bill can be ended in one step, and deletes are recorded in Settings → Activity
  • overview: the Inventory Health chart can show SKU count, retail value or cost of stock on hand in each bucket; SKUs without a cost or price are called out, never counted as $0
  • marketing: feature pages for cash and inventory at keelhq.io/features
  • marketing: guides for moving off Stocky and for forecasting cash with Mercury
  • marketing: the changelog is a voyage: a ship sails a lane of lighthouses beside the releases
  • cash: a buy-plan preview on purchase orders that shows what the PO does to your lowest cash week before you commit; it asks you to refresh the forecast instead of guessing when the forecast is out of date
  • costs: more ways to model a variable cost: % of gross sales, per unit, % of COGS, % of shipping cost, or % of ad spend (all channels or Meta only), and a "Counts as ad spend" switch so fees like an agency or ad tax land in ad spend, ROAS and MER; "% of Revenue" is now labelled "% of net revenue"
  • cash: statement imports let you choose whether a CSV writes amounts the US way (1,234.56) or the European way (1.234,56), with a preview; removing an imported account can no longer collide with an import in progress
  • cash: supplier purchase orders with payment schedules (deposits, balances and net terms), so what you owe suppliers shows up in the cash forecast in the week it's due
  • cash: a weekly reminder, by email and as a banner, to update the balances of accounts you track by hand or by statement import; you can turn it off in Cash Settings
  • settings: an Activity tab for admins that records who deleted what (raw materials, suppliers, pipeline products, flash sales, monthly reports, debts and purchase orders), with a snapshot of what was removed
  • cash: import bank statements (OFX, QFX or CSV) from any bank to set balances and transactions for accounts outside Mercury
  • inventory: suppliers with lead time, minimum order and payment terms, plus "reorder by" dates in the action queue
  • cash: choose which bank accounts count toward the forecast's opening cash, add manual balances for accounts outside Mercury, and set a minimum cash line
  • ai: bring your own OpenAI key as an alternative to Anthropic for the Helm and every AI feature
  • layout: your brand's logo and name now sit at the top of the sidebar
  • sync: manual Shopify syncs, Meta ad pulls and ShipStation backfills now run in the background and show their progress
  • profile: a generated pixel avatar is everyone's default profile picture until they upload one
  • costs: detect payment gateways and estimate their fees from editable rates
  • costs: import Shopify Payments fees per order, with no double count against manual processing costs
  • costs: start and end dates and a history for business costs

Changed

  • settings: more settings forms lock while a save is in progress, and a refused save restores the saved value
  • site: a faster mobile homepage, and a little ASCII ship above the waitlist
  • Behind-the-scenes security and reliability improvements, and groundwork for choosing your own AI provider.

Fixed

  • overview: the Ad Spend vs. Revenue chart plots each day's real ad platform spend, matched to revenue by date, instead of a flat average
  • overview: on phones, the date range selector wraps instead of running off the screen, status pills never wrap, targets that need attention stand out with a filled warning pill, and top products show their thumbnails
  • cash: a bill linked to a debt with no minimum payment stops at the debt's balance in the forecast
  • cash: the buy-plan preview asks you to refresh when a bill arrived while the forecast was recalculating
  • costs: once a scheduled price change or stop date passes, every screen uses the cost's new amount
  • costs: the P&L import's duplicate check no longer misses a cost added a moment earlier
  • settings: removing a manual or imported cash account is recorded in Settings → Activity
  • shopify: store-credit refunds count only successful transactions, so a failed gift-card attempt no longer reduces the cash refund
  • cash: the forecast's opening cash is marked out of date when any counted account has no balance date
  • overview: an empty top-products window on a disconnected shop now says the shop isn't connected instead of "No sales in this period", and products removed from Shopify no longer link to a dead page
  • inventory: stock is now counted at every Shopify location; products stocked in more than 10 locations were under-counted
  • ads: score only delivering ads, and group turned-off ads apart
  • team: billing and the AI spend cap are admin-only, only the owner can change or remove an admin, and sign-in links can no longer send you to another site
  • cash: settle Shopify payouts as received or cancelled so the Incoming KPI counts only cash still to come

log 04123 Oct 2026

v1.63.1 – v1.66.0minor

Added

  • overview: see your top products for the selected period, sortable, with margin where cost is known
  • inventory: set launch quantities per product in a drop, and see sell-through from units actually sold

Changed

  • ui: dropdowns, inputs and text fields look and behave the same across every form

Fixed

  • cash: the forecast counts sales as cash only once the Shopify payout arrives, and no longer double-counts the current week
  • cash: the 14-week forecast now counts every recurring bill and debt payment
  • klaviyo: campaign and flow reporting syncs again for every Klaviyo account, using each account's own Placed Order metric
  • settings: creating an API token and inviting a teammate with access to only some modules work again

log 04022 Oct 2026

v1.61.0 – v1.63.0minor

Added

  • shopify: connect a second Shopify store to the same workspace at no extra cost, with stores named "Shopify store 1" and "Shopify store 2"
  • overview: Today and Yesterday on the key metrics, with a Refresh button for the latest numbers

Changed

  • marketing: the privacy page lists Cloudflare R2, Resend and PlanetScale as sub-processors
  • platform: faster first page load on mobile

Fixed

  • integrations: connecting Postscript now says when your Postscript plan doesn't include API access, instead of blaming the key
  • overview: shipping, returns, warehouse and overview totals stay exact past 1,000 orders
  • cash: two workspaces can connect the same Mercury account
  • team: an invite that failed to send no longer blocks inviting that address again
  • security: stronger protection for connected stores and webhooks, and Shopify tokens are now stored only in encrypted form
  • ui: better text contrast and screen-reader labels across the app
  • email: welcome, team-invite and AI spend alert emails now send reliably
  • team: the invitation accept and confirm pages now use the full Keel design, and a brief outage no longer uses up the invite link

log 03921 Oct 2026

v1.60.0 – v1.60.1minor

Added

  • integrations: show Shopify review and Meta coming-soon status to beta testers

Fixed

  • cash: scope provider-ID upsert keys to the org so one org can't overwrite another's rows
  • cash: actionable warning when Shopify payouts need read_shopify_payments_accounts
  • inventory: Create Drop modal fit, reusable search input with clear button, Ads filter labels and table cards
  • ui: Keel HQ brand constant, shadcn RadioGroup, external Changelog link

log 03820 Oct 2026

v1.58.2 – v1.59.0minor

Added

  • costs: import Finaloop P&L exports (monthly XLSX), parsed by structure

Fixed

  • shopify: start the first sync as soon as a store connects
  • storage: send Content-Length on R2 uploads
  • cash: show the forecast's stored ad spend

log 03719 Oct 2026

v1.58.1

Changed

  • privacy: the privacy policy now lists Resend, which sends account emails such as sign-up confirmations and password resets

Fixed

  • ads: ignore empty Meta action values

log 03618 Oct 2026

v1.57.2 – v1.58.0minor

Added

  • overview: % change and sparklines for Ad Spend, Blended ROAS and MER from daily ad spend
  • overview: explain withheld margins with a fix list, and show Fixed OpEx against its goal

Fixed

  • auth: stop the legacy bootstrap fallback assigning orgless logins to a merchant org
  • costs: P&L import lock ordering, replacement duplicate recheck, and amount ceiling
  • security: read Shopify tokens only from the encrypted column
  • security: stop org members reading Shopify credentials through the API; extend the isolation suite
  • platform: show a temporary service message instead of signing users out
  • shopify: refuse cross-workspace stores before picker and enforce connect modes

log 03516 Oct 2026

v1.56.0 – v1.57.1minor

Added

  • billing: per-tier billing portals and in-app plan upgrades
  • billing: founder-friend invite links with an extended free trial
  • billing: Stripe subscriptions for direct signups
  • costs: P&L import review and atomic commit
  • overview: show CM1 / CM2 / CM3 margin layers

Fixed

  • shopify: use expiring offline tokens with refresh for public-app stores
  • shopify: connect stores through Shopify instead of a typed store domain
  • shopify: drop the localhost OAuth redirect from the production app config
  • shopify: encrypt pre-existing store tokens automatically on the daily cron (#901, step 0)
  • ux: staff land on Super Admin, clearer Create user copy, Help opens from the sidebar

log 03415 Oct 2026

v1.53.0 – v1.55.0minor

Added

  • admin: Keel Super Admin — orgs list, provisioning and feature flags (#729, 2/2)
  • admin: staff gate, audit log, and user actions (#729, 1/2)
  • billing: Shopify managed pricing for App Store installs
  • marketing: describe the audience as five- to seven-figure DTC brands
  • costs: AI-assisted P&L mapping and import analyze route (#719, 2/3)
  • marketing: /screencast redirect to the unlisted demo video
  • marketing: pricing page with Harbor / Coastal / Open Seas tiers
  • marketing: public /support page for the Shopify App Store listing
  • marketing: public changelog at keelhq.io/changelog
  • mcp: every MCP result says when each source last synced
  • team: enforce per-module access for team members
  • reports: real COGS and CM1 / CM2 / CM3 margin layers
  • team: limit a member to chosen modules from the team page

Changed

  • marketing: homepage copy in content/marketing/home.json (#874, step 2)
  • reports: monthly storefront totals now follow your business timezone

Fixed

  • ads: widen meta_ads ratio columns and keep one extreme ad from failing a pull
  • auth: render invite and signup email links without a branch in the URL context
  • postscript: route each webhook event only to its own org
  • shopify: encrypt store access tokens at rest — expand step
  • shopify: OAuth before any Keel UI on install; sign up after
  • shopify: register app/uninstalled per shop via the Admin API
  • ads: record an empty successful Meta pull so spend reads $0, not the previous pull
  • costs: cost zero-priced lines and read report revenue and COGS in one statement
  • fail closed on read errors in settings, reports, journal and warehouse shipping
  • marketing: fail closed on kanban, posts, archive and carousel reads; tell a failed calendar save from demo
  • overview: MER and Blended ROAS use one revenue basis everywhere and are defined apart: Blended ROAS is net revenue ÷ ad spend, MER is net revenue ÷ total marketing spend
  • shopify: App Store compliance — GraphQL-only payouts, drop unused scopes, 200 for unknown-shop compliance webhooks
  • shopify: redact a storefront in one locked transaction; keep the old shop's redact resolvable
  • ads: Ad Library and cash actions now use only your latest Meta data
  • security: access tokens and invites now follow their creator's current permissions
  • cash: forecast edits stay in sync with what was saved
  • cash: keep hand-edited forecast inputs and surface failed week edits
  • costs: COGS reversals from refunded, restocked line items — not order status
  • overview: show unknown ad spend as unknown, never $0
  • reports: readable delta badges — right precision, and a surface over the sparkline
  • reports: show report percentages at the right scale

log 03314 Oct 2026

v1.50.6 – v1.52.0minor

Added

  • ads: open the Ads module to every org (Beta) — retire the Meta Ads entitlement gate
  • mcp: phase 2 — product, ad spend and monthly report tools, resources, install UX
  • costs: P&L import engine — rules mapping, basis derivation, dedupe (#719, 1/3)

Changed

  • auth: run the request-path auth round trips in parallel
  • nav: link the sidebar straight to each section's first tab
  • overview: load alert inputs once and stop re-reading alerts on every page
  • ui: stream dashboard sections independently — phase 3b
  • ui: stream dashboard sections independently — phase 3c
  • ads: batch meta_ad_tags lookups and upserts
  • ui: stream dashboard sections independently — phase 3a
  • ui: stream dashboard sections independently — phase 2
  • ui: stream dashboard sections independently — phase 1

Fixed

  • ads: provision ad_settings for every org, new and existing
  • security: tightened permission checks on MCP connection testing
  • security: consistent role-based permissions on every change you make
  • changelog: release-type badge from version, one card per day, daily releases
  • klaviyo: raise the sync time limit to 300 s and report timeouts clearly
  • marketing: stop reading google-font-metadata from disk on the Brand page
  • reports: archived reports no longer block Generate
  • ads: settle MER as revenue ÷ ad spend and add a MER target
  • security: only workspace members can edit costs
  • costs: require a cost context and aggregate cost totals server-side
  • auth: make provisioning invites visible to the pending-invite claim

log 03213 Oct 2026

v1.50.4

Fixed

  • overview: project per-window cost context so KPI margins are not inflated

log 03112 Oct 2026

v1.48.4 – v1.50.2minor

Added

  • mcp: MCP server phase 1 — transport, auth, four read tools
  • api: add inbound API tokens

Changed

  • auth: make org provisioning a single transactional function

Fixed

  • auth: report refused auth-email delivery instead of claiming success

log 03011 Oct 2026

v1.47.1 – v1.48.3minor

Added

  • cash: add Mercury nightly cron

Changed

  • inventory: prune current state after a complete run
  • inventory: materialize current state

Fixed

  • ads: source category controls from per-org taxonomy
  • ads: match classifier hooks and formats on word boundaries
  • cash: calculate runway from active debt

log 0299 Oct 2026

v1.46.0 – v1.46.9minor

Changed

  • db: index the key latest_inventory sorts on
  • shell: reduce dashboard critical path

Fixed

  • ads: align decision metrics with verdict window
  • cash: sync Mercury transactions for every account
  • ads: derive taxonomy from org catalog
  • meta: surface invalid token expiry metadata
  • meta: rebuild paged requests from initial URL
  • bug-report: stamp deployed commit SHA and environment
  • inventory: paginate catalog reads
  • inventory: use shared currency formatter
  • meta: use Business System User token directly
  • security: tightened database access permissions
  • security: internal reporting views can no longer be reached from the browser

log 0288 Oct 2026

v1.45.13

Added

  • meta-ads: add Facebook Login for Business OAuth

Fixed

  • auth: preserve dashboard invite links
  • auth: route orgless users to holding page
  • pipeline: scope product drops to org
  • waitlist: rate-limit public signup

log 02730 Sep 2026

v1.45.12

Added

  • integrations: use Meta Graph API for ads
  • platform: add per-org rate limiting
  • shopify: bridge custom app credentials per shop

Fixed

  • ads: validate Meta Graph payloads

log 02629 Sep 2026

v1.45.11

Added

  • security: integration credentials are now encrypted at rest (AES-256-GCM)
  • overview: add per-org dashboard goals

Fixed

  • auth: grant team membership only after invitation acceptance
  • security: stricter session checks on account and settings actions
  • auth: more reliable workspace selection when you sign in
  • security: integrations now use only your workspace's own credentials
  • security: integration credentials are strictly scoped to your workspace
  • privacy: add Meta deletion instructions
  • security: report generation is strictly scoped to your workspace

log 02526 Sep 2026

v1.45.10

Added

  • security: bot protection on every sign-in and sign-up; sign-up is invite-only during beta
  • auth: provision an org without Shopify OAuth
  • email: brand every auth email and send a welcome on first sign-in

Changed

  • security: completed a workspace data-isolation audit

Fixed

  • security: hardened workspace creation
  • demo: resolve every demo surface through one demo clock
  • security: Postscript now uses only your workspace's own credentials
  • security: the Overview dashboard uses only your workspace's connected credentials

log 02424 Sep 2026

v1.45.9

Fixed

  • dates: resolve business calendar through an explicit timezone
  • security: tightened data isolation on order totals and database functions
  • supabase: faster permission checks on dashboard queries

log 02310 Jul 2026

v1.45.8

Changed

  • privacy: disclose Help Scout / Loops / GitHub subprocessors (post-#494)
  • privacy: disclose Vercel Web Analytics on dashboard pages (post-#494)
  • privacy: merchant/customer data section for Shopify PCD approval
  • security: security incident response policy

Fixed

  • cash: strict dashboard reads in regenerateForecast (post-#485)
  • overview: only zero MTD day-1 for current window, not prior (post-#470)
  • shopify: delete payout cash_incoming rows on shop/redact (post-#486)
  • shopify: preserve storefront on install retry when state cookie expired (post-#495)

log 0229 Jul 2026

v1.45.7

Added

  • shopify: merchant-first install landing page for App Store installs
  • shopify: re-enable read_all_orders after L2 approval

Fixed

  • cash: regenerate forecast from nightly Shopify cron

log 02118 Jun 2026

v1.45.6

Added

  • analytics: accuracy hardening — pagination fixes, test suite, Shopify reconciliation
  • marketing: go-live — keelhq.io → main, landing page polish (#444 #445 #447)
  • marketing: swap landing commit-graph green ramp for Keel blue

Fixed

  • analytics: correct ad-spend columns + keyset pagination for mutable tables
  • auth: distinguish 'no active org' from query errors in org-context
  • auth: drop private-beta error substitution
  • security: Meta campaign history is now strictly isolated per workspace
  • demo: return null for non-matching months in getMonthlyReport — closes #413
  • marketing: add og:image and twitter:image to landing metadata
  • security: hardened demo mode so it can never show live data

log 0209 Jun 2026

v1.45.5

Added

  • dashboard: contact widget via Help Scout Beacon
  • routing: host-based marketing/app split

Fixed

  • ui: finish Helm SteeringWheel → Sparkle sweep (4 stragglers)

log 01928 May 2026

v1.45.4

Added

  • brand: Keel HQ rebrand foundation — palette, fonts, auth surfaces

log 01813 May 2026

v1.45.3

Fixed

  • security: database functions are restricted to signed-in users
  • security: tightened database access policies to signed-in users
  • supabase: faster permission checks on dashboard queries

log 01710 May 2026

v1.45.2

Added

  • demo: public demo deploy with email gate
  • loading skeletons + module empty states for sub-page nav UX (#285 RC1, #326)
  • returns tracking dashboard
  • ui: Alpha pill on rougher feature surfaces (Brain, Carousel, Pipeline, Seasonal, Reports)

Fixed

  • supabase: index 14 unindexed foreign keys

log 0168 May 2026

v1.45.0 – v1.45.1minor

Added

  • changelog: redesign /changelog page with grouped Added/Changed/Fixed sections
  • reports: stepped progress modal for monthly report generation
  • shopify: GDPR mandatory webhooks for Partner app review
  • ads: beta-gate Meta Ads live-data layer
  • ai-usage: log Anthropic calls from Ads Studio, Flash Sales, Carousel, and Monthly Report Narrative
  • ai: per-org monthly cap for Anthropic-backed features
  • ai: Phase 2 — threshold email alert + passive UI alert + cap-hit banner
  • brain: empty state when Anthropic credential is missing
  • brain: gate starter prompts by satisfied setup gates
  • brain: persistence layer + Prior Chats tab
  • overview: empty state when integrations not connected
  • password reset — forgot password flow + callback handler + reset form
  • profile picture upload + brand logo file uploader
  • route bug reports to GitHub Issues + capture browser context
  • save and sync now on first integration connection
  • settings: right-align card footer actions via SettingsCardFooter
  • signed-in transition screen after auth
  • user menu in sidebar — sign out + profile link

Fixed

  • security: authentication hardening
  • security: stricter workspace scoping on cost edits
  • security: sign-in now uses the PKCE flow for stronger session protection
  • security: hardened server-side authentication
  • ShipStation sync resilience — auto-recover missed labels, better schema error
  • shopify: distinguish stale sync_error from disconnected; retry transient failures
  • use gross revenue for product/storefront metrics

log 0154 May 2026

v1.44.0minor

Added

  • auth callbacks — magic link and password reset (#272 #273)

Fixed

  • commit graph overflows on mobile — make figure w-full so overflow-x-auto resolves correctly

log 01429 Apr 2026

v1.43.0minor

Added

  • funky-shadow dithered shadows on hero screenshot and module cards
  • in-app bug report button
  • landing: grain texture, marquee integration strip, terminal cursor
  • onboarding checklist — Get Started panel in sidebar
  • private beta messaging
  • simulated commit graph in founder section

Fixed

  • move opengraph-image to app root — route group prevented Next.js from picking it up
  • OG image — load brand fonts for sharpness, hero headline treatment, remove price
  • OG image — TTF fonts, Phosphor pill icons, hero headline treatment, remove price
  • swap default Next.js favicon.ico for svg favicon
  • use new brand svg as icon.svg for Next.js favicon metadata

log 01323 Apr 2026

v1.41.0 – v1.42.0minor

Added

  • OG/Twitter meta tags + dynamic opengraph-image for landing page
  • landing page overhaul — deep feature showcase for all modules
  • pipeline phase 2 — detail drawer, sample rounds, tasks
  • product margin calculator + margin settings
  • product pipeline kanban — DnD board, CRUD, drops, filters
  • Shopify OAuth connect flow — replace manual token entry

Fixed

  • restore alternating dark/light pattern across all 9 modules

log 01217 Apr 2026

v1.40.0minor

Added

  • Klaviyo email tab for Marketing module
  • per-storefront filtering on consumption rules
  • Postscript integration — API credential setup (#184 PR 1)
  • raw materials & supplies module with auto-consume + reorder intelligence
  • shipping geo analytics — choropleth map + state breakdown
  • shipping goals — per-org targets with reactive KPI cards
  • ShipStation store breakdown on shipping page
  • SMS tab in Marketing — subscriber chart, campaign log, cron + webhooks (#184 PR 2)
  • variable cost basis types + gateway cost category
  • warehouse module — shipping analytics (Shopify base + ShipStation add-on)
  • warehouse shipping phase 2 — delivery metrics, cost % of revenue, env-cred fix
  • warehouse shipping phase 3 — net margin, storefront margin, delivery backfill

Fixed

  • spin Products and Orders buttons when Sync All is running

log 01113 Apr 2026

v1.39.0minor

Added

  • add/edit debts with AI screenshot extraction
  • exclude zero-dollar orders from analytics
  • hotfix: add massive clipped wordmark to footer bottom
  • hotfix: center footer wordmark, pixelate globe via SVG filter
  • hotfix: remove globe from footer wordmark, text only
  • hotfix: fix footer wordmark clipping, add spacing above
  • hotfix: crop footer wordmark 1/4 instead of 1/3, full width
  • hotfix: revert footer wordmark crop back to 1/3
  • hotfix: redesign founder quote as full-bleed image card with bottom quote overlay
  • revert: restore founder quote to original card design
  • profile settings view/edit toggle
  • role-based UI gating for settings and catalog
  • searchable creditor combobox with known company list
  • Settings > AI Usage log
  • Shopify Bulk Operations + bundle handling

Fixed

  • fixed a rare error creating your workspace on first sign-in
  • fixed an error loading team memberships

log 01011 Apr 2026

v1.38.0minor

Added

  • carousel builder — AI-powered Instagram carousel generator
  • scheduled syncs now run for every workspace

Changed

  • restore founder quote to original card design

Fixed

  • separate reveal wrapper from card div, add unoptimized to image
  • use explicit CSS class for testimonial card height so image renders
  • use plain img tag for testimonial background — next/image fill was not rendering
  • faster permission checks on dashboard queries

log 00910 Apr 2026

v1.37.0minor

Added

  • brand settings page for marketing manager
  • Hey Brian — animated AI assistant MVP
  • landing page copy — founder quote, stack comparison, vibe-code FAQ
  • revenue chart improvements — area gradients + YAxis clipping fix
  • Settings → Alerts tab with configurable thresholds
  • team management (issue #113)

Fixed

  • add Storefront icon to Shopify config cards
  • increase reveal threshold and add rootMargin to fix early scroll animations
  • Number() conversion for warn_fixed_costs_stale_days
  • security: database access-policy hardening

log 0089 Apr 2026

v1.35.0 – v1.36.0minor

Added

  • add toast feedback across all major user actions
  • Settings Goals tab — configure margin and ad targets
  • add search to inventory catalog
  • Mercury transaction matching on action completion
  • design: use duotone weight for large decorative Phosphor icons
  • wire forecast revenue to Shopify sales_snapshots

Fixed

  • replace text-danger with text-danger-foreground for readable contrast

log 0078 Apr 2026

v1.32.0 – v1.34.0minor

Added

  • add info tooltips to KPI cards
  • remove Kleio dependency, build in-app financial analytics
  • add signup + fix dark input text on login page
  • product images in inventory catalog
  • Shopify product link + sync UX feedback
  • product exclusion rules by vendor and tag

Fixed

  • show error when magic link is rejected or expired
  • product name truncation + filter $0 orders

log 0067 Apr 2026

v1.26.0 – v1.31.0minor

Added

  • add /landing route accessible regardless of auth state
  • add color, icons, and hover effects to marketing page
  • add pricing comparison section vs Triple Whale
  • add scroll reveal animations to marketing page
  • add X/Twitter link to footer + FAQ access answer
  • eased scrim gradient utility, replace harsh linear fade
  • enable smooth scroll site-wide
  • marketing landing page
  • marketing landing page at root route
  • overview: wire dashboard to real Supabase data
  • multi-workspace support with per-workspace data isolation
  • add Shopify OAuth routes for token exchange

Fixed

  • FAQ access answer with X link, restore Vandelay Industries name
  • hero gradient from warm neutral → teal → blue for more contrast
  • preserve session cookies on middleware redirects
  • reveal animations not triggering on page load
  • simplify hero headline to white + gradient accent
  • add read_locations scope + reduce GraphQL page sizes
  • service client cookie fix, login password mode, balance column

log 0056 Apr 2026

v1.18.0 – v1.25.1minor

Added

  • apply font-mono to all tabular-nums + create <Num> component
  • overview: KPI cards with sparklines, time tabs, pace bar
  • replace plain pace text with MetaBadge pill on KPI cards
  • move notification bell to sidebar, remove desktop topbar
  • inventory: Drop Detail page + is_restock field
  • inventory: Phase 1 follow-up — categories, design polish, demo fixes, simplify
  • inventory: Phase 1 — Inventory Module
  • style(inventory): status bucket counts use font-mono instead of font-pixel
  • style: shift warning palette to true orange (hue 50-62, was yellow-green/amber)
  • style(inventory): stronger KPI card hover — solid border, /15-20 bg, lift
  • style(inventory): channel names uppercase (DTC, B2B)
  • style(inventory): sell-through rate gets a pace-zone-colored mini progress bar
  • shopify: Shopify GraphQL integration + Settings UI

Fixed

  • Android hamburger menu not opening

log 0045 Apr 2026

v1.14.0 – v1.16.2minor

Added

  • changelog: timeline UI — cards + vertical connector
  • favicon + replace arbitrary Tailwind values with tokens
  • icons: replace lucide-react with @phosphor-icons/react

Fixed

  • overview: MTD label on vitals + chart hydration fix
  • mobile-nav: use SheetTrigger for reliable mobile touch handling

log 0034 Apr 2026

v1.12.0 – v1.13.0minor

Added

  • brand & UI refresh — Geist Pixel font, login redesign, sidebar refinements
  • style: switch to GeistPixelGrid, add tracking-snug token at -0.03em
  • style: gradient OS wordmark + Globe icon on login page
  • overview: Overview Dashboard

log 0023 Apr 2026

v1.2.0 – v1.11.0minor

Added

  • marketing: Phase 3 — Performance Tracker
  • marketing: Phase 1 — Calendar + Kanban board
  • cash: Phase 3 — Cash Intelligence
  • cash: Phase 2 polish — refresh button, scenario impact, variance, journal filters, Shopify Capital
  • cash: Phase 2 — 14-week forecast, Shopify pull, CSV import
  • cash: Phase 1 — Cash Command Center
  • ads: Phase 4 — MER, cron, CSV, performance polish
  • ads: Ads Intelligence Phase 1+2 — Performance, Library, Settings
  • dark sidebar with white active pill using design system tokens
  • add changelog page with typography rendering and sidebar link

Fixed

  • increase sidebar inactive text from neutral-400 to neutral-300 for legibility
  • lighten sidebar to neutral-800, fix disabled opacity and collapse button tokens, unify shell bg with sidebar
  • sidebar background uses bg-sidebar token not bg-shell

log 0012 Apr 2026

v1.0.0 – v1.1.0major

Added

  • shell layout — warm gray page with bordered content panel
  • Phase 1 foundation + Phase 2 monthly report module