Skip to content
Iblis

Roadmap

The single source of truth for what Iblis intends to build, in what order, and why. Rendered live on https://iblis.meiuxmeiux.com/roadmap. Update through tracked main commits — never duplicate this content into the site.

Granularity rule: each phase is a small set of bullets, each bullet is a verifiable outcome. If a bullet wouldn't fit in a single PR description, split it. Anything past v1.0 is intent, not commitment.

Current delivery snapshot — 2026-08-24


Phase 0 — Foundation

Done when: https://iblis.meiuxmeiux.com/ returns 200 with TLS, showing this file.

Phase 1 — Shell skeleton

Done when: just build produces an installer that opens to the empty state and self-updates on a staged-tag bump.

Phase 2 — Plugin host

Done when: a stub echo-server plugin installs, updates, rolls back, and removes entirely through the UI — no CLI involved.

Phase 3 — Audio engine plugin (ACE-Step)

Done (2026-07-12): the gate is closed. A real Windows 11 machine (Arrow Lake-HX + RTX 5070 laptop) installed Iblis-Setup-0.2.0-alpha.6.exe from the live site, pulled engine pack 0.1.3 from the signed catalog, and generated tracks end-to-end — no BSOD. The host-stability fight and its fix (upstream re-pin + GGML_OPENMP=OFF + native Blackwell CUDA) are recorded in docs/feature/engine-stability.md.

Phase 4 — Library + waveform vis

The delivered foundation and engine-quality sequence are recorded in docs/phase-4-plan.md.

Shipped foundation

Current analysis state and open work

Done when: a non-technical user can generate a track, see clearly labeled detected BPM/key, file it, rename it, change or generate a cover, remix it, and understand its provenance without docs.

Phase 5 — Stem split + image gen plugins

Done when: generate track → auto-cover via image-gen → split stems → all artifacts visible against the same track row.

Phase 6 — Skinning UI (in-app)

Foundation landed (2026-06-05): the shell now speaks the SkinContract token vocabulary (app.css reconciled off its ad-hoc vars onto the tokenToCssVar set), ships the four first-party skins as token sets (dark-3d, light-paper, infernal, cathedral — same palettes as the website), and has a live Settings → Appearance picker that switches skins instantly and persists the choice. Translucent Mica chrome is derived from the palette via color-mix, so skins only define colors.

Editor landed (2026-06-05): Settings → Appearance now has the "edit current skin" token grid — every SkinContract token, grouped by namespace, searchable, with a colour picker for color.*/wave.* and a text field for the rest. Edits apply live and are stored as per-skin overrides (localStorage iblis.skin.overrides, validated against the contract) that re-apply at parse-time next launch. Per-token reset (↺) and "Reset all" revert to the skin's own values.

Export/import landed (2026-06-05): the editor now exports a skin's edits as a shareable .iblis-skin file — a JSON SkinDescriptor (extends: <base> + overridden tokens, the override map serialised) — and imports one back, applying its recognised tokens onto the named base skin (unknown base → default; unknown tokens ignored). Imports are unsigned sideloads today and warn as such. portable.ts is DOM-free and unit-tested; the editor UI is split across SkinEditor.svelte (overrides + export/import) and TokenGrid.svelte (the grid).

Skins-as-signed-plugins landed (2026-06-05): a kind:"skin" plugin ships a skin.json descriptor (+ optional extras.css) through the signed catalog with no executable, so the Phase-2 installer/lifecycle handles it unchanged and never spawns a process. Main validates each installed skin's descriptor off disk (parseSkinDescriptor) and serves it over window.iblis.skins.list(); the renderer injects a generated :root[data-skin]{…} block + extras.css so installed skins join the picker (tagged "plugin"), apply live, and paint flash-free via a localStorage descriptor cache. First proof plugin: packages/plugins/skin-boodark-nord. Built-ins stay bundled as offline defaults. (Go-live = just catalog-build then just catalog-publish; upload, public-byte verification, and live catalog promotion are the explicit step.)

Done when (met): a user switches skins live, edits one, exports it as a shareable .iblis-skin file, and installs a skin from the signed catalog. New skins composed against the contract work on every plugin without that plugin knowing the skin exists.

Phase 7 — Training + community styles (implemented 2026-07-14, awaiting Jack's E2E)

The full sequenced plan, decision log, and gates live in docs/training/00-overview.md. Every slice is implemented and shipped: the server side (T1), the resource lock and Training section (T2, alpha.18), the wizard + local pipeline + published training pack v0.1.1 (T3, alpha.19 + later catalog update), resumable upload with auto pull-down (T4, alpha.20), the Styles overhaul with the community browser (T5, alpha.21), and the Create style picker (T6, alpha.22). Per decision D8 the human gates consolidated into one pass: Jack's end-to-end run on real Windows hardware is the remaining acceptance, and it calibrates the preflight estimates (G1) and proves the adapter loader (G2). Outcome bullets:

Done when: Jack updates his installed app, trains on his own folder, watches it round-trip through the server, and generates with it — GUI only.

Phase 8 — Admin panel + product keys (core implemented and live 2026-07-15)

The full design lives in docs/admin/00-overview.md (slices 01–03 cover the key protocol, the operator panel, and the shell integration). Outcome bullets:

Acceptance remaining: the consolidated Windows E2E verifies the live key -> Training -> Styles -> Create loop on the ordinary installed GUI. The individual key activation, enforcement, revocation, panel, and server gates are already implemented and shipped.

v1.0.0 — MVP launch

All of Phases 0–6 green. Plus:

Beyond v1.0 (intent, not commitment)