Skip to content

v1.0.1

Latest

Choose a tag to compare

@engineering-ci engineering-ci released this 30 Oct 07:02
bffee66

1.0.1 (2025-10-30)

If you are migrating from the Algorand TypeScript beta or TEALScript, please check out the migration guides.

⚠ BREAKING CHANGES

  • Replace checked boolean on bytes.toFixed method with string enum to make behaviour more explicit
  • gtxn.ApplicationTxn renamed to gtxn.ApplicationCallTxn
  • itxn.ApplicationInnerTxn renamed to itxn.ApplicationCallInnerTxn
    Export gtxn and itxn as sub modules
  • Incorrect type for transaction oncomplete and transaction type
  • Moves OnCompleteAction type out of /arc4 namespace

refactor

  • Moves OnCompleteAction type out of /arc4 namespace (c805015)
  • Replace checked boolean on bytes.toFixed method with string enum to make behaviour more explicit (3a06892)

Features

  • Introduce a logging context which holds logs and source lines which allows for log messages to include a summary of the source code which resulted in the log message (eb48a3a)
  • a very simple language server (4043ea5)
  • accept abi method reference as a parameter to methodSelector function (#108) (763db73)
  • Account now accepts a b32 address string + fix docs to make it clear that bytes value is public key (0c2e8a1)
  • add resourceEncoding property to abi method config (27ddabd)
  • Add arc4EncodedLength helper for getting the fixed encoded size of a type (a9d4ad7)
  • Add box.create function for creating a box with zero value (79bd8b1)
  • Add convention based abi routing using well-known method names (7ea7d96)
  • add dynamic ABI validation (#280) (575635e)
  • add dynamic ABI validation (#281) (e820bfe)
  • Add DynamicBytes and StaticBytes types (607d15f)
  • Add hooks to compile process for consumers to manipulate TS AST and AWST before compilation (7635894)
  • Add implicit create methods to contracts which don't have an explicit one (7ab8f02)
  • Add interpretAsArc4, decodeArc4, and encodeArc4 functions in place of static member functions which are less versatile (c4e53ab)
  • Add length generic to bytes type for declaring statically sized byte sequences (13292cd)
  • add log level configuration for language server (546a8f3)
  • Add missing puya parameter for outputting source maps (974da25)
  • Add new shorthand readonly decorator and rename arc4EncodedLength to sizeOf (06b555f)
  • Add support for box maps with composite key types (a73a743)
  • add support for storing tuples into boxes, global and local state (1b82fe3)
  • add v11 op code mimc (b50ab7e)
  • add validate-abi-values and validate-abi-dynamic-severity CLI options (92515d2)
  • Allow arc4 contracts to provide their own approvalProgram implementation, but warn if they don't invoke super.approvalProgram as this would result in no arc4 routing (eccd0ce)
  • Allow code to be resolved from virtual files (26ee4b2)
  • allow construction of bytes from biguint to be orthogonal to biguint being constructed from bytes (ba23c64)
  • Allow number and bigint types to be used when declaring consts (fcb36e2)
  • Allow replacement tokens in outpath (d332569)
  • Allow resource encoding to be specified at a contract level and update typed c2c logic to respect the chosen encoding (e938010)
  • allow resourceEncoding to be passed in as a cli argument (d0d77f0)
  • Allow stateTotals to be specified statically in contract options (d9e3bfe)
  • ARC28 emit function (d0bfed7)
  • ARC4 Structs (a9d30f9)
  • ARC4 Tuples and UFixedNxM (b13fbd1)
  • Array indexing + bug fixes (818f1aa)
  • Array push, pop, slice, and at (af98954)
  • AVM11 Support (2202dce)
  • Better error messages when invalid types are used in ABI and bare methods (5ce0f22)
  • BoxRef.resize (4757566)
  • capture options from contract decorator as class property (2821fcb)
  • changes to support node 20 (b60d4ba)
  • Code fix for arc4 clone and replace == with === (7f9a978)
  • Code fixes (37e270f)
  • Compile logic signatures and template variables (1e06a3a)
  • consistent awst serialization (8522b42)
  • consume puya binary (b433b11)
  • Default to the build command if no other command is present (ee48e34)
  • Error when attemping to mutate an immutable tuple type (88b9a10)
  • Expand and implement Bytes and BigUint factory methods (d013fa9)
  • Expand arc4 type support (41b7726)
  • Expand Bytes factory method to support iterable (ie. uint8array) (88bf321)
  • Expand constant expression evaluation to allow for basic math operations on two other constant values at the module level (edec71c)
  • export compile option types for stub implementation (02bbad0)
  • export compile option types for stub implementation (00cd515)
  • Export encoding util methods (cdce210)
  • export ptypeToArc4EncodedType function needed for stub implementation of encodeArc4, decodeArc4 functions (954d0f0)
  • export ptypeToArc4EncodedType function needed for stub implementation of encodeArc4, decodeArc4 functions (056f7ef)
  • Handle ARC4 bool and string (ce32257)
  • Implement --version command (6b80542)
  • implement AppGlobal via context manager (6e34ad2)
  • implement AppLocal via context manager (62143f3)
  • implement arc4.methodSelector function (5dbb752)
  • implement arg, len, appOptedIn op codes via context manager (aeef6dc)
  • implement arg, len, appOptedIn op codes via context manager (6cdbd02)
  • implement Box via context manager (11c0c15)
  • Implement missing box proxy methods (e0a6fae)
  • Improve devex of op.extract by supporting 'extract to end' behaviour by omitting the length param (361f06c)
  • Include --isolated-files option to compile each individual file matched by cli separately (bea7a46)
  • Include a ref property on the Box proxy type which can be used to directly access box bytes (49555da)
  • Include option for outputting arc56 json files (dfad42c)
  • Inline basic const declarations so methods which rely on constant values work when they are indirectly passed a constant value (bdf0084)
  • Introduce ItxnCompose type for composing variable length transaction groups (9ab4bec)
  • Introduce native mutable arrays and objects (d3ef438)
  • Make arc4 structs mutable to simplify usage (7e85bff)
  • make BoxRef methods directly accessible on Box class (705c71b)
  • Native arrays and MutableArray type (#106) (e04b710)
  • Parse jsdoc comments where available and include them in AWST (7845ca1)
  • Pre-compiled contracts (757e8a4)
  • preview binary puya integration (#149) (ffa2a87)
  • Provide struct definitions to puya for arc4 methods (f1af384)
  • Refactor typed abiCall helper to support type only imports (c7f6942)
  • replace .native property with .as_uint64() and .as_biguint() methods in arc4.Uint (bd4b9be)
  • Reserved scratch space (942a109)
  • Rework BoxMap API so it is just a function that returns a Box proxy for the given key (92dbb87)
  • set minNodeVersion to v20-lts (cc618a6)
  • Support not expressions on match and assertMatch (b645739)
  • Support as casting (c6670f7)
  • Support Boolean() with no args (7df6e95)
  • support calling bitwiseAnd, bitwiseOr, and bitwiseXor methods of bytes type (dfa9e76)
  • Support empty statements (ef5f820)
  • support fromBytes and fromLog methods for ARC4Encoded types (08912a1), closes #45
  • Support multi inheritance on contracts (b912bbb)
  • Support property checks and spreading of arc4 structs (36a1661)
  • Support zero arg constructors on all arc4 types which return a 'zero' value byte array of the appropriate length (798642c)
  • type-safe Set.prototype.union polyfill (ab8b4c6)
  • Typed contract to contract calls (8a12241)
  • update langspec to v4.3.0 (c8ab457)
  • update puya to 5.2.0 (6b27f84)
  • use --validate-abi-return option when getting an ABI result from abiCall (edc1c78)
  • use --validate-abi-return option when getting an ABI result from abiCall (3f7bf98)
  • Use transaction field type metadata to generate itxn and gtxn modules to improve consistency and flatten the type hierarchy (abd92c5)
  • Warn users if their installed node version is out of date (f44adf4)
  • workspace diagnostics (5b3fb9e)

Bug Fixes

  • "Cannot resolve Tuple<Byte,...> to Account" error for Address.native property (21615e2)
  • accept non-literal uint64 parameters to bzero function (01bdc16)
  • add numLogs to txn-fields to fix unsupported member access error (15cb7cd)
  • Add missing .copy() function on arc4 struct as it is required when the struct contains a mutable field (eg. an array) (2d6b3eb)
  • Add missing expression builder for BoxRef.maybe (5901a46)
  • Add missing itxn fields and fix compatible type resolution (aa30917)
  • Add missing mutable array .copy() (3b73d1e)
  • Add missing MutableArray.at builder (389782a)
  • Add missing native property on arc4 struct (69abdd7)
  • add missing properties and functions box expression builders (0a5682f)
  • Add missing slice method to bytes interface (11ffcef)
  • Add polyfill for set.union for node < 22 (e11663a)
  • add tslib as non dev dependency to puya-ts package (d76b0a5)
  • allow @contract decorator to be applied to base contract (4eccea8)
  • allow LocalState to be assigned to a local variable (1841e04)
  • allow explicit (checked) construction of Bytes from bytes (e16e7e1)
  • allow input path in compiler options to be prefixed with ./ (b5486c0)
  • Allow template vars as module constants (5087dd1)
  • allow uint64 type as well for Application and Asset parameter types (d84d291)
  • Arc4 encode of bytes value to static bytes (636113c)
  • Arc4 encode/decode of native arrays (#182) (cf69dd6)
  • ARC4 structs should be immutable for now, we can introduce a mutable base type later if required (2ab223b)
  • audit vulnerabilities (0dfc12b)
  • avoid hardcoding op codes (3c6132d)
  • avoid updating op-metadata file directly as it is generated by a script (796995f)
  • Better error messages when using unsupported == and != tokens (ee971f7)
  • Better errors when dealing with unsupported argument types on itxn.applicationCall (20adca3)
  • biguint construction from uint64 and conversion to bytes (1312e9d)
  • Boolean function generic param count (ce464b4)
  • Bug in assignment logic which was prevent bytes<32> from being assigned to a bytes target (64725cc)
  • Bug in calculating bit size of arc4 encoded types (6d6ca8c)
  • Bug when creating UintN<128> instance with a literal larger than 64bits (674d6b2)
  • Bug when resolving super method via this keyword when base type is polytype's classes (eb28899)
  • Bug with path normalization of bundled dependencies (9e49314)
  • Bugs in hex decode and b32 encode (af18eb0)
  • Builder can be returned as is if ptype is an exact match (a61a2b6)
  • Bundle vscode-* dependencies as they are cjs and need to be transpiled (b883984)
  • bytes.slice and bytes.at not handling negative or missing values correctly (e6b5ba5)
  • Calculation of outDir for compilation output + negate boolean cli options which are enabled by default (3569bf4)
  • Checked flag of toFixed was being incorrectly evaluated (cbbe807)
  • circular dependency (9e300a1)
  • define isArc4 as static propery to remove explicit version dependency by testing module (2e19b22)
  • Destructuring into iterator items (dcfccab)
  • Don't allow zero arg creation of nested dynamically sized types, and require explicit size argument on box create for dynamically sized types (92a5215)
  • Don't attempt to combine source locations for array literal expressions as constant inlining can result in source locations spanning multiple files (4082e89)
  • Don't error when looking up arc4 config on contracts which have no arc4 methods (04526bf)
  • Don't implicitly load type declarations from the working directory (0c4e0f7)
  • Ensure arc4 clone validation runs when reading from dynamically constructed state proxies, and improve source location data on state expressions (64f0ef3)
  • ensure bool is returned for all calls to box_del op code (9f3c50c)
  • Ensure BoxMap is documented correctly in arc56 spec file (8408a36)
  • Ensure nested assignments use correct lvalue logic (df40d08)
  • Ensure ops which only support boolean values on the AVM receive only boolean values (4894f42)
  • Ensure switch case clauses are only evaluated if they are 'reached' (be5b880)
  • Error if a property is declared as static (d43bfde)
  • error message was changed in resource encoding test (2d28ebd)
  • Error when parsing an unsafe numeric literal (9747254)
  • Error when resolving gtxn.Transaction and discriminating by .type plus expand docs for group transactions (47ae896)
  • Expand implicit create method logic to check base contracts and test (7352755)
  • Expand supported args for uint64 constructor (df9a59b)
  • explicitly set stdio flags for puya service (65f8657)
  • export OnCompleteActionStr missed in namespace move (53c7f72)
  • Export paths for algorand-typescript package (daf87de)
  • False positive error on empty tuples (b8bb042)
  • Fix issue with type resolver not being able to resolve aliases for algo-ts types (eg. type X = bytes<32>) (30e1ddb)
  • Generate a name for anonymous types used in ABI methods + stabilise output for SingleEval nodes (49f0cd6)
  • gtxn.applicationId(Txn.groupId) returning 'no matching overloads' (ef5ec2d)
  • Handle additional edge cases when determining the out dir for a given input path (f5f35c4)
  • Handle unions of gtxn references and TransactionTypes (e000a01)
  • Ignore ClusteredContractClassType when searching for arc4 config (550016e)
  • Importing consts from external files (d7f0fd5)
  • Include new properties required by puya in awst nodes and wtypes (ccec890)
  • Incorrect type for transaction oncomplete and transaction type (c5f9ab7)
  • Issue with box value proxy not proxying all members through to proxied builder (59fea44)
  • itob for uint64 should return 8 bytes when evaluating to a constant (fadeecc)
  • Make all tuples immutable for now to match puya (441eb2d)
  • make sure that diagnostic file paths are absolute (13970ca)
  • make sure that diagnostic file paths are absolute (59a4b4f)
  • Missing args in contract methods awst output (69052e8)
  • native property of static bytes in puya-ts was throwing unexpected type error (84da125)
  • not node still requires int to be cast to bool (c58728b)
  • op codes with no arguments and void return types were throwing Not Supported: Calling void error (6e5a095)
  • Other usages of incorrect op (d17904c)
  • Out dir calculation failing when input path contains * or ** (0bdf39e)
  • Parse all modifiers on a method to determine if it is public (and hence exposed as an abi method) (855d18a)
  • Patched awst serializer to work with puya's simplified approach to default args. Can be removed once puya has been updated (d9724e0)
  • Produce better error message when using unsupported types for storage (e562393)
  • Refactor source file paths to be absolute (d29f7ae)
  • Remove circular dependencies and ensure build fails in future if one is added (20107d2)
  • Remove deprecated cli option and regenerate approvals (6a109f6)
  • Remove duplicate property for createdApplication / createdApp (f9f6740)
  • Remove optimization for re-interpret cast on integer constants (35d9216)
  • Remove superfluous line (eae8da3)
  • Remove unnecessary restriction on empty tuples (28d5738)
  • rename artifact folders to not have node version as package root for semantic release is set without node version (6f67d58)
  • Resolve issue with resolution of algo-ts types from namespace objects (005551a)
  • Respect declaration order of object properties and use field expression in place of item indexing (cda490d)
  • Restore relative paths in console output (44c5ae9)
  • return 0x for bytes() and bzero(n) for bytes<n>() (6d43aaa)
  • Return a fallback log context if none is set rather than erroring (4440b93)
  • Revert unintened change to error messsage for unsupported inequality operator (19cf669)
  • Several bugs in the box proxy api (85a25b3)
  • Start at col 0, only lines are 1-indexed (d4f58ae)
  • Support emit calls which include an explicit signature (8b75e04)
  • Template vars not getting passed through to puya in the correct format + add some additional tests around template variables (524ee6d)
  • throw error with fixed sized bytes value is passed to op code expecting a different size (bced579)
  • TransactionType enum name in PType (ef52014)
  • treat fixed sized bytes type as statically sized (e188091)
  • Type resolution of singleton types when used in generics such as with assertMatch statements (5a3a5c8)
  • typo (88310a4)
  • Typo in asset field mapping and add test (c59f287)
  • Typo in logic sig visitor and typing of options decorators + increase test coverage (a11c599)
  • typo which is setting wrong state value counts in arc32.json (2236742)
  • undo change to BytesCompat type as it is incorrect and unnecessary (20b1567)
  • Update expected output tests and standardise transient type error messages (63f78fd)
  • update generate-op-ptypes script instead of directly editing op-ptypes (8d69152)
  • Update methodSelector arg parsing to match updated stub (099eb43)
  • Urange two arg overload incorectly used a default step size of 0 instead of 1 (a6e9796)
  • Use correct case for copy readme script (2fc15ae)
  • Use correct node type for local state expressions (d1db360)
  • Use correct op (6f2d9cd)
  • Use default name of Anonymous for unnamed object types (94f03bd)
  • Use group transaction node instead of re-interpret cast for group transaction values (f61e233)
  • Use platform agnostic command name (88a08ee)
  • Use source location from concat expression when combining two constant values (4fd234a)
  • Use specific lib when parsing typescript (fec7d37)
  • use stderr for initial language server output so that it doesn't interfere with stdout (76fa74c)
  • Use unique name per temp dir rather than nesting in ./puya-ts dir to avoid permissions issues (b3059f4)
  • use valid bytes value as input to mimc op code in approval test (2b456a6)
  • vite vunerability (2deb517)
  • vite vunerability in algo-ts (0f3aa01)
  • Wait for compiler loop to complete before shutting down and ignore change events when stopping (fdf3213)
  • wtype for box_resize (f5e0a4c)

Dependencies and Other Build Updates

  • Bump algo-ts version to 1 (59fb439)
  • Bump version (b2a2a56)
  • Bundle patched typescript package with compiler and remove peer dependency on algorand-typescript (4c3010d)
  • Configure python version in CI (e8697f3)
  • Create patch release for refactor commits (e61c59e)
  • Disable PR trigger for now, add publish command for algo-ts (9462dd1)
  • Do PR build on PR into alpha branch (3270a3c)
  • Don't run commit lint on release and it checks the entire history and old commits don't lint correctly (a8d41e2)
  • Drop commitlint type requirement to a warning temporarily to allow old commit messages through (0426857)
  • Install puya compiler before testing (8530dfa)
  • Override npm version to resolve audit issue (5451cd3)
  • Pin typescript to 5.7.2 until 5.8 exits beta (71346c3)
  • Remove commit lint warnings (8945391)
  • Remove dry-run from package publish (5a777ab)
  • Specify python version for pipx install (f444d67)
  • Start algokit localnet for testing (095bc50)
  • Swap to alpha branch + house keeping (1f17b34)
  • Sync algo-ts version to puya-ts and bump node version to 22 (6f82185)
  • Sync algo-ts version to puya-ts and bump node version to 22 (a5ebd3b)
  • Tag releases in npm based on release channel (b44db85)
  • Tag releases in npm based on release channel (9d0540c)
  • Test release (312e32a)
  • Test release (b721c03)
  • Tweak approval tests for ci (eeb49fe)
  • Use "./" instead of "." (e971c5b)
  • Use latest release version of puyapy for CI (6219201)
  • Use latest test-reporting action (6b51ef6)
  • Use ts script to install supported puyapy version (daf0bde)
  • Validate that the code built for the algo-ts package matches (6600ec3)