Skip to content

Sync/upstream main 20260615b#340

Closed
Rassl wants to merge 43 commits into
stakwork:mainfrom
Rassl:sync/upstream-main-20260615b
Closed

Sync/upstream main 20260615b#340
Rassl wants to merge 43 commits into
stakwork:mainfrom
Rassl:sync/upstream-main-20260615b

Conversation

@Rassl

@Rassl Rassl commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

No description provided.

Rassl and others added 30 commits May 18, 2026 17:30
Add case-group, group-layout, group-morph, card-style, and
board-scroll-lock modules; wire grouping into the case-board
animator and graph-canvas.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
# Conflicts:
#	src/components/universe/graph-canvas.tsx
feat: allow attach images for non admins
# Conflicts:
#	src/components/universe/graph-canvas.tsx
Rassl and others added 13 commits June 9, 2026 03:51
feat: metro stations view enhancment
Syncs the fork with stakwork/graphmindset main (28 commits), bringing in
the reposition-on-load camera fix the fork was missing, plus render-images,
the withdraw flow, swapped add-data modals, review action types, etc.

Camera fix (the reported bug): the fork rebuilt the entire graph and
rescaled on every related-data load, reshuffling all node positions under
the camera. Adopted upstream's incremental model in graph-transform.ts +
graph-canvas.tsx:
  - baseModel rebuilds only on dataVersion/schema change, never on appends
  - appendToGraph folds fetched nodes in without reshuffling existing ones
  - recomputeDescendantLayout re-lays-out only the selected subtree
  - layoutGeneration tells GraphView to snap on rebuild, animate on append
Kept the fork's metro-aware apiToGraph/applyLayout (fixedRefIds, LORE_Y_LIFT,
force-grouped types) and adopted upstream's count-based crowd-grouping rule.

Conflict resolutions:
  - GraphView.tsx: took upstream's perf/cross-edge/layoutGeneration rewrite,
    kept fork's mutedNodeIds/suppressLabelIds + label-size tuning
  - graph-canvas.tsx: merged fork's metro/case-board/station-hud/attachables
    with upstream's append/recompute data layer; added render-images imageUrl
  - modals: adopted upstream's add-modal/add-node-form/add-edge-form/
    add-source-form architecture (deleted add-node-modal.tsx), re-applied the
    fork's sats->bullets rebrand to the new forms + budget withdraw strings
  - tests: repointed cluster-merge import to graph-transform; rebranded
    sats->bullets expectations in node-preview-panel/budget-modal tests

Build green, app-code typechecks clean, 728/729 tests pass (the 1 failure,
main-area.test, pre-exists on origin/main).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
recomputeDescendantLayout re-lays-out the selected node's entire directed
subtree and rewrites those nodes' originalPositions to a compact collapse-
toward-selection. That's the intended UX for the pure radial graph, but the
metro view's positions are data-driven (fixed stations + lifted lore), so the
rewrite dragged the schematic into a pile on select and — because it also added
originalPositions entries for fixed stations that applyLayout deliberately omits
— left everything collapsed after deselect.

Gate the recompute on !metroEnabled. Metro fetches now rely on appendToGraph's
placeChildren alone (fans new nodes around their parent), leaving existing and
fixed-position nodes untouched so deselect restores the clean schematic.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…untdown

Syncs 9 new upstream commits (main was 9 behind). Clean auto-merge — no
conflicts, and none of the graph/camera files were touched.

Brought in:
  - feat: image attach (add-node-form, edit-node-modal, graph-api image upload
    + ALLOWED_IMAGE_TYPES / MAX_IMAGE_UPLOAD_BYTES) — separate from the fork's
    attachables (create/edit upload vs. view)
  - BudgetModal: token-backup prompt on first-purchase success
  - formatCountdown: HH:MM:SS for long invoice expiries
  - My Content: filter stale processing items from banner count

Fix carried over from sync: edit-node-modal.test.tsx mocked @/lib/graph-api
without the new image exports (ALLOWED_IMAGE_TYPES etc.) the component now
imports, so the suite failed to collect. This test is broken on upstream/main
too (their image-attach commit didn't update the mock); added the missing
exports to the mock.

Build green, app code typechecks clean, 744/745 tests pass (the 1 failure,
main-area.test, pre-exists on origin/main). No user-facing "sats" strings
leaked in — the fork's bullets rebrand is intact.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Syncs 5 new upstream commits (main was 5 behind). Clean auto-merge, no
conflicts; graph/camera files untouched.

Brought in:
  - feat: dedicated collapsible image section in edit-node modal
  - persist l402 + signature cookies for 30 days (AUTH_COOKIE_DAYS) +
    cookie-storage test, sphinx bridge/payment tweaks
  - node-preview-panel / budget-modal minor updates

Updated two stale upstream tests whose assertions lagged behind upstream's
own deliberate behavior changes (these tests don't even run on upstream/main —
their graph-api mock omits the new image exports, so they fail to collect):
  - edit-node-modal "refreshes node on success": the panel is now refreshed
    with the freshly-rebuilt node (edits applied, name hoisted), not the
    original object reference — assert by ref_id/node_type.
  - node-preview-panel edit button: the modal is now seeded from the panel's
    live current node (one source of truth), not the separately-fetched full
    node — assert on the current node identity, renamed accordingly.

Build green, app code typechecks clean, 751/752 tests pass (the 1 failure,
main-area.test, pre-exists on origin/main). No user-facing "sats" leaked in.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@Rassl Rassl closed this Jun 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant