Skip to content

Changelog ​

Product-facing notes for Tadbeer (تدبير), curated from main git history. Dates are UTC unless noted. Pull request numbers appear when a merge commit recorded them.

This page is curated (not regenerated on every docs image build) so Dokploy deploys keep the narrative intact.


2026-09-09 — Windows .NET cashier (Tadbeer V5) ​

Added ​

  • Responsive POS redesign for sell, invoices, buyer display, devices, settings, and lock screens (254f6e3, d41e256, f665346, 05119e4).
  • USB/serial printers and HID scanner binding (c2f8ebc).
  • Category cards, 80mm QR receipts, invoices tab, cart quantity controls, product photos (05119e4, 7837a92).
  • In-app update check against public GitHub Releases (fd480ef).

Fixed ​

  • Secure lock screen and full refund flows (4d246eb).
  • Release packaging, printer pick without PowerShell, buyer display pinned to the secondary monitor (0c0450d, 9b2d13b, 6492771, edcc1b0).
  • Offline auto-sync, stock quantities, cart serialization, auth refresh on 401, friendlier sync errors (1278abc, 6a493eb, b4a9ffa, 5433773, afae201).
  • POS sales no longer fail on missing serial ledgers, invalid audit actions, or missing cash/card methods (6ba2d7b, 3b1ddb9, 8080d49).

Changed ​

  • Windows cashier release line advanced to 4.5 / V5 station UI (9b9dc27, 254f6e3).

2026-09-05 — Shop readiness P1–P4 (Syria POS) ​

Added ​

  • P1 / Flutter harden: Windows Credential Manager (DPAPI) for JWT, device secret, and PIN; App Installer in-app updates (c0e4060).
  • P1 / shop polish: Arabic RTL sync-conflict UI; weighted kg prompt so weight SKUs are never sold as qty 1 (240b8bd).
  • .NET Windows cashier: apps/windows_cashier .NET 8 WPF till (auth, station bind, PIN, SQLite catalog/outbox, cash change-due, ESC/POS hooks) plus OV/EV signing pipeline docs (fa966f3, merge aa844f7).
  • P2 / hardware: Bluetooth RFCOMM ESC/POS via paired COM ports; second-monitor customer/pole display with Arabic lines (037a33a, merge 1cfbc34).
  • P3 / platform hygiene: committed OpenAPI TypeScript clients + drift gate; additive RFC 7807 problem details; UTF-8 BOM on report CSV exports for Arabic Excel (#188, e3a8d7d).
  • P4 / fleet ops: Intune / Assigned Access starter and OV SignTool owner checklist (270879e, merge b61dfd3).

Fixed ​

  • Campaign cost estimates use SYP per-message units (no USD stub) (1e1820b).
  • R3 vertical reports included in portal warehouse and chart allowlists (eac0bb8).

Docs ​

  • COGS dry-run / historical cleanup tooling, station go-live, and HTTPS App Installer feed runbooks (5ef83d2).
  • Signing guidance prefers OV over EV for Syria entities; Flutter packaging notes aligned (0ca36e9).

2026-09-04 — Messaging, CRM, reports, security, go-live ​

Added ​

  • Messaging Phase A: WhatsApp Cloud API templates + webhook verify, pluggable SMS, SMTP adapter, consent tables; loyalty/2FA OTP tries WhatsApp then SMS; Syria 09→+963 normalize (f19fed0, merge eb562e7).
  • Phase A4 campaign UI: owner campaigns/templates, audience filters with consent/Syria gates, worker drain for scheduled sends (#176, 4492e20).
  • Phase C CRM: segments + owner automations (thank-you, low-stock, near-expiry, warranty) with Arabic portal UI (#183, c220df1).
  • Phase B go-live: ManualCardTerminal as explicit Syria PIN-pad path; register↔warehouse binding; COGS reversal ops notes (#182, ed5e806).
  • Reports R2: POS Z-closing history API + portal page; party/GL/sales warehouse–register filters (#180, 5270663).
  • Reports R3: pharmacy near-expiry/FEFO, watch serial/warranty, perfume tester/size profitability (6e8a0b2).

Fixed ​

  • Reports R1: Arabic product/variant/warehouse/party names; account_name_ar on GL/TB/P&L/BS; DD/MM dates; warehouse filters on inventory reports (#175, 9d13b01).
  • Migrations / boot: renumber duplicate campaigns 000067→000068 (06c6817); security hardening →000069 (8eb6c7d); POS closings →000070 (2042026).
  • View migrate: DROP + CREATE report_journal_lines so account_name_ar can land (Postgres cannot mid-list replace view columns) (107fa5b).

Security ​

  • Auth secret hardening, shorter impersonation TTL, session revoke on password change, fail-closed WhatsApp/Stripe webhooks, refuse insecure JWT/CORS defaults when APP_ENV=production (#174, f166551).
  • Refresh-token reuse kills session family; TOTP secrets encrypted at rest; must_change_password enforced; cashier issue requires device_secret; hashed invitations; per-account login limits (acfcb75).
  • Pre-prod note: seeded platform admin (admin@tadbeer.test) remains exempt from forced password change so staging stays usable. Do not treat default seed credentials as production-ready — rotate secrets and disable seed before public go-live.

2026-09-01 — Docs locale and API image ​

Docs ​

  • Full Arabic docs locale; Turkish docs locale removed (#171, d229f94).
  • Tutorial videos page shows “coming soon” instead of broken placeholders (b2700aa).

Fixed ​

  • API Docker image uses Alpine runtime instead of unavailable gcr.io distroless (#172, 67d906f).

2026-08-29 — Portal access and live defect sweep ​

Added ​

  • Owners can select which portal pages each member may open (7142f1a, 1792c28).

Fixed ​

  • Live DataTable row-click, cinema showtimes, kitchen display, and credit-note settlement defects (PR 143, 5b6e9a7, merge a944017).
  • Dokploy portal rebuilds pick up fresh Vite bundles (164d553, ea48a03).

2026-08-28 — Syria Arabic default, clothes till P1–P3, verticals ​

Added ​

  • Clothes till P1: product variants (size/color), barcode scan, hard oversell block, size exchange via outbox (5a3b3e7, merge deef3ed).
  • Clothes till P2: cash over-tender with change-due (مبلغ الباقي), Arabic 80mm ESC/POS (CP1256 + raster), offline returns (#138, bd6f60f).
  • Clothes till P3: mid-shift X-report, second-process customer display, offline loyalty outbox, product images on grid, Windows autostart packaging (f4b8bfe, merge 80ec06a).
  • Verticals: Syria pharmacy (FEFO + Rx), luxury watches (serial + warranty), perfume (size/testers/gift receipt) (9901201, merge c5c5d4a).
  • Loyalty Taste Skill landing + compose wiring (1ce2e11); jewelry weight×metal book pricing (0f4ab10).

Changed ​

  • Tadbeer is Syria-only with Arabic as the default locale (cashier + loyalty first launch RTL) (6123f5a, merge f156496).
  • COGS posts at cost; Arabic owner accounting labels (83d2a72).
  • Flutter Windows cashier works fully offline after first login (4b9cf98).

Fixed ​

  • Remaining till/ERP bugs across POS, portal, and API (#142, merge d372c27).
  • Syria verticals migration renumbered to 000063 to avoid clash (a05db9f); portal verticals build (expiryDate / quick actions) (c1a9720).

2026-08-24 — 2026-08-25 — Station readiness and owner onboarding ​

Added ​

  • Windows cashier readiness for HBA-Q2 stations: barcodes/categories/tax in Drift, POS-only shell, offline PIN lock, register/warehouse binding, credit-note returns, server Z-closings, CI test-signed installer (#86, 24ca98f).
  • Station update channel, PCI-safe MSR loyalty confirm, register disable/force-logout, portal dashboards; loyalty landing earn/redeem (#87, 8fe9da8).
  • PIN-gated cart edits and real credit-note refunds (#123, f70b558).
  • Owner onboarding: multi-VAT, CSV catalog import, idempotent Walk-in customer (#122, 054b30f).
  • Production OTP SMS fallback, in-POS loyalty, warehouse stock on till (#89, 0728168).
  • Accessible RTL portal management redesign (47a1e84).

Fixed ​

  • Client-side isolation guards for POS/ERP; API isolation for sync, POS, loyalty, REST (#88, f3c69ad, 0af77f4).
  • Name/contract mismatches that silently dropped data (#121, merge 994f664).
  • POS registers creatable by cashier/owner/accountant; warehouse list fallback (#124, merge 90b5dff).
  • Duplicate tax_rates migration renumbered 000049→000050 (#125, merge 49ad5f5).
  • Per-business industry homes and vertical primary flows (#90, #91).

2026-08-21 — 2026-08-23 — Docs site, portal, accounting ​

Added ​

  • Public docs container for docs.roundworld.sy with VitePress EN site (a4a2771, 2052ae6).
  • Mall industries, restaurant floor, and vertical APIs for Idlib-oriented launch (3f9dd6d).
  • Camera barcode scanning; HTML print documents for Arabic RTL; required business onboarding wizard (f6eefcb, 24b2005, 83d31f5).
  • Humanized audit logs and S3 platform backup cron (a2aafe8).
  • Members CRUD with invites; restaurant menu; receipt verification; unified settings (late Aug portal series).

Fixed ​

  • Auto-migrate on boot and HRM table grants (25c5fb3).
  • UI/UX audit findings across shell, dashboard, and modules; Latin digits for numeric fields (5e33f90, f7c1aff, f6d0ef2).

Changed ​

  • Tajawal as default Arabic font; mall fields allowed on business create (4f6f9f2, f99c87c).

Earlier milestones (2026-05 → 2026-08-13) ​

Added ​

  • Monorepo foundation: Go API with posting engine, offline sync, webhooks, backups; Vue admin + portal; Flutter mobile (e6037ac, 9f08ce4, 73b942e).
  • Syria (and historically Turkey) e-invoicing providers (70776f5); non-Syria adapters later removed (3125aea).
  • ZKTeco attendance poller and payroll MVP (75c4e95).
  • Flutter Windows cashier POS station (first ship) (14e3908).
  • Loyalty shopper / member apps with phone OTP and virtual card (30a68a7, be65bc6).
  • OpenAPI entity schemas from entities.yaml; invoice issue via posting + sync (a470575, 91a7476).

Fixed ​

  • Tenant RLS via tadbeer_app role; force RLS on business-scoped tables (7932307, bdcb669).
  • Observability stack (Grafana/Loki/Prometheus/Vector) readability and scrape hardening (August 2026 ops series).

Docs ​

  • Architecture meeting diagrams (#44, #46); README aligned with prod compose (71ab76f, fbbdc45).

How this page is maintained ​

Entries are curated from conventional commits and merge messages on main. Prefer owner language (Syria POS, Arabic portal, campaigns) over internal agent chatter. SHAs and PR numbers come from git — open an issue if something meaningful is missing.

Documentation for Tadbeer operators, developers, and implementation partners.