You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
New Project opens on the templates, not on Blank: it shows the gallery's last list at once, and Create
waits until the gallery confirms it. On a first run it says it is loading; Blank is offered only when the
gallery cannot be reached.
The theme styles the contract's new text roles (text-strong, -warning, -error, -ok, -muted, -small, -mono) in every theme, so a plugin's status lines read in the dark themes.
New Project's plugin checklist names each plugin's version: the template's pin for its own plugins, the
registry's verified release for the rest.
A value a plugin's editor hands over that Studio has no Java for is no longer dropped without a word: the
field keeps what it had and the status line says why. A plugin can ask itself through the contract's new ValueContext.write.
A plugin adding a constant to one of its open sets (a picture to Pictures, an activity to Activities)
is refused, with both classes named, when the value is not the kind the set declares holding.
Studio loads released plugins only. A plugin pinned to a dev build (-SNAPSHOT) is not loaded; the
editor says so, and Project ▸ Plugins & Libraries ▸ Installed offers Pin released versions, which
moves each one to a release through the usual checked upgrade.
A Studio built from source gives a new project the latest released plugin contract instead of 0.0.0-SNAPSHOT.
The getting-started text describes activities and outcomes as constants (Outcomes.BAG_FULL, Outcome.NEXT), matching the SDK's typed flow names.
Publish refuses a bot whose pom pins a -SNAPSHOT or an undefined ${property}, naming each one: the
release would compile on this computer and nowhere else.
The plugin upgrade report opens with one line saying what the move costs ("Studio repairs 4 calls · you
finish 1 removed type · nothing else changes", or "Nothing breaks"). The "What breaks in this bot" list
is gone: it repeated the repair card and the finish-yourself list. The repair card now lists where each
repaired call is.
The welcome screen's project list is one list, sorted as chosen. Projects opened from outside ~/BotMakerProjects were always listed last under their own header, whatever the sort; they now carry an Elsewhere tag instead. Newest first reads when Studio last opened a project, or its folder's date when
that is later, so the project you just opened is on top.
Added
A gallery bot whose author deleted its repository still installs, from the copy of its releases the gallery
keeps (the mirror release of botmaker-gallery). A template unpacks from the same copy, and the newest
release is read from it. The installed bot has its own history and no original to update from, and Browse
Bots says so: "author removed the repository · no updates".
Removed
Local ~/.m2 builds of plugins and the SDK are no longer offered in Plugins & Libraries, Browse or New
Project, and the (local build) labels are gone. Pin a local build in the pom by hand to try it.
Fixed
A project opened a second time drew its function-call blocks as nothing, logging "Classpath element is not
known for this classpath element" on every redraw. The library index is reloaded from its cache then, and
the class dropdown asked ClassGraph which jar each class came from, which a cached class cannot answer; the
index now keeps that itself.
Studio takes no automatic version (before a run, a debug, an AI session, a rewrite) in a git submodule,
whose history is also the umbrella's releases. A "Run" version had swept an old Studio's leftover files
into the gamebot template, one push from its main. Versions you save, updates and upgrades are still
written there.
An old Studio's src/main/resources/botmaker-project.properties, which nothing reads since 2026-09-27, is
kept out of every version (.git/info/exclude); it is never deleted, and a project that tracks it keeps it.
A push GitHub refuses as "git-receive-pack not permitted" says what it usually means on an organization's
repository: the organization has not granted BotMaker Studio access, with where an owner approves it.
A project checked out as a git submodule (its .git is a file) has its history again. Studio read it as
"no history" and Publish failed with "Creating directories for …/.git failed".
An SSH remote (git@github.com:owner/repo) counts as a GitHub repository, so a project cloned by hand reads
as published. A submodule's origin is copied to My copy, never renamed, so tools that push to origin
keep working.
Publishing a project whose copy lives under an organization you can push to (the BotMakerDev templates)
publishes there: the last release, the listing and its Vetted tier are read under that owner, instead of
under your account, where the bot looked never published. Studio still creates repositories only on your
own account.
A provenance file naming the project's own repository (written by an earlier publish, or before the
repository moved to an organization) no longer links that repository as somebody else's original.
The plugin version picker starts on the installed version, and offers the registry's verified one only
as a move up. A bot on SDK 1.2.3 opened on 1.1.7 and, when JitPack's list came back empty, offered
nothing else. Both are labelled in the list, and JitPack gets 20 seconds instead of 8.
A plugin pinned as ${property} resolves its jar in the plugins window, so it is recognised as a plugin
and its type names count when two plugins clash.