Add ruby_event_store-browser-swimlane extension gem#1955
Open
pjurewicz wants to merge 1 commit into
Open
Conversation
pjurewicz
force-pushed
the
browser-swimlane-extension
branch
4 times, most recently
from
July 17, 2026 16:37
7cc58dd to
4b033eb
Compare
A browser extension comparing several streams side by side: their events merged into one newest-first timeline table, one column per stream, with infinite scroll and a created-at/valid-at sort toggle. An event linked into several compared streams renders once, as a link in each matching column. Each page is composed from existing single-stream reads - one time ordered read per compared stream, k-way merged by event time. Count is the read depth per stream, not the page size: a page emits everything above the completeness horizon (the highest chunk end among the streams whose read was cut), so nothing provably complete is thrown away. The shared cursor is that horizon timestamp and the next page asks for strictly older events - nothing is dropped or repeated. Built entirely on the browser extension API: routes and json responses via register_routes, an entry link via stream_links, its own stimulus controllers via scripts.
pjurewicz
force-pushed
the
browser-swimlane-extension
branch
from
July 17, 2026 17:12
4b033eb to
5793f2d
Compare
pjurewicz
marked this pull request as ready for review
July 17, 2026 17:46
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.
Summary
A browser extension gem (
contrib/ruby_event_store-browser-swimlane) comparing several streams side by side: their events merged into one newest-first timeline table, one column per stream, with infinite scroll and a created-at/valid-at sort toggle. An event linked into several compared streams renders once, as a link in each matching column.as_at/as_of) read per compared stream, k-way merged by event time. Count is the read depth per stream, not the page size: a page emits everything above the completeness horizon (the highest chunk end among the streams whose read was cut), so nothing provably complete is thrown away and a page carries betweencountandcount × streamsevents. The shared cursor is that horizon timestamp; a chunk cut exactly at it has the rest of that timestamp's group drained withbetween(t..t), so the next page asks for strictly older events and nothing is dropped or repeated. A mass of identical timestamps renders as one long page./compareand/compare/moreviaregister_routes(json +render_partial), an entry link on every stream page viastream_links, its own Stimulus controllers viascripts(a separate Stimulus application importing the vendored stimulus module; timezone display synced with the core selector through the shared localStorage key). No core changes.support/ci/generate(test / mutate / coverage workflows).Relies on #1954 (in-memory repository: limit after time filters) and #1950 (Sequel: time sort on backward reads) — both already merged.
Supersedes the in-repo approach of #1949.
Test plan
Browser::App.for(extensions:)behindRack::Lint