-
c4e9e4e646
fix(seed): use SQLAlchemy .is_not(None) instead of Python 'is not None' in queries
Samir Boulahtit
2026-03-04 23:55:00 +01:00
-
8c449d7baa
docs(deployment): add full network architecture diagram
Samir Boulahtit
2026-03-04 23:41:54 +01:00
-
820ab1aaa4
feat(i18n): add multilingual platform descriptions and HostWizard demo data
Samir Boulahtit
2026-03-04 23:38:52 +01:00
-
2268f32f51
docs(security): update Hetzner guide with all security hardening for rebuild
Samir Boulahtit
2026-03-04 23:33:53 +01:00
-
b68d542258
fix(security): harden Redis auth, restrict /metrics, document Gitea port fix
Samir Boulahtit
2026-03-04 23:15:15 +01:00
-
a7392de9f6
fix(security): close exposed PostgreSQL and Redis ports (BSI/CERT-Bund report)
Samir Boulahtit
2026-03-04 22:31:07 +01:00
-
3c7e4458af
fix(i18n): translate pricing tiers, features, and content pages
Samir Boulahtit
2026-03-04 07:48:15 +01:00
-
8b147f53c6
feat(hosting): add HostWizard platform module and fix migration chain
Samir Boulahtit
2026-03-03 19:34:56 +01:00
-
784bcb9d23
docs(i18n): document CMS template translations and multi-language content pages
Samir Boulahtit
2026-03-03 18:00:00 +01:00
-
b8aa484653
feat(i18n): complete post-launch i18n phases 5-8
Samir Boulahtit
2026-03-03 05:50:06 +01:00
-
05c53e1865
docs(deployment): add verified full reset procedure to Hetzner guide
Samir Boulahtit
2026-03-01 23:21:52 +01:00
-
6dec1e3ca6
fix(ops): add missing env_file to celery-beat and quiet Stripe log spam
Samir Boulahtit
2026-03-01 22:33:54 +01:00
-
f631283286
docs(deployment): update memory limits and celery concurrency across all guides
Samir Boulahtit
2026-03-01 22:21:25 +01:00
-
f631322b4e
fix(ops): rebalance container memory limits to prevent celery OOM kills
Samir Boulahtit
2026-03-01 22:15:35 +01:00
-
e61e02fb39
fix(redis): configure maxmemory and eviction policy to prevent OOM
Samir Boulahtit
2026-03-01 17:57:38 +01:00
-
b5b73559b5
refactor(platform): make base template fully CMS-driven and platform-aware
Samir Boulahtit
2026-03-01 17:41:24 +01:00
-
28dca65a06
fix(cms): filter pricing tiers by platform_id on homepage
Samir Boulahtit
2026-03-01 13:09:34 +01:00
-
adbecd360b
feat(cms): CMS-driven homepages, products section, placeholder resolution
Samir Boulahtit
2026-03-01 12:12:20 +01:00
-
ef9ea29643
feat: module-driven onboarding system + simplified 3-step signup
Samir Boulahtit
2026-02-28 23:39:42 +01:00
-
f8a2394da5
fix: replace missing 'envelope' icon with 'mail' across modules
Samir Boulahtit
2026-02-28 21:53:40 +01:00
-
4d07418f44
fix(prospecting): replace missing icons with available registry icons
Samir Boulahtit
2026-02-28 19:23:02 +01:00
-
bf64f82613
docs: add prospecting module pages to mkdocs nav
Samir Boulahtit
2026-02-28 19:18:55 +01:00
-
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