Skip to content

Releases: appwrite/sdk-generator

3.0.0

Choose a tag to compare

@ChiragAgg5k ChiragAgg5k released this 14 Aug 08:19
31c03de

Specification parsing moves to utopia-php/openapi. The in-repo parser under src/Spec is gone, and every language class and template now reads a canonical, immutable model instead of nested arrays.

The generated SDKs are unchanged. All 19 targets were generated from the same spec before and after the migration and compared: 16,716 files, byte-identical.

Why major

The parser was the public seam of this repository. Appwrite\Spec\Spec, Appwrite\Spec\OpenAPI3, Appwrite\Spec\Swagger2 and Appwrite\Spec\StaticSpec no longer exist, and anything embedding the generator or subclassing a Language sees a different shape:

  • Twig templates receive DTOs (Operation, Parameter, Schema) rather than arrays, so method.name becomes method | methodName, parameter.type becomes parameter | schemaType, and so on.
  • Language::getTypeName(), getParamDefault() and getParamExample() take Schema|Parameter instead of array.
  • A schema is a typed class per kind — ObjectSchema, ArraySchema, CompositeSchema, ReferenceSchema — replacing type/sub_schema/array array keys.

Fixed along the way

Bringing the output back to byte-parity surfaced defects the migration had introduced, two of which were not cosmetic:

  • The Swift SDK did not compile. AttributeList.swift decoded an AnyCodable array as [[String: Any]], which only holds if every element is a dictionary.
  • Union responses hydrated the wrong model. getAttribute() and getColumn() returned AttributeString for every email, enum, URL and IP attribute, because the multi-condition x-mapping discriminator was being dropped. Fixed upstream in utopia-php/openapi and consumed here.

Also restored: InputFile imports in upload examples across seven languages, convertTo<T>() on Dart, Flutter, .NET and Ruby list models, resumable upload ids in four SDKs, deduplicated Ruby methods, and the leading slash on REST and GraphQL request lines.

Dependencies

  • Requires utopia-php/openapi 0.1.*, resolved from Packagist.
  • CI builds the Go SDK with Go 1.26.6.

2.11.8

Choose a tag to compare

@ChiragAgg5k ChiragAgg5k released this 13 Aug 09:31
8f712aa

What's Changed

Full Changelog: 2.11.7...2.11.8

2.11.7

Choose a tag to compare

@ChiragAgg5k ChiragAgg5k released this 13 Aug 08:43
aef7057

What's Changed

  • fix(go): document that ClientResponse.Result holds bytes, and pin the type by @ChiragAgg5k in #1782

Full Changelog: 2.11.6...2.11.7

2.11.6

Choose a tag to compare

@ChiragAgg5k ChiragAgg5k released this 13 Aug 08:05
d284ef8

What's Changed

  • chore(deps): update android and kotlin sdk template dependencies by @renovate-appwrite[bot] in #1780
  • Fix Go CLI local function readiness checks by @ChiragAgg5k in #1781

Full Changelog: 2.11.5...2.11.6

2.11.5

Choose a tag to compare

@ChiragAgg5k ChiragAgg5k released this 12 Aug 12:44
7f50ce3

What's Changed

  • fix(python): honour include and exclude in generic model serializers by @ChiragAgg5k in #1779

Full Changelog: 2.11.4...2.11.5

2.11.4

Choose a tag to compare

@ChiragAgg5k ChiragAgg5k released this 12 Aug 12:05
9ca070e

What's Changed

Full Changelog: 2.11.3...2.11.4

2.11.3

Choose a tag to compare

@ChiragAgg5k ChiragAgg5k released this 12 Aug 11:10
391174e

What's Changed

  • chore(deps): update dependency system.text.json to 9.0.19 by @renovate-appwrite[bot] in #1774
  • fix(go-cli): validate variable keys before replacing them on push by @levivannoort in #1773
  • Fix Python nested model serialization by @ChiragAgg5k in #1776
  • Fix Python payload-only model serialization by @ChiragAgg5k in #1777

New Contributors

Full Changelog: 2.11.2...2.11.3

2.11.2

Choose a tag to compare

@ChiragAgg5k ChiragAgg5k released this 12 Aug 08:22
9f200e8

What's Changed

  • chore(deps): update dependency @types/node to v26.2.0 by @renovate-appwrite[bot] in #1771
  • Fix CLI login endpoint and logout messaging by @ChiragAgg5k in #1772
  • Fix GraphQL JSON output filtering by @ChiragAgg5k in #1775

Full Changelog: 2.11.1...2.11.2

2.11.1

Choose a tag to compare

@ChiragAgg5k ChiragAgg5k released this 10 Aug 11:13
4bf377c

What's Changed

Full Changelog: 2.11.0...2.11.1

2.11.0

Choose a tag to compare

@ChiragAgg5k ChiragAgg5k released this 10 Aug 06:00
8aca443

Go CLI: a browser (js/wasm) build target

The Go CLI now builds a seventh artifact, appwrite.wasm (GOOS=js GOARCH=wasm -tags browser), published standalone as the npm package appwrite-cli-wasm alongside the wasm_exec.js from the toolchain that produced it. CLI 26 replaced the JavaScript bundle with a native binary, which a browser cannot execute, leaving the Console's in-browser terminal pinned to CLI 25 with no upgrade path — this gives it one. The six native binaries, install.sh, install.ps1, the scoop manifest and npm/run.js are unchanged, and the wasm build runs outside goreleaser so the native asset names stay stable.

Two build tags do deliberately different jobs. js, from GOOS, gates platform differences: zalando/go-keyring has no build file matching js, so credential storage falls back to the prefs file the CLI already used on headless Linux and in CI. browser is ours and gates product surface: init, pull, push, run, update, generate, types and login register as stubs that explain why they cannot run in a tab, rather than being absent and drawing cobra's "unknown command" for a command that is real and documented. Their implementations carry the tag, so the linker drops the docker, watch, generator, typegen, preview, schema and dotenv trees along with huh, bubbletea and fsnotify.

Authentication works differently in a tab. The credential is an httpOnly cookie the CLI can neither read nor set — Cookie is on fetch's forbidden list and is dropped silently — so internal/client removes any Cookie header and asks fetch for the origin's credentials at the transport, letting the browser attach the session itself. Under js the endpoint may come from APPWRITE_ENDPOINT and a missing credential is no longer a refusal; native builds refuse exactly where they did before.

Embedder contract: pass APPWRITE_ENDPOINT and APPWRITE_PROJECT_ID in go.env, be signed in on the target origin, and serve credentialed CORS if that origin differs from the page's. No filesystem is required.

Artifact size is 21.6 MiB raw, 3.0 MiB Brotli, 4.5 MiB gzip. TinyGo is not an option — cobra and the SDK are reflection-heavy.

What's Changed

  • feat(cli): a browser (js/wasm) build target for the Go CLI by @ChiragAgg5k in #1759

Full Changelog: 2.10.10...2.11.0