You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
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.