Skip to content

Spec 20: JUCE Audio Engine Foundation#55

Open
marius-patrik wants to merge 7 commits into
integration/fl-studio-rewritefrom
feat/20-juce-audio-engine-foundation
Open

Spec 20: JUCE Audio Engine Foundation#55
marius-patrik wants to merge 7 commits into
integration/fl-studio-rewritefrom
feat/20-juce-audio-engine-foundation

Conversation

@marius-patrik

Copy link
Copy Markdown
Owner

Closes #37

Kimi Agent and others added 6 commits June 29, 2026 09:45
- Add ThemeProvider and useTheme hook
- Add VS Code theme Zod schema and convertVsCodeTheme mapping
- Ship Dark+ built-in theme JSON
- Configure Tailwind CSS with CSS custom properties
- Set up Rsbuild and TypeScript for packages/ui

Refs #40
- Move theme Zod schemas and types to packages/shared/src/theme.ts
- Implement resolveAppTokens with full VS Code token map and fallback chain
- Implement Monaco theme conversion (toMonacoBase, toMonacoThemeData, slugifyThemeId)
- Export Tailwind preset from packages/ui/tailwind.preset.ts
- Ship Dark+, Light+, Dracula, and One Dark Pro built-in themes
- Switch packages/ui build to tsc --build for library output
- Add unit tests for token resolution and theme conversion

Refs #40
- Add shared theme schemas in packages/shared/src/theme.ts and messages/theme.ts
- Implement VS Code token map, fallback chain, and resolveAppTokens
- Implement Monaco theme conversion helpers
- Add built-in themes under packages/ui/src/themes/built-in/
- Export Tailwind preset from packages/ui/tailwind.preset.ts
- Implement ThemeProvider, ThemeSelector, ThemeImporter, and primitive components
- Implement backend theme/settings routes with persistence
- Add WebSocket broadcast for theme.changed and theme.scaleChanged
- Configure Tailwind preset in packages/web and packages/desktop
- Add unit and integration tests

Refs #40
- Add engine source classes: CommandServer, CommandQueue, Transport, Engine,
  Project, ChannelRack, Pattern, Playlist, Mixer, MeteringBus.
- Implement lifecycle, audio device, transport, and project model commands.
- Add engine events: engine.ready, engine.error, transport.positionChanged,
  transport.stateChanged, audio.xrun, meters.batch.
- Add Catch2 unit tests for time conversion, transport, command queue, metering.
- Add CTest integration and CMakePresets for macOS Intel/Apple Silicon and Linux x64.
- Add Bun integration test that starts the engine binary and verifies engine.ping.
- Add build:engine script and update root package.json.
…heck/lint errors

- Move engine frame serialization and parsing into shared/schemas/engine.
- Avoid duplicate type exports between schemas and shared/types.
- Make EngineReply generic to satisfy engine-bridge usage.
- Fix backend lint/style issues and TypeScript readonly/spread errors.
- Ensure root typecheck, lint, and test pass alongside the new engine.
@marius-patrik marius-patrik force-pushed the feat/20-juce-audio-engine-foundation branch from e241577 to 616a640 Compare June 29, 2026 20:00
- Make Engine::shutdown() idempotent with shutdownStarted_/shutdownComplete_
  flags and join broadcasterThread_ only once.
- Defer full teardown from engine.shutdown command to the main thread to avoid
  the CommandServer thread trying to join itself.
- Update engine protocol to match shared schema: replies are now
  { id, inReplyTo, success, payload?, error? } and events are
  { id, type: "event", topic, payload }.
- Emit engine.error events for failures.
- Update scripts/build.ts to find the engine binary via the CMake/JUCE
  artefacts path using bun run build:engine.
- Update engine integration test to verify ping replies and clean shutdown
  with exit code 0.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant