woodglue.apps.rpc.RpcError(code, message, data=None): nodes can report an
application JSON-RPC error by raising it or a subclass, which may set code at
class level. The response carries the code, the message and, when not None,
data, and the error is logged at WARNING without a traceback. Any other
exception still returns an opaque -32603 "Internal error".
WoodglueRpcError (the error woodglue.client raises) now carries data.
wgl token prints the auth token, creating it if needed. wgl token --new
rotates it, replacing all tokens with a single new one.
woodglue.log_setup: woodglue now sets up logging for wgl start itself
instead of calling lythonic's LogConfig.
Under systemd (JOURNAL_STREAM is set): logs go to stderr with
journald priority prefixes, and no wgl.log is written by default.
File logs now rotate (storage.log_max_bytes, storage.log_backup_count).
storage.log_file: null turns the file log off.
A top-level logging: section in woodglue.yaml is passed to
logging.config.dictConfig and replaces all of the above.
current_mount exposes the instance data dir as MountContext.data_dir.
The mount is active while a namespace is built, during scheduled trigger
runs, during system trigger calls and during wgl run, not only during RPC
calls.
Breaking: system API caller mistakes (unknown namespace, no engine,
unknown method) now return -32602 with a message naming the culprit,
instead of -32603. In Python they raise RpcError instead of ValueError.
Breaking:wgl start no longer prints the auth token. Use wgl token.
Breaking: the default log level is now INFO, not DEBUG. An unknown level
name stops wgl start instead of silently falling back to DEBUG.
Breaking:woodglue.engine.activate_triggers returns
TriggerActivationResult(activated, left_disabled) instead of list[str].
Breaking:MountContext(prefix, data_dir) replaces (prefix, mounts_dir),
create_engine(mount, namespace) replaces (prefix, namespace), and
NamespaceEngine gains a required mount field.
wgl start handles SIGTERM and SIGINT: it stops accepting connections and
stops the engines, waiting for their poll tasks, before exiting, and removes
wgl.pid.
Triggers disabled through the deactivate_trigger system API stay disabled
across restarts, keeping their last_run_at, until they are reactivated.
wgl start reports each trigger it leaves disabled.
Getting started: new section on getting the auth token. The curl example
now sends the Authorization: Bearer header, which it was missing although
auth is on by default.
Added a reference page for woodglue.log_setup.
/do_release now runs unattended after you confirm the version. It creates
the GitHub release itself and checks the PyPI publish.