Repository navigation
v1.1.0 — Optional due dates & two-party signatures
Invoicing
- The due date is now optional. A switch in the invoice editor decides whether the invoice carries a payment deadline at all. Switched off, both the header row and the "payment due by …" line are left off the PDF and the on-screen preview. The date itself is still stored while it's off, so switching it back on restores what you picked.
- Pick any due date by hand. Choosing a date pins it: redating the invoice or reselecting the client no longer recomputes it behind your back, and the calendar now reaches back to 2000 so a backdated invoice can be dated freely.
- A signature block for each party. The footer carries two ruled lines instead of one unattributed rule — yours on the left, the client's on the right — so a countersigned copy can be returned. Each line sits directly under the name and address of whoever signs it.
- Day-of-month payment terms for clients. A client billed on a calendar-month cycle can be set to fall due on a fixed day of the following month (1–28) instead of net-N days.
Your existing data
Nothing is rewritten, dropped or reinterpreted. The two new columns (clients.payment_due_day_of_month, invoices.due_date_enabled) are added to your existing ledger on first open, and older invoices default to having their due date shown — exactly as they print today. Upgrading in place over an existing ~/SoleLedger/sole_ledger.sqlite is the intended path; no export/import needed.
Covered by test/migration_test.dart, which winds a ledger back to the v7 and v8 schemas and reopens it through the real migration path.
Downloads
| File | For |
|---|---|
SoleLedger-1.1.0-arm64-v8a.apk |
Android phones and tablets (almost certainly this one) |
SoleLedger-1.1.0-armeabi-v7a.apk |
Older 32-bit Android devices |
SoleLedger-1.1.0-x86_64.apk |
Android emulators / x86 devices |
SoleLedger-1.1.0-macos.zip |
macOS (Apple silicon + Intel) |
APKs are split per ABI, so each carries only its own native libraries. They're signed with the debug key — a personal sideloaded build, not a Play Store release; Android will ask you to allow installation from unknown sources. The macOS .app isn't notarised: right-click → Open the first time, or xattr -dr com.apple.quarantine sole_ledger.app.