Skip to content

agit-v0.2.13

Choose a tag to compare

@github-actions github-actions released this 30 Sep 01:50
· 63 commits to main since this release

Changed

  • Installations that skip install scripts are counted. An installation whose
    installer recorded no install receipt, such as one run through npx, with
    npm --ignore-scripts, or by a package manager that skips install scripts,
    now records one from its first user command, marked
    receipt_origin=first_command; installer receipts are marked
    receipt_origin=installer. Setup, hooks, MCP, RC, background processes and
    commands an installer runs never record it, so a create-agit receipt keeps its
    acquisition key. Installations whose statistics state predates this release,
    or whose AGIT_HOME already held older state, are never reported this way. See
    First-command receipt.

  • Session reuse and invitation counts on the Hub. When agit run continues
    a session line or forks from a point on one, it sends the Hub one receipt
    naming the repository, the source session ID and commit, whether the run
    continues or forks, and the per-process operation ID, so the Hub can count
    how often sessions are picked up. A continue is reported once the session is
    ready to launch, a fork once its branch exists, and a --mine fork to the
    repository it copied. The receipt is sent in the background only for
    checkouts of the configured Hub, only from a settled session, and never with
    renewed credentials: an expired sign-in sends nothing. A Hub that is
    unreachable or refuses it never changes the run's output or exit code.
    agit fork and agit resume stay offline.
    agit repo invite <owner/repo>@<branch> also tells the Hub which session its
    link opens. The download attribution headers still carry no arguments or
    names. See
    Session reuse and invitations.

Fixed

  • Remote Control can return a fresh, bounded native history page with watch
    admission, avoiding a separate network round trip when opening a conversation.
    Native history transfers negotiate compression, preserving complete tool
    results and compatibility with older clients and servers. Optional history
    reads do not block the daemon or prevent a successful live subscription.

  • Device name changes synchronize to Cloud without enrolling another device.

  • Failed session publication retries while the conversation is idle, so a
    transient upload failure does not require another user message to recover.

  • agit login checks that it can save credentials under AGIT_HOME before it
    asks the Hub for anything. An agent sandbox that refuses writes there no
    longer uses up the human's approval: login stops with the directory to allow
    and says no login request was created, and agit login --complete leaves the
    approved sign-in unclaimed so the same command finishes it later. If saving
    still fails after sign-in, the new Hub session is signed out again.

  • Signing in from an agent no longer fails when the agent runtime stops the
    waiting agit login. Every browser and device-code request is recorded
    privately under AGIT_HOME when the Hub creates it, and
    agit login --complete without a value finishes it from any later process,
    including an interrupted agit login --device. --complete now waits for
    the approval for up to 90 seconds (--wait <seconds>, 0 checks once)
    instead of checking once, keeps waiting through a failed poll, keeps the
    request when the wait runs out, and forgets it when the Hub says it expired
    or was already used. Running the printed --complete command again after
    the sign-in finished reports success instead of "no longer valid". A new
    agit login finishes a request the human already approved instead of
    replacing it. agit whoami --check, agit commit and commands that stop
    with "not logged in" first claim an approved request once, and otherwise
    point to agit login --complete instead of a new login. Signing out cancels
    a sign-in still being claimed: a session approved after agit logout is
    signed out again instead of saved, and a session a concurrent sign-in saved
    while agit logout ran is revoked with the credentials it removes. A second
    agit login --complete or a new agit login started while another process
    claims the same sign-in waits for it and reports success instead of "no
    longer valid" or a new login link.

  • Local state problems read as local problems. agit whoami --check reports
    an unwritable home or a held credential lock instead of "can't reach" the
    Hub, agit doctor checks that AGIT_HOME is writable, and every command
    that meets one exits with the precondition code. Messages name the agit lock
    another process holds and say that agit's lock files are released when their
    process exits and must not be deleted; credential locks give up after a
    bounded wait, and session locks say what they are waiting for.

  • Re-importing a session describes its claim: a registration is saved by the
    import, a saved session says where and how to record later turns, and a
    session saved elsewhere says how to move it. The link file path is no longer
    offered as a next step, and a failed import restores the session's previous
    link, including none.

  • A session targeted at main is refused before anything is adopted or
    created, with the reason and an example branch in the caller's syntax.

  • agit push leaves an origin that already points at the destination alone
    and writes a changed one under the repository lock, so a manual push and a
    hook's auto-push no longer collide on .git/config. Git failures on a held
    lock say not to delete it while a git process runs; a refused write says the
    checkout is not writable instead.

  • agit setup recognizes its own hooks by their arguments, so installing from
    another executable path replaces the old entry instead of adding a second
    one.

Full Changelog: agit-v0.2.12...agit-v0.2.13