DanielS
ec11ad8498
chore: remove all unicode emojis project-wide and sanitize pdf text
2026-09-08 00:03:27 +02:00
DanielS
2a1897141e
chore(branding): update default developer footer text
2026-09-07 21:47:21 +02:00
DanielS
2b1bb77673
feat(branding): add CASPOS Classic Blue preset
Staging Build / build (push) Successful in 3m8s
2026-08-27 00:39:07 +02:00
DanielS
b692e6d4cf
Merge branch 'staging' of https://gitea.hephex.de/admin/webshop into staging
...
# Conflicts:
# shop/lib/actions/email-templates.ts
2026-08-27 00:34:39 +02:00
DanielS
0c99da2eeb
feat(email): add primaryColor branding param to email templates
2026-08-27 00:32:18 +02:00
DanielS
073dc99860
chore(auth): add 2FA database logging
...
Staging Build / build (push) Has been cancelled
- capture and log insert errors during 2FA code generation
- print verification queries and lookup parameters to console
2026-08-20 17:44:30 +02:00
DanielS
49a7a0768d
feat(admin): update B2B PDF, mail and admin table
...
- format PDF order number as AE- and add upgrade flags
- style status emails with sleek modern dark theme
- add badge counts to admin table status filter buttons
- implement preiskorrektur inline editing inside admin detail modal
- trigger DB and total price recalculations on snapshot changes
2026-08-20 17:16:40 +02:00
DanielS
9ecdc645e8
feat(branding): add global dynamic theme system and fix 2fa mail
2026-08-14 15:57:29 +02:00
DanielS
c1efc7916f
feat(email/pdf): include partner company name, partner user name and email in emails and PDF confirmations
2026-08-11 23:40:37 +02:00
DanielS
9bde60553e
fix(types): add end_customer and notes properties to Order and OrderSnapshot types
2026-08-11 23:30:34 +02:00
DanielS
5561dfa708
fix(types): add optional license_number to OrderItem type definition
2026-08-11 23:27:38 +02:00
DanielS
883b607482
feat(auth): add email-based 2FA for unknown devices
Staging Build / build (push) Successful in 2m54s
2026-08-11 01:10:28 +02:00
DanielS
ea64ce9ef0
feat: exclude verwalter from security lockout emails
Staging Build / build (push) Successful in 3m0s
2026-08-11 00:37:13 +02:00
DanielS
407484f69d
feat: allow verwalter role to act as admin in wizard
2026-08-11 00:35:55 +02:00
DanielS
3ba7c91e1f
feat: CC admins on orders and include partner info
2026-08-11 00:22:39 +02:00
DanielS
6177c0cde1
feat: send security lockout emails to all admin users
2026-08-11 00:20:07 +02:00
DanielS
af261ce923
feat: add unique license number check for devices
2026-08-10 23:37:09 +02:00
DanielS
b978a6bc64
feat(auth): add 10-minute inactivity auto-logout
Staging Build / build (push) Successful in 2m59s
2026-07-28 11:50:27 +02:00
DanielS
a43d598f54
chore(merge): integrate origin/staging into local staging
...
Staging Build / build (push) Successful in 2m57s
Resolved conflict in customer-accordion-list.tsx by keeping
the per-device flattening (DeviceCard) implementation.
2026-07-23 09:47:37 +02:00
DanielS
0e4495292d
feat(my-customers): flatten orders into per-device cards
...
- split orders by device_name into FlattenedDevice entries
- strip device prefixes from product and module names
- render one DeviceCard per Kasse in the customer accordion
- add targeted upgrade URL with orderId, customer_id, device_id
- wizard starts at step 3 in upgrade mode with locked customer
- mark existing licensed modules as read-only with badge
2026-07-23 09:45:14 +02:00
DanielS
f130f24c86
feat(shop): move linked fee configuration to product level
Staging Build / build (push) Successful in 2m52s
2026-07-22 17:04:38 +02:00
DanielS
06cba405f3
fix(shop): resolve postgrest join ambiguity for product_modules
Staging Build / build (push) Successful in 2m54s
2026-07-22 15:27:38 +02:00
DanielS
1c31918768
feat(shop): add dynamic linked fees to modules
2026-07-22 15:09:05 +02:00
DanielS
07208fcad0
feat(wizard): add partner filter and pagination to customer step
Staging Build / build (push) Successful in 2m52s
2026-07-21 10:43:21 +02:00
DanielS
8b4fd5f02e
feat(dashboard): add customer accordion view and extension flow
Staging Build / build (push) Successful in 3m1s
2026-07-21 08:43:00 +02:00
DanielS
86b63ce77e
feat(checkout): implement wizard and admin actions
Staging Build / build (push) Successful in 3m11s
2026-07-20 23:18:40 +02:00
DanielS
2b372be228
feat(orders): support active status and update RLS
Staging Build / build (push) Has been cancelled
2026-07-20 23:00:02 +02:00
DanielS
13f647409f
fix(sync): query customers by vowels to avoid crash
Staging Build / build (push) Successful in 2m56s
2026-07-15 23:50:13 +02:00
DanielS
5d3eed874c
feat(sync): add customer synchronization from lic server
Staging Build / build (push) Successful in 3m0s
2026-07-15 22:48:10 +02:00
DanielS
e2d92a031f
feat(licserver): add partner customers proxy API
2026-07-15 16:14:31 +02:00
DanielS
6b9023c871
feat(wizard): connect license lookup panel to real lic server api endpoint
Staging Build / build (push) Successful in 2m48s
2026-07-15 01:01:01 +02:00
DanielS
d5593900fb
feat(cron): add automated sync endpoint and vercel cron configuration for partners
Staging Build / build (push) Successful in 2m57s
2026-07-15 00:30:13 +02:00
DanielS
3fb80e6404
feat(admin): add manual partner import from lic server
Staging Build / build (push) Successful in 2m48s
2026-07-15 00:07:31 +02:00
DanielS
7119383139
fix(security): harden licserver config access controls
...
Staging Build / build (push) Successful in 2m50s
- Add auth guard to getLicServerConfig() - unauthenticated callers
now receive null config instead of DB values
- Remove non-existent 'superadmin' role from saveLicServerConfig()
check (only 'admin' exists per project schema)
- New migration: restrict settings table WRITE to admins only
(previously any authenticated user could overwrite licserver_api_key)
2026-07-14 17:35:12 +02:00
DanielS
fa93e060c2
feat(admin): LicServer config manageable via admin settings UI
...
Staging Build / build (push) Has been cancelled
- Migration: add licserver_base_url/api_key cols to settings table
- New: lib/actions/licserver-config.ts (read/write/test server actions)
- Updated: proxy routes read config from DB with env-var fallback
- Updated: admin/einstellungen adds LicServer card with URL + API key
input, show/hide toggle, Save and Connection Test buttons
2026-07-14 17:30:37 +02:00
DanielS
be4e9204a3
feat(licserver): add partner API proxy routes and types
...
Staging Build / build (push) Successful in 2m54s
- New: lib/types/licserver.ts (PartnerDto, paged result, problem)
- New: app/api/licserver/partners/route.ts (GET search/list)
- New: app/api/licserver/partners/[id]/route.ts (GET by UUID)
- Updated: .env.example with LICSERVER_BASE_URL + LICSERVER_API_KEY
Auth-guarded via Supabase session. API key is server-side only.
Upstream: http://192.168.178.174:9980 (internal container network)
2026-07-14 17:24:00 +02:00
DanielS
43e6a92663
feat: implement category flags, drop global tables, fix sidebar sticky layout
Staging Build / build (push) Successful in 2m48s
2026-07-10 15:27:55 +02:00
DanielS
4da386f693
fix(build): move buildEmailItemsSection to email-templates.ts to fix Turbopack build failure
Staging Build / build (push) Failing after 25s
2026-07-10 10:00:49 +02:00
DanielS
ec1ad4d444
fix(checkout): use full email template with PDF attachment for checkout confirmations
Staging Build / build (push) Failing after 24s
2026-07-10 09:45:21 +02:00
DanielS
27fe6c6eef
feat(admin): move allow_update_discount option to product level
Staging Build / build (push) Successful in 2m50s
2026-07-10 09:15:34 +02:00
DanielS
bc6487bba4
feat(email): include order item configurations in confirmation email
Staging Build / build (push) Successful in 2m54s
2026-07-10 08:57:52 +02:00
DanielS
d8b7076e7e
feat(admin): add allow_update_discount option to category dialog
2026-07-10 08:55:53 +02:00
DanielS
cd3fba2113
fix: add device_name to OrderItem type definition
Staging Build / build (push) Successful in 2m48s
2026-07-10 00:23:37 +02:00
DanielS
a3c5a66d3f
feat: check category eligibility for update discount in frontend and backend
Staging Build / build (push) Has been cancelled
2026-07-10 00:18:23 +02:00
DanielS
ae4a8429c7
fix: rewrite auth middleware to prevent global login lock for partners and admins
Staging Build / build (push) Successful in 2m46s
2026-07-09 23:16:22 +02:00
DanielS
a93fb975c0
docs: finalize request terminology updates and clean up license transforms
Staging Build / build (push) Successful in 2m48s
2026-07-09 22:58:35 +02:00
DanielS
21c4aa859e
fix: rename invoice terminology to request and quotation confirmation across pdf and mail services
2026-07-09 22:58:29 +02:00
DanielS
992e726406
test: add unit tests for frontend top-down auto-reset and backend split logic
2026-07-09 21:56:13 +02:00
DanielS
60e64c689d
feat: implement wizard top-down state management and auto-reset
2026-07-09 21:49:53 +02:00
DanielS
6b35917a06
feat(category): add resets_others option
Staging Build / build (push) Successful in 2m46s
2026-07-09 17:27:16 +02:00