fix: align negotiate response with panproto-xrpc NegotiateResult panproto-xrpc::NegotiateResult expects { need, refs } where refs is the list of (name, target) pairs the remote has. The handler was returning { need, wantResolved } which the client couldn't decode.
Author: Aaron Steven White
Commit
078fb38193cb7b7beea6dec51dc36fd5eeb2ba10Parent: 613ec8ea29
Structural diff unavailable
These commits were pushed via plain git push, so no pre-parsed
schemas are available. Install git-remote-cospan and re-push via panproto:// to
see scope-level changes, breaking change detection, and semantic diffs.
brew install panproto/tap/git-remote-cospan1 file changed +9 -2
@@ -72,10 +72,17 @@ pub async fn negotiate(
7272 } 7373 } 7474 75- let want_resolved: Vec<String> = want_ids.iter().map(|id| id.to_string()).collect(); 75+ // Wire format expected by panproto-xrpc::NegotiateResult: { need, refs } 76+ // where refs is the list of (name, target) pairs the remote currently has. 77+ let refs: Vec<(String, String)> = fs_store 78+ .list_refs("refs/") 79+ .unwrap_or_default() 80+ .into_iter() 81+ .map(|(name, id)| (name, id.to_string())) 82+ .collect(); 7683 7784 Ok(Json(serde_json::json!({ 7885 "need": need, 79- "wantResolved": want_resolved, 86+ "refs": refs, 8087 }))) 8188 }