- refactor: handle
text
field ofSpinnerWidget
when it contains kivy markup but yet reduces to
when markup is removed
- fix: add
SpinnerWidget
to kivy factory
- refactor: use
SpinnerWidget
in place ofLabel
for all dynamic contents labels, setting itstext
to
will spin it, otherwise it behaves like aLabel
- chore: migrate from poetry to uv for the sake of improving performance and dealing with conflicting sub-dependencies
- feat: add spinner widget which doesn't trigger whole screen renders and uses new local renders of headless-kivy
- chore: update to the latest version of headless-kivy
- fix: make
PromptWidget
inheritPageWidget
- refactor: avoid loading kivy when constants are imported
- feat: widen the notification text horizontally if it doesn't have any actions on the left
- fix: updating items of the pages after the first page not being visible
- refactor: merge
HeaderMenuPageWidget
andNormalMenuPageWidget
intoMenuPageWidget
- refactor: keep a clone of menu-page widget as Kivy needs the source and target widgets to be different for transitions while going up and down in a menu needs a transition of the same widget to itself as we just change its items and don't recreate it
- fix:
go_home
should clear the selection of root before settingstack
- fix: going home from home caused a bad state
- feat: keep track of the selections, so that we can replace all the deep selections of an item when it's replaced
- fix: headed menu item presentation logic
- fix: headed menu item selection logic
- refactor: make the background band width of the
ProgressRingWidget
configurable viabackground_band_width
property
- refactor: just change the items of the menu when items are changed, instead of creating a whole new menu widget
- feat: add progress to
ItemWidget
, reflect it in its look and optimize its rendering for rapid re-renders - feat: add
ProgressRingWidget
widget
- feat: add
_visual_snapshot
to visualize the state of stack for debugging purposes - fix: avoid user selecting a second item while the screen is being transitioned
- fix: improving the logic of replacing an item in the deep layers of stack
- fix: no more blinking when the content is not changed
- build: update
headless-kivy
to the latest version
- fix: set duration of
0
for when_no_transition
is passed to_switch_to
method
- fix: pass duration with value of
0
toScreen
's transition runner to avoid flickering of the screen
- build: update headless-kivy-pi to the latest version
- build: update headless-kivy-pi to the latest version
- fix(MenuWidget): the menu doesn't override the top-most item whenever an arbitrary sub-menu's subscription reports a change, instead, it updates the item in the stack for which the change was reported
- refactor(PromptWidget):
PromptWidget
now exposes anitems
list property to be compatible with other subclasses ofPageWidget
so that tests can interact with it easier
- fix(MenuWidget): render placeholder when the menu is empty and
render_surroundings
isTrue
- feat(MenuWidget): add methods for directly selecting an
Item
- fix(MenuWidget): align items with the physical buttons
- feat(MenuWidget): add
go_home
method, resetting the stack to a single element root menu
- refactor(MenuWidget): dispatch
on_close
event on thePageWidget
instance when it is closed, to close aPageWidget
instance, one should callclose_application
- fix(MenuWidget): avoid opening an
ActionItem
'saction
return value twice if it is aPageWidget
class - refactor(MenuWidget): improve opening/closing application logic to avoid race conditions
- refactor(PageWidget): add
__repr__
to help debugging and loggingPageWidget
s - refactor(MenuWidget): use
mainthread
decorator in transitions only when necessary - refactor(ItemWidget): increase the length of non-short items (decrease the right margin from 30 to 6)
- refactor(NotificationWidget): remove all the logic and make it solely a view
- feat(Menu): action items can now return not only the application class, but also instances of applications too
- fix(QRCodeWidget): set default value of
fit_mode
tocontain
- refactor(NotificationWidget): improve layout of the notification widget
- fix(menu): use application's title as the title of the menu if it's provided
- fix(menu): add the title space to the application if it has no title
- feat(Menu): render faded next and previous menu items to induce there are more items in the menu and it can be scrolled
- refactor(core): add colors to list of global constants to avoid hardcoding
- refactor(AnimatedSlider): not using the default look, replaced with the one designed in figma
- refactor(ItemWidget): add
opacity
field - ci(github): add changelog to the release notes
- fix(regression): handle return value of the action in
ActionItem
when it's callable - refactor(notification): make the icon smaller and make sure it is rendered on top
- fix(menu): not assume the return value of the action in
ActionItem
is aMenu
if it is not anapplication
- feat: info action for the
NotificationWidget
- refactor: enable
markup
for labels
- fix(menu): avoid closing all applications when a single application is closed
- feat(menu): add placeholder for the menu when it's empty
- fix(regression): keep the menu responsive even with rapid switches of the screen-manager
- fix: update remaining material symbols icons
- refactor: drop material symbols font and use
ArimoNerdFont
instead to bring all the icons of fa, md, mdi, etc
- chore: update to the latest version of headless-kivy-pi 0.7.1
- chore: update to the latest version of headless-kivy-pi
- feat: add
QRCodeWidget
- refactor: use headless-kivy-pi 0.6.0
- refactor: make
on_title
callback use weakref to avoid memory leaks
- chore: use git-lfs to track material font
- chore: GitHub workflow to publish pushes on
main
branch to PyPI - chore: create GitHub release for main branch in GitHub workflows
- chore: create Pyright stub files for Kivy
- refactor: fix lint issues and typing issues
- fix: close_application now actually closes the passed application
- fix: queue transitions instead of letting the last transition interrupt the active one
- hotfix: remove debug background rectangle
- refactor: remove
current_application
andcurrent_menu
fromMenuWidget
, just keep them as a proxy for the top item of thestack
- refactor: clean subscriptions in different levels of screen, widget and item
- feat: allow action items to return subscribable menus
- feat: add
logger
and log subscriptions
- feat: add a mechanism to sync properties with subscribable values (defined in python-redux). applied for these properties: -
MenuWidget
: 1.application
1.sub_menu
1.heading
of headed menu 1.sub_heading
of headed menu 1.items
of menu 1.title
of menu -ItemWidget
: 1.label
1.is_short
1.color
1.background_color
1.icon
- fix: don't call
application
if it's a subclass ofPageWidget
- feat: make all fields of
Menu
andItem
and their sub classes accept callables
- fix: dispatch
on_close
when aPageWidget
is left (on_leave
is dispatched) - style: improve layout of
HeadedMenu
- fix: let
title
inPageWidget
acceptNone
- fix: allow
None
value fortitle
property ofPageWidget
- fix: avoid unnecessary property caching causing temporary inaccurate state for
MenuWidget
- feat: different transitions for different actions of
MenuWidget
- refactor: add default values for properties of
ItemWidget
- style: improve layout of
NotificationWidget
- feat: add
on_dismiss
event toNotificationWidget
- refactor: extract
DANGER_COLOR
andSUCCESS_COLOR
previously hardcoded inPromptWidget
- refactor: migrate from
TypedDict
toImmutable
of python-immutable for the sake of better compatibility with python-redux - refactor: remove
NotificationManager
as it is beyond the scope of this package - refactor: minor improvements in typehints
- docs: update
README.me
- feat: make
MenuWidget
subscribe to the items of the current menu if it provides asubscribe
property
- refactor: make prompt widget responsive to changes of its items
- refactor: make constants globally accessible for all kv files with
UBO_GUI_
prefix
- fix: checking availability of
PromptWidget
items would cause a crash
- refactor: optimize
MenuWidget
and improve its api to use kivy properties - refacotr: make
MenuWidget
use transitions for all its screen switches
- chore: drop support for python 3.9 and 3.10
- refactor: improve typings
- fix: crash when empty header menu page is rendered
- chore: migrate from poetry groups to poetry extras
- chore: fix quotes
- chore: update dependencies to their latest versions
- chore: extract demo from repository and bundle it as to be ubo-app
- chore: rename python module from ubo to ubo_gui
- docs: update README with new repository locations
- style: improve styling of notifications and menus
- refactor: replace hardcoded short ItemWidget width with a constant
- refactor: propagate buttons to current_application
- fix: NotificationWidget scrolling and improve its layout
- refactor: use Factory.register to register widgets
- fix: provide AnimatedSlider for menu.kv
- feat: add ellipses for labels where applicable
- chore: add CHANGELOG.md
- feat: add AnimatedSlider and use it as the menu's scrollbar
- feat: add ubo keypad
- feat: add scrollbar to menus
- fix: add font assets to the package
- refactor: update code structure so that all packages are sub-packages of a single package named ubo
- fix: use dp for the radius of rounded rectangles
- feat: implement notifications and add sample usage to menu demo app
- feat: implement WifiPrompt in demo/menu.py as an example of PromptWidget usage and as an example of application launcher menu item
- refactor: change Widgets with nested BoxLayouts to simple BoxLayouts
- feat: implement application launcher menu items
- feat: add prompt widget
- fix: gauge sizing should use dp() to avoid inconsistency in different platforms
- docs: add instructions for running demo to README.md
- feat: add clock widget and back icon to the footer
- feat: add VolumeWidget and GaugeWidget and use them in home page
- refactor: better organize menu widget in multiple files
- fix: change header.text only when the default header label is in use
- chore: add poethepoet to dependencies
- docs: add basic information in README.md
- feat: replace old icon_path, etc with new icon field for menu items, it uses material symbols icon font to render icons
- fix: don't render non-existing item widgets in a menu page
- docs: update menu demo to use latest features
- chore: add lint script entry to pyproject.toml
- feat: allow setting is_short property of menu items from Item TypedDict class
- feat: add HeadlessMenu for rendering menus without a heading in the first page, it completes HeadedMenu which is the old Menu class
- feat: support function values for items field of a menu
- style: change default color of menu items to ubo blue
- feat: add is_short property to items
- refactor: extract page widget from menu widget
- chore: improve dependencies for raspberry pi
- fix: install headless-kivy-pi from its github repository instead of a local path
- feat: add icons to menu item and improve their style
- refactor: rewrite the demo application using app class
- feat: add app class providing a general layout for ubo gui applications
- refactor: decouple demo application from the core functionality and use its provided api instead
- chore: move headless-kivy-pi's pagination demo to a new repository