Skip to content

Installer UI redesign, smoother installation, and build improvements

Pre-release
Pre-release

Choose a tag to compare

@thomasthanos thomasthanos released this 19 Jul 14:04
· 371 commits to main since this release

What's new

  • Total UI redesign of the installer: new surface colors, refined typography (Comic Sans MS), redesigned rows/switches, and animated SVG done badge
  • The installer now has a launching view with spinner when the Launch button is pressed, and a launch-ready signal mechanism for smooth window closing
  • Added fade-out animation for the installer card before launching or closing
  • Improved copy progress reporting: byte-level progress, streaming for large files (STREAM_COPY_THRESHOLD), and accurate total bytes tracking
  • Dynamic window height adjustment based on the active view (config: 560px, progress: 400px, done: 430px, uninstall: 340px)
  • New large gradient percentage indicator and uppercase phase labels in progress display
  • Redesigned progress detail text format for the copying phase
  • Lowered minimum installer height to 240px, updated default window height
  • "Pin to taskbar" option removed from installer UI and related code
  • Start Menu shortcut now created under Programs; redundant Programs shortcut removed on uninstall
  • Uninstall registry URLInfoAbout now points to the public readme
  • Exposed clipboard copy via preload (installer.copyText)
  • Clickable path display for copy-for-location
  • Added auto-update feed configuration for reliable updates at downloads.thomast.uk
  • Added error tracking system with global error capture, error history logging, and a bug report generator
  • Added openTerminal helper to reveal and scroll newly opened terminals
  • Redesigned UI for activation, crack, Spotify, and debloat pages with hero sections, card layouts, and status indicators
  • Added i18n support with full internationalization for account modal, cleaner, debloat, and activation pages
  • Enhanced UI state management with busy flags, download timeouts, and improved error recovery
  • Added Maintenance UI with persistable layout and syncing
  • Added winget Upgrade Streaming UI with real-time output and cancellation
  • Added System Cleaner feature for cleaning temp files, Recycle Bin, Windows Update cache, thumbnails, error reports, and more
  • Added optional cloud-synced settings via Supabase – sign in with Google or Discord to sync preferences across devices
  • Migrated OAuth configuration to environment variables for better security
  • Redesigned account modal with new hero section, avatar with ring decoration, and provider icons
  • Added SVG icons replacing emoji placeholders across activation and maintenance pages
  • Redesigned BIOS restart dialog with better styling and typography
  • Enhanced update window with detailed progress metrics (speed, ETA, size)

Bug fixes

  • Fixed environment variable cleanup when spawning the installed app: PORTABLE_EXECUTABLE_* vars are now removed, env and cwd are passed, and the child process is detached
  • Installer window now hides properly before launching or quitting
  • Fixed potential crash during app quit by stopping cleaner admin session
  • Fixed app.asar locks and single-UAC cleaner issue
  • Fixed syntax error in download-manager.js
  • Fixed update install hang: prevented window-all-closed from quitting before install
  • Fixed activator cleanup bug calling non-existent API
  • Fixed environment variable cleanup when spawning the installed app
  • Fixed OAuth cleanup to prevent WebContents errors
  • Fixed potential crash during app quit by stopping cleaner admin session
  • Fixed Recycle Bin cleanup to use SID-specific paths ensuring proper permissions

Performance

  • Streaming large files during copy for more efficient progress reporting
  • Real-time streaming output for system maintenance tasks (SFC scan, DISM repair, DNS flush, IP renewal, Bluetooth fix, disk check, network reset, audio restart)
  • All repair and maintenance tasks are now cancellable via a cancel button
  • Spicetify installer now shows live output and can be cancelled
  • Chris Titus utility now streams output and supports cancellation
  • Persistent cleaner admin session for elevated tasks, avoiding repeated UAC prompts
  • Faster post-update relaunch
  • Race-free auto-updater with atomic update-info and hardened checks

Security

  • Removed postinstall step from release workflow
  • Consolidated build command to npm run build-all
  • Signed releases with Authenticode certificate (SmartScreen trusted publisher)
  • Better process isolation for cancellable tasks
  • Block Ctrl+Shift+C to prevent console access
  • Increased download timeouts and added retry logic for reliability

Tooling

  • CI/CD: replaced npm lint script with explicit npx eslint command
  • CI/CD: removed separate updater compilation step from release workflow
  • CI/CD: release workflow now builds both Setup.exe and Portable.exe artifacts
  • CI/CD: removed blockmap files from release artifacts
  • CI/CD: updated R2 uploads to use new Setup.exe and Portable.exe filenames
  • CI/CD: added workflow_dispatch trigger to release workflow for manual R2 sync
  • Updated download links in README to new CDN domain (downloads.thomast.uk)
  • Updated auto-updater URL to new CDN domain
  • Bumped version from 4.5.9 to 4.6.0
  • Patch script and tooling updates
  • Certificates are now imported from the cert store (subject name) for CI signing
  • Added Supabase Keep-Alive GitHub Action to prevent the free-tier database from sleeping
  • Harden Supabase keep-alive: daily pings with retries
  • Removed updater debug mode and dead code paths
  • Pruned unused IPC/preload API surface
  • Cleaned up dependencies and removed dead code
  • Updated maintainer website field in package.json
  • Removed deprecated system maintenance IPC handlers
  • Removed unused exports from multiple modules for code cleanliness

Core Update System

  • Replaced external updater handoff with in-app update flow – Updates now download, verify, and extract within the app itself, eliminating the need to launch a separate updater executable.
  • Added download progress reporting – Real-time progress (percent, speed, ETA, bytes transferred) is now shown in both the update window and main window.
  • Added cancellation support – Users can cancel an ongoing update at any point during download or extraction.
  • Added checksum verification with retries – Downloads are verified against SHA-512 checksums, with automatic retries on failure (up to 3 attempts with increasing delays).
  • Improved download reliability – Handles HTTP redirects, connection timeouts (60s), and incomplete downloads gracefully.
  • Streamlined staging and extraction – Uses 7-Zip for extraction with sanity checks to ensure the unpacked app is valid.
  • Preserved installation assets – Uninstaller and app-update config are copied from the current install to the staging directory.
  • Updated swapper arguments – The external swapper now receives a staging directory path and version instead of URL and checksum (download & verify handled in-app).
  • Added neutral updater directory helper – Standardized path resolution for download and temp files under %LOCALAPPDATA%\ThomasThanos\updater.
  • Removed isRecentUpdateFailure() logic – The app no longer skips updates based on a failure marker file; all errors are now handled with retries and proper cancellation.
  • Added update state tracking – updateInProgress and updateCancelled flags prevent concurrent updates and enable clean cancellation.

Technical

  • Added new dependencies – crypto, http-utils, and archive-utils modules are now used in the external updater.
  • Improved debug logging – Better error and warning messages throughout the update flow.
  • Windows-specific improvements – windowsHide: true for spawned processes avoids flashing console windows.