Skip to content

Repository files navigation

CyberViewer

Fast Windows image viewer by CyberGems — open, browse a folder, zoom/pan, and light edit (rotate, crop, resize, adjust). Built with Electron and vanilla JS (small app layer; Chromium runtime included).

Version: 1.8.1 · Stack: Electron 35 · Vanilla JS

Project structure

CyberViewer/
├── main.js              Electron main process (IPC, tray, protocol)
├── preload.js           contextBridge → window.electronAPI
├── CyberViewer.html     Shell markup
├── css/app.css          Styles
├── js/
│   ├── app.js           Renderer UI logic
│   └── media-helpers.js Pure helpers (mediaUrl, canvasExport, …)
├── lib/                 Shared Node helpers (paths, thumb cache, updater, bounds)
├── i18n/
│   ├── menu.json        Menu/tray/dialog strings (EN/ES)
│   ├── ui.json          Renderer UI strings (source of truth)
│   └── ui.js            Generated loader for the renderer (`npm run i18n:sync`)
├── assets/              Icons
├── package.json
└── test/                Node unit tests

Requirements

Development

cd C:\path\to\CyberViewer
npm install
npm start

Test / lint

npm test
npm run lint

Build

npm run build            # NSIS installer + portable
npm run build:portable   # portable only

Outputs land in dist/:

Artifact Description
CyberViewer-Setup-1.8.1.exe NSIS installer
CyberViewer-Portable-1.8.1.exe Portable build

Icons

Place these under assets/ before a production build:

  • icon.png — PNG for window/tray/UI (dev)
  • icon.ico — multi-size ICO (packaged exe / Windows)

Updates

Installed (NSIS) builds use electron-updater against GitHub Releases:

  1. About → Check for Updates (or menu Help)
  2. Download update when a newer version is available
  3. Install & restart to run the NSIS installer

Download/install is always user-requested. With “Check for updates on startup” on (default), the app may notify on startup that an update exists (toast + About banner), but will not download until you ask.

Portable builds cannot self-update in-app — use Open releases page.

Release tags (v*) must publish latest.yml, .blockmap, and the Setup .exe (see .github/workflows/release.yml).

Security notes

  • webSecurity is enabled; HTML ships a Content-Security-Policy.
  • Local images are served through the cvlocal:// protocol (streamed) with a path allowlist.
  • Allowlist expansion from the renderer only accepts existing image files (register-paths); validate-paths checks existence without widening access.
  • Folder scans only run for neighbors of an existing image file.
  • Renderer has nodeIntegration: false and contextIsolation: true.
  • DevTools IPC is disabled in packaged builds.

Supported formats

JPG · JPEG · PNG · GIF · WEBP · BMP · TIFF

Default image viewer (installer)

The NSIS setup includes a page with a checkbox (checked by default):

Set CyberViewer as the default image viewer

When enabled, the installer writes per-user (HKCU) associations for common image extensions so double-click opens CyberViewer. Windows 10/11 may still ask you to confirm defaults under Settings → Apps → Default apps.

The portable build does not register system associations; use the in-app Context Menu option or Windows defaults UI.


CyberGems © 2026

About

CyberViewer is a high-performance, image viewer featuring basic editing, premium sci-fi HUD interface. Engineered for power users, it combines a lightweight Electron footprint with real-time metadata indicators (symmetrical viewport resolution, file size, storage weight, and zoom metrics), instant lossless cropping, and more

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages