Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/generated/changelog.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
[
{
"tag": "v0.0.58",
"publishedAt": "2026-11-02T18:34:06Z",
"url": "https://github.com/withmarfa/marfa/releases/tag/v0.0.58",
"body": "A working copy now refuses duplicate and cardinality-breaking edges before it queues them, and can check an edge move in advance.\n\n### Core\n- **Added:** A working copy refuses an edge write that the server would refuse as a duplicate or because an end already holds its one edge, so you learn of it at once instead of when the write is sent. [Docs](https://docs.marfa.so/build/write-in-a-working-copy)\n- **Added:** You can check whether moving an edge's end would be refused, without queuing anything, to disable a drop target before the person tries it. The Swift and Node bindings gain `checkEdgeMove`.\n- **Changed:** An edge refusal from a working copy now carries the same `details` the server gives for the same write, so an app can tell a duplicate (`details.constraint` is `duplicate`) from a full end (`cardinality`). The Swift `MarfaError.validation` case gains a `details` value, and the thrown Node error gains a `details` property. [Docs](https://docs.marfa.so/api-reference/errors)\n\n### CLI\n- **Added:** `marfa device edges check-move <ID> (--source <ID> | --target <ID>)` answers what the matching edge move would, and queues nothing.\n- **Changed:** The error output carries the refusal's details in `error.server.details`.\n\n**Full changelog:** https://github.com/withmarfa/marfa/compare/v0.0.57...v0.0.58"
},
{
"tag": "v0.0.57",
"publishedAt": "2026-11-02T17:50:45Z",
Expand Down
Loading