Skip to content
QueryWeave

Roadmap

Everything documented on this site, and nothing else:

Capability Where
Query input and duplicate keys Codecs
Codecs, both directions Codecs
Nine parameter families, calendar dates and instants included Parameters
Query models and composition Query models
Decode results and issues Issues
Canonical encoding and omission Defaults and absence
Runtime transitions Transitions
Memory adapter Testing
Browser adapter Browser
Server and Node helpers Server, Node.js
Standard Schema validation Validation
Vue, Vue Router, Nuxt Frameworks
Package stabilization Architecture
Transition outcomes, serialized transitions, pending decodes Transitions
Support matrix and stability policy Support and stability
Throttled writes and cancellation Transitions

These are not oversights. Each is an open decision recorded in an ADR, and shipping a guess would be worse than shipping nothing.

Tuples, objects, and JSON Status: planned

Section titled “Tuples, objects, and JSON planned”

Calendar dates and instants have shipped as param.date and param.datetime. There are no dedicated families yet for tuples, objects, nested structures, or JSON.

What to do today: param.custom with your own codec. See Codecs.

What is already settled: how each will be written in a URL, so a codec you write today can use the same spelling and switch to the built-in family later. ADR 0011 fixes them: a tuple as repeated values of its key (?range=10&range=50), an object as one key per field joined with a dot (?price.min=10&price.max=50), and JSON with sorted keys as an escape hatch for shapes the others cannot express.

Per-parameter omission and recovery policy Status: planned

Section titled “Per-parameter omission and recovery policy planned”

Default omission is global: a value equal to its default is always omitted. Recovery is decided by presence and cannot be overridden per parameter.

Model refinements that change the output type Status: planned

Section titled “Model refinements that change the output type planned”

Per-parameter .refine() can transform a value’s type today. Model-level refine is typed to return the same values it received.

Server response contribution Status: planned

Section titled “Server response contribution planned”

QueryWeave decodes a request but contributes nothing to the response — no canonical-URL redirect, no headers.

What to do today: compare encodeQuery(model, values) with the incoming query and redirect yourself. See Server parsing.

In order:

  1. Codec composition — tuples and JSON, then objects and nesting, as ADR 0011 lays out. Dates have shipped.
  2. API stabilization — freezing the public contracts for 1.0.
  3. Additional framework adapters — designed against the established core contracts.

Before 1.0, breaking changes ship in minor versions. Each one requires an architecture decision record explaining the reasoning and a changeset describing the migration, and both are summarized in Upgrading. Nothing breaks silently, and nothing breaks in a patch. The stability policy says which behaviors count as public.

Every package shares one version through a fixed version group, so the matrix of compatible versions stays trivial.