Repository navigation
Releases
v0.0.1
[0.0.1] - 2026-11-13
Added
- The
jellysettings declare their choices:accessis drawn as Allowed, Ask before changes or Read only, with
Jelly's own line for each (needs a jelly that includes app#1301).
Known limits
- Granola's server decides what the tools reach. The plugin registers the tools Granola's server lists. A tool Granola adds later is not classed by the plugin: the
accessoption decides whether it runs, asks or is denied, and/granola-statuscounts it as unknown. - Plan limits. Granola's free plan has no transcripts or folders, and its meeting history covers the last 30 days. Exports say what is missing rather than working around it.
- Exports are bounded. An export takes 1 to 20 meetings and at most 8 MB; a transcript that does not fit is cut with a note. The file goes outside the project, so OpenCode also asks for
external_directory. give_feedbackreaches Granola's team. It is allowed by default, and the skill tells the model to send it only when the user asks.- No retries. The plugin does not retry a failed call. The error names the next step.
- Hosts and platforms. The plugin is tested on 2.2.3, 2.2.4, 2.2.5 and 2.2.6, and runs on macOS or Linux. A later 2.2 release starts and is reported as untested.
- In Jelly, the
accesssetting is drawn as a choice of three, which needs a Jelly that reads declared choices: an
older Jelly refuses the plugin's whole declaration. - Updates are not automatic for a Git install, and
opencode plugin updateandopencode plugin checkdo not work on one: to move to a newer release, remove the old entry and add the new tag.
v0.0.0
[0.0.0] - 2026-11-10
Added
access, the plugin option every OpenCode plugin of this family has:"all"(the default),"ask-changes"and
"read-only". It generates the default permission block from the tool classes, and/granola-statusshows it in the
Accessrow and in the status RPC'saccessfield.assets/icon-128.pngandassets/icon-256.png, withopencode.iconsandopencode.vendorinpackage.json, and
scripts/check-icons.mjs, the family icon contract's check.
Changed
-
Each Granola skill's first line says how to sign in when the tools are absent:
/connect, or on Jellyjelly_connection_request. -
Every Granola tool is allowed by default. The plugin's generated block allows every known tool and the
granola_*
namespace, so a tool Granola adds later runs without a prompt too,give_feedbackis no longer off, and the export is
no longer an ask. Restrict it withaccess, with an agent's own rules, or with a rule per tool; the README's
Permissions section and SECURITY say what an all-allow default means here. -
The export folder is outside the project, so OpenCode asks for
external_directoryas well as the export's own
action. A refusal that names it costs nothing and becomesEXPORT_PATH_NOT_PERMITTED, whose next step is that rule. -
docs/scripting.mdis the family's scripting contract: the strict envelope, the location section and its unload note,
the result wording, and the refusal table, with an example-parsing test. -
PLUGIN_CODESandRPC_CODESare the one typed code table, checked against the README, the configuration guide and
the scripting guide. -
The CI has an
actionlintjob, andnpm run checkrunsactionlintand the icon check. -
The docs' tested-host sentences are checked against
TESTED_HOSTS, and the README prints the default block in full. -
tools RPC v2: every known tool is scriptable. Granola's writes,
give_feedback(a send)
and the plugin'sexport_markdown(an export, confined to the export folder) are methods now, so a script can write,
send or export with the session's allow;sign_outstays outside, since the plugin removes it. The shared tools RPC
module is updated in place andscripts/check-copies.mjspins its v2 hash. Every method carries a class, and
describereports it, plus each method's resolvedpermissionwhen given a session. -
A call resolves the rule before dispatch: only an
allowruns, anaskis refused, and adenyis refused, with no
tool call and no prompt. A saved "Always allow" no longer authorises an ad-hoc script; its grant is a rule in config,
or a Jobs run session.
Known limits
- Granola's server decides what the tools reach. The plugin registers the tools Granola's server lists. A tool Granola adds later is not classed by the plugin: the
accessoption decides whether it runs, asks or is denied, and/granola-statuscounts it as unknown. - Plan limits. Granola's free plan has no transcripts or folders, and its meeting history covers the last 30 days. Exports say what is missing rather than working around it.
- Exports are bounded. An export takes 1 to 20 meetings and at most 8 MB; a transcript that does not fit is cut with a note. The file goes outside the project, so OpenCode also asks for
external_directory. give_feedbackreaches Granola's team. It is allowed by default, and the skill tells the model to send it only when the user asks.- No retries. The plugin does not retry a failed call. The error names the next step.
- Hosts and platforms. The plugin is tested on 2.2.3, 2.2.4, 2.2.5 and 2.2.6, and runs on macOS or Linux. A later 2.2 release starts and is reported as untested.
- Updates are not automatic for a Git install, and
opencode plugin updateandopencode plugin checkdo not work on one: to move to a newer release, remove the old entry and add the new tag.