Same treatment as the intro: generated desk photo (empty chair, a single closed box where the stamp used to be, one dark pigeonhole slot) converted PNG -> WebP, 1.7MB -> 45KB. Used for both win and loss endings, since the image itself is mood-neutral rather than victory- or failure-specific — the audit-stamp overlay (TILLSVIDARE in green, OMPLACERAD/AVFÖRD in red) still carries the actual outcome. .end-card switched from an opaque panel to a translucent one with a backdrop blur so the photo is actually visible around and through the card instead of fully hidden behind it — same fix .seal already needed on the intro screen. Verified by injecting all three real end states (clean win, composure-driven loss, suspicion-maxed loss) and screenshotting each. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Retur
Avdelningen för obeställbara försändelser.
A short bureaucratic supernatural sorting game. You have five shifts at a municipal dead-letter office. Read each letter, consult an expanding and occasionally contradictory rulebook, then route it to delivery, sender, Archive 9, or quarantine.
Later regulations override earlier ones. The letters know this too.
Stack
Vanilla TypeScript + Vite. No framework, backend, or runtime dependencies. State is kept in localStorage.
The visual language deliberately follows djupet: JetBrains Mono, near-black blue panels, restrained eldritch color, compact administrative labels, and pressure expressed through a screen-edge vignette. Retur replaces Djupet's Malmö map and idle resources with a paper desk, physical stamps, and a regulation sidebar.
Development
npm install
npm run dev # http://localhost:5691
npm run typecheck
npm test
npm run build
Rules
- Inspect the sender, recipient, address, postmark, letter text, and marks.
- Select one of four routes and stamp the decision.
- New regulations arrive each morning. Later and more specific rules take precedence.
- Incorrect sorting costs composure and raises suspicion.
- A completed day restores one composure; suspicion persists.
- Survive all five days to receive a permanent position. This is not necessarily a reward.
Keyboard: 1–4 selects a route, Enter stamps or continues, ? opens help.
Deployment
The production image is a static Vite build served by nginx. A push to main triggers the Gitea Actions workflow, which builds and publishes repo.explewd.com/explewd/retur:latest plus an immutable short-SHA tag. The deployment host pulls that image through Docker Compose.
docker compose pull
docker compose up -d
Live: retur.games.goonk.se