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
- Repo scaffold, charter, feature docs, Justfile.
- Apache vhost template +
just provision-vhost/just provision-ssl. - Placeholder site renders CHANGELOG and ROADMAP from this repo.
Done when: https://iblis.meiuxmeiux.com/ returns 200 with TLS, showing this file.
Phase 1 — Shell skeleton
- Electron + Vite + Svelte 5 app opens on Windows 11 with Mica backdrop.
- Custom titlebar; default dark theme via CSS variables only.
- Empty-state Home view: "Install the engine pack to get started."
electron-updaterwired to a signed release feed served by the site.
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
- Signed catalog fetch (Ed25519). SHA-256 verified asset downloads.
- Versioned plugin folders, atomic
current.txtpointer, instant rollback. - Sidecar supervision: spawn, health-check, hot-swap, kill-on-quit.
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)
bin/ace-server.exebuilt in CI (CUDA + CPU fallback).manifest.jsondeclares LM + DiT + VAE + embed GGUFs.- Assets uploaded to
gs://iblis-dist/plugins/acestep-engine/<ver>/. - First-run wizard probes VRAM, picks
fast/balanced/quality.
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
- SQLite schema (tracks, plugin_state, folders, prompts).
- Inline
<audio>playback. Drag-out to OS filesystem. - Folders, rename-in-place, cover upload + cover-regen hook.
- Prompt re-use: every track stores its prompt; one-click "remix this."
- One built-in waveform visualizer; visualizer interface is a plugin slot so future skins/visualizers compose without re-build.
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
- Stem splitter plugin (Demucs port or equivalent native binary).
- Image-gen plugin (SDXL-Turbo or Flux-schnell, GGUF preferred).
- Both expose their results into the library's per-track sidecar files.
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)
- Theme picker + "edit current skin" panel inside Settings.
- CSS variables only; skins are JSON-described overrides + optional CSS.
- Several first-party skins covering dark / light / "fun flavor" extremes.
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
- live catalog commit is the explicit publish 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.
v1.0.0 — MVP launch
All of Phases 0–6 green. Plus:
- The "Easy Mode" / "Sell-your-soul" installer flow (see
docs/feature/installer.md). PRIVACY.mdshipped in the installer.- Jack has generated 50+ tracks across 5+ genres and is satisfied.
Beyond v1.0 (intent, not commitment)
- BPM / key detection plugins (multiple implementations, user picks).
- Node-based builder (ComfyUI-style) as an optional plugin.
- File-explorer UI as an optional plugin.
- DAW drag-and-drop integration.
- Sample-pack pipeline.
- Auto-mastering chain.
- Share-link plugin (when/if cloud is opened up).
- Credit / cloud-boost system (deliberately last — see charter).
- Admin web portal (
admin.iblis.meiuxmeiux.com) for license issuance, GCS uploads, and dev-secret vault. Seedocs/feature/admin-portal.md.