No description
  • TypeScript 40.2%
  • JavaScript 35.8%
  • Vue 23.5%
  • HTML 0.2%
  • CSS 0.2%
Find a file
2026-09-25 17:21:04 +02:00
.gitea/workflows chore(release): prepare v0.1.5 and streamline checks 2026-09-25 12:41:56 +02:00
.impeccable fix(desktop): restore party overlay and detect HUD indicators 2026-09-23 07:35:09 +02:00
apps refactor(overlay): compact world boss widget 2026-09-25 16:10:41 +02:00
build fix(desktop): support symbol hotkeys and silent Windows updates 2026-09-24 22:59:35 +02:00
docs chore(release): prepare v0.1.7 2026-09-25 17:04:54 +02:00
packages fix(boss): save settings and show spawn locations 2026-09-25 14:23:33 +02:00
scripts chore(release): prepare v0.1.7 2026-09-25 17:04:54 +02:00
.dockerignore feat(community): prepare Coolify deployment and release checks 2026-09-23 16:42:07 +02:00
.gitignore feat(community): add parties and public leaderboards 2026-09-23 06:13:15 +02:00
AGENTS.md fix(boss): save settings and show spawn locations 2026-09-25 14:23:33 +02:00
DESIGN.md feat(community): add parties and public leaderboards 2026-09-23 06:13:15 +02:00
docker-compose.yaml fix(deploy): use Coolify default compose path 2026-09-23 16:43:20 +02:00
electron-builder.json fix(desktop): support symbol hotkeys and silent Windows updates 2026-09-24 22:59:35 +02:00
package.json feat(dev): watch local community and desktop apps 2026-09-23 06:52:07 +02:00
pnpm-lock.yaml fix(updates): show live status and recover stalled Windows downloads 2026-09-24 04:39:01 +02:00
pnpm-workspace.yaml fix(windows): keep overlay above BDO and align game capture 2026-09-24 03:02:51 +02:00
PRODUCT.md chore: preserve working Linux port and source migration baseline 2026-09-21 12:25:32 +02:00
README.md docs: add Coolify deployment runbook 2026-09-25 14:18:14 +02:00
start.sh chore: preserve working Linux port and source migration baseline 2026-09-21 12:25:32 +02:00
tsconfig.base.json chore: preserve working Linux port and source migration baseline 2026-09-21 12:25:32 +02:00
WORKFLOW.md docs: record v0.1.7 publication [skip ci] 2026-09-25 17:21:04 +02:00

Garmoth Community

A community Windows and Linux port of Garmoth App 0.12.6. The original Vue interface and session logic are unchanged. A TypeScript adapter replaces the native capture/OCR process with selected-window capture and local Tesseract OCR.

This is a working development port, not an official Garmoth release. The packaged app and automatic OCR pipeline passed controlled tests. Live BDO loot accuracy and Garmoth account sync still need verification.

See release downloads and release workflow for Windows and Linux packages. Windows runtime validation is still pending.

The community API and website use the Coolify deployment guide for initial setup, updates, backups, and checks.

Run on Linux

The editable-source baseline is complete. The development build uses maintained desktop and tracker modules. The launcher below uses the installed release, which is separate from the development build. See WORKFLOW.md for progress and verification limits.

Run the launcher from this project:

./start.sh

It uses the unpacked Linux executable:

./release/linux-unpacked/garmoth-linux

The tar.gz release is another option. Extract it and run garmoth-linux from its directory.

An AppImage is also included. This workstation has no FUSE 2 library, so direct AppImage mounting fails here. Use the launcher above, or run the AppImage with extraction enabled:

APPIMAGE_EXTRACT_AND_RUN=1 ./release/garmoth-linux-0.12.6-x86_64.AppImage
  1. In Settings > Game capture, choose Select BDO screen. Select the game window in the desktop portal. Use borderless or windowed BDO and keep the loot feed visible.
  2. Confirm the Proton Documents folder. The app detects Steam's standard BDO prefix, compatdata/582660. Use Change folder for another Steam library or Proton prefix.
  3. Connect your Garmoth account in the original app. Select English or German as the game language. Complete its game-capture check, then start a session.
  4. Hide the Game capture window if needed. Press Ctrl+Shift+L while a Garmoth window has focus to reopen it. Closing that helper window also hides it. Disconnect stops screen sharing.

Choose the game window rather than a larger desktop where possible. Garmoth calculates the loot-feed crop from BDO's saved UI settings. A desktop with a smaller game window can give incorrect crop coordinates. The adapter fixes the Windows filename-case assumption for gameVariable.xml on Linux. It only reads the game settings.

Network loot tracking

The development build also has an experimental Network source under Settings > Game capture. Linux uses dumpcap or tcpdump. Windows uses Wireshark dumpcap with Npcap. Only one source counts loot per session; OCR remains the default. The built-in EU packet profile needs live verification. See setup, parser profiles and limits.

What works and what is unverified

  • Original interface, account setup flow, session code, and existing export controls are retained.
  • Linux capture uses the desktop screen-sharing portal on Wayland. The selected stream supplies both game-detection status and image frames. It does not verify the game process or foreground focus.
  • English and German OCR models ship with the app. OCR does not need a network connection. Other game languages report an unsupported-language error.
  • A controlled MediaStream test verified capture, text recognition, line coordinates, automatic crop discovery from Proton-style settings, delivery through the original capture loop, and disconnect behavior.
  • The test did not log into Garmoth, upload sessions, or verify real-game drop totals. Original account and service access requirements still apply.
  • Native icon disambiguation, buff/gauge template matching, Windows game modifications, and autostart are not implemented. Windows-only modification controls report an error. Leave server-buff reporting off.
  • On Hyprland 0.55+, the overlay follows the single Steam BDO window's workspace, position, and size. It removes compositor blur, shadow, border, and rounding from the overlay and prevents focus outside edit mode. This uses the Hyprland Lua dispatchers at runtime and does not edit your desktop configuration. Other compositors and global hotkeys remain unverified.
  • Packaged apps check this repository for updates. Windows installers and Linux AppImages support downloads and explicit restart. Unpacked Linux installs show a release download link. See releases and update limits.

Tesseract is a replacement for the original Paddle OCR worker. It can produce different results. Test a short grind and compare the session against actual inventory changes before relying on totals.

Build the monorepo

Requires Node.js 24 and pnpm. Linux release builds also produce the Windows installer through Wine. Normal builds compile the maintained desktop, tracker and capture source and do not need the Windows installer, 7z, or ImageMagick.

pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm build
pnpm package:linux
# Windows NSIS installer, needs Windows or Wine:
pnpm package:windows

This is a pnpm monorepo with Electron, Vue 3, TypeScript, Vite, and Zod. Our Vue capture window and Linux modules are editable source. The main interface uses maintained Vue templates and typed stores. See migration status and agent instructions.

The build compiles apps/desktop/src/runtime and the Vite app in apps/frontend. All 18 renderer stores use typed core modules. New Vue components live in shared UI and feature folders. Routes, store bindings and service composition live in apps/frontend/src; the old tracker package has been removed. See frontend conversion. packages/legacy-garmoth is a frozen test reference and is not used to assemble the app. Its provenance records the original renderer hashes.

pnpm extract /path/to/GarmothApp-Setup-0.12.6.exe remains an optional investigation command. It verifies the known installer hash and extracts files into .research; it does not overwrite the maintained compatibility package.

For local development, run pnpm dev. It builds the current source and opens the development app. It does not watch files or reload changes automatically; close the app and run it again after edits. Use pnpm start to open the existing development build without rebuilding. Neither command replaces the installed release. No web server is required.

Verification

pnpm typecheck
pnpm test
pnpm build
pnpm test:app
pnpm test:parity
pnpm test:permissions
pnpm test:routes
pnpm test:sessions
pnpm test:stop
pnpm test:account
pnpm test:package
# Optional, with BDO open on Hyprland 0.55+:
GARMOTH_TEST_HYPRLAND=1 pnpm test:app

pnpm profile:ocr measures generated-image OCR through helper IPC and directly through the two-worker pool. See measurements and limits.

The app test opens temporary-profile windows and injects a generated MediaStream. It does not capture your screen or use your account. It checks the original interface, the OCR bridge, and automatic frame delivery. The permission test uses real getDisplayMedia and the app's permission handlers, with an app-owned frame in place of the desktop picker. It verifies screen capture succeeds and camera access stays denied. Behavior tests compare typed modules with frozen reference algorithms. Account contract tests replace network requests with fixtures. The package test uses a temporary output directory and leaves the installed release unchanged. On this workstation, test windows open on workspace 10, selected with Alt+0.

Files and data

  • apps/desktop/: Electron entry point, preload, runtime dependencies and generated desktop build.
  • apps/capture/: Vue capture window and Vite build.
  • packages/contracts/: shared types, validation and IPC names.
  • packages/core/: typed tracking, renderer state, timeline, crop geometry and OCR scheduling. See its module guide.
  • packages/linux/: portal, Proton settings, capture adapter and Hyprland integration.
  • packages/ocr/: Tesseract worker and image preprocessing.
  • apps/frontend/: Vue components, pages, feature folders, static assets and the Vite frontend build.
  • packages/legacy-garmoth/: frozen runtime and renderer references for tests.
  • scripts/build.mjs: builds and assembles the workspace application.
  • .research/: ignored installer inspection and migration backups.
  • release/: local packages and the installed Linux app.
  • ~/.config/garmoth-linux/: app settings, original session history, and Linux folder selection. XDG_CONFIG_HOME can change the base directory.

The port keeps its data separate from the official app. The original app's account sync, diagnostic recording, and upload functions remain under its existing controls. The Linux capture helper does not save screenshots.

See the original package investigation for the findings about the Windows app and bdo-tool. No code from bdo-tool is required by this port.