NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1886 most downloaded on pub.dev
Dotprompt for Dart: parse and render .prompt files (YAML frontmatter + Handlebars templates) for Generative AI.
Last release 3 days ago
04 Oct 2026
Ships fairly regularly
a new release about every 3 months
Most releases are documented
notes for 3 of 4 stable releases
Nothing withdrawn
no release was ever pulled
5 months old
5 releases · first in 2026
One column per month.
Picoschema now follows the spec and behaves like the other runtimes. Schemas that relied on the old Dart-only syntax, or on unknown names becoming $re
Picoschema now follows the spec and behaves like the other runtimes. Schemas
that relied on the old Dart-only syntax, or on unknown names becoming $ref,
need updating.
Picoschema is strict. These now throw PicoschemaException:
| Before (1.x) | Now |
|---|---|
email(the email): string |
email: string, the email |
tags: string[] |
tags(array): string |
status: a | b |
status(enum): [a, b] |
wild(*): string |
(*): string |
n: int (also str, bool, ...) |
n: integer |
a and a? in the same object |
pick one |
Unknown named schemas throw instead of becoming {"$ref": name}. Names are
looked up in schemas/defineSchema, then DotpromptOptions.schemaResolver
(Dotprompt and Picoschema.parse only; toJsonSchema is sync and only
sees schemas). Register schemas before converting prompts that use them.
The input: Name / output: Name shorthand is parsed as
{"$type": Name} (same as schema: Name) instead of {"$ref": Name}, so
renderMetadata resolves it.
Picoschema.toJsonSchema's schemas parameter is now
Map<String, Map<String, dynamic>>? (was Map<String, dynamic>?).
Picoschema.isPicoschema returns true for anything that is not JSON Schema
(it used to require a bare scalar value). JSON Schema is detected as in the
other runtimes: a top-level type naming a JSON Schema type or a
properties map, plus list-valued type/anyOf/oneOf/allOf/enum,
$schema and $ref. Calling it before toJsonSchema is no longer needed.
DotpromptOptions.schemas and defineSchema take JSON Schema (as in the
other runtimes), not Picoschema. Registered schemas are inserted as-is;
convert Picoschema with Picoschema.toJsonSchema first.
field(array[, desc]): type, field(object[, desc]): and
field(enum[, desc]): [...] produce arrays, objects and enums. Previously
the parenthesized qualifier was treated as a description.(*) wildcards and every Picoschema form are always converted. Previously
some schemas skipped conversion and were passed through raw.type: string, a bare properties map, anyOf,
enum, type: [string, "null"], etc.) is passed through instead of being
parsed as Picoschema.$type field next to other fields is parsed
as a Picoschema object instead of being collapsed to the $type value.x?: null produces {type: null} instead of {type: [null, null]}.a ?: string produces a property named a, not a .DotpromptOptions.schemaResolver as well as
schemas/defineSchema.input: Name / output: Name shorthand resolves the named schema.
Previously it became a raw {"$ref": name}.output and named schemas, so
spec/picoschema.yaml is actually enforced.Picoschema.parse(schema, {schemas, schemaResolver}), an async variant of
toJsonSchema that resolves named schemas through a SchemaResolver.Nothing published for this version
Nothing published for this version
renderMetadata and compile now accept an optional additionalMetadata argument that is merged on top of the prompt's parsed frontmatter (scalar fields
renderMetadata and compile now accept an optional additionalMetadata
argument that is merged on top of the prompt's parsed frontmatter (scalar
fields override, config map is shallow-merged with additional winning on
conflict), matching the JavaScript reference implementation.Initial release of Dotprompt for Dart
Parser classhandlebars_dart libraryMessage, Part, Role, DataArgumentrole, media, history, json, section, ifEquals, unlessEqualsYour coding agent can read these notes before it upgrades. Set up the MCP server →