Conversation
…le d3 deps - Update flamegraph.js to use d3-flame-graph v4 API: - Load via script tag instead of require() (v4 uses ESM) - Use new tooltip API: flamegraph.tooltip.defaultFlamegraphTooltip() - Update node data access for hierarchy nodes (node.data.name) - Fix CSS path: d3.flameGraph.css -> d3-flamegraph.css - Revert d3-scale to ^1.0.6 (v4 is ESM-only, breaks require()) - Revert d3-tip to ^0.7.1 for compatibility
The menu was not appearing because Menu API was being accessed from the renderer process, which is not allowed in modern Electron versions. - Move menu creation to main.js (main process) - Add IPC communication for color changes between main and renderer - Update colors.js to listen for color-change events via ipcRenderer - Return mainWindow from start.js for IPC targeting
The app wasn't exiting because the hidden scanner window kept it alive. Now we explicitly call app.quit() when the main window closes.
The Open button wasn't working because start.js uses main process APIs (BrowserWindow, screen) that aren't available in the renderer since electron.remote was deprecated. Now we send an IPC message to the main process to create new windows.
- data.js: Declare partition variable so sunburst.js can assign to it - flamegraph.js: Use fallback dimensions, preprocess data with value computation, filter small nodes to prevent memory issues, disable redundant redraws - listview.js: Use nullish coalescing to fallback through sum/value/size - router.js: Initialize dimensions at startup - utils.js: Handle undefined/NaN in format() function Fixes #47 (flamegraph hanging) and NaN TB display issue
Wrap require('systeminformation') in try-catch to prevent TDZ error
if module fails to load. Also check if module is available before
using it in mem() function.
Comprehensive documentation of Space Radar architecture including: - Process architecture (main, renderer, scanner) - IPC communication flow - Data flow from scan to visualization - Module dependencies - File organization - Data structures
This was referenced Feb 4, 2026
Closed
- Fix Locate Directory button using path.sep instead of undefined PATH_DELIMITER - Add detailed scan statistics in footer: files, dirs, size, items/sec, MB/sec - Track separate file and directory counts during scanning - Add seaborn color palettes (deep, muted, pastel, bright, dark, colorblind) - Set pastel palette with 'By Root Directory' mode as new defaults - Add 'Random/Confetti' color mode for visual effect - Add dark mode support with CSS theme and menu toggle - Reorganize Color Options menu with submenus for palettes and modes
- Skip special files that can cause hangs (sockets, FIFOs, block/char devices) - Track and display error count for permission denied and other failures - Add exclusion paths for problematic macOS system directories - Show errors in both legend overlay and footer status bar - Better error logging with error codes for debugging - Exclude /dev, /.Spotlight-V100, /System/Volumes/*, Time Machine paths
- Add disk space display functionality using systeminformation - Add disk_space_info element to footer and update display logic - Address code review feedback: improve error handling and cross-platform path matching - Add null check for usePercent and CSS for disk_space_info element - Fix mount point matching to handle nested mounts correctly Co-authored-by: zz85 <314997+zz85@users.noreply.github.com>
- Remove duplicate si declaration in radar.js (already declared in mem.js) - Fix Menu/MenuItem access for newer Electron versions using remote - Add null guards for contextMenu and openMenu - Add null guard for si in getDiskSpaceInfo to prevent script execution halt
- Remove .travis.yml - Add GitHub Actions workflow for building Electron app - Build for macOS (x64, arm64), Linux, and Windows - Auto-release on version tags (v*) - Upload build artifacts for each platform
- Fix 'main' entry in package.json to point to app/main.js - Downgrade Electron from 40.1.0 to 35.7.5 for better SVG performance - Add dist/ to .gitignore
- Add WeakMap cache for ancestor lookups in mouseover (O(1) vs O(depth)) - Wrap DOM updates in requestAnimationFrame to batch changes - Debounce hover events with 16ms delay (~1 frame) - Reduce transition time from 750ms to 300ms - Optimize ListView to toggle CSS classes instead of full redraw - Cache colorByParent results to avoid repeated LAB conversions
- Simplify build workflow to use electron-builder outputs - Update artifact paths to use dist/ directory - Add GH_TOKEN for electron-builder - Bump app version to 6.0.0 and add author field
Replace SVG-based sunburst with Canvas 2D rendering for dramatically improved performance. This eliminates DOM overhead that caused ~657ms presentation delay on interactions. Key changes: - New canvas element (#sunburst-canvas) for rendering - Direct arc drawing with ctx.arc() instead of SVG path elements - Polar coordinate hit-testing for mouse interactions - RAF-based animation loop with easeOutCubic transitions - Maintain same visual appearance and interaction model Expected performance improvement: - INP: 992ms → <150ms - Presentation delay: 657ms → <20ms
- Fix d3-shape API usage in sunburst3d.js (create arc generator per segment) - Add null checks for canvas3d element - Add toggle3D() function to enable/disable 3D mode at runtime - Add '3D Mode (Experimental)' checkbox in Color Options menu - Add IPC handler for 3dMode toggle in colors.js - Properly manage animation loop lifecycle
- Only show 'Kernel / others' when diff is positive - Filter out zero/negative memory category values - Rename 'Kernel / others?' to 'Kernel / others'
Canvas-based sunburst now performs well with latest Electron.
Use native macOS commands for more accurate memory data: - vm_stat for system memory statistics - ps -cx -opid,ppid,rss,comm for process memory Falls back to systeminformation library on Windows/Linux.
systeminformation is used by radar.js for disk space info (si.fsSize), so it needs to be loaded on macOS too. Memory scanning on macOS still uses native vm_stat/ps commands for accuracy.
- Store disk info when scan starts for use in visualization - Add 'Free Space' node to root level showing available disk space - Display free space as light gray segment in sunburst - Fix macOS APFS disk detection to use /System/Volumes/Data mount - Prevent clicking/zooming into Free Space node
Use samuelmeuli/action-electron-builder@v1.6.0 for simpler CI/CD: - Automatically installs dependencies - Builds for current platform - Auto-releases on version tags (v*)
- Install electron-updater package - Check for updates on app ready - Add logging for update events (checking, available, downloading, etc.) - Auto-notifies users when updates are available
Add 'args' parameter to specify platform-specific build flags: - macOS: --mac - Linux: --linux - Windows: --win Also add mac_certs secrets for optional code signing.
The 'build' script now runs 'electron-builder' without platform flags, allowing the CI action's 'args' parameter to specify the platform. Renamed old 'build' to 'build:all' for local multi-platform builds.
- Add cancel scan feature that stops traversal and returns partial results - Add pause/resume scan feature with async wait mechanism - Show pause/cancel buttons in scanning UI (legend and footer) - Update status display to indicate cancelled/paused state - IPC communication: renderer -> main -> scanner window -> du.js Addresses GitHub issue #53
Prevents prerelease suffix from being stripped, fixes upload conflicts
- Increase job timeout to 30 minutes - Set fail-fast: false so one platform failure doesn't cancel others - Add --publish always to args to avoid implicit publish behavior - Add generateUpdatesFilesForAllChannels for prerelease support - Bump to v6.0.0-alpha.4
When packaged as asar, __dirname is read-only. Use: - App data directory for lastload.json (persistent cache) - Temp directory for fs-ipc.json (temporary IPC file) Fixes ENOENT error when running from /Applications
Owner
Author
|
builds pass, merging! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Major update getting SpaceRadar to work with modern Electron and addressing long-standing issues.
Electron & Platform
Performance
Scanning Improvements
Memory Visualization
UI/UX
Other