WIP #35
Reference in New Issue
Block a user
Delete Branch "klubhaus/sideline:feature/capability-based-deps"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
so obviously this is still WIP but i think it would be nice to chat about next steps. i did work that should theoretically integrate all the features of the main branch in to my branch but the PR still needs work, if we want to keep mainline and sideline together. i'm also down with splitting them apart, either completely so you can stick with your existing render design or follow more of a library/first class consumer type patter
BUG FIXES: 1. Border parameter not being passed to display.show() - Display backends support border parameter but app.py wasn't passing it - Now app.py passes params.border to display.show(border=params.border) - Enables border-test preset to actually render borders 2. WebSocket and Multi displays didn't support border parameter - Updated WebSocket Protocol to include border parameter - Updated MultiDisplay.show() to accept and forward border parameter - Updated test to expect border parameter in mock calls 3. app.py didn't properly handle special sources (empty, pipeline-inspect) - Border-test preset with source='empty' was still fetching headlines - Pipeline-inspect source was never using the introspection data source - Now app.py detects special sources and uses appropriate data source stages: * 'empty' source → EmptyDataSource stage * 'pipeline-inspect' → PipelineIntrospectionSource stage * Other sources → traditional items-based approach - Uses SourceItemsToBufferStage for special sources instead of RenderStage - Sets pipeline on introspection source after build to avoid circular dependency TESTING: - All 463 tests pass - Linting passes - Manual test: `uv run mainline.py --preset border-test` now correctly shows empty source - border-test preset now properly initializes without fetching unnecessary content The issue was that the enhanced app.py code from the original diff didn't make it into the refactor commit. This fix restores that functionality.BUG: FPS display showed incorrect values (e.g., >1000 when actual FPS was ~60) ROOT CAUSE: Display backends were looking for avg_ms at the wrong level in the stats dictionary. The PerformanceMonitor.get_stats() returns: { 'frame_count': N, 'pipeline': {'avg_ms': X, ...}, 'effects': {...} } But the display backends were using: avg_ms = stats.get('avg_ms', 0) # ❌ Returns 0 (not found at top level) FIXED: All display backends now use: avg_ms = stats.get('pipeline', {}).get('avg_ms', 0) # ✅ Correct path Updated backends: - engine/display/backends/terminal.py - engine/display/backends/websocket.py - engine/display/backends/sixel.py - engine/display/backends/pygame.py - engine/display/backends/kitty.py Now FPS displays correctly (e.g., 60 FPS for 16.67ms avg frame time).View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.