Roadmap
Everything we are building, in the open
No dates, no promises we cannot keep. Just what we are thinking about, what we decided to do, what somebody is working on today, and what is already out.
Last thing out A project can be renamed, cards and all 3 weeks ago
Exploring
130Ideas we keep turning over. None of it is a promise.
A live look at the server
The top of the page is not a promo shot. It is a real picture of the world, taken a few minutes ago.
Link an account once, use it everywhere
Whatever you link in STYGION ID works across all our apps. No second sign-in inside the launcher.
Minecraft through your linked Microsoft account
The launcher takes your game account from the Microsoft account linked in STYGION ID — no separate sign-in.
Twitch link as a rewards source
A linked Twitch account is reused everywhere it makes sense — watch time counts towards points with no extra setup.
Panel rewritten from zero
Parked on 30 August 2026. The rewrite was deployed once and almost nothing worked; the code is archived and will be taken from a piece at a time. The panel stays on the 0.2.0 line, the one that runs in production.
First release is self-host, no billing
Parked with the rewrite on 30 August 2026. Panel 0.2.0 already has billing, so this decision waits until there is a release to make it about.
Built one working piece at a time
Parked with the rewrite on 30 August 2026. It stays as the rule for work on 0.2.0: one piece, finished, proven in production, and only then the next.
STYGION admin tooling for other servers
What we use to run our own community lands in the bot for everyone — the heavy features on subscription, the small ones free.
Quests generated from the recipe tree
Pick a target item and Workbench breaks the recipe down to raw materials, then turns it into a quest line.
Recipe picking like JEI
When an item has several recipes, click through the tabs and choose the production path you want.
Automatic quest map layout
Arrows and positions arrange themselves so the map stays readable.
Depth filters for generation
Say where generation should stop — at ingots, say, rather than going down to ore mining.
AI writes the names, lore and rewards
The model reads the recipe tree and proposes copy and balanced rewards.
Export to FTB Quests
Export a finished map for existing packs built on FTB Quests.
Live link to the mod
A change in Workbench shows up on the server immediately, without a restart.
Manage players and the world from the web
Inventory, status, punishments and weather can be handled from a browser — changes apply safely.
Crashes and TPS drops reported to Discord
Starts, crashes and performance drops arrive in Discord by themselves — no console watching.
Maintenance mode and anti-spam
Your own whitelist and screen during maintenance, plus protection against spam and abuse.
Voice notepad
Speak a thought, the app transcribes and files it. No typing on a small keyboard.
Transcription runs on the phone
The model fits an ordinary phone and works offline — the recording never leaves it.
Dictate straight into the roadmap
Say an idea and it lands as a roadmap card or a task — no laptop needed.
DayZ RP server (worldwide)
A roleplay server open to players anywhere — English as the common language, story and consequences first.
Player-run factions
No scripted sides. Territory, influence and conflict stay in players’ hands.
Player-only trading
No AI traders. Prices and stock come from what people actually haul in.
Big map, thin loot
Ordinary zones are picked clean. Gear means going where it is dangerous.
Daily, weekly and monthly contracts
A reason to head out even solo — and long goals that keep factions together.
Link Twitch account (like other services)
OAuth link Twitch → STYGION ID (same model as Discord / Microsoft). Profile, verified identity, unlink. No watch points without a link.
Channel watch time → points (multi-channel)
Idea: per user (or admin allowlist) configure channels; from link time track watch engagement and grant X points/hour. Multiple channels at once (STYGION + partners). Research: Twitch API does not expose raw watch hours — options: (1) live-stream claim heartbeats while stream is live, (2) EventSub + drops-like flow, (3) extension / bot code, (4) partner APIs if available. Anti-abuse: daily/weekly caps, no claim offline, cooldowns, configurable X pts/h. Per-channel ledger + summary.
Admin: channels, rates, anti-abuse
Team UI / MCP: channel allowlist, points/hour, caps, kill-switch. Audit suspicious grants. Partner channels without code changes.
STYGION ID points — economy vision
Ecosystem currency: activity (achievements, Twitch, later events) earns points; points buy cosmetics/rewards; most items also for real money; optional points top-up. Fair, auditable, no pay-to-win. Hooks into backend billing direction.
STYGION points — wallet and ledger
Points balance on STYGION ID (not just a counter): append-only ledger (earn/spend/refund), in-account history, consistent across web, launcher, and other services. One account = one balance.
Achievements → points
Completing an achievement (launcher, web, events, SMP…) credits points to the account. Achievement catalog + grant rules (once / repeatable / seasonal). Ties into planned launcher achievements — reward always lands on STYGION ID, never local-only.
Points shop (skins, themes…)
Catalog of cosmetics and rewards: launcher skins/themes, later more across the ecosystem. Buy with points → account entitlement (permanent own). Launcher theme engine already exists — shop only sells and unlocks.
Dual purchase: points OR real money
Most shop items have both a points price and a real-money price. Same entitlement, different path. No pay-to-win — cosmetics / QoL only. Transparent pricing in UI.
Buy points packs with real money
Optional top-up: points packs via payment (Stripe / existing billing direction). Larger-pack bonuses? VAT, invoices, refund policy. Top-up and achievement points share one ledger, distinct reason codes for audit.
Entitlements across clients
Purchased skin/theme shows in the launcher (and later elsewhere) via STYGION ID entitlement API — not a local unlock. Offline graceful: last-known cosmetics set.
Premium visuals and UX
Main promise next to performance: looks and feels great. Stream/record flows you are happy to show.
Ready-to-edit alerts
Alerts ready to tweak and deploy — not a bare stream with no polish.
Admin app — internal tasks and PM
When mobile admin exists: Stygi-team taskboard, assignments, notifications. Separate from the public consumer app.
Push on new/updated task
Person or section gets a mobile notification — same rules as the workspace.
Subscriptions and invoices
When there is something to sell: plans, payments, tax invoices.
Product capture and trailers
Real product screenshots/video instead of stock — when there is something to film.
Orgs, roles and entitlements
Teams and ownership (modpacks, services) for later premium gating.
Teams, roles and permissions
A finer permission matrix beyond the three coarse levels the panel already ships.
Scoped keys for automation and AI
Keys with limited scope (server / capabilities), revoke and audit. Never more rights than the key owner has.
Run on the Panel
Once Panel is solid: node and manage our SMP from there.
Local-first and opt-in privacy
Recording stays with you; no hidden capture or upload without consent.
Onboarding, ranks, events
How newcomers start, ranks and seasonal events.
STYGION Keystone on SMP
Once STYGION Keystone is usable: ops and community from one mod.
PLAY module for Hytale
Placeholder and later content/version library in PLAY.
Our Hytale server
STYGION-run community server once the game allows it.
PLAY module for Arma Reforger
Install, profiles and launch from the PLAY shell — not STYGION Launcher (that one is Minecraft).
Mods, presets and configs
Manage content and presets for players and the server.
Optional STYGION ID link
Identity and server link — only if the admin wants. Mod still works offline to the cloud.
Profile and linked accounts
Basic profile and link status (Discord and more) from the phone.
Levels and activity rewards
Progress and rewards for Discord activity — replaces typical level bots.
STYGION service status
A quick look at whether the things you care about are up.
Music in voice channels
Playback into voice — one app instead of a separate music bot.
Light server overview (not Panel admin)
Optional online/players — full control stays in web/desktop Panel.
Custom commands and automation
Commands and simple automations per server without code.
Native vs cross-platform stack
Open: Swift/Kotlin, or one cross-platform stack — decide before build.
Optional STYGION ID for a guild
Link a Discord server to STYGION when the owner wants — bot works without it too.
Free vs paid features
Clear freemium line: solid free tier, advanced tools paid.
A module for our own game
When there is something to play: install it and launch it straight from PLAY.
Hosted-game modules (Arma, Hytale…)
Placeholders and later real modules for games STYGION hosts.
In-shell notifications
Update, friend online, download status — after core flow.
Recommended game settings in the pack
Editor for default player options (performance / quality). Ships with the pack, whatever they use to launch.
Publish to CurseForge / Modrinth
Ship the finished pack to both stores from one app.
Pre-publish checks
Automatic errors and warnings before the pack hits the store.
Local pack playtest
Run a test play from Workbench itself (own test instance). Optionally open an export in an external launcher — Workbench stays a standalone app.
Rollback release / build
Return to a previous published or snapshot version after a failed test.
Chat with workspace + file context
Architect sees the project and selected files — not a context-free chatbot.
Change proposals + diff preview + apply
Propose file/config changes, show a diff, apply only after you OK.
Help with changelogs and release copy
Draft and edit changelogs, notes and store copy from project context.
Mod and pack composition suggestions
“Add tech, don’t clash with magic” — suggest sets and swaps from your brief.
Lightweight-mod tags in the pack
Creator marks visual/optional mods. Player launchers (e.g. STYGION Launcher) can offer a light profile — data lives in the pack, not as a Workbench plugin.
Pre-release validation
Catch errors and inconsistencies before the pack hits the store.
Detect and suggest conflict fixes
Architect + tooling: version or ID clash → clear suggestion (swap, remap, disable) with confirmation.
Fabric + NeoForge projects
First target loaders; shared workflow for both.
Notes — notes and planning
In-project notes: plan, TODOs, decisions.
Project wiki
Internal pack docs for the creator team.
Quest / progression canvas
Visual canvas for quests and progression in the pack.
Mind map
Map of ideas and content dependencies around the project.
Git workflow (stage, commit, branch, push)
Integrated Git + desk for remotes/releases (e.g. GitHub).
Pack template
Ready templates (loader, version, base set) instead of a blank slate.
Import from CurseForge / Modrinth
Open an existing store pack as an editable Workbench project.
Clone from Git
Load a project from a remote repo (GitHub and friends).
Restore from snapshot
Restore an older working version of the project in one step.
Branding kit (logo, cover, icons, hero, social)
Manage store and promo visuals: logo, cover, square, wide hero, social preview.
Promo screenshots + media kit export
Screenshot set and media-kit export for release and store pages.
Mod management (search, add, disable, remove)
Catalog + workspace: search, add, remove and disable mods in the project.
Files, configs and scripts
Work the project file tree — configs, scripts, resources.
Diff against snapshot / export
Compare the current state to a snapshot, export or baseline.
New pack from scratch
Empty modpack project with a default manifest and folders.
Arma in the ecosystem (PLAY + server)
Two layers: a PLAY module and our Arma Reforger server (open, global). Vision for now — not current build priority.
Hytale — waiting on game release
PLAY module + our server + Panel hosting once the game ships and API/modding is clear. Not a priority now.
SMP — seasons and story (CZ/SK)
Our community Minecraft server with seasons and lore. Concept and community before a heavy tech stack.
Host Arma server in the Panel
Once Panel handles game eggs well: run our / community Arma server from there.
Ops on Panel + Discord bridge
Panel node, server-ops and community Discord bridge.
Mobile for account and community
People app: STYGION ID, notifications, chat, tickets. Not full Panel admin — only a light overview when it helps.
Public Discord bot (SaaS)
Bot for any community — moderation, tickets, engagement, music. Freemium. Separate from STYGION’s internal backend bot.
Sign-in + login confirm (passkey)
PKCE login and confirm sign-in from the phone.
Auto-mod, warns, bans, logs
Replace typical moderation bots with one tool.
Notifications, chat, tickets
Ecosystem alerts, community chat and support from mobile.
Discord tickets for guilds
Support channels for guilds that use the bot (SaaS, not internal STYGION tickets).
Dashboard + freemium gating
Per-server web config, free vs paid features, billing via STYGION ID.
Standalone app for modpack creators
Workbench is its own app — not a Launcher or PLAY module. Empty project to CurseForge/Modrinth publish: Overview, Identity, Mods, Files, Notes, Git, Release, and built-in Architect AI.
Project and creator_manifest
Create or import a pack; creator_manifest.json holds metadata, loaders, branding and export. One source of truth for the whole project.
Ship: changelog, export, publish
Version → changelog → validation → export/publish to CurseForge and Modrinth. No blind “upload and hope”.
Architect — AI in the project
Built-in assistant with workspace awareness: mod ideas, conflicts, configs, confirm-to-apply diffs, and release copy.
STYGION ID in the shell
Sign-in and later friends / presence — after game launch is solid.
stygion:// deep link for connect
Custom protocol instead of 127.0.0.1 callback — fewer browser mixed-content fights.
StygionREC — modern record and stream
Goal: a better alternative to classic tools (Mirillis Action! DNA): top quality, low CPU cost, great visuals and UX. Exploring — does not take Launcher/Panel priority.
Research: Action!-class capture (low CPU, high quality)
Study how Mirillis Action! captures (Windows APIs/paths) and design a pipeline with minimal performance cost and top quality — lighter than typical OBS overhead.
Stream: A/V polish, alerts, scenes
Audio and video polish, ready-to-edit alerts, scene tools. Full stream feature set and solid UX — not a bare encoder.
Datapack manager
Same experience as the mod/resourcepack/shader manager, but for datapacks (per instance/world).
Browse filters
Category / MC version / loader / sort in the unified CF+Modrinth catalog.
Log upload / share
One-click log sharing (mclo.gs or a custom paste). Pairs with the crash parser.
3rd-party auth (authlib-injector / Ely.by)
Alternative auth server + skins for offline accounts. Weigh against the STYGION ID direction.
Skin library + changer
Skin library + apply directly from the launcher (we already render skins).
Resource pack & shader manager
Same experience as the mod manager, but for packs and shaders (browse/install/enable per instance).
Java 'Optimize'
Auto-tune JVM args + RAM per machine and pack (Aikar-style, automatic).
Quick servers from modpack
Modpacks often offer an official server → one-click add to Server Hub.
Offline / airplane mode
Full launch from cache without network (even without MS re-login while the token is valid).
Export / share instance
Pack a configured instance and send it to a friend (reproducibly, see lockfile).
Custom instance icon
Upload/pick an icon instead of the modpack logo or letter.
Pre/post-launch hooks + wrapper + env
Per-instance: custom pre/post-launch script, Linux gamemode/mangohud wrapper, custom env vars.
Clone instance
Duplicate an instance in one click (test mods/versions without breaking the original).
Auto-snapshot before update
Automatic instance backup before a modpack/mod update (tied to delta snapshot/rollback).
Modpack update changelog
On modpack update, show what changed (added/removed/updated mods).
Planned
118Decided. Waiting for its turn.
What your servers really run at, shared
The panel already watches its servers. This lets an operator, if they choose, contribute what those servers actually keep — tick time at the player counts they really carry — to the public performance page. It is the check on everything measured in a load test: a lab number nobody meets in production is a lab number. What leaves carries the pack's mod list, the machine class and the numbers, and nothing that names a server or a person.
What a modpack costs to play
The other half of the same question, and a page of its own because it is not the same question. What a pack costs your own machine: the median frame, the worst one percent beside it — an average hides exactly the stutter that ruins an evening — and which of your parts ran out first, so "should I buy a card or a processor" stops being answered by vibes. It waits on the benchmark the launcher runs; until that exists there is nothing measured, so the page is not opened rather than filled with something.
What a modpack actually costs to run
Nobody can tell you how many players a modpack holds on a given machine, so everybody guesses and half of them buy the wrong box. Servers that choose to send a measurement build the answer together: how many players a pack held, on what hardware, and what gave out first. You say what you have — pick the pack, drop in a mod list, or add the few mods you care about — and say roughly what the machine is, and the page shows the nearest runs it really has, with how near they are and how many there were. Where there is not enough to answer, it says so instead of inventing a number. And the part nobody publishes for any mod: what a single mod costs. Every run already knows whose code the time went into and how many of each mod's things were standing on the server, so the two together give a cost per thing — the number you want when you are deciding what to cut. It will say plainly what it is measuring: where time was spent rather than what caused it, and only the time that pushed the server past playable. The same page will carry what a pack costs to play, not only to run.
Addresses read the same in both languages
The rest of the site follows one rule: English addresses with no prefix, Czech behind /cs/. The documentation does not — its pages carry Czech addresses even in English, so the same page reads as two different things depending on where you arrived from, and a link shared with somebody who does not speak Czech looks like a mistake. Every page gets an English address, the old ones keep working so nothing anybody has bookmarked or linked breaks, and search engines are told which is which.
The server says what it runs, and the launcher fetches it
Click a server and you are in it. The server states which modpack and which version it wants, right there in the list; STYGION Launcher picks that up, fetches the pack or switches to the right version, and connects you. You have it but three mods differ? It says which three. You added client-side mods of your own? They stay. And a server that says nothing behaves exactly as it does today.
One file, and the server says whether players need it too
Keystone is one mod. The same file goes on the server and into a player's client — no server edition, no client edition, no two version numbers to drift apart. The server picks whether it requires the client: a public server lets everybody in, and whoever has the mod also gets the maps, the screens and real colour in chat; a modpack server can require it, because there everybody has it anyway. Two people on one server, one with the mod and one without, are both served correctly — and the second is told what the file would add rather than handed a worse imitation of it.
Connect the panel without typing a code
Press Connect, a browser opens on the page that already knows which panel is asking, and one button finishes it. Reading a code out stays only for a machine with no browser at all.
The Discord server is a capability, not a folder of scripts
Channels, roles, permissions and pinned copy are edited today by running Node scripts from a checkout with the bot token in the environment. Anything a person or an agent should be able to do belongs on the MCP surface like everything else — read the guild, apply the spec, report what drifted. A capability that only exists as a script is a capability only whoever has the checkout has.
Recreate must put a server back the way it found it
`Service.Recreate` deletes the container and builds a new one with `podman create`, which leaves it stopped — a server that was running before a Startup-tab save is down after it, and nothing in the UI says so. Recreate should remember whether it was running and start it again, and say so loudly when it cannot. Changing an environment variable is the only way to hand a server a new token, so this meets everybody who edits a running server's settings.
Issue the admin MCP key from the panel
The Application API page can only say the key is missing and send somebody to an env file and a restart. It should carry a button that issues one — the admin MCP that reaches the whole panel — and a second that revokes it. Shown once, the way a key is shown. No file to edit, no restart.
A documentation section has a page of its own
A section's name in the documentation — "Panel", "Launcher" — cannot be clicked today. It is a heading above a list rather than a link, so there is no single place that says "this is the whole documentation for the panel": you either walk the tree one page at a time, or you search. A section should have a page of its own at `/docs/<section>`: what that part of the documentation is for, every page in it with its summary in the order they are meant to be read, and where to start when it is somebody's first time. It is also the thing worth sending to somebody, and the thing a search engine should read — today the best link to the panel's documentation is a link to one arbitrary page of it. Same cloth: an index at `/docs` listing every section, and each page saying which section it belongs to.
Mounts
Share one host directory across several servers — a modpack, a map set, a bundle of plugins — instead of every server keeping its own copy. The panel's administrator decides which paths on the machine may be mounted at all; a server's owner picks from those and says whether it is read-only. It is the one feature that lets data out of the host and into a container, so it does not ship without an allowlist and an entry in the activity log. Removed from the panel's tabs on 30 August 2026, where it had no backend and led to a placeholder — a tab must not advertise what does not exist.
Machines announce themselves
The panel finds another machine on the network by itself and offers to adopt it. Nothing gets typed in.
Actions across a selection
Restart, update, limit change and console command reach a hundred servers as easily as one.
Move in from another panel
Servers, eggs, users and ports come over from a running Pterodactyl or Pelican in a single run, with a preview first.
Screens that look designed, not improvised
Quests, claims, teams and ranks get real interfaces in the game — a map you click to claim a chunk, not a row of items in a fake chest.
Claim a chunk by clicking it on a map
The grid over the world, your land and your neighbours’, and the limit counting down while you draw.
Watch the world from a browser
A live view of the spawn, a build or a station, drawn in the browser from what the server sees. Modded blocks included.
A live window for your own page
Fixed views that cycle, embedded on the server’s own site, so a visitor sees the place before deciding to join.
Money the server already has
Payments, balances and shop history built on the currency a server already uses, instead of a second one nobody spends.
Machines stop at the border
Drills, saws and moving contraptions respect a claim the way a player does, so protected land stays protected.
A server behind a router is still yours to configure
Where a browser cannot reach the machine, a short code from the console pairs the two. What travels between them stays unreadable to everybody in the middle.
Command palette (Ctrl+K)
Servers, actions and the terminal are one keystroke away from anywhere in the panel.
Server metrics
Continuous CPU and RAM sampling per server with a sparkline chart in the cockpit.
Continuous health watch
The panel watches the servers and itself continuously, not once a night, and speaks up the moment something breaks.
Support bundle
A diagnostics bundle for a ticket in one click, sensitive values redacted.
Operator terminal
The terminal docked to the right of the panel: a shell on the machine and inside the server container; an agent drives the same session over MCP — one audit trail.
VIP that is yours to design
A rank hands out named benefits and the benefits are a list you edit. Flight, a seat kept on a full server, a colour, a higher home limit, cosmetics, a weekly kit. A fourth tier is a line in a file, not a new version of the mod. Nothing on the list can give anybody an advantage in the game.
Connect the server to a panel without opening a port
The server reaches out rather than waiting to be reached, so a machine behind a router works the same as one that is not. Where it connects to is a setting, so it is not tied to us.
Chat split into channels
The first time you join, a window offers the channels — Czech, English and whatever else the server sets up. You write into yours and read only that one; a command switches you. Otherwise it is the same chat you already know.
A workspace worth looking at
The tool the team spends its day in should look as good as what we put out — rhythm, hierarchy and calm, not a table of rows.
Things can be started from the workspace
A new article, a documentation page, a card, a thread — the button is always in the same corner and the editor opens over the page.
Did this page help?
A thumb up or down under every documentation page. What did not help turns up in our own queue of work.
How many people come to us
A view of traffic for the team. It arrives together with the cookie bar, because nothing is measured without consent.
Translate this for me
A button on a message, an idea or a page that shows it in your language. Only you see the translation, and the original stays beside it.
Translation as a capability
One place that translates between Czech and English, for both uses. A translation is not stored anywhere unless somebody saves it themselves.
The second language starts filled in
Whoever writes an article or a help page does not start the second language from an empty screen. The draft is then rewritten properly — nothing goes out unread.
A vote on Discord is the same vote as on the site
A reaction on Discord counts as "I want this too" on the site, and the other way round. One person, one vote, wherever they cast it — not two numbers that drift apart.
Reactions mirror the same way messages do
Voting and following work the same everywhere and stay one number — on the site, on Discord and in the apps.
One person, one page
Linked accounts, devices, points, conversations, roles and notes in one place instead of scattered over five screens.
People and moderation as a capability
Accounts, notes and a block that holds across services — always with a reason, a message to the person and a way to appeal.
Catalog, money and operations as capabilities
What we make and run, what a month costs and whether everything is answering — reachable the same way by a person and by an agent.
The account — somebody’s own place on the site
Linked accounts, devices, your own conversations, points, notifications, settings that hold everywhere, and export and deletion without writing to support.
Discord is managed from the surface, not by a script
Channels, roles and permissions as an editable surface. A change is shown as a difference against what is on the server right now before it is applied.
One blog post, every channel
Publish the daily post once and it appears on the site, on Discord and on every one of our social channels. No copying it around by hand.
Manage Discord from the admin workspace
The shape of the server — channels, roles, permissions — becomes editable from the admin area instead of a script on somebody's machine.
Discord settings saved to your account
With Discord linked to STYGION ID, choices made on Discord are saved to the account. It can be switched off from either side — the Discord panel or account settings on the web.
One language setting across services
The language you pick anywhere applies everywhere — website, launcher and Discord.
Anything personal arrives in your language
Messages aimed at you always arrive in the language you chose. Shared rooms stay in one language.
Sign in to the game without a second login
With your game account linked in STYGION ID, the launcher gets you into the game directly.
Onboarding decides what you see on Discord
You pick the products and games you care about, and only those show up. Changeable at any time.
Nightly off-server data backup
Data backs itself up off the server every night, so it survives a hardware failure.
New logo across the whole ecosystem
One logo everywhere — site, launcher, panel, docs, Discord and app icons.
Shared elements on every surface
STYGION ID sign-in, feedback, donate and the language switch look and work the same everywhere.
Docs standardised and rewritten
Every document gets one structure and one tone, so they can be read rather than deciphered.
Claims visible on maps
Claimed territory shows up automatically in minimaps and on the server web map.
Homes, warps and teleports
The everyday commands players expect, including per-rank limits.
Vein and tree mining
Hold a key to take a whole vein or tree — balanced, and respecting other people’s claims.
Feedback map API
Collects input from the web, the launcher and Discord into one place.
One mod instead of the whole FTB set
Quests, teams, claims, essentials and ranks under one roof — no stitching ten mods together.
Wiring feedback to roadmap and tickets
Turn an item into a roadmap card or a ticket without retyping it.
Drag-and-drop quest editor
Build the quest map with the mouse and see how it will look as you go.
A modern UI in game and on the web
One visual language everywhere, instead of cluttered windows from ten different mods.
Heavy work off the main thread
Saving, quests and data work stop blocking the server.
Smart throttling of distant machines and mobs
What nobody is watching ticks slower. On big modded servers you feel it in the TPS.
Fewer stalls from memory and recipe lookups
Cached recipes and chunk data, fewer garbage-collection pauses.
Quest trees, branches and secrets
Dependencies, optional branches, hidden quests and repeatable tasks with cooldowns.
Tasks for items, mobs, places and stats
From handing in an item through boss hunts to reaching a place or a vanilla advancement.
Rewards, including team-wide and permissions
Items, XP, temporary and permanent perks, ranks — and rewards for a whole team.
Teams with roles and shared progress
Invites, roles, a shared bank and chat — plus quest progress that counts for the whole team.
Claims with granular protection
Set separately what members, allies and strangers may do — from chests to explosions and PvP.
Admin UI: Discord management (MCP parity)
Admin workspace gets the same Discord control surface as MCP: read/edit channels, roles, permissions, guild settings, messages, moderation, announcements… One backend API, two surfaces — agent (MCP) and human (admin UI). Kept out of the user-facing product area.
MCP: full Discord guild management
Agent can manage the Discord guild end-to-end via MCP: read full structure (channels, categories, roles, permissions, guild settings, emoji, webhooks, automod, forum threads…) and mutate it. The same capabilities must be available in the admin workspace (UI parity with MCP — not agent-only). Goal: run and build the whole Discord from agent and web UI. Safety: admin-only, audit, dry-run, confirm destructive ops.
Global ban/unban across services
One action in ID → propagates to our servers and services. Consistent ban state.
Push notifications for internal tasks
On assign/change: the person or whole section. Web first; mobile admin later.
Notifications: person vs whole section
Assigned person → notify only them. Section → everyone in that section. Later also push to the mobile admin app.
Community section (social / community ops)
Work section for the community team — overview and tools for social ops in one place.
User admin and role assignment
User list and role assignment. Discord is the source of community roles; STYGION ID only uses the team role to unlock admin sections (as today).
Global ban / unban across services
One ban/unban across STYGION ID and every server/service we run — not a single app only.
Passkeys / WebAuthn
Sign-in and confirm without a password — next to existing SSO providers.
Steam link (optional)
Another linked account next to Discord/GitHub/Google/Microsoft.
Onboarding and module choice
First run: data path, which games to install, no bulk you do not need.
Auto-update the PLAY shell
Version check via our backend, changelog, update only with consent.
No mock data, feature isolation
Same rules as Launcher: empty state or WIP, modules isolated.
A page of its own for Workbench
It had its own page on the old site and the rewrite did not carry it over — today Workbench is one line in the product list, marked as an idea being explored. The page comes back when there is something to show; until then it would be promising an application that does not exist.
PLAY — shell for our and hosted games
One home for our own games and for the titles we host. It is not a store, and it does not replace STYGION Launcher — Minecraft modpacks stay there. Nobody is building it yet: there has to be a game for it to launch first.
Module picker + isolated game modules
Root picks a game; each module installs/removes in isolation (MC, Arma, Hytale…).
First game module + launch
When the first module lands (placeholder / own game): install, library and launch from the shell. Minecraft modpacks stay with STYGION Launcher.
STYGION ID multi-surface (web + launcher + …)
Principle (2026-07-15): most ID features on the web (workspace + login/connect outside it). Launcher = thin client. Devices, friends, profile, notifications…
Dev/ops answers for the agent (team)
The agent pulls curated development and operations facts from the team docs over MCP. Lands once the team docs have content.
Server backup — download & upload the whole database
Download a server’s entire database as a backup, and upload it back the same way.
Roadmap redesign
Clearer columns, sharper statuses and more readable cards.
Signed updates (minisign)
Self-update hardening: minisign-sign the tarball + verify with an embedded public key. sha256 is the current gate; add once the keypair + CI secret exist.
Wails desktop shell (Windows/macOS)
Native desktop around the Go core (Wails 2 + SvelteKit, no Rust). Model: embedded-server webview — the Wails window opens the existing frontend talking to the in-process Go HTTP server on localhost (minimal refactor). Powers the Windows/macOS install in the release workflow.
Playtime stats
Accumulated time after a session ends. Shown on instance detail, cards and Recent. UI refreshes after a session.
Compatible mods only
Mod search inside an instance filters to that instance loader + MC version only (no dead ends).
Achievements / challenges
In-menu badges, driven from the STYGION ID admin workspace: presets, rotation, mega-quests, configurable rewards.
GTNH special mode
See specs/2026-06-27-gtnh-special-mode-design.md.
macOS / Linux build & signing
CI build matrix + notarization/signing.
Import from other launchers
Detect + import instances from Prism / CurseForge App / MultiMC / Modrinth App. Killer for switchers.
Privacy disclosure
First-run banner, GDPR legitimate interest.
Potato Mode
Aggressive low-end preset (render/JVM/launch).
Friend VPN Tunnel
WireGuard P2P, Open to LAN → friend → encrypted tunnel.
Find out how a modpack runs for you before playing it for four hours
The launcher can benchmark a modpack on your own machine. The same scene every time, the same camera path — two machines are only comparable if they drew the same thing — and about a minute, with a number at the end. Not average FPS, because that hides exactly the stutter that ruins an evening: the median, and the worst few percent beside it. It also says **which of your parts ran out first** — a card sitting at half load while one processor core is pegged is the difference between buying the right thing and the wrong one. Useful on the very first machine: measure, change a setting, measure again, and see whether it actually helped. Send the result and a modpack starts telling people how it runs on machines like theirs — always with how many runs that is from. Sending is your choice, carries no name, and no number that leads back to you.
Cloud Backup
Panel cloud + third parties (Drive/OneDrive/Dropbox/WebDAV), AES-256 client-side, incremental.
Keyboard shortcuts (config + cheatsheet)
v1 already: Ctrl+1–7 sections, Ctrl+F/K command palette. Planned: configurable global shortcuts + cheatsheet overlay.
Guided tour
Coachmark overlay over finished features.
Mod-conflict analyzer
Mod collision detection (Phase 4).
Lockfile
Reproducible instance (Phase 4).
Multi-theme engine
Beyond Amber: switchable themes (Bone / Catppuccin…) + data-extensible registry. Today: Amber only (density + scale).
Click a server and you are in it
A server running STYGION Keystone states which modpack and which version it wants, right there in the list. The launcher picks that up: it fetches the pack, or switches your instance to the right version, and connects you. You have it but a few mods differ? It says which. You added client-side mods of your own? They stay. A server that says nothing works exactly as it does today.
Delta snapshot / rollback
Instance versioning, roll back (Phase 4).
Repair
Integrity check + fetch missing files (Phase 4).
Crash parser
Read crash log + quick-fix suggestions (Phase 4).
Advanced instance groups
Colors/cross-group sorting (partial), pin.
Screenshot manager
Per-instance screenshot gallery.
Dependency resolution
Transitive required dependencies.
Per-instance account
A different account per instance, quick switch.
Building
5Somebody has their hands on it right now.
Voting that pays, even when you are not here
A vote is worth something the moment it arrives, and if you were at work when it did, all of it is waiting the next time you log in — nothing is lost by voting from your phone. Voting several days running is worth more than voting once, and when the whole server reaches a daily goal together everybody online is paid for it. The rewards are set; what is left is getting the server listed where people vote.
The Keystone page, built again from nothing
Keystone's page gets rebuilt rather than edited — the same product, said properly: what one file replaces, what it does the first evening you install it, and the load test nobody else offers. The mod wears its own mark throughout, not a stand-in drawn for it.
Explorers of the Void
The season, as a page. Not one leaderboard of whoever has the most hours, but a crown for each way of playing — engineer, mage, adventurer, builder — a bar for what the whole server has finished together, a map of which chapters nobody has touched yet so a new player knows where to go, and a page of your own you can send to somebody. Past seasons keep their final standings. The page is built; what it is waiting for is the server being able to say how far everybody has got.
VIP on MC
Three ranks on a page of their own. Each card says what the server does today — your name in colour wherever it appears, and a place kept for you when the server is full — and, separately, what is still on the way. You pay for the first list. What a rank never touches is what happens between you and another player: no sharper sword, no head start, nothing anybody else loses because you bought it.
Cross-linking roadmap, docs & pages
The roadmap and docs as one connected whole — a task shows its related docs and vice versa. The linking foundation is done; the on-page display remains.
Done
250Built and out. Newest at the top.
A project can be renamed, cards and all
A product gets renamed and its key is the last thing to follow — it is visible in the board's own address, and the only way across was to make a second project, move every card by hand and delete the first. Nobody does that twice, so the key stays wrong. Now it is one step: the cards and the documents pointing at the project go with it. Renaming onto a key that already exists is refused — merging two projects is a decision, not the side effect of a typo.
Documentation read out of the mod
Every module has its own page: what it does, what can be set on it, which commands it adds, and what to do when it behaves differently than you expected. Alongside it a complete reference to the interface — every path, what a key must hold to reach it, what it takes and what it is for — and, for settings, examples both ways: a server reached only from inside, and one somebody has to reach from outside. None of it is written from memory: the mod hands over the list of everything it has, and the pages are built from that, so after a fix they can be squared up again rather than guessed at.
Pick from what the pack actually has
A condition that names a mob, an item or a block should be something you click, not something you type from memory and get wrong. The server can be asked what it has loaded — every registry, everything in it, and the tags over it — with the mod each entry came from and the best name a server can give it. Modded entries included, without the mod having heard of the mod. It is what the editor's pickers read, and what quests, shops and rewards will read after them.
A rank the site can grant
A rank no longer has to be played for. A site says "this player holds this rank until this date", the mod writes it into the same list as everything else somebody holds, and takes it away on the day by itself — nobody has to remember to. And it finds the player through their linked Discord rather than a name typed into a form, so on a server without Mojang what somebody bought reaches the person who bought it.
Prove in game that an account is yours
Ask for a code in game, then type it on Discord as a command — so the code never becomes a message anybody has to delete, and the reply is visible only to you. A server that does not ask Mojang has no other way of knowing who somebody is: a link was made from inside the game under that name and confirmed by an account the game does not hand out. Which is why a shop can ask about it and deliver what somebody bought to the person who bought it, rather than to the right-looking name.
Ranks you play your way into
Six ranks nobody can buy, earned by hours actually played rather than hours logged in — Wanderer, Builder, Engineer, Veteran, Architect, and at five hundred hours something older than all of them. Each one puts your name in a colour of its own in chat and in the tab list, and a bought rank never hides one: they sit side by side because they say two different things about you.
Pay and have it straight away
You buy a rank on the site and you have it in game within the minute. Pay by the month or by the year, and it keeps going until you stop it — which takes two presses on the same page you bought it from. Stopping is not us taking a paid week back: it runs to the end of what you paid for. To wear it, log in to the server and say which player you are; we ask the world whether you are standing in it, so nobody can put a tag on somebody else.
A page worth the mod, and everything ready to launch it
The product page is built whole while the mod is still being finished, so on release day it goes live together with the first download. The listing texts, the announcement and a short video are written before anybody is waiting for them.
A processor list that stops printing rubbish
Nearly a quarter of the models in the picker carry no cores and no clock, some names are numbers lifted out of the wrong column and are not processors at all, and because the list is sorted by name the rubbish is the first thing you see when you start typing. Somebody looking for their own chip meets six things that do not exist before meeting one that does. The list gets rebuilt from its sources rather than patched row by row, and the script that builds it lives with us so the next refresh is a command instead of an afternoon. What has no specification is dropped rather than shown empty, a model is listed once, and what you type is matched against what people actually own.
The runs are on the page before you pick anything
Today the page asks three questions and shows nothing until it has a run from a pack close enough to yours — which for almost everybody means an empty page and a sentence explaining why. That was written against false precision and it bought it with a page nobody can use. The measurements go first instead. Every run is listed the moment the page opens; the machine and the pack move up top as a filter that only reorders and annotates, never unlocks. Each row says for itself how near it is — how much of your pack it shares, and whether the processor was measured or borrowed from a neighbour. The threshold stops deciding whether you see a row and starts deciding how confidently it is worded. Any row opens into the whole run.
Measurement that names the mod eating the tick
Test players spread far enough apart that each holds its own piece of the world, and the profile of a run splits the tick between individual mods — not only while the server is struggling, but all the time. A server that opts in then sends one anonymous sample a day, so the public figures describe real play rather than a synthetic test. One command turns it off.
Find out what a modpack costs before you buy the machine
Search for your modpack by name, say what your machine is, and read what packs like yours actually did on machines like yours: how many players they held, what gave out first — the processor, memory, the collector or loading chunks — and what each mod in them cost. Nobody publishes that last number, for any mod. No pack name is ever typed by the server itself: a server is identified by the mods it actually loaded, which is both easier and more honest, because two servers with the same mods are comparable whatever they call themselves. Every number carries the count of runs behind it, and where there are not enough, the page says how far off its nearest match is instead of printing a number anyway.
No IP address is ever written down
An address exists only while somebody is connecting, and what the server records instead is a place: a one-way token under a key that server made for itself and keeps to itself. The same machine still reads as the same machine — which is all anything ever asked — and nobody, us included, can turn a place back into an address. It also makes the warning better: "somebody is joining as you, from somewhere you have never connected from" is a question a player can actually answer, where four numbers about their own house is not.
Live metrics and lag-spike hunting
TPS, tick time, memory, chunks, entities and players sampled continuously and kept for a week, so "it was bad last night" becomes a graph instead of a memory. Read in the editor, over the interface, or as it happens. It is also what the machine test later reads to say how many players this server actually holds.
Nothing changes without a record, and a change can be undone
Four things can change your server now — the console, the editor, the interface and the assistant — so "who turned that off on Tuesday" needs an answer. Every change made over the interface is written down with the key that made it and the person it was made for, and so is every refusal, because a key repeatedly trying what it may not do is the only sign you will get that an integration has been taken over. Settings go further: each change keeps the value it replaced, and one press puts it back — in the editor or from the console, because at two in the morning the browser is usually the thing you do not have. A credential is recorded as having been replaced and never as what it was replaced with.
Ask the server what is wrong with it
Ask in a sentence and get an answer that read the numbers instead of guessing: what the last hour looked like, why it stuttered at eight, what changed since yesterday. It can also propose a change to the settings — shown as a before and after, applied only when you say yes, written into the same history as everything else, and undone the same way. Hand it the last stretch of console and chat and it says what looks wrong, which is the job nobody has time for at the moment it would help. The conversation is one thread, whether you opened it in game, in the editor, or in a chat channel, and it is still there after a restart. A server owner brings their own model — anywhere they like, including one running on their own machine — and nothing secret is ever part of what is sent.
Bots that stand in for players
Spawn a marked bot that stands in for a player: it holds its chunk loaded, walks a small circle of where you put it, and costs the server what a person costs — because a bot standing still measures a cheaper server than the one you actually have. Labelled everywhere it appears, never counted as a real player, and taken out again when the test ends. It is a measuring instrument and nothing else: it never breaks, places or takes anything.
One command says how many players the machine actually holds
The question "how many people fit in here with this modpack" is answered today on the evening it matters. `/keystone test 20` answers it on a Tuesday: the server measures itself doing nothing first, then test players arrive in groups so that as much of the world loads as really would, and there is a verdict at the end. Because a quiet world measures a quiet world, the test can bring a known amount of extra work with it — the same amount on every machine and every pack, so two answers can actually be compared. Not just "TPS was 18" but where the time went: which mod, which place, which things. Nothing is written to the world, and every test player is taken out at the end.
An article announces itself, exactly once
Publishing an article means the site and Discord at once, in both languages. Fixing the text rewrites the post instead of sending a second one, and unpublishing takes it back down.
An agent signs in instead of being handed a key
Connecting a tool to STYGION is a STYGION ID sign-in, the same one the site uses. What it may then do follows from who you are, and changes the moment that does — a role taken away takes effect on the next request, with nothing to revoke. It shows up beside your browser and your launcher in your devices, and signing it out there ends it. Nothing to copy from one place to another.
The whole Discord, run from the backend
Everything a person can do on our Discord — rooms, roles, who can see what, the pinned panels and their buttons, and putting the server back in line with how it is meant to look — the team's tooling can do too. The hand-run scripts that each carried their own copy of the server's text are gone.
A player list that says something
The list everybody opens twenty times an evening gets a header and a footer the server writes itself — the number of people, how the server is doing, where to find its Discord, whatever it wants to say — with each person's rank in front of their name. On newer Minecraft versions it is sorted by rank instead of alphabetically, so the list means something at a glance; on older ones there is no way to do that without taking name colours and friendly fire away from other mods, so it is left alone and said out loud rather than half-done.
Tickets that live with the server, not in a chat channel
One command in game opens a ticket, and what somebody can open is a list the server writes — each kind going to the people who handle that kind, and inside them to whoever is carrying the fewest. The answer arrives in chat, and when the person was away, the moment they next join. With a chat bot each ticket also gets its own private room for its team and the person who asked; when it closes the room goes and the whole conversation stays, because it was never kept in the room in the first place.
Vote rewards that actually arrive
Vote sites disagree about how they talk to a server, so Keystone speaks both ways at once and works on all of them rather than on half. A vote that arrives while somebody is away is kept and paid the moment they next join — once, in one line rather than ten. What it is worth is lines you write: a command for anything your mods can do, or a rank or perk that goes into the same list as everything else somebody holds and ends on its own date. Voting several days running can pay for itself, and a goal the whole server counts towards gives everybody online something when it lands. Nothing is accepted that is not properly signed, and the way in stays shut until the owner opens it.
Playtime and ranks
Playtime with two clocks — time connected and time actually moving — and the server decides which one a rank reads. Promotion on more than hours: mobs killed, blocks mined and placed, biomes visited, distance walked, each by the game's own name, so a modded creature counts without the mod having heard of it. Write the promotions as lines, commas meaning and; a line that does not make sense is named in the log rather than guessed at. `/playtime` says how far along you are, for anybody the server has ever seen — online or not.
Discord bridge
Chat and events both ways: what is said in game shows up on Discord and back again, with everybody wearing their own name and face. Roles that follow a promotion, a ban that means it in both places, the console in a channel, and a message when the server is struggling — and another when it is fine again. Prove an account is yours with a code the game gives you. It worked in 1.0.1 through code carried over from the old mod; that was deleted whole on 2 September 2026 and written again, properly, on all four builds.
Nobody plays wearing somebody else's name
A server that does not check with Mojang hands whoever types a name that name — including yours. Keystone closes it three ways, and the server owner picks which. A password, set once and typed after. Or nothing to remember at all: the moment somebody joins as you, a message arrives on Discord saying so, and you answer with a button — which also means an attempt you did not make reaches you as a warning instead of as a quiet theft. And a name that belongs to a real bought account cannot be worn here by anybody who cannot prove it is theirs. Until somebody has proved it they stand where they arrived, unable to move, be hurt, speak, or run a command.
Bans that end by themselves, and a history that remembers
Minecraft's own ban list has no expiry worth the name, so "banned for a week" has always meant a ban plus something else remembering to lift it. Keystone keeps one ledger instead: a reason, who decided, where it came from and when it ends — and it ends on its own. Nothing is ever deleted, so "has this person been in trouble before, and who let them back" is a question with an answer. You can also finally name somebody who is not standing in front of you: the server remembers everybody it has seen, follows a rename, and says so when one name has been worn by two accounts.
Nobody is turned away with "Kicked by an operator"
The screen somebody reads when they are refused is the moment they decide whether they were treated fairly — and Minecraft's own version of it says "You are banned from this server." with no reason, no name, no end date and nowhere to appeal. Every one of those screens is now a line you write: banned, banned until a date, kicked, maintenance, and a full server. The reason, who did it, when it ends and how long that is from now are filled in for you, and one command shows the finished screen exactly as a player reads it.
A cleaner that merges before it deletes, and maintenance mode
Stacks of the same item lying near each other become one — most servers go from twelve hundred entities to four hundred and nobody loses a thing. Only if that was not enough does a countdown start and anything get removed: items, experience and spent arrows by default, never mobs, with named and tamed animals and anything the game refuses to despawn protected. A server with nothing to clean is never counted down at, and one command says what a sweep would take before you trust it. Maintenance mode closes the server with a reason, and tells whoever tries to join the same thing in the same words.
Notices worth reading
A server that says the same three things to everybody every half hour teaches people to scroll past all of them — including the one that mattered. Here a notice carries who it is for, so somebody who already voted is not asked to vote. Chat, the action bar or across the screen, never twice in a row, and never to an empty world.
Backups you can afford to keep
Every backup is a whole world you can copy out and run — but a part of the world that has not changed since the last one is shared with it instead of copied, so a week of a 5 GB world costs about seven, not thirty-five. Taken the only way that is safe on a running server: saving flushed and paused for the length of the copy. Older ones thin out rather than vanish, a copy can go somewhere off the machine, and restoring is prepared and done on the next start — because a world cannot be swapped underneath a server that is playing.
Restarts that know whether they are needed
A restart at six because it is six is downtime a healthy server did not need. Keystone schedules a time and a reason: memory and TPS fine, uptime short — it is skipped and the console says so. Needed but somebody is playing — it waits for the world to empty, up to a limit you set. Nobody there — it goes quietly. The world is saved and flushed first, a boss bar counts the rest down, and on a machine with nothing watching it the server still comes back on its own.
One timetable, not four timers
Restarts, backups, cleanups and announcements are the same kind of thing: something with a time, a warning before it and a record after it. Keystone runs them off one schedule, so the countdown looks the same wherever it comes from, two heavy jobs never land on the same minute, and one screen shows what is coming and how long is left. Everything that ran is written down — including what a cleanup removed.
On Linux the launcher got faster and sign-in opens a browser
The interface was being repainted on the processor on every Linux machine because of a bug that affects one kind of graphics card — it is now worked around only where that bug is. Signing in tries several ways to open a browser, and when none of them catches, it shows the address with a copy button instead of waiting on a window that never came up.
One download on Linux, nothing else to install
The Linux build carries everything it needs inside the file you download. No prerequisites, no instructions to read, no window that opens up blank. 0.8.0 did exactly that — it also carried a library belonging to the machine it runs on — and 0.8.1 fixes it at the source: only what is genuinely ours goes into the bundle, and the build stops if a host library ever gets back in.
Tooling cleaned up and upgraded
The tools that went unused, or did a job worse than grep does, are gone; a small core stayed and what raises the quality of the result was added. Keeping the set small has been continuous work since, not a tidy-up somebody does once.
Our own STYGION agent skills
Eight skills with one source: the roadmap and documentation, the standards, the site's own grammar, Discord, Keystone, the write-ups, announcements and pushing back on a plan. They live in one directory the backend serves from GitHub, so committing one publishes it — and nobody has to remember a procedure somebody already wrote down.
The MC server page
One page with all of it: how many people are on right now, the address to copy, what you play it with, what is inside and how to start.
Taskboard: the work finds the person
Assigned work — from the roadmap and from inside the team — arrives in its own channel, and only for the person it belongs to. Two buttons: freeze it when now is not the time, and done when it is. Nothing is deleted, only archived, so there is something to count how long things really take.
One place to see and revoke links
Your account shows what you have linked and everywhere you are signed in. Unlinking an account or signing a device out is one press, and it takes effect everywhere at once.
An app signs in with one button
Press Connect, your browser opens on a page that already knows which app is asking, and one button finishes it. The short code stays only as a fallback for a machine whose browser will not open — there is no password here anyway.
Sending it out is a visible step
A release is finished in one place: the version, the channel and everywhere it should go. Before it is sent, exactly what would go is shown file by file — an upload cannot be taken back. What failed is visible and can be sent again.
Edit tasks in UI + MCP
Everything that can be done to a task works from the workspace and from an agent — it is one capability described once, not two interfaces that drift apart.
Assign: person or section
A task goes to one person, or to a section — and what goes to a section, somebody takes. Until then it is visible as waiting on everybody.
A taskboard in the team workspace
A taskboard for the team behind the same gate as the rest of the workspace. Anybody on the team creates a task, gives it a title and a description, and hands it to a person or to a whole section. It is not the public roadmap and never mixes with it.
Language parity — what is missing in Czech
A view across everything written: what exists in English with no Czech version, and what the Czech version is older than.
The team workspace, rebuilt from nothing
Built and live at admin.stygion.eu: its home is one queue of what is waiting for somebody, not a menu. The chronicle of changes, people, releases, numbers, money, language parity and the taskboard. What each person opens follows from the role they actually hold.
Web redesign — brand identity across all pages
Delivered by the site rewrite, live since 22 August 2026: one visual language across the site, the roadmap, the documentation, the workspace and the product pages, motion and page transitions included.
Workspace, account and documentation are three separate applications
Each has its own frame, its own addresses and its own navigation. Somebody visiting their account does not get a tool built for a shift, and the other way round.
GDPR export and account delete
Download everything we hold about you in one press, and delete the account and what belongs to it in another. No writing to us, no waiting.
MCP tools for internal tasks
Agent reads and updates internal tasks like a human in the workspace — scoped token, audit.
Internal tasks as a capability
A taskboard for the team: create, assign to a person or a section, start, freeze, finish, drop. It works from the studio and from an agent, because it is one capability rather than two.
Backend rewrite: one core, three interfaces
Done — the new backend has been live on stygion.eu since 22 August 2026 and the old one is gone. Built around one rule: whatever a person can do, an agent can do. Every capability is described once and the interfaces are generated from it, so the site, the apps and an assistant always see the same thing.
Standards say where a thing belongs, not how it looks
The rulebook turns into a map. Building feedback, tickets, prices or announcements? It points straight at the system that already handles them, so nothing gets built twice. What must never break stays binding; how things look moves to the brand guide, where a decision comes with its reason.
The light theme is readable, and a page holds its shape while it loads
Every status colour — the green of a running server, the amber of a warning, the red on a delete button — was tuned for the dark theme and drawn unchanged on the light one, where several of them were barely legible and one was effectively invisible. They now have their own values on light, measured rather than guessed. Lists no longer print a grey word where a table is about to be: the space is held in the shape of what is coming, so nothing jumps when the answer lands. Switching between sections moves rather than cuts.
Asking whether you mean it looks like the panel, not like the browser
Deleting a server, dropping a database or restoring over live files used to ask through the browser's own grey box. Now it asks in the panel's own dialog, in a sentence that says what actually happens rather than "Are you sure?" — and for what cannot be undone, the name gets typed out before the button turns on. Escape closes it from anywhere, the page behind it stays still, and focus comes back to the button that opened it.
The whole panel in English
The panel mixes two languages on one screen today: a Czech heading over a card that says "Subscription — active", "Linked", "Plan", "Last checked". The Application API screen is entirely Czech; Updates beside it is almost entirely English. This is not a missing translation — it is two decisions at once, and a reader cannot tell which one is ours. The panel is sold outside the Czech Republic, so the language is **English, the whole panel, with no exceptions** — every label, message, empty state and error. Not bilingual, not a switch: one language, until localisation is a real feature with a design of its own. Until then a mixed screen is worse than either clean answer. That includes what the panel writes away from the screen — the `[stygion] …` console lines, audit entries and API error responses.
A tag builds the mod and releases it
Tagging a version builds every combination of loader and Minecraft version, boots a real server on each of them, and puts all four out together with what changed. A build that has not started, registered its commands and answered a call never goes out at all.
Logo → back to the homepage
Clicking the logo top-right returns to the homepage.
Developers section in your account
Make, edit and take down your Play buttons in your own account. The button on your site is a picture served from us, so a change here reaches every page carrying it — you paste the code once. Anything else you build on top of STYGION and put on your own site goes in the same section.
Its own look, not a roadmap clone
The same clarity, but a layout and palette that fit feedback rather than plans.
States: new, in progress, resolved
Every item shows where it stands — nothing disappears without an answer.
Feedback map — a public board
Feedback from anywhere in one public place, in the same spirit as the roadmap.
Launcher devices on the web
On id.stygion.eu account: list linked launchers (device label, last seen) and revoke — no launcher required.
Data export and account delete in UI
User path for GDPR export and delete — wired to the backend.
A STYGION wallpaper section
Downloadable wallpapers for desktop and phone, in the resolutions people actually use.
Full website rewrite
The site gets rebuilt from the ground up so every page holds one line and one standard.
Stability & security pass (0.7.x)
Safe pack extraction, secrets never in logs, crash-proof database upgrades, downloads that neither hang nor corrupt, and a launcher that always tells you when something fails.
Full visual overhaul of the launcher
The whole look gets one design system shared with the website: new tokens, rebuilt components, smoother motion and unified error handling.
No mock data
No fake product data in Tauri runtime — real empty state or WIP. (Browser dev mocks only for UI preview.)
Feature isolation
Each screen/feature in its own module.
Tauri 2 + SvelteKit + Rust core + SQLite
Thin Tauri bin, isolated modules.
Discord Rich Presence
Discord shows the modpack you are playing. Toggle in Settings → Privacy.
Server Hub
servers.dat union, live ping, Home row (fit rails) + full Servers view. Join via Quick Play / launch modal.
No hidden telemetry / benchmark / HW scan
No secret HW scan / FPS benchmark / hidden beacons. Only the disclosed anonymous version ping (opt-out in Privacy). Presence + Discord RP also toggles.
Anonymous opt-out telemetry
Version/channel/os/arch + random install_id, no PII, IP not stored.
Launch update prompt + badge
Bottom toast: Install / Later / Details→Settings Updates + settings badge. Auto ON: ~0.7s toast then overlay. Auto OFF: prompt only. Changelog snippet in toast.
Signed manifest
SHA256 + Ed25519 artifact verification, signed download URL.
Release Control (admin)
Admin channels alfa/beta/release/canceled (backend + id.stygion.eu admin), auto from GitHub. Not in-app UI — release pipeline for the launcher.
Updates page
Channel status, manual check.
Changelog on update
Release notes before/during install.
Auto-update on launch
Tauri updater + channels. Auto-update default ON. Soft prompt + badge on launch (see dedicated card). Fullscreen overlay while installing.
Command palette (Ctrl+F)
Ctrl+F / Ctrl+K: navigate, launch instance, join server. Titlebar trigger + fuzzy filter.
Notification Center v1
Titlebar bell + history (update/friend/import/mod), unread badge, localStorage. Soft update toast stays. 0.6.
i18n cs/en
Complete localization.
App-wide scaling
80–150% slider (whole-app zoom), persistent.
Density
Comfortable / compact.
Page transitions
Slide+fade between screens.
MC changelog modal
Mojang v2 patch-notes feed (index + per-version contentPath), exact-match; missing version → nothing. Large readable modal.
Frameless shell
Custom titlebar (search + account chip + window controls), sidebar.
Premium onboarding
Welcome → data folder → init progress. (Theme step dropped — v2 ships Amber only.)
Dead CF reuploads → Modrinth (hardcode)
Old packs point at removed CF projects (e.g. unofficial CC: Tweaked 1579830). Launcher fetches the same jar from official Modrinth (SHA1/filename) in the normal download loop — no manual CF gate. Not CF CDN invent.
Mod update checker
Instance detail: check updates, per-mod badge, update one/all (CF+Modrinth, MC+loader). 0.6.
Drag & drop import
Drop .mrpack / CF .zip onto the library → new instance (Tauri drag-drop + overlay). 0.6.
Discover: downloads default, search → relevance
Empty catalog = most downloads. On search, sort switches to best match; clearing query restores downloads. Back from detail resets filters.
Install progress: speed, ETA, files, current jar
Install modal: pack art, %, average speed/ETA (not burst EMA), live file count (parallel CF), current jar name under the bar. Phases pack/extract/resolve/download.
Resource/shader install paths
CF classId 12 → resourcepacks/, 4559 → shaderpacks/, else mods/. Import no longer dumps everything into mods/.
CF install by project ID
CF ?slug= (Create World CZ), title→slug, paste CF URL, project ID, multi-query + title rank. Fix for all packs, not one special case.
Per-instance mod manager
List, enable/disable, add/remove a mod.
CF locked: official web + website API + install panel
downloadUrl null → official CF page (attribution). Download via CF website API for exact fileId (no invent CDN). WebView DENY wrong versions, SHA1 after write, install side panel steps 1–3 (Skip/Cancel/Retry, cs/en), 404 → Skip.
Import .mrpack / CF .zip
BOM + case-insensitive manifest.json/modrinth.index.json, clear errors (not a ZIP / missing manifest).
One-click modpack install
Install a chosen modpack version from pack detail (one action → instance + live progress). Card hover quick-install is a separate card.
Unified browse
CurseForge + Modrinth in one catalog, relevance ranking, infinite scroll.
World management
List worlds from saves/, open folder, zip backup under backups/worlds/. Restore = manual unzip (next step).
Delete instance + files
Removes the DB row and the on-disk folder.
Instance detail
Tabs (overview/mods/logs…), per-instance RAM·Java·JVM override.
Modpack logo on the card
CF/Modrinth logo, letter fallback.
Card size S/M/L
Fixed track widths, consistent scale.
Groups (folders)
Create/rename/delete groups. DnD works in Tauri/WebView2 (module drag state + text/plain). No groups = free packs (“Ungrouped” label only after first group). 0.7.
Instance library
Grid/list, sorting, search.
Discord profile picture (CDN sync)
On /me and login the backend fetches the real Discord CDN URL; launcher shows it in the footer (own profile). Letter fallback. 0.6.
STYGION ID integration
Device link (browser + loopback), token, social REST/WS, user search, Discord avatar CDN (live sync). Friends on the web too.
Multi-account library
Switching, active account, skin/head render from the real texture.
Offline accounts
Local profile without Microsoft.
Microsoft auto login
Auth-code + PKCE + loopback redirect (browser flow, not device-code).
Cross-platform data dir
directories crate (Win/macOS/Linux), optional data-folder move (copy→verify→relaunch→delete).
Hidden consoles
Processor/java subprocesses without a console window (Windows CREATE_NO_WINDOW).
LWJGL natives
Modern :natives-* jar stays on the classpath (self-extract), legacy flat extraction.
Java auto-detect + download
Adoptium/Temurin per javaVersion, checksum, per-major runtimes.
Fabric / Quilt launch
Loader profile merge, libraries from loader meta.
Forge / NeoForge launch
Loader merge into vanilla data, installer processors, library dedup (key group:artifact:classifier).
Vanilla launch
Mojang version manifest → asset/library resolver (shared dedup store, SHA1) → spawns the real MC.
Everything you touch answers back
Press a button and it moves under your finger. Start something slow and it says it started. Finish it and a short message confirms it. No dead clicks, no button greyed out without saying why.
When something fails, it says so
A failed load and an empty library are told apart everywhere — library, servers, worlds, the home rows, the command palette, your reports — and each offers to try again. Errors read as sentences in your language instead of the raw text from inside.
Panel support goes into the one queue
Writing to us from inside the panel lands in the same queue as everything else, filed under the STYGION ID the panel is licensed to. Nothing to set up: if the panel is linked, it can write. The reply arrives in that account, and the panel links straight to it.
Quick install on pack card
Install on the card opens a version-picker modal (default latest) — no longer a silent install of the latest version without confirmation. See "Modpack version switch" for the full update flow.
Modpack version switch
Install (card and detail) opens a version-picker modal, defaulting to the latest installable version. Launching an instance whose pack has a newer version available prompts to update first. Update reinstalls pack files while preserving saves/config (snapshot before, restore after) — not a finished delta-diff.
Click an author, see everything they made
The author's name is a link everywhere in Discover — on the card and in pack detail. It opens their own page with all their modpacks, and back takes you exactly where you were.
Friends, chat and who's playing right now
Add a friend, see who is online and what they are playing, and write to them without leaving the launcher. Built once already and being rebuilt on the new STYGION foundations, so it comes back for good.
A Play button that works from anyone's website
A player clicks Play on a server owner's own website and ends up standing on that server: the launcher opens, asks once, installs the pack and joins. The button itself is served from us, so the operator can change what it says and where it goes without touching their page again.
Stop an install you didn't mean to start
Every install can be cancelled at any point, including one running in the background. What was half-downloaded is cleaned up, nothing is left behind, and the next install starts normally.
Sign in with one button
Connect STYGION ID opens your browser, you sign in there and press one button — the launcher picks it up by itself a second later. Nothing to copy, nothing to type.
Real Panel screenshot on /core
Marketing dashboard shot from a running instance (devdata has a seeded DB with 2 servers). Blocked by the auth gate (login required) + offline server status without podman. Best captured from a deployed/Linux instance. /core meanwhile uses an honest terminal visual.
Rebuilt from nothing, in Java
One mod for both loaders and more than one Minecraft version, written so a new game version costs a small bridge instead of a rewrite.
Secure foundation: auth and fail-closed start
Admin only after sign-in, safe startup, data migrations, no demo content in runtime. Local-first, no required cloud.
Build your own on top of it
Keystone is open to addons: write your own module, quest task, reward or perk against an interface that travels inside the jar you already downloaded and carries no dependencies of its own — and it behaves exactly like the ones that ship with the mod.
Drive the server from your own tools
Everything the mod can do is also reachable over an interface, with keys you can keep narrow. Anyone can build a panel, a bot or a dashboard on it, not only us.
Everything a player holds ends on a date, and says where it came from
Bought, played for, won in a quest, given by an admin. One list, one history, and it expires on its own without anybody remembering to take it back.
Everything can be switched off
An unused module never loads — it costs no memory and no CPU.
Web control panel
Configure the whole mod from a browser instead of editing configs over SFTP.
Changes apply without a restart
Save on the web and it is live in game — nobody gets kicked.
Ranks and permissions without another mod
Inheritance, prefixes and chat colours built in — an ordinary server needs nothing extra.
Access via scoped keys
Every integration gets exactly the permissions it needs — and nothing more.
Runs on Fabric and NeoForge, on more than one Minecraft version
One mod, both loaders, and a version range rather than a single build. Written so that a new Minecraft version costs a small bridge instead of a rewrite.
The editor comes with the mod
The web interface ships inside the download and opens straight from your server. No account anywhere, and it works with the cable pulled out.
Server users and access
Done on 30 August 2026 (0.3.5). A server can be shared with other accounts, and a permission is named after the thing it opens — the same eleven words the tabs are called: console, command, power, files, backups, schedules, databases, network, startup, settings, activity. Enforced at one gate on every route; deleting a server and the Users tab stay owner-only, because somebody who can grant themselves more has all of it. SFTP answers to the same permission as the file manager. A stranger gets 404, not 403. A shared server appears on the dashboard of whoever it was shared with, and the panel hides the tabs and buttons that would only answer 403.
Seven days to try it
Done on 30 August 2026. The week runs from the day of the install, not the day somebody got round to linking an ID — otherwise it is spent on the setup wizard. It needs no network at all: it is a fact the panel holds itself.
Local accounts, licence on the side
Done on 30 August 2026. The accounts stay the panel's own and the licence rides alongside them on a STYGION ID. A pairing code in Settings → Subscription, seven free days from the install, fourteen days of grace when we cannot be reached. It locks exactly one thing: creating a new server.
The panel is drivable over MCP
Done on 30 August 2026. The panel has its own MCP surface at /mcp/v1: servers, console, files, backups, schedules, databases, ports, eggs, nodes, activity, the updater and the licence. A tool calls the same service the panel does — no back doors — and whatever is not wired into an install is not advertised at all.
Live console (WebSocket)
Done on 30 August 2026. The console belongs to the server, not to whoever is looking: one reader lives as long as the container and feeds a buffer viewers only read from — so opening the page is instant, nothing is lost while nobody watches, and ten viewers cost what one does. Start prints what it is launching; Stop and Kill announce themselves when pressed; a failed action is written into the console. The connection reconnects on its own and does not duplicate the scrollback when it does. Commands travel down a pipe the panel owns, so they survive a panel restart — `podman attach` closed a server's input for good, however it ended.
An uploaded file does not stop the server
Done on 30 August 2026. Under rootless podman the server now runs as root inside its own namespace — and that root *is* the panel user who owns the files. Ownership lines up by construction, for an upload and after an install alike, and there is no chown to run over SSH anywhere.
Multi-node and capacity
More machines, allocation, health — after a solid single-node core.
Web installer Linux (alfa live)
Shipped, and finished on 30 August 2026: the installer asks for a domain, takes a certificate through Caddy, opens the firewall, installs podman when no engine is present, verifies the downloaded tarball against its .sha256 before unpacking it, and generates the MCP key. It can run a second instance on one machine, uninstall itself, and install from a file for a machine with no internet.
Self-update + channel selector (servers untouched)
Panel self-updates from Release Control: channel selector (alfa/beta/release), signature verify, binary swap + restart — managed servers keep running.
Release workflow + updater
A tag builds five platforms with the embedded frontend and attaches the update manifest the panel consumes.
Updater: progress modal + auto-refresh after restart
Done on 30 August 2026. The dialog holds from the confirmation to "version X is running": downloading, verifying the checksum, restarting. The page then comes back on its own. No percentage bar — the update is one server-side call, so there are no honest percentages, and inventing them would be worse than showing none.
Safe self-update: health-check + auto-rollback
Verify the new build boots before committing; auto-restore the previous version on a crash loop so an update can never take the Panel down.
Panel update keeps servers running
When the Panel updates and restarts, running servers and services keep going uninterrupted.
Discord beside the panel
A panel account links to Discord — the operator's and everybody else's alike. The operator then points a bot at a channel and it says what happens to the server on its own: planned maintenance, a crash, an update that finished. People hear it where they already are instead of watching a panel for it.
Your own backup plan, your own storage
Everyone sets their own schedule and destination for their server. It is encrypted before it leaves, and a restore is rehearsed from time to time.
Read the modpack from the file
An uploaded archive reveals its loader, game version and required Java on its own. The panel turns that into a plan, shows it and runs it.
Server reinstall
The egg's install runs again into the existing files in one click, with a confirmation and live progress in the console.
Egg catalog and import
Built-in eggs with typed installs, plus Pelican egg JSON import and export including install scripts.
Host tuning
The kernel values game servers need (map count, open files, listen backlog) apply in one click — with a backup and a way back.
Port allocations
Extra ports beside the primary one — the container publishes them on its next start, the panel guards collisions.
Managed databases
One-click MySQL database and user provisioned for a server; the password stays sealed until the operator reveals it.
Activity feed
The audit log as the machine's diary — panel actions, installs, terminal commands and agent work in one trail.
Scheduled tasks (cron)
Timing server actions — restarts, backups, commands — via a cron expression.
Startup editor
The startup command, stop command and variables are editable right in the panel; changes apply on the next start.
Encrypted backups with retention
One-click server backup, encrypted, with configurable retention and a guarded restore.
File manager and SFTP
Browse, read and write server files in the panel plus SFTP access keyed to panel accounts.
Web & backend security audit
A deep review of our whole security posture: backend and site code, server configuration and the live infrastructure. Seventy-seven specialised checks whose findings are independently verified afterwards. The outcome is a ranked list of issues with a remediation plan.
The mod has its own page
What Keystone is, what it replaces, how the four combinations of loader and Minecraft version differ, and where to get it. Until the first build exists the download says so plainly rather than pretending.
A listing that would go out half-filled does not go out
What each portal is told about a file — which Java it wants, whether it is a server mod, what has to sit beside it — is written down per product and checked before anything is sent. The press shows exactly what would go, file by file, because an upload cannot be taken back afterwards.
A version reaches CurseForge and Modrinth from one press
Every build we tag is listed for the team to place on a channel, and a mod version goes out to the portals people install from — every jar of the build, with what it was made for written on it. Where it went and how the review is going stays visible beside the version.
Your account, on its own address
Everything about you in one place: how you sign in, the Minecraft name your rank is worn under, what you are paying for and the way to stop, everything you have written to us, and where you are signed in. A copy of the lot is one press away, and so is deleting the account.
The shop opens when the world does
Ranks go on sale as a decision somebody makes, not as a side effect of the payments being wired up. Until then the shop simply is not there. Closing it later never touches what anybody already paid for: a rank runs to its date and whoever is paying can always stop.
An idea posted on Discord is on the site too
Post an idea in the Discord forum and it shows up on the site as well, with the same count. Press "I want this too" in either place — it is one number and it stays the same in both.
You can see how long a taken row has left
The time left stands beside the name, and one press adds another hour. Somebody else’s row shows it too, so you know whether waiting is worth it.
A row in the queue offers what can be done with it
Every kind of row knows what it is waiting for — a conversation offers “resolved”, a version its channel. The queue has no one-size button.
A resolved thread reopens for the person who wrote it
A finished thread closes to everybody else, but its author can say it is still broken — which brings it back to us. Voting stays open.
The studio’s numbers in one place
How many people have an account, what they asked for, what we released and how many installations checked in — counted from what already happens here, without following anybody.
Catalog: what each product page lists
A product page’s features are put there from the roadmap — one place for the decision “this belongs on the page”, so the page cannot fall behind what was actually built.
A product page lists its features from the roadmap
What a product does is not written twice. The page lists cards from the roadmap, and the line between what it does and what is coming is a real release rather than a status on the board.
I have got this
When somebody on the team picks your question up, the others can see it — so two people do not write you the same answer.
The numbers we already have, in one place
Downloads, ideas, questions, sign-ins — what happens on our own machines can be counted without tracking anybody.
What most people want and has waited longest
A view that puts how many people asked for something together with how long it has not moved. It shows where disappointment collects.
An idea shows what became of it
An idea still says, a year later, how many people wanted it and which version carried it out. Whoever voted finds out how it ended.
What is waiting — one queue for all of it
Everything waiting for a person — an unanswered question, an untriaged idea, a version ready to go out — in one list by age, pre-filtered to what somebody looks after.
A work queue assembled across features
Every part of the system reports what is waiting for a person, and one place puts it together. A new feature brings its own rows with it.
The chronicle — what happened in the studio
One stream of every change: who did it, what exactly changed and how it went. Where it can be, a change is undone in one press.
The audit trail can be read, not only written
A record of every change is already written. Now it can be browsed, filtered, and for some things undone.
The keyboard runs the whole surface
Jumping to a place, searching, moving down rows and opening a detail all work from the keyboard. Somebody who spends a day here never reaches for the mouse.
Team sections come from the Discord roles
What somebody opens in the studio follows from the role they actually hold. No second list to drift out of step.
Documentation can be narrowed down
Sections with counts, both halves, and a search across title, address and summary. The filter lives in the address, so it can be sent to somebody.
Sort by what people want most
Wherever something carries a number, the list can be reordered by it. What has waited longest stays the default.
An agent is always somebody’s
Access for an assistant is issued to team members only and tied to their account, so it is always clear who an agent acted for.
Updates get their own place beside the blog
What we released is no longer a page off to one side but one of the applications you switch between in a click. Filters by product and channel have their own address, and a version opens the whole list of changes.
Cookies and accessibility as their own pages
Alongside terms and privacy: what the site stores in your browser, and an accessibility statement that names what we have not verified.
A page for STYGION ID
What STYGION ID is, how signing in works, what the account carries and what we know about you. Its own mark from the shared family.
Blog and release list
Our own blog, every release with a filter per product, a news section on the home page, and an RSS feed per language.
Product marks — one family
Every app and service has its own mark: the company hexagon with its own glyph inside, same geometry and colour. Side by side they read as a set.
One standard behind everything we make
Sign-in, feedback, language, look, speed and documentation work the same across every product, because they are written down in one place. A new surface is finished only once it meets all of it.
Building the STYGION Discord
The server runs from a versioned spec — channels, roles, permissions, button onboarding, settings in your own language, and tickets wired into our system.
Quick Play / direct join (0.7)
MC Quick Play multiplayer: join from Server Hub, Home and Command palette via launch modal (progress + live log). No pack detail diversion. 0.7.0.
Running instances — management
Launch modal (progress, tips, live console) + floating bubble when minimized. Stop from modal/bubble/card. Auto-dismiss bubble on stopped/exited. 0.7.
Launcher v2 UI (0.7) — hub, launch modal, rails
Ground-up UI: Home hub (Continue, library, servers, worlds, Discover) without page scroll; width-fit rails (ResizeObserver, no side-scroll); launch modal with live MC console + floating bubble; Quick Connect without pack detail; Feedback in titlebar. 0.7.0.
Catalog without jumping cards
Hover and enter animation in Discover no longer move the tile under the cursor — only a soft fade and image zoom inside the card.
Feedback in titlebar (tickets)
Feedback button next to the bell → Settings → Support. Unread badge. Ticket kind = pill chips (not native white select). 0.7.0.
Standalone desktop app
Decided: Workbench is its own app (own install, own UI). Not a Launcher, PLAY, or web module — only optional handoff via export/playtest.
Tickets — report management
Admin /tickets + user My tickets + Support in the launcher. Poll without F5. Roadmap/docs/panel CTAs — next step.
Security hygiene in CI and rules
Automated dependency checks in CI for web and backend; agent rule for auth/session changes and host hardening for private services.
In-app bug reports → tickets
Ticket = DB + private Discord channel (author + team). Create from app/web; web ↔ Discord mirror. Live.
Microsoft account — common tenant + Graph profile
Link Microsoft accounts for consumer and work accounts; profile via Microsoft Graph (User.Read).
Session and API hardening
Tougher session handling (including burn on misuse), reject empty service tokens, request body size limits. CI dependency vulnerability checks.
Terms of service and privacy (CZ + EN)
Live Terms and Privacy pages in Czech and English; sign-in links no longer 404.
Security headers and OAuth redirect
CSP, HSTS and Cross-Origin-Opener-Policy on the web; OAuth error paths only allowlisted redirects (no open redirect).
Realtime tickets (no F5)
Ticket thread refreshes itself every few seconds — new messages without a manual refresh.
Other people’s avatars in the workspace
User lists and chat show everyone’s Discord avatar, not only yours.
Private Discord ticket channels
New ticket = private channel: author and team can see it, everyone else cannot. Web ↔ Discord message mirror.
Discord avatars for every user (not only self)
Friend and user lists get real Discord profile pictures (including bot fallback and a database backfill).
Friends, chat and online status on the web too
Workspace user section /friends — same social graph as launcher. Presence from hub (poll). Admin section untouched.
Social: user search + Discord avatar CDN
GET /social/users/search + Discord avatar CDN. SyncDiscordAvatar on /me and exchange (OAuth → real CDN URL). Live 2026-07.
Launcher social API (search, avatars)
API for the launcher: user search and Discord avatars as CDN links (not raw image bytes).
Launcher connect — auto code handoff
After confirm: iframe + beacon + location.replace to 127.0.0.1 (not HTTPS fetch). Code is fallback only. Live on id.stygion.eu.
Documentation you can search, not only read
Full-text with snippets, reading by section, edits to a single heading, and a revision history you can roll back. (The knowledge graph that used to stand beside this did not survive the rewrite — search and the roadmap links on a page do the same job without a second database.)
Design polish — rhythm, hero, icons, mobile
Tighter section rhythm, new hero, unified icons, consistent satellite pages and polished mobile navigation.
Docs aligned to code + truth
Sweep docs + design docs and fill in everything that is actually built, matching the real code state. No aspirational claims — what does not exist is WIP.
Migrate all docs into the roadmap + docs
Done: all documentation lives in the DB (docs.stygion.eu) — user and team sections; standalone markdown files migrated and retired.
Bot stays online while the backend runs
The Discord bot shows as online the whole time the backend is running.
Docs feedback & comments in admin
The team sees feedback and comments per docs page in one place, can reply, and the author is notified.
Sign out
Sign out of STYGION ID at any time.
Source reference on a task card, on the board (team)
A team member sees a task’s source reference right on the roadmap, not only in the workspace; hidden from the public.
MCP expansion for the agent
One efficient interface for the agent over docs and the roadmap — read and write with minimal overhead. Responses are lean (single language, only what is needed, peek the structure instead of the whole page).
Internal team docs
Non-public team docs as a hidden mirror of the public section, team-only. Content is agent-managed; the manual editor is being removed.
Follow a task from its card
Follow a task in one click on its card; get a message on every change and when it ships. A finished task can no longer be followed.
Language switch on the roadmap
Switch the roadmap between Czech and English.
Discord notifications
Discord alerts via our backend bot: a finished task, an edited page, a new version in your channel.
Opt-in notifications
Follow a task, page or release channel and get told when something changes.
SEO & discoverability
Link previews, descriptions and a sitemap for every public page.
Card sub-tasks (checklist)
Open a task to see its steps — a start-to-finish checklist of the work.
docs.stygion.eu — public docs
Guides that explain how and why things work. Searchable, bilingual.
Custom 404 page
A branded page when a link goes nowhere — with a way back.
DB-backed docs
Docs are written and edited at runtime and versioned — like the roadmap.
Brand-new homepage
Complete redesign of the stygion.eu homepage — new visuals, structure and copy.
Task timestamps + ordering
Every task shows when it was added and completed; columns sort newest-first.
Web = pure frontend/BFF, logic in the backend
Verified: web holds no business logic or crypto/secrets — the server-side BFF only proxies to the backend (which holds the service token, signs OIDC tokens, enforces authz). The browser never calls the backend directly.
Naming cleanup: generic updater surface (not "launcher")
Renamed the update surface /launcher → /updates across backend+web+launcher (serves every app via ?app=). LauncherLatest type → ProductLatest.
Real copy pass across launch surfaces
Honest, human copy on the surfaces that actually ship: Launcher, Panel, Hub and STYGION ID. Hub reviewed (clean), Panel rewritten, ID tidied + dead links fixed. Done.