Release: Wombat

Version Wombat is actively laying the foundation for ecosystems Documentation.

Read the Roadmap

SchedPlus technical overview

SchedPlus separates user interfaces from the scheduling core. Startup selects Tkinter, PyQt, or the CLI; each works through logic.scheduler.Scheduler, which validates tasks and delegates persistence to the SQLite storage module.

Tkinter / PyQt / CLI
        │
   Scheduler + validation
        │
 SQLite storage (tasks.db)

Storage and recovery

SQLite is the sole persistence backend. The entries table contains id, date, time, text, createdAt, and updatedAt. IDs are UUIDs; date and time values use normalized ISO formats. Initialization runs a SQLite quick check. If confirmed corruption is detected, SchedPlus preserves the damaged database as a timestamped tasks_corrupted_*.db file, creates a new database, and reports the backup location.

Storage writes use transactions, foreign keys are enabled, and SQLite waits up to three seconds for a busy database. Storage logs rotate in the application data directory as schedplus.log (up to three 1 MB backups).

Dependency profiles

Profile Includes
base Scheduler, CLI, updater foundation
lite Base plus Tkinter calendar support
standard Base plus PyQt interface
full Both desktop interfaces
dev Full plus tests, formatter, and linter

Frozen build profiles

Release packaging starts with four reproducible PyInstaller onedir builds: Standard (PyQt), Lite (Tkinter), Full (the interface selector), and CLI. Each build uses its dedicated launcher, bundles the application icons, package metadata, license files, and NOTICE, and explicitly excludes frameworks that do not belong to that edition. The frozen directory is then wrapped by a platform package or installer.

Because SchedPlus desktop distributions are GPL-3.0-only, every binary release must provide corresponding source and retain its GPL license and NOTICE. The project repository and matching source tag or archive are the source location.

Debian packages

The initial Debian packages are schedplus (Standard), schedplus-lite, and schedplus-cli. Each installs its frozen application under /usr/lib, its launcher under /usr/bin, and licensing documents under /usr/share/doc. Standard and Lite also install their desktop entry, hicolor icons, and AppStream metadata. Editions are mutually exclusive to avoid competing desktop entries. No package owns task data, so ~/.local/share/ZFordDev/SchedPlus/tasks.db survives upgrades and package removal.

AppImage

SchedPlus Standard is also available as a portable AppImage. It contains a read-only frozen application and keeps task data at ~/.local/share/ZFordDev/SchedPlus/tasks.db, outside the image and its directory. Run the AppImage directly with FUSE available; if FUSE is missing, use --appimage-extract and launch squashfs-root/AppRun. Each release ships an architecture- and versioned filename with a SHA-256 checksum.

Windows and Microsoft Store

Windows releases provide portable ZIPs for all four editions and a per-user Standard installer at %LocalAppData%\\Programs\\SchedPlus. These formats, and the Standard MSIX package, always store tasks at %APPDATA%\\ZFordDev\\SchedPlus\\tasks.db, outside their installation folders. The MSIX package contains only the Standard PyQt application, has no command execution alias, requests only runFullTrust, and receives Store-managed updates. Its listing is not public until the Store release is approved.

Snap

The Standard Snap uses strict confinement. Its data path is $SNAP_USER_COMMON/SchedPlus/tasks.db, not the revision-specific Snap home directory, so Snap refreshes preserve tasks. Snap publication is pending.

Update policy

The updater only operates when packaging embeds schedplus/build-info.json that enables a supported managed install. It verifies a signed HTTPS manifest with Ed25519, verifies artifact SHA-256 and byte size, and uses an external updater for atomic managed-install swaps and rollback. Source checkouts cannot overwrite their working tree. Snap and Microsoft Store formats always defer updates to their package provider.

The complete desktop distribution is GPL-3.0-only. The reusable src/logic scheduler, validation, task model, and storage layer are separately available under Apache-2.0. See the project NOTICE for licensing transition details.