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 via PR — 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.


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 when: prompt → 48kHz WAV in the library, under 60s on RTX 3090. AND a real Windows 11 machine has installed Iblis-Setup-x.y.z.exe, pulled the engine pack from GCS, and produced a track end-to-end. ACE-Step is currently proven on Ubuntu/WSL2 only; the Windows path is unvalidated and is the highest single risk in the plan. See docs/feature/installer.md § "Smoke-test gate", and docs/phase-3-plan.md for the sequenced build/de-risk plan (Windows binary spike first; streaming installer for the ~8 GB model pack).

Phase 4 — Library + waveform vis

Done when: a non-technical user can produce a track, file it in a folder, rename it, swap its cover, and remix its prompt 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 && catalog-publish; the asset upload

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.

v1.0.0 — MVP launch

All of Phases 0–6 green. Plus:

Beyond v1.0 (intent, not commitment)