Nightly
Any Desktop v0.1.5-nightly.20260929.1
New
/mediaand/filenow open a picker with a Library tab, so a file already in the space can be reused instead of uploaded again.- Search the Library and browse pictures and videos in a grid with /media, or all files in a list with /file.
- The Upload tab lets you choose a new file or drag one into the picker.
- Choose whether Enter sends a chat message or inserts a new line in Preferences. Use Ctrl+Enter, Cmd+Enter, or Send to send when Enter inserts a line.
- You can dismiss in-app notifications with a close button, except for loading and Undo notifications.
- Create a Page directly from the editor’s @ menu and link it without leaving your document.
- Move a block or selected group up or down with Command+Shift+Up/Down on macOS, or Ctrl+Shift+Up/Down on Windows and Linux.
- Move blocks between adjacent cells in the same table row with Command+Shift+Left/Right on macOS, or Ctrl+Shift+Left/Right on Windows and Linux.
- Select an entire word from anywhere inside it with ⌘⇧D on Mac or Ctrl⇧D on Windows/Linux. Find the combination under Editor in Keyboard Shortcuts.
- In page editors, add a line below with Command+Enter on macOS or Ctrl+Enter on Windows and Linux. Add Shift to insert above without splitting the current text.
- Settings ▸ Agent ▸ Devices can move Bao to any of your devices that runs it, not only the one you're using.
- Before switching Bao to another device, update all your devices to this version so they agree on which device should respond.
Improved
- Library opens first when there are files to choose from; otherwise, Upload opens first.
- Search the "New direct chat" contact list by typing a name or identity.
- Contacts in "New direct chat" now appear in alphabetical order.
- Connect explains when Bao is unavailable or answering on another device, and offers to switch here when this device can take over.
- You can disconnect an account while Bao runs on another device. Connect and Disconnect are unavailable when no device can respond.
- Reconnect requests remain in progress until the account's connection has actually updated.
- If a connection request takes too long, a notification points you to Bao's chat.
- Typing is faster in long documents.
- Dragging to select blocks is smoother in long documents.
- Long documents prepare changes for saving during a typing pause instead of on every keystroke, reducing interruptions. Changes save about a second after you stop typing.
- Starting a new line with Enter responds faster in long documents.
- Tooltips now keep a small gap from the window edges.
- In-app notifications now appear beside Bao and the right panel instead of covering them.
- Copied Markdown now escapes paragraph text that looks like block formatting, so it can be read back as text.
- Hovering a reaction in chat shows the names of the people who reacted.
- Device-switching progress and failure notices now name the device you are switching Bao to.
- Improved file-type recognition for new uploads, including animated PNG images, Matroska videos and RAR archives.
- Bao's device-switching guidance now includes choosing another device in Settings ▸ Agent ▸ Devices.
Fixed
- The member count no longer appears next to the space name in a space chat's header.
- The Linux app no longer opens to a blank window on newer distributions such as Ubuntu 26.04, Fedora 44 and Arch.
- A reply to someone else's message now shows the quote in grey; only quotes of your own messages are blue.
- Connecting a Google account from the desktop app no longer fails with "Could not reach the agent runtime" — Bao now handles the sign-in.
- Search fields in pickers no longer show spell-check and autocorrect suggestions that block moving through results with the arrow keys.
- The "Bao's device is offline" prompt no longer appears when Bao has not been set up.
- Bao's offline notices no longer show an incorrect duration for a device this app has not heard from since it started.
- Following a page link between Wiki pages keeps the Wiki menu open, including when opening the link in a new tab.
- Following a page link to another item in the open collection keeps the Collections menu open, including in a new tab.
- Opening a table row full-screen in Collections now keeps the Collections menu open.
- Block handles inside a callout or quote now follow the row next to the pointer instead of jumping to the callout's own handle.
- Editor link menus keep their initial selection until you move the mouse and no longer jump when a row is highlighted by the pointer.
- Typing
---,***or___and pressing Enter now makes a divider, just like pressing Space. - In the desktop app, the ✕ on a single-select, multi-select or relation value in a collection table now removes the value instead of just closing the picker.
- In the desktop app, clicking a linked object's name while its relation cell is being edited in a collection table now opens the object.
- Backspace and Delete now clear a single-select value when nothing is typed in its picker.
- The cursor no longer jumps out of a synced block while you type when the page saves or is edited elsewhere.
- An update to a synced block from another device no longer sends your cursor to the start of the block while you are editing it.
- Hovering the member avatars in a large space now shows three names and "+N" instead of a list that ran off the screen.
- “Link an object” in chat, the editor's link menus and the Wiki's “Add existing” no longer offer “Untitled” rows or app pages such as “Collections” and “Meetings” that you can't find anywhere else in the space.
- Views results no longer include empty app pages or unexplained “Untitled” entries created to hold saved views.
- Pasting a link to one of these hidden app pages into chat no longer offers it as an object attachment.
- Pasted inline links to these hidden app pages use the label “Object”; link cards still show their names.
- A web address copied with its line or from a list now pastes as an inline link without splitting the surrounding paragraph or adding a bullet.
- Pasting one of these addresses into an empty paragraph now offers an embed for supported sites such as CodePen.
- A block link copied with its surrounding line now offers Synced block or URL when pasted into an empty paragraph.
- A YouTube or Vimeo embed plays on the first press of its poster's Play mark, instead of loading a paused player that needs a second press.
- Search no longer lists an app such as Collections, Meetings or Tasks as an empty page.
- Unset checkbox values now count as unchecked when sorting, so changing direction correctly swaps checked and unchecked items.
- After naming a new object in a collection table, press Enter again to open it without reaching for the mouse.
- Confirming or canceling a text-cell edit with Enter or Escape returns keyboard focus to the cell. Clicking or tabbing elsewhere keeps focus at your destination.
- A paragraph that starts like Markdown block syntax (
---,-,#,>,1.,[ ]) now stays a paragraph after a reload. Undoing the divider shortcut, for example, no longer turns the dashes into a divider the next time the page loads. - Dashes or equals signs after a line break no longer turn the paragraph into a heading or disappear when you reopen the page.
- Typing text that resembles a block marker inside a synced block no longer produces a “Blocks can’t be nested here” error.
- Backspace at the start of the block after an object selects the object, removes an empty following line, and keeps any written text separate. Press Backspace again to delete the object.
- Unsyncing a synced block no longer deletes the empty lines on the rest of the page or inside the block.
- Using Turn into link on an embed with no replacement text no longer adds extra blank lines.
- Empty lines inside a synced block are still there after you leave the page and come back.
- Turning several blocks into a synced block keeps the empty lines between them and each paragraph's indentation.
- Blank lines at the edges of synced blocks no longer multiply each time the page is saved.
- If blocks cannot be converted safely, Turn into → Synced block now leaves them unchanged.
- A paragraph line that shows
$$or$$…$$as text no longer turns into an equation, or takes the paragraphs after it along, when the page reloads. - When importing Markdown,
$$markers separated by a blank line now remain separate paragraphs instead of forming one equation. - Dollar signs on different lines in a table cell no longer combine into a broken formula after saving and reopening. Line and paragraph breaks stay intact.
- Previously saved table cells with dollar signs on either side of a paragraph break now reopen as separate paragraphs, without needing an edit.
- A table no longer splits in two after reopening a page when two of its header cells contain dollar signs, such as "Cost ($)" and "Total ($)".
- Inline formulas in table cells stay intact when followed immediately by text containing a dollar sign, rather than turning into a line break and a different formula after reopening.
- Typing right after opening a math block with
$$(or a code block in a language such as Ruby or YAML) no longer sends the cursor back to the start after the first character. - A table keeps its column widths, row heights and header column when you turn it into a synced block.
- You can open Bao when Wiki or Collections is empty.
- The "Type text or press / for commands" prompt no longer stays painted inside a callout made with Turn into → Callout.
- Moving a paragraph into a table cell now clears its old typing prompt instead of leaving it over the cell's content.
- After turning a paragraph and table into a synced block, keyboard focus stays on the page so Undo immediately reverses the conversion.
- Opening a page containing a table, including a table inside a synced block, no longer unexpectedly moves keyboard focus into its body.
- Pages with an inline formula ending in an escaped space, such as
$a\ $, now open correctly. Typing or pasting these formulas works too. - An inline equation can no longer be saved ending in a lone backslash, which reopened as plain text. The equation editor now asks for
\backslashinstead. - A backslash typed before punctuation no longer disappears after reopening a page when the same line has a link, an inline formula, or bold, italic or struck-through text.
- Inline code at the start of a line keeps its backslashes after reopening a page.
- Undo inside a synced block now continues to the page once the block's own edits are undone — it removes a block you just inserted instead of showing “Can’t undo because this changed elsewhere.”.
- Redo inside a synced block can continue through the page's history when the block has no redo steps left.
- Inline code with repeated backticks now stays inline at the start of a line after reopening, instead of turning following content into a code block. Code containing both single and double backtick runs is still an exception.
- Display equations ending in an escaped space, such as
$$a\ $$, now keep that space and render instead of showing "Invalid LaTeX". - Literal text with several dollar signs, dollar signs before an inline equation, or dollar signs around a backslash now stays text after saving and reopening instead of changing the formula.
- Text that spells out a character code, such as
$, no longer turns into the character it names ($) after reopening a page. This covers paragraphs, headings, lists, quotes, callouts, collapsible sections, table cells, links and formatted text. - Newly typed character codes such as
�no longer prevent a page from reopening after it is saved. - List views now respect the property order set in Property visibility, including properties placed before Name.
- Text in square brackets before a link, like "[note] see docs", no longer merges into the link when the page is reopened, and a backslash next to it is no longer doubled.
- A bracket typed just before a link to an object or a file no longer turns the line into that object's or file's card when the page is reopened.
- Text such as
