comic/odin
echo be0ccc1539 Phase B: Eliminate duplication
- workspace_nav helper replaces 4x duplicated nav bar patterns
- Hoisted make_diagnostics_action_context call in process_clicks (computed once, reused 4 times)
- Removed duplicate section header comments in workspaces.odin

workspaces.odin: 328 → 280 lines (down 15%)
All 156 tests pass.
2026-05-22 17:36:24 +02:00
..
docs check point 2026-05-22 03:51:50 +02:00
generated check point 2026-05-21 06:10:32 +02:00
missing-dir-for-autosave check point 2026-05-21 06:10:32 +02:00
schemas check point 2026-05-21 06:10:32 +02:00
scripts another checkpoint 2026-05-22 08:54:22 +02:00
src Phase B: Eliminate duplication 2026-05-22 17:36:24 +02:00
tests check point 2026-05-22 03:51:50 +02:00
vendor another checkpoint 2026-05-22 08:54:22 +02:00
.env check point 2026-05-21 06:10:32 +02:00
.gitignore check point 2026-05-21 06:10:32 +02:00
build.sh another checkpoint 2026-05-22 08:54:22 +02:00
CHANGELOG.md check point 2026-05-22 03:51:50 +02:00
comic-odin check point 2026-05-21 06:10:32 +02:00
comic.pdf check point 2026-05-22 03:51:50 +02:00
gui_diagnostics.txt clay implemented 2026-05-22 12:35:38 +02:00
gui_export.pdf check point 2026-05-22 03:51:50 +02:00
gui_project.comic.json clay implemented 2026-05-22 12:35:38 +02:00
gui_session_report.txt clay implemented 2026-05-22 12:35:38 +02:00
local.cbz check point 2026-05-21 06:10:32 +02:00
local.pdf check point 2026-05-21 06:10:32 +02:00
ols.json another checkpoint 2026-05-22 08:54:22 +02:00
quick_3.cbz check point 2026-05-21 06:10:32 +02:00
quick_local.pdf check point 2026-05-21 06:10:32 +02:00
README.md check point 2026-05-22 03:51:50 +02:00
scratch.odin check point 2026-05-21 06:10:32 +02:00
screenshot000.png check point 2026-05-21 06:10:32 +02:00
screenshot001.png check point 2026-05-21 06:10:32 +02:00

comic-odin

Native desktop application for comic creation, powered by Odin and Raylib.

Features

  • Story & Script: Generate comic scripts locally or via DeepSeek AI
  • Panel Generation: Create panel images locally or via fal.ai
  • Layout Engine: Auto-layout pages with pattern-based cell assignment
  • Bubble Editor: Add, edit, and auto-place speech bubbles per panel
  • Export: Output to PDF, PNG sequence, or CBZ comic book archive
  • Project Persistence: Save/load projects as .comic.json
  • Native GUI: Full Raylib-based desktop interface with dark theme
  • CLI/TUI: Terminal-based interactive mode for headless workflows

Quick Start

cd odin
./build.sh
./bin/comic_odin gui        # Launch native GUI
./bin/comic_odin tui        # Launch terminal UI
./bin/comic_odin status     # Quick status check

Building

Requires Odin and Raylib.

# Build debug binary
./build.sh

# Run tests
odin test tests

# Package release artifact
VERSION=0.2.0 ./scripts/package.sh

Project Structure

Directory Purpose
src/app App entrypoint and CLI composition root
src/core Pure domain logic (types, workflow, layout, bubbles)
src/adapters IO + external services (DeepSeek, fal.ai, storage, export)
src/gui Raylib GUI runtime, views, actions, helpers
src/ui Controller, screens, navigation, jobs
src/shared Config, errors, layout constants
tests Unit and integration tests
schemas JSON schemas for project/script persistence
docs Migration and implementation notes

GUI Controls

Navigation

  • 1-8: Switch screens (Story, Script, Characters, Panels, Layout, Bubbles, Export, Community)
  • Tab / F1-F4, F11-F12: Cycle input fields
  • Ctrl+[ / Ctrl+]: Navigate pages/panels within current screen

Actions

  • F5: Generate Script | F6: Generate Panels | F7: Layout Auto | F8: Export
  • F9: Next Step | F10: Auto-All
  • Ctrl+S: Save | Ctrl+O: Open | Ctrl+E: Export
  • Ctrl+G: Toggle script source (Local/DeepSeek)

Overlays

  • /: Toggle help overlay | Esc: Close overlays

Configuration

Set environment variables for AI services:

export DEEPSEEK_API_KEY="your-key"
export FAL_API_KEY="your-key"

License

See repository root LICENSE file.