Releases: ppoilbarbe/PBRegisterActivity
Releases · ppoilbarbe/PBRegisterActivity
Release list
v1.1.1
Fixed
- Linux: application icon missing from GNOME's application grid and taskbar/Alt-Tab (only visible in the system tray).
QGuiApplication::desktopFileName()was never set, so GNOME Shell (viaWM_CLASS/_GTK_APPLICATION_ID) could not reliably match the running window to the installed.desktopentry to resolve its icon — the match happened to work only when the packaged executable was manually renamed topbregisteractivity.app.setDesktopFileName()is now set explicitly at startup, independent of the executable's actual file name
v1.1.0
Added
- Command-line argument parsing (
argparse);--versionprints the program version along with the Python, Qt and PySide6 versions (same information as the "About" dialog) --install {app,autostart,all,none}: registers (or removes) the application in the host system, per-user, no admin/root required.- Linux:
.desktopfiles (XDG Base Directory / Desktop Entry specs) in the applications and autostart directories, plus an icon installed under the freedesktop hicolor icon theme - Windows: Start Menu shortcut (created via PowerShell/
WScript.Shell) and autostart via theHKCU\...\CurrentVersion\Runregistry key - macOS:
~/Applications/<name>.appbundle (with an.icnsgenerated from the bundled PNG viasips/iconutil) and autostart via a LaunchAgent plist in~/Library/LaunchAgents noneremoves both the menu entry and the autostart registration
- Linux:
Changed
platform/module split into_linux.py,_macos.pyand_windows.py(replacingdirs.py,lock.pyandinstall.py): each OS module holds its own implementation, reusing another OS's code (by import, or by subclassing for theInstallerclasses) only where the behaviour is genuinely identical — Linux as the reference POSIX implementation, then macOS, then Windows.platform/__init__.pyselects the right module for the current OS at import time and re-exportsapp_dir,SingleInstance,SingleInstanceExceptionandapplymake distnow depends onmake install: PyInstaller reads the package version from the installed metadata (copy_metadata("pbregisteractivity")), so the editable install is refreshed first to guarantee it matches the currentpyproject.toml
Fixed
- Linux PyInstaller bundle: fonts now render identically regardless of the target machine's fontconfig setup. The
fonts.confembedded by PyInstaller contains absolute paths to the build machine's conda environment; on any other machine those paths are missing and fontconfig fails silently. Fix ported from PBRenamer: conda fonts (fonts-conda-ecosystem) are bundled viapbregisteractivity.spec, a runtime hook (hooks/pyi_rth_fonts.py) generates a portablefonts.confat startup and forces fontconfig re-initialisation (FcFini()/FcInit()), and_load_bundled_fonts()registers the bundled.ttffiles withQFontDatabaseand forces Ubuntu as the application font, bypassing fontconfig entirely for font selection
v1.0.0
Added
- Migration PyQt5 → PySide6 (qualified enums,
QActionfromQtGui, matplotlibbackend_qtaggbackend) platform/module: cross-platform abstraction for the application directory (dirs.py) and the single-instance lock (lock.py) usingfcntl(Linux/macOS) andmsvcrt(Windows)- Overlap detection between ranges during entry, with a
QMessageBoxwarning - GitHub Actions CI:
hooksjob +buildjob (Linux, Windows, macOS) +releasejob on semver tag pyproject.toml: hatchling build, dependencies, GPLv3 license, ruff configurationenvironment.yml: reproducible conda environment (Python 3.12, PySide6, matplotlib, PyInstaller)Makefileoverhauled:help,venv,install,hooks,lint,format,run,dist,srcdist,bump-{patch,minor,major,set}targets,NOCONDAsupportpbregisteractivity.spec: PyInstaller executable namedpbregisteractivity-<version>-<os>-<arch>tools/git_version.sh: version from the git tag ordevtools/bump_version.py: bump/force version inpyproject.tomltools/extract_changelog.py: extract the CHANGELOG entry for the GitHub release.pre-commit-config.yaml:pre-commit-hooks+ruff-pre-commithooks (check + format)CODING.md: developer documentation (setup, build, quality)- Program version read from the installed package metadata (
importlib.metadata) resources.icon()/resources.pixmap()helper functions to build aQIcon/QPixmapfrom a bundled icon file, replacing repeatedQIcon()/addFile()boilerplate acrossui_*.py,mainwindow.pyand__main__.pyhelp-about.svgicon set on the "About" actionsrc/pbregisteractivity/resources/LICENSE: icons and images are licensed under CC BY-NC-SA, distinct from the GPLv3 covering the rest of the code
Changed
__main__.pymoved into the package (src/pbregisteractivity/) to supportpython -m pbregisteractivityparameters.py: paths viapathlib.Pathandplatform.dirs.app_dir()- About window: Qt (
qVersion()), PySide6 (PySide6.__version__) and Python (platform.python_version()) versions now correctly displayed; label renamed tolblPySide6Version _Activities:load(filepath)separated from__init__,write()uses the stored pathhandle_text_output(timeplots): removed the double pass in full modeREADME.mdrefocused on the end user (installation, usage, data)- Removed
.uiand.qrcfiles and all dependency on thepyside6-uic/pyside6-rcccompilers and Qt Designer;ui_*.pyfiles are now written and versioned directly insrc/pbregisteractivity/ - Icons moved flat into
src/pbregisteractivity/resources/(no more32x32/128x128subfolders, which only made sense for Qt Designer), referenced by file path instead of the Qt resource system (:/images/...) - Application icon renamed
obj_hal9000.png→pbregisteractivity.png - Icons renamed for consistency with common icon-set naming conventions (e.g.
action_add→add,action_cal_day→calendar-day,arrow_right→right,info_warning→warning,tool_piechart→piechart) - All icons, except the
pbregisteractivity.pngapplication icon, converted from PNG to SVG - Charts window: toolbar button icons enlarged to 32px (previously 16px, the style default)
- Charts window: no chart selected by default when the window opens; the duration pie chart is now selected and shown
Fixed
- Typos:
actvitiy_names→activity_names,"incorrectre"→"incorrecte","printipale"→"principale" - Missing icon in the taskbar and in the About box in the PyInstaller executable:
app.setWindowIcon()applied on theQApplication