Skip to content

v0.0.4

New

  • Bearer token authentication: token store (woodglue.auth_store), auth middleware for RPC and doc endpoints, UI token input with cookie storage, client auto-discovery (woodglue.apps.auth)
  • Async WoodglueClient with typed RPC calls and token support (woodglue.client)
  • System namespace (woodglue.apps.system_api): 12 API methods for introspection (list namespaces, describe methods, inspect args), engine management (recent/active/child runs, load I/O), and trigger control (list/fire/activate/deactivate)
  • Per-namespace config: run_engine and expose_api flags per namespace entry; namespace definitions via gref, file, or inline entries (woodglue.config)
  • Mount state directories: MountContext manages per-namespace state dirs under data/mounts/{prefix}/ (woodglue.mount)
  • Engine registry: EngineRegistry for lookup by prefix, wired into system API facade (woodglue.engine)
  • Lythonic mount integration: delegates persistence setup to Namespace.mount(storage) — cache wrapping, DAG provenance, and logging handled declaratively; LogConfig.setup_logging() replaces hand-rolled file logging
  • UI node I/O inspection: "Load I/O" button in node detail panel fetches input/output JSON for completed DAG runs
  • API tag filtering: filter methods by api tags across RPC, OpenAPI, and llms.txt surfaces; x-global-ref in OpenAPI spec
  • Documentation site: MkDocs with Material theme, API reference via mkdocstrings, GitHub Actions deployment to GitHub Pages

Changed

  • Flat CLI via WoodglueMain with host/port config and CLI overrides (woodglue.cli)
  • Config models rewritten: WoodglueStorageConfig extends lythonic's StorageConfig, adds auth_db (woodglue.config)
  • NamespaceEngine slimmed: no longer owns DagProvenance — reads from mounted namespace
  • create_engine() takes only (prefix, namespace) — mount must happen first
  • load_namespaces uses Namespace.from_dict() for discriminated config deserialization
  • auth.py renamed to crypto.py

Fixes

  • Consistent nsref derivation from gref, using / instead of : in doc URLs
  • open_sqlite_db used in production (was using raw sqlite3.connect)
  • contextlib.closing for SQLite connections on Windows to avoid TemporaryDirectory cleanup failures
  • Build fixed after package rename
  • Upgrade lythonic dependency from v0.0.11 to v0.0.13+

Documentation

  • Testing strategy adapted for woodglue (testing.md)
  • Design specs and implementation plans for all major features in docs/superpowers/