Repository navigation
Releases: BugCodeX/QtShadcn
Releases · BugCodeX/QtShadcn
Release list
QtShadcn v1.1.0
QtShadcn v1.1.0
What's New
- Added
QDateEdit,QTimeEdit, andQDateTimeEditstyling integrating cleanly with standard input and spinbox semantics. - Added
QCalendarWidgetstyling matching the shadcn/ui popover and calendar specification: seamless card design, transparent headers, dynamic chevron navigation arrows (chevron-left/chevron-right), and styled date grids. - Added comprehensive Date & Time showcase page in the gallery (
examples/gallery).
Verification
pip install qtshadcn==1.1.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v1.0.0
What's New
- Added
QTableViewandQTableWidgetstyling replicating the shadcn/ui table specification with transparent background, subtle horizontal dividers, header styling, and seamless row selection. - Added support for in-cell editor styling (
QTableView QLineEdit) with focused ring outlines and reset geometry. - Added support for checkable table indicators (
QTableView::indicator) matchingQCheckBoxstyling with dynamic light/dark alpha backgrounds and themed check/indeterminate SVGs. - Added Table component showcase in the gallery (
examples/gallery) with interactive checkable invoices and aligned numeric columns.
Changes
- Removed deprecated legacy basic example (
examples/basic/) in favor of the modular gallery showcase.
Verification
pip install qtshadcn==1.0.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.9.0
QtShadcn v0.9.0
What's New
- Added
QToolBox(Accordion) styling replicating Radix UI / shadcn accordion components with clean bottom dividers, transparent tabs, and dynamic chevron indicators (chevron-down/chevron-up). - Added
QToolBoxcontainer variants:outline(orborders) andcardfor enclosed accordion sections. - Added
QPlainTextEditstyling, matching theQTextEditmultiline textarea design. - Added standalone Accordion example page and unified side-by-side Textarea demonstration in the gallery.
Verification
pip install qtshadcn==0.9.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.8.0
QtShadcn v0.8.0
What's New
- Added
QScrollBarstyling (horizontal and vertical) matching the minimal, pill-shaped handles and rounded, subtle tracks of the shadcn design language. - Added
QScrollAreastyling with default border andmdrounded corners.
Verification
pip install qtshadcn==0.8.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.7.0
[0.7.0] - 2026-10-09
Breaking Changes
- Dropped
qtpydependency: The library no longer depends onqtpy. - Dropped Qt5 support:
PySide2andPyQt5are no longer supported. - Native shim: A new native
binding.pyshim is used internally to supportPySide6andPyQt6directly.
Verification
pip install qtshadcn==0.7.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.6.0
What's New
- Added a font registry API: register custom font families, set the active family, and query the resolved family (
registerFontFamily,setFontFamily,setFontFamilies,getFontFamily,getFontFamilies). - Bundled fonts are now registered lazily, only when first used.
Changes
- Theme mode switches are ~3.7× faster: Jinja templates are compiled once and the stylesheet is not re-applied when its output did not change.
Fixes
- Focused
QLineEdit,QTextEdit, andQPlainTextEditkeep their base border width instead of sharing theQSpinBoxfocus border. - A stale or legacy
theme.jsonno longer crashes theme loading; it falls back to the default theme. setStyleSheet("")no longer raises when clearing the additional stylesheet.
Verification
pip install qtshadcn==0.6.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.5.0
Changes
- Breaking: renamed
SystemThemeListenertoSystemThemeWatcher. - Moved bundled icon sources and font files under
qtshadcn/resources/. ThemedIconManagernow loads SVG icon sources from package resources viaimportlib.resources._add_fonts()loads fonts fromqtshadcn.resources.fontsso assets work when installed as a wheel.- Normalized QSS template helpers:
icons->Icons,radius->Radius. - Renamed
ThemedIconManagermethods togetIconUrlandrenderSliderThumb.
Verification
pip install qtshadcn==0.5.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.4.0
Changes
- Modernized theme engine internals.
- Modernized token helpers and added typography tokens.
- Updated default theme and QSS template.
- Consolidated font bundles with Inter, updated Roboto, and removed italic/condensed variants.
- Updated guides and examples.
Verification
pip install qtshadcn==0.4.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.3.0
Breaking Changes
- Removed
apply_theme()andget_theme()from the public API; usesetTheme()andgetTheme()instead. - Removed the internal
cache.pymodule; theme caching is no longer part of the public contract.
What's New
- Added a persistent config system via a
qsettingssingleton for storing theme preferences across sessions. - Added a 3-concept stylesheet API with a full rendering pipeline (
setStyleSheet,getStyleSheet,setTheme,getTheme). - Added
SystemThemeListenerfor automatic OS-level light/dark theme reactivity. - Exported all new public symbols from the package root.
Fixes
- Made
toggleThemeMode()deterministic when no mode is set. - Set light mode explicitly in XML theme tests to avoid environment-dependent failures.
Verification
pip install qtshadcn==0.3.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.2.0
Breaking Changes
- Migrated the Qt binding layer from the internal
qtshadcn/common/binding.pyshim toqtpy>=2.4.0. - Added support for
PySide2andPyQt5alongsidePySide6andPyQt6. - Removed the
QTSHADCN_BINDINGenvironment variable; useQT_API(pyside6,pyqt6,pyside2,pyqt5) instead. - Removed
qtshadcn.common.bindingandqtshadcn.binding_name; useqtpy.API_NAMEif needed.
What's New
qtpyis now a mandatory runtime dependency.- CI runs a four-binding matrix (
pyside6,pyqt6,pyside2,pyqt5) plus a no-binding error-path job. - Gallery example uses a per-binding
loadUihelper (PySideQUiLoader, PyQtuic.loadUi).
Changes
- Internal Qt imports now come from
qtpyinstead ofqtshadcn.common.binding. QtBindingErrormessages now referenceQT_APIand all four supported bindings.- README and
docs/getting-started.mddocument the new binding model.
Fixes
- Fixed RCC binary lookup casing for capitalized
qtpy.API_NAMEvalues. - Fixed Qt6-only mouse-event APIs so the gallery window drag works on Qt5 bindings.
- Narrowed
ImportErrorhandling inqtshadcn.__init__to qtpy-specific binding errors.
Verification
pip install qtshadcn==0.2.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.1.1
Changes
- Reorganize internal implementation modules into
qtshadcn/common/and splitapp.pyinto focused modules (theme.py,renderer.py,cache.py,theme_mode.py,helpers.py). Rename_qt.py,_parser.py, and_icons.pytocommon/binding.py,common/theme_parser.py, andcommon/icon.py. - Public API remains unchanged;
from qtshadcn import apply_theme, get_themecontinues to work.
Verification
pip install qtshadcn==0.1.1
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.1.0
Breaking Changes
- Refactor
apply_theme()to a keyword-driven signature.ThemeConfigis no longer part of the public API.- New signature:
apply_theme(app=None, theme_file=None, *, theme_mode="auto", custom_tokens=None, additional_qss=None, default_theme="dark"). appis now optional and falls back toQApplication.instance(); raisesQtShadcnErrorwhen no instance exists.theme_filereplacesThemeConfig.theme_source_path;Noneloads the packaged default theme.theme_modeaccepts"auto","light", or"dark"as strings.custom_tokensreplaces per-palette overrides; mode-specific when top-level keys are"light"/"dark".additional_qssreplacestheme_custom; appended to the base stylesheet as an inline string,.qssfile, or.jinjafile.default_themeis used whentheme_mode="auto"anddarkdetect.theme()returnsNone.- The disk cache key now includes
custom_tokensandadditional_qss.
- New signature:
What's New
- Add
theme_customfield toThemeConfigfor custom Jinja/QSS snippets appended to the base stylesheet. - Extend the shadcn QSS template with
QGroupBoxstyling,QPlainTextEditsupport,QFontComboBoxgrouping, rounded-full scale variants, and progress-bar labeled fixes. Button sizing now usesscale=instead ofsize=. - Support only PySide6 and PyQt6 bindings; PySide2 and PyQt5 are no longer selected.
Changes
- Rewrite the gallery example as a single-file application with embedded pages and new UI assets.
- Hardcode
__version__inqtshadcn/__init__.pyand synchronize it withpyproject.tomlon every release.
Verification
pip install qtshadcn==0.1.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.0.20
What's New
- Added
QTabWidgetstyling support with default pill tabs on a muted background and avariant="line"style with bottom/right indicators. - Added a gallery page demonstrating default, line, vertical line, and disabled tab widgets.
Changes
- Improved the default
QTabWidgetpane background, padding, and margin inqtshadcn/styles/shadcn.jinja. - Updated the documentation link in the gallery window from
https://BugCodeX.github.io/QtShadcn/tohttps://qtshadcn.readthedocs.io/.
Fixes
- Resolved
ruff format --checkfailure by reformatting multiline assert strings intests/test_renderer.py.
Verification
pip install qtshadcn==0.0.20
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.0.19
What's New
- Added
QTabWidgetstyling support with default pill tabs on a muted background and avariant="line"style with bottom/right indicators. - Added a gallery page demonstrating default, line, vertical line, and disabled tab widgets.
Fixes
- Improved the default
QTabWidgetpane background, padding, and margin inqtshadcn/styles/shadcn.jinja. - Updated the documentation link in the gallery window from
https://BugCodeX.github.io/QtShadcn/tohttps://qtshadcn.readthedocs.io/.
Verification
pip install qtshadcn==0.0.19
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.0.18
Fixes
- Split the
QDoubleSpinBoxgallery page out fromQSpinBoxfor clearer examples. - Rounded the hover state of spin-box step buttons.
- Restored the PyPI logo in the README/package metadata.
Documentation
- Updated the roadmap and switched status markers to emoji checkmarks.
- Removed obsolete
make buildreferences from the docs.
Verification
pip install qtshadcn==0.0.18
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.0.17
What's New
- Added QSpinBox and QDoubleSpinBox styling support with themed step buttons and validation states.
Fixes
- Installed
mkdocs-materialinto the Read the Docs virtualenv to restore documentation builds.
Verification
pip install qtshadcn==0.0.17
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.0.16
What's New
- Added an AI assistant skill management system for project-specific skills.
- Added a richer gallery overview page with component navigation.
- Added a gallery logo, copy XML button, and wider sidebar.
- Redesigned the gallery theme editor with tabs and color rows.
Documentation
- Migrated documentation hosting to Read the Docs.
- Added
skills/README.mdwith setup, usage, and authoring guidance. - Restructured README and added
CONTRIBUTING.mdandRELEASE.mdguides. - Added logo assets for docs and README.
- Updated
AGENTS.mdwith the current project structure. - Updated README with logo and shields badges.
- Removed ...
QtShadcn v0.6.0
What's New
- Added a font registry API: register custom font families, set the active family, and query the resolved family (
registerFontFamily,setFontFamily,setFontFamilies,getFontFamily,getFontFamilies). - Bundled fonts are now registered lazily, only when first used.
Changes
- Theme mode switches are ~3.7× faster: Jinja templates are compiled once and the stylesheet is not re-applied when its output did not change.
Fixes
- Focused
QLineEdit,QTextEdit, andQPlainTextEditkeep their base border width instead of sharing theQSpinBoxfocus border. - A stale or legacy
theme.jsonno longer crashes theme loading; it falls back to the default theme. setStyleSheet("")no longer raises when clearing the additional stylesheet.
Verification
pip install qtshadcn==0.6.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.5.0
QtShadcn v0.5.0
Changes
- Breaking: renamed
SystemThemeListenertoSystemThemeWatcher. - Moved bundled icon sources and font files under
qtshadcn/resources/. ThemedIconManagernow loads SVG icon sources from package resources viaimportlib.resources._add_fonts()loads fonts fromqtshadcn.resources.fontsso assets work when installed as a wheel.- Normalized QSS template helpers:
icons->Icons,radius->Radius. - Renamed
ThemedIconManagermethods togetIconUrlandrenderSliderThumb.
Verification
pip install qtshadcn==0.5.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.4.0
QtShadcn v0.4.0
Changes
- Modernized theme engine internals.
- Modernized token helpers and added typography tokens.
- Updated default theme and QSS template.
- Consolidated font bundles with Inter, updated Roboto, and removed italic/condensed variants.
- Updated guides and examples.
Verification
pip install qtshadcn==0.4.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.3.0
Breaking Changes
- Removed
apply_theme()andget_theme()from the public API; usesetTheme()andgetTheme()instead. - Removed the internal
cache.pymodule; theme caching is no longer part of the public contract.
What's New
- Added a persistent config system via a
qsettingssingleton for storing theme preferences across sessions. - Added a 3-concept stylesheet API with a full rendering pipeline (
setStyleSheet,getStyleSheet,setTheme,getTheme). - Added
SystemThemeListenerfor automatic OS-level light/dark theme reactivity. - Exported all new public symbols from the package root.
Fixes
- Made
toggleThemeMode()deterministic when no mode is set. - Set light mode explicitly in XML theme tests to avoid environment-dependent failures.
Verification
pip install qtshadcn==0.3.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make testQtShadcn v0.2.0
QtShadcn v0.2.0
Breaking Changes
- Migrated the Qt binding layer from the internal
qtshadcn/common/binding.pyshim toqtpy>=2.4.0. - Added support for
PySide2andPyQt5alongsidePySide6andPyQt6. - Removed the
QTSHADCN_BINDINGenvironment variable; useQT_API(pyside6,pyqt6,pyside2,pyqt5) instead. - Removed
qtshadcn.common.bindingandqtshadcn.binding_name; useqtpy.API_NAMEif needed.
What's New
qtpyis now a mandatory runtime dependency.- CI runs a four-binding matrix (
pyside6,pyqt6,pyside2,pyqt5) plus a no-binding error-path job. - Gallery example uses a per-binding
loadUihelper (PySideQUiLoader, PyQtuic.loadUi).
Changes
- Internal Qt imports now come from
qtpyinstead ofqtshadcn.common.binding. QtBindingErrormessages now referenceQT_APIand all four supported bindings.- README and
docs/getting-started.mddocument the new binding model.
Fixes
- Fixed RCC binary lookup casing for capitalized
qtpy.API_NAMEvalues. - Fixed Qt6-only mouse-event APIs so the gallery window drag works on Qt5 bindings.
- Narrowed
ImportErrorhandling inqtshadcn.__init__to qtpy-specific binding errors.
Verification
pip install qtshadcn==0.2.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test