Skip to content

v0.17.0

Latest

Choose a tag to compare

@github-actions github-actions released this 01 Sep 06:15
· 10 commits to main since this release
d157528

v0.17.0

Reviews come in layers now, and every layer knows who wrote it.

New & Noteworthy

Stacked proposals. One ever-growing pull request is where reviews go to
die, so sharing while a proposal is open now opens a new proposal stacked on
top of it instead of folding more work in. Every unit of knowledge gets its
own focused review; reviewers merge bottom-up, and merging the top lands the
whole chain in one click. Review feedback? Amend exactly the layer it belongs
to (--proposal <n> on the CLI, proposal on share_changes) and every
layer above re-bases itself. Withdrawing a middle layer repairs the chain,
and a chain wedged by a declined layer heals on the next share. On forges
without stacked pull requests, or with github.stacks off, the single
living proposal keeps working as before.

Personal share identities. An approval means little when everything ships
under one shared credential. Set github.share_identity to personal and
every share, amend and withdrawal goes out as the person doing it - their
name on the proposal, so nobody reviews their own work by accident. Connect
once in Fluid's profile card or with crystalline connect github --personal,
on the surface you share from. No connection means a refusal that says
exactly how to connect - there is no quiet fallback to somebody else's
credential, ever. Agents over HTTP share as the bot github.agent_identity
names. One requirement rides along: sharers need write access to the team
repository, because proposals are branches, never forks. The default
instance mode is unchanged, byte for byte.

File-scoped shares. A session that touched five unrelated things no
longer has to propose all five at once. Narrow a share to chosen files with
files on share_changes, repeatable --file on origin share, or
per-file checkboxes in Fluid - each chosen file's folder listing rides along
so the repository stays browsable, and everything left out simply waits for
a later share. On shared instances, Fluid preselects the files you wrote
(by recorded authorship - a correctable guess, never a rule) and the share
button counts what is yours: "2 of 5 unshared changes are yours".

Share nudges. Unshared changes are a scream in space: the team never
hears them. After a week, the evolve sweep says so (a judgment-class
finding - it proposes, a person decides), and the session-end reminder gains
a share line beside capture and evolve.

Smaller but handy. Proposals record their author in both modes, and the
stack rail and origin status show who owns each layer. users remove
sweeps the departing person's credential, and a CLI --disconnect now tells
a running daemon to drop the cached credential immediately.

Fixes

  • A domain could get stuck answering "pull this domain first" to every share
    after upstream history was rewritten: pulls now consume merged proposals
    on every path, not just some.
  • Starting a GitHub sign-in while another was still pending silently joined
    the running one; it now answers "another sign-in is in progress".
  • Refusing to share used to look like a server error (HTTP 500, a raw
    INTERNAL over MCP). Refusals now teach: 422 / invalid_params with text
    naming the fix.

Breaking changes

None. state.json gains an optional author field per proposal; old records
load unchanged, no migration. One behavior change worth naming: in personal
mode the sync routes accept editors as well as admins - instance mode stays
admin-only exactly as before.

Upgrade notes

  • Personal mode is opt-in. Before flipping it: every sharer needs
    collaborator access to the team repository, each person connects once on
    the surface they share from, and HTTP agents need github.agent_identity
    pointing at a connected bot account. Until then those writes refuse with
    teaching text, by design.
  • A pre-0.17.0 state.json holding several open proposals keeps updating
    the oldest until the others resolve on the forge; stacking begins with the
    first share after that.