v0.9.0
Minor Changes
-
#159
4def353Thanks @LiranCohen! - Add--privateflag togitd initRepos are public by default. Pass
--privateto create a private repo
whose bundles are encrypted during sync. The visibility is stored in the
DWN repo record'svisibilitytag and is already handled downstream by
bundle-sync.tsandmigrate.ts. -
#158
13c9954Thanks @LiranCohen! - AddGET /repos/:did/:repo/pulls/:number/filesendpoint to GitHub shimReturns the list of changed files for a pull request. Since DWN revision
records store only aggregate diff stats (additions, deletions, files
changed), the response includes a summary entry with the totals. This
unblocks tools likegh pr diff --name-onlythat require this endpoint. -
#160
2214566Thanks @LiranCohen! - Protocol audit fixes-
refs.ts:
targettag is now required on ref records (a ref without
a commit SHA is meaningless). -
patches.ts:
statusChangerecords now requirefrom/totags
(matching the issues protocol) so transitions can be queried — e.g.
"all transitions that closed a PR". All callers (shim merge, CLI merge,
close, reopen) updated. -
patches.ts: Renamed
tipCommit→headCommitin the
revisionBundleschema and its callers for consistency with the
revisionrecord which already usesheadCommit. -
releases.ts:
target_commitishnow reads thecommitShatag from
the release record instead of always returning'main'. -
credential-cache.ts:
writeCachenow creates the parent directory
(mkdirSyncwith{ recursive: true }) before writing, preventing
ENOENT when~/.enboxdoesn't exist yet.
-
Patch Changes
-
#155
5055816Thanks @LiranCohen! - Fix daemon lifecycle UX: bun spawn crash, auto-backgrounding, port conflicts-
Fix bun spawn crash: Replace
createWriteStreamwithopenSyncfd in
spawnDaemon(). Bun does not supportstream.Writableas stdio — only raw
file descriptors,'pipe','ignore', and'inherit'. -
Auto-background
gitd serve: Runninggitd servenow forks a background
daemon and exits immediately (Ollama pattern). Usegitd serve --foreground
to block the terminal for debugging. Status is available viagitd serve status. -
EADDRINUSE handling: When the server port is already in use, show a clear
error message with hints (gitd serve status,gitd serve stop,--port)
instead of a raw stack trace. -
Fast-fail on spawn errors:
spawnDaemonnow detects child process errors
(e.g. ENOENT when gitd binary is missing) immediately instead of polling for
15 seconds before timing out.
-
-
#156
34e42faThanks @LiranCohen! - FixfindGitdBin()dev path heuristicThe function used
lockfilePath()(~/.enbox/daemon.lock) to derive the
source tree location, resolving to~/src/cli/main.ts— completely wrong.Now uses
import.meta.urlto resolve relative to the module file itself,
correctly findingsrc/cli/main.tsin the project tree. -
#157
298e7caThanks @LiranCohen! - Fix GitHub shim author fields to use record author instead of repo ownerAll
userfields in the GitHub shim (issues, comments, PRs, reviews) now
reflect the actual DWN record author (record.author) instead of always
showing the repository owner. Themerged_byfield on pull requests now
reads themergedByDID from the merge result data payload instead of
hardcoding the owner. Theauthor_associationfield is dynamically set
to'OWNER'or'CONTRIBUTOR'based on whether the author matches the
repository owner. -
#162
0cc5f63Thanks @LiranCohen! - Add per-repo mutex to serialize post-push sync operationsConcurrent pushes to the same repository could race on DWN record
updates (ref-sync, bundle-sync) or bundle restores, causing data
corruption. A lightweight promise-chain mutex keyed bydid/repoName
now serializes these operations per repository while allowing different
repos to proceed concurrently. -
#161
c1b863aThanks @LiranCohen! - Harden SSRF protection against DNS rebinding attacksassertNotPrivateUrlnow resolves hostnames via DNS (A + AAAA) and
checks the resulting IP addresses against private ranges. Previously,
only the hostname string was checked, allowing DNS names that resolve to
127.0.0.1to bypass the filter.Also blocks IPv6-mapped IPv4 addresses (
::ffff:127.0.0.1) and the
unspecified address (::). -
#153
ee6b661Thanks @LiranCohen! - Prompt for vault password on /dev/tty in git helpers when GITD_PASSWORD is not setBoth
git-remote-didandgit-remote-did-credentialnow open/dev/ttydirectly
to prompt for the vault password whenGITD_PASSWORDis not set in the environment.
This is the same technique used byssh,gpg, andsudoto prompt the user when
stdin/stdout are claimed by a parent process (in this case, git).Previously,
git pushwould silently fail ifGITD_PASSWORDwas not pre-set because
the credential helper had no way to obtain the password and the remote helper could not
auto-start the daemon. Now the user sees a "Vault password:" prompt and everything
just works.