Commit Graph

15 Commits

Author SHA1 Message Date
sandevistan
d6fcf63fe6
feat(studio): import .avatar.json definitions into the library
The studio could only write runtime definitions: createAvatarDefinition is
one-way, and the sole file picker fed everything to parseImportedStudioDocument,
which rejects a definition for lacking version/library/expressions/sequences.
There was no way to bring an exported avatar back in.

Add the inverse mapping and wire it into the avatar library:

- studioAvatarFromDefinition() rebuilds a StudioAvatar, its expressions and its
  sequences from a definition. `neutral` is deliberately not restored as an
  expression: it is a reserved semantic key that lives on the avatar as eye
  defaults and is re-emitted on export.
- The import picker now sniffs the format. A definition adds one avatar and
  keeps the rest of the library; a studio project still replaces the document.
- Avatars tab: the "+" card opens a menu offering a new avatar or an import.
- Avatar editor: an Exporter button beside Dupliquer downloads the avatar as
  .avatar.json, disabled with the validation error as a tooltip when the
  definition would not validate.
- Menu primitive built on the existing @base-ui/react dependency, matching
  context-menu.tsx. No new packages.

The round-trip test imports the repo's strobi.avatar.json fixture and exports it
again, asserting identical body, colors, expressions and ordering, so the two
directions cannot drift.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 23:11:43 +02:00
smontlouis
175691ab32 feat(export): add copyable AI usage guides 2026-08-20 08:06:58 +02:00
smontlouis
fc7445002a feat(studio): add interactive photo mode
Add live pose and framing controls, composed SVG/PNG exports,
and contrast-aware random background palettes.
2026-08-18 21:36:01 +02:00
smontlouis
7ad18432f9 feat(studio): refine body editing and export previews 2026-08-18 13:36:06 +02:00
smontlouis
843da29718 feat(export): add ready-to-run avatar demos 2026-08-17 19:36:16 +02:00
smontlouis
2386b78817 feat(runtime): unify React and ESM avatar exports
Add shared core-backed React and browser runtimes, continuous playback transitions, export previews and API documentation. Package the JavaScript export as a CDN-powered demo with the portable avatar definition.
2026-08-17 17:27:20 +02:00
smontlouis
7bed34cc56 fix(runtime): preserve pixel integration after rebase 2026-08-16 10:20:15 +02:00
Eric Cappannelli
4d17393cb1 Resolve upstream runtime integration conflicts 2026-08-16 10:18:59 +02:00
Eric Cappannelli
99300b3b30 feat(runtime): ship semantic avatar packages and Studio export
- add the v1 AvatarDefinition schema, bounded parser, strict validation, semantic catalog, pure geometry, scene generation, and deterministic playback to @bible-strong/avatar-core
- add the React 19 renderer with semantic controls, SSR-safe embedded/floating layouts, direct frame updates, pointer and keyboard movement, constraints, callbacks, and accessible controls
- add real tarball packaging and a clean React/Vite consumer using the exported Strobi definition
- add Studio semantic-key authoring, runtime readiness, JSON download/copy, bundled-key recovery, concise errors, targeted local-project clearing, npm guidance, syntax highlighting, and a runnable package preview
- preserve the historical ZIP and Studio project exports, regenerate the standalone engine, and synchronize English, French, and Simplified Chinese copy
- add focused contract, playback, renderer, interaction, persistence, export, and localization coverage
- archive the completed runtime and semantic-curation specs, retain the Vite performance draft, and record the engineering session in TIMELOG.md

Validation:
- pnpm check: 19 test files, 162 tests, typecheck, engine freshness, package builds, and Studio production build passed
- npm pack dry runs: 30 core files and 10 React files
- package smoke: real tarballs installed, typechecked, and built outside the workspace
- browser checks: semantic playback, embedded/floating render, drag, mobile overflow, runtime export recovery, formatted copy, syntax colors, and live package preview

Publication remains disabled: both packages stay private and AGPL-3.0-only pending licensing and repository metadata approval. Vue and Angular adapters remain deferred.
2026-08-16 10:18:39 +02:00
smontlouis
e205c57687 feat(avatar): add pixel rendering across studio
Persist the avatar render style and apply it consistently to previews, snapshots, animations, and standalone exports.
2026-08-15 11:41:30 +02:00
smontlouis
fa103c38b5 fix(studio): keep playback footer closed on reload 2026-08-13 23:33:29 +02:00
smontlouis
af3107ce20 feat(studio): polish editing and playback controls
Default to the avatar library, add contextual reset actions, and turn animation playback details into a draggable footer.
2026-08-13 23:29:49 +02:00
smontlouis
398c7f53e2 feat(studio): refine responsive workspace navigation
Add a resizable stacked layout and move avatar selection into a dedicated grid page.
2026-08-13 22:47:52 +02:00
smontlouis
94bc5223e6 feat(studio): redesign responsive navigation
Add a unified bottom navigation, avatar drawer, and responsive preview and inspector layout across desktop and mobile.
2026-08-13 19:55:20 +02:00
smontlouis
3b2e134169 feat(studio): prepare app for GitHub release
Add distribution metadata, Strobi app icons, CI, and comprehensive documentation. Migrate the project to pnpm and reorganize the Studio into domain-focused modules and components.
2026-08-13 18:56:47 +02:00