PosSwift

Journal des versions

Chaque version, datée et honnête.

Les notes ci-dessous proviennent du fichier CHANGELOG.md du dépôt. Toute modification est déployée à la prochaine mise en ligne.

Les notes de version sont rédigées en anglais.

◂ Retour à l'accueil

Unreleased

Added

  • Landing site: first-visit locale auto-detect — root-only 302 from `Accept-Language` (device language) with Vercel IP-country fallback (`MA` → AR, francophone → FR). Explicit topbar switcher choice persists via `posswift.locale` cookie and always wins; deep links never redirect. See `docs/i18n-auto-locale-plan.md`.
  • Landing site: SEO structured data (JSON-LD `Organization` + `SoftwareApplication` + `FAQPage`).
  • Landing site: pricing FAQ section with 8 honest, conversion-focused questions.
  • Landing site: sector evidence band linking to the 5 dedicated sector pages.

Changed

  • Landing copy: dropped unshipped vertical claims (café recipes, pharmacy lot tracking, boutique variants, services jobs, Pro-tier scale hardware). Repositioned around honest, ship-today capability.
  • Landing funnel: trials start inside the app (device-bound, auto-stamped on first launch) — the website no longer collects an email to start a trial. All primary CTAs point to Google Play behind `NEXT_PUBLIC_PLAY_STORE_LIVE` (disabled "Soon on Google Play" state until the listing is live); `/start` is now a lean "get the app" page; the Windows card CTA is hidden until a public build URL exists.

Removed

  • Landing: trial signup form (`/start` form, `/api/trial`, `src/lib/trial/*`) and the `/signin` stub (301 → `/`). Sign-in lives inside the Android app; trials need no activation code.

Fixed

  • Landing layout: hero accent clipping, mobile nav 640–768px dead-zone, pricing card overflow, hardware row icon contrast.
  • A11y: invalid ARIA roles on TickerStrip (`marquee`) and LocaleSwitcher (`tablist`); focus-visible rings on nav drawer + start/talk pages.

0.9.0

Added

  • App: session inactivity timeout — configurable per store.
  • App: full localized Terms & Privacy with in-app viewer.
  • App: label printing + connected-devices polish.
  • App: settings — license slot card + session card + terms card.

Changed

  • Billing: closed subscription lifecycle gaps (P0 → P2).

0.8.0

Added

  • Billing: Lemon Squeezy webhook integration (deployed, untested in prod).
  • Billing: customer billing portal via signed 24-hour URLs.
  • Billing: license activation code flow — validated end-to-end on 2026-04-20.

Fixed

  • Splash crash when multiple admin users existed — `hasAdmin()` query now uses `..limit(1)`.

0.7.0

Added

  • Damaged + lost stock tracking with reason codes and ledger linkage.
  • CRM: customer ledger with credit, debt, and balance tracking.
  • Reports + analytics for Pro tier.
  • Quick-actions menu.

Changed

  • Database: schema migrations brought to version 57.

0.6.0

Added

  • Two-flow sync architecture: operational sync isolated from aggregated data export.
  • Audit trail: SQLCipher-encrypted, tamper-evident, append-only.
  • ANDROID_ID device binding (replaces UUID approach).

0.5.0

Added

  • Hardware support: ESC/POS thermal printers (58mm + 80mm), USB + Bluetooth scanners, cash drawer kick-out.
  • Offline-first mode with queue-and-replay for 12-hour outages.
  • EN / FR / AR (Darija) — RTL support.

0.1.0

Added

  • Initial Android tablet POS prototype.
  • Core checkout flow.
  • Local-only SQLCipher storage.