Repository navigation
Releases: lifeos-plus/lifeos-cli
Release list
v1.4.3
Changes
-
Finance balance-sheet snapshots behave correctly when a rate snapshot is selected. A currency whose amount is zero no longer blocks converted aggregation just because the rate snapshot has no rate for it, since 0 converts to 0 at any rate. Auto-generated tree rollups now keep their original currency and amount instead of being overwritten with the converted primary-currency value, so
lifeos finance snapshot showreports raw amounts as raw while conversion stays in the converted column and the snapshot totals. -
Dependency advisories are cleared with
urllib3 2.8.0andvirtualenv 21.14.3, alongside routine direct dependency minor updates.
Full changelog: v1.4.2...v1.4.3
v1.4.2
Changes
-
Quick batch entry (
lifeos timelog add) keeps zero-length lines as zero-minute records instead of silently pushing the end time to the next day and storing 24 hours. BothHHMM TitleandHH:MM-HH:MM Titlelines with equal start and end now store exactly what was typed; ranges that genuinely cross midnight still roll forward with the existing warning. -
Dependency handling is fixed and current: the package declares
sqlalchemy[asyncio], souv tool install "lifeos-cli[web,postgres]"keepsgreenleton every install shape, and the locked dependency set moves to SQLAlchemy 2.1.1. A fresh install previously resolved SQLAlchemy 2.1 withoutgreenlet, andlifeos web serveexited during startup withImportError: The SQLAlchemy asyncio module requires that the Python 'greenlet' library is installed.
Full changelog: v1.4.1...v1.4.2
v1.4.1
Changes
-
timelog listandtimelog searchnow filter completed time with--min-duration-minutesand--max-duration-minutesover an inclusive minute range, and the local Web API exposes the samemin_duration_minutesandmax_duration_minutesquery parameters for the Web UI. A negative minimum surfaces reversed records whoseend_timeprecedesstart_time. -
listandsearchcommands now share one pagination contract:--limitdefaults to 100 and accepts 1-500,--offsetaccepts 0 or greater, and values outside those ranges fail during argument parsing with an explicit message instead of an opaque database error. Use--offsetto page through larger result sets.
Full changelog: v1.4.0...v1.4.1
v1.4.0
Changes
- Database writes and migrations are safer on SQLite and PostgreSQL, with reliable rollback and coordinated concurrent updates. Web writes reserve SQLite's writer before reading; lock contention returns
503withRetry-Afterinstead of an unhandled 500. - Full backups now use schema-v4 bundles with a consistent snapshot of authoritative data, including relationships and soft-deleted history, and validation before restore. Legacy v3 bundles remain merge-only and cannot replace a database.
- Database diagnostics now detect hierarchy problems, dangling links, and task effort drift, with explicit repair and effort-rebuild options that preserve recoverable history and manual vision experience.
- Moving tasks between visions now updates soft-deleted descendants as well, preventing new cross-vision inconsistencies that could block imports and restores.
Before upgrading the database, retain a verified backup and stop other writers, then run lifeos db upgrade.
Full changelog: v1.3.8...v1.4.0
v1.3.8
Changes
- Habits can now be linked to a life Area, and their dated actions inherit that Area through both the CLI and the local Web API. The association is optional and additive, so existing habits stay unassigned until an Area is chosen.
Full changelog: v1.3.7...v1.3.8
v1.3.7
Changes
- Area ordering writes are now resilient under database contention: the API validates and updates the full order in one batch, retries transient SQLite and PostgreSQL lock conflicts, and returns
503 Service UnavailablewithRetry-Afterwhen the database remains busy instead of exposing an unhandled 500 error.
Full changelog: v1.3.6...v1.3.7
v1.3.6
Changes
- Health records are now first-class data resources: body measurements, menstrual days and factors, and sleep segments support export, import, batch update, and batch delete. Body measurements can also be synchronized idempotently by
measured_atthrough natural-key upsert oradd --replace-existing, with active-record uniqueness and concurrent-write protection.
Full changelog: v1.3.5...v1.3.6
v1.3.5
Changes
- The Mayan 13 Moon calendar is now user-configurable: the new year start day (month-day, default July 26) and the seven-year anchor year are stored as preferences, the Day Out of Time is the day before the configured new year start (February 29 is treated as February 28), and all calendar consumers read the same preferences through the shared adapter.
Full changelog: v1.3.4...v1.3.5
v1.3.4
Changes
- Stats buckets now come from the backend: the
aggregated-areasAPI returns the complete, ordered period timeline (including buckets without data), and the Mayan 13 Moon calendar's Day Out of Time (July 25) no longer shows up as its own week or month in stats views — it stays in day and year views only.
Full changelog: v1.3.3...v1.3.4
v1.3.3
Changes
- Comment conventions: 116 boilerplate docstrings that merely restated their signatures were removed across the CLI codebase,
CONTRIBUTING.mdnow codifies the "why-only" comment policy, and ruff'sERArule keeps commented-out code out of CI.
Full changelog: v1.3.2...v1.3.3