-
9684747d08
feat(billing): end-to-end Stripe subscription signup with platform enforcement
Samir Boulahtit
2026-02-28 19:16:14 +01:00
-
2078ce35b2
fix(prospecting): resolve all architecture validator warnings
Samir Boulahtit
2026-02-28 16:49:47 +01:00
-
22ae63b414
refactor(prospecting): migrate SVC-006 transaction control to endpoint level
Samir Boulahtit
2026-02-28 16:40:09 +01:00
-
78ee05f50e
docs(prospecting): add scoring, database, and research docs
Samir Boulahtit
2026-02-28 16:04:52 +01:00
-
6d6eba75bf
feat(prospecting): add complete prospecting module for lead discovery and scoring
Samir Boulahtit
2026-02-28 00:59:47 +01:00
-
a709adaee8
fix(ops): use REAL_HOME for backup path in verify-server.sh
Samir Boulahtit
2026-02-28 00:34:59 +01:00
-
8d5c8a52e6
fix(ops): exact container name matching in verify-server.sh
Samir Boulahtit
2026-02-28 00:28:57 +01:00
-
d8f0cf16c7
fix(ops): handle sudo in verify-server.sh
Samir Boulahtit
2026-02-28 00:27:45 +01:00
-
93a2d9baff
fix(ops): harden deploy/restore/verify scripts
Samir Boulahtit
2026-02-28 00:23:14 +01:00
-
35d1559162
feat(monitoring): add Redis exporter + Sentry docs to deployment guide
Samir Boulahtit
2026-02-27 23:30:18 +01:00
-
ce822af883
feat: production launch — email audit, team invites, security headers, router fixes
Samir Boulahtit
2026-02-27 18:24:30 +01:00
-
4ebd419987
fix: admin sidebar missing on /admin/my-menu page
Samir Boulahtit
2026-02-27 12:40:46 +01:00
-
2b29867093
fix: Alpine.js defer race condition — blank pages on first load
Samir Boulahtit
2026-02-27 11:22:29 +01:00
-
30c4593e0f
refactor(P6): standardize route variable naming to
router
Samir Boulahtit
2026-02-27 11:05:34 +01:00
-
8c0967e215
fix(arch): resolve all 14 architecture validation warnings
Samir Boulahtit
2026-02-27 06:24:57 +01:00
-
86e85a98b8
refactor(arch): eliminate all cross-module model imports in service layer
Samir Boulahtit
2026-02-27 06:13:15 +01:00
-
e3a52f6536
refactor: remove legacy models/schema/auth.py re-export file
Samir Boulahtit
2026-02-26 23:59:46 +01:00
-
4aa6f76e46
refactor(arch): move auth schemas to tenancy module and add cross-module service methods
Samir Boulahtit
2026-02-26 23:57:04 +01:00
-
f95db7c0b1
feat(roles): add admin store roles page, permission i18n, and menu integration
Samir Boulahtit
2026-02-26 23:31:27 +01:00
-
2b55e7458b
fix: use window.LogConfig pattern for storeRoles logger
Samir Boulahtit
2026-02-26 19:24:13 +01:00
-
c82210795f
fix: move storeRoles() to external JS with base layout inheritance
Samir Boulahtit
2026-02-26 19:15:19 +01:00
-
cb3bc3c118
feat: implement complete RBAC access control with tests
Samir Boulahtit
2026-02-26 18:26:59 +01:00
-
962862ccc1
fix: show role for each team member in seed summary
Samir Boulahtit
2026-02-26 12:42:06 +01:00
-
3053bc5d92
fix: correct "Store panel" to "Store login" in seed next steps
Samir Boulahtit
2026-02-26 12:36:47 +01:00
-
79a88b0a36
feat: add OMS platform admin and align "Store panel" naming
Samir Boulahtit
2026-02-26 12:12:23 +01:00
-
e7f8e61717
feat: add unique constraints for custom subdomain and domain per platform
Samir Boulahtit
2026-02-26 12:05:17 +01:00
-
d480b59df4
docs: update routing docs and seed script for production routing changes
Samir Boulahtit
2026-02-26 11:44:43 +01:00
-
ce5b54f27b
feat: production routing support for subdomain and custom domain modes
Samir Boulahtit
2026-02-26 00:15:06 +01:00
-
6a82d7c12d
refactor(loyalty): replace inline modals with shared modal macros
Samir Boulahtit
2026-02-25 23:29:48 +01:00
-
f1e7baaa6c
feat(loyalty): add dedicated program edit page with full CRUD and tests
Samir Boulahtit
2026-02-25 23:25:22 +01:00
-
6b46a78e72
feat(loyalty): restructure program CRUD by interface
Samir Boulahtit
2026-02-25 13:32:20 +01:00
-
d648c921b7
docs: add consolidated dev URL reference and migrate /shop to /storefront
Samir Boulahtit
2026-02-25 13:23:44 +01:00
-
3df75e2e78
test: add loyalty module tests for today's bug fixes
Samir Boulahtit
2026-02-24 23:28:22 +01:00
-
92a434530f
refactor: rename points earn endpoint to /points/earn for clarity
Samir Boulahtit
2026-02-24 23:04:01 +01:00
-
01146d5c97
fix: correct earn points API path on loyalty terminal
Samir Boulahtit
2026-02-24 23:00:18 +01:00
-
d0d5aadaf7
fix: show proper transaction type labels on loyalty terminal
Samir Boulahtit
2026-02-24 22:56:06 +01:00
-
56afb9192b
fix(loyalty): fix wallet service test fixtures and mock paths
Samir Boulahtit
2026-02-24 22:50:16 +01:00
-
a4519035df
fix(loyalty): read Google Wallet config from core settings instead of module config
Samir Boulahtit
2026-02-24 22:29:27 +01:00
-
c9b2ecbdff
fix: use SQL func.replace instead of Python str.replace on column
Samir Boulahtit
2026-02-24 22:12:49 +01:00
-
1194731f33
fix: card lookup 422 caused by route ordering conflict
Samir Boulahtit
2026-02-24 22:10:10 +01:00
-
12c1c3c511
fix: loyalty sidebar menu label and active state highlighting
Samir Boulahtit
2026-02-24 22:04:16 +01:00
-
81cf84ed28
fix: correct billing feature-store API paths and loyalty config
Samir Boulahtit
2026-02-24 22:01:03 +01:00
-
a6e6d9be8e
refactor: rename shopLayoutData to storefrontLayoutData
Samir Boulahtit
2026-02-24 19:06:45 +01:00
-
ec888f2e94
fix: add card detail and store transactions endpoints for loyalty terminal
Samir Boulahtit
2026-02-24 19:01:48 +01:00
-
53dfe018c2
fix: loyalty storefront and store card detail — enrollment, context, and Alpine.js
Samir Boulahtit
2026-02-24 14:28:37 +01:00
-
3de69e55a1
fix: add GET /cards/lookup endpoint for loyalty terminal customer search
Samir Boulahtit
2026-02-24 13:55:11 +01:00
-
cfce6c0ca4
fix: loyalty module end-to-end — merchant route, store menus, sidebar, API error handling
Samir Boulahtit
2026-02-24 13:52:11 +01:00
-
2833ff1476
fix(billing): use tier_id instead of tier_code for feature limit endpoints
Samir Boulahtit
2026-02-24 13:06:18 +01:00
-
f47c680cb8
fix: storefront login 403, cookie path, double-storefront URLs, and auth redirects
Samir Boulahtit
2026-02-24 12:29:52 +01:00
-
32e4aa6564
feat: wire Google Wallet into loyalty enrollment, stamps, and points flows
Samir Boulahtit
2026-02-24 10:38:46 +01:00
-
6c78827c7f
feat: add language switching to admin and merchant frontends
Samir Boulahtit
2026-02-24 10:26:57 +01:00
-
0389294b1a
fix: language switcher stuck in French on store dashboard
Samir Boulahtit
2026-02-24 05:30:25 +01:00
-
cd935988c4
fix: store login crash and dashboard misrouted as storefront
Samir Boulahtit
2026-02-24 01:19:22 +01:00
-
05d31a7fc5
docs: add Google Wallet setup guide and loyalty env vars
Samir Boulahtit
2026-02-24 00:31:43 +01:00
-
272b62fbd3
docs: update documentation for platform-aware storefront routing
Samir Boulahtit
2026-02-23 23:56:26 +01:00
-
32acc76b49
feat: platform-aware storefront routing and billing improvements
Samir Boulahtit
2026-02-23 23:42:41 +01:00
-
d36783a7f1
feat: add google-auth and PyJWT for Google Wallet loyalty passes
Samir Boulahtit
2026-02-23 22:50:50 +01:00
-
2fc157d7b2
fix: store menu 404, logger crash, platform detection, and sidebar UX
Samir Boulahtit
2026-02-23 13:53:31 +01:00
-
506171503d
feat: complete dynamic menu system across all frontends
Samir Boulahtit
2026-02-23 02:14:42 +01:00
-
be248222bc
feat: dynamic merchant sidebar with module-driven menus
Samir Boulahtit
2026-02-23 00:24:11 +01:00
-
716a4e3d15
fix: sidebar highlight on detail pages with numeric IDs
Samir Boulahtit
2026-02-22 23:08:17 +01:00
-
467b1510f4
fix: use apiClient instead of httponly cookie in merchant stores/profile pages
Samir Boulahtit
2026-02-22 22:53:05 +01:00
-
5c8fbd21c7
fix: guard LogConfig access in merchant and store init-alpine.js
Samir Boulahtit
2026-02-22 22:13:30 +01:00
-
1f3042547b
fix: correct billing history sidebar page_id for menu highlight
Samir Boulahtit
2026-02-22 21:48:26 +01:00
-
d7a383f3d7
test: add tests for merchant dashboard metrics and fix invoice template location
Samir Boulahtit
2026-02-22 21:46:34 +01:00
-
b77952bf89
fix: correct billing history menu link in merchant sidebar
Samir Boulahtit
2026-02-22 21:33:05 +01:00
-
ff852f1ab3
fix: use metrics provider pattern for merchant dashboard stats
Samir Boulahtit
2026-02-22 21:28:59 +01:00
-
42b894094a
feat: add single endpoint for merchant subscriptions with usage data
Samir Boulahtit
2026-02-22 20:58:02 +01:00
-
b9ac252a9f
feat: add merchant user edit page with editable profile fields
Samir Boulahtit
2026-02-19 23:30:50 +01:00
-
51e512ec08
feat: make admin user edit page fields editable (username, email, name)
Samir Boulahtit
2026-02-19 23:06:18 +01:00
-
f517a7ccd7
fix: merchant-user-detail page derives role from user.role instead of owned_merchants_count
Samir Boulahtit
2026-02-19 22:56:54 +01:00
-
c47a394a7b
fix: merchant-users page shows role from user.role instead of owned_merchants_count
Samir Boulahtit
2026-02-19 22:54:42 +01:00
-
1eef69f300
ci: add security/performance/audit validators to pre-commit and CI
Samir Boulahtit
2026-02-19 22:49:04 +01:00
-
1dcb0e6c33
feat: RBAC Phase 1 — consolidate user roles into 4-value enum
Samir Boulahtit
2026-02-19 22:44:29 +01:00
-
ef21d47533
fix: add missing noqa suppressions for security linter in init_production.py
Samir Boulahtit
2026-02-19 22:06:19 +01:00
-
6c5969e4e1
test: add 42 unit tests for middleware/cloudflare.py and middleware/language.py
Samir Boulahtit
2026-02-19 21:55:47 +01:00
-
6a739bf670
test: add 58 unit tests for middleware/auth.py AuthManager
Samir Boulahtit
2026-02-19 19:11:57 +01:00
-
ffa12f0255
test: complete remaining deps.py phases — platform, module, merchant, customer, permissions
Samir Boulahtit
2026-02-19 17:49:42 +01:00
-
93731b7173
test: add 73 unit tests for app/api/deps.py auth dependencies
Samir Boulahtit
2026-02-19 17:38:31 +01:00
-
e5dbd7ef1a
feat: add JS-015 architecture rule to enforce confirm_modal over native confirm()
Samir Boulahtit
2026-02-19 16:59:19 +01:00
-
167bb50f4f
fix: replace all native confirm() dialogs with styled modal macros
Samir Boulahtit
2026-02-19 16:56:25 +01:00
-
182610283d
fix: map smtp_use_tls/ssl from API response in loadEmailSettings
Samir Boulahtit
2026-02-19 16:17:52 +01:00
-
e23788cb7d
fix: SMTP SSL/TLS checkboxes not reflecting actual config in admin settings
Samir Boulahtit
2026-02-19 16:11:24 +01:00
-
573b0180ad
fix: bypass subscription check in middleware tests
Samir Boulahtit
2026-02-18 23:47:10 +01:00
-
d9fc52d47a
feat: email verification, merchant/store password reset, seed gap fix
Samir Boulahtit
2026-02-18 23:22:46 +01:00
-
a8b29750a5
feat: loyalty feature provider, admin data fixes, storefront mobile menu
Samir Boulahtit
2026-02-18 18:59:24 +01:00
-
2c710ad416
feat: storefront subscription access guard + module-driven nav + URL rename
Samir Boulahtit
2026-02-18 13:27:31 +01:00
-
682213fdee
feat: trim platform modules, rename platforms, fix seed output
Samir Boulahtit
2026-02-17 18:18:24 +01:00
-
3d1586f025
fix: I18n not defined — defer race condition in all base templates
Samir Boulahtit
2026-02-17 15:52:31 +01:00
-
64082ca877
feat: first client onboarding — fix env, add loyalty admin, dev infra-check
Samir Boulahtit
2026-02-17 15:40:07 +01:00
-
67260e9322
docs: update progress — server fully ready (44/44 checks pass)
Samir Boulahtit
2026-02-17 11:04:43 +01:00
-
44568893fd
fix: verify-server.sh exit on first check, bump flower/beat to 256m
Samir Boulahtit
2026-02-17 10:56:24 +01:00
-
10fdf91dfa
feat(infra): add launch readiness quick wins
Samir Boulahtit
2026-02-17 10:24:20 +01:00
-
8ee8c398ce
perf: add defer to scripts and lazy loading to images
Samir Boulahtit
2026-02-16 20:55:52 +01:00
-
3a7cf29386
docs(deployment): document Cloudflare proxy, SendGrid SMTP, and Caddyfile updates
Samir Boulahtit
2026-02-16 20:20:17 +01:00
-
eaab47f2f8
fix: eliminate all 1600 SEC-015 security info findings
Samir Boulahtit
2026-02-16 18:02:59 +01:00
-
6458ab13d7
docs: update validator noqa proposal with current results
Samir Boulahtit
2026-02-16 14:25:45 +01:00
-
0b701fb847
docs: add proposal to fix 1600 SEC-015 x-html security info findings
Samir Boulahtit
2026-02-15 22:23:15 +01:00
-
f67510b706
docs: switch email provider recommendation from Mailgun to SendGrid
Samir Boulahtit
2026-02-15 22:21:49 +01:00
-
8c715cfde3
docs(deployment): expand server-side setup for Steps 19-20
Samir Boulahtit
2026-02-15 22:17:15 +01:00