Skip to content

v0.3.1

Latest

Choose a tag to compare

@github-actions github-actions released this 25 Jun 23:48

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

  • D2-1: createDialogs().background edits the last message with no update

  • D2-5: over-long callback_data throws a named error into onError

  • D2-2: concurrent taps on one stack don't lost-update (withLock + reload)

three fixes that previously had no e2e coverage:

test: cover D2-1/D2-2/D2-5 end-to-end via @gramio/testAdds real-bot integration tests through TelegramTestEnvironment for the

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

Strictly more permissive — not a breaking change. Tests: datadict-interface.

  • export AnyData / RenderData

    blocked Window<interface> ⊆ Window<DataDict>); isHidden made generic

  • widen Dialog window storage to Window<AnyData> (Getter's covariant return

    interface, and untyped windows alike

    DataDictcollapses toDataDict, so d.dialogData` keeps working for typed,

    render callback: the engine injects dialogData/startData, and `AnyData &

  • new RenderData<Data> = Data & DataDict types RenderContext.data and every

  • DataDict stays the concrete, indexable bag the engine stores/indexes

    spelled out for intent); ~30 user-facing extends DataDict → extends AnyData

  • new AnyData = Record<PropertyKey, unknown> | object constraint (≡ object,

failed extends DataDict (interfaces have no implicit index signature).

feat: accept interface-typed window Data (not just type)A typed Window<Data> / getter now accepts a TS interface, which previously

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

messages. No behavior change.

compiler; the bare alias reads better in hovers and constraint-violation

refactor: simplify AnyData to object (same type, cleaner tooltips/errors)Record<PropertyKey, unknown> | object is identical to object for the

chore(release): v0.3.0Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

check` (CI) failed on formatting only. No logic change.

style: biome-format plugin.test.ts (unbreak CI lint)The D2 e2e tests were committed without running bun run lint; `bun run

data-derived, undefined return, and Url combo).

Add test coverage for function-style resolution (static → ✓,

LinkWidget (Url/WebApp), and SwitchInlineWidget render paths.

Add resolveStyle() helper, wire it through ButtonWidget,

WhenCondition and TextSource for render-data-derived values.

in addition to a static value, matching the pattern used by

feat: support dynamic style function on Button (like TextSource)Make ButtonChrome.style accept a function (rc) => ButtonStyle

chore: v0.3.1

fix: allow undefined return in style function, update CLAUDE.md with full check
Full Changelog: v0.2.1...v0.3.1