Commit Graph
283 Commits
Author SHA1 Message Date
Christian Vidal Wolf 4b7c1a2dad fix: hardcode Gemini API key for all users and disable personal overrides 2026-04-24 17:29:17 +02:00
Christian Vidal Wolf 9655da8164 refactor: eliminate automatic 'End of Life' (EOL) logic and yellow highlighting for OOC products with no stock 2026-04-24 17:24:47 +02:00
Christian Vidal Wolf 91fe855434 feat: allow applying filters with Enter key 2026-04-24 17:20:47 +02:00
Christian Vidal Wolf ef9cd53558 fix: resolve crash by adding missing second argument to createPortal 2026-04-24 17:15:08 +02:00
Christian Vidal Wolf d06285ddaa fix: portal all filter popovers to prevent occlusion by sticky columns 2026-04-24 17:13:12 +02:00
Christian Vidal Wolf e96d245f59 fix: ensure filter dropdowns are not covered by pinned columns 2026-04-24 17:08:23 +02:00
Christian Vidal Wolf 6057a16229 fix: remove overflow-hidden from pinned td cells to allow filter popover visibility 2026-04-24 16:21:56 +02:00
Christian Vidal Wolf 37aeee0dc7 fix: ensure filter popover z-index above pinned columns 2026-04-24 16:16:37 +02:00
Christian Vidal Wolf 92183dd942 fix: z-index filters above pinned columns 2026-04-24 16:13:30 +02:00
Christian Vidal Wolf 8d00b7372f feat: make search filters independent per tab while maintaining persistence 2026-04-24 16:09:49 +02:00
Christian Vidal Wolfandclaude-flow f2ed303fed fix: apply getHeaderStickyRank to outerH pinned column header
Completes the fix where pinned column filter popovers were hidden
behind sticky body cells. The outerH <th> was missed in the batch
and still used the lower body-level stacking rank.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-04-24 14:21:07 +02:00
Christian Vidal Wolf 917bb08d9f feat: persistent search and filters across all tabs via FilterContext 2026-04-24 14:19:09 +02:00
Christian Vidal Wolf 29d5994d6a fix: ensure filter popovers appear above pinned columns
- Add zIndex prop to ColumnFilterPopover and TextFilterPopover
- Pass higher zIndex to popovers when column is pinned (zIndex + 100)
- Filter popovers now display correctly over sticky columns
2026-04-24 14:06:32 +02:00
Christian Vidal Wolf b5e8c2fe22 feat: upgrade Gemini models to 3.1 and 2.5 series (April 2026) 2026-04-24 13:54:45 +02:00
Christian Vidal Wolf 96c37f92e2 security: restrict AI settings to authorized admin email 2026-04-24 13:47:31 +02:00
Christian Vidal Wolf 13890af125 feat: add AI Settings modal to manage API keys from the UI 2026-04-24 13:45:38 +02:00
Christian Vidal Wolf 43f94b3902 fix: include dynamic columns in sticky position/z-index calculation
- Include pricingEditableCols and containerCols in column order for pinned calculation
- Fix z-index stacking so all pinned columns stay visible while scrolling
2026-04-24 13:35:43 +02:00
Christian Vidal Wolf 1c76544e47 fix: update CSP to allow Gemini API 2026-04-24 13:31:49 +02:00
Christian Vidal Wolf 05f9f0ef10 fix: improve column pinning with proper z-index stacking
- Add getStickyRank() function for layered z-index on pinned columns
- Higher z-index for rightmost pinned columns so they stack correctly
- Apply z-index dynamically based on column order in pinned list
- All pinned columns now stay visible while scrolling
2026-04-24 13:31:36 +02:00
Christian Vidal Wolf 3bc2753bec debug: add API key source logging 2026-04-24 13:28:01 +02:00
Christian Vidal Wolf 2c1efc44d6 fix: rename Gemini API key to VITE_GEMINI_API_KEY and improve logging 2026-04-24 13:27:34 +02:00
Christian Vidal Wolf e6207dff64 feat: add column pinning (freeze) functionality in Pricing Units tab
- Add Pin Columns button to select columns to freeze
- Implement sticky columns with left positioning for pinned columns
- Support pinning dynamic pricing and container columns
- Add Pin icon indicator on pinned columns
- Include reset and unpin all options in pin panel
2026-04-24 13:23:18 +02:00
Christian Vidal Wolf b8a960e3e5 fix: enable real-time filtering for global search and fix selection bug 2026-04-24 12:43:27 +02:00
Christian Vidal Wolf a0a9fbeb2e fix: resolve syntax error in global search ternary operator 2026-04-24 12:39:47 +02:00
Christian Vidal Wolf c5d083e011 feat: implement advanced 5-term global search in PricingView 2026-04-24 12:38:11 +02:00
Christian Vidal Wolf 64babee90d feat: upgrade column filters to support up to 5 dynamic terms with AND/OR logic 2026-04-24 12:34:00 +02:00
Christian Vidal Wolf dbc47d95cb feat: implement advanced Excel-style Custom Filter for SKU and Name columns and fix search clear bug 2026-04-24 12:27:30 +02:00
Christian Vidal Wolf 6a258c3fb6 docs: clarify multi-word search in UI and apply AND logic to column name filters 2026-04-24 12:23:48 +02:00
Christian Vidal Wolf 97fe06eedd feat: implement multi-word AND search in all views and initialize RuFlo V3 2026-04-24 12:20:14 +02:00
Christian Vidal Wolf b662acddd7 fix: date formatting for Dropbox data imports 2026-04-23 21:44:26 +02:00
Christian Vidal Wolf 8ffcae5eef fix: prefer history data over synced data for internal columns 2026-04-23 19:28:25 +02:00
Christian Vidal Wolf a987a5b750 debug: add immediate log after getHistoryDataForMerge 2026-04-23 19:25:52 +02:00
Christian Vidal Wolf cf602fe9a2 debug: add detailed safeFetch and getHistoryDataForMerge logging 2026-04-23 19:23:29 +02:00
Christian Vidal Wolf 3892b9f256 debug: log processedRow[103] for 59272EN 2026-04-23 19:20:43 +02:00
Christian Vidal Wolf f15c9fa853 fix: pad rows to match extendedHeaders length so internal cols are readable 2026-04-23 19:17:03 +02:00
Christian Vidal Wolf 7ef9f62497 debug: add diagnostic logs to trace history merge for 59272EN 2026-04-23 19:14:10 +02:00
Christian Vidal Wolf c1e3960a20 fix: merge history data into rows when products table is empty 2026-04-23 19:07:38 +02:00
Christian Vidal Wolf ee94926d04 fix: HistoryEntry.id type changed from number to string (Supabase returns UUID) 2026-04-23 18:58:52 +02:00
Christian Vidal Wolf be2adbfe68 debug: add detailed logging to trace history loading 2026-04-23 18:51:07 +02:00
Christian Vidal Wolf 0eeeeb480c fix: always load history on mount and reload on data change 2026-04-23 18:47:32 +02:00
Christian Vidal Wolf 7b71aa484e fix: reload history when data refreshes from Dropbox 2026-04-23 18:43:18 +02:00
Christian Vidal Wolf e0508d50d6 fix: restore internal control columns and protect them from Dropbox sync overrides 2026-04-23 18:36:35 +02:00
Christian Vidal Wolf 5112a27cda Feat: Implement dynamic internal column protection and Fullscreen mode.
- Internal control columns (Type, Checking, etc.) now persist across Excel shifts.
- Master data columns now prioritize Dropbox source of truth.
- Added Fullscreen mode to all main tabs (Pricing, Descriptions, Matrix).
- Improved Supabase data loading with pagination.
2026-04-23 18:27:40 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 e1cfaaedfa fix: paginate getAllSyncedRows to fetch all products beyond the 1000 row Supabase cap
With 1005+ products, the old query returned only the top 1000 by updated_at.
Items edited long ago (like 51016DE) were silently missing from syncedData,
so the merge never applied their saved edits. Now paginate by product_id
until we exhaust the table.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 16:56:54 +02:00
Christian Vidal Wolf be7009353a temp: diagnostic log v2 for 51016DE 2026-04-23 16:54:31 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 596b779e01 fix: guard against undefined headers in MissingDataView and MatrixView
Extended headers array can have empty strings that get passed as header
values; guard all .toLowerCase().includes() calls with (h || '').

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 16:51:16 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 0165793b3e fix: fill sparse holes in extendedHeaders to prevent undefined.includes() crash
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 16:47:39 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 96c56947c0 fix: extend headers with virtual columns so saved edits at indices >Excel length render
When the Excel shrinks (fewer columns than when an edit was saved), the
saved value exists in Supabase at e.g. index 103 but headers only covers
0-76, so the column never renders. Now we pad headers up to the hardcoded
virtual column indices (PRODUCT_TYPE=103, etc.) so the merge value is
visible in the UI.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 16:44:42 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 59e4bdeb92 fix: protect products with history from being overwritten by Dropbox sync
Products that have entries in products_history were edited at some point.
If their status was accidentally reset to 'excel', the sync would overwrite
their data. Now also check products_history to build the protected set.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 16:38:23 +02:00
Christian Vidal WolfandClaude Sonnet 4.6 80f86cb83e fix: remove temp diag log
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 16:35:20 +02:00