- Rust 90.2%
- Python 8.8%
- Shell 0.7%
- PLpgSQL 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Items 3 and 4 of kreeader-studio#34. Item 2 (the crate/package rename from kreeader-studio-dev) is deliberately untouched — it moves Rust import names and deployment references together and needs a coordinated call. Item 3 — docs/ states what exists, roadmap/ holds the speculative: * docs/plugins.md described a plugin manager that installs, updates, runs and removes plugins and reconciles each running plugin's /studio/manifest. The code fetches the registry index.json, lists its entries, and writes a `renderers` row for an endpoint the operator types in. The design document moves to roadmap/plugins.md (with a header saying which part is built), and docs/plugins.md is rewritten factually: registry discovery, renderer registration, the POST /studio/speak call the worker actually makes to a TTS plugin, and an explicit list of what is not built. * docs/ladspa.md → roadmap/ladspa.md. Its own first line already said "research/roadmap … not a built feature"; the `fx` renderer it recommends does not exist. * docs/architecture.md's "what the toolkit does not cover" list named `cpal` + `kira` for audio and panebench device pairing for auth, neither of which is in the tree — the crates are `rodio` (+`hound`) and `image`, and server auth is an optional bearer token. Corrected, including the contradicting auth row in the endpoint table, and its plugin section now points at the factual doc for today and roadmap/ for the intended contract. * docs/README.md, docs/as-built.md and roadmap/README.md updated to match (roadmap's index gains the two moved specs). Item 4 — the two long-standing clippy::too_many_arguments warnings: * `app.rs::load_revisions_match` took eight `u64`s in two positional groups of four; it now takes two `LoadRevisions` structs and is a single comparison, which also makes the call sites say which reading is the started one and which is current. * `timeline.rs::draw_nle`'s `audio_channels` and `document_revision` move into the `NleResources` struct it already takes — both are document/project-scoped values like `fps`. Gates: cargo build, cargo clippy --all-targets clean (zero warnings, both pre-existing ones gone), cargo test 191+27 passed / 22 ignored, python3 -m pytest tests 54 passed. Co-Authored-By: Claude Opus <noreply@anthropic.com> |
||
| db | ||
| deploy/butcher | ||
| docs | ||
| engines | ||
| roadmap | ||
| scripts | ||
| services | ||
| src | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CLAUDE.md | ||
| README.md | ||
| TODO.md | ||
kreeader-studio
The production native editor for turning comics into voiced motion comics and 3D-animation projects.
Studio is a Rust/egui NLE and a read-only client of kreeader-server. It owns its
Postgres media catalog, projects, timelines, characters, prompt proposals, and
durable renderer queue; heavy engines stay out of process. See
docs/as-built.md for the current implementation and
roadmap/ for work that is not built yet.
Feasibility goals
| # | Goal | Maturity |
|---|---|---|
| 1 | Diarize video dialogue → voice sample library | mature tech |
| 2 | Single-image → 3D mesh (props/hero objects) | usable now |
| 3 | Blender automation (procedural gen, scene compose, interior-face cleanup) | mature |
| 4 | Bare models + artist-specific skins → 2D animation | research frontier |
| 5 | OCR speech bubbles → speaker attribution → TTS dialogue | buildable now |
| L | Postgres media library — browse/name/tag/preview every model, voice, skin, and clip created or imported | buildable now |
| W | Worker binary — bridge to external renderers via a Postgres job queue (distributable across boxes) | buildable now |
See roadmap/ for the per-goal feasibility spec, and
roadmap/media-library.md +
db/schema.sql for the library data model.
Build & run
Two binaries share a library crate:
cargo build
# GUI: Timeline / Media Library / Diarize / Image→Mesh / Blender / Skins /
# OCR·Dialog and the character/prompt authoring surfaces.
DATABASE_URL=$(sed -n 's/^DATABASE_URL=//p' .env) cargo run --bin kreeader-studio
# Worker: health-checks renderers, atomically claims queued work, dispatches
# through the renderer seam, and registers completed artifacts.
DATABASE_URL=… cargo run --bin kreeader-studio-worker
Bootstrap or upgrade the database with scripts/db-bootstrap.sh "$DATABASE_URL".
It applies db/schema.sql first and then every numbered migration in order,
recording checksums so reruns are idempotent. Copy .env.example → .env
(gitignored) for the DSN.
Hard boundaries
The rules in CLAUDE.md apply: Rust + egui, native, never a
webview; studio is a read-only client of kreeader-server; local-model and
TTS engines are out-of-process; and authoring prompts use local models only.