Release Notes
0.7.0
Adoption takes any stack: Claude reads the folder, says who owns each project, and the workspace follows the code.
Published as torta-app and torta-ai 0.7.0.
Adoption shipped in 0.6.0 for Flutter apps, and asked you to give each app a platform. Both of those are gone. It now takes any stack, and the question it asks is who owns each project.
Any stack, and Claude works out the owner
There is no Flutter gate and no refusal by stack. Point torta adopt at a
React app, a Node service, a Python tool, a Go module or a folder of markdown,
and it adopts.
The local probes still go first, and they still say only what is on disk, because a filename cannot say who owns a project. Then one read-only Claude Code session reads the candidates and answers with the agent each belongs to, one of frontend, backend, qa, infra, archi, product or growth, with a short plain sentence saying why. Every answer is yours to correct before anything moves.
The wizard’s second adoption page asks who owns each project rather than which platform each app builds, so adopting is eight pages now instead of nine: two added, and the build question dropped.
Where each project lands is shown, and follows the owner
Placement is worked out from the layout, so an owner with one repository fills
it and frontend, which has four, keeps a single project whole in
frontend/core and otherwise sends each to the repository its own platform
folders point at.
Both adoption pages name the folder every project would move into, and correcting an owner moves that folder with it. The path comes from the same function the mover plans with, so no page can promise somewhere the code does not land.
A project Claude will not place is left exactly where it is. Not moved,
nothing written inside it, and named in ADOPTED.md. torta does not guess.
No consent step, and no --inspect
Both are gone. The wizard already refuses to run without Claude Code installed and signed in, so reading the folder you chose is part of adoption rather than a favour asked for twice. It is announced on screen while it runs, at both doors, and its start is logged.
Saying who owns everything yourself, with --as <owner> once per project,
skips the reading entirely: there is nothing left to read for.
The profile follows the real stack
The layout declares Flutter for every frontend/* repository, which is right
for a workspace torta built from nothing and a description of a project that is
not there for one it adopted. The manifest beside the code decides now.
An adopted React app binds the node profile: its walls grant that toolchain and
its brief names package.json and npm run build. A stack torta has no
profile for binds an honest empty one that grants no build tools and names no
commands, so nothing claims a gate torta cannot run, and the report says so in
words.
Deploy targets and test suite paths follow the same rule. A Node service
adopted into backend no longer claims a Supabase deploy target: the field is
absent, and the report names the repository that lost one. A wrong deploy
target is worse than none, because an agent may act on it.
Platforms follow what was adopted
The adopt door no longer asks what you are building. A backend project turns the backend on, a landing page turns the site on, and a project with no platform evidence at all turns no platform on rather than being taken for a web app, which is what used to turn a Python command-line tool into a web workspace.
No empty repositories, and no idle agents
A web build implies a backend, which is right for somebody declaring a new web
app and wrong for somebody adopting a React app whose backend is elsewhere. The
implied repository is now declared with an empty platforms list, so no
directory is made for it and no agent is raised to sit in front of nothing.
To get one, ask at the time with torta adopt <dir> --backend, or put
backend back in that repository’s platforms list in torta.json and run
torta sync. Sync makes the declared directory and now also stamps the home,
the brief and the queues of any agent the roster has gained, so the agent it
brings back can be given a ticket.
Shorter wording, and a keyboard fix
The wizard’s wording is about a third shorter: every question says what it needs and stops. A page with nothing to answer keeps the keyboard after you step back onto it, so Enter still moves you on.
See adopt a project and the CLI reference.