Skip to content

Releases: ladohq/lado

LADO 0.40.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 05:50
8fae56a
  • Install with Docker: docs/install.md has a Docker section, from nothing to an agent that pushes over ssh, with compose first (compose.yaml of the latest release, .env, docker compose up -d), the logins, update, going back, a second LADO, removal of only its own container and volume, and what to do when something goes wrong. README and docs/install.md now present two ways to install, Docker first and recommended, then PyPI, and say how to update each. Every GitHub release now carries its compose.yaml, and each update downloads its version's (releases/download/v<version>/compose.yaml) before docker compose up -d. Coming from 0.39.0 needs the new compose.yaml: under 0.39.0's the container has no git identity (LADO_GIT_NAME, LADO_GIT_EMAIL), no ssh agent (LADO_SSH_AGENT) and no secrets/.
  • LADO's image knows GitHub's ssh host keys: an agent's first git push over ssh from a new home volume no longer fails with Host key verification failed.
  • In LADO's container the web UI's Clone from URL works with an ssh address (git@github.com:...): the UI server now uses the host's ssh agent (LADO_SSH_AGENT) as the agents do. Before, the branch list failed with github.com refused this machine's ssh key while ssh -T git@github.com worked.
  • In LADO's container, a session folder outside the projects folder (LADO_REPOS), which your computer does not see, gets a warning in the New session window (under Where and Clone into) and at lado start; the session still starts. Outside a container nothing changes.
  • The comment of a gate's answer shows once in the chat, under the run's move it made, no longer also under the closed gate. A closed gate is a folded card that says it opens (its flag, run and state, the answer's chip coloured by where the run went, by whom, a chevron); opened, it shows the question and the answer on your ground, and folds the note (6 lines, then Show more) and the supervisor's recommendation ("you agreed" or "you answered otherwise") into a line each. Your own moves in a run's group stand on your ground, as your messages do. lado.db goes to schema 30.
  • Renaming a session in the UI takes its name on Tab: while the title field is empty, or holds a start of the name, the rest of the name shows grey, and Tab (or → at the end) makes the name the field's text with the caret at its end, to type on and save with Enter. The hint under the field says so; with any other text Tab leaves the field and saves it, as before.
  • LADO's container takes its sessions with it: docker compose down or stop, docker stop, or Docker's own end stops every running session as lado stop would (docker logs: lado: the container stops: stopped sessions "app"; they resume at its start), and the container's next start, after a new image's migration too, resumes them, as it does the sessions of a container that was killed (lado: resumed session "app" at the container's start). Sessions stopped by hand stay stopped; a session that cannot be resumed stays stopped with the reason in docker logs and is not tried again. Each resumed supervisor takes one model turn at the start and starts the workers its open flow runs need. Outside a container nothing changes.
  • Agents get variables from a folder of files: with LADO_ENV_DIR set to an absolute path, each file directly in it is a variable (its name the file's, its value the content), laid over the login shell's environment at every agent's start, so a new file reaches the next agent and a kit's MCP server that needs it starts. A file LADO cannot use (a reserved name such as PATH or LADO_*, not a variable name, over 64 KiB, not text) is named in lado start's warnings and by lado doctor (Variables from outside, names only), never applied. Without LADO_ENV_DIR, or with no folder or the null device at its path, nothing changes and nothing is said.
  • LADO's container gives the agents real access: variables from an optional secrets/ next to compose.yaml, mounted read-only at /run/secrets (GH_TOKEN, CLAUDE_CODE_OAUTH_TOKEN, a kit's key), never in docker inspect; git's identity from LADO_GIT_NAME and LADO_GIT_EMAIL in .env; git over https to github.com through gh (GH_TOKEN or gh auth login inside); and the host's ssh agent through LADO_SSH_AGENT without root's group. compose starts without secrets/, and LADO says nothing about it (lado doctor says how to give secrets); LADO_SECRETS=./secrets in .env and mkdir -m 700 secrets enable it, and compose then refuses to start while the folder is missing. The headers say how Claude Code, OpenCode and Kilo log in.
  • A tab of the web UI closed or reloaded the very moment its clone shows running now cancels the clone at once too; before, the server cancelled it only after 150 s.
  • The fields of the web UI's waiting card where the human writes, an own answer, a skip's comment and a gate's comment for the next step, open 3 lines high and grow with the text up to 8 lines, then scroll inside, like the composer. They have no resize handle any more, which grew a field under the Send button and off the screen; while the human types, the field's lower edge stays in view.
  • The web UI's waiting card no longer cuts the focus ring of a gate's comment field on its left side, nor the ring of an own answer or of a question the human came to from the feed: the ring shows whole on every side, and nothing in the card moves.
  • The UI's Activity tab: the checkbox "Show agent messages" is now a small icon at the end of the team's row, "Messages between agents", whose tooltip says whether the messages agents write to each other are shown and what a click does; the agents' chips no longer wrap for it in a narrow column.
  • One-line texts may hold no hidden characters: a session's title, an agent's message summary, question and choices, note_summary and artifact title or summary are refused when they hold a line or paragraph separator, a bidi control (U+202A–U+202E, U+2066–U+2069) or a zero-width character (U+200B, U+FEFF), as they were for control characters, and the error names it (a title is one line of visible text: U+202E RIGHT-TO-LEFT OVERRIDE is not allowed); an emoji joined by U+200D stays. The human's chat message, gate comment, lado flow-set reason and uploaded file name are cleaned of them for their one-line form, and the whole text stays in the body (a lado flow-set note now keeps the whole reason too).
  • Upgrade: schema 30, restart running sessions after the update (lado update does it).
  • API: each closed gate in the UI server's gates keeps the run's event that closed it (closed_by_event).

Update with lado update, or install it with uv tool install lado==0.40.0.

Docker: docker pull ghcr.io/ladohq/lado:0.40.0.

PyPI: https://pypi.org/project/lado/0.40.0/

LADO 0.40.0rc1

LADO 0.40.0rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Oct 19:56
33f03ba
  • Install with Docker: docs/install.md has a Docker section, from nothing to an agent that pushes over ssh, with compose first (compose.yaml of the latest release, .env, docker compose up -d), the logins, update, going back, a second LADO, removal of only its own container and volume, and what to do when something goes wrong. README and docs/install.md now present two ways to install, Docker first and recommended, then PyPI, and say how to update each. Every GitHub release now carries its compose.yaml, and each update downloads its version's (releases/download/v<version>/compose.yaml) before docker compose up -d. Coming from 0.39.0 needs the new compose.yaml: under 0.39.0's the container has no git identity (LADO_GIT_NAME, LADO_GIT_EMAIL), no ssh agent (LADO_SSH_AGENT) and no secrets/.
  • LADO's image knows GitHub's ssh host keys: an agent's first git push over ssh from a new home volume no longer fails with Host key verification failed.
  • In LADO's container the web UI's Clone from URL works with an ssh address (git@github.com:...): the UI server now uses the host's ssh agent (LADO_SSH_AGENT) as the agents do. Before, the branch list failed with github.com refused this machine's ssh key while ssh -T git@github.com worked.
  • In LADO's container, a session folder outside the projects folder (LADO_REPOS), which your computer does not see, gets a warning in the New session window (under Where and Clone into) and at lado start; the session still starts. Outside a container nothing changes.
  • The comment of a gate's answer shows once in the chat, under the run's move it made, no longer also under the closed gate. A closed gate is a folded card that says it opens (its flag, run and state, the answer's chip coloured by where the run went, by whom, a chevron); opened, it shows the question and the answer on your ground, and folds the note (6 lines, then Show more) and the supervisor's recommendation ("you agreed" or "you answered otherwise") into a line each. Your own moves in a run's group stand on your ground, as your messages do. lado.db goes to schema 30.
  • Renaming a session in the UI takes its name on Tab: while the title field is empty, or holds a start of the name, the rest of the name shows grey, and Tab (or → at the end) makes the name the field's text with the caret at its end, to type on and save with Enter. The hint under the field says so; with any other text Tab leaves the field and saves it, as before.
  • LADO's container takes its sessions with it: docker compose down or stop, docker stop, or Docker's own end stops every running session as lado stop would (docker logs: lado: the container stops: stopped sessions "app"; they resume at its start), and the container's next start, after a new image's migration too, resumes them, as it does the sessions of a container that was killed (lado: resumed session "app" at the container's start). Sessions stopped by hand stay stopped; a session that cannot be resumed stays stopped with the reason in docker logs and is not tried again. Each resumed supervisor takes one model turn at the start and starts the workers its open flow runs need. Outside a container nothing changes.
  • Agents get variables from a folder of files: with LADO_ENV_DIR set to an absolute path, each file directly in it is a variable (its name the file's, its value the content), laid over the login shell's environment at every agent's start, so a new file reaches the next agent and a kit's MCP server that needs it starts. A file LADO cannot use (a reserved name such as PATH or LADO_*, not a variable name, over 64 KiB, not text) is named in lado start's warnings and by lado doctor (Variables from outside, names only), never applied. Without LADO_ENV_DIR, or with no folder or the null device at its path, nothing changes and nothing is said.
  • LADO's container gives the agents real access: variables from an optional secrets/ next to compose.yaml, mounted read-only at /run/secrets (GH_TOKEN, CLAUDE_CODE_OAUTH_TOKEN, a kit's key), never in docker inspect; git's identity from LADO_GIT_NAME and LADO_GIT_EMAIL in .env; git over https to github.com through gh (GH_TOKEN or gh auth login inside); and the host's ssh agent through LADO_SSH_AGENT without root's group. compose starts without secrets/, and LADO says nothing about it (lado doctor says how to give secrets); LADO_SECRETS=./secrets in .env and mkdir -m 700 secrets enable it, and compose then refuses to start while the folder is missing. The headers say how Claude Code, OpenCode and Kilo log in.
  • A tab of the web UI closed or reloaded the very moment its clone shows running now cancels the clone at once too; before, the server cancelled it only after 150 s.
  • The fields of the web UI's waiting card where the human writes, an own answer, a skip's comment and a gate's comment for the next step, open 3 lines high and grow with the text up to 8 lines, then scroll inside, like the composer. They have no resize handle any more, which grew a field under the Send button and off the screen; while the human types, the field's lower edge stays in view.
  • The web UI's waiting card no longer cuts the focus ring of a gate's comment field on its left side, nor the ring of an own answer or of a question the human came to from the feed: the ring shows whole on every side, and nothing in the card moves.
  • The UI's Activity tab: the checkbox "Show agent messages" is now a small icon at the end of the team's row, "Messages between agents", whose tooltip says whether the messages agents write to each other are shown and what a click does; the agents' chips no longer wrap for it in a narrow column.
  • One-line texts may hold no hidden characters: a session's title, an agent's message summary, question and choices, note_summary and artifact title or summary are refused when they hold a line or paragraph separator, a bidi control (U+202A–U+202E, U+2066–U+2069) or a zero-width character (U+200B, U+FEFF), as they were for control characters, and the error names it (a title is one line of visible text: U+202E RIGHT-TO-LEFT OVERRIDE is not allowed); an emoji joined by U+200D stays. The human's chat message, gate comment, lado flow-set reason and uploaded file name are cleaned of them for their one-line form, and the whole text stays in the body (a lado flow-set note now keeps the whole reason too).
  • Upgrade: schema 30, restart running sessions after the update (lado update does it).
  • API: each closed gate in the UI server's gates keeps the run's event that closed it (closed_by_event).

This is a pre-release: a LADO on a final release is not offered it. Update to it with lado update 0.40.0rc1, or install it with uv tool install lado==0.40.0rc1.

Docker: docker pull ghcr.io/ladohq/lado:0.40.0rc1.

PyPI: https://pypi.org/project/lado/0.40.0rc1/

LADO 0.39.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 18:23
253c856
  • Every release publishes LADO's Docker image, docker pull ghcr.io/ladohq/lado:<version> (linux/amd64 and linux/arm64; latest is the newest final release, a release candidate only its own tag), tested on each architecture before anything is published. It carries all four agent CLIs at the versions LADO is tested with: Claude Code, Codex CLI (only installed: its login does not reach the agents yet), OpenCode and Kilo CLI. The GitHub release names the image.
  • docker/compose.yaml runs ghcr.io/ladohq/lado:${LADO_VERSION}: set LADO_VERSION (in .env next to the file), update by changing it and docker compose up -d, go back by putting the version before back. The image before an update keeps its version's tag, so nothing is kept by hand, and a second LADO, a folder of its own with its own .env, updates without touching the first.
  • Before LADO upgrades lado.db to a newer schema, by any command and wherever it runs (a new Docker image on an old home volume, a LADO upgraded by hand), it copies it to LADO_HOME/backups/lado.db.schema-<N> and says so on stderr (in a container: docker logs). When the copy cannot be written, nothing is upgraded. A migration that fails is one message, without a traceback: lado.db is unchanged, where its backup is, and how to go back (in a container: the image of the version you ran before on the same home volume). docker/compose.yaml's header gives the steps back after a migration that succeeded.
  • A session can have a title, shown in the UI over its name (the list, the head, the browser tab, Needs you and notifications), the name small beside it: set it with the pencil in the session's head, Rename… in the session list's ⋯, or lado title <session> TEXT (--clear removes it); lado ls shows it. The name stays the session's identifier: its address, branches and CLI name do not change. The list's search finds a session by either. lado.db goes to schema 28.
  • After an update from the UI, the System panel no longer says an update is running and keeps its Update… button: the page's wait ends once the update has released its lock.
  • In a container (LADO_CONTAINER, which LADO's Docker image sets), lado update and the UI's update refuse at once, stopping nothing: a new image updates LADO there. When a newer LADO is out, lado ls, lado doctor and the System panel name its image (ghcr.io/ladohq/lado:<version>) and no command. lado doctor, the System panel (a container mark beside the version) and the system info for an issue say that LADO runs in a container.
  • In a container the UI server no longer warns that it is open to other machines: it notes that how the container publishes its port decides who reaches it. lado ui there prints only the link for the host's browser and opens none, and the system info for an issue says the server runs in a container. LADO_REPOS names the folder of your repositories: the New session window suggests its subfolders in an empty Where, a clone by URL goes there by default (lado start <git-url> too), and lado doctor shows it.
  • The UI colours a flow step's outcome by the order its flow declares, in the chat as in the Flows tab: green forward, orange back, so a ready after a review's changes no longer turns orange. A step back has a return icon, and hovering an outcome says where the step goes and, for a step back, which states run again.
  • LADO's Docker image is in the repository (docker/): LADO from the build's wheel and the agent CLIs, started with one docker run (or docker/compose.yaml, whose LADO_PORT sets the port inside and on the host alike). make docker builds it from a checkout; CI builds and tests it on amd64 and arm64. Your projects folder is mounted at its own path (-v "$P:$P" -e LADO_REPOS="$P"; compose does it for LADO_PROJECTS), so a worker's worktree made in the container works on the host too, and on Linux the container's user takes the folder owner's uid, so the files the agents write are yours. docker logs warns when that folder is not mounted or not writable.
  • lado doctor warns when LADO may not write in its repositories folder (LADO_REPOS).
  • Selecting text in the UI shows a small bar to copy it or quote it into the composer; a quote from an artifact names it and its lines. Code blocks and messages have a copy button that shows on hover.
  • UI: in a session's chat the waiting card can be minimized to one line, so the chat has the room while you talk a gate over with the supervisor; it comes back by itself when something new waits. Its top edge can be dragged to give it another height. Both are remembered in the browser.
  • Upgrade: schema 28, restart running sessions after the update (lado update does it).
  • API: PUT /api/sessions/{name}/title (TitleChange), SessionInfo.title, Limits.max_title.
  • API: GET /api/repos-folder (ReposFolder).
  • API: UpdateInfo.container; in a container POST /api/update is refused with 409 and UpdateInfo.by_hand is empty.

Update with lado update, or install it with uv tool install lado==0.39.0.

Docker: docker pull ghcr.io/ladohq/lado:0.39.0.

PyPI: https://pypi.org/project/lado/0.39.0/

LADO 0.39.0rc1

LADO 0.39.0rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Oct 17:00
7a49eb5
  • Every release publishes LADO's Docker image, docker pull ghcr.io/ladohq/lado:<version> (linux/amd64 and linux/arm64; latest is the newest final release, a release candidate only its own tag), tested on each architecture before anything is published. It carries all four agent CLIs at the versions LADO is tested with: Claude Code, Codex CLI (only installed: its login does not reach the agents yet), OpenCode and Kilo CLI. The GitHub release names the image.
  • docker/compose.yaml runs ghcr.io/ladohq/lado:${LADO_VERSION}: set LADO_VERSION (in .env next to the file), update by changing it and docker compose up -d, go back by putting the version before back. The image before an update keeps its version's tag, so nothing is kept by hand, and a second LADO, a folder of its own with its own .env, updates without touching the first.
  • Before LADO upgrades lado.db to a newer schema, by any command and wherever it runs (a new Docker image on an old home volume, a LADO upgraded by hand), it copies it to LADO_HOME/backups/lado.db.schema-<N> and says so on stderr (in a container: docker logs). When the copy cannot be written, nothing is upgraded. A migration that fails is one message, without a traceback: lado.db is unchanged, where its backup is, and how to go back (in a container: the image of the version you ran before on the same home volume). docker/compose.yaml's header gives the steps back after a migration that succeeded.
  • A session can have a title, shown in the UI over its name (the list, the head, the browser tab, Needs you and notifications), the name small beside it: set it with the pencil in the session's head, Rename… in the session list's ⋯, or lado title <session> TEXT (--clear removes it); lado ls shows it. The name stays the session's identifier: its address, branches and CLI name do not change. The list's search finds a session by either. lado.db goes to schema 28.
  • After an update from the UI, the System panel no longer says an update is running and keeps its Update… button: the page's wait ends once the update has released its lock.
  • In a container (LADO_CONTAINER, which LADO's Docker image sets), lado update and the UI's update refuse at once, stopping nothing: a new image updates LADO there. When a newer LADO is out, lado ls, lado doctor and the System panel name its image (ghcr.io/ladohq/lado:<version>) and no command. lado doctor, the System panel (a container mark beside the version) and the system info for an issue say that LADO runs in a container.
  • In a container the UI server no longer warns that it is open to other machines: it notes that how the container publishes its port decides who reaches it. lado ui there prints only the link for the host's browser and opens none, and the system info for an issue says the server runs in a container. LADO_REPOS names the folder of your repositories: the New session window suggests its subfolders in an empty Where, a clone by URL goes there by default (lado start <git-url> too), and lado doctor shows it.
  • The UI colours a flow step's outcome by the order its flow declares, in the chat as in the Flows tab: green forward, orange back, so a ready after a review's changes no longer turns orange. A step back has a return icon, and hovering an outcome says where the step goes and, for a step back, which states run again.
  • LADO's Docker image is in the repository (docker/): LADO from the build's wheel and the agent CLIs, started with one docker run (or docker/compose.yaml, whose LADO_PORT sets the port inside and on the host alike). make docker builds it from a checkout; CI builds and tests it on amd64 and arm64. Your projects folder is mounted at its own path (-v "$P:$P" -e LADO_REPOS="$P"; compose does it for LADO_PROJECTS), so a worker's worktree made in the container works on the host too, and on Linux the container's user takes the folder owner's uid, so the files the agents write are yours. docker logs warns when that folder is not mounted or not writable.
  • lado doctor warns when LADO may not write in its repositories folder (LADO_REPOS).
  • Selecting text in the UI shows a small bar to copy it or quote it into the composer; a quote from an artifact names it and its lines. Code blocks and messages have a copy button that shows on hover.
  • UI: in a session's chat the waiting card can be minimized to one line, so the chat has the room while you talk a gate over with the supervisor; it comes back by itself when something new waits. Its top edge can be dragged to give it another height. Both are remembered in the browser.
  • Upgrade: schema 28, restart running sessions after the update (lado update does it).
  • API: PUT /api/sessions/{name}/title (TitleChange), SessionInfo.title, Limits.max_title.
  • API: GET /api/repos-folder (ReposFolder).
  • API: UpdateInfo.container; in a container POST /api/update is refused with 409 and UpdateInfo.by_hand is empty.

This is a pre-release: a LADO on a final release is not offered it. Update to it with lado update 0.39.0rc1, or install it with uv tool install lado==0.39.0rc1.

Docker: docker pull ghcr.io/ladohq/lado:0.39.0rc1.

PyPI: https://pypi.org/project/lado/0.39.0rc1/

LADO 0.38.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 16:39
e5bd5d1
  • lado stats prints how you used LADO on this machine in the last 30 days (--days N, --all): sessions, agents per agent CLI and per role (with its kit), turn errors, flow runs, gates and how often you answered as the lead advised, questions, undelivered messages and LADO's own errors. It sends nothing.
  • LADO now keeps an anonymous local record of these counts (no names, paths or texts), filled from your existing history at the upgrade, so lado forget no longer makes them smaller; the statistics report counts from it with the same fields. lado log names an agent's kit in its spawned line.
  • lado bug-report and Report a bug on the UI's left menu: a report for a new GitHub issue, with the system info and LADO's errors of the last 30 days by kind, and no paths, session or repository names, nor message texts; a link opens GitHub's new issue form filled in with it (the terminal asks first), and nothing is sent until you submit it. errors.jsonl now keeps each error's scrubbed form too.
  • UI: the expanded waiting card covers the session's chat (on Needs you, the page) instead of the whole window, so an artifact opened from it shows over it; Esc closes that artifact first, then folds the card. On Needs you an artifact opens over the page, keeping the answers you picked.
  • Each release now also appears on GitHub (github.com/ladohq/lado/releases) with this changelog's section as its notes and the wheel and sdist attached; a release candidate is a GitHub pre-release.
  • UI: the empty strip above a session's tabs is gone: the tabs start right under the top bar, level with the terminals' tabs; a start or resume notice still stands above them.
  • lado server stop, lado update and lado uninstall wait until the old UI server's process has ended; a server that has stopped no longer makes ~/.lado again after lado uninstall.
  • Messages queued during an agent's turn reach it in its turn-end hook's output whenever its CLI takes that output; a race sometimes pasted them into its window.
  • A gate in a session's chat always shows after the run's move that opened it.
  • Upgrade: schema 27, restart running sessions after the update (lado update does it).
  • API: GET /api/bug-report.

Update with lado update, or install it with uv tool install lado==0.38.0.

PyPI: https://pypi.org/project/lado/0.38.0/

LADO 0.38.0rc1

LADO 0.38.0rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 14:45
f3ead42
  • lado stats prints how you used LADO on this machine in the last 30 days (--days N, --all): sessions, agents per agent CLI and per role (with its kit), turn errors, flow runs, gates and how often you answered as the lead advised, questions, undelivered messages and LADO's own errors. It sends nothing.
  • LADO now keeps an anonymous local record of these counts (no names, paths or texts), filled from your existing history at the upgrade, so lado forget no longer makes them smaller; the statistics report counts from it with the same fields. lado log names an agent's kit in its spawned line.
  • lado bug-report and Report a bug on the UI's left menu: a report for a new GitHub issue, with the system info and LADO's errors of the last 30 days by kind, and no paths, session or repository names, nor message texts; a link opens GitHub's new issue form filled in with it (the terminal asks first), and nothing is sent until you submit it. errors.jsonl now keeps each error's scrubbed form too.
  • UI: the expanded waiting card covers the session's chat (on Needs you, the page) instead of the whole window, so an artifact opened from it shows over it; Esc closes that artifact first, then folds the card. On Needs you an artifact opens over the page, keeping the answers you picked.
  • Each release now also appears on GitHub (github.com/ladohq/lado/releases) with this changelog's section as its notes and the wheel and sdist attached; a release candidate is a GitHub pre-release.
  • UI: the empty strip above a session's tabs is gone: the tabs start right under the top bar, level with the terminals' tabs; a start or resume notice still stands above them.
  • lado server stop, lado update and lado uninstall wait until the old UI server's process has ended; a server that has stopped no longer makes ~/.lado again after lado uninstall.
  • Messages queued during an agent's turn reach it in its turn-end hook's output whenever its CLI takes that output; a race sometimes pasted them into its window.
  • A gate in a session's chat always shows after the run's move that opened it.
  • Upgrade: schema 27, restart running sessions after the update (lado update does it).
  • API: GET /api/bug-report.

This is a pre-release: a LADO on a final release is not offered it. Update to it with lado update 0.38.0rc1, or install it with uv tool install lado==0.38.0rc1.

PyPI: https://pypi.org/project/lado/0.38.0rc1/