github bornova/numara-calculator v7.2.0

latest release: v7.2.1
6 hours ago

New Features & OS Integration

Native File Association for .num Files

  • Double-Click to Open: You can now associate and double-click .num files on your computer to open them directly in Numara.
  • Installer Registry: The installer now registers the .num file extension as a custom "Numara Document" calculation workspace on Windows and macOS.
  • Startup IPC Handshake: Added a synchronization bridge (rendererReady) between the Electron main process and the UI to safely load document contents on double-click launch.

Performance Optimizations

Main UI Bundle Shrunk by 500 KB

  • Decoupled the UI formatting pipelines and editor hooks from the calculation engines.
  • Symbolic libraries (nerdamer-prime and @formulajs/formulajs) are now completely stripped from the main UI script (numara.js), reducing the bundle size by 500 KB (from 2.1 MB down to 1.6 MB) and dramatically reducing app launch times.
  • Third-party engines are now loaded strictly inside the background Web Worker (calc.worker.js).

Keypress Recalculation Time Decreased to <0.5ms

  • Implemented a caching system that deep-compares exchange rates and currency lists inside the math context.
  • Bypasses regular expression re-compilation and mathjs unit re-creation on every keypress, dropping calculation overhead from ~15ms to <0.5ms.

Security Hardening

  • Enforced Sandbox Security: Configured explicit contextIsolation: true and nodeIntegration: false in Electron's browser preferences to strictly isolate renderer windows from system-level scripts.

Synchronization & Workspace Enhancements

  • Fixed Page Sync Data Loss: Swapped the shared sync timer for a page-keyed Map of timers. Typing and switching across multiple pages quickly will no longer cancel or overwrite sync folder saves.
  • Sync Filename Collision Protection: Validated file creation/renaming checks against sanitized safe filenames (e.g. "Math / Physics" vs "Math \ Physics" both saving as "Math - Physics.num") to prevent files from overwriting each other inside the sync directory.
  • Auto-Termination for Frozen Workers: The calculation runner automatically terminates and restarts the background Web Worker if a calculation hangs or loops for over 1 second, restoring responsiveness immediately.

Bug Fixes & Refactoring

  • Startup Dialog Crashing: Guarded the tray confirmation dialog in the before-quit handler with app.isReady(). Exiting secondary processes during single-instance checks will no longer throw unhandled ready dialog exceptions.
  • Output Context Menu Indexing: Right-clicking values or links inside the outputs panel now maps precisely to the targeted line index using .closest('[data-index]') selectors.
  • Empty Space Context Menu: Right-clicking empty areas in the output panel now falls back to targeting the last document line instead of failing silently.
  • Copy Handlers Parameter Shifting: Aligned copy callback wrappers to remove the unused event parameter, preventing argument-shifting bugs that caused copy actions to fail.
  • URL & Color Support inside Strings: Replaced basic comment stripping with a quote-aware string parser. Strings can now contain URLs (//) and hex color hashes (#) without triggering evaluation errors.
  • Function Plotting Crash: Evaluated outputs are now cast to standard float Numbers before calling .toFixed() to prevent crashes when hovering over plots while in Fraction/BigNumber modes.
  • Electron Detection: Standardized Electron detection on the context-bridged global window.numara API instead of the user agent string (which is overridden in development), restoring menu configurations.

Don't miss a new numara-calculator release

NewReleases is sending notifications on new releases.