Spec 20: JUCE Audio Engine Foundation#55
Open
marius-patrik wants to merge 7 commits into
Open
Conversation
- 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.
e241577 to
616a640
Compare
- 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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #37