Skip to content

[WIP] Add basic support for sharing pedalboards via Patchstorage - #4

Closed
rreichenbach wants to merge 47 commits into
ps-1.13from
feat/patchstorage-pedalboards
Closed

rreichenbach wants to merge 47 commits into
ps-1.13from
feat/patchstorage-pedalboards

Conversation

@rreichenbach

@rreichenbach rreichenbach commented Jul 30, 2026 •

Copy link
Copy Markdown
Collaborator

Basic support for sharing pedalboards.

Now, clicking the Patchstorage button redirects to an asset chooser page (Currently Plugins or Pedalboards).

Pedalboards found in the "Other Platforms" platform with a tag of "pistomp" will be shown. Eventually, we'll hopefully have a pi-Stomp platform. We have made the request. Then, we might need to qualify with a tag of "pedalboard".

Currently, you can filter the pedalboards, click on one to see its metadata and install it (download, then install). Eventually, we'd like to be able to upload from here to, but that requires that we authenticate (bearer token) with the users patchstorage creds, and collect the other fields (Description, version, license, etc.). We can probably auto extract the others (platform, tag(s), thumbnail, etc.)

Screenshot 2026-07-30 at 3 57 52 PM Screenshot 2026-07-30 at 3 58 45 PM

@sastraxi

sastraxi commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Looking good! Note for later: we'll have to rebase to main

sastraxi and others added 15 commits August 4, 2026 22:18
…as retry

Refactor into public entry + private worker (_handle_port_appeared).
- Aggregated mode: connect new hw MIDI output to mod-midi-merger:in
  (defense-in-depth; connect_jack_ports tolerates EEXIST).
- Separated mode: retry alias lookup up to 6 times with 0.5s delay
  when the alias is not ready yet.
- No add_hw_port in aggregated mode; graph shows merged ports only.
In aggregated mode the mod-midi-merger JACK client already owns the
connection of hot-plugged hardware MIDI outputs to mod-midi-merger:in
(its port-registration callback plus a bounded reconcile burst), so the
mod-ui fallback was a redundant third writer of the same edge.
_handle_port_appeared now ignores new ports in aggregated mode, the
original upstream behavior. The separated-mode alias-lookup retry is
unchanged.
set_midi_devices_change_mode gave the combined "in;out" device symbol to
remove_port_from_connections, which matches against single JACK port names.
A combined symbol never matches, so nothing was removed from self.connections
and nothing was disconnected in JACK.

mod-host tears those JACK edges down itself in effects_aggregated_midi_enable
(steps 1 and 2), so after a switch to aggregated mode self.connections held
edges that no longer existed. connect() then short-circuits on its
"already exists" guard: the user drags a cable, gets HTTP true, and no
connection is ever made. Switching back to separated mode does not clear it,
so the cable can never be created again in that session.

Split the symbol first, as set_midi_devices_separated already does for the
same data.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…i-mode-switch

Prune stale connection records when the MIDI mode changes
The kMidiUnlearnURI branch returned straight after sending midi_unmap to
mod-host: it never popped the addressing, never reset bypassCC/midiCCs,
and never broadcast. Only the browser that performed the unlearn knew the
mapping was gone; every other client (pi-stomp's LCD, a second browser)
kept showing it, and the stale pluginData was replayed to the next client
to connect.

Learn already broadcasts via the midi_mapped feedback path; unlearn now
matches it with a -1:-1 midi_map.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Setting a MIDI-addressed control back to "None" reaches address() as
actuator_uri="null", not kMidiUnlearnURI — the latter only fires while a
learn is still pending and uncommitted. That path cleared bypassCC /
midiCCs but never broadcast, so only the browser that made the change
knew the mapping was gone. pi-stomp kept the binding on its LCD until
the board was switched away and back.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@rreichenbach
rreichenbach force-pushed the feat/patchstorage-pedalboards branch from 79c5211 to 8efe396 Compare October 29, 2026 18:07
@rreichenbach

Copy link
Copy Markdown
Collaborator Author

created this branch from the wrong root. Gonna create a new PR

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.

2 participants