Skip to content

Releases: ton-blockchain/acton

Trunk

15 May 15:04

Choose a tag to compare

Trunk Pre-release
Pre-release

Automated trunk build of Acton.

Built from source commit: a8dfdff

1.0.0 - 11.05.2026

11 May 08:56

Choose a tag to compare

Release Notes

Acton 1.0 is the first stable release available to everyone. It marks the
result of six months of work, thousands of engineering hours, and hundreds of
thousands of lines of code.

Acton rethinks smart-contract development on TON: fast tests, straightforward
testnet and mainnet deployment, local and production debugging, AI-assisted
workflows, and many other tools that finally make smart-contract development
productive and approachable.

Learn more about Acton on the official website:

https://ton-blockchain.github.io/acton/

Install acton 1.0.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ton-blockchain/acton/releases/download/v1.0.0/acton-installer.sh | sh

Download acton 1.0.0

File Platform Checksum
acton-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
acton-x86_64-apple-darwin.tar.gz Intel macOS checksum
acton-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
acton-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.5.0 - 10.05.2026

11 May 03:38

Choose a tag to compare

Release Notes

Acton 0.5.0 is a focused public-release follow-up to 0.4.0, adding TON Connect
support for verification approval transactions, improving typed cell and
cell-tree formatting, making mutation testing and coverage work for dependent
contracts, expanding wrapper generation and starter templates, refreshing the
Tolk compiler and TON executor config, and tightening documentation, release
CI, debugger snapshots, and UI inspection flows.

Breaking Changes and Migration

  • acton up now reads release metadata only from the public
    ton-blockchain/acton repository. The temporary fallback repository used
    during the public-release transition is no longer queried, so mirrors or
    tooling that depended on fallback release metadata should switch to the
    primary repository.
  • Compiler ABI JSON now uses client_ty_idx on struct fields that have
    @abi.clientType(...) after the Tolk compiler update. Direct ABI consumers
    should read the indexed client type from unique_types instead of relying on
    the previous field shape.
  • The Acton linter no longer ships the E023
    incoming-messages-duplicate-opcode rule because duplicate incoming-message
    opcodes are now handled by the Tolk compiler. Configurations that explicitly
    enable, disable, or explain E023 should remove that rule reference.

CLI, Wallets, and Verification

  • Added acton verify --tonconnect and --tonconnect-port so contract
    verification can be approved through a TON Connect wallet instead of a stored
    Acton wallet.
  • Added acton library publish --tonconnect and
    acton library topup --tonconnect, with --tonconnect-port, so library
    publication and top-up transactions can also be approved through TON Connect.
  • acton up now targets the public Acton release repository, keeps a hidden
    --yes flag for JetBrains plugin compatibility, and reports release lookup
    and release-list failures with clearer GitHub/network diagnostics.
  • Wallet airdrops now use the new faucet endpoint and wait for airdrop
    completion more reliably.
  • Wallet airdrop challenge handling now validates the challenge version before
    using the response.
  • Wallet airdrop challenge requests now use the faucet's JSON POST flow with
    the target address and TON airdrop type, matching the current faucet API.
  • acton script now gives a clearer error when waitForTrace() cannot find a
    trace, including the timeout path used by scripts that print the result.
  • acton verify, acton up, and related generated man/help output were
    regenerated around the new flags and release repository behavior.

Project Templates and Wrappers

  • Tolk wrapper generation now supports external incoming messages, including
    contracts that expose both internal and external message surfaces.
  • The bundled Tolk compiler/TON objects and TypeScript wrapper generator were
    updated to the Tolk 1.4.
  • Starter templates and app scaffolds were normalized across Counter, Empty,
    Jetton, NFT, and W5 Extension projects: app templates gained .env.example
    files, generated project metadata became more consistent, and the empty-app
    and W5 app templates now include project-specific AGENTS.md guidance.
  • Generated GitHub Actions workflows in starter templates are now split into
    contract and dApp checks where appropriate, cover both main and master,
    use least-privilege permissions and concurrency cancellation, and pin the
    refreshed setup-acton action.
  • App template npm run test scripts now succeed without requiring an Acton
    project, so generated dApp-only workflows can run independently from contract
    checks.
  • acton new --templates now returns richer machine-readable template
    metadata, and generated help/man output was refreshed around the updated
    template list and app scaffolds.
  • Generated contract headers now use the local Git user name when available,
    falling back to Acton User when it is missing.
  • Jetton, NFT, and W5 Extension templates received consistency fixes, including
    unified author metadata, kebab-case NFT script names, refreshed W5 wrapper
    helpers, and regenerated TypeScript wrappers.
  • The W5 Extension starter template was finalized with refreshed message
    definitions, generated Tolk wrappers, and TypeScript wrappers.
  • Template opcode and hex literal casing is now normalized to lowercase in the
    built-in templates.

Stdlib, Formatting, and ABI Decoding

  • Added the {:cell-tree} formatter for format() and println() so
    cells, slices, builders, and typed Cell<T> values can be rendered as a tree
    of cell references.
  • Typed Cell<T> values now display decoded data when the compiler ABI can
    parse the cell, improving println, formatted output, and debugger/type
    views.
  • Expectation<SendResultList>.toEmitExternalMessage<T>() now reports a much
    more actionable failure, including the searched message type/opcode and the
    transaction list context.
  • Exit-code formatting now distinguishes compute-phase and action-phase exit
    codes, so known codes are shown in the correct phase-specific context.
  • Small opcodes such as 0x1 are formatted more consistently in transaction
    and message output.
  • tolk-fmt handles ! chains more predictably and no longer breaks
    single-argument generic type syntax such as <T> in common chains.

Testing, Mutation, Coverage, and Debugging

  • Mutation testing now supports contracts that depend on the mutated contract,
    including embedded and library-ref dependencies such as Jetton minter/wallet
    setups. Dependent contracts are rebuilt with the mutated dependency override
    before child test runs.
  • Targeted acton build <contract> runs now refresh generated dependency-code
    helpers for parent contracts that embed or reference the rebuilt contract,
    preventing stale library_ref and embedded-code helper files.
  • Test trace snapshot paths now normalize test names, which makes generated
    trace artifacts more stable and filesystem-friendly.
  • Debug rendering now prints empty cells, slices, and builders as explicit
    empty cell, empty slice, and empty builder values, and storage decoding
    is more reliable in debugger snapshots.
  • Coverage now works for library-reference-based contracts such as Wallet W5.
  • Coverage now also resolves project contracts deployed from generated
    dependency-code helpers such as gen/*.code.tolk, which fixes coverage for
    dependent-contract flows like Jetton minter/wallet setups.
  • W5 debugging no longer emits an unnecessary warning and handles the W5 flow
    correctly.

UI and Trace Inspection

  • Test UI now warns when the connection to the runner is lost.
  • Parsed cell/slice views can parse values even when remaining bits are present,
    which is useful for W5 and other partially decoded payloads.
  • Parsed cell, slice, and builder values now include a button for copying the
    full hex BoC.
  • UI packages were updated alongside the compiler ABI refresh and typed-cell
    decoding changes.
  • Shared UI transaction rendering was refined for the updated tutorial and
    inspection flows, including clearer account details, disassembly, action
    summaries, transaction tree entries, and exit-code chips.

Docs, Release CI, and Internal Polish

  • Documentation gained wallet-management, verification, and deployment how-to
    guides, a refreshed quickstart/walkthrough, a full tutorial flow, agent-skills
    pages, and style corrections across Acton.toml, debugging, testing, IDE
    support, installation, libraries, and welcome pages.
  • JetBrains and VS Code documentation was expanded with reorganized screenshot
    assets, new extension feature coverage, terminal/action/test-runner views, and
    updated demo media.
  • Documentation gained new dApp development and project-management guides,
    including TypeScript wrapper workflows and expanded library, scripting,
    walkthrough, and IDE-support coverage.
  • The documentation site now redirects /docs to /docs/welcome locally and
    supports richer file-tree visualization in docs pages.
  • Documentation gained a reusable Callout component and stricter external
    link validation around redirects.
  • Release CI now generates cargo-dist manifest checksums for release binaries,
    links the released acton-installer.sh, and removes obsolete mirroring
    workflows for trunk, objects, and release artifacts.
  • Documentation deployment and labeler workflows now skip draft pull requests.
  • Dockerfile links were updated to match the current public-release layout.
  • ton-objs archive checksum mismatch diagnostics now mention
    TON_OBJS_DISABLE_ARCHIVE_SHA_VERIFY for environments that intentionally
    bypass archive verification.
  • Tree-sitter dependencies were refreshed, including the ip-address update,
    and the TON executor config was updated.

Install acton 0.5.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ton-blockchain/acton/releases/download/v0.5.0/acton-installer.sh | sh

Download acton 0.5.0

File Platform Checksum
acton-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
acton-x86_64-apple-darwin.tar.gz Intel macOS checksum
acton-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
[acton-x86_64-unknown-lin...
Read more

Release Objs

10 May 20:45

Choose a tag to compare

Release Objs Pre-release
Pre-release

Generated from TON commit: ton-blockchain/ton@b6ec13a

0.4.2 - 08.05.2026

08 May 19:37
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Release Notes

Test release.

Install acton 0.4.2

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ton-blockchain/acton/releases/download/v0.4.2/acton-installer.sh | sh

Download acton 0.4.2

File Platform Checksum
acton-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
acton-x86_64-apple-darwin.tar.gz Intel macOS checksum
acton-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
acton-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.4.1 - 08.05.2026

07 May 23:39
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Release Notes

Test release with public repository.

Install acton 0.4.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ton-blockchain/acton/releases/download/v0.4.1/acton-installer.sh | sh

Download acton 0.4.1

File Platform Checksum
acton-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
acton-x86_64-apple-darwin.tar.gz Intel macOS checksum
acton-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
acton-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.4.0 - 04.05.2026

04 May 15:08
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Release Notes

Acton 0.4.0 is a broad follow-up to 0.3.0. It stabilizes the dApp and wrapper
surface, adds project-level toolchain pinning, expands RPC, retrace, debugger,
Test UI, and localnet inspection workflows, and tightens testing, coverage,
linter, formatter, docs, templates, and editor integrations.

Breaking Changes and Migration

  • The short -v verbosity flag was removed from acton test,
    acton script, and acton retrace. Use the long --verbose flag for
    executor logs and retrace detail output.

    # before
    acton test -v
    acton script scripts/deploy.tolk -v
    
    # after
    acton test --verbose
    acton script scripts/deploy.tolk --verbose

    Root acton -v remains the version shortcut, so downstream wrappers should
    avoid assuming that -v means command-local verbosity.

  • SendResultList.wait() was renamed to
    SendResultList.waitForFirstTransaction() and now returns SendResult?
    instead of bool. This makes the confirmed on-chain root transaction
    available to scripts instead of only reporting whether it was found.

    // before
    val ok = txs.wait();
    if (!ok) {
        return;
    }
    
    // after
    val applied = txs.waitForFirstTransaction();
    if (applied == null) {
        return;
    }
    println("applied at lt {}", applied!.lt);
    
  • acton build now writes Tolk compiler ABI JSON files to build/abi/ by
    default. If custom tooling reads ABI artifacts from the main build output
    directory, update it to read build/abi/<contract>.json or pin the old-style
    location explicitly:

    [build]
    output-abi = "build"

    The CLI override is acton build --output-abi <DIR>.

  • The TypeScript wrapper directory spelling was normalized from
    wrapper-ts/ to wrappers-ts/. Update Acton.toml,
    frontend imports, generated-project checks, and documentation snippets that
    still reference the singular form.

    # before
    [wrappers.typescript]
    output-dir = "app/src/wrapper-ts"
    
    # after
    [wrappers.typescript]
    output-dir = "app/src/wrappers-ts"
  • Acton HTTP clients now ignore HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, and
    system proxy settings by default to avoid macOS sandbox proxy autodetection
    crashes. Set ACTON_USE_PROXY=1 or ACTON_USE_PROXY=true when your
    environment requires those proxy settings.

  • Several linter diagnostics were reclassified from error-style E... codes
    to style S... codes, and the linter docs were regenerated around the new
    numbering. Update Acton.toml lint configuration, CI filters, snapshot
    expectations, and inline suppressions if they reference numeric rule codes
    directly.

  • Compiler ABI JSON now stores canonical types in unique_types and references
    them by ty_idx, including monomorphic struct and alias instantiations.
    Tooling that reads ABI JSON directly should stop expecting inline ty,
    target_ty, body_ty, return_ty, or prefix_str fields and use the new
    indexed fields instead. The reflection helpers
    reflect.typeAbiJsonOf*() were replaced with reflect.typeUniqueIdxOf*().

CLI, Project, and Network Workflows

  • Added project-level toolchain pinning through [toolchain] acton = "..."
    in Acton.toml. Project commands check the configured Acton version before
    running, while acton up remains available from the same directory so users
    can install the expected version.
  • New projects and templates now pin the current Acton version, include clearer
    .env.example guidance, and document proxy and TonCenter API-key behavior
    more explicitly.
  • Added acton init --stdlib-only for refreshing .acton/ without reading or
    patching Acton.toml.
  • acton wallet list no longer requires an Acton.toml, which makes wallet
    inventory commands usable outside an initialized project.
  • acton script now supports TON Connect flows, ABI-driven argument parsing,
    clearer trailing argument forwarding with --, better non-interactive
    wallet errors, and remote-state cache invalidation after broadcasting.
  • Testnet wallet airdrop requests now include a stable non-empty
    x-device-uid header derived from the local machine identifier, while
    keeping the device value out of the JSON claim payload.
  • Added acton rpc trace for rendering TonCenter v3 traces as stable decoded
    transaction trees, plus acton rpc block and acton rpc block-number for
    latest masterchain block inspection.
  • Added Nushell support to acton completions, while the completion generator
    and root help now share the same base command metadata, including version
    flag aliases.
  • Remote account-state loading now uses /api/v2/getShardAccountCell where
    available, and localnet implements the same endpoint for compatibility with
    the emulator and tracing stack.
  • acton compile now exits with code 1 for missing files and reports
    conflicting stdout/file output choices more clearly.
  • Acton HTTP calls now send a versioned acton/<version> User-Agent across
    update, doctor, wallet, verifier, localnet, and API-client workflows.
  • acton up no longer special-cases Homebrew-style installation paths.
  • CLI help, command descriptions, color handling, wallet setup hints, and
    non-interactive acton new errors were tightened across the command surface.

Wrappers, Templates, and dApps

  • Added Vite-based dApp scaffolding through acton init --create-dapp,
    including standalone empty-app support and generated TypeScript wrapper usage
    in Counter, Jetton, NFT, and wallet-extension flows.
  • Added the Wallet W5 Extension template and aligned it with the Counter,
    Jetton, NFT, and empty-app template families.
  • Templates now share more app components and styles, use Acton's TON Connect
    manifest, display full traces in scripts, pin Acton versions, and include
    stronger README, script, ESLint, wrapper, and byte-for-byte consistency
    checks.
  • App templates now inject normalized npm package names while preserving
    package.json and package-lock.json field order, avoiding unnecessary
    lockfile churn in generated projects.
  • Counter, Jetton, NFT, empty-app, and wallet-extension templates were refined
    with owner checks, cleaner tests, better TonCenter key handling, Tolk
    metadata strings, fewer unnecessary casts, and more consistent generated app
    wiring.
  • Jetton, NFT, and wallet-extension template tests now use more consistent
    import grouping, helper placement, and test <domain>: name prefixes, and
    Jetton scripts now point their default metadata image at the Acton logo
    instead of the broken TON symbol URL.
  • Added acton wrapper --all for regenerating wrappers across configured
    contracts.
  • Generated wrappers now integrate typed @abi.clientType(...) declarations,
    use .gen filenames, avoid unused imports, include explicit return types,
    and no longer suppress formatter and linter checks by default.
  • TypeScript wrapper generation was updated and template commands now expose a
    clearer wrapper-regeneration path for projects that include generated app
    code.

Testing, Coverage, and Stdlib

  • Added @test.skip("description"). Skip and TODO reasons now appear in
    console output, Test UI, JUnit, and TeamCity reports.
  • acton test now fails when no tests are selected, validates custom networks
    earlier, reports missing wallets with better setup guidance, and correctly
    merges CLI flags with Acton.toml settings.
  • Fork-mode tests now preserve remote last-transaction LT/hash metadata from
    TonCenter, and additional fork-mode coverage was added for scripts and
    test-runner flows.
  • Mutation testing now checks that the baseline test run is green before
    mutating and gives clearer output when filtering selects no baseline tests.
  • JUnit and TeamCity reports now include richer captured stdout/stderr,
    location hints, skip/TODO details, and failure context.
  • The dot reporter prints clearer runtime and failure details, avoids gas
    snapshot noise when tests fail, and benefits from faster message processing.
  • Test runner filesystem helpers and snapshot APIs now reject absolute paths,
    parent-directory escapes, and symlink escapes outside the project root.
  • Coverage excludes .test.tolk files by default, handles very large VM logs
    better, and keeps the branch-coverage work from 0.3.0 available in the normal
    reporting flow.
  • Stdlib gained SendResultList.waitForTrace(), interactive promptInt and
    promptAddress, better non-interactive prompt fallbacks, array .map(),
    .filter(), and .each(), BASECHAIN, state-init search parameters, and
    external-in transaction body/message decoding.
  • expect().toEqual() and expect().not.toEqual() now compare typed
    values instead of raw tuple layouts, which fixes nullable struct and union
    equality and produces clearer diffs for nested structs, arrays, and top-level
    union cases.
  • Fixed Expectation<map<K, V>>.toHaveLength value ordering and improved
    net.isDeployed, matcher behavior, bounce opcode handling, empty-data
    opcode loading, and typed mismatch rendering for env.slice() values.

Debugging, Tracing, and UI

  • Console transaction trees, retrace, Test UI, and localnet explorer views now
    cover external-in, tick-tock, reserve, send-message, setCode, and
    changeLibrary actions with richer ABI-decoded bodies, opcode chips, mode
    descriptions, source locations, failure context, and fallback rendering.
  • On-demand disassembly is available for setCode and embedded
    changeLibrary actions, and acton disasm --json can emit machine-readable
    disassembly with source-map ranges.
  • acton disasm is more tolerant of malformed or partial code slices: invalid
    opcodes and undecompilable inline/ref code are emitted as embed x{...}
    slices, dic...
Read more

0.3.2 - 27.04.2026

28 Apr 07:50
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Release Notes

Acton 0.3.2 expands project scaffolding, wrapper generation, disassembly,
script argument handling, and stdlib test APIs while tightening formatter,
linter, debugger, localnet, and reporting behavior. It also refreshes the
documentation site and fixes several wrapper, template, logging, and UI issues
found after 0.3.1.

Added

  • Added acton init --create-app for scaffolding Vite-based TypeScript apps,
    along with app templates and generated TypeScript wrappers for Counter,
    Jetton, and NFT projects.
  • Added acton meta get-schema support for the custom mutation rules schema
    and the lint JSON report schema.
  • Added SendResultList.waitForTrace() and localnet v3 trace lookup support,
    including msg_hash-based trace discovery.
  • Added stdlib support for interactive promptInt and promptAddress, array
    .map(), .filter(), and .each(), BASECHAIN, external-in transaction
    body/message decoding, and state-init search parameters.
  • Added a linter inspection for documenting enum values used in throw ...
    paths. The inspection is available but allowed by default.
  • Added acton disasm --json, which returns machine-readable disassembly with
    optional source-to-assembly mapping ranges from --source-map.
  • Added ABI-driven parsing and validation for acton script arguments, with
    clearer support and error reporting for arrays, nullable values, addresses,
    strings, cells, and other CLI-passed types.
  • Added tree-sitter support for annotated struct fields and typed
    @abi.clientType(...) declarations.

Changed

  • Generated wrappers now use .gen filenames, avoid unused imports, include
    explicit return types, and stop suppressing linter and formatter checks by
    default.
  • Counter, Jetton, and NFT templates were refined with unified contract
    sources, .env.example-based setup, clearer wrapper regeneration flows,
    prettier README/tests/scripts, app flows, owner checks, and consistency
    checks for generated wrappers.
  • The dot reporter now prints richer failure/runtime details, supports more
    cases with colors, and benefits from faster message processing.
  • Coverage and VM log handling now scale better for very large VM logs.
  • tolk-fmt now handles file header comments, single string annotations,
    simple literal function calls, and type instantiation formatting more
    predictably.
  • Debugger stepping and rendering were improved for child VMs, stop requests,
    parent-frame locals, invalid-message stops, and union type display.
  • Documentation gained a refreshed landing page, video previews, linter error
    previews, link validation, PR previews, and updated install URLs.
  • Internal crate names were normalized to the current kebab-case naming style.
  • state_init now uses Cell<StateInit?> to match the latest Tolk 1.4
    expectations.

Fixed

  • Fixed wrapper generation around unused imports and shard address calculation.
  • Fixed NFT and Jetton template issues, including TonCenter key handling in app
    templates.
  • Fixed the Counter app template by aligning wallet flows with TonConnect UI.
  • Fixed net.isDeployed and related matcher logic for prefunded and
    deterministic deploy paths.
  • Fixed empty-data handling in TlbMessageRelaxedGeneric.loadOpcode and
    improved bounced opcode matching for the new prefix format.
  • Fixed logging setup and addressed a UI security audit finding.
  • Fixed docs cache and missing documentation pages in CI.

Install acton 0.3.2

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ton-blockchain/acton/releases/download/v0.3.2/acton-installer.sh | sh

Download acton 0.3.2

File Platform Checksum
acton-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
acton-x86_64-apple-darwin.tar.gz Intel macOS checksum
acton-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
acton-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.3.1 - 23.04.2026

22 Apr 23:23
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Release Notes

Acton 0.3.1 is a focused follow-up to 0.3.0. It improves the test runner and
both UI surfaces, expands transaction and action inspection in the Test UI and
localnet explorer, and smooths a handful of scripting, formatting, and docs
rough edges.

Added

  • Added support for @test.skip("description") in the test runner. Skip and
    TODO reasons now flow through console output, the Test UI, JUnit, and
    TeamCity reporting.
  • Added Nushell support to acton completions.
  • Added a new lint inspection that warns about explicit .toCell() inside
    createMessage({ body: ... }), where the extra conversion is usually
    unnecessary.
  • Added on-demand disassembly for setCode and embedded changeLibrary
    actions in the Test UI and localnet explorer.

Changed

  • Expanded Test UI and localnet explorer transaction views for
    external-in and tick-tock flows, including better root visualization,
    richer phase and action details, and better handling of large traces.
  • Send-message actions now show ABI-decoded bodies, opcode chips, clearer
    send-mode descriptions, and better fallback handling for raw and bounced
    payloads.
  • reserve, setCode, and changeLibrary actions now render with clearer
    mode details, failure context, and code/library inspection.
  • Parsed maps and storage diffs are now rendered more readably in transaction
    details and tree tooltips, and oversized trace selectors/tooltips are now
    scrollable instead of stretching the layout.
  • tolkfmt now preserves user-authored line breaks in function calls,
    function parameter lists, and union type aliases.
  • acton up no longer special-cases Homebrew-style installation paths.

Fixed

  • Fixed net.sendExternal() on real networks and cleaned up the surrounding
    wait-for-transaction flows used by templates and scripts.
  • Fixed a 404 on optional coverage loading in the Test UI.
  • Fixed several broken docs links and generated documentation references.

Install acton 0.3.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ton-blockchain/acton/releases/download/v0.3.1/acton-installer.sh | sh

Download acton 0.3.1

File Platform Checksum
acton-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
acton-x86_64-apple-darwin.tar.gz Intel macOS checksum
acton-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
acton-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum

0.3.0 - 20.04.2026

20 Apr 14:13
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Release Notes

Acton 0.3.0 focuses on cleaning up and consolidating the surface introduced in
0.2.0. It renames several CLI and manifest concepts around broadcasting,
local execution, wrappers, and imports; reorganizes the Acton stdlib; and adds
a richer localnet explorer, much stronger debugger output, better coverage and
test-runner performance, Tolk 1.4 support, and a new NFT starter template.

Breaking Changes and Migration

  • acton script no longer uses --broadcast. Passing --net <network> now
    both selects the live network and enables real broadcasting. Local emulation
    is still the default when --net is omitted.

    # before
    acton script scripts/deploy.tolk --broadcast --net testnet
    
    # after
    acton script scripts/deploy.tolk --net testnet

    If you previously used --broadcast in project scripts, README snippets, CI
    jobs, or shell aliases, remove it everywhere. If you still want local
    execution against remote state, keep using --fork-net without --net.

  • TonCenter authentication is now environment-only and split by network.
    User-facing --api-key flags and the [test].api-key config field were
    removed. Use TONCENTER_TESTNET_API_KEY for testnet flows and
    TONCENTER_MAINNET_API_KEY for mainnet flows.

    # before
    acton test --fork-net testnet --api-key YOUR_API_KEY
    acton script scripts/deploy.tolk --net mainnet --api-key YOUR_API_KEY
    
    # after
    TONCENTER_TESTNET_API_KEY=YOUR_API_KEY acton test --fork-net testnet
    TONCENTER_MAINNET_API_KEY=YOUR_API_KEY acton script scripts/deploy.tolk --net mainnet

    Built-in mainnet/testnet commands now pick the matching env var
    automatically. For custom:<name>, Acton reads
    <NORMALIZED_NAME>_API_KEY instead, for example custom:foo-bar ->
    FOO_BAR_API_KEY. The old shared TONCENTER_API_KEY fallback is gone.

  • acton litenode was renamed to acton localnet, and the manifest section
    [litenode] was renamed to [localnet]. The network name stays localnet,
    so --net localnet and [networks.localnet] do not change.

    # before
    [litenode]
    port = 3010
    fork-net = "testnet"
    
    # after
    [localnet]
    port = 3010
    fork-net = "testnet"

    Update CLI commands, docs links, helper scripts, and config lookups that
    still refer to litenode.

  • Acton.toml renamed [mappings] to [import-mappings].

    # before
    [mappings]
    wrappers = "tests/wrappers"
    
    # after
    [import-mappings]
    wrappers = "wrappers"

    The old section name is not the canonical config surface anymore, so rename
    it instead of keeping compatibility shims in downstream tooling.

  • Contract config field name was renamed to display-name. The
    [contracts.<NAME>] key is now the canonical contract name used for CLI
    selection, dependency naming, helper generation, and wrapper generation;
    display-name is an optional UI/log label only.

    # before
    [contracts.counter]
    name = "Counter"
    src = "contracts/counter.tolk"
    
    # after
    [contracts.Counter]
    display-name = "Counter"
    src = "contracts/Counter.tolk"

    New scaffolds now use PascalCase contract names and filenames for consistency,
    but the hard migration requirement for existing projects is the
    name -> display-name rename. If you keep older contract keys, helper file
    names and generated function names continue to follow those keys.

  • Default generated Tolk wrapper locations moved from tests/wrappers/ to
    wrappers/ in standard layouts, and from contracts/tests/wrappers/ to
    contracts/wrappers/ in --app layouts. The default @wrappers mapping was
    updated accordingly.

    If your tests, scripts, editors, or CI still import or watch the old paths,
    either move the files or pin the legacy layout explicitly:

    [wrappers.tolk]
    output-dir = "tests/wrappers"
    test-output-dir = "tests"
    
    [import-mappings]
    wrappers = "tests/wrappers"
  • Default generated TypeScript wrapper output moved from wrappers/ to
    wrapper-ts/.

    If your frontend imports from the old directory, either update the import
    path or pin the old output directory:

    [wrappers.typescript]
    output-dir = "wrappers"
  • Generated dependency helper files were renamed from
    <dependency>_code.tolk to <dependency>.code.tolk.

    # before
    gen/jetton-wallet_code.tolk
    
    # after
    gen/JettonWallet.code.tolk
    

    Update any checked-in generated helpers, import statements, globs, and
    scripts that reference the old _code suffix.

  • The test runner now recognizes only dotted @test.* annotations. Legacy
    object-style @test({...}) forms are ignored.

    // before
    @test({ skip: true })
    @test({ todo: "later" })
    @test({ fail_with: 42 })
    @test({ gas_limit: 1000 })
    @test({ fuzz: { runs: 64, seed: 42 } })
    
    // after
    @test.skip
    @test.todo("later")
    @test.fail_with(42)
    @test.gas_limit(1000)
    @test.fuzz({ runs: 64, seed: 42 })
    

    Update all existing test sources before relying on skip/todo/fail/fuzz
    behavior in 0.3.0.

  • acton test and acton script no longer print low-level executor debug
    logs by default. If you relied on the old always-verbose behavior for CI,
    snapshots, troubleshooting, or debug.dumpStack() output, pass -v /
    --verbose explicitly.

    # before
    acton test
    acton script scripts/debug.tolk
    
    # after, to keep the old debug-log-heavy output
    acton test -v
    acton script scripts/debug.tolk --verbose

    Verbosity above one level is not supported yet, so use -v once instead of
    -vv.

  • Lint suppression comments were renamed from
    // acton-disable-next-line <rule> to
    // check-disable-next-line <rule>.

    // before
    // acton-disable-next-line unused-variable
    
    // after
    // check-disable-next-line unused-variable
    
  • The Acton stdlib import surface was reorganized in
    #849. Several top-level
    modules were flattened, several testing/emulation APIs moved into
    better-scoped modules, and a few legacy paths were removed.

    Before After Notes
    @acton/build/build @acton/build Flat import path
    @acton/crypto/crypto @acton/crypto Flat import path
    @acton/ffi/ffi @acton/ffi Flat import path
    @acton/promts/prompts @acton/prompts Fixed typo and flattened path
    @acton/testing/transaction_expect @acton/emulation/network plus @acton/testing/expect Transaction matchers now live with SendResultList
    @acton/testing/outlist_expect @acton/types/out_actions plus @acton/testing/expect Out-action matchers now live with out-action types
    @acton/emulation/tracing acton test --save-test-trace, SendResultList.giveName(...), and the saved-trace/Test UI workflows Trace export moved out of the old stdlib module
    @acton/vm/vm use the specialized replacements in @acton/emulation/testing, @acton/emulation/network, and @acton/types/* For example, vm.registerLibrary(...) became testing.registerLibrary(...)

    If you maintain custom helper libraries or examples, search for the removed
    paths directly and rewrite imports rather than relying on transitive aliases.

  • Build-owned generated artifacts now live under build/ instead of .acton/.
    This affects shared compilation cache, saved traces, mutation sessions, and
    project-local logs:

    Before After
    .acton/cache build/cache
    .acton/traces build/traces
    .acton/mutation-sessions build/mutation-sessions
    .acton/logs build/logs

    .acton/ still remains the home of the bundled Acton stdlib and other
    project-managed support files, so do not delete it. Update CI caches,
    cleanup scripts, editor integrations, and .gitignore rules that still
    assume build-owned artifacts live under .acton/.

  • Raw Tolk compiler JSON now follows upstream snake_case field names instead
    of camelCase. This is primarily a breaking change for custom integrations
    that consume compiler ABI or source-map JSON directly. If you only use
    acton build, acton wrapper, or the bun...

Read more