What was fixed
- Duplicate / conflicting logic – Removed the huge inline
<script> from index.html. All UI logic lives in app.js.
- Compress / Extract were stubs – They only showed toasts. Now they talk to the main process via
electronAPI.compressLft / extractLft.
- Broken IPC – Preload exposed
closeWindow but main listened for window:close. Fixed channel names and API surface.
- Files never read as binary – Compress needs real bytes. Files are now read with
FileReader.readAsArrayBuffer and stored as content.
- Fake JSON “archives” – Main process builds real ZIP archives with JSZip and saves them as
.lft. Extract unpacks ZIP to a chosen folder.
- Inspector – Double-click or context-menu “Inspect” on a
.lft lists files inside the archive (via lft:inspect).
- Window controls – Minimize / close wired to Electron.
- CSS / HTML cleanup – Single coherent stylesheet, proper empty-state class, inspector close button, no conflicting inline styles.
virustotal
https://www.virustotal.com/gui/file/c882a449448dc232b58b09cc6f87d8d70ade0ce3b36984a8341de63136869eec?nocache=1