Version Wombat is actively laying the foundation for ecosystems Documentation.
Read the RoadmapSchedPlus 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.