No description
  • JavaScript 80.9%
  • Python 7.1%
  • CSS 4.9%
  • HTML 4.3%
  • NSIS 2.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-05 21:55:17 -05:00
build please work this time 2026-10-05 21:55:17 -05:00
scripts feat: add Furcord Windows desktop client 1.0.0 2026-10-05 21:17:15 -05:00
src feat: add Furcord Windows desktop client 1.0.0 2026-10-05 21:17:15 -05:00
.gitignore feat: add Furcord Windows desktop client 1.0.0 2026-10-05 21:17:15 -05:00
package-lock.json fixing builder.nsh 2026-10-05 21:51:24 -05:00
package.json feat: add Furcord Windows desktop client 1.0.0 2026-10-05 21:17:15 -05:00
README.md feat: add Furcord Windows desktop client 1.0.0 2026-10-05 21:17:15 -05:00

Furcord for Windows

A dedicated Windows desktop client for Furcord (https://app.furcord.org).

Why Electron

  • Reliability: Furcord is a modern web app that depends on a current Chromium (notifications, voice and video, WebSockets, clipboard). Electron bundles its own Chromium, so behavior is identical on every Windows 10/11 PC.
  • Tauri was considered. It gives a smaller installer, but it uses the system WebView2 runtime. Its notification, download and screen-share support differs more from Chrome, and its updater needs signing keys from day one. Electron costs a larger installer (roughly 80-100 MB) in exchange for fewer compatibility surprises.
  • Updates and installer: electron-builder produces the NSIS installer and electron-updater handles updates from any static HTTPS host.
  • Platform: Windows x64 only. ARM64 Windows 11 runs x64 apps through emulation, so a separate ARM64 build is not needed. 32-bit is not supported.

Project layout

package.json            version, scripts, electron-builder + installer config
src/config.js           app URL, allowed hosts, window defaults
src/main.js             window, navigation policy, permissions, downloads, menu
src/windowState.js      remembers window size, position, maximized state
src/updater.js          automatic updates (electron-updater)
src/error/              "Unable to connect to Furcord." page with Retry
build/icon.ico          multi-size Windows icon (16-256 px)
build/icon.png          512 px PNG used for the window icon
build/installer*.bmp    installer / uninstaller sidebar branding
build/installer.nsh     adds the optional desktop-shortcut checkbox
build/source/           original logo
scripts/make-icons.py   regenerates all icon assets from the original logo

How it works

  • main.js opens one window on https://app.furcord.org with contextIsolation, sandbox, and no nodeIntegration. There is no preload script, so the remote site gets no extra APIs.
  • Only hostnames in allowedHosts stay in the app. Any other http(s)/mailto link opens in the default browser, and other schemes are ignored.
  • Permissions are granted only to the Furcord origin and only for notifications, microphone/camera, fullscreen, clipboard write, and pointer lock.
  • Downloads use the normal Windows "Save As" dialog. Screen sharing asks which screen to share.
  • Sessions use Electron's default persistent profile in %APPDATA%\Furcord, so cookies and local storage survive restarts. The app stores no passwords. Cookies that Furcord sets without an expiry date are session cookies and are dropped on exit by Chromium. If login does not persist, Furcord must set an expiry on its auth cookie or keep the token in local storage.
  • If the site cannot be reached (offline, DNS, TLS, or HTTP 502/503/504), a local error page appears. It retries automatically every 10 seconds and when the network returns.
  • Closing the window quits the app, so no background process is left behind.

Development PC prerequisites

  1. Windows 10 or 11, 64-bit.
  2. Node.js LTS (includes npm): winget install OpenJS.NodeJS.LTS. Restart PowerShell afterwards.
  3. Python 3 with Pillow only if you want to regenerate icons: pip install pillow.
  4. Enable Developer Mode (Settings > System > For developers), or run PowerShell as Administrator for the first installer build. electron-builder unpacks tools that contain symlinks, which fails without one of these.

Commands

cd C:\Dev\furcord
npm install        # once
npm run dev        # Development: run the app from source
npm run build      # Production build: unpacked app at dist\win-unpacked\Furcord.exe
npm run dist       # Installer build: dist\Furcord-Setup.exe

Installer

NSIS via electron-builder. It installs to C:\Program Files\Furcord for all users (UAC prompt), lets the user change the folder, creates the Start Menu shortcut, registers the uninstaller under Installed Apps (publisher "Furcord", the Furcord icon, the version from package.json), and offers an unchecked "Create a desktop shortcut" box on the final page. It needs no other software. Uninstalling removes the app and shortcuts but keeps %APPDATA%\Furcord (user data).

The installer is unsigned unless you add a code-signing certificate. Windows SmartScreen will warn ("Windows protected your PC > More info > Run anyway") until you sign it. See "Code signing" below.

Automatic updates

The app checks 15 seconds after launch and every 4 hours. Updates download silently; the user is asked to restart, or the update installs the next time Furcord closes.

Hosting required: any static HTTPS location, with no GitHub involved. The feed URL is build.publish[0].url in package.json (currently https://updates.furcord.org/desktop/). It is baked into each build, so decide on it before you hand out version 1.0.0. Example Caddy site:

updates.furcord.org {
    root * /srv/furcord-updates
    file_server
    header /desktop/latest.yml Cache-Control "no-cache"
}

Releasing an update

  1. Raise "version" in package.json (for example 1.0.1).
  2. Run npm run dist.
  3. Upload these three files from dist\ to /srv/furcord-updates/desktop/: latest.yml, Furcord-Setup.exe, Furcord-Setup.exe.blockmap. Upload latest.yml last.

Installed apps with a lower version then update themselves. The first update after 1.0.0 will show a UAC prompt because the install is per-machine. To install per-user instead (no UAC on updates, location %LOCALAPPDATA%\Programs\Furcord), set "perMachine": false in the nsis block.

Updates are verified by the SHA-512 in latest.yml served over HTTPS. Signing the installer adds publisher verification and removes SmartScreen warnings.

Code signing (optional)

Buy a Windows code-signing certificate (or use Azure Trusted Signing), then follow the electron-builder code signing docs for win.signtoolOptions. Once builds are signed, you may also set win.publisherName so the updater checks the publisher. Do not set it on unsigned builds, because updates would then fail.

Changing things later

  • Version: version in package.json.
  • Site URL or allowed domains: src/config.js.
  • Logo: replace build/source/Furcord-logo.png, run npm run icons, and replace src/error/logo.png if desired.

Known limitations

  • Screen sharing offers whole screens only (no per-window picker), and does not capture system audio.
  • This project has not been built or run on Windows by its author; follow the test checklist below on your first build.

Test checklist

  • Installer shows the Furcord icon and sidebar; installs to C:\Program Files\Furcord
  • Furcord launches and https://app.furcord.org loads, with no browser chrome
  • Exe, taskbar, Start Menu and window title bar show the Furcord icon; title says Furcord
  • Log in; fully quit (check Task Manager); relaunch: still logged in
  • Furcord links stay in the app; external links (docs, terms, other sites) open in the default browser
  • A file download shows the Save As dialog and saves correctly
  • Notifications appear, if Furcord requests them
  • Copy/paste, right-click menu, Ctrl+/Ctrl- zoom work
  • Disconnect from the network and relaunch: error screen with Retry; reconnecting recovers
  • Resize and maximize, close, reopen: size and maximized state restored
  • Start Menu shortcut works; Desktop shortcut works if selected on the finish page
  • Settings > Apps > Installed apps lists Furcord 1.0.0, publisher Furcord, with the icon
  • Update test: publish 1.0.1 to your update host and confirm the 1.0.0 app updates
  • Uninstall removes the app and shortcuts; reinstall works; no Furcord.exe processes remain