Repository navigation
DirectPaymentTimesheets v1.0.7
v1.0.7 improves payroll preparation and CSV import, introduces audited timesheet amendments, redesigns settings and email setup, and strengthens local storage and credential handling. It uses database schema 42 (v1.0.6 uses schema 41).
Start here: completed v1.0.7 First-Time Setup Guide.
Improvements since v1.0.6
- Configurable CSV import: heading aliases, introductory rows, enabled columns, and four calculation methods: supplied Worked Hours, Worked Hours minus Break, End minus Start, or End minus Start minus Break. Required fields and breaks are validated; omitted Rate/Amount are distinguished from supplied zero. Saved interpretation and archived source evidence preserve historical imports. Import stays unrounded; payroll rounding applies during preparation.
- Folder-first and clipboard import: process the configured CSV folder, then enter/edit clipboard CSV for outstanding active PAs. Coverage follows the selected payroll period, so older files do not suppress later-cycle clipboard entry. Duplicate detection, import audit and source archiving remain in force.
- Audited amendments: edit and save submitted or settled timesheets, regenerate a replacement PDF, and send separately when ready. The latest saved and successfully regenerated version governs later reconciliation and carry-forward. Earlier PDFs, submissions, attachment bytes and delivery attempts remain retained. Saving alone invalidates the old candidate; regeneration does not send mail. New actual hours remain usable in subsequent cycles, with protection against repeated carry/payment. In-flight or uncertain delivery remains blocked.
- Clearer screens and saving: reorganised Employer/PA Maintenance, Application/Payroll Settings and Email Settings; visible unsaved Save controls; explicit partial-save reporting; improved narrow-dialog wrapping, navigation and Dashboard layout. Failed Payroll Settings configuration saves retain effective rules until a successful retry. Current email recipient lists exclude departed PAs while historical payroll remains available.
- Simpler email setup: standalone test email needs no PA, payroll schedule or generated document. It sends only to the selected test recipient, with no payroll attachments, CC/BCC or payroll-history writes. Connection, message, recipient and test/batch safeguards make sending deliberate. SMTP acceptance still does not prove inbox delivery.
- Secure credentials and Microsoft OAuth2: SMTP passwords and Microsoft tokens use native OS credential stores; configuration retains opaque references. Legacy plaintext password migration verifies secure storage before replacing the field. Authenticated SMTP requires verified TLS, with no plaintext-authentication fallback. Microsoft personal-account device sign-in, refresh, XOAUTH2, bounded network diagnostics and explicit local-token cleanup are implemented.
- Storage and recovery hardening: private creation, ownership/permission checks, guarded file publication, SQLite connection ownership and clearer database errors strengthen backup, migration, restore and normal shutdown. These safeguards do not provide authentication or protection against processes with the user's full account authority.
Packages and installation
Choose the architecture of your installed operating system. All ten installation packages below are attached, together with SHA256SUMS, individual .sha256 files, individual provenance .json files and the original rehearsal-manifest.json.
| Platform | Package | Target baseline |
|---|---|---|
| Linux Intel/AMD 64-bit | direct-payment-timesheets_1.0.7_amd64.deb or DirectPaymentTimesheets-1.0.7-linux-x86_64.AppImage |
Compatible desktop Linux, Debian 12 / glibc 2.36 baseline |
| Linux ARMv7 hard-float | direct-payment-timesheets_1.0.7_armhf.deb or DirectPaymentTimesheets-1.0.7-linux-armhf.AppImage |
Compatible 32-bit ARMv7 OS; not ARMv6/original Pi Zero |
| Linux ARM64 | direct-payment-timesheets_1.0.7_arm64.deb or DirectPaymentTimesheets-1.0.7-linux-aarch64.AppImage |
Compatible 64-bit ARM Linux |
| Windows Intel/AMD 64-bit | DirectPaymentTimesheets-1.0.7-windows-x86_64-setup.exe |
Windows 10 or later, x64 |
| Windows ARM64 | DirectPaymentTimesheets-1.0.7-windows-arm64-setup.exe |
Windows 10 or later, native ARM64 application |
| Intel Mac | DirectPaymentTimesheets-1.0.7-macos-x86_64.dmg |
macOS 11.4 or later |
| Apple Silicon Mac | DirectPaymentTimesheets-1.0.7-macos-arm64.dmg |
macOS 12.0 or later |
Windows: run the matching unsigned per-user installer, then launch Direct Payments Timesheets from the Start menu. Both architectures share the same per-user installation; use only the matching installer. Check official origin and checksum before accepting Windows security prompts.
Linux: install the matching .deb with the package manager (for example sudo apt install ./direct-payment-timesheets_1.0.7_amd64.deb on amd64), or make the AppImage executable and open it. AppImage still requires compatible system/desktop/graphics libraries and may require FUSE. Run the application as your normal user. ARM packages default to software rendering unless explicitly overridden.
macOS: open the matching DMG, drag Direct Payments Timesheets.app to Applications, eject the DMG and launch the installed copy. Bundles are ad-hoc signed, not Developer ID signed or notarised. Use the normal macOS approval process for a verified official download; do not disable Gatekeeper globally.
Verify downloaded files against SHA256SUMS (Linux: sha256sum -c SHA256SUMS with the relevant packages present; macOS: shasum -a 256 <file>; Windows PowerShell: Get-FileHash <file> -Algorithm SHA256). Compare the complete hash and exact filename. Checksums establish matching bytes, not a publisher signature.
Upgrading from v1.0.6
- Close every running copy. Keep a recovery copy of your current data and separately protect external payroll files, signatures and other business records.
- Install v1.0.7 using the same OS account and existing data location. Updates are manual; Check for updates does not install them.
- On first launch, the application automatically creates and verifies a pre-upgrade database backup, including committed SQLite WAL data, before migrating schema 41 to 42. When present,
config.tomlis included, using credential references instead of newly copied plaintext SMTP passwords. Backup failure blocks the upgrade. Migration runs on an isolated copy before transactional installation; preserve the original and recovery evidence if startup reports a failure. - Confirm version 1.0.7 / schema 42, then check employer/PA details, payroll periods, settings and email access before production use.
The normal data root is %LOCALAPPDATA%\DirectPaymentTimesheets on Windows and ~/.directpaymenttimesheets on Linux/macOS; an explicit override may change it. Do not switch profiles during upgrade accidentally. Migration is one-way: never run v1.0.6 against an upgraded schema-42 database. Use the reviewed backup/restore procedure and restart as directed rather than downgrading the executable against newer data.
Database backups include records/history and PDF/attachment bytes retained inside SQLite, plus configuration when present. They do not copy external PDFs, payslips, signatures, original CSV/archive files, fonts or OS credential-store secrets. Known external locations are listed in the recovery manifest. Back up those files separately. Restore reviews rollback effects, requires a reason/acknowledgement, blocks unresolved email uncertainty, and makes a safety copy first. A backup copied to another account/computer normally needs SMTP password re-entry or Microsoft reconnection.
Credentials and Microsoft sign-in
Windows uses Credential Manager, macOS Keychain, and Linux a persistent, unlocked Secret Service collection. Missing, locked or unverifiable stores block authenticated sending; no plaintext/session-only fallback is supplied. Failed legacy password migration preserves the recoverable original file and blocks authenticated sending. Historical v1.0.6 backups may still contain plaintext passwords; upgrading does not erase them. Usernames and ordinary settings are not encrypted by credential storage.
Microsoft OAuth2 supports personal Outlook.com, Hotmail.com and Live.com accounts at smtp-mail.outlook.com:587 with required STARTTLS. Supply a valid Microsoft public-client application ID registered for personal accounts/device authorization and delegated SMTP.Send plus offline access; no client secret is required or embedded. Sign in/reconnect, save Email Settings, then explicitly send a standalone test. The implementation does not support organizational Microsoft 365, shared mailboxes, national clouds, client-credentials grants or Graph Mail.Send. Microsoft SMTP hosts never fall back to Basic password authentication. OAuth consent does not establish SMTP AUTH permission or successful delivery.
Disconnect removes the draft reference and requires saving; it does not revoke Microsoft consent or erase every retained credential generation. Explicit local cleanup is separate. Revoke consent through Microsoft when needed. See Microsoft OAuth2 details and remaining acceptance.
Verification and source provenance
These are the original packages from successful GitHub Actions run 42719123287, source 2ae393fc7ec1136623e82cf8a5c2ff33ae8f6975, version 1.0.7. All seven platform/architecture builders and the final verify-all job succeeded. The aggregate artifact archive SHA-256 is 98b7afc8300ccfdf5a32012802bfc32013d53c1b20d1653c412bd40bad917aee.
Draft preparation independently checked the archive digest, all ten package hashes, exact filenames, architecture/installation-kind metadata, version, run ID, source SHA, original checksum sidecars and aggregate manifest. Extracted Linux payload ELF architectures/ABI and Debian versions, Windows application PE architecture/version, and macOS Mach-O architecture/minimum OS and bundle versions were also checked without launching or rebuilding the applications. Native builder checks include package contents, provenance and platform-specific validation; macOS DMG verification succeeded on both builders. Windows ARM64 was cross-built/checked, not runtime-tested on ARM hardware.
The draft targets the package source commit above. Current main b1eccd043890bc5c53a0488d81a98d4a479740e8 adds only the completed setup guide and README documentation correction; it does not change application or packaging code. The guide link intentionally uses that later documentation commit. These assets were not rebuilt from it.
Known limitations and acceptance boundaries
- Successful packaging and automated tests do not establish every supported hardware/minimum-OS combination. Current-package ARM32 graphics/window behaviour, ARM64 Linux/Windows hardware, Windows upgrade/uninstall, and Mac browser-download first launch and exact minimum-OS acceptance still need the scoped checks described in release builds. QEMU and modern CI runners are not substitutes for those tests.
- Live Microsoft sign-in/refresh, consent revocation and provider SMTP compatibility remain incomplete acceptance work; native credential-store migration/failure/persistence acceptance is source- and platform-specific. Ignored native tests are not passes. Historical native results do not certify later OAuth/settings changes. Packaged GOV.UK HTTPS retrieval also needs platform acceptance.
- This is a local, single-user desktop application, without application login, roles, shared multi-user operation, web/mobile access or a complete payroll-calculation engine. Payroll providers calculate payroll/SSP. Overtime, configurable frequency/workweek calculations and historical annual-leave rule history are not implemented. Public-holiday identification does not automatically deduct worked hours or establish entitlement.
- Prep Sheet PDF import is supported; DOCX import is not implemented. The email archive path is saved but has no production filing consumer. Archival ordinary payslips are not automatically promoted/emailed. Backups have no automatic scheduling, retention cleanup, compression or cloud integration.
- Database/configuration publication is not one distributed transaction. If restore commits the database but configuration publication fails, preserve the safety backup and follow the restart/recovery message. Local storage safeguards cannot protect against administrators or uncooperative processes with the user's full authority.