Repository navigation
Conversation
x37v
commented
Sep 14, 2026
Collaborator
- Added a simple transport location indication and rewind
- Added link sync toggle
- Added time signature UI
Add a time signature control (numerator NumberInput, denominator Select) and a Link sync toggle to the transport modal, and rework the layout the new controls had crowded. The denominator is a Select over 1/2/4/8/16/32 rather than a free numeric input, so the power-of-two rule is structural instead of an error message. The numerator is clamped before send, matching the BPM pattern. linksync needed no runner change -- transport/linksync was already exposed, config-backed and bridged to jtl; nothing in the panel consumed it. Layout: the modal now goes full screen on mobile, which is what every other modal here already does and which the previous flex-wrap did not survive. Switched to the compound Modal API so the position readout can sit in the header. That readout is right-justified with a fixed-width beat field and tabular figures, which anchors the colon a fixed distance from the right edge so it stays put as the bar count grows. Both switches carry a label beside the control instead of on/off text inside the track -- "Off" on two adjacent switches said nothing about which was which, the track resized between states, and a real <label> gives each switch an accessible name. bar_beat is typed [number, number] throughout; the bridge was casting a two-arg message to [number]. initTransport is annotated so its payload is contextually typed rather than re-widening on the next field added. Boolean fields in the INIT reducer case used `value || default`, which discards a legitimate false -- turning Sync off and reloading brought it back on. They now check for undefined.
Both rely on OSCQuery nodes that only a recent runner has, and the time signature additionally needs a jack_transport_link new enough to act on it. A device that updates the panel alone would otherwise show a control that silently does nothing and a readout stuck at 0:0 -- or, with a new runner and an old jtl, a time signature the device never applied, since that node is BI and ossia echoes our own writes back locally. Gate both on capability, using the node-presence test the bridge already applies to jack/info/is_active: barBeatAvailable: bar_beat node exists timeSignatureAvailable: time_sig node exists && time_sig_available !== False !== False rather than === True on purpose: a runner exposing time_sig but no availability node predates the gate and always supported the feature. The availability value is also handled live, so the control appears when jtl proves itself rather than waiting for a reload.
🦋 Changeset detectedLatest commit: c0e7306 The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
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.