

Prompt Studio 0.45
AFPrompt Studio 0.45 makes large projects faster, lets you move panels and view Main fullscreen, and prepares project data for syncing between your devices.
Performance
Project Planner now saves only the tickets that moved, and opening a ticket reads only that ticket. Long lists draw only the rows on screen, and a new session returns before its agent finishes starting.
Measured with 1,000 tickets and 1,000 sessions in one project. See the performance references for every run.
Panels
Drop a tab on a closed edge to open that panel with it. Drag a whole panel by its header to move it to another edge.


Drop the note tab on the right edge, then move Side to the left of the board.
Main fullscreen
Expand Main over the whole workbench. Your layout, open editors and running terminals stay as they were, and Side floats above Main until you need it.


The note folds into a bubble and comes back. Exiting restores the layout.
Chat links
Links in chat open notes, artifacts and tickets in their own editors, with the item’s title on the link. Web links show the site’s icon.


Codex links a note by its file path. Click the link to open the note.
Sync groundwork
0.45 adds the groundwork for syncing a project between your devices. You cannot turn sync on from the app yet.
- Edits made offline on two devices merge instead of overwriting each other.
- Ticket numbers stay unique when two offline devices create tickets.
- Project data is encrypted on your device, so the sync server cannot read it.
Extension API
Extension data is ready for several devices. Give records IDs and order positions that never collide, and check whether a save has synced.
// IDs and positions stay unique even
// when devices create items offline.
const id =
ctx.storage.ids.create("item");
const position =
ctx.storage.positions.between(
previous.position,
next.position,
);
const outcome =
await ctx.storage.records.commit({
operationId: crypto.randomUUID(),
edits: [{
recordId: id,
replace: {
title: "November book vote",
position,
},
}],
});
// saved-locally, waiting-to-sync,
// synced, offline or needs-attention
console.log(outcome.state);
Test what happens when two people edit the same data offline, without running a sync server.
import {
createMemoryStorageDevices,
} from "@pstdio/sdk/testing";
const { devices, merge } =
await createMemoryStorageDevices();
const [laptop, desktop] = devices;
// Both devices rename the same note
// while offline.
await laptop.records.commit({
operationId: "a",
edits: [{
recordId: "note",
replace: { title: "Laptop" },
}],
});
await desktop.records.commit({
operationId: "b",
edits: [{
recordId: "note",
replace: { title: "Desktop" },
}],
});
// Both devices now hold the same record.
// Each entry names a replaced value.
const replaced = await merge();
- Navigation views can declare their sections, so the sections show before their contents load.
- Webviews can use the host’s harness controls and native resource actions.
Other improvements
- On Windows, the folder picker can switch drives.
- System errors collect in a status bar widget. A failed action shows its error where you tried it.
- Start and chat show when no agent is available, and how to set one up.
- Codex sessions resume after you sign in to Codex again, without a restart.
- Chat shows file bubbles only for files and items that exist.
- In Project Planner, status, priority and tag changes on a card show at once.
- In Project Planner, answer or revise review requests in Needs attention, and opening a ticket opens its latest session beside it.
- Archiving many tickets no longer spikes the CPU.
Release sources
These highlights were checked against the 0.45 release notes and the changelogs at the [email protected] tag.
-
Core changelog, SDK changelog, UI changelog, workbench changelog, Project Planner changelog, Codex changelog, Notes changelog, Artifacts changelog.
-
Local-first sync PRD, blind relay, and synchronization contracts.
-
Performance: ticket moves, board cold open, workspace cleanup, and sessions and ticket navigation.