agent-orchestrator/ui-electrobun
Hibryda e9fcd8401e feat(electrobun): native GTK resize via button-press-event signal (tao pattern)
All previous approaches failed because they initiated resize from JS
(too late, wrong timestamp, WebKit steals grab). The correct approach
(proven by Tauri/tao) is to connect button-press-event DIRECTLY on the
GtkWindow at the GTK level, BEFORE WebKitGTK processes events.

New: gtk-resize.ts
- JSCallback for button-press-event + motion-notify-event
- Hit-test in 8px border zone (same as tao's 5*scale_factor)
- begin_resize_drag with REAL event timestamp (not GDK_CURRENT_TIME)
- Returns TRUE to STOP propagation (WebKit never sees the press)
- Cursor updates on motion-notify in border zone

Removed: all JS resize handles (divs, mousemove, mouseup, RPC calls)
2026-03-25 15:25:25 +01:00
..
locales feat(electrobun): ProjectWizard — 3-step project creation with 5 source types 2026-03-22 11:17:05 +01:00
scripts feat(electrobun): i18n system — @formatjs/intl + Svelte 5 runes + 3 locales 2026-03-22 10:28:13 +01:00
src feat(electrobun): native GTK resize via button-press-event signal (tao pattern) 2026-03-25 15:25:25 +01:00
tests feat(electrobun): settings overhaul — fonts, shells, providers, retention, chords 2026-03-25 01:42:34 +01:00
bun.lock feat(electrobun): add xterm.js terminal with image addon (Sixel/iTerm2) 2026-03-20 01:40:24 +01:00
CONTRIBUTING_I18N.md feat(electrobun): i18n system — @formatjs/intl + Svelte 5 runes + 3 locales 2026-03-22 10:28:13 +01:00
electrobun.config.ts perf(electrobun): fix CEF high CPU — disable GPU flags + remove CSS animations 2026-03-22 09:35:24 +01:00
llms.txt feat: Electrobun Svelte+WGPU prototype (Dawn GPU confirmed on Linux) 2026-03-20 01:25:41 +01:00
package-lock.json feat(electrobun): upgrade to xterm 6.0.0, disable incompatible Canvas/Image addons (DOM renderer) 2026-03-23 16:22:30 +01:00
package.json feat(electrobun): upgrade to xterm 6.0.0, disable incompatible Canvas/Image addons (DOM renderer) 2026-03-23 16:22:30 +01:00
README.md feat: Electrobun Svelte+WGPU prototype (Dawn GPU confirmed on Linux) 2026-03-20 01:25:41 +01:00
svelte.config.js feat: Electrobun Svelte+WGPU prototype (Dawn GPU confirmed on Linux) 2026-03-20 01:25:41 +01:00
tsconfig.json feat(electrobun): wire EVERYTHING — all settings persist, theme editor, marketplace 2026-03-20 05:45:10 +01:00
vite.config.ts feat: Electrobun Svelte+WGPU prototype (Dawn GPU confirmed on Linux) 2026-03-20 01:25:41 +01:00

Svelte Electrobun Template

A fast Electrobun desktop app template with Svelte 5 and Vite for hot module replacement (HMR).

Getting Started

# Install dependencies
bun install

# Development without HMR (uses bundled assets)
bun run dev

# Development with HMR (recommended)
bun run dev:hmr

# Build for production
bun run build

# Build for production release
bun run build:prod

How HMR Works

When you run bun run dev:hmr:

  1. Vite dev server starts on http://localhost:5173 with HMR enabled
  2. Electrobun starts and detects the running Vite server
  3. The app loads from the Vite dev server instead of bundled assets
  4. Changes to Svelte components update instantly without full page reload

When you run bun run dev (without HMR):

  1. Electrobun starts and loads from views://mainview/index.html
  2. You need to rebuild (bun run build) to see changes

Project Structure

├── src/
│   ├── bun/
│   │   └── index.ts        # Main process (Electrobun/Bun)
│   └── mainview/
│       ├── App.svelte      # Svelte app component
│       ├── main.ts         # Svelte entry point
│       ├── index.html      # HTML template
│       └── app.css         # Global styles
├── electrobun.config.ts    # Electrobun configuration
├── vite.config.ts          # Vite configuration
├── svelte.config.js        # Svelte configuration
└── package.json

Svelte 5 Features

This template uses Svelte 5 with the new runes syntax:

  • $state() - reactive state
  • $derived() - computed values
  • $effect() - side effects

Customizing

  • Svelte components: Edit files in src/mainview/
  • Global styles: Edit src/mainview/app.css
  • Vite settings: Edit vite.config.ts
  • Window settings: Edit src/bun/index.ts
  • App metadata: Edit electrobun.config.ts