6 Commits

Author SHA1 Message Date
Devon Bontrager fc93c2ee57 Bump version to 1.3.0 and exclude tauri/ from Electron build
The Electron build was accidentally bundling the entire tauri/src-tauri/target
Rust build directory into app.asar (1.2GB!), inflating the installer to 304MB.
Added a files exclusion so Electron and Tauri builds stay independent.
v1.3.0
2026-06-08 11:46:58 -04:00
Devon Bontrager e5ed1d3c9f Add lightweight Tauri shell, vendor offline libs, fix bugs and race conditions
- Add tauri/ subfolder: a Tauri-based desktop shell that loads the same
  index.html as the Electron app, producing a ~2MB installer (vs ~71MB for
  Electron) by using the OS WebView2 instead of bundled Chromium. Includes
  sync-frontend.js to keep tauri/dist/ in sync with the canonical index.html
  and vendor/ at build time (no UI duplication/drift).
- Vendor lucide, jsPDF, and jspdf-autotable locally under vendor/ instead of
  loading from CDNs, so the app works fully offline in both shells.
- Fix server.js path traversal vulnerability (sanitize/contain request paths).
- Fix exportPDF() using stale/edited piece data that could produce
  Infinity/NaN in generated PDFs; add a recalculate guard.
- Fix race conditions: overlapping copy/save-defaults button revert timers,
  and FileReader callbacks for logo/CSV import that could apply out of order.
- Minor cleanups: explicit array index parsing, hasResult() helper, consistent
  event binding for NMFC search results, cached DOM lookups.
- Document the dual-shell architecture and vendoring conventions in CLAUDE.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 11:19:48 -04:00
Devon Bontrager 3c3ef02f20 Bump version to 1.2.0 in package.json
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 11:08:52 -04:00
Devon Bontrager fc88d7ab4b v1.2.0 — Multi-piece, NMFC lookup, PDF export, defaults, CSV history, density gauge + bug fixes
Features added:
- Multi-piece support: add unlimited pieces each with L x W x H x Weight, combined class from total density
- NMFC commodity lookup: 55 bundled items, live search by name or code
- PDF export: branded PDF with piece table, Cu Ft, PCF, freight class via jsPDF
- Default piece preset: save a standard pallet size in Settings > Defaults
- Export/import history as CSV
- Density gauge: color gradient bar with live marker in results panel
- Unit toggle: in/cm and lbs/kg with live conversion across all pieces
- Copy to clipboard, timestamps in history, Enter key shortcut, input validation
- Charcoal dark mode

Bug fixes:
- PDF and Copy now blocked before a calculation is performed
- History restore no longer misconverts values when units differ from stored unit
- History display shows correct unit labels (cm/kg) instead of hardcoded in/lbs
- PDF logo format auto-detected from data URL (fixes silent failure for JPG uploads)
- Removed dead parsedPieces variable; forEach with early return prevents NaN accumulation
- Removed no-op placeholder update in applyUnitToggleUI
- CSV export URL revocation deferred to avoid race condition

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.2.0
2026-05-30 10:54:52 -04:00
Devon Bontrager 25973cabbc Add Lucide icons, web server, and settings page cleanup
- Replace emoji icons with Lucide SVG icons (moon, sun, settings, x, upload, rotate-ccw, trash-2, save)
- Add Node.js dev server on port 3010 (server.js + npm run serve)
- Redesign settings modal: tabbed layout, styled form fields, Save/Cancel footer
- Fix dark mode: btn-danger hover now uses rgba instead of hardcoded light pink
- Fix stale pendingBranding: history item click now calls revertAndClose()
- Collapse branding header when no name/logo is set
- Move density row inline style to .density-info CSS class
- Normalise all innerText to textContent

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.1.0
2026-05-27 15:57:19 -04:00
Devon Bontrager 34cefb0087 Initial commit — FreightCalculatorPro Electron app
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
v1.0.0
2026-05-27 13:36:45 -04:00