0.3.0
Changes in 0.3.0
Python library
Storenow accepts any root state value, exposes it through the typed
stateproperty, and supports root reads/writes with the empty path.Store.get()now defaults to the root state value when no path is passed.- Removed the built-in
Service.get()query andService.set()action.
Store reads and writes now use dedicatedget/setprotocol messages, while
service actions and queries are reserved for domain methods. Serviceis now generic over the root state type, soservice.store
preserves theStore[T]type.- Added notebook-friendly
Store.__getitem__()andStore.__setitem__()
aliases:store["items[0].label"]uses RemoteState string path syntax.store["items", 0, "label"]uses tuple path segments.store[()]addresses the root state value.
- Added notebook-friendly
store.atsugar for nested store paths:store.at.items[0].label = "x"writes throughStore.set().- evaluating
store.at.items[0].labelin notebooks renders the current
stored value instead of the path accessor object.
- Relaxed the path grammar so the empty string addresses the root value and
paths may start with a bracketed array index or string key, such as
[0].labelor["display name"].value. - Updated JSONPath conversion helpers so
""maps to$and[0]maps to
$[0]. - Added public
PathInputandPathSegmentInputaliases plus
normalize_path()andnormalize_path_segment()helpers under
remotestate.path. - Removed the Python-only
PropertyandIndexparsed path segment classes.
Parsed paths now use primitive tuple segments, such as("items", 0, "label"), matching the TypeScript path model. - Aligned
PathInputwith TypeScript: pass a string path or a sequence of
path segments. Root array entries can be addressed as"[0]"or(0,). - Changed the WebSocket protocol to carry normalized path arrays instead of
path strings. Store update results now use[{path, value}]entries instead
of path-to-value objects.
TypeScript library
- Relaxed the shared path grammar so the empty string addresses the root value
and paths may start with a bracketed array index or string key, such as
[0].labelor["display name"].value. - Changed
Pathfrom a non-empty tuple type to a general segment array so
[]represents the root state value. - Removed the redundant
RelativePathexport;Pathis now the single parsed
segment-array type. Store.get()anduseRemoteStateValue()now default to the root state value
when no path is passed.Store.set()now uses a dedicated storesetprotocol message and receives
set_resultupdates instead of dispatching a service action namedset.- Updated the transport-backed store cache so root subscriptions overlap all
descendant updates, root updates materialize cached descendants, and leaf
updates can patch cached root snapshots. - Renamed the public path input alias from
PathLiketoPathInput, and added
PathSegmentInputfor raw segment values.
Full Changelog: v0.2.0...v0.3.0