AppSurface Search
Release

Release 0.2.0-preview.13

Coordinated AppSurface release 0.2.0-preview.13, prepared on 2026-10-04 for maintainer review.

Source of truth

View source Edit this page

Last updated

Status

Prepared

This release sidecar is prepared for maintainer review and is not yet tag-backed for AppSurface 0.2.0-preview.13.

Safe To Consume

Scope: Repository-wide. Packages, CLI tooling, examples, and docs-facing behavior ship in one coordinated version.

Freshness: Prepared on 2026-10-04. Treat it as provisional until its verified annotated tag exists.

Record

The matching compact ledger entry lives in CHANGELOG.md.

  • Release artifacts were generated by ./eng/release prepare.
  • Package release note paths are recorded in packages/package-index.yml.
  • Final tagged metadata is derived only from a verified annotated tag.

This is the release note for AppSurface 0.2.0-preview.13 after 0.2.0-preview.11. It stays provisional until the next tag is cut.

This release carries forward the product changes and PostgreSQL migration guidance planned for preview.12, whose publication stopped before packages were pushed. It adds the native Tailwind producer inventory repair and is the next published preview after preview.11 once publication completes.

What is taking shape

Included in the next coordinated version

Immediate feedback for RazorWire forms

  • RazorWire now shows an app-authored status as soon as an enhanced form submission is accepted, including waits for lazy anti-forgery preparation or a slow server. Forms without an applicable status use a compact top bar by default. The form loading guide explains indicator boundaries, styling, opt-outs, duplicate submission protection, and retry behavior after token failure.

Larger published Docs archives

  • The AppSurface Docs archive verifier now accepts --max-rewritten-file-size-bytes so operators can check an exact tree against the same explicit rewrite limit configured on a mounting host. The default remains 4 MiB, and the supported ceiling remains 32 MiB. Hosts mounting the 0.2.0-preview.11 docs archive need a 16 MiB limit for its 8.7 MB search index; the release publication workflow uses that limit while preserving the immutable tagged archive.

Explicit dialog responses for RazorWire

RazorWire applications can return a status or save response in a supplied accessible modal shell, including an app-owned form. Choose OpenDialog* explicitly, overwrite a pending body with ReplaceDialog*, and use CloseDialog() to close after success. The response builder keeps one dialog slot and exposes HasActiveDialog; overwritten content is never rendered.

Start with the dialog response guide and the MVC example. They cover validation focus, response ordering and stale-flow protection, full HTML fallbacks, and application concurrency responsibilities.

DevAuth persona fixture activation

  • Hosts can opt into an awaited, request-scoped DevAuth handler that prepares local fixtures after a valid persona selection queues its protected cookie and before DevAuth redirects or renders the control page. The default remains unchanged without a handler; hosts own readiness, persistence, deadlines, and recovery because cookie delivery and fixture writes are not atomic. See the activation contract and compiled shared-candidate example.

Passive Durable external activation service (#804)

Inline mapped Google secret startup reads

  • Google Secret Manager configuration now performs a cold, no-token mapped secret fetch on the first caller instead of scheduling that synchronous client call on a worker. Concurrent reads of the same exact resource still share one fetch; audited or cancellable reads retain their bounded worker path and per-caller cancellation. Apps using mapped Google secrets need no code change. The package guide explains how a slow synchronous client call can still hold the first caller until the configured lookup timeout.

Release and docs surface

CI dependency validation

  • The build workflow updates its pinned package-manager, coverage-reporting, and documentation-deployment actions, and the benchmark workflow updates its results publisher. The coverage evidence workflow retains restore-only caches with full commit pins; its contract tests allow dependency updates without requiring an obsolete action version. Package consumers need no code changes.

  • Tailwind runtime package builds keep native payload downloads in a separate cache directory so parallel solution builds cannot contend with app build or watch executables. Existing app caches continue to work; the first runtime package build downloads its payloads into the new directory.

  • The native Tailwind evidence workflow now reads the original unapproved package inventory used by both protected release publishers. Manual Package Artifacts rehearsal keeps its existing inventory filename. This fixes native proof failures before NuGet publication while retaining the separate PostgreSQL candidate approval gate.

Migration watch

Complete runtime-set PostgreSQL preflight

  • appsurface durable schema preflight now requires --role-pairs-file and --migration-owner-role, including for one-pair stores. It checks every runtime in the unchanged complete manifest in one fenced read-only snapshot, reports the credential's pair and manifest hash, and rejects policy, grant, owner or privilege drift. Update existing invocations to supply both reviewed inputs.
  • A successful owner diagnostic cannot replace runtime credential evidence. The schema-11 operations checklist requires matching StoreId and epoch, one pass per distinct runtime, both lane proofs and a continuous owner guard through activation. Candidate and public package proofs are separate gates; structural preflight does not initialize the epoch or authorize a later deployment.