Skip to content

Releases: igamenovoer/lairen

lairen 1.4.0

Choose a tag to compare

@igamenovoer igamenovoer released this 27 Oct 16:04

Adds overwrite protection to lairen deploy.

Added

  • lairen deploy now refuses to overwrite a target whose live credential is
    newer than the stored copy for that account. The refusal names the account,
    explains that overwriting would discard a newer token, and prints the
    lairen sync command that captures it first.
  • lairen deploy --force overrides the refusal. The normal pre-deploy snapshot
    still preserves the overwritten file. A target holding an unregistered
    credential produces a warning rather than a refusal.

lairen 1.3.0

Choose a tag to compare

@igamenovoer igamenovoer released this 27 Oct 15:40

Adds a sync path that pulls refreshed credentials back into the store.

Added

  • lairen sync [REF ...] [--home PATH ...] [--dry-run] [--strict] reads known
    deployed homes and the source home, keeps the freshest same-identity
    credential, and writes it back to the store. It never writes a provider home.
    Identity changes are reported and require lairen update.
  • lairen deploy --refresh syncs known homes and the existing target before
    writing, so a target that already refreshed its tokens is captured instead
    of overwritten.
  • sync appends sync entries to state/deployments.jsonl; status continues
    to use deploy entries for lease reporting.

Changed

  • Deployment-log writing is shared through record_event().
  • The agent-oriented manual and docs now recommend lairen sync before
    redeploying an account that another home has used.

lairen 1.2.0

Choose a tag to compare

@igamenovoer igamenovoer released this 26 Oct 14:39

lairen 1.2.0

Adds a project-aware status view and an append-only deployment ledger. This is
the lairen status workflow for answering "what accounts is this project
using, and where else are they leased?"

Changes

Added

  • lairen status [DIRECTORY] [--provider codex|kimi] [--json] [--strict]
    inspects a project's live .codex and .kimi-code homes, or a provider home
    passed directly.
  • Per-account states: current, drifted, unregistered, invalid,
    missing-store-blob, and no-login, with project and registry expiry.
  • OTHER PROJECTS lease reporting from the deployment log, with live target
    checks that mark overwritten deployments.
  • Append-only state/deployments.jsonl recording deploy, update, and remove
    events without credential material.
  • --json for scripts and --strict for CI, which exits 1 for unregistered,
    invalid, drifted, or missing-blob credentials.
  • Alias highlighting on a TTY, honoring NO_COLOR.

Changed

  • deploy resolves the target home to an absolute path and appends a
    deployment-log entry.
  • update and remove append history entries; update also records the
    previous ref when an identity changes.
  • No breaking changes. Existing registries, refs, and deployed homes remain
    compatible.

Upgrade notes

  • No migration is required.
  • Lease history starts with this release. Accounts deployed earlier fall back
    to the single last_deployed_home value and are labeled (last deploy).
  • lairen status is read-only and does not create lairen state directories.

Validation

  • 57 core tests and 1 auxiliary test pass.
  • Ruff, mypy, and the strict MkDocs build pass.
  • Source and wheel distributions build as lairen 1.2.0.

Full changelog: https://github.com/igamenovoer/lairen/blob/main/CHANGELOG.md
Compare: v1.1.0...v1.2.0
PyPI: https://pypi.org/project/lairen/1.2.0/

lairen 1.1.0

Choose a tag to compare

@igamenovoer igamenovoer released this 26 Oct 14:03

lairen 1.1.0

Adds one-line credential updates. An existing account or alias can now be
rebound to a new provider home without re-registering.

Changes

Added

  • lairen update REF --home PATH [--label TEXT] reads a new credential and
    replaces the stored one for an account selected by alias, id, or label.
  • Same-identity updates refresh the blob, source home, and provider metadata in
    place.
  • Changed identities rebind the account: the ref follows the new id, the alias
    stays attached, and the old credential blob is removed.
  • Custom labels are preserved; provider-derived labels follow the new identity.
  • The command refuses to merge when the new credential already belongs to
    another account.
  • CLI reference, concepts, usage guide, README, and the agent manual document
    the new workflow.

Changed

  • No breaking changes. Existing registries and refs remain compatible.

Upgrade notes

  • No migration or re-registration is required. update is additive.
  • Existing deployed homes are not rewritten. Deploy the updated account again
    when target homes need the new credential.

Validation

  • 40 core tests and 1 auxiliary test pass.
  • Ruff, mypy, and the strict MkDocs build pass.
  • Source and wheel distributions build as lairen 1.1.0.

Full changelog: https://github.com/igamenovoer/lairen/blob/main/CHANGELOG.md
Compare: v1.0.0...v1.1.0
PyPI: https://pypi.org/project/lairen/1.1.0/

lairen 1.0.0

Choose a tag to compare

@igamenovoer igamenovoer released this 26 Oct 12:08

lairen 1.0.0

First stable release. lairen now supports first-class account aliases and
commits to a stable CLI surface and backward-compatible registry format.

Changes

Added

  • First-class account aliases with lairen alias [REF] [NAME],
    lairen alias REF --clear, and lairen alias --json.
  • lairen register --alias NAME to set an alias while saving a login.
  • Alias resolution before bare ids and labels; provider/id remains exact.
  • Alias validation for uniqueness, id and label conflicts, allowed characters,
    and length.
  • Alias preservation across lairen register and lairen scan --register.
  • ALIAS column in lairen list, plus an alias field in list, usage,
    and show JSON records.
  • Documentation and agent manual topics for alias workflows.

Changed

  • Registry records gained an optional alias field. Existing registries load
    unchanged.
  • lairen list text output has a new column; scripts should use
    lairen list --json.
  • Version 1.0.0 marks the first stable release. No upgrade steps are required.

Validation

  • 34 core tests and 1 auxiliary test pass.
  • Ruff, mypy, and the strict MkDocs build pass.
  • Source and wheel distributions build as lairen 1.0.0.

Full changelog: https://github.com/igamenovoer/lairen/blob/main/CHANGELOG.md
Compare: v0.2.0...v1.0.0
PyPI: https://pypi.org/project/lairen/1.0.0/

lairen 0.2.0

Choose a tag to compare

@igamenovoer igamenovoer released this 26 Oct 11:46

Full Changelog: v0.1.1...v0.2.0

v0.1.1

Choose a tag to compare

@igamenovoer igamenovoer released this 26 Oct 11:18

Adds depth-limited credential scanning.

  • New lairen scan DIR command with --depth, --provider, --register, and --json
  • Detects Codex homes (CODEX_HOME / ~/.codex, auth.json)
  • Detects Kimi Code homes (KIMI_CODE_HOME / ~/.kimi-code, credentials/*.json, including kimi-code-env-*)
  • Validates credential shape, skips symlink and noise directories, keeps the newest duplicate on registration
  • Verified against upstream Codex and Kimi Code source layouts

v0.1.0

Choose a tag to compare

@igamenovoer igamenovoer released this 26 Oct 11:06

Initial 0.1.0 release.

  • Pixi-managed Python project on the 3.11 line
  • Click CLI: register, list, show, deploy, usage/stats, remove, providers, doctor
  • Tested Codex and Kimi adapters
  • Experimental Claude, Command Code, Cursor, and OpenCode adapters
  • Local expiry/usage statistics with JSON output