Skip to content

Releases: jlevy/markform

v0.1.29

Choose a tag to compare

@github-actions github-actions released this 24 Feb 10:20
c24aa09

What's Changed

Fixes

  • Parallel execution callback: onPatchesGenerated now fires correctly in parallel execution mode, enabling token composition tracking and other observability features for all execution paths (#167)

Refactoring

  • Explicit maxRetries API: maxRetries is now a required field on FillOptions and LiveAgentConfig, eliminating hidden defaults; added CLI_DEFAULT_MAX_RETRIES constant and --max-retries flag to fill and research CLI commands (#165)

Full commit history: v0.1.28...v0.1.29

v0.1.28

Choose a tag to compare

@github-actions github-actions released this 22 Feb 03:04
649bb31

What's Changed

Features

  • Fill observability and signal propagation: Added comprehensive observability for fillForm() operations with signal propagation to generateText() for proper cancellation, extended onLlmCallEnd callbacks with duration and provider metadata, LLM call details in timeline entries, structured error classification (errorType/errorCode), and raw event logs for debugging (#158)
  • FillRecord source-of-truth enrichment: Transform FillRecord into comprehensive source of record with provenance tracking (markform version, input hash, schema version), effective config snapshot, per-turn enrichment (form progress, rejection details, issue refs), and opt-in raw patches via --record-patches flag (#161)
  • External retry control: Expose maxRetries in FillOptions to allow production harnesses to disable hidden AI SDK retries and manage retries externally with full observability (#162)
  • Table row validation improvements: Drop fully-empty table rows during normalization, warn on sparse rows (>50% empty cells), strengthen minRows validation, and add defensive handling of unknown cell states (#161, #163)

Fixes

  • Fixed signal propagation bug where FillOptions.signal wasn't reaching generateText(), preventing cancellation of in-flight LLM calls (#158)
  • Fixed onLlmCallEnd callback to fire on failure (timeout, rate limit, network error), not just success, eliminating orphaned pending call entries (#158)
  • Fixed isRowFullyEmpty() to defensively treat unknown/malformed cell states as NOT empty, avoiding accidental data loss (#163)
  • Fixed aborted table row handling to preserve aborted cells since they carry intentional agent signal (#161)

Refactoring

  • Extracted shared isCellEmpty() helper to eliminate duplication between row normalization and validation (#163)

Full commit history: v0.1.27...v0.1.28

v0.1.27

Choose a tag to compare

@github-actions github-actions released this 20 Feb 06:51
09462ed

What's Changed

Features

  • Fill harness observability: Complete observability and signal propagation for the fill harness (MF-1 through MF-5), including event callbacks, raw event logging, and structured observability hooks

Fixes

  • Fixed onLlmCallEnd not firing on generateText() failure — now reports error and duration
  • Fixed italic formatting on report sentinel values (empty/skipped/aborted)
  • Fixed JSON serialization of eventLog tool input/output

Documentation

  • Added observability documentation for fill harness covering MF-1 through MF-5

Full commit history: v0.1.26...v0.1.27

v0.1.26

Choose a tag to compare

@github-actions github-actions released this 17 Feb 01:36
06633d4

What's Changed

Fixes

  • Tool error handling: Fixed wrapTool() to re-throw errors with guaranteed non-empty messages instead of swallowing them, preserving AI SDK's proper is_error semantics and telemetry (#153)
  • Parallel fill path: fillFormParallel now correctly receives and passes providerTools to sub-agents, matching the serial path behavior (#154)

Documentation

  • Updated plan spec to reflect revised error handling approach

Full commit history: v0.1.25...v0.1.26

v0.1.25

Choose a tag to compare

@github-actions github-actions released this 16 Feb 00:52
aca82ef

What’s Changed

Features

  • Per-column constraints for table fields: Table columns now support type-specific
    constraints (minLength, maxLength, pattern, enum for strings; min, max,
    integer for numbers; min/max for dates and years).
    Specified via columnTypes attributes, enforced during validation, preserved through
    round-trips, and mapped to JSON Schema.
  • FillRecord performance metrics: FillRecord now includes llmParallelism,
    llmTimeMs/totalMs timing breakdown, and avgDurationMs per tool.
    Text summaries show s/turn and s/field rates.
    HTML dashboard gains a parallelism card and duration rates.
  • onError callback and error preservation: New onError callback in
    FillCallbacks for real-time error reporting with turn context.
    FillStatus now preserves the full Error object (cause chain, statusCode, etc.)
    as a discriminated union.
  • Agent-friendly examples --list: markform examples --list now supports
    --format=json. Examples reordered by complexity with twitter-thread registered.

Fixes

  • Serve UI: Tabs reorganized (Form, Report, Source, ...) with hash-based routing for
    direct linking
  • set command: Now surfaces validation warnings for patched fields
  • Parse/serialize: Fixed instruction line-break loss during round-trip; explicit
    checkboxes render as Yes/No in reports
  • CLI logging: All diagnostic log functions now write to stderr for pipeline
    compatibility

Documentation

  • Per-column constraints documented in spec and reference
  • QA and manual tests consolidated into tests/qa/

Full commit history: v0.1.24...v0.1.25

v0.1.24

Choose a tag to compare

@github-actions github-actions released this 14 Feb 21:27
e2f9e3a

What's Changed

Features

  • CLI form-filling commands: New set command with auto-coercion and next command for field advisor, plus rename of apply to patch
  • Append/delete patch operations: Support for append and delete ops on tables, string_list, and url_list fields
  • Claude Code skill integration: New skill and setup commands for Claude Code agent integration
  • Fill record improvements: Empty fill record guard skips .fill.json when no turns executed; coercion warnings plumbed through to fill record timeline
  • Configurable agent retries: Added maxRetries option for live agent API calls
  • Enriched AI SDK inspect: markform_inspect now includes field advisor data

Fixes

  • Fixed CLI form-filling review findings across multiple commands
  • Fixed helpWidth to 88 for consistent CLI output
  • Updated tryscript golden files for new setup/skill commands

Refactoring

  • Extracted shared resolvePackagePath utility for bundled doc loading

Tests

  • Added tryscript tests for CLI set command error paths
  • Added unit tests for serialize.ts edge cases and apply.ts error branches
  • Added golden session test for multi-turn CLI form filling
  • Raised coverage thresholds to lock in test improvements

Full commit history: v0.1.23...v0.1.24

v0.1.23

Choose a tag to compare

@github-actions github-actions released this 13 Feb 09:07
3f20257

What's Changed

Features

  • Extensible provider support: New ProviderAdapter interface allows custom AI SDK providers beyond the 5 built-in ones. Pass custom providers via FillOptions.providers for per-call resolution with full tool support.
  • Pure model ID parsing: parseModelId() is now a pure format parser; any provider/model-id string parses successfully. Provider validation moves to resolveModel().
  • Provider utilities: New normalizeProvider(), extractToolsFromProvider(), and BUILT_IN_PROVIDERS exports for working with custom and built-in providers.

Fixes

  • Fixed skip reason displaying in badge pill instead of only in field content

Full commit history: v0.1.22...v0.1.23

v0.1.22

Choose a tag to compare

@github-actions github-actions released this 10 Feb 23:01
74db4bb

What's Changed

Features

  • Render subpath export: New markform/render subpath exports rendering functions (renderViewContent, renderSourceContent, renderFillRecordContent, etc.) so external consumers can render forms with visual parity to markform serve without CLI/server dependencies
  • Twitter thread example: New content transformation example form for Twitter thread workflows

Fixes

  • Skip reason display: Skip reasons from agents (e.g., "Not applicable") now display correctly in View, Edit, and Report tabs of the serve UI
  • URL preservation in tables: Fixed URL validation in table cells that incorrectly checked link display text instead of the actual URL, causing valid URLs to be rejected
  • API error messages: Improved error context for model API failures with HTTP status codes, response bodies, and actionable troubleshooting hints

Refactoring

  • Extracted ~1600 lines of rendering code from serve.ts into dedicated src/render/ module

Full commit history: v0.1.21...v0.1.22

v0.1.21

Choose a tag to compare

@github-actions github-actions released this 03 Feb 00:47
2325d1e

What's Changed

Features

  • Frontmatter validation: Added MarkformSectionInputSchema with Zod validation for more reliable frontmatter parsing
  • Timing metrics: Added startMs to timeline entries and tool calls for relative timing analysis in FillRecords

Fixes

  • Reliable tool calling: Default toolChoice to 'required' for consistent agent behavior
  • Parallel execution tracking: Fixed executionId passing and per-execution turn tracking for correct tool call matching
  • Frontmatter round-trips: Preserve title/description fields when serializing forms
  • Concurrency handling: Corrected parallel execution concurrency and FillRecord tracking

Refactoring

  • YAML formatting: Centralized stringify options and improved output readability
  • HTML comment syntax: Migrated all forms to HTML comment syntax for field attributes
  • Config handling: Centralized harness config snake_case/camelCase mapping
  • Execution IDs: Self-documenting format with eid: prefix

Testing

  • Comprehensive frontmatter unit tests
  • Parallel execution integration and tracking tests
  • Updated test expectations for HTML comment syntax

Documentation

  • Clarified .env file loading behavior
  • Updated manual test docs and gitignore patterns

Full commit history: v0.1.20...v0.1.21

v0.1.20

Choose a tag to compare

@github-actions github-actions released this 01 Feb 08:47
3aefbd9

What's Changed

Features

  • FillRecord visualization: New interactive Gantt chart display with timeline view
  • Tooltips and copy handlers: Hover tooltips show details, click to copy YAML
  • Fill Record tab: New tab in serve command for viewing fill records
  • Enhanced error tracking: Full FillRecord capture for all error paths including pre-fill failures

Fixes

  • Fixed FillRecord capture for all error paths in programmaticFill
  • Pre-fill errors now fail fast without creating incomplete FillRecords
  • Wired up missing CLI callbacks for FillRecord timeline events
  • Fixed frCopyYaml handler placement for Fill Record copy functionality

Refactoring

  • Modernized fill record visualization with CSS custom properties

Full commit history: v0.1.19...v0.1.20