• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

karellen / textual-vision / 26700187739
77%

Build:
DEFAULT BRANCH: master
Ran 31 May 2026 01:41AM UTC
Jobs 5
Files 20
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

31 May 2026 01:39AM UTC coverage: 76.683% (+4.4%) from 72.316%
26700187739

push

github

web-flow
Architectural refactor and bug fixes: dispatch, resize, focus, new controls (#1)

## Summary

### Architecture
- **Hotkey dispatch**: `tv_get_hotkey`/`tv_handle_hotkey` on
`TVViewMixin`, implemented in `Label` and `Button`, hotkey scan phase in
`Group._three_phase_dispatch`. Fixes broken Alt+hotkey dispatch that
only worked when the target widget was focused.
- **Resize unification**: Frame posts `ResizeStart` (with `left` flag)
instead of capturing mouse. Window is the sole resize state machine via
`_start_resize()`, handling both `Frame.ResizeStart` and
`ScrollBar.CornerPressed`.
- **Window/DeskTop decoupling**: `_raise_self()` → `tv_select_self()`,
duck-typing in `close()` replaces `isinstance(parent, DeskTop)`.
- **Flag-driven Program dispatch**: `Program.on_key` scans screen
children by `PRE_PROCESS`/`POST_PROCESS` flags instead of hardcoding
`_menu_bar`/`_status_line`.
- **MenuBar focus delegation**: `MenuBox` gets `can_focus=True` and
Textual focus after mounting, removing manual key forwarding.
- **ComboBox as Group**: `ComboBox` extends `Group` for proper TV focus
chain integration.

### New Controls
- **ListViewer**: abstract scrollable list — keyboard/mouse nav,
`scroll_target` auto-linkage with `ScrollBar`, multi-column support
- **ListBox**: concrete `ListViewer` backed by a Python list
- **ComboBox**: `InputLine` + dropdown popup, editable and read-only
modes, `_DropDownPopup` as floating `ListBox` on menus layer

### Bug Fixes
- **ListBox scroll broken**: `ScrollBar.scroll_target` provides direct
notification to `ListViewer`, replacing broken manual message wiring
- **All InputLine cursors blink simultaneously**:
`Group._is_focus_chain()` ensures `FOCUSED` only propagates through
Groups in the active focus chain; `on_tv_focus`/`on_tv_blur` propagate
state changes
- **Bottom-left corner resize not working**:
`Frame._hit_resize_corner()` now returns `"left"`/`"right"`/`False`;
`ResizeStart` carries `left` flag forwarded to
`_start_resize(... (continued)

557 of 882 branches covered (63.15%)

Branch coverage included in aggregate %.

643 of 828 new or added lines in 16 files covered. (77.66%)

6 existing lines in 3 files now uncovered.

2222 of 2742 relevant lines covered (81.04%)

4.05 hits per line

Uncovered Changes

Lines Coverage ∆ File
42
73.02
src/main/python/textual_vision/list_viewer.py
24
48.62
-14.23% src/main/python/textual_vision/label.py
24
68.72
0.13% src/main/python/textual_vision/window.py
21
85.71
-10.98% src/main/python/textual_vision/group.py
20
84.46
src/main/python/textual_vision/combo_box.py
19
73.99
20.68% src/main/python/textual_vision/scroll_bar.py
14
63.51
-5.51% src/main/python/textual_vision/app.py
7
88.24
14.83% src/main/python/textual_vision/input_line.py
5
44.94
-0.2% src/main/python/textual_vision/button.py
3
57.29
0.64% src/main/python/textual_vision/cluster.py
3
78.16
12.05% src/main/python/textual_vision/frame.py
3
80.13
0.51% src/main/python/textual_vision/menus.py

Coverage Regressions

Lines Coverage ∆ File
4
80.13
0.51% src/main/python/textual_vision/menus.py
1
78.16
12.05% src/main/python/textual_vision/frame.py
1
85.71
-10.98% src/main/python/textual_vision/group.py
Jobs
ID Job ID Ran Files Coverage
1 26700187739.1 31 May 2026 01:41AM UTC 20
76.68
GitHub Action Run
2 26700187739.2 31 May 2026 01:41AM UTC 20
76.68
GitHub Action Run
3 26700187739.3 31 May 2026 01:41AM UTC 20
76.68
GitHub Action Run
4 26700187739.4 31 May 2026 01:41AM UTC 20
76.68
GitHub Action Run
5 26700187739.5 31 May 2026 01:41AM UTC 20
76.68
GitHub Action Run
Source Files on build 26700187739
  • Tree
  • List 20
  • Changed 13
  • Source Changed 0
  • Coverage Changed 13
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 993dcc15 on github
  • Prev Build on master (#26416731637)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc