Skip to content

🚀 Release 2026-03-26#226

Merged
tnkshuuhei merged 6 commits intomainfrom
dev
Mar 26, 2026
Merged

🚀 Release 2026-03-26#226
tnkshuuhei merged 6 commits intomainfrom
dev

Conversation

@github-actions
Copy link

@github-actions github-actions bot commented Mar 26, 2026

🚀 Release 2026-03-26

Changes


🤖 Automatically generated by GitHub Actions

tnkshuuhei and others added 5 commits March 26, 2026 15:36
…ge read

Move loadCanvasState() from useMemo (runs during SSR/hydration) to useEffect
(runs after mount) so server and client initial renders produce identical HTML.
cardsToNodes() did not include metrics in node data, causing metric
badges to disappear after reload or when viewing IPFS-saved canvases.
Merge cardMetrics into node data during initialization and hydration.
fix(canvas): restore metrics on page reload and IPFS view
@vercel
Copy link

vercel bot commented Mar 26, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
muse Ready Ready Preview, Comment Mar 26, 2026 7:31am

git log --pretty=format: does not append a trailing newline.
When the output is a single line, `while read` sees EOF without
a newline and skips the loop body entirely, silently dropping
the entry (e.g. PR #224 was missing from the release summary).

Switching to tformat: adds a terminating newline after each entry.
@claude
Copy link

claude bot commented Mar 26, 2026

PR Review: Release 2026-03-26

This release bundles two targeted bug fixes. Overall the changes are clean and well-reasoned.

fix(ci): format: to tformat: in create-release-pr.yml — Correct fix. git log --pretty=format: uses a separator style - no trailing newline after the last line - so while read -r silently drops the final entry (POSIX read returns non-zero on EOF without newline). Switching to tformat: adds the trailing newline, ensuring every line is consumed. Classic shell pitfall; good catch.

chore(ci): Fetch main branch before computing main..dev — Correct fix. The workflow checks out dev with full history but main as a local ref was not guaranteed to exist, making git log main..dev unreliable. Explicit git fetch origin main:main makes the ref available before it is used.

fix(canvas): Defer localStorage hydration to useEffect in CanvasContext.tsx — Sound approach. Reading localStorage synchronously during render causes SSR/client hydration mismatches in Next.js. Moving the read into a post-mount useEffect with a hasHydrated guard is the standard pattern for this problem.

One observation - setCardMetrics missing from useEffect deps: setCardMetrics is a stable useState setter so this will not cause a runtime bug, but it is inconsistent with how setNodes/setEdges are listed. Adding it keeps the deps array accurate and prevents a potential exhaustive-deps lint warning: [disableLocalStorage, setNodes, setEdges, setCardMetrics]

Minor UX note: Users will see a brief flash of server-rendered initial state before localStorage is applied. This is an inherent trade-off of deferred hydration and is acceptable here - the alternative (hydration mismatch errors) is worse.

Metrics mapping is consistent between initial state and the hydration path - both apply metrics: cardMetrics[node.id] (potentially undefined for nodes without metrics, which is fine).

Summary: CI tformat fix - correct, well-targeted. CI main branch fetch - correct, necessary. Canvas SSR hydration fix - correct approach, minor deps array nit. Security concerns - none. Test coverage - no automated tests; manual test plan in referenced PR is thorough.

The missing setCardMetrics in the deps array is the only actionable nit - everything else looks good to merge.

@tnkshuuhei tnkshuuhei merged commit e051b18 into main Mar 26, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant