ToS-compliant multi-client launcher for Flyff Universe. Manage many accounts in side-by-side panes with per-account cookie isolation and global hotkey focus switching — no input injection, no memory reads.
- Groups — organize sessions into groups; each group launches in its own window so you can run multiple grid layouts simultaneously.
- Per-session storage — every account gets its own persistent Chromium partition (
persist:<sessionId>); cookies and localStorage stay isolated. - CSS Grid layouts — sessions tile into an N-column × M-row grid that auto-fits the container's aspect ratio. Drag dividers live to adjust column/row ratios, then lock the topology.
- Drag-and-swap panes — enable "Edit Position" on any session badge to drag it onto another grid cell and swap positions without reloading either webview.
- Drag-and-drop reorder (dashboard) — drag session cards within or across groups; sidebar items reorder in the flat list. Drop position (before/after) follows cursor side relative to the target's midpoint.
- Reorder + rename — move sessions within the workspace and rename without restarting them. Reordering updates grid placement only — no webview reload.
- Focus indicator — accent-colored session badge highlights the focused pane.
- Global hotkeys — per-session accelerators focus an account from anywhere.
Tabcycles focus inside the active group window.F11toggles fullscreen;F10zooms the focused pane (hides all others) and restores on a second press. - Hover focus (optional) — automatically focus a pane when the mouse hovers over it for a configurable delay (default 30ms).
- Manage Panel from any pane — each session badge has a dropdown to reopen the dashboard. If the manager window was closed, it is recreated; otherwise restored and focused.
- Manager stays in front on launch — launching a group spawns the container window without stealing focus from the dashboard, so you can keep managing while the panes load.
Each group opens one Electron BrowserWindow. Inside that window, sessions render as <webview> panes laid out via CSS Grid (grid-template-columns/rows driven by colRatios/rowRatios). A cellMap records which session occupies each grid cell. Reconcile is incremental — surviving webviews are never detached, so switching layouts or reordering does not reload any page.
The main process owns all OS-level state (HWNDs, hotkeys, workspace persistence) and exposes a small IPC surface to the dashboard. The dashboard is a single window with one section per group: launch/close at the group level, plus per-session controls.
- Go to the Releases page.
- Download
Phayura-Setup-*.exe. - Run the installer — no admin rights required.
Phayura auto-updates are not yet implemented; check Releases for new versions manually.
Phayura never injects input, never reads game memory, and never attaches a debugger. Win32 usage is limited to window placement and focus (SetWindowPos, SetForegroundWindow, AttachThreadInput, GetWindowRect) plus read-only cursor tracking for hover-focus (GetCursorPos, WindowFromPoint). The deliberately-omitted API list is documented in src/main/win32/bindings.js; adding any of those should be flagged in review.
npm install
npm start # run Electron app
NODE_ENV=dev npm start # also opens DevTools
npm run build # NSIS installer → dist/Stack: Electron 41 · Node 20 · koffi 2.10 (Win32 FFI) · electron-store 8 · vanilla HTML/JS (no TypeScript, no bundler).
Early — architecture stabilizing. No automated tests yet; verify against real Flyff windows.