docs.exe _
Documentation

1. Getting started

Pick a flavour: Tampermonkey userscript, Chrome MV3 unpacked, or Firefox temporary add-on.

  1. Open the homepage and grab the download link for your browser.
  2. Install per the instructions on the card.
  3. Visit filianislost.com — the Win95 panel pops up in the top-right.
  4. The first time you visit, the extension auto-attaches to our backend (no manual login needed).
Auto-update polls /dist/signature.json every 30 minutes. Tampermonkey can also auto-update userscripts natively.

2. Deep Integration

Disabled by default. When enabled, the extension intercepts the site's main ES module on load and patches it to expose its paint internals. That unlocks:

  • Precise Place: 1 click = exactly 1 pixel, via the site's own M5() (or whatever the current minifier named it)
  • Eyedropper reads from the live preview canvas, not stale wall tiles
  • Continuous drag-paint with Bresenham line interpolation
  • Suppression layer keeps the site's spray handler out while still letting its custom cursor animate

Toggle in Settings → Deep Integration (experimental). Requires a page reload.

The rewrite probes symbols by code shape, not by name — minifier rebuilds (M5→UQ, t0→a0) don't break it.

3. Anti-grief monitoring

Pin a template and the backend will fetch the matching window of wall tiles every check_interval seconds (min 60, default 600), diff against the template, and emit a clan_alert mailbox event when damage crosses alert_threshold (default 25 pixels).

POST /api/v2/templates/{id}/protect
{
  "clan_id": "uuid-of-clan",
  "alert_threshold": 25,
  "check_interval": 600
}

Disable with DELETE /api/v2/templates/{id}/protect. Anyone who owns the template, any clan moderator/admin, or a global admin can flip it.

4. Linked accounts

From /me:

  • Telegram via OIDC (oauth.telegram.org) with PKCE + telegram:bot_access scope. Bot can DM you afterwards.
  • Discord via standard OAuth2 with identify scope. Bot can DM you if you share a guild with it or DM it first.
  • Email through support: request a 6-char code, email the support address with subject LINK-MAIL from your address, an admin approves.
VAI Account is a separate identity at /vai-auth — designed to span all VAI-PROG services. You can bind it to your Wall user from the extension's Settings.

5. API

Two surfaces live side by side under /api/:

  • /api/v1/* equivalents and shared endpoints under /api/* — frozen, legacy clients.
  • /api/v2/* — actively developed, new features land here.

Browse interactively: Swagger UI · ReDoc. Raw spec: openapi.yaml.

6. Troubleshooting

  • Panel doesn't appear: ensure you're on https://filianislost.com (not www.); reload after install.
  • Precise Place greyed out: Deep Integration is off, enable it in Settings and reload.
  • Deep Integration "WARN: missing probes": site bundle changed shape — wait for the next extension update or report at GitHub.
  • Black flash on Clan tab: known fixed in v3.0.x — update.
  • CORS errors: clear cached service workers and reload. Production nginx now sets the headers explicitly.
  • "out of paint" toast: that's the site's cooldown — wait for refill or submit pending pixels.

7. Self-hosting the backend

Backend is a single Rust binary backed by Postgres + nginx + Let's Encrypt. See backend/Dockerfile and backend/example.env for the moving parts.

cp backend/example.env backend/.env
docker compose -f backend/docker-compose.yml up -d   # Postgres
cargo run --release                                  # backend

Or point THE_WALL_DEV_ENV_FILE at an external secrets file (overrides existing env vars).