Commit Graph
90 Commits
Author SHA1 Message Date
Christian Vidal Wolf bb1af0dbbd fix: correctly track hasUnsavedChanges when only 1 pending change remains 2026-04-10 10:37:40 +02:00
Christian Vidal Wolf 23f4b508c8 Delete history entry after revert 2026-04-10 09:47:35 +02:00
Christian Vidal Wolf 0cf4f59937 Warn when reverting to original state (no actual changes) 2026-04-10 09:42:04 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 64a9c40ec3 fix: move session check after all hooks to fix blank page on login
Early conditional return before useEffect/useMemo violated React Rules
of Hooks, causing error #300 (rendered more hooks than previous render)
after login.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 08:32:03 +02:00
Christian Vidal Wolf 1339a34bb0 Fix React hooks order - all useState at top 2026-04-10 08:27:36 +02:00
Christian Vidal Wolf 935f3f02ec Add debug logging for session changes 2026-04-10 08:24:58 +02:00
Christian Vidal Wolf 1ef865250a Fix login blank page issue 2026-04-10 08:20:44 +02:00
Christian Vidal Wolf 22dfa30708 Dynamically detect ASIN column from Excel headers 2026-04-09 16:33:05 +02:00
Christian Vidal Wolf 4a6440f58a Detect ASIN column index dynamically from headers 2026-04-09 16:29:54 +02:00
Christian Vidal Wolf f125572572 Allow any email to register and fix logout blank page bug 2026-04-09 09:58:01 +02:00
Christian Vidal Wolf 899016f0a0 feat: add Pending Validation tab showing all pending changes 2026-04-09 09:24:17 +02:00
Christian Vidal Wolf 2ea5bf80aa feat: add undo button in DimensionsView for pending changes 2026-04-09 09:13:18 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 a7d8dad36e feat: revert individual pending changes from TopBar dropdown
- pendingRows now stores originalData + newData per article so changes
  can be individually reverted to their pre-edit state
- TopBar Save button becomes a split button: left saves all, right
  opens a dropdown listing every pending change with article no + name
- Each row in the dropdown has a Revert button that restores the
  original data locally and removes it from the pending queue
- Dropdown closes automatically when all changes are saved/reverted
  or when clicking outside

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 08:58:31 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 acc1d06269 feat: manual Save All button in TopBar with pending change tracking
Changes are now queued locally (yellow highlight) and only persisted to
Supabase when the user clicks the Save button in the top-right corner.
The button shows the count of pending changes and a spinner while saving.
EditPanel closes immediately after queuing — no Supabase call per edit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 08:45:22 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 c544b9b709 feat: persistent multi-step undo system in TopBar
fix: save all changes to Supabase with reliable upsert

- Replace broken PATCH→POST fallback with single atomic upsert (POST +
  Prefer: resolution=merge-duplicates). The old PATCH returned 200 OK
  with empty body for new articles, causing silent data loss on every
  first save per article.
- Fix getAllSyncedRows pagination: add explicit limit=10000 and Range
  header to bypass Supabase's default 1000-row cap.
- Add fetchWithRetry helper (2 retries on 5xx/network errors).
- handleSaveRow now returns Promise<boolean> and closes EditPanel only
  after a confirmed successful save.
- Add 'error' save status: failed rows turn red (border-l-red-500)
  across ProductDescriptions, ArticleDetails, and PricingView.
- EditPanel shows saving spinner, disables buttons while saving, and
  displays inline error message with "Retry Save" on failure.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 08:22:58 +02:00
Christian Vidal Wolf 968547c8c7 feat: persistent multi-step undo system in TopBar 2026-04-08 20:11:00 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 d3675bba0b fix: resolve column filter checkboxes not responding to clicks
Replace label+hidden-input pattern in ColumnFilterPopover with direct
onClick on div — browsers don't reliably fire onChange for display:none
inputs activated via label click. Also adds missing columnFilters to
useMemo deps in ProductDescriptions and ArticleDetails, and restores
rowStatuses prop wiring in ProductDescriptions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 19:49:48 +02:00
Christian Vidal WolfandQwen-Coder 71a4897f28 fix: remove rowStatuses prop from ProductDescriptions to fix app crash
The rowStatuses prop was merged from feature branch but is incompatible
with main. Removed it and restored original tbody structure while keeping
the Present/Missing filter fix.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-08 19:32:28 +02:00
Christian Vidal Wolf 0d47f5be33 feat: implement persistence system with visual highlighting and auto-reset on export 2026-04-08 19:30:41 +02:00
Christian Vidal Wolf 24042a6aed feat: reorganize tabs, add Article Details, and enhance filters/search 2026-04-08 16:10:14 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 38466b3876 feat: add Pricing & Units tab for Level error monitoring
New tab shows all products with missing UVP/SRP pricing or invalid
container units (40'HC/HQ = 0 or 1, missing Units/Outer). Price
fields are inline-editable with Supabase sync. Columns are detected
dynamically from Excel headers so future SRP countries (e.g. Poland)
appear automatically.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 11:23:34 +02:00
Christian Vidal Wolf c67fcadb48 Enhance Undo system with 5-step history and TopBar badge 2026-03-29 17:50:31 +02:00
Christian Vidal Wolf 8a4d0c5cfa Add persistent Undo button to TopBar 2026-03-29 17:37:58 +02:00
Christian Vidal Wolf e498325975 Implement Undo system for AI and bulk actions 2026-03-29 17:35:07 +02:00
Christian Vidal Wolf 3db2bc0dae Add Dimensions tab for packaging and MOQ consistency check 2026-03-29 17:30:04 +02:00
Christian Vidal Wolf 2ed90234a7 Fix date columns showing numbers instead of dates 2026-03-29 17:17:50 +02:00
Christian Vidal Wolf 94745f027f Remove Upload/Reload tab from sidebar 2026-03-29 17:10:27 +02:00
Christian Vidal Wolf 27a161bfbb fix: correctly format weight and kg columns to 2 decimals 2026-03-29 14:55:30 +02:00
Christian Vidal WolfandQwen-Coder 912fb16cb0 fix: format Article NW (kg) and weight columns to 2 decimal places
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-29 14:53:17 +02:00
Christian Vidal Wolf 034640c869 feat: format numeric and price fields to 2 decimal places 2026-03-29 14:46:05 +02:00
christian.vidal 1f2bc2c4d4 style: integrate new logo and update theme to deep navy 2026-03-27 18:18:06 +01:00
christian.vidalandClaude Sonnet 4.6 eeb6711b69 feat(auth): add email/password login restricted to @craze.de accounts
- src/lib/auth.ts: signIn/signOut/getStoredSession via Supabase Auth REST API
- src/components/LoginPage.tsx: login form with domain validation UI
- src/components/TopBar.tsx: show logged-in user email + sign out button
- src/App.tsx: gate entire app behind auth — shows LoginPage if no session

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 17:49:10 +01:00
christian.vidal 750e25db89 feat: show EOL not neccessary for OOC products with 0 stock 2026-03-27 13:26:16 +01:00
christian.vidal c3c46d558e feat: remove Data Completeness module 2026-03-27 12:32:28 +01:00
christian.vidalandClaude Sonnet 4.6 d6a2efaf7d fix(fetch): use Vite proxy + Vercel rewrites for reliable Dropbox loading
Replace unreliable third-party CORS proxies (allorigins, cors-anywhere,
thingproxy) with a local /dropbox-file route proxied server-side:
- vite.config.ts: add dev server proxy for /dropbox-file -> dl.dropboxusercontent.com
- vercel.json: add rewrite rule for the same route in production
- App.tsx: simplify fetch logic to use single reliable proxy path

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 12:28:30 +01:00
christian.vidal f43d8f367e feat: persist edits to Supabase database 2026-03-27 12:23:35 +01:00
christian.vidal a5ac3ba359 fix(fetch): add proxy fallbacks and improved error logging for dropbox 2026-03-27 12:07:22 +01:00
christian.vidal 5d0a53731c fix(fetch): change proxy to allorigins for more reliable dropbox access 2026-03-27 12:05:11 +01:00
christian.vidal af89d5b437 feat: auto-load data from Dropbox URL 2026-03-27 12:03:57 +01:00
Christian a3bbc6607e feat: Initialize AI Studio project structure
Sets up a new project for an AI Studio application. Includes essential files like `package.json`, `vite.config.ts`, `tsconfig.json`, and a basic React application structure (`App.tsx`, `main.tsx`, `index.html`, `index.css`).

Also adds a `README.md` with instructions for running locally, an `.env.example` for API key configuration, and a `.gitignore` to manage project dependencies and build artifacts.
2026-03-27 11:34:09 +01:00