Skip to content

Releases: BugCodeX/QtShadcn

QtShadcn v1.1.0

Choose a tag to compare

@BugCodeX BugCodeX released this 11 Oct 10:07

QtShadcn v1.1.0

What's New

  • Added QDateEdit, QTimeEdit, and QDateTimeEdit styling integrating cleanly with standard input and spinbox semantics.
  • Added QCalendarWidget styling 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 test

QtShadcn v1.0.0

Choose a tag to compare

@BugCodeX BugCodeX released this 10 Oct 18:44

What's New

  • Added QTableView and QTableWidget styling 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) matching QCheckBox styling 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 test

QtShadcn v0.9.0

Choose a tag to compare

@BugCodeX BugCodeX released this 10 Oct 05:00

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 QToolBox container variants: outline (or borders) and card for enclosed accordion sections.
  • Added QPlainTextEdit styling, matching the QTextEdit multiline 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 test

QtShadcn v0.8.0

Choose a tag to compare

@BugCodeX BugCodeX released this 09 Oct 18:50

QtShadcn v0.8.0

What's New

  • Added QScrollBar styling (horizontal and vertical) matching the minimal, pill-shaped handles and rounded, subtle tracks of the shadcn design language.
  • Added QScrollArea styling with default border and md rounded corners.

Verification

pip install qtshadcn==0.8.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test

QtShadcn v0.7.0

Choose a tag to compare

@BugCodeX BugCodeX released this 09 Oct 08:38

[0.7.0] - 2026-10-09

Breaking Changes

  • Dropped qtpy dependency: The library no longer depends on qtpy.
  • Dropped Qt5 support: PySide2 and PyQt5 are no longer supported.
  • Native shim: A new native binding.py shim is used internally to support PySide6 and PyQt6 directly.

Verification

pip install qtshadcn==0.7.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test

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, and QPlainTextEdit keep their base border width instead of sharing the QSpinBox focus border.
  • A stale or legacy theme.json no 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 test

QtShadcn v0.5.0

Changes

  • Breaking: renamed SystemThemeListener to SystemThemeWatcher.
  • Moved bundled icon sources and font files under qtshadcn/resources/.
  • ThemedIconManager now loads SVG icon sources from package resources via importlib.resources.
  • _add_fonts() loads fonts from qtshadcn.resources.fonts so assets work when installed as a wheel.
  • Normalized QSS template helpers: icons -> Icons, radius -> Radius.
  • Renamed ThemedIconManager methods to getIconUrl and renderSliderThumb.

Verification

pip install qtshadcn==0.5.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test

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 test

QtShadcn v0.3.0

Breaking Changes

  • Removed apply_theme() and get_theme() from the public API; use setTheme() and getTheme() instead.
  • Removed the internal cache.py module; theme caching is no longer part of the public contract.

What's New

  • Added a persistent config system via a qsettings singleton for storing theme preferences across sessions.
  • Added a 3-concept stylesheet API with a full rendering pipeline (setStyleSheet, getStyleSheet, setTheme, getTheme).
  • Added SystemThemeListener for 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 test

QtShadcn v0.2.0

Breaking Changes

  • Migrated the Qt binding layer from the internal qtshadcn/common/binding.py shim to qtpy>=2.4.0.
  • Added support for PySide2 and PyQt5 alongside PySide6 and PyQt6.
  • Removed the QTSHADCN_BINDING environment variable; use QT_API (pyside6, pyqt6, pyside2, pyqt5) instead.
  • Removed qtshadcn.common.binding and qtshadcn.binding_name; use qtpy.API_NAME if needed.

What's New

  • qtpy is 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 loadUi helper (PySide QUiLoader, PyQt uic.loadUi).

Changes

  • Internal Qt imports now come from qtpy instead of qtshadcn.common.binding.
  • QtBindingError messages now reference QT_API and all four supported bindings.
  • README and docs/getting-started.md document the new binding model.

Fixes

  • Fixed RCC binary lookup casing for capitalized qtpy.API_NAME values.
  • Fixed Qt6-only mouse-event APIs so the gallery window drag works on Qt5 bindings.
  • Narrowed ImportError handling in qtshadcn.__init__ to qtpy-specific binding errors.

Verification

pip install qtshadcn==0.2.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test

QtShadcn v0.1.1

Changes

  • Reorganize internal implementation modules into qtshadcn/common/ and split app.py into focused modules (theme.py, renderer.py, cache.py, theme_mode.py, helpers.py). Rename _qt.py, _parser.py, and _icons.py to common/binding.py, common/theme_parser.py, and common/icon.py.
  • Public API remains unchanged; from qtshadcn import apply_theme, get_theme continues to work.

Verification

pip install qtshadcn==0.1.1
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test

QtShadcn v0.1.0

Breaking Changes

  • Refactor apply_theme() to a keyword-driven signature. ThemeConfig is 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").
    • app is now optional and falls back to QApplication.instance(); raises QtShadcnError when no instance exists.
    • theme_file replaces ThemeConfig.theme_source_path; None loads the packaged default theme.
    • theme_mode accepts "auto", "light", or "dark" as strings.
    • custom_tokens replaces per-palette overrides; mode-specific when top-level keys are "light"/"dark".
    • additional_qss replaces theme_custom; appended to the base stylesheet as an inline string, .qss file, or .jinja file.
    • default_theme is used when theme_mode="auto" and darkdetect.theme() returns None.
    • The disk cache key now includes custom_tokens and additional_qss.

What's New

  • Add theme_custom field to ThemeConfig for custom Jinja/QSS snippets appended to the base stylesheet.
  • Extend the shadcn QSS template with QGroupBox styling, QPlainTextEdit support, QFontComboBox grouping, rounded-full scale variants, and progress-bar labeled fixes. Button sizing now uses scale= instead of size=.
  • 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__ in qtshadcn/__init__.py and synchronize it with pyproject.toml on every release.

Verification

pip install qtshadcn==0.1.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test

QtShadcn v0.0.20

What's New

  • Added QTabWidget styling support with default pill tabs on a muted background and a variant="line" style with bottom/right indicators.
  • Added a gallery page demonstrating default, line, vertical line, and disabled tab widgets.

Changes

  • Improved the default QTabWidget pane background, padding, and margin in qtshadcn/styles/shadcn.jinja.
  • Updated the documentation link in the gallery window from https://BugCodeX.github.io/QtShadcn/ to https://qtshadcn.readthedocs.io/.

Fixes

  • Resolved ruff format --check failure by reformatting multiline assert strings in tests/test_renderer.py.

Verification

pip install qtshadcn==0.0.20
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test

QtShadcn v0.0.19

What's New

  • Added QTabWidget styling support with default pill tabs on a muted background and a variant="line" style with bottom/right indicators.
  • Added a gallery page demonstrating default, line, vertical line, and disabled tab widgets.

Fixes

  • Improved the default QTabWidget pane background, padding, and margin in qtshadcn/styles/shadcn.jinja.
  • Updated the documentation link in the gallery window from https://BugCodeX.github.io/QtShadcn/ to https://qtshadcn.readthedocs.io/.

Verification

pip install qtshadcn==0.0.19
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test

QtShadcn v0.0.18

Fixes

  • Split the QDoubleSpinBox gallery page out from QSpinBox for 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 build references from the docs.

Verification

pip install qtshadcn==0.0.18
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test

QtShadcn v0.0.17

What's New

  • Added QSpinBox and QDoubleSpinBox styling support with themed step buttons and validation states.

Fixes

  • Installed mkdocs-material into the Read the Docs virtualenv to restore documentation builds.

Verification

pip install qtshadcn==0.0.17
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test

QtShadcn 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.md with setup, usage, and authoring guidance.
  • Restructured README and added CONTRIBUTING.md and RELEASE.md guides.
  • Added logo assets for docs and README.
  • Updated AGENTS.md with the current project structure.
  • Updated README with logo and shields badges.
  • Removed ...
Read more

QtShadcn v0.6.0

Choose a tag to compare

@BugCodeX BugCodeX released this 09 Oct 00:12

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, and QPlainTextEdit keep their base border width instead of sharing the QSpinBox focus border.
  • A stale or legacy theme.json no 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 test

QtShadcn v0.5.0

Choose a tag to compare

@BugCodeX BugCodeX released this 15 Aug 04:58

QtShadcn v0.5.0

Changes

  • Breaking: renamed SystemThemeListener to SystemThemeWatcher.
  • Moved bundled icon sources and font files under qtshadcn/resources/.
  • ThemedIconManager now loads SVG icon sources from package resources via importlib.resources.
  • _add_fonts() loads fonts from qtshadcn.resources.fonts so assets work when installed as a wheel.
  • Normalized QSS template helpers: icons -> Icons, radius -> Radius.
  • Renamed ThemedIconManager methods to getIconUrl and renderSliderThumb.

Verification

pip install qtshadcn==0.5.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test

QtShadcn v0.4.0

Choose a tag to compare

@BugCodeX BugCodeX released this 14 Aug 11:24

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 test

QtShadcn v0.3.0

Choose a tag to compare

@BugCodeX BugCodeX released this 13 Aug 02:41

Breaking Changes

  • Removed apply_theme() and get_theme() from the public API; use setTheme() and getTheme() instead.
  • Removed the internal cache.py module; theme caching is no longer part of the public contract.

What's New

  • Added a persistent config system via a qsettings singleton for storing theme preferences across sessions.
  • Added a 3-concept stylesheet API with a full rendering pipeline (setStyleSheet, getStyleSheet, setTheme, getTheme).
  • Added SystemThemeListener for 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 test

QtShadcn v0.2.0

Choose a tag to compare

@BugCodeX BugCodeX released this 11 Aug 23:06

QtShadcn v0.2.0

Breaking Changes

  • Migrated the Qt binding layer from the internal qtshadcn/common/binding.py shim to qtpy>=2.4.0.
  • Added support for PySide2 and PyQt5 alongside PySide6 and PyQt6.
  • Removed the QTSHADCN_BINDING environment variable; use QT_API (pyside6, pyqt6, pyside2, pyqt5) instead.
  • Removed qtshadcn.common.binding and qtshadcn.binding_name; use qtpy.API_NAME if needed.

What's New

  • qtpy is 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 loadUi helper (PySide QUiLoader, PyQt uic.loadUi).

Changes

  • Internal Qt imports now come from qtpy instead of qtshadcn.common.binding.
  • QtBindingError messages now reference QT_API and all four supported bindings.
  • README and docs/getting-started.md document the new binding model.

Fixes

  • Fixed RCC binary lookup casing for capitalized qtpy.API_NAME values.
  • Fixed Qt6-only mouse-event APIs so the gallery window drag works on Qt5 bindings.
  • Narrowed ImportError handling in qtshadcn.__init__ to qtpy-specific binding errors.

Verification

pip install qtshadcn==0.2.0
python -c "import qtshadcn; print(qtshadcn.__version__)"
make test