Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

Generated by auto-changelog.

Unreleased

v13.12.2 - 2026-10-14

Commits

  • [FIX] FXLowerCaseValidator lowercases capitals instead of dropping them 463fb66

v13.12.1 - 2026-10-08

Commits

  • [FIX] apply_tip replaces the accessible name it set, not only the first one 5225b13

v13.12.0 - 2026-10-08

Commits

  • [BUILD] Icon libraries ship as one zip each, not three submodules 17061e1

v13.11.0 - 2026-10-08

Commits

  • [FEAT] The output log shows only the levels it is asked for, with Show all a7cb956
  • [FIX] Show all is a declared slot, so a dropped log pane is freed at once 18f4d30

v13.10.3 - 2026-10-08

Commits

  • [FIX] The busy line moves by elapsed time at the screen's rate, so it glides cb34b2d

v13.10.2 - 2026-10-08

Commits

  • [FIX] A column floor's handlers are declared slots, so no dead floor breaks a live one 753bf7b

v13.10.1 - 2026-10-07

Commits

  • [FIX] Sheet image paths are quoted, so a $ in the temp folder keeps the theme 63ac3a1

v13.10.0 - 2026-10-07

Commits

  • [FEAT] A dock area can fix its panes, and asks no room for an empty centre dc140ea

v13.9.0 - 2026-10-07

Commits

  • [FEAT] The transport groups round a filled Play, the frame field beside the rate 13954ce

v13.8.1 - 2026-10-06

Commits

  • [FIX] Sheet images are PNGs, so check boxes and radio buttons show in Cinema 4D 357a3dc

v13.8.0 - 2026-10-06

Commits

  • [FEAT] The dcc icon library becomes "brands", and every logo gets a grey one-colour mark 1533e46

v13.7.0 - 2026-10-06

Commits

  • [FEAT] A timeline says where its track draws its frames, and zooms from code a9f31bd

v13.6.1 - 2026-10-05

Commits

  • [FIX] FXSeating seats a tray panel in the screen corner nearest its icon, one gap off both edges 1e23768

v13.6.0 - 2026-10-04

Commits

  • [PERF] The log pane lays out once per flush and once per theme switch 49675dc
  • [PERF] The timeline builds its ticks once per window, not per paint 93965f2
  • [PERF] Parse the theme with libyaml and defer imports few callers need 7b52594
  • [FIX] A whole-star rating rounds a half up db5a527
  • [FIX] FXRangeSlider.set_values signals only the handle that moved 4de4f0b
  • [FIX] An empty extension set accepts every file, as Browse already did a0d08a6
  • [FIX] set_message refits a shown banner and restacks the ones below 1ebe2c7
  • [FIX] A null QIcon on a collapsible leaves no gap before its title 4b8ea56
  • [REFACTOR] One severity icon helper; the banner's tint rules come from SEVERITIES f3648ef
  • [FIX] Paint the splitter mark, menu badges and combo card again dbeff01
  • [REFACTOR] Banner slides end in one handler; dialog setup inlined; boilerplate prose dropped 6435ae6
  • [REFACTOR] Drop narrating comments; the validated edit's key check reads as one test 67ae9f8
  • [REFACTOR] Fold one-caller wrappers in the core; drop tests of names and privates 9bc7bd8
  • [DOC] Widget docstrings state the contract in a line 9224c8e
  • [FIX] Fill a partial icon library's defaults; write sheet icons whole 013109e
  • [REFACTOR] Trim history and empty summaries from fxstyle docstrings 33b9d84
  • [REFACTOR] Delete widget tests that test Qt, mirror a literal or repeat another 3750cf8
  • [FIX] Keep the FXApplication switch test out of the user's settings 88309ab
  • [REFACTOR] Merge widget test near-copies, quicken waits, cut history from test prose d3147fc
  • [FIX] Every child test process keeps its theme out of the user's settings 02df124

v13.5.0 - 2026-10-03

Commits

  • [FEAT] A narrow timeline drops its jumps, then its frame field c1db996

v13.4.0 - 2026-10-03

Commits

  • [FEAT] The command palette lists what you ran lately first, as VS Code does 4ed06b7

v13.3.0 - 2026-10-02

Commits

  • [FEAT] A timeline can serve a player: hide its range and rate, borrow its clock 25da07d

v13.2.0 - 2026-10-02

Commits

  • [FEAT] One-colour DCC marks, and a palette row can show any library's icon 55db0f3

v13.1.0 - 2026-10-02

Commits

  • [FEAT] A palette command can list choices to pick from, in place 384119d

v13.0.8 - 2026-10-02

Commits

  • [FIX] A combo popup row is at most 24 px under every base style; Windows 11 asked 34 5f6755f

v13.0.7 - 2026-10-02

Commits

  • [FEAT] A menu item can wear a pill at its right, set by fxstyle.set_menu_badge fe78e65

v13.0.6 - 2026-10-02

Commits

  • [FIX] A row's edge is the pane's border colour, and a header divides its sections b248985

v13.0.5 - 2026-10-02

Commits

  • [FIX] A banner sits under the topmost pane title bar in the corner, whatever panes are below 0460203

v13.0.4 - 2026-10-02

Commits

  • [FIX] A tab widget is one pane card around its tabs and page, as a dock pane is 34c7012

v13.0.3 - 2026-10-02

Commits

  • [FIX] A tab's close button stands as far in from the pill's right edge as its text from the left 5f67eb0
  • [FEAT] A palette command shows its icon left of its label, every label in line 7759ec1
  • [FIX] Every palette tip sits with the same margins, plain or rich, one line or wrapped 8754e0d
  • [FIX] Only a close button's metric asks for its parent, so views keep their sheet properties 85888e3

v13.0.2 - 2026-10-02

Commits

  • [FIX] A branch chevron keeps its 16 px box at any tree indentation, thumbnail views included 129a1ef
  • [FIX] One 4 px gap between widgets: layouts default to PANE_GAP ce685e9
  • [FIX] FXFilteredTree spaces one pane gap under any style, a host's included 53b099c
  • [FIX] A list row's text stays put when hovered or selected, on Qt 6.6+ 73c743b
  • [FIX] A delegate row's card is its only fill: no square under its corners aaac6de
  • [FIX] An item view keeps its bottom corners round on the windows platform 4658b5d
  • [FIX] A combo popup's rows take no list text step when hovered 86a9a6a
  • [FIX] The one-gap tests run without QtAds; only the dock area's needs it 8a3dfc3
  • Revert "[FIX] An item view keeps its bottom corners round on the windows platform" 064c1aa

v13.0.1 - 2026-10-02

Commits

  • [FIX] The first tab pill stands as far off the strip's start as off its top 0544cc4
  • [FIX] A hovered row reads 1.2:1 off its view and off its own card at every depth 02e5d04
  • [FIX] A tree or table header sits flush with the view's frame bf90058
  • [FIX] A tree whose header hides or shows after its first show takes the matching inset f94b6bc
  • [FIX] A hovered tinted row reads off its own tint at every depth in every theme edf4e7d
  • [FIX] A docked pane's content stands one tab gap off the pane's edges, from one PANE_GAP aa3a123
  • [FIX] A branch chevron keeps its 16 px box under a platform style that indents wider, in rows of any height a263125
  • [FIX] A scroll bar's thumb sits centred between a view's rows and its frame e32c192
  • [FIX] A list and a headerless tree keep exactly their 4 px top inset, rows' text still e43ec71
  • [FIX] A docked pane floors to its content's own minimum size, not only its hint b119048

v13.0.0 - 2026-10-02

Commits

  • [DOC] Plan the audit fixes for 13.0.0 e0864d7
  • [CHORE] Every push runs the tests, and a release tag only reaches PyPI when they pass 686dfc0
  • [CHORE] The tests run on a push to any branch, so a branch is proven before it merges 708b150
  • [FIX] The log pane lets go of logging when its widget dies and no longer moves the reader's cursor or scroll 49e8b3d
  • [FIX] FXSingleton builds a new instance when Qt has deleted the old one c76071f
  • [FIX] The window-corner tests run on Linux, faking WinDLL where ctypes has none 4f66440
  • [FIX] FXApplication.instance() is Qt's own, and a deleted application is never handed back 34ebf3a
  • [FIX] The code highlighter colours the characters it lexed, once per change, and carries an opened string to the lines below b3ddfa9
  • [FIX] FXProgressCard shows a description set after it was built, and takes its looks from the theme sheet fb65bf7
  • [FIX] FXElidedLabel.text() returns the whole text and sizeHint asks for its width; elided_text() reads what is painted 79f1e0f
  • [FIX] FXLoadingOverlay covers its parent as it resizes, and a hidden FXLoadingSpinner stops ticking until shown 1e2ceaa
  • [FIX] FXNotificationBanner deletes itself once dismissed, stacks on a hidden parent, and takes its looks from the theme sheet 428e9d6
  • [REFACTOR] One token resolver and one colour cache: get_theme_colors is the resolved sheet map, load_stylesheet changes nothing, overlay_color_file merges a few keys and re-applies f473da7
  • [FIX] A breadcrumb segment click is recorded in history, and double-clicks reach the editor through an event filter 474428f
  • [FIX] Icons read the colour cache once, recolour through one path (opaque pixmaps too), and list names from a library's own root and pattern 4d4c3ec
  • [FIX] The fuzzy proxy filters and sorts rows holding numbers or no data, and reads match colours from the cache 9909d00
  • [FIX] FXWidget sets no stylesheet and keeps layout() callable (main_layout); unused fxutils helpers deleted; theming core tests 7bebb6b
  • [FIX] Item delegates paint from the pull model: cached thumbnails, a parented picker, a full focus ring, and one layout for size and paint. 3f7988d
  • [FIX] FXFilePathWidget checks paths on the thread pool without blocking the UI, and a multi-file drop keeps every file 4b5db4f
  • [DOC] The plan adds the theme palette and pull-model icons ea6be2a
  • [FIX] FXAccordion signals report a section's current index after a removal a6a5aae
  • [DOC] The plan treats too-complicated code as a defect, with a complexity audit before release 11a92a3
  • [FIX] FXRangeSlider rounds pixels to the nearest value, splits stacked handles toward the drag, and paints thumbs in theme colours 35950b9
  • [FIX] FXTimelineSlider zoom-out always grows the window, frame 0 is a valid start, and the range spinboxes go through set_range 0e29394
  • [FIX] FXProgressCard's bar keeps its flat fill over the base progress bar rule 0079b8a
  • [FIX] FXFloatingDialog opens centred on the cursor, closes like a QDialog, keeps an opaque body under Houdini and a default icon that follows the theme 02d5109
  • [FIX] FXValidatedLineEdit reuses one set of animations and keeps the caller's margins and stylesheet; icon and password edits style through QSS ce5601e
  • [FIX] FXSystemTray's menu follows the theme, opens at a whole pixel, and Quit leaves a DCC host running 2dff04b
  • [FEAT] Themed roots wear a QPalette built from the theme, and icons read the theme when drawn: no registry, no flush on a switch 1db9222
  • [FIX] FXSplashScreen opens with its own default image, crops any shape at whole pixels, and follows theme switches 59c2838
  • [FIX] FXSearchBar's focus ring lights through a focused property, and setFocus(reason) reaches the field through its focus proxy fe6ec0d
  • [FIX] FXRatingWidget redraws its stars on a theme switch, and FXToggleSwitch paints its thumb in the theme's thumb colour 815ef87
  • [FIX] FXTagInput scrolls sideways to chips past the edge, emits a copy of its tags, and draws chips in on-accent theme colours bc901bc
  • [FIX] Tooltips close on a click outside, delete themselves when done, and item tooltips are built on hover by one handler per view. c3cb642
  • [FIX] FXCapitalizedLetterValidator accepts a lowercase start as intermediate, so its fixup capitalises it on Enter 9b8d490
  • [FIX] FXStatusBar paints its accent line from one state, and the message timeout clears the tint once 2473802
  • [FIX] Only monochrome icon libraries recolour: dcc logos and any recolor=False library keep their pixels, and a failing icon draw answers a blank pixmap instead of killing the process c77ef3f
  • [FIX] FXDropZone enables Clear without a tree, judges paths with one function, and shows drag and feedback states through a dropState property c976b47
  • [REFACTOR] The fuzzy search list and tree share one base, the tree filters recursively, and tree items are found in the model rather than a text map. 53a0260
  • [FIX] FXCollapsibleWidget's header toggles on a left click only, through an event filter, and marks its expanded state for QSS 76101ed
  • [REFACTOR] FXPrimaryButton and FXIconButton leave FXThemeAware and redraw their icons on theme_changed 6e35f5e
  • [REFACTOR] FXMainWindow shows its name only in the menu bar corner, keeps Qt's own central widget and finds its menus on whichever menu bar it has eb173e7
  • [FIX] The collapsible icon test starts from the dark theme, so suite order cannot make the switch a no-op 01981df
  • [DOC] FXApplication says which fxgui widgets theme themselves inside a DCC host fc08d5c
  • [REFACTOR] One path per job in the core: one theme-change path, one sheet builder, one colour walk, one defaults resolver; unused helpers and the singleton machinery deleted 7c0f25c
  • [DOC] The plan moves ls-pipeline's generic fixes into fxgui 0354811
  • [FIX] Owned widget sources and tests are ASCII only, and the new tests import only what they use 8ac9478
  • [MERGE] T1 theming core: one colour cache, one resolver, theme palette, pull-model icons 8d14573
  • [REFACTOR] The thumbnail delegate draws every cell's share of the row from one rounded outline, and size and paint read the same thumbnail and badge checks. bb33808
  • [DOC] The plan pins the QtAds import rules for Houdini 0fbedac
  • [DOC] The plan fixes the order-dependent tests 38be056
  • [REFACTOR] One severity table names, iconises and logs a severity for the status bar, the banner and the progress card 2736045
  • [DOC] The icon engine says why its clone list must exist, and the test pins that it owns each clone and drops the dead ones 1f68f49
  • [MERGE] T1: the clone keep-alive says why it must exist eac3520
  • [REFACTOR] FXNotificationBanner stacks by its parent's own children, not a class registry of its own 5539a92
  • [FEAT] Log pane ANSI colours resolve to the theme's feedback and text colours, readable on the pane, and recolour on a theme switch 0799bf7
  • [DOC] The plan proves the icon clone list at shutdown 6826aae
  • [REFACTOR] FXMainWindow asks its window handle for its screen on every Qt, and sets or cycles the theme one way f63486b
  • [REFACTOR] FXSystemTray opens its menu at the cursor and lets Qt keep it on screen, instead of guessing the taskbar side 23ef6fc
  • [REFACTOR] A tooltip is placed by one routine and anchored by one attach and detach, and the manager handles a tooltip event in one path. 6789957
  • [FIX] FXSplashScreen fades in to fully opaque with Qt's own animation, and says nothing made up by default 973b209
  • [REFACTOR] FXCollapsibleWidget measures its open height in one place and lets Qt's AsNeeded policy decide the scrollbars a41829f
  • [REFACTOR] FXApplication keeps no theme hook of its own, so a second application in one process is themed too 6d199ed
  • [REFACTOR] FXFloatingDialog's Close button only rejects; Qt closes and deletes the dialog from there 0afddab
  • [REFACTOR] Mouse positions come from event.position(), which qtpy provides on every binding, instead of three private helpers and two fallbacks 5b4cd44
  • [REFACTOR] FXRangeSlider draws its two value labels in one loop, and the slider and toggle import Qt types at module level fc177f3
  • [MERGE] T3 item views: cached thumbnails, one row outline, tooltips that close, shared fuzzy base 527be12
  • [DOC] Inventory of ls-pipeline code that moves into fxgui 81e7010
  • [MERGE] T2 window chrome: no banner band or wrapper, menus looked up, painted status line, one severity table de8dbb3
  • [DOC] The plan adds the shape-only base sheet and the signal-drop proof 6d56f3a
  • [REFACTOR] FXDropZone's tree reads the zone's own rules and hands drops to it; one drop-state setter replaces a flag and three style methods 57a1f65
  • [REFACTOR] The log pane attaches to quiet loggers through one method, queues through append_log alone, and drops its logger bookkeeping aab23b6
  • [REFACTOR] FXBreadcrumb's edit mode has one public open and close instead of wrapper pairs, and FXCodeBlock keeps its language only on the highlighter eb3b0fc
  • [REFACTOR] FXAvatar's cropped photo is invalidated by its cache key alone e7ac2d4
  • [FIX] Owned widget modules pass ruff F, B and BLE: the highlighter catches only Pygments' ClassNotFound fa11d66
  • [MERGE] T4 widgets: theme log colours, live-log search, one-lex highlighter, widgets off the mixin 6efd975
  • [DOC] The plan keeps one public name per job in 13.0.0 33b293d
  • [REFACTOR] Icons name their inks by theme token, per mode, and take them when drawn; FXIconLabel draws one, and no widget re-bakes an icon on theme_changed 47c05b1
  • [REFACTOR] The base sheet carries shape and state: roots take the theme palette and a root font, so setFont, item backgrounds and labels on cards show; a root inside a host adds the rules Qt gives no other way in 4064d03
  • [REFACTOR] FXThemeAware, the widget form of apply_theme, the collapsible aliases and the Qt 4 setRegExp branches are gone; apply_theme takes a theme name c98b151
  • [FIX] A theme_changed connection to a widget's method is proven to die with the widget, and the splitter mark drops its own, since Qt repaints the handles on a switch 0f55dbf
  • [FIX] The suite passes in any order: every test starts on the dark theme with the pointer away and no window left open, and no test leaves a mouse button down or compares wrapper ids a1b5cce
  • [FIX] Python quits cleanly with cloned icons still held, proven in a subprocess that heap-corrupts without the clone list 192a6f0
  • [FIX] A focused FXValidatedLineEdit is proven to draw its rejection flash over the focus ring for the whole hold; a render taken during a fade sees the blend 9862530
  • [DOC] The plan sorts every inventory item into move, replace or keep e9f3db6
  • [FIX] A framed window keeps an unmarked page on the surface now that no base rule fills every widget 38fb826
  • [DOC] The plan writes the move-over from a fixed ls-pipeline snapshot a0c88d2
  • [DOC] The theming, styling and icon pages and CLAUDE.md describe the pull model: QSS with registered tokens, colors() at paint, palette and root font for defaults, icons by token name, theme_changed for side effects only cb25325
  • [FEAT] fxstyle.mix and fxstyle.step_toward are public, so a consumer derives colours with the steps fxgui uses ca9dee6
  • [FEAT] A font role names its weight and hinting, and fxstyle.font(role=...) builds any role's QFont 83f970c
  • [FIX] A shown FXTooltip hides when its anchor or the anchor's window closes, and dropping a tooltip that last holds its anchor no longer crashes c225394
  • [FEAT] mark_as_title(widget, rank="section" or "card") sizes and weights a heading from the theme, in an app and inside a host 275d427
  • [FIX] A test proves an overlay of one theme and the fonts block resolves exactly like a whole copied colour file 02b2d70
  • [FIX] A test proves the themed app palette carries the accent behind selected text after every switch, graphics text items included c511021
  • [FEAT] FXThumbnailDelegate owns its rows: apply_transparent_selection skips the native row panel and focus rect, focus_ring and paint_selection choose a row or cell ring, and apply_minimum_thumbnail_width takes a floor 1285126
  • [FEAT] fxstyle.set_widget_style(widget, qss) gives one widget a sheet whose @tokens follow every theme switch, with no follower object 433ef73
  • [FEAT] FXSortedTreeWidgetItem sorts by its column's SORT_ROLE key first and natural text after, outside a tree too 9beae93
  • [FEAT] fxstyle.mark_as_thin_scroll(area) draws a scroll area on its card: no fill, a 6 px quiet bar with no arrows 8c76e35
  • [FEAT] fxutils shows menus with popup_menu, adds wrapper-proof submenus with add_submenu, filters a tree to any depth with filter_tree, fits columns to collapsed rows, and snapshots a tree's state across a rebuild with TreeState e5c27f3
  • [FEAT] _compat.later runs a deferred call owned by a QObject on Houdini's PySide 6.5, and rehome/focus_step walk the focus chain without killing wrappers b2c6bb5
  • [FIX] get_icon and get_pixmap hand each caller its own copy, so a binding that deletes or changes one leaves the cache whole d4d8e66
  • [FEAT] fxicons.rounded_pixmap(image, side, ratio) crops an image to an outlined rounded square, sharp at the given pixel ratio 60510db
  • [FEAT] fxwidgets exports FXPygmentsHighlighter, and a test proves a class rule gives an editor the mono face inside a host 40e0c5f
  • [FEAT] fxstyle.depth_shade(base, depth) tints a tree row toward border_light by its depth, holding the text at 4.5:1 f688eb7
  • [FEAT] FXKeyboardTree, FXSplitButton and FXFilteredTree answer the keyboard: the Menu key and Shift+F10 open a row menu, Enter runs a primary act or clicks, Alt+Down opens a split dropdown, and typing goes to the filter bar cb5d66d
  • [FEAT] The dcc library carries After Effects, Cinema 4D, DaVinci Resolve, Unreal Engine, VLC and xStudio marks 0b58718
  • [TEST] A tree header's icon follows a theme switch with no hook of its own fdac88a
  • [FEAT] FXFlowLayout wraps widgets onto new lines, and FXTagInput's chips wrap with it instead of scrolling sideways 6c897bd
  • [DOCS] Move-over group D results: each item's case, fxgui name and ls-pipeline replacement 0adb327
  • [FEAT] A cut FXElidedLabel shows its whole text as the tip when the caller set none 5179a04
  • [MERGE] Move-over D: owned delegate rows, focus ring per cell, keyboard tree, split button, deep tree filter, tree state 982b544
  • [FEAT] An error banner waits to be dismissed by default, message() reads a banner's words, and show(unique=True) skips a repeat 1b42316
  • [DOC] Report for move-over group A: each item's case, fxgui name and the ls-pipeline change eee1a1e
  • [MERGE] Move-over A: overlay fonts, title ranks, face weights, public colour helpers, depth shade, set_widget_style, rounded pixmaps, thin scrollbars 29ee9de
  • [FEAT] FXLoadingOverlay can leave its view undimmed and clickable and takes a spinner size; a spinner on a closed tree row idles on its own 073007e
  • [FEAT] FXStatusItem puts an icon and a word on the status bar that reads on any tint; add_item, tint(), ground() and status tips land after the items, and no project leaves the project blank 7711b7c
  • [FEAT] FXStatusBar.set_busy runs a busy line along the bar's top band in its own paintEvent, framed or not, and moves no layout ee30568
  • [FIX] FXBreadcrumb paints its strip, edge and ink from the theme at paint time, reading at 4.5:1 and 1.3:1 on a framed window in every theme, with no theme hook; segments_focusable=False and set_edit_placeholder a997910
  • [DOC] The breadcrumb section says how its colours follow the ground and the theme, and how to drop its Tab stops 22b7480
  • [FEAT] FXCommandRow is a fixed toolbar whose margins hold through style changes and the window's own toolbar; a corner widget re-places itself when it grows; a framed window flattens icon-only push buttons on its bars 9c37177
  • [FIX] Enter in a dialog runs its default button, never the icon button of an FXIconLineEdit or FXPasswordLineEdit e5f4291
  • [FEAT] FXOutputLogWidget takes a batch with append_many, hangs wrapped records under a header pattern with hang_indent, and opens its search with show_search d5a1976
  • [FIX] FXSearchBar is one Tab stop, its field, which line_edit() returns 9fd4fb4
  • [FIX] A window inside a host keeps the host's sheet on its parent out: the host rules reset what Houdini 21 and 22's base.qss set and the base sheet leaves open 6b97bdc
  • [FEAT] Every list, tree and table under fxgui's sheet scrolls by the pixel, in an app and inside a host, through qproperty rules on QAbstractItemView; the per-view calls go d2955f2
  • [FEAT] FXCommandPalette opens a search over a window's FXCommand rows, or over rows to go to, ranked by words in order; Enter runs, Escape or a click outside closes 40dd89b
  • [FEAT] FXStatusDot is a small clickable circle in a feedback colour, grey for no state, repainted from the theme 436da6c
  • [FIX] rehome files a wrapper only under a parent wrapper that lasts, so a Tab walk through QtAds tabs no longer frees a widget's wrapper mid-walk ec56ebc
  • [FEAT] fxdocking.FXDockArea docks named panes in QtAds as cards on the frame, one gap apart, with saved layouts, kept-open panes, window keys in floats, a declared Tab walk and banner placement, behind the optional docking extra 447d173
  • [FEAT] FXCheckableComboBox ticks several rows with a click or Space while its popup stays open, and reads them when closed 8d158ce
  • [FEAT] FXResizedScrollArea(floor=, cap=) asks for its content's height between the two; fix_wrapped_heights and align_labels close Qt's wrapped-label and form-column gaps 62f2590
  • [DOC] The plan lists the lint sweep and the fxdocking hython proofs f13acb4
  • [DOC] The move-b report lists every item's case, commit, new names and ls replacement d2f6be6
  • [FEAT] fxutils.later, fxutils.rehome and fxutils.focus_step are public, re-exported from their one definition in _compat ee0a71f
  • [MERGE] Move-over B: status items, busy line, command row, corner re-place, Houdini host reset, pixel scrolling by stylesheet 36180eb
  • [DOC] The move-b report notes that windows inside a host space tabs, group boxes and sliders slightly differently 20dc581
  • [DOC] The move-over C report says what moved, what changed and how ls-pipeline calls it 78b4fba
  • [FEAT] FXSeating seats a tray panel above its icon, at the pointer or in the corner, inside the screen, and slides it in once fc17855
  • [FEAT] grab_screen_region(window) lets the user drag out a screen region with the window hidden, Escape cancels, and the application never quits on it f14f91c
  • [FEAT] The dcc library carries Alembic, Deadline and Kitsu marks 864e0c9
  • [FEAT] FXSingleInstance holds one running copy per name; a second start is refused and the first emits woken d5959e5
  • [FEAT] The dcc library carries the two-colour Python mark 9e09ca2
  • [REFACTOR] FXEmojiButton is a round FXIconButton of a given size, so an emoji button sits beside the other icon buttons with nothing restyled 403785d
  • [FIX] A table cell's own background shows inside a host, even under Houdini's sheet: the host reset gives QTableView::item a native border instead of none 58c427e
  • [FEAT] FXMentionEdit offers people by name after an @ and lists who the text still names; FXThreadLine joins a comment's face to each reply's 0dda6e9
  • [FIX] Tools put in the menu bar corner show the menu bar through: the corner's toolbar and its disabled tools keep no fill of their own b33a67c
  • [FEAT] FXConfirmDeleteDialog opens Delete only on the exact word, never makes it the default even once shown, and writes its hint in the error ink 2db3c11
  • [DOC] Report for move-over group E: each item's case, fxgui name and the ls-pipeline change 68804c9
  • [FIX] A list row's own background shows under Houdini's sheet too, and every item view's selection and hover wear the theme there, proved active and inactive 6ea0d46
  • [MERGE] move-icons into audit-fixes 89cfeab
  • [MERGE] move-c into audit-fixes 085f1a0
  • [MERGE] move-e into audit-fixes cdc1761
  • [FEAT] fxicons.badged(icon, color) puts a filled dot at an icon's lower right, a ring cleared round it, for work in flight 3304886
  • [FEAT] fxutils.set_app_user_model_id(app_id) names the process to the Windows taskbar, a no-op answering False elsewhere b7f449a
  • [DOC] The plan has CI test the docking extra da8ce64
  • [FIX] A QFrame HLine or VLine draws one flat pixel in the theme's border, not Qt's two-tone bevel 8e1e0a7
  • [REFACTOR] FXCommandPalette's list scrolls by the pixel through the base sheet, with no call of its own f8e712e
  • [REFACTOR] fxwidgets imports in one sorted block and lists every public class in one sorted all, which a test holds to 9394fe8
  • [DOC] The group E report names the ls-pipeline replacement for badged, set_app_user_model_id and the flat frame line 1457c40
  • [FIX] An FXTooltip deleted before its anchor, as at exit, lets the anchor go without a RuntimeError c7a794f
  • [FIX] An FXToggleSwitch checked before it shows is drawn on, not mid-slide cf655a4
  • [REFACTOR] One gallery: python -m fxgui.examples shows every public widget, and no widget module carries an example of its own 5acd54e
  • [CHORE] CI installs the docking extra, so fxdocking is tested on Linux, and a machine without Houdini skips its base.qss sheets by name 60dc48c
  • [CHORE] ruff check --select F,B,BLE passes over the repo, and CI runs it before the tests f1b8115
  • [REFACTOR] FXCollapsibleWidget is the one accordion section class: the deprecated FXAccordionSection alias is gone f9983fd
  • [CHORE] The test extra installs pytest-randomly, so every run, local or CI, shuffles the order f2de053
  • [DOC] The plan adds the H21 floating-pane proof and the Houdini launch rules c213ea8
  • [DOC] The doc pages name every public widget once, as the code has it, with no history c3a55a2
  • [DOC] The plan drops the H21 floating-pane proof: the parenting is the same as H22's d09f0a8
  • [FIX] A theme switch re-sheets only the widgets set_widget_style styled, never walking every widget of the app f3d273d
  • [FIX] The floating-pane test checks what show_dock asks of the window, so it holds on Linux, where offscreen Qt leaves a floating QDockWidget inactive 7da7aac
  • [DOC] The plan has the reviewers check the reapply segfault fix and the slow seed e24d13d
  • [DOC] The docs build with zensical and its own theme: zensical.toml replaces mkdocs.yml, api-autonav writes the API pages, mike's zensical fork keeps one version per tag plus latest 0b615da
  • [FIX] An FXToggleSwitch reads in every bundled theme: thumb on track and edge on surface at 3:1 or better, on and off de77818
  • feat(icons): official Maxon Redshift and Cinema 4D marks ab2057c
  • [DOC] The plan deletes FXTooltip: apply_tip is the one tooltip 400f7ae
  • [DOC] The complexity audit of the merged tree, grouped by file ce82ab3
  • fix(icons): every dcc logo draws centred at the same size e9e5399
  • [DOC] The plan drops Qt 5: Qt 6 only, PySide6 6.5 floor 77d0679
  • [REFACTOR] fxconfig keeps its INI file where QSettings puts a user-scope one, and a typed default reads a typed value e33b87f
  • fix(icons): dcc logos carry no drop shadow or blur 8030f9d
  • test(icons): no dcc logo carries a near-transparent shape ccca887
  • [REFACTOR] fxutils holds the Qt helpers, one shadow helper and markdown_to_plain_text; fit_columns counts the view's icon size 67439ed
  • [FIX] FXToggleSwitch is as tall as a push button and every state reads: hover, focus and disabled wear the button tokens, edge and thumb at 3:1 in every theme 3b6db73
  • feat(icons): single-colour dcc marks follow the theme 540371f
  • [FIX] A theme switch paints the gallery exactly as a fresh build: a window is no second themed root under a themed application, a dock bar refits at its first show, and the gallery's feedback colours are token names 243d078
  • [FIX] An apply_tip tooltip shows the theme in force when it shows, not the one it was set in ee0866b
  • [FIX] An FXTooltip header icon is drawn in the accent of the moment, not a pixmap baked at show 454fe8d
  • [FIX] A status bar message tints the bar in the theme's own feedback colours, as its icon already was 7f0c60a
  • [FIX] An FXMentionEdit holds its lines in a font a sheet or a theme hands it after it was built dccab5c
  • [FIX] Every QSlider reads in every theme: an accent span at 3:1 on its groove, a handle edged in @control_edge at the button radius, and disabled in the button tokens f2a1a92
  • [FIX] FXRangeSlider speaks the slider language: a QSlider's groove, accent span and button-radius handles, its states, and value labels in the widget's own font and text ink d1c5df7
  • [FIX] FXLoadingSpinner moves in the accent over a border_light track, opaque in every style, and defaults to a push button's height with a stroke a tenth of its size 2cda4c6
  • [FIX] FXTagChip wears a primary button's fill and a border_light edge at the theme radius, so it reads on any surface and its corners stay round at any height 609500e
  • [FIX] FXSplitButton is exactly a push button's height and hovers as one: state_hover fill and an accent edge round the arrow part too, the button radius, and a muted arrow when disabled 910282f
  • [FIX] FXThumbnailDelegate cards show in every theme: a Qt.BackgroundRole token name fills a card that follows each switch, the edge is a crisp border_light, and the gallery's rows carry their cards again f4a1eea
  • [DOC] The theming page writes down the control language: height, radius, fills and edges per state, the 3:1 parts, accent, inks, sliders, switches and item-view cards 163a973
  • [FIX] A status bar message keeps its words through a theme switch and takes the new theme's tint: the tint is a registered rule on a severity property, and a long message no longer widens the window f947b12
  • [FIX] Tips and keycaps show the theme of the moment: their HTML names palette roles that Qt reads when the tooltip shows, and FXKeycap draws a shortcut on a window as a key round at the button radius d222276
  • [FIX] A control wears its focus look only when focus came by keyboard, as a browser's :focus-visible: a clicked control looks as it does at rest once the pointer leaves 9684d2d
  • [FIX] A menu bar item keeps one rounded box in every state: bare at rest, the hover fill when pointed at or after its menu closes, and the accent only while its menu is open d0e3384
  • [FIX] An FXKeycap reads as a key on any surface: a hover fill and a border edge, round at the button radius 03e2713
  • [FIX] FXFloatingDialog speaks the control language: a border at the button radius, a section title through mark_as_title, the theme's own push buttons, and one 12 px left edge for title, body and buttons 58b9463
  • [DOC] The plan lists the gallery and focus-visibility order hang 8f58dff
  • [FIX] A spin box is as tall as a line edit and rounds at the button radius 2f8b686
  • [FIX] The switch-equals-fresh test runs in about 4 s: one pair each way, app mode once, one grab per page, and closed windows really deleted so no later switch restyles them 23b68df
  • [FIX] FXSearchBar is as tall as a line edit and hovers as one: the accent edge on hover, the button radius, and the hover fill behind its clear button b3c2c5d
  • [FIX] FXTagInput's field is the theme's own line edit, at a line edit's height, padding and focus edge 6c2a665
  • [FIX] FXFilePathWidget is as tall as a line edit: its browse button is a push button's height, square, not a fixed 32 px fc39478
  • [REFACTOR] fxconstants names each package path once, fxdcc leaves the package API, and the severity levels live in _severity 9672c50
  • [REFACTOR] fxicons draws every icon and pixmap through one engine and one cache; disabled icons wear text_disabled 7b40091
  • [FIX] FXBreadcrumb is a push button's height: its buttons, strip and path editor take control_height instead of 28 px in a 32 px row, and its segments round at the button radius 24fa72f
  • [FIX] FXTimelineSlider's row is a line edit's height: no 30 px floor, and its transport buttons are squares a push button's height 66ba964
  • [DOC] The plan points the order hang at deferred deletes that never run 8c7bdc0
  • [FIX] A spin box is a line edit's height at the button radius again: 23b68dfa reverted 2f8b686e's style hunk 9817662
  • [BUILD] fxgui runs on Qt 6 only: import fxgui names the Qt 5 binding it refuses, and CI also runs on Houdini 21's PySide6 6.5.3 5ea404e
  • [FIX] Corners come from two tokens: @button_radius (4 px) for every control and menu, and the new @card_radius (8 px) for floating cards; no rule names a 2, 4 or 8 px radius a6c7c7c
  • [FIX] A plain QToolButton keeps its 31 px: its padding gives back the 2 px its reserved focus edge took d2ccb58
  • [FIX] FXJoinedGroup's outline is a push button's height, not 30 px beside 28 px buttons 75162fa
  • [FIX] FXCommandPalette wears a popup's frame and opens at position="top", "center" or "bottom" of its window, and every floating card shares one shadow 8f0eee2
  • [FIX] On PySide6 6.5 to 6.7 an icon asked at a pixel ratio comes back at it, and repolish takes an item view be1f352
  • [FIX] One height scale: text controls are control_height, on/off marks the new 18 px INDICATOR_SIZE centred in that row, so a switch beside a button shares its centre line 0ecb39b
  • [DOC] The plan lists the flaky busy-line test 5170215
  • [DOC] The plan takes the card shadow from the theme cb4e7ca
  • [DOC] The plan shows one keycap per key 8013dd5
  • [DOC] The plan sets one icon ink beside titles f5cd081
  • [DOC] The plan adds the chrome pass: chevrons, scrollbars, group boxes, flat rows 3cbdde9
  • [DOC] The plan adds a straight tab underline to the chrome pass fa9f322
  • [DOC] The plan has no item state move its text b4387a6
  • [DOC] The plan gives combo-box popups the menus' popup look 347e34e
  • [DOC] The plan sweeps for unstyled widgets with a standing test 3ebd3fb
  • [DOC] The plan scopes test runs: covering tests while working, the full suite once dbd846b
  • [DOC] The fix-b report: what group (b) changed, the shims it left and the callers that must move 782af0a
  • [MERGE] Fix group (b): icons, utils, config, Qt 6 only 0b26a39
  • [FIX] add_shadow parents its effect, so a caller that drops the returned effect keeps its shadow a8844a2
  • [FEAT] The dcc library's DaVinci Resolve logo is the glossy three-petal mark, in the shared frame 7cfb1b1
  • [FIX] A slider is a 4 px pill with a round handle: surface fill and accent edge, a thicker edge on hover, an accent fill while pressed, a text ring under keyboard focus 7bc535f
  • [DOC] The fix groups' shared brief 9c030d5
  • [MERGE] audit-fixes: the modern slider 5b5c6b6
  • [FIX] The gallery starts its spinners once they sit in a layout, so no spinner flashes as its own window; a test records every window shown while the gallery builds ffded17
  • [FIX] FXBreadcrumb: a home click says home once, path() and home_path() are methods, a segment paint reads cached strip colours 5d3c765
  • [FIX] FXCollapsibleWidget and FXAccordion: one accessor style, one expanded state, a new cap applies to an open section b8a0037
  • [REFACTOR] FXFlowLayout keeps its gap in QLayout's spacing, FXResizedScrollArea loses its dead resized signal, FXStatusDot reads colors() and the theme's feedback keys 3d799ac
  • [FIX] FXTagInput: a removed tag leaves no chip behind, a bulk set says tags_changed once 576ecb4
  • [REFACTOR] FXIconLineEdit and FXPasswordLineEdit are line edits whose icon is a QLineEdit action 2059fac
  • [REFACTOR] The regex validators hand their pattern to the base constructor a9d1814
  • [REFACTOR] FXSearchBar is a line edit with a search action and Qt's clear button f556e6e
  • [FIX] A tree draws the accordion's chevrons in the icon token, and no branch lines b58d5bf
  • [FIX] FXCheckableComboBox repaints an open popup and says checked_changed once per real change; grab_screen_region grabs the window's own screen; exec() for exec_() 3495680
  • [FIX] FXFilePathWidget refuses an unknown mode, so a folder picker cannot act as a file picker bb31aad
  • [REFACTOR] FXRatingWidget reads rating() and sets set_rating(), redraws its stars only when the hovered star changes, and drops its dead event overrides 103fcb2
  • [REFACTOR] FXCodeBlock: its rule adds only the mono face and padding, and it fits its lines in the stylesheet font 0648295
  • [REFACTOR] FXRangeSlider reads low()/high() and sets set_low()/set_high()/set_values(), and its height follows its font 21e41bf
  • [DOC] Fix group f's report 2c3ce33
  • [FIX] A scroll bar is a thin rounded thumb with no track or arrows, wider on hover 78ed815
  • [REFACTOR] FXIconButton is rounded by a registered rule per size, not its own sheet; FXJoinedGroup reads its children from its layout and re-places them at once 7bb4400
  • [FIX] FXDropZone: one owned flash timer, a right-click menu freed on close, one drop path 3fb6a9f
  • [FIX] FXCommandPalette rows take a theme switch while open: a delegate reads the ink when drawn, and each row carries its command f881894
  • [FIX] Combo, spin box, header, menu, tab-scroll and menu-button arrows are one chevron in the icon token e9d13db
  • [FIX] A group box's title sits above a whole card with the card radius a33ea6e
  • [FIX] FXMentionEdit sizes its lines from its frame and margin, again when a sheet changes them; FXThreadLine reads colors() 7227985
  • [FIX] Item views draw no alternating row stripes, even when a caller asks for them eee6b42
  • [REFACTOR] FXEmojiPicker takes its glyph size from its registered rule only and keeps on screen through FXSeating.clamp, the one screen clamp 0d8537d
  • [FIX] FXOutputLogWidget: Shift+Enter finds the previous match, and typing counts matches once the keys stop d035969
  • [DOC] The fix groups never kill processes by name 7ea6076
  • [FIX] FXAvatar rings a photo in the theme's border_light, picks its initials ink with readable_ink, and holds its size in one place 10ea295
  • [REFACTOR] FXFilteredTree's fold buttons wear apply_tip; FXSplitButton reads Qt 6's keyCombination 9c4064e
  • [FIX] FXElidedLabel re-cuts in a new font, keeps a wrapped text whole without a maximum height, reads mode()/set_mode(), and loses the mode warning 65027fb
  • [FIX] A tab is bare text over a straight bar, one look for QTabBar and QtAds tabs; focus draws the bar in text c1c70db
  • [REFACTOR] FXToggleSwitch drops focus overrides that only repeat Qt's repaint 155f537
  • [REFACTOR] FXMainWindow keeps one name per job: no toolbar, no placeholder actions, no bar or theme wrappers; About reads the status bar as it is 41f9a5b
  • [REFACTOR] FXFloatingDialog drops parent_package and its Houdini look, so fxdcc goes; its shadow is add_shadow fb20644
  • [REFACTOR] fxwidgets exports widgets only: theme plumbing, FXTooltip and FXColorLabelDelegate go; the gallery reads fxconstants paths and one severity list, picks a folder in folder mode, and drops the splash's hard-coded shape ac6763f
  • [REFACTOR] apply_tip is the one tooltip: FXTooltip, FXTooltipManager, FXTooltipPosition and set_tooltip are gone 6add6d5
  • [FIX] A tip shows in the theme in force on Qt 6.5 and covers actions and view items; keycaps draw one cap per key 7cd9d93
  • [DOC] The widgets catalogue lists what fxwidgets exports now 471929d
  • [FEAT] A newline in a tip's body breaks the line dee908b
  • [FIX] FXSplashScreen: pixmap() is Qt's own, a bad image is refused, progress and messages always work, a click hides it 23e85a4
  • [FIX] No state moves an item's text: combo popups, menus, lists and trees keep one text position at rest, hovered and selected a6224da
  • [FIX] Item views: row ends follow the dragged header, rows size to their own font, one role table, one fuzzy score, one fuzzy widget de93d86
  • [FIX] FXNotificationBanner: set_timeout replaces a running timer, the top and the side margins are apart, one way to add buttons 5cb97cf
  • [FIX] FXFloatingDialog casts the one floating-card shadow, as the banner and the progress card do 280a84b
  • [REFACTOR] FXSystemTray is a QSystemTrayIcon: Qt's own context menu, setIcon and show, and quit() for its Quit d8f14ae
  • [DOC] The fix-c report: what group © changed in the item views, and the ls call sites that move 0934d91
  • [DOC] Group d's report: one tooltip, keycaps per key, and the callers other groups change 404dc2c
  • [FIX] FXProgressCard's task icon wears the icon token beside its section title; one way to set progress fbfb5e7
  • [FIX] A spinner on a closed branch does not animate: its timer runs only while the spinner shows 8329012
  • [DOC] Group a's list gains the palette-before-sheet order and unused slider tokens 3d32132
  • [FIX] Building FXFuzzySearchTree flashes no window, and it reads the search bar through text() and setText() b1713ac
  • [FIX] FXSingleInstance.claim raises when it cannot listen, instead of answering as if another copy ran; FXWidget goes f61c8bc
  • [FIX] FXTimelineSlider: the tipped keys work, and playback follows a clock at any rate, 23.976 included ff5f226
  • [MERGE] fix-f into integrate 2bf1ef8
  • [REFACTOR] fxdocking sweeps once per burst of tree signals and imports later, rehome and focus_step from fxutils 957d88c
  • [FIX] The theme-switch comparison holds the gallery's spinners still, so a running spinner's angle is not a difference 68f2841
  • [MERGE] fix-c into integrate 28e1668
  • [REFACTOR] create_action takes only the arguments callers pass, and get_formatted_time goes 23f9ce8
  • [DOC] The fix-g2 report: every small-widget and gallery finding, the gallery flash and the calls other groups own 815b34b
  • [FIX] Menus, combo lists and the palette share one popup look: surface, the popup border, inset rows drawn as menu items, flyout corners on every themed popup aaf20cd
  • [REFACTOR] FXStatusBar.ground reads the fill the sheet gave the bar, instead of restating the sheet's rules d0d219f
  • [REFACTOR] The gallery and FXFilteredTree call the line-edit inputs as QLineEdits, and the gallery drops FXFuzzySearchList and the delegate star 71a3ab4
  • [MERGE] fix-g2 into integrate 9819e49
  • [REFACTOR] fxwidgets drops FXWidget with group e, and lists the severities in module order b6dfbc2
  • [DOC] The FXMainWindow subclass example builds no toolbar to decline c43d91c
  • [DOC] Fix group g1's report 027a73f
  • [MERGE] fix-g1 into integrate 5393dc7
  • [FIX] Every standard widget and every part Qt builds wears a theme fill: MDI area, calendar header and arrows, date-edit popup arrow, completer popups; a sweep test opens them all in every theme 42f6bcf
  • [FIX] The tray and fxdcc tests read the tray's own icon and the worktree's package folder 2284971
  • [DOC] The fix-e report: what group (e) changed, what it left, and the ls-pipeline calls that move 0487d0e
  • [FIX] A slider's empty groove is the control edge token, 3:1 on the surface in every theme 7549815
  • [DOC] The fix-g2 report gains the callers moved to groups c, e and f 5fb3a3b
  • [REFACTOR] The gallery builds one plain FXLoadingSpinner and a framed window without the toolbar option, for group e's API b6f93c7
  • [MERGE] fix-e into audit-fixes 17e4ad9
  • [FIX] No chrome widget flashes a window while it is built: a parentless spinner's start() does not show it, the card's description and the splash's bar are parented first 29724c9
  • [DOC] The fix-e report lists the flash fix and the init edits g2 owns e15e85e
  • [MERGE] fix-g2 into audit-fixes ffe4a2a
  • [MERGE] fix-d into audit-fixes e3067a4
  • [FIX] A g1 widget shows no window while it is built, and a dropped one is freed at once 6d02f84
  • [DOC] g1 report: the flash, the parent cycle, the gallery fixed by g2 05c5723
  • [FIX] The gallery's timeline markers name theme tokens, so they follow a theme switch 057981f
  • [FIX] The suite knows the chrome: a scroll thumb is a pill, sheet icons are the only files a theme writes, the thin-scroll fill is probed clear of rows 76d232f
  • [DOC] g1 report: the drop zone flash proof and the timeline crash as an open item 5b3f33f
  • [FIX] The slider tests build their default slider once, so lint passes 980a8c6
  • [MERGE] fix-g1 follow-ups into audit-fixes 7369bb0
  • [MERGE] fix-e follow-ups into audit-fixes 3d28746
  • [MERGE] fix-g2 follow-ups into audit-fixes 9fc3b43
  • [DOC] The chrome pass's report 4984341
  • [FIX] The host hover test sets its window clear of the host, so the pointer reaches the list on any window height 7e5cdf0
  • [MERGE] chrome into audit-fixes c5fb012
  • [DOC] Group a's list gains the 6.5.3 host-sheet teardown errors 4efd30a
  • [FIX] A row has no padding in any state and its view carries the inset, so no Qt version moves its text on hover or selection d3123f8
  • [FIX] A dock tab is a tab bar tab's height, with its bar and text on the same rows 4db4000
  • [DOC] The plan takes tab option B and the VS Code language into 13.0.0 17541ea
  • [FIX] A tab is muted text and the current one an edged pill, one look for QTabBar and QtAds tabs; dock tabs keep their whole title and their own fill c3689b2
  • [DOC] Group a's list gains the theme text contrast floor 978f483
  • [DOC] The VS Code-style UI language spec for 13.0.0 55ce1ec
  • [DOC] The language spec keeps the accent on inactive selections 57854c7
  • [DOC] The briefs never name the reference editor in code 7566595
  • [FIX] A tab is its text plus one padding in every state, never elided: QTabBar and QtAds tabs alike d2e040d
  • [DOC] Group h's list gains the gallery render leak d59b1ce
  • [FIX] A hovered delegate row is state_hover with its own ink, and FXItemDelegate goes: hover no longer changes an icon b126294
  • [FIX] No widget hovers in the accent: breadcrumb, switch, rating, banner actions, emoji cells; a hovered control no longer looks focused 59d4379
  • [FIX] The status bar's busy line is one flat accent run, and a hovered pane button keeps its icon ink 1d1cf7a
  • [FIX] The command palette and the emoji picker are popups at the card radius on @surface 12cf1b8
  • [FIX] Widget text uses two weights, the body's and 600, metadata 1 px and badges 2 px under the body, no hand-set sizes 1900ead
  • [FIX] Widgets that lay themselves out keep to the spacing ramp: 2, 4, 6, 8, 12, 16, 24 534a4e6
  • [FIX] A hovered emoji cell keeps a clear edge under the base hover rule, and the gallery shows a plain progress bar 1623408
  • [FIX] The splash panel's margin is 40 px, on the ramp, not 24, which crowded its text 13a4746
  • [FIX] A collapsible header is a section header: hover fills it, the open one is a 600 title, no fill that reads as a hover c89b815
  • [FIX] The widget language scan runs where QtAds is not installed 5ee0b10
  • [STYLE] Lint: an unused import and a regex flag alias in the new tests 9d82ef6
  • [DOC] The lang-widgets report: what speaks the control language now, and what is left for lang-sheet and the lead 1f2eb56
  • [DOC] Group h's list gains two timing-flaky tests 7336867
  • [FIX] A hovered button's icon keeps its ink, and a current menu row's icon takes the primary on-accent ink ec6ae22
  • [MERGE] The new UI language in widget code 491f867
  • [FEAT] The base sheet speaks one control language: hover is a neutral fill, the accent marks focus, selection and the current item 76a2a46
  • [REFACTOR] fxstyle has one name per job: colors() is the one colour getter, one token map derives text inks, pressed fill and on-accent inks, and a root takes its sheet before its palette c010f1e
  • [FIX] FXProgressCard takes the base sheet's flat progress pill instead of its own bar rules c9a5b15
  • [FEAT] A floating card's shadow is the theme's @shadow and @shadow_blur, read each time it draws, so it follows a switch 68593c4
  • [DOC] The lang-widgets report: the progress card and a trial merge with lang-sheet f578e59
  • [FIX] A dock pane's first tab starts as far in as a tab bar's, and FXProxyStyle draws no focus rectangle c5fd28b
  • [MERGE] lang-widgets: the progress card uses the flat bar c6a6d36
  • [FEAT] A completer's list is a popup card with menu-style rows 481c513
  • [FIX] A tooltip keeps the small radius: the compositor rounds no tooltip window d2a0ee6
  • [MERGE] audit-fixes into lang-sheet 06d3d55
  • [DOC] The theming page states the one control language, the derived inks, the shadow tokens and the one colour getter e5b71be
  • [FIX] The suite knows the language: split buttons hover by fill, a progress bar is a pill, no key leaks into the next test, and signal tests disconnect on PySide6 6.5 1c9e727
  • [FIX] Every bundled theme's text inks read at 4.5:1 on their surfaces and its pressed fill stands off its hover fill, pinned per theme 9c0cb0f
  • [DOC] The lang-sheet report 3cf0c4a
  • [MERGE] The new UI language in the stylesheet and theme, and group a b4c0cd1
  • [FEAT] A hovered tab shows the pill's fill without its edge and keeps its muted text, in QTabBar and QtAds alike; the hover fill stands 1.2:1 off the surface in every theme 74d9d3d
  • [MERGE] lang-sheet: tab hover shows the pill ecab429
  • [FIX] Muted text stays a visible step below text in every theme: text steps on, or muted steps back, until they stand 1.5:1 apart a1ad998
  • [FIX] A list, tree or table in a themed host window draws no focus rect, so PySide6 6.5 keeps a current cell's BackgroundRole 8243263
  • [DOC] The theming page and the lang-sheet report state the muted step and the host focus-rect fix ef3e69a
  • [FIX] A tab pill has one 4 px gap above, below and beside it, in QTabBar and QtAds alike 5c77044
  • [FIX] A crowded tab bar's scroll buttons cover the tab under them, an 8 px strip-coloured gap before each arrow fd320a6
  • [FIX] On PySide6 6.5 a theme asking a completer's list for its parent no longer frees the list, so typing an @ in FXMentionEdit no longer crashes f74d3d2
  • [FIX] The suite passes in any order and under load: hovers use the real pointer on a window clear of the others, no test leaves a button pressed, and waits follow events b39bea5
  • [DOC] The fix-h report: suite order and timing, folded tests, the 6.5.3 completer crash 6c1140c
  • [PERF] An FXSplashScreen shows in about 10 ms instead of 1 s on Qt 6.6 and later a508ba0
  • [DOC] The splash comments name Qt 6.7, the first version with the Show wait d0fdf23
  • [PERF] A theme switch on the gallery takes 290 ms instead of 320: the application-wide focus filter leaves at once on every event it does not watch 4e48463
  • [DOC] The timing report: splash, theme switch and icon numbers against 12.12, and the Houdini 21 and 22 proofs e0ac110
  • [DOC] The review-fixes brief: every finding of both reviews, split by file 6e3b875
  • [FIX] FXThreadLine paints after a reply's face is deleted 2942382
  • [FIX] A dropped main window, breadcrumb, emoji picker or search tree is freed; Help > Documentation follows set_documentation b700d85
  • [REFACTOR] One colour resolver, one Qt version, one cap; a bad colour file raises at the call c68455c
  • [FIX] A new FXIconButton size no longer re-sheets every root 0436e72
  • [FIX] FXThumbnailDelegate paints a colour decoration, writes descriptions in text_muted, and reports a pick on the row it was made for e7524b7
  • [FIX] The drop-target shadow and the loading scrim follow the theme 5c51e5f
  • [PERF] FXCodeBlock reads its document once per change, not once per line: 8000 lines highlight in 0.7 s instead of 3.1 16449a6
  • [FIX] A frame range typed into the timeline applies on Enter, not at every digit f2210be
  • [FIX] FXLoadingOverlay covers its parent and spins however it is shown, setVisible included f0b07c2
  • [FIX] FXRangeSlider holds low and high inside its range from the constructor and through set_minimum and set_maximum 35e9661
  • [FIX] FXDropZone lists a file gone from disk with no size, and its list drops the alternating rows 4793006
  • [FIX] FXCommandPalette ignores a go-to load that lands after a newer opening cf0e17c
  • [FIX] Status messages, tips and the confirm-delete word show markup as typed; FXConfirmDeleteDialog wears the theme on its own 37456c8
  • [FIX] grab_screen_region crops the dragged region on a high-DPI screen 8c4273b
  • [FIX] FXSplashScreen's default mark wears the theme's icon ink, light themes included, and follows a switch 13c6d86
  • [REFACTOR] FXSplashScreen inks its mark at paint itself, leaving fxicons' library table as it was 4839425
  • [FIX] FXProgressCard and FXRatingWidget hold their first value in range; keypad Enter clicks FXSplitButton 80787a7
  • [FIX] A dropped FXNotificationBanner with action buttons is freed ae8255b
  • [REFACTOR] FXFilteredTree is the one search over a tree: FXFuzzySearchTree goes, fxcore.FXSortFilterProxyModel keeps fuzzy matching for a model a17505f
  • [FIX] Popups, tooltips and dock chrome share the menu's card, rows and pills 67c0152
  • [DOC] The icon, styling and theming pages name the 13.0.0 API 2881ef6
  • [DOC] Group r2's report: every widget finding of the review, done e3c9289
  • [FIX] The splash shows in 24 ms on Qt 6.5, not 400: card titles are bold 3b261d7
  • [FIX] The gallery builds in about 260 ms on the desktop, not 850: one family per font role 06160f0
  • [FIX] The radius and compat-layout tests know the icon button circle and QT_VERSION c207d6b
  • [DOC] Group r1's report: every item, the ls-pipeline call sites that change 5d199a3
  • [FIX] The loading spinner's colour goes through fxstyle.qcolor; the docs no longer name FXFuzzySearchTree b7ccd01
  • [DOC] Review fixes group r3: reviewer B's remaining findings e2cf93a
  • [FIX] A hovered toolbar button draws its icon in the normal ink; only a menu's current row takes the on-accent ink c3976c8
  • [REFACTOR] fxstyle.font(role=...) is the one way to read a role's font; control_height and focus_visible are public ba06544
  • [FIX] Every docstring example that states its output is tested; depth_shade's example reads colors().surface 43af7b1
  • [DOC] The how-to pages state the Active ink as the code draws it, and every Python block runs on its own c0c7225
  • [FIX] import fxgui refuses a PySide6 older than 6.5 and names the one it found dad9d54
  • [FIX] A release publishes to PyPI only after its GitHub release was created 4927eaf
  • [FIX] Installing docking can no longer swap the PySide6 binding: no docking extra, the docs name QtAds beside your own PySide6 d21264f
  • [FIX] readable_ink takes a QColor again; its cache keys on colour names a74c84b
  • [DOC] A Moving from 12.x page lists every removed or renamed name and what to write in 13.0.0 01335ec
  • [FIX] The docstring example test runs without QtAds, skipping fxdocking 7b41885
  • [FIX] The cache test reads readable_ink's cache where it now lives 7d0f284
  • [DOC] Group r3 report de319d9
  • [FIX] List icons and branch chevrons are drawn in an item's 16 px icon box, as a tree's icons are db8c8a1
  • [FIX] The current tab is a state_pressed pill with no edge, apart from a hovered tab's state_hover pill 0dcc934
  • [DOC] Group r3 report: item-view icon size and the edgeless current tab 006877c
  • [FIX] A completer's list inside a host window draws its icons in the 16 px box too 98a2523
  • [FIX] An embedded window's floating panes answer its keys and its banners sit on its dock area 6d00d75
  • [FIX] One breadcrumb switch, tab_stops, takes its back and forward buttons off the Tab chain too 7e4af7b
  • [FIX] A test window opens with the pointer off screen, so no widget stays marked under the mouse 1618f76
  • [FIX] The floating pane raise test no longer crashes on Linux: its patches go before the window is freed 0acb9f7
  • [FIX] The completer hover test reads the row's fill past its text, not inside a wider glyph d536b97
  • [FIX] Pixel tests read text in its exact ink on Linux: the suite draws text unantialiased b873dc6
  • [DOC] Switch-over gaps: causes, fixes and the ls workarounds that can go 333767c
  • [FIX] add_submenu can put the submenu before an existing item 7702b1f
  • [FIX] FXFilteredTree takes a row of action buttons under its tree 74050be
  • [FIX] A test pins that a themed app keeps the suite's unantialiased text across theme switches 7106f36
  • [DOC] Switch-over gaps: items 8-12 and the crash follow-up 9fb9cbd
  • [FIX] A dock area's first split and reset layout use the size its window grows to on show f494b5f
  • [FIX] A shown banner refused as a repeat hides at once, so it no longer stacks 09f6175
  • [FIX] A dock area re-split after a grow keeps its look unless a layout was restored a850fbe

v12.12.0 - 2026-09-30

Commits

  • [FIX] A framed status bar draws no accent line, so it joins the frame. 72d4617
  • [FEAT] Item views scroll by the pixel, a wheel notch still about three rows 1c35c5b
  • [FIX] A tinted status bar writes its labels in an ink that reads on the tint 9df0552
  • [FEAT] fxstyle.readable_ink returns an ink that reads on a background, and the status bar uses it 379821e
  • [FEAT] Any main window can show its name in the menu bar corner, with widgets of its own beside it 1393557
  • [FIX] The corner title drops four lines no test needs: the resize fits the corner, a hidden banner stays hidden 0a099a1

v12.11.2 - 2026-09-30

Commits

  • [FIX] A framed window's hidden banner keeps the current theme's colours after a theme switch. c4062de
  • [FIX] The banner test holds a framed window's corner name to the menu bar's own face. 2dda560
  • [FIX] The focus-row test puts its original delegate back before it ends. 2176a74

v12.11.1 - 2026-09-30

Commits

  • [FIX] A theme switch survives a menu bar or splitter handle whose PySide wrapper was dropped. c349c36
  • [FIX] A log widget whose Clear button is hidden leaves no dead band under its output. 7fef720
  • [FIX] A marked splitter wrapped in another marked splitter keeps its mark, and so does the outer one. 0efb934
  • [FIX] A menu bar set later is framed and keeps fitting the title corner Qt moves onto it. e965084
  • [FIX] The menu bar re-read keeps the corner it has; only the unobservable corner re-read goes. ed3251c
  • [FIX] A pressed menu bar item keeps the selected item's margin and corners; only its colours differ. 0bdf08a
  • [FIX] The pressed menu item test also holds the title where the selected state draws it. df0cff4
  • [FIX] The dropped-handle test names its unused host. 6812887
  • [FIX] A framed window frames a menu bar set with setMenuBar at once, not at the next theme switch. b6873c2
  • [FIX] setMenuBar holds the new bar at once and frames it only in a framed window; the re-read only re-reads. 9ad8ceb

v12.11.0 - 2026-09-30

Commits

  • [FEAT] Add the frame and well colour roles, computed for every theme fa6a847
  • [FEAT] Add a framed FXMainWindow, a flat button role and a splitter mark e38b67e
  • [DOC] Show the framed window, flat buttons and the splitter mark 890fc24
  • [FIX] Paint the splitter mark, frame a late status bar, add pane_border e549488
  • [FIX] Make the splitter mark and wells read, frame a black pane, inset the corner 79b2329
  • [FIX] Test that a pane at either end keeps a readable border and mark, and that the corner fills the menu bar 0a1ba59

v12.10.2 - 2026-09-30

Commits

  • [FIX] FXJoinedGroup takes the push button's corner radius instead of a pill f102bbe
  • [FIX] Menu check boxes sit in the icon column, and a checked icon action frames its icon 7bceab6

v12.10.1 - 2026-09-30

Commits

  • [FIX] A tip names its control for a screen reader, so an icon-only button is no longer read as nothing 42f01d1

v12.10.0 - 2026-09-29

Commits

  • [FEAT] Add FXAvatar, FXEmojiPicker, FXEmojiButton and FXPrimaryButton 392978d
  • [FEAT] Add FXIconButton and FXJoinedGroup ba56b2d
  • [FIX] Comment widgets survive deleted editors and children, hidden children, the screen bottom and denser screens d3c205e
  • [FIX] Two tests pass with a real font as they do without one 2427551
  • [FIX] A primary button shows its hover and press, each in the text its fill was tuned for 1cfdbb8
  • [FIX] A primary button's icon takes the ink of the fill it sits on d097fa4

v12.9.0 - 2026-09-29

Commits

  • [FIX] A hovered tool button sits on the secondary accent, so its icon stays readable 358b81a

v12.8.1 - 2026-09-28

v12.8.0 - 2026-09-28

Commits

  • [FEAT] A picker can list a choice it will not let you pick 7318098

v12.7.0 - 2026-09-21

Commits

  • [FEAT] A painted version picker on the thumbnail delegate 1420930
  • [FEAT] The picker column reports the width its pill needs 09e612a
  • [FEAT] A click on a picker pill opens its versions fc1f9cf
  • [FIX] Measure the picker pill against one font, not two 82b726e
  • [DOC] The delegate claims two more roles than it says it does e7881e2
  • [FEAT] Line the picker column's plain values up with its pills 5a9dd75

v12.6.3 - 2026-09-02

Commits

  • [FIX] Draw no focus ring on a selected row 01a8239

v12.6.2 - 2026-09-02

Commits

  • [FIX] A selected row covers its own border c89e4a2

v12.6.1 - 2026-09-02

Commits

  • [FIX] Paint the row check box flat, in the delegate's own palette 600b713

v12.6.0 - 2026-09-02

Commits

  • [FEAT] Paint and size a tickable row's check box in FXThumbnailDelegate 0751d47

v12.5.0 - 2026-08-24

Commits

  • [FIX] Let a dismissed banner finish leaving the window 38dce0c
  • [FEAT] Let a notification carry the actions it asks for 38c38d5

v12.4.0 - 2026-08-22

Commits

  • [FIX] Stop the log widget's throttle from dropping records b3d48ae
  • [FIX] Let the breadcrumb's segments answer a hover, and close its editor 3d6adbe
  • [FEAT] Let a window decline the toolbar, keep its icon, and fit its contents 1946520
  • [FIX] Let the elided label yield its width, and take an elide mode 6aaa1e3
  • [FIX] Give a collapsed section its height back, and report its frames f6c4e47
  • [FEAT] Ask Windows 11 for a flyout's rounded corners and shadow 0b793b7
  • [FEAT] Let get_icon take a fallback, and publish the delegate's role ceiling b617cb6
  • [DOC] Write up the icon fallback and the delegate's role ceiling 41c6761
  • [FIX] Start a collapse from the height on screen, not from the cap aa69c0b
  • [FIX] Bound one flush of the log queue, and let a consumer bound the pane 61a110a
  • [FIX] Ask for the screen behind this file's own Qt version guard a2c4591
  • [FIX] Say so when word wrap overrules the elided label's mode 794cdb1
  • [DOC] Say that the breadcrumb's strip is always filled, not filled on hover 7890f93
  • [DOC] Teach the toolbar flag rather than hiding the toolbar 8160f66

v12.3.0 - 2026-08-22

Commits

  • [FEAT] Let an application name the theme it falls back to 8615bd7
  • [FIX] Drop the log widget's stretch with its Clear button 9b46ed9

v12.2.0 - 2026-08-20

Commits

  • [FEAT] Let the color file name typefaces by role e45efcf

v12.1.0 - 2026-08-19

Commits

  • [FEAT] Give every focusable widget a visible keyboard focus ring c03c73e
  • [FIX] Replace Qt's focus rectangle with an indicator per widget shape 5ad6cf0

v12.0.1 - 2026-08-19

Commits

  • [FIX] FXThumbnailDelegate: a lone status pill left the dot's slot empty 515c837

v12.0.0 - 2026-08-19

Commits

  • [FEAT] fxwidgets: native rich tooltips as the everyday path 7259f9a
  • [MISC] fxwidgets: migrate fxgui's own tooltips to the native helper f98ca60
  • [FIX] FXThumbnailDelegate: column 0 could shrink under its own content f563a77
  • [FIX] FXThumbnailDelegate: drop the hover tooltip and its HTML conversion ef36357
  • [FIX] FXThumbnailDelegate: centre the status dot against the pill 24d5892
  • [FEAT] fxwidgets: native tooltips are the default, the manager is opt-in a92d3a2
  • [DOC] Widgets guide: the tooltip default and the 12.0.0 migration note da81e88

v11.9.1 - 2026-08-19

Commits

  • [FIX] FXThumbnailDelegate: status pill and dot painted on the thumbnail 5a98727
  • [FIX] FXThumbnailDelegate: sizeHint left the title a pixel short 94d8432

v11.9.0 - 2026-07-30

Commits

  • [FIX] QToolButton MenuButtonPopup styled as a split push button, sized menu arrows 679c1d9
  • [FIX] Audit fixes: binding compat, theming defects, DCC embedding, keyboard accessibility d04f10b
  • [DOC] Design spec: theming rework to pull model (cascading sheet + paint-time reads) 0c05115
  • [DOC] Implementation plan: theming pull-model core (spec phases 0-1) 4bbb61d
  • [TEST] Spike: Qt cascade mechanics for pull-model theming baaf4be
  • [FEAT] fxstyle: unified token map/resolution pass d6ef32a
  • [FEAT] fxstyle: unified token map/resolution pass de6ace6
  • [TEST] fxstyle: cover partial-theme merge and computed on-accent fallback a9b00c3
  • [TEST] fxstyle: cover partial-theme merge and computed on-accent fallback 7ce4683
  • [FEAT] fxstyle: theme sheet builder and widget-style fragment registry c14377f
  • [FEAT] fxstyle: themed-root registry with weak references 115ac44
  • [FEAT] fxstyle: apply_theme(name) with old-signature compat shim 6c52117
  • [FEAT] fxstyle: colors() namespace and module-level theme_changed 4b9a2b3
  • [FEAT] fxutils: repolish() helper for dynamic-property styling 8568b6d
  • [FEAT] fxstyle: load_stylesheet rewired over the unified token pass f1c7d47
  • [FEAT] FXApplication: register as themed root instead of per-app signal 33729ff
  • [FEAT] FXMainWindow: themed root registration, live multi-window switching fac0759
  • [TEST] End-to-end cascade restyle proof for pull-model theming 4da9efc
  • [FIX] Theming: final-review cleanup โ€” new-form docs, stale comment, annotation, test hygiene f6ff839
  • [FIX] FXApplication: keep _on_theme_changed as a subclass override point 2e6b835
  • [DOC] Theming guide: document the pull-model API 88419fe
  • [FIX] Restore PyQt5/PyQt6 support: fxgui could not be imported at all cd7c37d
  • [FIX] FXTooltip: build the arrow polygon with QPointF, not QPoint 63781c6

v11.8.0 - 2026-07-03

Commits

  • [FEAT] timeline track zoom; managed rich tooltips; no double tooltips 07b58b5
  • [FEAT] FXTimelineSlider: marker layers, regions, in/out controls, demo acb4344
  • [DOC] showcase gains a Timeline tab 99edacd
  • [FEAT] timeline track: crossing ticks, hover indicator, keyframe nav efab0c2
  • [FEAT] timeline: tag playhead, bracket loop edges, theme-safe colors 4df2675
  • [MISC] timeline track: 1px baseline for all marks 8eda2f2
  • [FEAT] timeline: Nuke-style stacked layout (controls_position="below") da774df
  • [MISC] timeline: uniform 28px buttons in stacked row, clearer I/O icons e256dda
  • [FEAT] timeline: symmetric stacked row, view spinboxes, edge padding 4bafac9
  • [FEAT] timeline: loop toggle, balanced centering of the stacked row d0eea40
  • [MISC] timeline: paint hot-path cleanups (simplify pass) 03a48c2
  • [MISC] timeline: balance pads driven by LayoutRequest, not timers 648ad51
  • [BUILD] Testing suite c9fea9e

v11.7.1 - 2026-06-19

Merged

  • [FIX] Render SVG icons via QSvgRenderer so they show in Cinema 4D #10

Commits

  • [CHORE] Ignore local Rez dev-build files (package.py, rezbuild.py) 3508b3d

v11.7.0 - 2026-04-08

Commits

v11.6.0 - 2026-04-08

Commits

  • [FIX] FXThumbnailDelegate: account for status indicator width when truncating text in non-thumbnail items 77f11d4
  • [FEAT] FXThumbnailDelegate: thumbnail preview in tooltips, starred/pinned indicator (bottom-left on thumbnails, icon corner badge otherwise), child count badge on parent items 92ca6b9

v11.5.2 - 2026-02-09

Commits

  • [FIX] Pyblish workflow running on branch without tag on manual trigger c4713c7

v11.5.1 - 2026-02-09

Commits

  • [FIX] All icons are reactive to selection state if using FThumbnailDelegate a39ae59

v11.5.0 - 2026-01-16

Merged

  • v11.5.0: Added FXDropZone widget #9

Commits

  • [FEAT] Added surface_sunken background in thumbnails 7c7d471
  • [FEAT] Added a tree for the FXDropZone widget 63e920d

v11.4.2 - 2026-01-16

Merged

  • v11.4.2: Fixed thumbnail sizing #8

Commits

  • [FIX[ Fixed thumnail sizing 4da33b5

v11.4.1 - 2026-01-16

Merged

  • v11.4.1: Icons have a new state when hovered, changed the way they're detected #7

Commits

  • [BUILD] Removed Slack notification feedback from CI workflow d09a9cc
  • [FIX] Icons have a new state for hover and selection d32ddad

v11.4.0 - 2026-01-15

Merged

  • v11.4.0: Icons are now reacting to the hover/selection color #6

Commits

  • [FEAT] Icons reacting to state dca335a
  • [FIX] Fixed the hover/selection color on the QTreeView branch 53a70ea

v11.3.0 - 2026-01-14

Merged

  • v11.3.0: Added icon support for FXThumbnailDelegate #5

Commits

  • [FEAT] Added icons support in the status label of the FXThumbnailDelegate d7495d5
  • [FEAT] Added icon support for items using the FXThumbnailDelegate aa278a4

v11.2.0 - 2026-01-13

Merged

  • v11.2.0: Replaced tooltips by FXTooltip in FXMainWindow #4

Commits

  • [BUILD] Trimmed the icon fork submodules f6e8ccd
  • [FEAT] Modified tootip so it can replace setTooltip e7f360d
  • [CHORE] Consolidated theme lightness discovery within fxstyle 5f585d4
  • [FEAT] Replaced default tooltips for FXMainWindow 727baa1

v11.1.3 - 2026-01-12

Merged

  • v11.1.3: Notification banners are now fitting their content vertically #3

Commits

  • [FEAT] Notifications expanding with their content vertically 6389ea1
  • [MISC] Tested line break in notification ecba0d8

v11.1.2 - 2026-01-12

Commits

  • [FIX] Included files in distribution d5b2997

v11.1.1 - 2026-01-12

Commits

  • [BUILD] Added manual trigger of doc workflow 9bff734
  • [FIX] Mike versionning for documentation 0d3e70b
  • [FIX] Mike versionning for documentation 7ee388e
  • [FIX] Fixed workflow redirection 452c72c
  • [FIX] Included files in distribution d163547

v11.1.0 - 2026-01-12

Merged

  • v11.1.0: Overall bug fixes & improvements #2

Commits

  • [DOC] Trying zensical workflow bd86a5e
  • [DOC] Trying zensical workflow 61192ef
  • [DOC] Updating zensical workflow aae8e1b
  • [DOC] Automatic screenshots of the widgets 01f1a15
  • [DOC] Updated documentation with screenshots 2725568
  • [DOC] U[dated documentation with screenshots b24f2e5
  • [FEAT] Added custom background support to FXThumbnailDelegate 980c1d1
  • [FEAT] Simplified theme-awareness API 5b507f1
  • [FEAT] Added theme aware background in delegates examples 334c4fb
  • [FEAT] Added a new code block widget 85d3b01
  • [FEAT] Added a new API system for theming 8cbd171
  • [FEAT] Added more themes e3cae7e
  • [FIX] TOML invalid values c81e1ac
  • [FIX] Fixed fallback thumbnail image path 0f210eb

v11.0.0 - 2026-01-05

Merged

  • v11.0.0: Major widget expansion and theme system overhaul #1

Commits

  • [MISC[ Overall improvment of the codebase and huge refactor 751e16e
  • [FIX[ Fixed tag retrieval in workflow c3f1f51
  • [FIX] Fixed command for documentation deployment 11ea699
  • [FIX] Fixed command for documentation deployment 52d928d
  • [FIX] Fixed requirements.txt for documentation generation 89b092e
  • [BUILD] Removed useless print statement from IncrementVersion script c1cf052
  • [BUILD] Removed useless print statement from IncrementVersion script f9d14a6
  • [FEAT] Splashcreen with rounded corners 6d26886
  • [MISC] Overall codebase improvment refactor a670527
  • [STYLE] Black formatter fddac5e
  • [DOC] Added black requirements, modified theme, added missing typings 621ae64
  • [FEAT] Added a background behing the tabs for consistency when dragging the focused tab d417033
  • [CHORE] Update icon submodules to latest upstream versions 992badb
  • [FEATURE] Add dockable output log example, thumbnail delegate, and various UI polish babca6a
  • [FEATURE] Huge refactor of fxwidgets, allow for custom theme support, live-reloading of icons e8ca3ce
  • [CHORE] Optimized e6322fe
  • [DOC] Updated documentation with the latest changes 83bb151
  • [DOC] Updated how-to section 8e0054b
  • [CHORE] Regenerate changelog after removing erroneous v9.0.1 tag 4bae283
  • [DOC] Migrated from MkDocs to Zensical 20fdeaa
  • [FEAT] Added VS Code task for serving documentation d285308
  • [FEAT] Add 14 new pre-styled widgets with developer mode examples 898b796
  • [FIX] Fixed all new widgets 6ae38be
  • [STYLE] Black formatter 453ed50
  • [MISC] Now using YAML instead of JSONC for the styling 397938a
  • [FIX] Added QThread for heavy validations in file_path_widget 6457744
  • [FEAT] Added FXTooltip widget 9cb3e11
  • [FEAT] Matched shadows between tooltips and notifications b3cc135
  • [FIX] Overall fix of the new widgets 28a92cb
  • [MISC] Added GitHub files 70f4e1b
  • [DOC] Updated documentation 8506e1c
  • [DOC] Updated documentation 9cae456
  • [DOC] Updated documentation and associated requirements 0edb318
  • [FIX] Fixed typo in spinners causing errors in painter 3de2d3d
  • [PR] Resolved comment d4b1861

v6.5.1 - 2025-04-22

Commits

v6.5.0 - 2025-01-06

Commits

  • Added widgets, added @Slot decorator on relevant methods d19eae3
  • Documentation 450fb93

v6.4.0 - 2024-12-15

Commits

  • Added FXIconLineEdit, fxcore and FXSortFilterProxyModel 4e70506

v6.3.5 - 2024-12-14

Commits

  • Fixed scripts to increment tag version e3473ac

v6.3.4 - 2024-12-14

Commits

v6.3.3 - 2024-12-14

Commits

  • Modified docstrings, added tasks and scripts for deployment 760e209

v6.3.2 - 2024-12-11

Commits

  • Modified icons for branches 81652ca

v6.3.1 - 2024-12-11

Commits

  • Fixed tabs in the UI file ef29aae

v6.3.0 - 2024-12-11

Commits

  • Added simple icons library, QSS adjustments, fxicons automatic icon disabled colors 10c8ef8
  • Added simple icons library, QSS adjustments, fxicons automatic icon disabled colors a539cfd

v6.2.7 - 2024-12-05

Commits

v6.2.6 - 2024-12-05

Commits

v6.2.5 - 2024-12-05

v6.2.4 - 2024-12-05

Commits

  • Removed mnemonic indications in FXMainWindow 4536d1a

v6.2.3 - 2024-12-05

Commits

v6.2.2 - 2024-12-05

Commits

  • Modified style.qss, removed Illustrator files from distribution package a31a0a2

v6.2.1 - 2024-12-05

Commits

  • Fixed buttons not moving with QTabBar d1b8b72

v6.2.0 - 2024-12-05

Commits

  • Hardcoded requirements version, deleted old stylesheet icons for SVGs, updated style.qss 82c09ef

v6.1.0 - 2024-12-05

Commits

  • Moved and renamed convert_icon_to_pixmap to fxicons bff0bc4

v6.0.3 - 2024-12-05

Commits

  • Updated docstrings and examples in fxicons, updated documentation 56e1c89

v6.0.2 - 2024-12-04

Commits

  • Fixed examples, modified colours in style.jsonc 112b5ac

v6.0.1 - 2024-12-04

Commits

  • Cleaned fxconstants, updated documentation b607c10

v6.0.0 - 2024-12-04

Commits

  • Added more icon libraries, refactored fxicons a88a7e7

v5.0.1 - 2024-12-04

Commits

  • Removed useless submodule 1b3f2e8

v5.0.0 - 2024-12-03

Commits

  • Added icons submodules, improved fxicons, replace QtAwesome where possible 2111bdf
  • Added icons submodules, improved fxicons, replace QtAwesome where possible c3f9553

v4.6.0 - 2024-12-01

Commits

  • Documentation e411c2f
  • Using QCollator for FXSortedTreeWidgetItem fe99304
  • Changed all icons to use mdi and not mdi6 c432a6b

v4.5.1 - 2024-11-15

Commits

  • Fixed imports for PySide6 compatibility layer 7298c25

v4.5.0 - 2024-11-14

Commits

  • Getting ready for PySide6 migration 0bcc995

v4.4.2 - 2024-11-14

Commits

  • Stretched table widget 8b7b450
  • Added a set_stylesheet argument on the FXMainWindow 1c3bb2f

v4.4.1 - 2024-11-11

Commits

v4.4.0 - 2024-11-11

Commits

  • Module docstring and documentation 04ff46d
  • Documentation 3669bb8
  • Removed deprecation for fxicons, added DCC icons and registered them with fxicons library 5bdf43d

v4.3.0 - 2024-11-11

Commits

  • CHANGEGLOG c35fe86
  • Added fxconstants module, refactored examples, added FXColorLabelDelegate class, added DCC icons, modified QSS stylesheet 8439fc8

v4.2.0 - 2024-11-07

Commits

  • Fixing semantic package version e25f313
  • Fixed docstrings fc4c392
  • Updated documentation copyright to reflect Open Source status aa9ae1e
  • Updated version in Houdini package JSON 85da2a1
  • Refactored Houdini package 0bbc405
  • Added a DEBUG level to status bar messages, fixed truncated tab bars 4b1e695

v4.1.0 - 2024-10-31

v4.0.4 - 2024-10-31

Commits

  • Deprecated fxicons module a566b4f

v4.0.3 - 2024-10-31

Commits

  • Documentation screenshot 4160188
  • Added the FXSortedTreeWidgetItem class 7c5a6b7

v4.0.2 - 2024-10-30

Commits

  • Changed default color, added arguments for showMessage 63869b8

v4.0.1 - 2024-10-30

Commits

  • Removed useless icon files 23d3eed

v4.0.0 - 2024-10-30

Commits

  • Fixed logger mapping in showMessage 3a26875
  • Deprecated fxicons in favor of qtawesome 22bfa2c

v3.2.4 - 2024-10-24

Commits

  • Modified default font for Windows 6a10954
  • Refactored for Pylint 8139ea3

v3.2.3 - 2024-10-24

v3.2.2 - 2024-10-24

Commits

v3.2.1 - 2024-09-05

Commits

  • Updated changelog 236a7ec
  • Added links for PyPI page, setup funding 92714e4

v3.2.0 - 2024-09-04

Commits

v3.1.1 - 2024-09-04

Commits

v3.1.0 - 2024-09-04

Commits

  • Added auto-changelog 5e4d9d9
  • Adding maintenance tags, unreleased changelog 1c639af
  • Added FXPasswordLineEdit, fixed methods when subclassing FXWidgets 3678324

v3.0.2 - 2024-08-20

Commits

v3.0.0 - 2024-08-20

Commits

  • Initial commit 0f0c9f2
  • [INIT] Initial commit 4a2d7fa
  • [UPDATE] Requirements 6ad76c3
  • [UPDATE] Pip preparation bd7842f
  • [UPDATE] Imports 9b0897a
  • [UPDATE] Pip setup fe2f2c2
  • [UPDATE] setup.py b677df8
  • [UPDATE] setup.py 0fb5bbe
  • [UPDATE] Get DCC windows 6b8680b
  • [UPDATE] Setup and shadows 1483963
  • [UPDATE] Overall and docstrings 9b7acfd
  • [UPDATE] Create LICENSE 377c59b
  • [UPDATE] Package with license 3b58222
  • Module organization 5282c49
  • Extension 14ac830
  • [UPDATE] Typings, optimization and example adfd9f3
  • [UPDATE] Get parent DCC methods dd5f6f8
  • [UPDATE] Module refractor 9660af4
  • [UPDATE] Comments 2977a37
  • [UPDATE] Removed focus state on QPushButton 48be3fd
  • [UPDATE] Typings dcd890f
  • ๐Ÿงช test(example): Commit message test 612f21e
  • ๐ŸŒˆ style(splashscreen): Reformat and length 8ce2a6c
  • Requirements 93a7b03
  • ๐Ÿž fix(package): Init for PIPy 63bbc34
  • ๐Ÿž fix(package): Wrong imports f5f35df
  • ๐Ÿž fix(package): Missing files PIPy a71976f
  • ๐ŸŽˆ perf(package): Removed cache 35da390
  • ๐Ÿ”ง build(Package): Version 40d833f
  • ๐Ÿž fix(dcc): Python3 long f3d5015
  • ๐Ÿ”ง build(package): Version up 3d36210
  • โœจ feat(window, example, package): Preparing for DCC c9eb054
  • ๐Ÿฆ„ refactor(dcc, example, window, package): Overall performance 6ba8784
  • ๐Ÿ”ง build(setup): Version up 97447a2
  • ๐Ÿž fix(splashscreen): Image handling c7121c1
  • ๐Ÿ“ƒ docs(images): e9b5423
  • ๐Ÿ“ƒ docs(package): f7ba32e
  • ๐Ÿ“ƒ docs: f262e01
  • ๐Ÿ“ƒ docs(package): Docstrings and doc 83db948
  • ๐Ÿ“ƒ docs(package): 015f645
  • ๐Ÿž fix(package): Wrong favicon 21bf196
  • โœจ feat(splashscreen): Icon c0e36c4
  • ๐Ÿž fix(example): Imports bb43f51
  • ๐Ÿ“ƒ docs(package): 55f272b
  • ๐Ÿ”ง build(package): 5202d08
  • โœจ feat(package): Outsourced theme 226f330
  • โœจ feat(package): Theme handler 3a104e3
  • โœจ feat(package): Added icons aef2dd8
  • โœจ feat(package): Added icons e54bbb2
  • ๐Ÿ“ƒ docs(package): 6633122
  • โœจ feat(Package): Overall beef357
  • ๐Ÿ”ง build(package): PyPI 9c25513
  • ๐Ÿ“ƒ docs(package): Adding to doc a98f5d8
  • ๐Ÿฆ„ refactor(package): f684543
  • โœจ feat(floating_dialog): Floating Dialog bcef834
  • Switched for QtPy ac12685
  • Refactored the package name daf372a
  • New icons 6ebd43f
  • New icons ad090bc
  • New icons 9cb0892
  • Further implementation of multiple themes 4f10859
  • Overall update 3dc06cf
  • Refactored naming 64b1350
  • New style 6de33fb
  • Overall update 783783c
  • Overall update 823a1c1
  • Create python-publish.yml 5208c31
  • Refactored the classes, updated documentation 2a20797
  • Test with CI/CD dc12e06
  • New package release 91dc0ac
  • Added new icons 50b8aa6
  • Updated documentation e9ba4bf
  • Updated documentation, new icons 2602509
  • Updated documentation e92c88a
  • Updated documentation 32083b7
  • New favicon 1742841
  • Updated documentation 9578ffe
  • Fixed an issue with the setCentralWidget method d0a62a2
  • Docstrings and documentation 7d05e71
  • Updated documentation 886391f
  • Black refactor fe93dd3
  • Fix widgets 1a29deb
  • Package update 2f2d950
  • Fixed typo on documentation 4bc465b
  • Updated documenation 5c0ab9a
  • Added the FXWidget class 5cb814e
  • Added the FXSystemTray class e891bc0
  • Singleton for FXApplication 6e7df4e
  • Fixed the update applications not working without restarting the app e18423a
  • Fixed color customization 3f27e5b
  • Fixed some QSS elements 9258381
  • Overall update, package requirements 1af5e3f
  • Styling issues 6658f30
  • Bump version 9c90854
  • Removed hardcoded QT_API env var 1987973
  • CI/CD for PyPI 1c3e8a8