Skip to content

turn overlay server into a native Electron desktop app - #6

Open
Arkyan wants to merge 43 commits into
yazouv:mainfrom
Arkyan:main
Open

turn overlay server into a native Electron desktop app#6
Arkyan wants to merge 43 commits into
yazouv:mainfrom
Arkyan:main

Conversation

@Arkyan

@Arkyan Arkyan commented Jul 17, 2026

Copy link
Copy Markdown
Contributor
  • Migrate from a plain Node/Express server to a packaged Electron desktop app (frameless window, custom titlebar, system tray)
  • Route all external links (Twitch OAuth, ngrok docs) to the system browser instead of the in-app window
  • Redesign the admin UI and on-stream alerts, replacing the previous ad-hoc styling
  • Fix stale EventSub subscriptions not refreshing when the ngrok URL changes on restart
  • Add auto-update support via electron-updater + GitHub Releases
  • Add log viewer (/logs) and event simulation tools (/tests) for easier debugging

Arkyan and others added 30 commits July 17, 2026 03:06
…b management

- Introduced a new route for testing Twitch events with fake data to simulate alerts and overlays.
- Enhanced EventSubManager to handle existing subscriptions more effectively, including deletion of outdated subscriptions.
- Implemented a logging buffer to capture console logs for real-time monitoring via WebSocket.
- Updated NgrokManager to handle connection retries for establishing tunnels.
- Improved StreamStatsManager to generate a more user-friendly HTML page for stream statistics.
- Refactored TruckyApi to utilize installed Chrome/Edge browsers instead of bundled Chromium.
- Added user token validation in TwitchAuth to ensure proper scopes are present.
- Adjusted WebhookHandler to use the new configuration structure.
Merge pull request #1 from Arkyan/main
…ructions, and feature list; enhance clarity and organization for better user experience.
- Introduced profile management functionality allowing users to create, rename, delete, and activate profiles.
- Implemented audio settings for alert types, enabling users to upload custom sounds for alerts.
- Added a new configuration file for theme presets to provide ready-to-use color themes.
- Enhanced settings page to support profile selection and display relevant settings for the selected profile.
- Updated the configuration system to handle profiles and their associated display and audio settings.
- Added API routes for managing profiles and audio uploads, including import/export functionality for profiles.
- Introduced sound volume control in settings, allowing users to adjust the volume of alert sounds.
Adds POST /api/panels/:panel/show and a 'show-panel' WebSocket broadcast so /tests and the Stream Deck plugin can trigger the left panel or bottom bar immediately, bypassing the auto-cycle timer. Forced triggers show even when the panel is disabled in settings; the automatic cycle still respects that setting.
Twitch doesn't push viewer count via EventSub like it does for follows/subs, so TwitchAuth.getViewerCount() polls the Helix Get Streams endpoint directly. TwitchOverlayServer polls every 60s while running and feeds the result into StreamStatsManager, alongside the existing heartbeat.
New subproject at streamdeck-plugin/ (separate toolchain: Node 24+, TypeScript, rollup, @elgato/streamdeck SDK) with four actions calling ElectrumOverlay's HTTP API: trigger a test alert, activate a profile (with live active/inactive state via polling), show a panel on demand, and display a live stream stat. Host/port are configurable per action for non-default setups.
Adds a Stream Deck plugin section to both READMEs (installation, actions, dev pointer), plus npm run package:streamdeck to build the .streamDeckPlugin and a scripts/upload-streamdeck-asset.js step chained into publish:win so it gets attached to the same GitHub release as the app installer.
- Added checkbox row alignment for better layout in forms.
- Refactored settings navigation to use a tabbed interface for themes and alerts.
- Improved responsiveness of settings layout for mobile devices.
- Introduced color grid for color pickers to allow multiple items per row.
- Updated theme and alert configurations to use gradient colors instead of solid.
- Enhanced JavaScript to manage tab navigation and section visibility in settings.
- Added timer color configuration to the left panel settings.
- Updated default configuration to include new gradient properties for alerts.
- Improved overall styling consistency across various CSS files.
- Implemented a new scene editor allowing users to position and customize overlay elements (chat, alerts, titles) directly on a preview.
- Added API endpoints for managing element layout, visibility, and custom text.
- Updated HTML templates for pause and starting screens to support scene editing features.
- Introduced new configuration options for layout and text overrides in user profiles.
- Enhanced server routes to handle scene editor functionalities.
Arkyan added 13 commits July 22, 2026 01:06
…tégration dans l'overlay, fix spotify pour disparaitre si rien n'est joué, fix emojis custom dans le chat
- Implemented inputCapture.js to handle keyboard and mouse events, filtering allowed keys and buttons.
- Integrated input capture start/stop functionality in main.js, allowing toggling via config.
- Added UI elements in overlay-common.css and overlay-common.js for displaying pressed keys and mouse buttons.
- Updated scene editor and integrations routes to support new input display settings.
- Introduced configuration options for input display in defaults.json and store.js.
- Enhanced scene editor with options for customizing key display settings.
…tion, ajustements de style pour maintenir une taille visuelle constante
…lay, incluant le chat et le bandeau défilant, avec des endpoints API pour la mise à jour des styles
…ion des messages, avec des ajustements dans overlay-common.js et scene-editor-bridge.js
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant