Nibble 0.21.0
Approving an app’s change makes it. Each connection chooses whether to ask first, and its access can be changed after it is connected.
What’s new
- Approving a change makes it. When a connected app’s change waits for approval, approving it in the Control Plane
carries it out, as the app, and keeps the result; the app sends nothing again. Permissions are checked again at that
moment, so a connection revoked or narrowed in the meantime fails instead of changing anything, and the person is
told. Apps read the outcome with the new
get_approvaloperation. - Each connection chooses whether to ask. Connecting an app offers Ask before live changes (the default) or Make changes without asking, which needs your password. Under Users → Agent access, Approvals decides whether people may choose: Each person chooses or Always ask. An app signed in with a code always asks.
- Approve or decline several at once, with one password confirmation.
- A connection’s access can change after it’s connected. Settings on each connected app, under Account → Connected apps for your own and Users → Agent access for everyone’s, changes its name, what it may do and whether it asks, without connecting again. An administrator’s change never goes past what the app’s person may do or what Agent access allows, is audited, and tells that person what changed and who changed it.
- An app learns what it can’t do and why.
GET /api/v1/operationslists the operations a connection can’t use underunavailable, each with what it needs (such as “Assets: Write”), and calling one names that need. - Apps send files without base64.
PUT /api/v1/uploadstakes a file’s bytes, andupload_assettakes the upload it returns, or aurlfor the site to fetch.create_uploadgives an MCP app the address to send a file to. A file waiting for approval is kept once, and the approval page shows it. - Markdown works in rich text at any depth, including the rich text inside a page’s blocks, in what apps write and what they read.
describe_schemalists each block’s sets and their fields, so an app can write blocks without reading an existing entry first.- A dry run warns about what it can’t place: a block type the field doesn’t have, or an image whose asset doesn’t exist.
- Creating or changing an entry through the API returns
preview_url, the draft’s preview in the Control Plane. - A connected app stays connected while it’s used: its sign-in ends 90 days after it was last used, not 90 days after it was connected.
What’s fixed
- A missing theme says when
NIBBLE_THEMEchose it, so a variable left in a shell or.envis easy to spot.
Changed
-
The management API is version 2. Rich text inside blocks is read as Markdown where it converts without loss, as top-level rich text already was.
-
An approval answer names its state:
approval_pending,approval_denied,approval_expiredorapproval_mismatch, instead ofapproval_not_validfor all four. A request repeated once its approval is done or declined asks again; a retry with the originalidempotency_keygets the first answer.Upgrade: an app or script that reads nested rich text as editor JSON, or checks for
approval_not_valid, needs updating. Nibble’s ownnibblecommand and MCP clients need nothing.