Skip to content

@onlyworlds/sdk 4.37.0

Choose a tag to compare

@tmoosting tmoosting released this 20 Oct 14:26
· 15 commits to main since this release

The hidden mark (keel #421), live in production since 2026-10-20 09:24; walked on staging with the mark on, 25 of 25.

Added

  • A /changes delete row's reason (OwDeleteReason: deleted | hidden | out_of_view; keel #421's hidden
    mark): an element hidden from this reader leaves its copy as a deleted one does, and a GET of it answers 404,
    not 410. isResyncRequired's comment names every case keel now sends it for, not only a guest's.
  • viewAs on get, list and listAll, sent as as (keel #421 PR 3, view as): the owner's key reads as a
    member (a membership id), as a Character's guest (a Character id) or as the public ('public'). A member key
    gets 403 view_as_owner_only (err.isViewAsOwnerOnly); an element hidden from that reader is 404, never 410;
    an unknown value is 422. Until keel's hidden mark is on, keel answers 422 (an unknown parameter).
  • err.resyncReason ('role' | 'view' | undefined) and OwResyncReason: why /changes answered 409
    resync_required, from the envelope's reason (keel #421, keel PR 103; only while keel's hidden mark is on).
    epoch_reason beside epoch on OwChangesPage and on changesHead()'s answer: why the epoch last moved.

Changed

  • The resync instruction adds the hidden mark's reasons to 4.36.1's keep (the Captain, 2026-10-20): after a
    409 resync_required, walk again from the start; reason role (the key's own role or membership moved):
    keep what the local copy holds that the walk no longer names; reason view, or a delete row with reason
    hidden: drop it; no reason (keel's hidden mark off): keep it, a reset never empties a copy. A tool never
    empties a copy on its own. isResyncRequired's comment and the changes,
    changesHead and OwChangesPage comments say so.