YASB v2.0.0 introduces several major user-facing improvements and platform changes, a centralized, token-based UI with a new CSS engine that enables QSS/CSS animations, gradients, and richer styling, a first-run setup wizard which generates default configs and styles, significant Quick Launch enhancements, a complete systray overhaul (SetWindowsHookEx injection and native Win32 popup menus), Windows PE icon extraction and a deprecation/migration system with yasbc migrate-config to help update breaking configuration schema changes.
Breaking changes (important)
server_monitorconfig changed from a list of strings to a list of dicts withnameandurl. Review and update saved configs.container_paddingwas removed from all widget configs.hide_empty_workspaceswas removed.label_shadowwas removed you should switch to using the new CSS engine for shadows and gradients.container_shadowwas removed you should switch to using the new CSS engine for shadows and gradients.- Default commands were removed from
KomorebiConfigandGlazeWMConfig; callers must set explicit commands where previously relied on defaults. - Many deprecated fields are stripped at runtime prior to Pydantic validation - incompatible/deprecated fields will no longer be accepted and should be migrated.
New Features
- allow the ability to add custom web search engines 55d3d0b
- implement dynamic default configuration and styles 790f449
- allow user to remove default web search engines 211d5d2
- add new crypto prices provider 08ba008
- add audio input source configuration 81438f1
- add yasb-themes:// URI protocol handler for deep-linking f03a168
- centralize stylesheet and dark mode state via ThemeState for detached widgets e1ad48d
- add config-dir command and --config flag (#834 by BrainlessDip) 8b840f7
- add remember_last_query to persist previous search state 5ce0682
- implement Windows PE icon extraction functionality (#837 by amnweb) 417b203
- add light mode image for README 42c0fab
- added token-based ui foundation and reusable components 1559e2c
- added first-run setup wizard and generated defaults 5ed6bd3
- add deprecation system with CLI migration tool dea269d
- add hide_empty option to GitHub widget 0eec08a
- add support for GFM alert blocks and improve HTML passthrough 77ab4b6
- add Brave search engine support 86110b1
- replace CreateRemoteThread injection with SetWindowsHookEx 1515620
- implement hook injection with retries and update constants cdadd8d
- update deprecated fields and enhance logging e4401a2
- update language handling to use keyboard layout handles 4722afb
- add GitHub Actions workflow for building YASBTrayHook DLLs 87f3a34
- css animation support 40725f9
- enhance theme detail panel with refresh functionality 68fac40
- add set_color method to Spinner and LoaderLine 7810607
Bugfixes
- update callbacks for CPU and Memory widgets b4e2579
- remove commas from queries and use configurable prefix 83f801b
- fixed systray popup relayout bug 949ce7b
- update CPU performance counter to use % Processor Time 698be56
- resolve UnboundLocalError on notification click 6cb0b61
- update binance provider icon 18cd2e3
- fix injection code dll path 72d7d89
- retry if failed to find real systray c82f1a5
- update image paths in README a6bdab1
- ensure initial_text ends with a space a360855
- multiple explorer.exe processes fix b7cb951
- update imports for github-copilot-sdk 0.2.2 compatibility 84ace18
- fix preview flicker, show_only_visible isolation, and workspace restore e22344b
- correct path for showing built DLLs 6d7f693
- correct multi-monitor handling and stale values ba6dea3
- filter out held packages from update results 26af8ff
- update size policies so only horizontal is fixed 5f0b0e3
Refactors
- centralize frozen state handling 2a6c964
- remove DEBUG import and streamline logging calls a82538c
- update installation and contributing instructions 71163d2
- improve logging format and type hints across multiple modules 1e7555e
- standardize logging string formatting across multiple modules 90bc1af
- adapt ai_chat copilot client to github-copilot-sdk v0.2.0 82b0582
- extract duplicated container init into BaseWidget 8de165b
- update README and documentation 5a17e36
- extract shared runtime and helper modules 651d300
- moved top-level windows into the shared views layer 2786eae
- migrated widgets and runtime code to the new helper modules 65b1ac3
- update server configuration structure 8dd676d
- extract auto-width and CLI management to bar_helper 3eabab2
- remove deprecated container_padding configuration from multiple widgets 60f527b
- remove deprecated fields and update configurations 3a238b2
- restructure modules and add tray update badge 0381ba5
- update GitHub URL references to use GITHUB_WIKI_URL ba948f0
- remove animations, shadows and move to css 1830319
- add animation deprecation for WindowsDesktopsConfig 3638612
- change mouse event handling from press to release b51c08e
- update mouse event handling in BaseWidget and WorkspaceButton aa68229
- update deprecated fields for animation support 6afb282
- fix cli command config-migrate 7f23649
- improve internet connectivity checks 4916052
- optimize menu handling and caching 8da7c8c
- revert GitHub and Open-Meteo 229bc2a
- improve mouse event handling 7f4dcae
- remove hand cursor from buttons 0bc9e85
- set fixed size policy for workspace buttons dd74686
- remove debug logging for latest dev build check 9837e63
- pass widget_configs to GrouperWidget 350f5b0
- enhance error handling in on_popup_destroyed f9c2ef5
- update last_config_hash initialization 28257fc
- remove default commands from KomorebiConfig and GlazeWMConfig c614ff9
- replace QMenu with native Win32 popup menu f05952d
Documentation Changes
- documented the new ui components and setup-related changes bd0a144
- add migrate-config command to CLI documentation 43fb6dd
Chores
- update schema.json for v1.9.1 90702e7
- bump github-copilot-sdk from 0.1.32 to 0.2.0 10d4b3e
- bump cx-freeze from 8.6.2 to 8.6.3 55332c5
- bump openai from 2.29.0 to 2.30.0 0c3c565
- bump pillow from 12.1.1 to 12.2.0 1889d96
- bump holidays from 0.93 to 0.94 408febf
- bump cx-freeze from 8.6.3 to 8.6.4 d8aefbf
- bump tzdata from 2025.3 to 2026.1 bdffc73
- bump openai from 2.30.0 to 2.31.0 f7fe522
- bump github-copilot-sdk from 0.2.0 to 0.2.2 2763ded
- bump openai from 2.31.0 to 2.32.0 d718a60
- dll build acdcd4a
- bump pydantic from 2.12.5 to 2.13.2 de14cf2
- static CRT link e0eabfa
- update YASBTrayHook DLLs 422135d
- bump pydantic from 2.13.2 to 2.13.3 ad7c190
- bump holidays from 0.94 to 0.95 9d6c354
- bump tzdata from 2026.1 to 2026.2 e9faa16
- bump github-copilot-sdk from 0.2.2 to 0.3.0 fa0e04c
- css engine styling docs update a7b1c65
- update BUILD_VERSION to 2.0.0 a1cf7ab
Other Changes
- Merge pull request #817 by amnweb from amnweb/refactor/cleanup a414964
- Merge pull request #821 by Video-Nomad from Video-Nomad/fix/systray-popup-relayout-bug 8097d0a
- Merge pull request #812 by dependabot[bot] from amnweb/dependabot/pip/github-copilot-sdk-0.2.0 2f04b59
- Merge pull request #818 by dependabot[bot] from amnweb/dependabot/pip/cx-freeze-8.6.3 15bcbc5
- Merge pull request #814 by BrainlessDip from BrainlessDip/fix/calculator-provider 4bd20bf
- Merge pull request #807 by EmilBerbakov from EmilBerbakov/feature/add-brave-search fa4f05b
- Merge pull request #823 by amnweb from amnweb/fix/cpu-metric-and-timing 7b75477
- Merge pull request #826 by BrainlessDip from BrainlessDip/binance-provider ae77e79
- Merge pull request #825 by amnweb from amnweb/refactor/extract-widget-container-init 20cd092
- Merge pull request #824 by dependabot[bot] from amnweb/dependabot/pip/openai-2.30.0 fb55514
- Merge pull request #831 by amnweb from amnweb/feat/centralize-theme-state 7015e31
- Merge pull request #828 by Video-Nomad from Video-Nomad/fix/systray-hook-injection-path 5ee7952
- Merge pull request #827 by amnweb from amnweb/feature/cava-device-selection cdb1b36
- Merge pull request #838 by dependabot[bot] from amnweb/dependabot/pip/pillow-12.2.0 81eb0fa
- Merge pull request #855 by amnweb from amnweb/refactor/core-ui-and-win32-utils 2ab9098
- Merge pull request #841 by dependabot[bot] from amnweb/dependabot/pip/tzdata-2026.1 f7ce3b3
- Merge pull request #849 by dependabot[bot] from amnweb/dependabot/pip/openai-2.31.0 8f28d08
- Merge pull request #850 by dependabot[bot] from amnweb/dependabot/pip/holidays-0.94 e65558d
- Merge pull request #853 by dependabot[bot] from amnweb/dependabot/pip/cx-freeze-8.6.4 02c165f
- Merge pull request #854 by dependabot[bot] from amnweb/dependabot/pip/github-copilot-sdk-0.2.2 481a90e
- Merge pull request #852 by Video-Nomad from Video-Nomad/fix/systray-hook-explorer-pid 011187f
- Merge pull request #864 by Video-Nomad from Video-Nomad/feat/systray-hook-injection 7e8159c
- Merge pull request #868 by Video-Nomad from Video-Nomad/chore/systray-hook-static-link 8c66791
- Merge pull request #863 by amnweb from amnweb/feat/systray-hook-injection 4825bef
- Merge pull request #856 by amnweb from amnweb/feature/deprecation-migration 6e6d970
- Merge pull request #857 by dependabot[bot] from amnweb/dependabot/pip/openai-2.32.0 1426ff0
- Merge pull request #859 by TheJobGG from TheJobGG/feature/web-search-brave fa8c772
- Merge pull request #867 by dependabot[bot] from amnweb/dependabot/pip/pydantic-2.13.2 046dd70
- Merge pull request #870 by amnweb from amnweb/refactor/core-structure f3a49ef
- Merge pull request #873 by Video-Nomad from Video-Nomad/feat/css-animation-support ff8b4ac
- Merge pull request #872 by amnweb from amnweb/refactor/remove-animations-and-shadows bec7354
- Merge pull request #878 by dependabot[bot] from amnweb/dependabot/pip/pydantic-2.13.3 ef4c69c
- Merge pull request #879 by dependabot[bot] from amnweb/dependabot/pip/holidays-0.95 9cd364b
- Merge pull request #880 by dependabot[bot] from amnweb/dependabot/pip/tzdata-2026.2 5cc194c
- Merge pull request #882 by Video-Nomad from Video-Nomad/chore/css-animations-docs dfc8cb9
- Merge pull request #881 by dependabot[bot] from amnweb/dependabot/pip/github-copilot-sdk-0.3.0 7766d47
- Merge pull request #885 by Video-Nomad from Video-Nomad/fix/brightness-click-skip 05ee8cb
- Merge pull request #888 by Video-Nomad from Video-Nomad/fix/size-policies-update 884c5e7
- Merge pull request #887 by amnweb from amnweb/refactor/tray-menu 5f7ce5e
What's Changed
- refactor(app): Implement dynamic configuration and improve logging by @amnweb in #817
- fix(systray): fixed systray popup relayout bug by @Video-Nomad in #821
- chore(deps): bump github-copilot-sdk from 0.1.32 to 0.2.0 by @dependabot[bot] in #812
- chore(deps-dev): bump cx-freeze from 8.6.2 to 8.6.3 by @dependabot[bot] in #818
- fix(calculator): remove commas from queries and use configurable prefix by @BrainlessDip in #814
- feat(quick_launch): Add Custom Web Search Engines and Remove Default Options by @EmilBerbakov in #807
- fix(cpu): update CPU performance counter to use % Processor Time by @amnweb in #823
- feat(quick_launch): add new crypto prices provider by @BrainlessDip in #826
- refactor(widgets): extract duplicated container init into BaseWidget by @amnweb in #825
- chore(deps): bump openai from 2.29.0 to 2.30.0 by @dependabot[bot] in #824
- feat(theme): centralize stylesheet and dark mode state via ThemeState for detached widgets by @amnweb in #831
- fix(systray_hook): fix injection code dll path by @Video-Nomad in #828
- feat(cava): add audio input source configuration by @amnweb in #827
- feat(cli): add config-dir command and --config flag by @BrainlessDip in #834
- feat(quick_launch): add remember_last_query to persist previous search state by @BrainlessDip in #833
- feat(pe-icons): implement Windows PE icon extraction functionality by @amnweb in #837
- refactor(docs): update README and documentation by @amnweb in #830
- chore(deps): bump pillow from 12.1.1 to 12.2.0 by @dependabot[bot] in #838
- refactor(core): ui and win32 utils by @amnweb in #855
- chore(deps): bump tzdata from 2025.3 to 2026.1 by @dependabot[bot] in #841
- chore(deps): bump openai from 2.30.0 to 2.31.0 by @dependabot[bot] in #849
- chore(deps): bump holidays from 0.93 to 0.94 by @dependabot[bot] in #850
- chore(deps-dev): bump cx-freeze from 8.6.3 to 8.6.4 by @dependabot[bot] in #853
- chore(deps): bump github-copilot-sdk from 0.2.0 to 0.2.2 by @dependabot[bot] in #854
- fix(systray): multiple explorer.exe processes fix by @Video-Nomad in #852
- chore(hook): dll build by @Video-Nomad in #864
- chore(hook): static CRT link by @Video-Nomad in #868
- feat(systray): replace CreateRemoteThread injection with SetWindowsHookEx by @amnweb in #863
- feat(config): add deprecation system with CLI migration tool by @amnweb in #856
- chore(deps): bump openai from 2.31.0 to 2.32.0 by @dependabot[bot] in #857
- feat: add Brave search engine to web_search provider by @TheJobGG in #859
- chore(deps): bump pydantic from 2.12.5 to 2.13.2 by @dependabot[bot] in #867
- refactor(core): restructure modules and add tray update badge by @amnweb in #870
- feat(css): css animation support by @Video-Nomad in #873
- refactor(base): implement a CSS engine by @amnweb in #872
- chore(deps): bump pydantic from 2.13.2 to 2.13.3 by @dependabot[bot] in #878
- chore(deps): bump holidays from 0.94 to 0.95 by @dependabot[bot] in #879
- chore(deps): bump tzdata from 2026.1 to 2026.2 by @dependabot[bot] in #880
- chore(docs): css engine styling docs update by @Video-Nomad in #882
- chore(deps): bump github-copilot-sdk from 0.2.2 to 0.3.0 by @dependabot[bot] in #881
- fix(brightness): correct multi-monitor handling and stale values by @Video-Nomad in #885
- fix(workspaces): update size policies so only horizontal is fixed by @Video-Nomad in #888
- refactor(tray): replace QMenu with native Win32 popup menu by @amnweb in #887
Special thanks to Video-Nomad for their work on the qt-css-engine which enabled advanced styling features in this release.
New Contributors
- @BrainlessDip made their first contribution in #814
- @TheJobGG made their first contribution in #859
Full Changelog: v1.9.1...v2.0.0