Lobu 24
Lobu 24 declares every view in its own module
Also new: follow-up chips, conversation starters, and joining a workspace and linking chat in one step.
Lobu 24 is out. The biggest change is for views. A view's key, name, attachments and actions now live in one place, the defineView call inside its own module. That is a breaking change, so the server and the CLI upgrade together. First, though, a lot is new in chat.
Starters and follow-up chips
Agents suggest what to say, before and after a reply
Agents can now suggest what to say. Each agent can carry up to three conversation starters, shown on an empty web chat and as Slack assistant thread prompts. And after each reply to a person, the same model proposes up to three follow-up chips. An offer in the reply becomes a chip, and tapping it sends that message as the user.
Chat linking in one step
Join a workspace and link chat in one step
Linking a chat account got shorter. A sender without a linked account gets one notice, signs in with that chat platform's own login where one exists, and the chat confirms the link. Reddit sign-in is on, signing in with X also links its direct messages, and joining a public workspace links the account in the same step.
Connectors
Connectors read more of your feeds and chats
Connectors can read more. Reddit reads the connected user's home feed. WhatsApp can read one chat's newest messages, addressed by that chat's ID. And LinkedIn now gives group posts in the home feed their own IDs, and answers a page admin who writes to the page as themselves.
Public workspace limits
Reads of public workspaces are now rate limited
Public workspaces now have read limits. Anonymous reads are limited per IP address, which needs the production proxy hop count set. Signed-in non-members read like anonymous visitors, with a per-account limit. Public pages keep the operational trail off, and the audit log records who changes a workspace's visibility, name or slug.
Fixes
A closed Postgres connection no longer crashes the server
Queries on it are rejected instead.
A query on a closed Postgres connection is now rejected instead of crashing the server. Token refresh suspends a dead OAuth grant until the user reconnects, instead of retrying forever. Resetting a chat clears its conversation history. And lobu apply for memory only no longer pushes provider keys.
What breaks
What changes for views
Now the change that needs work on your side.
defineView is the only declaration
A view is declared once, in defineView
The server now reads a view's key, name, attachments, params and actions from the module's defineView call. It reads that call without running the module, so the argument must be a literal. A variable or a spread is rejected, and the error names the field. And manage views set takes the source alone. The old arguments get a 400.
Attach entries name a page
Each attach entry names the page a view shows on
| { type: "deal", surface: "collection" } | → | { collection: "deal" } | tab on the list page |
| { type: "deal", surface: "record" } | → | { record: "deal" } | card on the record page |
| { entity: 7 } | → | { record: "deal", id: 7 } | one record only |
| { event_kind: "deal.won" } | → | { event: "deal.won" } | the event's page |
Stored attachments are migrated. A view source with the old entries fails validation on its next save until you edit it.
Attach entries changed shape too. Each one names a page: a record, a collection, the workspace, or an event. Placement is gone, and a record view is a card on the record page that opens fullscreen. Stored attachments are migrated for you, but a source file with old entries fails validation on its next save, so edit those.
Upgrade
Upgrade the CLI with the server
lobu apply from CLI 23.0.0 or older fails against a 24 server.
Move the server and the CLI to 24 together. Lobu apply from CLI 23 or older fails against an upgraded server, so if a pipeline can't update its CLI yet, hold the server back. After that, views are declared once in defineView, and chats suggest the next message.









