pontil Changelog
2.0.0 / 2026-05-11
Breaking Changes
Internal refactoring has removed pontil/errors and two internal modules. This
will mostly affect pattern matching on pontil.PontilError variants instead
of pontil/errors.PontilError variants.
Function Portability and Output Mode
All public functions are annotated as either {portable} or {actions}. The
former are usable with any Gleam program while the latter assume that the Gleam
program is being run in a GitHub Actions (or compatible) environment.
Portable logging functions (notice, etc.) will output in GitHub actions format
unless the output mode has changed. This can be managed with the new
set_output_mode function and the constructors action_mode (the default,
issues GitHub Actions commands), plaintext_mode (prefixed plaintext logging),
and ansi_mode (ANSI coloured logging).
Some functions like set_secret, export_variable, and add_path have extra
behaviour when running under GitHub Actions, but perform their normal operation
otherwise.
New Features
-
Exposed output mode configuration with
set_output_mode, making pontil logging functions more useful for non-action environments. The default behaviour is GitHub Actions output mode. Three built-in mode constructors are also provided:action_mode,plaintext_mode, andansi_mode. -
Extended
set_secretand addedset_secretsto keep track of values that should be masked. This will allow secrets to be automatically masked with non-GitHub Actions output modes. -
Added
mask_secretsto permit secret masking directly. -
Added
in_actionsfunction so consumers ofpontil/corecan determine whether they are running under GitHub Actions or not. -
Added
env_get_nonemptyfunction that returns anOptionvalue of the environment variable only if it is not an empty""value. -
try_promisehas been renamed totry_sync; the old name remains with a deprecation warning.
Documentation
- Updated documentation and added a new guide on best practices.
1.0.1 / 2026-05-07
-
Documentation and repo updates. The symlinks to the supporting tools have been removed from the directory and added as sidebar links to the root file in the generated documentation.
-
The Writing a GitHub Action guide has been updated to encourage the use of
pontil_buildin favour of directesgleamusage. -
Added the missing wrapper for
core.set_exit_code.
1.0.0 / 2026-04-22
This is the first major release of pontil, now covering all functions in
actions/core, including the OIDC function, get_id_token.
There are breaking changes to this release from the preview release:
-
BREAKING:
pontilhas been split into four different packages,pontil(this package),pontil_core(pontil/core),pontil_platform(pontil/platform), andpontil_summary(pontil/summary). If you are just building GitHub Actions with the JavaScript target,pontilandpontil/summaryare all you need.-
BREAKING:
pontilno longer supports the Erlang target. There is no clean way to support both Erlang and JavaScript runtimes with a single package when the different async models become involved. If there is interest in an Erlang variant, it is possible to create apontil_erlangpackage based onpontil_core. -
BREAKING:
pontil/platformis now its own package,pontil_platform. If platform-dependent behaviours are required, remember togleam add pontil_platform@1andimport pontil/platform. -
BREAKING:
pontil/summaryis now its own package,pontil_summary. If you are creating an action summary, justgleam add pontil_summary@1andimport pontil/summary.
-
-
Implemented
pontil.get_id_token. Portions of actions/http-client have been implemented as pontil-internal wrappers aroundgleam/http/requestandgleam/fetch. These may eventually be hoisted for public use, but not all of the features present work with the implementation ofgleam_fetchas of the release date (note that there is a PR in progress that will help). -
pontil.set_secretnow returns the secret value so that it can be used in a pipeline or as the last value of the calling function. -
Input functions that take options have changed names and signatures. Instead of
_with_options, the suffix is now_optsand it takes a list ofInputOptionsvariants instead of anInputOptionsrecord.// old get_boolean_input_with_options(message, InputOptions(required: False, trim_whitespace: True)) get_input_with_options(message, InputOptions(required: True, trim_whitespace: False)) get_multiline_input_with_options(message, InputOptions(required: True, trim_whitespace: True)) // new get_boolean_input_opts(message, []) get_input_opts(message, [InputRequired, PreserveInputSpaces]) get_multiline_input_opts(message, [InputRequired])This better aligns with the interface for
AnnotationProperties. -
Issue logging functions that take properties have changed names from a
_with_propertiessuffix to_annotationsuffix. -
pontil.groupis synchronous;pontil.group_asynchas been added for promise-returning callbacks.group_asyncmust be used when calling functions that return aPromise. -
Additional helper functions have been added based on the experience of using
pontilin starlist:-
pontil.register_process_handlersto register handlers to catch unhandled promise rejections and uncaught exceptions in the Node process.pontil.register_default_process_handlersregisterspontil.set_failedas the handlers for both. -
pontil.try_promiselifts synchronousResultfunctions intoPromise(Result)chains.
-
-
Added guides for writing a GitHub Action with Pontil and for understanding the differences between Pontil and the GitHub Actions toolkit.
-
Fixed a bug with annotation processing.
0.1.0 / 2026-04-04
Initial release covering most of actions/core. This package was built with the assistance of Kiro.