Skip to content

v0.5.0

Choose a tag to compare

@sktkkoo sktkkoo released this 23 Jun 00:16

0.5.0

  • Motion size: a Settings slider and motionIntensity config field (0–3, default 1.0) scale CLAI's idle sway, breathing, and head/posture motion; inhabitants can adjust it through the motion_intensity_set MCP tool.
  • Richer idle aliveness: idle beat scheduler (glances, micro-aversions, anticipation), eye-lead gaze with head recruitment, physiological state-dependent blink rates (suppressed while reading), and StatePose blending in ProceduralBones.
  • User scene packs can be authored as R3F (TSX) components, with live reload from nested source edits.
  • Scene layers support a drop-shadow filter.
  • Inhabitants can read bundled pack sources through MCP (bundled_example_read) as authoring references.
  • The restore UI now lists up to 30 snapshots.
  • The first-run tutorial was reworked: fixed sleeps removed, effect shortcuts (F1/F3/F4) demonstrated in place, scene color-theme collaboration shown, and the flow now carries through the pack-creation experience.
  • Terminal agent launch is now backed by TerminalAgent adapters for Claude Code, Codex, and OpenCode.
  • Codex installs Charminal commands as $charm-* skills instead of /charm:* slash commands.
  • OpenCode receives Charminal commands as /charm-* custom commands through OPENCODE_CONFIG_CONTENT.
  • OpenCode persona overlay is injected through agent.build.prompt and agent.plan.prompt file references so primary agents receive Charminal's system prompt.
  • OpenCode TUI starts with a session-scoped OPENCODE_TUI_CONFIG temp config using the system theme, and Charminal sends OpenCode's SIGUSR2 theme refresh hook on scene changes so panel/input colors re-sample the terminal palette without rewriting user OpenCode config files.
  • Codex and OpenCode now receive Charminal journal/voice reminders through their launch prompt overlays instead of Claude Code hook output.
  • Documented that Claude Code hooks are not a cross-agent contract; Codex/OpenCode hook-like surfaces require explicit per-agent capabilities before Charminal treats them as shared behavior.
  • Agent defaultProfile values such as "opencode" now launch that agent instead of falling back to terminalAgent.
  • The Settings Agent dropdown and the Status panel now report the agent that actually launches (honoring defaultProfile). When defaultProfile pins an agent, the dropdown shows that agent and is disabled with a "fixed by defaultProfile" note.
  • Agent install directories and charm command syntax are now declared by each TerminalAgent adapter (single source of truth); the Status panel warns if the Rust adapter registry and the TypeScript mirror drift.
  • terminalAgent: "opencode" is accepted in config. OpenCode end-to-end smoke is deferred and remains unverified on this machine.
  • UiAppAPI.setTerminalAgent and related SDK/config types now accept string adapter ids instead of only "claude" | "codex".

Full Changelog: v0.4.0...v0.5.0