Support ipyvuetify 3.0 - #263
Merged
Merged
Conversation
Routine dependency update. The lock upgrade brought a major bump of ipyvuetify, 1.11.3 to 3.0.0 (i.e. vuetify 2 to vuetify 3), which required revising the guis to support it. Dependencies and tooling: - upgraded `uv` and the lock file to the latest versions of all dependencies. - `ipyvuetify` now constrained to '>=3'. `v.TabsWindow` and `v.TabsWindowItem` do not exist before ipyvuetify 3 and are used unconditionally by `TabsControl`, which every price chart gui creates, so any gui would otherwise raise on ipyvuetify 1. NB there is no ipyvuetify 2, releases go from 1.x to 3.x. - updated the pinned versions of the GitHub Actions and the ruff pre-commit hook. Vuetify 3 migration. Note that whilst ipyvuetify raises on some removed arguments, others are silently dropped - no error is raised and the setting is simply not applied - as were the removed css classes. Most of what follows failed silently: - `TabsControl` no longer subclasses the removed pairing of `v.Tabs` and `v.TabItem`. It is now a `v.Sheet` composing a `v.Tabs` and a `v.TabsWindow`, kept in sync via `jslink`. - bound the tabs, the dialog and the loading overlay via the `v_model` trait. ipyvuetify only two-way binds a component's 'model-value' via `v_model`; `model_value` is passed through as a one-way prop with no listener, so client-side changes are never reflected back. - conveyed tab selection via that trait rather than the 'change' event that vuetify 2's tabs raised, without which the selector was neither enabled on selecting the selector tab nor removed on returning to the cursor tab. - replaced the arguments vuetify 3 removed: `dark` (now `theme`), the tooltips' `bottom` / `left` / `right` (now `location`), the overlay's `absolute` and `color` (now `contained` and `scrim`), the tabs' `centered` (now `align_tabs`), `v.Icon`'s `small` (now `size`) and the flex layout arguments (now utility classes). The tabs' `slider_size` was dropped without replacement, vuetify's 2px slider now being taken. - converted the color and typography classes to vuetify 3 syntax, 'bg-' / 'text-' prefixed and hyphenated. NB a background class also sets a contrasting text color, hence not set on the tabs. - converted the font awesome icon names to their MDI equivalents, ipyvuetify 3 bundling only the MDI webfont. - set 'flex-grow-0' on the containers placed directly in the gui box, vuetify styling `v.Layout` as 'flex: 1 1 auto' such that they otherwise grew to absorb all the box's spare vertical space. Other fixes: - fixed @.pre-commit-config.yaml, in which the ruff entry was missing its list marker such that it was overriding, rather than adding to, the `pre-commit-hooks` entry - the hooks of which had never run. Running them accounts for the whitespace-only revisions to a number of files. - ignored `CPY001` and `PLR0917`, promoted from preview to stable in ruff 0.16, and fixed the `RUF036` violations. Co-Authored-By: Marcus Read <marcusaread@gmail.com> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MhhjQXPUBYBvTtfZXFTgi8
maread99
force-pushed
the
claude/modest-planck-kkxxym
branch
from
September 3, 2026 15:43
27e4699 to
95c40b0
Compare
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.
Crafted with Claude. Manually revised and fully reviewed.
Changes to support
ipyvuetify3.0.0 (i.e. Vuetify 2 -> Vuetify 3). The project will no longer support earlier versions of ipyvuetify.Also updates all dependencies.
Vuetify 3 migration
The important characteristic of this migration is that most of it failed silently. ipyvuetify raises on some removed arguments (it defines them as explicitly unavailable), but others are simply dropped — not a trait, not synced, no warning, no error, the setting just never applied. The removed css classes behave the same way: they match nothing. Almost every bug below is of that kind, which is why none was caught by the test suite and several only surfaced on review.
The changes, by category:
Removed components.
TabsControlsubclassed the removed pairing ofv.Tabs+v.TabItem. It is now av.Sheetcomposing av.Tabsand av.TabsWindow, kept in sync viajslink.Removed arguments, each replaced:
dark(nowtheme), the tooltips'bottom/left/right(nowlocation), the overlay'svalue,absoluteandcolor(now the model,containedandscrim), the tabs'centered(nowalign_tabs),v.Icon'ssmall(nowsize), and the flex layout arguments of the old grid system (now utility classes). The tabs'slider_sizewas dropped without replacement, so Vuetify's 2px slider is now accepted.Renamed classes. Colour and typography classes converted to Vuetify 3 syntax —
bg-/text-prefixed and hyphenated (grey darken-4->bg-grey-darken-4,headline->text-h5). Note the conversion differs by context: as a class a colour needs thebg-/text-prefix, as a componentcolorargument it needs hyphenating only.Icons. The font awesome names converted to their MDI equivalents, ipyvuetify 3 bundling only the MDI webfont.
Other fixes found along the way
.pre-commit-config.yaml: theastral-sh/ruff-pre-commitentry was missing its- repo:list marker, so it was silently merging into and overriding thepre-commit-hooksentry — meaningcheck-yaml,end-of-file-fixerandtrailing-whitespacehad never actually run. Running them accounts for the whitespace-only revisions toAGENTS.md,README.md,LICENSE.txt,pytest.ini,.gitignoreand.claude/settings.json.CPY001andPLR0917toruff.toml's ignore list — both newly promoted from preview to stable in ruff 0.16, and addressing them (copyright headers repo-wide; reworking many function signatures) is out of scope here. Follows the existing convention for similar rules (PLR0913,S101).RUF036(Nonenot at end of a type union) violations directly, inutils/list_utils.py.Follow-up, not addressed here
utils/ipyvuetify_utils.pystill builds tooltips with the vuetify 2 activator idiom (v_slotswithv_on="ttip.on"). Tooltips do render and no console warning is raised — vuetify 3's overlay attaches its own activator listeners — so this is inert rather than broken.absolutewas of that kind, found only by suspecting it). That category cannot be assumed exhausted._Crafted with Claude Code
Manually revised and fully reviewed.