Commit Graph
100 Commits
Author SHA1 Message Date
Christian Vidal Wolf d8f3dfbed3 Enable multi-select in Pricing search dropdown
Search dropdown now allows selecting multiple products with checkboxes and Apply button
2026-04-21 08:30:14 +02:00
Christian Vidal Wolf ed9e8ba3ab Fix Refresh button to bypass browser cache
Use cache: 'no-store' and cache buster to force fresh data load
2026-04-20 20:39:23 +02:00
Christian Vidal Wolf 03b98c9aed Add tooltip preview on hover for notes in Pricing tab
Show note content in popup when hovering over the notes icon
2026-04-20 20:35:46 +02:00
Christian Vidal Wolf 9878efb2ca feat: enhance PricingView search bar with a searchable dropdown list 2026-04-20 20:34:28 +02:00
Christian Vidal Wolf ecf1c7831c Add Hard Refresh button to TopBar
Button triggers reload of all data from Dropbox source
2026-04-20 20:30:21 +02:00
Christian Vidal Wolf 369e37c8f5 Filter out old launch dates before Dec 2025 in Missing Data tabs 2026-04-20 20:24:39 +02:00
Christian Vidal Wolf 66a42ad1a0 Add Launch Date Inconsistencies and Upcoming Launch Date tabs
- Add Launch Date Inconsistencies tab: shows when Ready to Order > Launch Date
- Add Upcoming Launch Date tab: alerts when launch is within 180 days (yellow) or 120 days (red)
- Show days until launch countdown
2026-04-20 18:48:30 +02:00
Christian Vidal Wolf db696d2816 feat: redesign PricingView with manual validation check and notes, and add Matrix columns 2026-04-20 18:46:50 +02:00
Christian Vidal Wolf 111a44ae82 Add close X button to filter popover
Add X button in top-right corner to close filter dropdown
2026-04-20 17:15:41 +02:00
Christian Vidal Wolf b76b64b044 Add Excel-like filter conditions to column filters
Add Condition tab with: equals, not equals, contains, starts with, ends with, greater than, less than, between
2026-04-20 17:05:24 +02:00
Christian Vidal Wolf af2ed8a037 Add dynamic column filters to all pricing columns
Add filter dropdowns to SRP, UVP, and container columns in Pricing tab
2026-04-20 17:01:47 +02:00
Christian Vidal Wolf 5f96272182 Add column filters for Units/Outer and Outer W/L/H in Pricing tab
Add dropdown filters to filter by specific values in Units/Outer, Outer W, Outer L, Outer H columns
2026-04-20 16:57:02 +02:00
Christian Vidal Wolf 67a0466627 Refine AI button labeling logic: only use 'Translate' for same-field cross-language content 2026-04-20 16:53:21 +02:00
Christian Vidal Wolf 4c39c9ec53 Add Outer W, L, H columns to Pricing tab
Display outer box dimensions next to Units/Outer column in pricing view
2026-04-20 16:51:54 +02:00
Christian Vidal Wolf dab6ccf723 Update short description AI prompts with character limits and improved translation logic 2026-04-20 16:50:21 +02:00
Christian Vidal Wolf 23074ed42f Fix ColumnFilterPopover single-click and drag-selection interaction 2026-04-20 16:42:07 +02:00
Christian Vidal Wolf 1d9e77038a Add Details DE/EN to description columns filter
Include DETAILS columns in description filter for Present/Missing filtering and improve empty value handling
2026-04-20 16:37:33 +02:00
Christian Vidal Wolf b6b60e7dfb Hide stats header in TopBar for non-descriptions tabs
Only show Total, Missing DE/EN Long/Short, Fully Complete header when viewing Product Descriptions tab
2026-04-20 16:35:40 +02:00
Christian Vidal Wolf 86c3ace6f8 Add dropdown selector for individual row field changes in Dimensions tab
- Added dropdown that shows unique values from the group (outer/units/moq)
- Click icon to open dropdown and select value to change single row
- Icon turns green on hover (emerald color)
- Replaces sync all icon with ChevronDown dropdown icon
2026-04-20 11:46:55 +02:00
Christian Vidal Wolf f358b61229 fix: resolve ReferenceError in DimensionsView by moving useEffect after variable declaration 2026-04-16 12:03:39 +02:00
Christian Vidal Wolf cbfd5f573d feat: implement excel-style drag-to-select and shift-click in Dimensions and filters 2026-04-16 12:01:59 +02:00
Christian Vidal Wolf 19ca75c1b9 Fix drag selection with refs 2026-04-16 11:55:30 +02:00
Christian Vidal Wolf dc46f91e7b Add drag selection to filter dropdowns 2026-04-16 11:52:57 +02:00
Christian Vidal Wolf 3369fc90ed fix: force showPicker for date inputs and add dark mode support 2026-04-14 18:58:07 +02:00
Christian Vidal Wolf 7c7258d87c feat: implement native date pickers and YYYY-MM-DD format in Missing Data view 2026-04-14 18:55:23 +02:00
Christian Vidal Wolf d4512aa4e6 Improve date column detection in Missing Data filters 2026-04-14 17:17:43 +02:00
Christian Vidal Wolf a1402316e0 Add date range filter with calendar picker for Launch Date and Ready to Order 2026-04-14 17:13:47 +02:00
Christian Vidal Wolf 78df66be24 Add date picker for launch and ready to order fields 2026-04-14 17:09:12 +02:00
Christian Vidal Wolf f4f69633ce Add classification dropdown in Missing Data edit panel 2026-04-14 17:06:06 +02:00
Christian Vidal Wolf 4771a9b160 Fix: Improve AI description completeness and increase Gemini token limit to 4096 2026-04-14 11:23:49 +02:00
Christian Vidal Wolf 4533a98ddf Add multi-select filters to Missing Data view using ColumnFilterPopover 2026-04-12 22:27:04 +02:00
Christian Vidal Wolf 31921666ad Remove missingClass tab, keep only missingLaunch 2026-04-12 22:23:43 +02:00
Christian Vidal Wolf a5d4305006 Fix columnUniqueValues dependency to use columns before it's defined 2026-04-12 18:38:47 +02:00
Christian Vidal Wolf dce4588d0c Add dropdown filters to Missing Data view with unique values 2026-04-12 18:36:19 +02:00
Christian Vidal Wolf fd5d7458b9 Add column filters to Missing Data view and include Classification in editable columns 2026-04-12 18:32:08 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 39869edcef feat: replace global EditPanel with focused 3-field panel in Missing Data
When editing from Missing Data view, only Classification, Launch Date
and Ready to Order fields are shown in a lightweight slide-in panel.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 15:23:23 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 ce9e91bad1 feat: add Edit button to each row in Missing Data view
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 15:19:20 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 7eeccdaf8c feat: add Missing Data module as new sidebar entry
Replaces the tab approach with a dedicated 'Missing Data' module in the
sidebar. The module has two sub-tabs: 'Missing Classification' and
'Missing Launch Date'. Shows SKU, Name, Classification, Launch Date and
Ready to Order columns. Includes a local Excel serial date formatter so
dates that slipped through the App.tsx pre-processing are rendered
correctly instead of showing as raw numbers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 15:11:57 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 fdf878a4f8 feat: add Missing Class / Launch tab to Article Details
Adds a new 'Missing Class / Launch' tab in Article Details that surfaces
items where Classification is empty or Launch Date is blank/01-01-1900.
The tab shows Classification, Launch Date, and Ready to Order columns for
quick reference. Column indices for Launch Date and Ready to Order are
resolved dynamically from the Excel headers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 15:02:52 +02:00
Christian Vidal Wolf d1f1c9a467 feat: restrict History and Pending Validation tabs to master user 2026-04-11 15:00:58 +02:00
Christian Vidal Wolf 7ecd1c45d0 UI: Add group verification for Dimensions inconsistencies and persist to DB 2026-04-11 11:48:56 +02:00
Christian Vidal Wolf 0e797e06bb feat: add voice-to-text input using Web Speech API 2026-04-11 11:34:57 +02:00
Christian Vidal Wolf 5104dfd59d chore: install buzz package for Python-style type checking 2026-04-11 11:31:58 +02:00
Christian Vidal Wolf 385ea2972c feat: increase default page size from 25 to 100 in ProductDescriptions and ArticleDetails 2026-04-11 11:18:58 +02:00
Christian Vidal Wolf aebf46493b UI: Increase column widths for description headers to prevent cutoff 2026-04-11 11:15:41 +02:00
Christian Vidal Wolf dcdf50593d Comprehensive audit: Replace backend JWT dependency universally with anon key and strict cache rules 2026-04-10 19:56:42 +02:00
Christian Vidal Wolf d9cc1f4506 Fix silent failure on getAllSyncedRows by forcing anon key 2026-04-10 19:52:30 +02:00
Christian Vidal Wolf d3c90120f4 Force anon key on getHistory and expose errors visually 2026-04-10 19:48:33 +02:00
Christian Vidal Wolf 1c72eae60a Disable fetch cache to sync history across computers 2026-04-10 19:45:05 +02:00
Christian Vidal Wolf 61daf8083f fix: preserve 0 values in EditPanel form inputs 2026-04-10 12:55:47 +02:00
Christian Vidal Wolf 15913706fa fix: show 0 values in DimensionsView instead of empty 2026-04-10 12:53:47 +02:00
Christian Vidal Wolf 20c4cb1a40 fix: preserve 0 values in badge check 2026-04-10 12:50:15 +02:00
Christian Vidal Wolf 95eb6ab91b feat: add Edit button to history items to modify changes 2026-04-10 12:46:26 +02:00
Christian Vidal Wolf be584600fc feat: add clear X button to all search inputs 2026-04-10 12:39:31 +02:00
Christian Vidal Wolf dbcd6d622f Implement smart merge of synced data to preserve external updates 2026-04-10 12:31:57 +02:00
Christian Vidal Wolf 8849303f58 Fix data overwrite on reload by ignoring duplicates in dropbox-sync 2026-04-10 12:28:48 +02:00
Christian Vidal Wolf 7a5e1a1b26 Fix token definition oversight 2026-04-10 12:25:58 +02:00
Christian Vidal Wolf bdd15cbd33 Show specific critical error message 2026-04-10 12:16:06 +02:00
Christian Vidal Wolf 3c821b83a0 Gracefully handle JWT expired and warn user to re-login 2026-04-10 12:09:49 +02:00
Christian Vidal Wolf db91aeb842 Improve Supabase error reporting for diagnostic purposes 2026-04-10 12:06:16 +02:00
Christian Vidal Wolf ee73b85100 Fix save changes looping issue and authorize all Supabase API calls 2026-04-10 12:03:12 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 a92e136372 fix: update Dropbox file path to correct location
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 11:51:41 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 1bff4f11a6 fix: use refresh token flow for permanent Dropbox access
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 11:24:28 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 8e5cc6745a fix: use DROPBOX_ACCESS_TOKEN directly in proxy (skip refresh flow)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 11:20:16 +02:00
Christian Vidal Wolf 1aaf454ba5 fix: use raw fetch for Dropbox API instead of SDK, add better error logging 2026-04-10 11:01:55 +02:00
Christian Vidal Wolf 90e60017da feat: sync Excel data to Supabase on load - detect new Dropbox files automatically 2026-04-10 10:54:50 +02:00
Christian Vidal Wolf 077e78513c fix: use POST with upsert instead of PATCH to handle new products 2026-04-10 10:48:05 +02:00
Christian Vidal Wolf 0139e1de20 fix: add debug logs to handleSaveAll to diagnose save issue 2026-04-10 10:45:11 +02:00
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 4e6563d38d Move filter icon next to header text in all views 2026-04-10 10:05:59 +02:00
Christian Vidal Wolf 19df2d04e4 Move filter icon closer to header text in ArticleDetails 2026-04-10 10:02:26 +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 Wolf 7bf37eb017 style: adjust ASIN column width to fit 10 characters in ProductDescriptions 2026-04-10 09:28:49 +02:00
Christian Vidal Wolf 161e77a76b Set ASIN column width to 90px 2026-04-10 09:25:34 +02:00
Christian Vidal Wolf 0c75e91c4e Reduce ASIN column width to 120px 2026-04-10 09:23:51 +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 9c73efa8cf Fix ASIN column index (column 33, after Item to root units) 2026-04-09 16:23:25 +02:00
Christian Vidal Wolf db69ada011 Add ASIN column to Product Descriptions 2026-04-09 16:20:44 +02:00
Christian Vidal Wolf 80fff047ab fix: ensure Gemini translates all-caps phrases and maintains casing 2026-04-09 11:05:00 +02:00
Christian Vidal Wolf e773c6c9c4 fix: tighten Gemini prompt to avoid conversational filler 2026-04-09 11:00:12 +02:00
Christian Vidal Wolf 3f3c7eb3b2 feat: add change history and fix description editing focus bug 2026-04-09 10:57:39 +02:00
Christian Vidal Wolf cf851e97c4 Fix: prevent keyboard events from closing edit panel 2026-04-09 10:41:05 +02:00
Christian Vidal Wolf 0b100398e7 Fix: focus textarea after AI generation for manual editing 2026-04-09 10:20:59 +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 ec541f1238 feat: simplify Product Descriptions tabs 2026-04-09 09:44:24 +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 a5c8076e18 feat: always show undo button in DimensionsView 2026-04-09 09:17:11 +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 1b0b35d3bf feat: show Save button always, disabled when no pending changes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 09:03:19 +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 da4673f7c4 feat: resizable columns in ProductDescriptions and ArticleDetails 2026-04-08 20:21:36 +02:00
Christian Vidal Wolf 968547c8c7 feat: persistent multi-step undo system in TopBar 2026-04-08 20:11:00 +02:00