# Changelog

All notable changes to this project are documented here.

Release notes are generated from [conventional commit](https://www.conventionalcommits.org/)
messages. Every merge to `main` that touches `contract-toolkit/` files auto-creates or
updates a release PR — see `.github/workflows/contract-toolkit-release.yml`.

## [0.21.1] - 2026-08-12

### Bug fixes

- gate single-parent dependsOn on parent success (FND-261) (#3140) ([7485c3b](https://github.com/atlanhq/application-sdk/commit/7485c3b))

## [0.21.0] - 2026-08-11

### Features

- emit ui.isDelimitedBySemicolons from AdvancedJDBCUrlGroup (#3125) ([ef94732](https://github.com/atlanhq/application-sdk/commit/ef94732))

## [0.20.0] - 2026-08-07

### Features

- worker-side sdr:* workflows (typed contracts) for heracles-native dispatch (#2914) ([b3059cd](https://github.com/atlanhq/application-sdk/commit/b3059cd))

## [0.19.2] - 2026-07-31

### Bug fixes

- resolve log app_name per-entrypoint from workflow input (#2951) ([1f2b24c](https://github.com/atlanhq/application-sdk/commit/1f2b24c))

## [0.19.1] - 2026-07-23

### Bug fixes

- render triggers.events (app-declared event triggers) (DISTR-844) (#2768) ([7ea8ccf](https://github.com/atlanhq/application-sdk/commit/7ea8ccf))

## [0.19.0] - 2026-07-21

### Features

- add ValidationRule.trigger; re-export ValidationRule from Credential.pkl (#2749) ([c424342](https://github.com/atlanhq/application-sdk/commit/c424342))
- source Credential.pkl widgets from Widgets.pkl (#2744) ([fddb6a4](https://github.com/atlanhq/application-sdk/commit/fddb6a4))

### Bug fixes

- emit connector type on the ConnectionCreator widget (#2802) ([4853e49](https://github.com/atlanhq/application-sdk/commit/4853e49))

## [0.18.2] - 2026-07-15

### Bug fixes

- generated JSON coercion uses orjson and logs its fallback (#2720) ([2e9288e](https://github.com/atlanhq/application-sdk/commit/2e9288e))

## [0.18.1] - 2026-07-10

### Bug fixes

- default non-publish node timeout to 1 day (#2622) ([a448f6a](https://github.com/atlanhq/application-sdk/commit/a448f6a))
- remediate error-handling, logging, and optimization findings (#2573) ([460d7f2](https://github.com/atlanhq/application-sdk/commit/460d7f2))

## [0.18.0] - 2026-07-06

### Features

- render triggers.schedules into manifest.json (DISTR-815) (#2381) ([47de99b](https://github.com/atlanhq/application-sdk/commit/47de99b))
- route/card split, pools map, pool task routing (BLDX-1342, BLDX-1375, BLDX-1382) (#2351) ([b0c780b](https://github.com/atlanhq/application-sdk/commit/b0c780b))

### Other changes

- ci(contract-toolkit): stop hardcoding ruff --select F401 in generated-file cleanup (#2497) ([dfb5b4c](https://github.com/atlanhq/application-sdk/commit/dfb5b4c))

## [0.17.0] - 2026-07-03

### Features

- emit marketplace metadata from app.pkl into atlan.yaml (BLDX-1451) (#2401) ([8a0b1ff](https://github.com/atlanhq/application-sdk/commit/8a0b1ff))
- additive-only contract gate B005/B006 (BLDX-1425) (#2350) ([225c8ed](https://github.com/atlanhq/application-sdk/commit/225c8ed))

### Bug fixes

- bake NativeApp manifest app_name from contract name (#2478) ([1bac756](https://github.com/atlanhq/application-sdk/commit/1bac756))
- correct appName for QueryIntelligenceNode and LineageNode (#2461) ([4904e7e](https://github.com/atlanhq/application-sdk/commit/4904e7e))
- include agent-json in app's manifest.json (#2312) ([7dd679c](https://github.com/atlanhq/application-sdk/commit/7dd679c))

### Other changes

- ci(renovate-pkl-sync): format all generated *.py, not just _input.py (#2346) ([a4e474d](https://github.com/atlanhq/application-sdk/commit/a4e474d))

## [0.16.0] - 2026-06-25

### Features

- add WidgetValidation property to TextInput and TextBoxInput (#2286) ([12b72d3](https://github.com/atlanhq/application-sdk/commit/12b72d3))

### Bug fixes

- close App.pkl parity gaps for CredentialInput placeholder, argoPackageNames, workflowTypeOverride (#2313) ([ffae058](https://github.com/atlanhq/application-sdk/commit/ffae058))

## [0.15.0] - 2026-06-24

### Features

- add e2eCredentialMode + widen ConditionalInput Literal for agent e2e (#2299) ([51995b2](https://github.com/atlanhq/application-sdk/commit/51995b2))

## [0.14.2] - 2026-06-22

### Bug fixes

- bake manifest app_name from contract name; drop runtime placeholder (#2271) ([b78ce51](https://github.com/atlanhq/application-sdk/commit/b78ce51))

## [0.14.1] - 2026-06-18

### Bug fixes

- allow 10-day timeout cap (#2223) ([4b88b9b](https://github.com/atlanhq/application-sdk/commit/4b88b9b))

## [0.14.0] - 2026-06-17

### Features

- emit marketplace metadata in atlan.yaml (#2187) ([982e2b9](https://github.com/atlanhq/application-sdk/commit/982e2b9))

## [0.13.0] - 2026-06-16

### Features

- default selfDeployedRuntime to true (#2173) ([efaca08](https://github.com/atlanhq/application-sdk/commit/efaca08))
- make `connectionEntity` argument optional in `publish` (#2159) ([a28a849](https://github.com/atlanhq/application-sdk/commit/a28a849))

## [0.12.0] - 2026-06-11

### Features

- notification node fires on completion + rename notifyOnFailure → notifications (#2011) ([8c44d82](https://github.com/atlanhq/application-sdk/commit/8c44d82))

### Bug fixes

- normalize APITree filters in extraction inputs (#2024) ([cbc7777](https://github.com/atlanhq/application-sdk/commit/cbc7777))
- bump default publish node timeout 24h→72h (#2072) ([90e23fe](https://github.com/atlanhq/application-sdk/commit/90e23fe))

## [0.11.1] - 2026-06-08

### Bug fixes

- hide JDBC merge-target auth panes (#2014) ([c290a98](https://github.com/atlanhq/application-sdk/commit/c290a98))

## [0.11.0] - 2026-06-05

### Features

- add experimental run-failure notification node (ARUN-619) (#1988) ([b64ef49](https://github.com/atlanhq/application-sdk/commit/b64ef49))
- support credential file upload widgets (#1997) ([fec1937](https://github.com/atlanhq/application-sdk/commit/fec1937))
- codegen _e2e_base.py, _e2e_credential.py, _e2e_substitutions.py (#1980) ([0e70b7b](https://github.com/atlanhq/application-sdk/commit/0e70b7b))

### Bug fixes

- preserve in-pipeline position for extraNodes publish override (#1993) ([f1eda93](https://github.com/atlanhq/application-sdk/commit/f1eda93))

## [0.10.5] - 2026-06-03

### Bug fixes

- update QI contract (#1971) ([a6345f6](https://github.com/atlanhq/application-sdk/commit/a6345f6))
- emit lint-clean generated input contracts (#1967) ([c1dcdde](https://github.com/atlanhq/application-sdk/commit/c1dcdde))

## [0.10.4] - 2026-05-29

### Bug fixes

- corrects generated output for credentials (#1928) ([17da250](https://github.com/atlanhq/application-sdk/commit/17da250))

## [0.10.3] - 2026-05-28

### Bug fixes

- support credential checkbox and auto-derive auth-type hidden (#1873) ([944c290](https://github.com/atlanhq/application-sdk/commit/944c290))

## [0.10.2] - 2026-05-27

### Bug fixes

- add current_state_enabled + current_state_via_app_enabled to PublishNode and PublishStep (#1866) ([318af06](https://github.com/atlanhq/application-sdk/commit/318af06))

## [0.10.1] - 2026-05-22

### Bug fixes

- default connection cache to true/false for PublishNode/LineagePublishNode (#1850) ([dd49f65](https://github.com/atlanhq/application-sdk/commit/dd49f65))
- default splitDeployment and keda.enabled to true (#1837) ([772fa4c](https://github.com/atlanhq/application-sdk/commit/772fa4c))

## [0.10.0] - 2026-05-21

### Features

- Consolidate to single `App.pkl` template; legacy modules (`NativeApp.pkl`, `NativeAppBundle.pkl`, `Renderers.pkl`) retained as frozen reference material ([#1814](https://github.com/atlanhq/application-sdk/pull/1814))

### Bug fixes

- Read `.default` uniformly in `getInputPyField` so optional fields with explicit defaults render correctly in generated `_input.py` ([#1803](https://github.com/atlanhq/application-sdk/pull/1803))

## [0.9.5] - 2026-05-07

### Features

- Widen QueryIntelligenceNode ignoreOrphans/indirectLineage to Boolean|String? (#60) ([#60](https://github.com/atlanhq/app-contract-toolkit/pull/60))

## [0.9.4] - 2026-05-06

### Breaking changes

- Remove QueryIntelligenceNode per-workflow QI args (#59) ([#59](https://github.com/atlanhq/app-contract-toolkit/pull/59))

## [0.9.3] - 2026-05-04

### Bug fixes

- Omit popularity lake provider by default (#58) ([#58](https://github.com/atlanhq/app-contract-toolkit/pull/58))

## [0.9.2] - 2026-05-01

### Bug fixes

- Align apitree object defaults with input validation (#55) ([#55](https://github.com/atlanhq/app-contract-toolkit/pull/55))

### Documentation

- Add toolkit feature workflow skill (#54) ([#54](https://github.com/atlanhq/app-contract-toolkit/pull/54))

### Features

- Increase startToCloseTimeoutSeconds limit to 72h (#56) ([#56](https://github.com/atlanhq/app-contract-toolkit/pull/56))

## [0.9.1] - 2026-04-30

### Bug fixes

- Prefer enable-tags for tag pipeline default (#52) ([#52](https://github.com/atlanhq/app-contract-toolkit/pull/52))
- Format GitHub release notes (#41) ([#41](https://github.com/atlanhq/app-contract-toolkit/pull/41))
- Trigger pages build after release publish (#40) ([#40](https://github.com/atlanhq/app-contract-toolkit/pull/40))

### Documentation

- Update make-contract toolkit guidance (#42) ([#42](https://github.com/atlanhq/app-contract-toolkit/pull/42))

### Features

- Add built-in node error handling knobs (#51) ([#51](https://github.com/atlanhq/app-contract-toolkit/pull/51))
- Add FieldSpec rows UI hint (#50) ([#50](https://github.com/atlanhq/app-contract-toolkit/pull/50))
- Add tag pipeline publish defaults (#49) ([#49](https://github.com/atlanhq/app-contract-toolkit/pull/49))
- Allow built-in activity display name overrides (#48) ([#48](https://github.com/atlanhq/app-contract-toolkit/pull/48))
- Make lineage storage args optional (#47) ([#47](https://github.com/atlanhq/app-contract-toolkit/pull/47))

## [0.9.0] - 2026-04-27

### Bug fixes

- Emit connection ref flag only under ui (#38) ([#38](https://github.com/atlanhq/app-contract-toolkit/pull/38))
- Default native manifest args to top-level

### Documentation

- Refresh agent guides and contract skills (#39) ([#39](https://github.com/atlanhq/app-contract-toolkit/pull/39))

### Features

- **(NativeApp)** Generate AppInputContract extending ExtractionInput (#35) ([#35](https://github.com/atlanhq/app-contract-toolkit/pull/35))
- Add connection ref input widget (#37) ([#37](https://github.com/atlanhq/app-contract-toolkit/pull/37))
- Add popularity DAG node template (#36) ([#36](https://github.com/atlanhq/app-contract-toolkit/pull/36))
- Add multi-entrypoint bundle contracts (#34) ([#34](https://github.com/atlanhq/app-contract-toolkit/pull/34))
- Add Power BI widget support HYP-765 (#32) ([#32](https://github.com/atlanhq/app-contract-toolkit/pull/32))
- Accept Config.UIElement inside AuthOption.extraFields via NamedWidget (#25) ([#25](https://github.com/atlanhq/app-contract-toolkit/pull/25))
- Add publish input and executor controls (#31) ([#31](https://github.com/atlanhq/app-contract-toolkit/pull/31))
- Add explicit dependency conditions (#30) ([#30](https://github.com/atlanhq/app-contract-toolkit/pull/30))
- Add lineage publish node (#29) ([#29](https://github.com/atlanhq/app-contract-toolkit/pull/29))

## [0.7.1] - 2026-04-24

### Features

- **(NativeApp)** AdvancedJDBCUrlGroup credential primitive + manual-only releases (#28) ([#28](https://github.com/atlanhq/app-contract-toolkit/pull/28))

## [0.7.0] - 2026-04-23

### Features

- Add query intelligence node and credential config controls (#27) ([#27](https://github.com/atlanhq/app-contract-toolkit/pull/27))

## [0.6.0] - 2026-04-22

### Bug fixes

- Extract release body from CHANGELOG.md instead of --latest

### Features

- **(NativeApp)** Promote DAGNode.dependsOn to multi-parent fan-in (#26) ([#26](https://github.com/atlanhq/app-contract-toolkit/pull/26))

## [0.5.0] - 2026-04-22

### CI & tooling

- Grant pull-requests:read to the release job (#24) ([#24](https://github.com/atlanhq/app-contract-toolkit/pull/24))
- Add grouped release notes + CHANGELOG.md via git-cliff (#23) ([#23](https://github.com/atlanhq/app-contract-toolkit/pull/23))

### Features

- Add widget features for Fivetran AE integration (HYP-724) (#22) ([#22](https://github.com/atlanhq/app-contract-toolkit/pull/22))

## [0.4.1] - 2026-04-21

### Bug fixes

- Emit snake_case keys in manifest JSON instead of kebab-case (#21) ([#21](https://github.com/atlanhq/app-contract-toolkit/pull/21))

### Chores

- Rewrite contract-review skill and add post-PR self-review rule

## [0.4.0] - 2026-04-20

### CI & tooling

- Add workflow_dispatch + idempotent bump to release workflow
- Pull SDK from main branch for import test

### Chores

- Restructure contract-review skill and sync AGENTS.md

### Documentation

- Revert SAP_S4_HANA/SAP_ECC category to erp

### Features

- Add compound-filter conditional credentials (#19) ([#19](https://github.com/atlanhq/app-contract-toolkit/pull/19))

## [0.3.14] - 2026-04-20

### CI & tooling

- Add PR validation workflow and fix release versioning (#15) ([#15](https://github.com/atlanhq/app-contract-toolkit/pull/15))

### Chores

- Add contract-review skill (#17) ([#17](https://github.com/atlanhq/app-contract-toolkit/pull/17))
- Add CODEOWNERS requiring maintainer review on all PRs

### Features

- Add SAP S/4 HANA connector with conditional credential fields

## [0.3.13] - 2026-04-14

### HYP-311

- Multi-manifest support — taskQueuePrefix, workflowType auto-kebab, ConditionalInput fix (#14) ([#14](https://github.com/atlanhq/app-contract-toolkit/pull/14))

## [0.3.12] - 2026-04-13

### Features

- Add error_handling support to DAGNode (#12) ([#12](https://github.com/atlanhq/app-contract-toolkit/pull/12))

## [0.3.11] - 2026-04-09

### Bug fixes

- Emit default at property level for BooleanInput (#11) ([#11](https://github.com/atlanhq/app-contract-toolkit/pull/11))

## [0.3.10] - 2026-04-06

### Features

- Add InputRepeater, Evaluate widgets and field-level attributes [APP-1229] (#9) ([#9](https://github.com/atlanhq/app-contract-toolkit/pull/9))

## [0.3.9] - 2026-04-02

### Features

- Support conditional widget switching and fix AgentSelector default key

## [0.3.8] - 2026-03-31

### Features

- Expose app_name, app_id, argo_workflow_slug in manifest extract and publish nodes

## [0.3.7] - 2026-03-31

### Features

- Expose app_name, app_id, argo_workflow_slug in manifest extract node (#7) ([#7](https://github.com/atlanhq/app-contract-toolkit/pull/7))

## [0.3.6] - 2026-03-27

### Bug fixes

- Rename generated output from input.py to _input.py

## [0.3.5] - 2026-03-27

### Features

- Auto-emit allow_unbounded_fields for SDK v3 payload safety

## [0.3.4] - 2026-03-25

### Bug fixes

- Hoist topLevelFormFields out of mapping block to fix Pkl scope bug

## [0.3.3] - 2026-03-25

### Features

- Add flatManifestArgs flag to emit all params top-level in manifest args

## [0.3.2] - 2026-03-25

### Bug fixes

- Gate publish node on hasPublishStep, rename hasLoader

## [0.3.1] - 2026-03-24

### Chores

- Synced main

### Other changes

- Rename hasPublishApp to usePublishApp

## [0.2.11] - 2026-03-24

### Chores

- Remove dead import, stale output dir, update docs

## [0.2.10] - 2026-03-24

### Chores

- Regenerate example input.py files for Pydantic BaseModel

### Features

- Add databaseExcludePatterns to Config.SqlTree
- Make hasPublishApp default to true (opt-out instead of opt-in)

## [0.2.9] - 2026-03-23

### Bug fixes

- Convert hyphens to underscores in generated Python field names

## [0.2.8] - 2026-03-23

### Features

- Add monte-carlo example exercising isHidden, connectionCategories, APITree.desc

## [0.2.7] - 2026-03-23

### Bug fixes

- Add connectionCategories to Widget class, add trino example

## [0.2.6] - 2026-03-23

### Features

- Add FieldSpec.isHidden, ConnectionSelector.connectionCategories, APITree.desc

## [0.2.5] - 2026-03-23

### Documentation

- Update reference with latest version discovery and fix textarea widget mapping

## [0.2.4] - 2026-03-23

### Bug fixes

- Map textarea FieldType to correct frontend widget name

## [0.2.3] - 2026-03-23

### Bug fixes

- Move TextInput default value to property level
- Remove atlan- prefix from workflowConfigName default

### CI & tooling

- Merge version bump into release workflow
- Fix release workflow artifact loss and add auto version bump
- Switch package distribution to GitHub Pages
- Add GitHub Actions workflow for PKL package releases

### Documentation

- Improve documentation site layout and usability
- Add comprehensive reference documentation

### Features

- Generate Input.py dataclass from app contract

### Other changes

- Migrate generated Input class from dataclass to Pydantic BaseModel
- Replace hasLoader with hasPublishApp and slim down publish fields
- Fix generated Input class to always use AppInputContract name

## [0.2.0] - 2026-03-12

### Bug fixes

- App contract missing properties

### Documentation

- Add AGENTS.md
- Rewrite README and CLAUDE.md for native app contract system

### Features

- Package v0.2.0 for PKL registry distribution
- FieldSpec-based credential model aligned with SDK credential system
- Add PublishNode, remove includePublishNode flag
- Add NativeApp.pkl for temporal-native app contracts
