Skip to content

feat!: textual migration to 8.x+#7

Merged
IMDelewer merged 12 commits into
mainfrom
feat!/migration-to-8
May 10, 2026
Merged

feat!: textual migration to 8.x+#7
IMDelewer merged 12 commits into
mainfrom
feat!/migration-to-8

Conversation

@IMDelewer

Copy link
Copy Markdown
Contributor

No description provided.

IMDelewer added 12 commits May 10, 2026 07:05
…andPalette

- Move RigiHamburgerScreen, RigiHelpScreen, RigiSettingsScreen into screens/
- Add rigi/commands/provider.py with RigiCommandProvider for Textual 8 COMMANDS system
- Replace ctrl+p binding with COMMANDS = {RigiCommandProvider} on RigiApp
- Convert on_* method handlers to @on() decorator style
- Replace asyncio.create_task() with self.run_worker() (Textual 8 Worker API)
- Fix circular imports: widgets/ no longer imports from screens/
…reactive state

- Replace Horizontal+Button tab bar with Tabs/Tab in RigiBottomPanel
- Add reactive active_tab with watch_active_tab() driving ContentSwitcher
- Convert tab button handler to @on(Tabs.TabActivated) decorator
- Remove _switch_tab() and _active_tab private field
- Update test to use public reactive API
Replaced by Textual 8's built-in CommandPalette via COMMANDS = {RigiCommandProvider}.
The widget file remains in rigi.widgets.palette for direct import if needed.
Move all widget CSS from Python DEFAULT_CSS strings to the TCSS file.
Adds missing private widget styles (_StatusSpacer, _IconButton, _HamburgerButton,
_HomeButton, _VerticalResizeHandle, _SubNavNamePart/_ArrowPart, _ResizeHandle,
_LogsView, _RigiEmptyState) and new Tabs-based RigiBottomPanel styles.
Fixes RigiShortcutsBar height (2→1) and adds layout:horizontal to RigiContentArea.
… and screen modules

Remove remaining DEFAULT_CSS from border_frame, terminal_bar, gauge, image,
pane layout widgets, and all screen modules (help, hamburger, settings).
Add missing rules to default.tcss: RigiScrollPane, RigiSplit>Widget, RigiImage,
RigiGauge/Sparkline, all settings screen private classes, RigiHamburgerScreen,
corrected RigiHelpScreen with scoped selectors.
…arnings

- ruff --fix: sorted imports in settings_screen.py and __init__.py
- pyright: fix BINDINGS iteration to isinstance(Binding) check in dev_commands
  (BINDINGS can be Binding | tuple[str,str] | tuple[str,str,str])
- Fix MouseDown/MouseUp/MouseMove first arg: Widget|None (Textual 8 API)
- Guard panel.styles.height against None before .value access
- Add type annotations to handler parameters in test_commands
- Fix optional member access on logger.parent in test_loggers
- Suppress reportUnusedFunction on @app.command/@app.on_startup decorated fns
- Fix float(str(...)) cast for object kwarg in 08_platform_features gauge command
@IMDelewer IMDelewer self-assigned this May 10, 2026
@IMDelewer IMDelewer added enhancement New feature or request dependencies labels May 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

❌ PR Check Results

Lint & Type Checks

Check Status
🔍 Ruff ✅ Passed
🎨 Black ✅ Passed
🔬 Pyright ❌ Failed

Tests

Python Status
🐍 3.10 ✅ Passed
🐍 3.12 ✅ Passed
🐍 3.14 ✅ Passed

One or more checks failed. Fix the issues and push again.

@IMDelewer IMDelewer merged commit d9400ea into main May 10, 2026
5 checks passed
@IMDelewer IMDelewer deleted the feat!/migration-to-8 branch May 10, 2026 09:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant