Skip to content

Rune Editor v1.3.0

Choose a tag to compare

@satadeep3927 satadeep3927 released this 08 Jun 14:50
· 24 commits to master since this release
e6b4aed

🔍 Editor & Find/Replace Architecture

We completely overhauled the CodeMirror search/replace UI to provide a seamless, bespoke SolidJS experience that matches Rune's rich aesthetics.

  • Custom Find/Replace HUD: Built a completely custom, floating SolidJS component (FindReplace.tsx) that docks perfectly below the titlebar.
  • Native Search Override: Disabled CodeMirror's default DOM search panel injection (.cm-search { display: none !important }) while still hooking into its native high-performance Regex/Match engines.
  • Real-Time Match Indexing: Intercepted CodeMirror's update listener to perform lightweight cursor iterations, broadcasting real-time match indices (e.g., 5 of 12) natively to our SolidJS UI via rune-search-results.
  • Selected Text Pre-filling: Dispatching rune-search-set-query on Find invocation to automatically prepopulate the search box with the currently highlighted editor selection.
  • Multi-Cursor Matching: Implemented selectMatches into the keymap, allowing users to hit Ctrl+Shift+L to drop multiple cursors on all active regex/text matches instantly.
  • Scroll State Preservation: Engineered a scrollStateCache tracking scrollTop and scrollLeft to guarantee seamless context restoration when jumping between massive files and editor tabs.

🖥️ Terminal Panel Reactivity

  • Workspace Isolation: Refactored useTerminalPanel.ts to implement a reactive createEffect hooking directly into the rootPath. Terminals are now strictly isolated per workspace—switching workspaces instantly executes a kill_terminal backend invocation and spins up a fresh PTY instance in the new directory.
  • Cross-Window ID Collision: Replaced sequential custom IDs with crypto.randomUUID() to completely eliminate terminal state pollution between deeply nested window instances.

⚙️ Backend & Build Systems

  • Tauri Auto-Updater Configured: Hooked the @tauri-apps/plugin-updater directly into our front-end. Resolved critical v2 capability locks by explicitly whitelisting "updater:default" and "process:default" in default.json.
  • Updater Generation Script: Wrote an automated Node utility (generate-latest-json.js) to scrape .sig signatures from both Windows (nsis) and Linux (appimage) output bundles, formatting them into the latest.json standard required by Tauri's secure Github-release update pipeline.
  • Docker Artifact Extraction: Appended a lightweight Alpine container task to our build-linux.ps1 workflow, successfully mounting the locked Docker compilation volumes and ripping the final AppImage, DEB, and SIG artifacts back into our local target/release/bundle/linux/ filesystem for publishing.

🐛 Bug Fixes

  • Async Cleanup Panic: Fixed a critical SolidJS hydration warning in useIndexerProgress.ts where onCleanup was being orphaned outside the render tree due to await blocks. Migrated to asynchronous promise chains (.then()) to lock cleanup registration into the synchronous initialization phase.
  • Reactivity Escapes: Patched missing variables (matchCount) from hook exports, and fixed scoping issues with findReplaceShortcutHandler failing to unregister during CodeMirror destruction.
  • Favicon Ghosting: Scrubbed legacy favicon.ico calls preventing 404 console flooding during active development.