Skip to content

Release v0.4.0-alpha: promote dev to main - #249

Merged
mvalancy merged 551 commits into
mainfrom
dev
Nov 8, 2026
Merged

mvalancy merged 551 commits into
mainfrom
dev

Conversation

@mvalancy

@mvalancy mvalancy commented Nov 8, 2026

Copy link
Copy Markdown
Member

Promotes dev to main for the first tag-gated release, v0.4.0-alpha. There has been no release since 0.3.1-alpha (Sep 2025).

After this merges and main's push CI passes, including the required production-stack gate, v0.4.0-alpha gets tagged on the main merge commit. .github/workflows/release.yml then verifies the tag before publishing multi-arch images (with SBOM and provenance) and the GitHub release.

Highlights

🤖 Generated with Claude Code

# Conflicts:
#	.agents/issues/INDEX.md
Patch dev SQLite build dependency to Undici 6.29.1
…61027

# Conflicts:
#	.agents/issues/INDEX.md
#	.agents/issues/security-audit-index.md
…erview-20261027

# Conflicts:
#	.agents/issues/INDEX.md
…0261027

feat: add readable graph overview groups and member navigation
mvalancy and others added 27 commits November 7, 2026 11:43
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With /config now reaching the API through the web proxy, the production login
form shows the server CAPTCHA, as designed. The shared form-login helper typed
credentials but never completed it, so Sign In stayed disabled and every strict
production smoke case failed at login. Wait for the verification policy to load
and complete the widget like a user (the same helper the signup journeys use)
whenever the page shows one; stacks that don't require it are unaffected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix: settle zoom-to-fit focus, agent setup/approval layout, offline locator, sucrase audit (v0.4.0-alpha blockers)
docs: remove one-off VM Tailscale troubleshooting note (dev)
chore: clean and map the repo root (fold tools/public/archive, root allowlist check)
The LOD reuse notes linked a private repository's source, issues and commit,
and two docs and an opt-in script named the maintainers' private LLM gateway and
a live graph. Keep the technique notes, describe CodeGraph without linking it,
make the gateway smoke script take LLM_BASE_URL/LLM_API_KEY/LLM_MODEL like the
triage module it drives, and add a toolchain contract (run in CI) that rejects
private Valpatel repository paths, personal home directories and 100.64.0.0/10
addresses in tracked files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflicts: dev's dd87b87 moved camera fitting into lib/graphFit
(computeGraphFit, measuring cards at the fitted scale). Resolved by
fitting through computeGraphFit and keeping this branch's organization
floor (stay centred at the readable minimum scale) and component focus
framing, measured with getNodeDimensionsAt at the final scale. Quick-edit
focus return keeps the local-item trigger first, then dev's
focusNodeControl. INDEX.md keeps both lesson rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove private repository and gateway references; guard public content
scripts/install.sh pinned fix/first-start, which no longer exists, for the
fresh clone and the setup-script fallback URLs, so every one-line install
failed at git clone (#243).

- One ref drives the clone, the update of ~/graphdone and the
  raw.githubusercontent setup-script fallbacks: GRAPHDONE_REF, default main
  (the branch the installer is served from). Option-like or unsafe values are
  rejected.
- Updating an installer-managed checkout fetches GRAPHDONE_REF and checks it
  out instead of pulling the current branch, so installs stranded on
  fix/first-start move to main. A developer checkout keeps its branch.
- Clone and update failures now print their log instead of exiting silently
  under set -e at `wait`.
- `sh install.sh sources` prints the repository, ref and setup-script URLs.
- Web image pre-pull and the registry compose use :latest instead of
  :fix-first-start (same lines as #241).

Tests:
- tests/toolchain/installer-contract.mjs: every git ref and raw URL in the
  installer is GRAPHDONE_REF (default main), no hard-coded branch names,
  ghcr.io/graphdone image tags are latest or versions, setup scripts exist,
  documented install URLs use main. Includes a self-test that the old pin
  is rejected.
- tests/integration/installer-container.sh: runs the installer in a
  node:22.18.0-trixie-slim container (GRAPHDONE_INSTALL_STOP_AFTER=clone):
  fresh clone lands on the remote commit for the ref, re-run updates, a
  checkout stranded on fix/first-start moves to the ref, and every
  setup-script URL returns HTTP 200. About a minute.
- Both run in the required "Installer & Deploy Config" job, which now also
  validates the registry compose file.

Closes #243

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…prop

Hosted semantic-lod failed at 390px after reload with every local card
at x=3844 (also seen once on an earlier head). Reproduced 4/4 locally
with 4x CPU throttling: the layer activated at the initial identity
camera, the saved camera was restored and its settled event correctly
rebased the layer, but a deferred two-frame rebase then fired before
React re-rendered the layer with the restored camera prop and reset the
origin to the stale identity camera. Cards stayed shifted by the whole
restore (3489, 3636 px).

The layer's latest-camera ref now takes the settled camera directly and
only follows the prop when the prop itself changes, so a deferred rebase
cannot read the pre-restore camera. Throttled 390px journey passes 3/3;
the new unit test fails on the previous code (translate -356, -110).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI lint (no-undef) rejected FrameRequestCallback in the new
LocalItemNeighborhood regression. Repo-wide `npm run lint` now reports
0 errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Real tag-gated releases, promotion gates on dev, no fake deploys
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Installer installs main (or GRAPHDONE_REF), never a deleted branch
…lving the lockfile

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
update-version-minimal.sh missed the workspace manifests (which the release gate
requires to equal the tag), the server start-up log, a second MCP contract test,
the web .env example and the installer fallback, and only matched -alpha
versions. It now edits manifests and their lockfile entries in place (npm
version re-resolved the lockfile and dropped dev flags) and replaces every other
recorded copy exactly; tests/toolchain/version-contract.mjs lists them all and
fails CI if one is stale.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Set by scripts/update-version-minimal.sh 0.4.0-alpha: all manifests and their
lockfile entries (version fields only), the web/MCP/server runtime versions,
local image tags, installer fallback and README badge. Drop hard-coded version
prose from the report footer and CLAUDE.md overview.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…61028

Keep dense graph neighborhoods readable and organize connected items
@github-actions

github-actions Bot commented Nov 8, 2026

Copy link
Copy Markdown

🧪 Comprehensive Test Suite

  • Unit suites (Node 22.18.0 & 24.x) — core, web, server, mcp-server: ✅ passed
  • Installer & deploy config: ✅ passed

Full-stack smoke gate runs in the CI workflow.

@mvalancy

mvalancy commented Nov 8, 2026

Copy link
Copy Markdown
Member Author

Maintainer verification of dcde00af (owner-delegated merge approval)

@mvalancy
mvalancy merged commit 9ec9efc into main Nov 8, 2026
41 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant