Full deployment history for this project.
chore: merge open PRs into main
chore: merge open PRs into main
Merge PR #74: 🎨 Palette: add single-file download button and improve preview empty state
🎨 Palette: add single-file download button to file preview Add a single-file download button in the Preview pane header to allow instant downloading of the currently inspected archive file with accessible ARIA labeling and keyboard focus indicators.
⚡ Bolt: pre-sort TreeView hierarchy in useMemo Move child node conversion and sorting in TreeView into the build phase inside useMemo. This avoids recursive Map-to-array conversions and O(N log N) sorting calculations during component render passes.
🎨 Palette: add tri-state indeterminate selection to FileList - Implement native `indeterminate` property setting and `aria-checked="mixed"` on the "Select all" checkbox when a subset of items is selected. - Remove unused `isWorking` state variable in `Repack` component and update button tooltips/loading status to use `isProcessing`.
⚡ Bolt: pre-sort TreeView hierarchy in useMemo to eliminate render-pass sorting overhead Pre-convert Map structures and pre-sort child nodes inside useMemo when building the tree structure in TreeView, preventing intermediate array allocations and localeCompare sorting on every component render pass.
🎨 Palette: Make Security tab threat rows interactive and keyboard navigable Makes file threat rows in the Security tab interactive buttons with role="button", tabIndex={0}, aria-label, focus visible indicators, and keyboard Enter/Space event handlers. When clicked or activated via keyboard, switches directly to the preview tab for the threatened file.
⚡ Bolt: pre-sort TreeView nodes in useMemo to eliminate render-time array allocations
⚡ Bolt: pre-sort TreeView hierarchy in useMemo Pre-sort child nodes and convert Map structures to arrays inside `useMemo` in `TreeView` to avoid recursive array allocations and re-sorting during render passes.
⚡ Bolt: pre-sort TreeView nodes in useMemo Pre-converts Map children to pre-sorted arrays during tree building in useMemo, eliminating repeated O(N log N) sorting and intermediate array allocations on every TreeView render pass.
🎨 Palette: Add copy path button to file preview header
⚡ Bolt: pre-sort TreeView nodes in useMemo Pre-sort and convert TreeView child nodes inside useMemo when building the tree structure from archive entries. This eliminates redundant array allocations (`[...node.children.values()]`) and sorting (`.sort(...)`) on every render pass.
🎨 Palette: Add helpful empty state to file list search filter
🎨 Palette: Add empty state with clear filter action to archive file list
⚡ Bolt: pre-sort TreeView nodes in useMemo Pre-converts Map structures and pre-sorts child nodes inside useMemo when constructing the tree hierarchy for TreeView, preventing repeated Array conversions and localeCompare sorting operations during component re-renders.
⚡ Bolt: Pre-sort archive TreeView hierarchy inside useMemo
chore: consolidate all open PRs into one merge (#67) * ⚡ Bolt: optimize allSelected calculation in FileList The entries.every(...) calculation is O(N) where N is the number of files in the archive. This was previously run on every single render of FileList, even when unrelated states (such as current highlighted entry or local visibleCount pagination limits) changed. Memoizing it with React.useMemo prevents unnecessary CPU work and avoids blocking the main thread when rendering large archives. * 🎨 Palette: Improve repack and extraction UX with deferred execution loading spinners and focus outlines * ⚡ Bolt: Optimize FileList allSelected calculation with useMemo Memoize the allSelected check in FileList component to prevent O(N) array search on every render/keystroke. This significantly improves UI responsiveness and prevents typing lag on large archives with many entries. * ⚡ Bolt: memoize allSelected check in FileList with O(1) early exit * 🎨 Palette: Make duplicate entries interactive and keyboard
chore: auto-close PR #58 via merge path
chore: auto-close PR #57 via merge path
chore: auto-close PR #54 via merge path
chore: auto-close PR #52 via merge path
chore: stack PR #58
chore: stack PR #57
chore: stack PR #54
fix: complete Phase 1 platform contract
Merge pull request #51 from mbarbine/consolidate/platphorm-zip-20260811-cont3 consolidate 38 PRs into one commit
Merge pull request #11 from mbarbine/jules-8552149104581407970-697eeee1 🎨 Palette: Improve list filter responsiveness and repack feedback
Merge pull request #12 from mbarbine/jules-11493722199158128623-3234d87a ⚡ Bolt: fix filter input debouncing to eliminate typing lag
fix: trace meaningful zip actions
feat: expose bounded ZIP workflow capabilities
Merge remote-tracking branch 'origin/main'
Merge pull request #10 from mbarbine/bolt-sidebar-list-optimization-2872760667573518331 ⚡ Bolt: Optimize sidebar file-list rendering and debounced filtering
Merge branch 'main' into bolt-sidebar-list-optimization-2872760667573518331
Merge pull request #9 from mbarbine/palette-file-filter-shortcut-8923976461309903034 🎨 Palette: Add file filter shortcut and clear action
Merge branch 'main' into palette-file-filter-shortcut-8923976461309903034
Merge pull request #7 from mbarbine/bolt-optimize-filter-matching-1173091683448966634 ⚡ Bolt: optimize filter matching and compile filters once
Merge branch 'main' into bolt-optimize-filter-matching-1173091683448966634
Merge pull request #8 from mbarbine/palette-accessibility-ux-improvement-11485648427977884603 🎨 Palette: [UX improvement] Enhance accessibility and keyboard navigation
Merge branch 'main' into palette-accessibility-ux-improvement-11485648427977884603
Merge pull request #5 from mbarbine/bolt/memoize-file-list-item-12685327508730820268 ⚡ Bolt: [performance improvement]
Merge pull request #6 from mbarbine/jules-13455249879830597223-559141d2 🎨 Palette: improve dropzone UX, treeview and tab a11y
feat: standardize MCP and route compliance
chore: reconcile and restore pnpm build
chore: OSS compliance files and updates
Merge pull request #4 from mbarbine/bolt-filelist-memoization-10365803554981285847 ⚡ Bolt: memoize FileList items for large archives
Merge branch 'main' into bolt-filelist-memoization-10365803554981285847