Home / Docs / Changelog

Changelog

lit.onl product and API release notes — what shipped in each api-vX.Y.Z and web-vX.Y.Z build, including dashboard, redirects, documents, and MCP changes.

API and web version independently. Recent releases (newest first):

api-v0.1.83 — 2026-10-13

Fixed

  • Short links whose slug starts with mcp (e.g. /mcp-test) no longer hit the MCP transport (was Authorization required)

web-v0.1.138 — 2026-10-13

Fixed

  • Ahrefs SEO: SSR <html lang>/dir from locale path; locale /pricing self-canonical (was English via localPath on SSR)
  • Meta descriptions under ~120 chars on legal and docs pages (Ahrefs “too short”)
  • Bitly-alternative meta description trimmed to ≤160 chars; /pricing uses an h1

web-v0.1.137 — 2026-10-13

Added

  • Ahrefs Web Analytics (PUBLIC_AHREFS_KEY) — loads only after Analytics cookie consent

web-v0.1.136 — 2026-10-13

Added

  • Google Analytics 4 (G-PJ7TVJFP9D / PUBLIC_GA_MEASUREMENT_ID) via gtag — loads only after Analytics cookie consent; SPA pageviews

api-v0.1.82 — 2026-10-06

Fixed

  • App Store 1.2.1: lit_shopify_shop cookie from OAuth forces Shopify-managed billing before claim; Paddle checkout/portal blocked when Shopify-managed

web-v0.1.135 — 2026-10-06

Added

  • Pricing page: Web / Shopify tabs — Shopify tab shows App Pricing and links to the App Store (?channel=shopify)

web-v0.1.134 — 2026-10-06

Fixed

  • Sidebar Upgrade opens Shopify App Pricing when the workspace is Shopify-managed (no Paddle Billing page for App Store merchants)

api-v0.1.81 — 2026-10-06

Changed

  • Active Shopify install sets billing_managed_by: shopify even on the free App Pricing plan (plan changes only via Shopify Admin)

web-v0.1.133 — 2026-10-06

Changed

  • Shopify Integrations: remove manual store-domain install (App Store shop-first only)
  • Billing: Shopify-connected workspaces always use Shopify plan CTAs (including Free)

web-v0.1.132 — 2026-10-06

Changed

  • Billing: Shopify-managed workspaces send every plan CTA to Shopify Admin; hide Paddle portal, address, invoices, and interval toggle (Paddle-only chrome stays for Paddle-billed orgs)

api-v0.1.80 — 2026-10-06

Fixed

  • Public /v1 Bearer auth and public branding logo use max(Paddle, Shopify App Pricing) (was Paddle-only overlay, so Shopify Growth did not unlock API)

api-v0.1.79 — 2026-10-06

Changed

  • Org entitlement is max(Paddle, Shopify App Pricing) for dashboard/MCP; billing returns billing_managed_by + Shopify plan fields

web-v0.1.131 — 2026-10-06

Added

  • Billing: show Managed by Shopify when App Pricing grants the workspace tier; Change plan opens Shopify Admin

web-v0.1.130 — 2026-10-06

Added

  • Shopify embed: Change plan control on the Plan card (Shopify hosted plan page) for every tier

api-v0.1.78 — 2026-10-06

Changed

  • Release bump with web embed Change plan control

api-v0.1.77 — 2026-10-06

Added

  • Shopify app_subscriptions/update webhook handler persists App Pricing plan_handle / status (cancel clears paid entitlement)

api-v0.1.76 — 2026-10-06

Fixed

  • Shopify embed status syncs App Pricing plan from Admin GraphQL after hosted plan upgrades (not only welcome plan_handle)

web-v0.1.129 — 2026-10-06

Fixed

  • Shopify embed forwards welcome plan_handle into admin status so upgrades persist

api-v0.1.75 — 2026-10-06

Added

  • Shopify App Store: shop-first OAuth (/auth/shopify/begin), pending installs, POST …/shopify/claim, Shopify App Pricing entitlement layer (shopifybilling)
  • Migration 000027 — shopify_pending_installs + plan columns on org_integrations

Changed

  • Shopify OAuth callback redirects to the embed; org-bound installs still require a matching lit.onl session

web-v0.1.128 — 2026-10-06

Changed

  • Shopify dashboard: claim pending install / App Store path without primary shop typing; advanced domain optional
  • Shopify embed: pending-claim UX, Upgrade in Shopify plan link, cap errors surface Shopify upgrade URL

api-v0.1.74 — 2026-10-06

Added

  • Dashboard links list includes plan-window clicks on each row

web-v0.1.127 — 2026-10-06

Changed

  • Links table: truncated destination (expand on click), Clicks column, compact actions / ⋮ menu so buttons no longer crowd the row

web-v0.1.126 — 2026-10-06

Changed

  • Shopify Admin embed product list: search + Linked/Needs link filters, denser table rows, compact icon actions

api-v0.1.73 — 2026-10-06

Added

  • Shopify embed: PATCH /internal/v1/integrations/shopify/admin/links/{id} (destination + UTM) and GET …/links/{id}/analytics

web-v0.1.125 — 2026-10-06

Added

  • Shopify Admin embed: Edit, Tracking, and Analytics modals on products that already have a short link

api-v0.1.72 — 2026-10-06

Fixed

  • Shopify Admin action: reopen shows the existing short link; Done closes the modal reliably

Added

  • GET /internal/v1/integrations/shopify/admin/links?product_id= — lookup without creating

web-v0.1.124 — 2026-10-06

Fixed

  • Shopify dashboard create: after success show product URL + short link (not an empty form); embed lists product URL with short link beside it

api-v0.1.71 — 2026-10-05

Fixed

  • Shopify Admin product list: use expiring offline Admin API tokens (expiring=1 + refresh); migrate legacy non-expiring tokens so GraphQL no longer returns 403

Added

  • Migration 000026: org_integrations.refresh_token_encrypted + access/refresh expiry columns

api-v0.1.70 — 2026-10-05

Fixed

  • Shopify Admin product action: CORS on /internal/v1/integrations/shopify/admin/* so the UI extension can call create-link; extension sends session JWT + product_id (no Growth+ messaging)

web-v0.1.123 — 2026-10-05

Changed

  • Shopify Admin embed: product list with create/copy short link (replaces manual URL paste); stats cards for monthly links, plan, and products with links

api-v0.1.69 — 2026-10-05

Added

  • GET /internal/v1/integrations/shopify/admin/products — paginated Shopify catalog + existing short links
  • Admin status quota fields (links_used / links_limit / products_with_links / …)
  • Admin create accepts product_id and returns an existing product short link when present

web-v0.1.122 — 2026-10-05

Changed

  • Integrations hub, Zapier/Make recipes, dashboard webhooks, and Shopify postbacks are available on every plan (REST/MCP stay Growth+)
  • Pricing compare: outbound webhooks Yes on Free/Core

api-v0.1.68 — 2026-10-05

Changed

  • Ungate dashboard webhooks and Shopify postbacks on every plan; plan limits stay on link create and similar internals

web-v0.1.121 — 2026-10-05

Changed

  • Shopify connect + short-link create are available on any plan; only click postbacks stay Growth+

api-v0.1.67 — 2026-10-05

Changed

  • Remove Growth+ gate from Shopify install/status/admin create; keep it for postbacks only (link caps still apply)

web-v0.1.120 — 2026-10-05

Changed

  • Shopify install-from-Admin: dashboard prefills ?shop= and auto-starts OAuth (connect=1) so merchants do not re-type the store domain

api-v0.1.66 — 2026-10-05

Changed

  • Shopify admin status connect_url includes shop + connect=1 from the session JWT

web-v0.1.119 — 2026-10-05

Fixed

  • Shopify embed: inject App Bridge shopify-api-key into the initial HTML (SSR + hooks) so shopify.idToken() works inside Admin

web-v0.1.118 — 2026-10-05

Added

  • Shopify embedded Admin panel at /integrations/shopify/embed (App Bridge session JWT — no lit.onl login iframe)

Fixed

  • Opening lit.onl from Shopify Apps no longer traps merchants in a cookie login loop inside the iframe

api-v0.1.65 — 2026-10-05

Added

  • GET /internal/v1/integrations/shopify/admin/status for the embedded Admin panel (Shopify session JWT)

Changed

  • Default SHOPIFY_APP_URL is https://litonl.com/integrations/shopify/embed

web-v0.1.117 — 2026-10-05

Changed

  • Shopify integrations page copy mentions the Admin product action (More actions → Create lit.onl short link)

api-v0.1.64 — 2026-10-05

Added

  • Shopify Admin short-link create (t29.3a): POST /internal/v1/integrations/shopify/admin/links authenticated with Shopify session JWT; maps shop → org_integrations, Growth+
  • Admin UI extension scaffold marketing/shopify/extensions/product-short-link (admin.product-details.action.render)

web-v0.1.116 — 2026-10-05

Added

  • Shopify native page (/integrations/shopify): connect store domain (OAuth), create tracked short link, click postback URL, disconnect; Growth+ gate
  • i18n keys for the Shopify page (English; other locales fall back)

Changed

  • Integrations catalog: Shopify is Live (Built-in group) and opens /integrations/shopify; public /docs/integrations lists Shopify
  • Shopify OAuth redirect URL is https://litonl.com/auth/shopify/callback (docs + marketing/shopify/shopify.app.toml)

api-v0.1.63 — 2026-10-05

Added

  • Shopify native (t29.3, Growth+): GET/DELETE /internal/v1/integrations/shopify, GET …/install, PUT/DELETE …/postback, GET /auth/shopify/callback, POST /webhooks/shopify (HMAC-verified app/uninstalled + GDPR stubs)
  • Table org_integrations (migration 000025); access tokens AES-GCM encrypted (internal/tokencrypt, key from SESSION_SECRET)
  • Click postback reuses org webhook endpoints (create by URL or attach existing)
  • Optional env SHOPIFY_API_KEY, SHOPIFY_API_SECRET, SHOPIFY_APP_URL, SHOPIFY_SCOPES, SHOPIFY_REDIRECT_URI (not required in production; unset = install returns 503)

web-v0.1.115 — 2026-10-05

Added

  • Integrations hub (/integrations): catalog for API, webhooks, MCP, Zapier/Make recipes, Soon natives (Shopify create-short-link + postbacks, HubSpot, Klaviyo, postbacks), and Via Zapier logo wall
  • Public docs /docs/integrations + docs/integrations.md recipes

web-v0.1.114 — 2026-10-05

Fixed

  • Ops Settings password change shows the API validation message (e.g. too short) instead of a wrong “current password” error

api-v0.1.62 — 2026-10-05

Fixed

  • Platform user memberships include entitlement_tier (effective access), not only Paddle billed tier

web-v0.1.113 — 2026-10-05

Fixed

  • Ops user detail org line shows access tier vs billed (so awarded premium is not shown as free)

web-v0.1.112 — 2026-10-05

Changed

  • Ops console content uses the full main column width (removed 1200px cap)

api-v0.1.61 — 2026-10-05

Fixed

  • Empty short-link path uses branded unavailable page instead of stock Go 404