A small optional website-login fallback for Lich and Vellum. Sign into Play.net and choose Play in Browser. The extension stops the browser WebFE before it connects, hands the website-issued ticket to local Lich, opens the matching saved Vellum profile, and closes the temporary browser tab.
The working proof: during an EAccess outage, a game ticket issued by the website successfully authenticated Lich directly to the game server. The extension automates that handoff. It does not repair EAccess or obtain credentials without a website login.
This project is an independent community experiment. It is not affiliated with or endorsed by Simutronics, the Lich project, or VellumFE.
- Linux, Brave/Chrome/Chromium, Python 3.11+, an existing Ruby/Lich installation, and Vellum.
- GemStone IV Prime only. A matching saved Vellum Lich profile must already exist in
~/.vellum-fe/launcher.tomland target loopback. - Automatic interception at
https://www.play.net/play/home.asporhttps://play.net/play/home.asp, before the browser game consumes the ticket. - The helper chooses a free local detachable-client port. It does not stop an existing character or attach the new frontend to a different session.
- No automatic outage polling, alternate credentials database, game commands, or changes to Lich/Vellum source.
python3 install.py --browser brave \
--ruby /absolute/path/to/ruby \
--lich /absolute/path/to/Lich5/lich.rbw \
--vellum /absolute/path/to/vellum-feThe installer copies the extension and helper to ~/.local/share/lich-web-launch/, saves local paths in ~/.config/lich-web-launch/config.json, and registers the native helper with the selected browser. No administrator access is required.
Open brave://extensions (or chrome://extensions), enable Developer mode, choose Load unpacked, and select the installed extension directory printed by the installer. This initial unpacked installation is manual; subsequent game handoffs are automatic.
Log in on Play.net and choose Play in Browser for the desired character. A small handoff page appears while Lich authenticates; it closes after Vellum opens. If the handoff fails, its sanitized error remains visible and you must choose Play in Browser again for a fresh ticket. While this extension is enabled, matching GSIV Prime launches are intentionally intercepted instead of opening the Play.net WebFE.
To return to the normal Play.net WebFE, disable Open in Lich on the browser's extensions page.
- A document-start content script validates and captures the website-issued GSIV Prime launch fields before the browser WebFE opens its WebSocket.
- The extension service worker passes the projected request to a per-user native messaging helper.
- The helper creates a private temporary
.sal, starts Lich on a free detachable-client port, and deletes the ticket file after authentication. - Lich's owned startup log identifies the authenticated character. The helper requires exactly one matching local Prime/Lich Vellum profile, then launches that profile with the selected port override.
- The temporary browser tab closes only after the helper reports success. Existing listeners and sessions are never stopped.
The extension uses nativeMessaging and an exact Play.net launch-page content-script match. At document start it reads only the host, port, and ticket from that launch URL, removes the query string from the visible address, and stops the page before its WebSocket starts. It does not read browser cookies, account passwords, or a browser-reported character name. The key is a temporary credential, so do not publish network traces or screenshots containing it.
Chrome's native messaging connection transports the ticket to the helper without an HTTP listener. The helper accepts only this extension's origin, validates the game destination, and obtains executable paths exclusively from local settings. Temporary launch files use private permissions; ticket values do not belong in arguments, logs, or result messages.
python3 -m unittest discover -s tests -v
node --test extension/*.test.mjsSee CONTRIBUTING.md before submitting changes and SECURITY.md before reporting anything involving captured launch traffic.
Public protocol evidence: the Play.net browser client reads UrlParams.host, UrlParams.port, and UrlParams.key, opens a WebSocket shim, and sends the game key followed by its frontend handshake. Lich's existing .sal path consumes equivalent launch fields. See also Chrome native messaging and content scripts.
This is an experimental local helper, not an official Simutronics, Lich, or Vellum release. Browser integration still needs a live user click after installation; automated tests must never authenticate a real account.