@joe-broadhead/opencode-plaud 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/README.md +4 -3
- package/assets/icon.svg +1 -0
- package/dist/index.js +736 -322
- package/dist/tui.js +11 -3
- package/package.json +4 -1
- package/skills/opencode-plaud/SKILL.md +87 -95
- package/skills/opencode-plaud-digest/SKILL.md +24 -28
- package/skills/opencode-plaud-export/SKILL.md +51 -48
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
4
4
|
|
|
5
|
+
## [0.0.5] - 2026-11-05
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Status names a skill that shadows one of the plugin's. OpenCode keeps one skill per id, and a skill of your own or a project's wins, so a file such as `~/.config/opencode/skills/opencode-plaud/SKILL.md` stops the plugin's skill from loading. The `Skills` row names it and its path, the next step says to move or rename it, and the status RPC lists it in the new field `shadowedSkills`, as `{ id, path }`.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- The fix for agents without the default rules is one sentence, the same in every plugin of this family: "Put the default rules shown by /plaud-status first in each listed agent's own permissions, in opencode.json or the agent's Markdown file, followed by your top-level rules for Plaud tools." It is the `Next step` row, the status RPC's `nextStep` and the dialog's. The `Agents without default rules` row lists only the agents' names, followed by the rules to copy. Why the rules go in each agent's own permissions is in the configuration docs.
|
|
14
|
+
- A transcript export reads 500 segments a page, Plaud's maximum, instead of Plaud's default of 50, so a long transcript takes a few reads instead of dozens.
|
|
15
|
+
- Four error next steps now lead to the right call. `EXPORT_EXISTS` says to ask the user before passing `overwrite: true`. `EXPORT_TOO_LARGE` and `EXPORT_TIMEOUT` say to ask the user to raise `maxAudioBytes` or `exportTimeoutMs`, which only the user can change. `PLAUD_READ_FAILED` gives one step: retry once, then run `/plaud-status` and follow its next step. `PLAUD_UNREADABLE` has one next step everywhere: update the plugin and retry later, then report it.
|
|
16
|
+
- Tool text the model always sees. Code Mode's `plaud` namespace says not to call `get_file`, which returns 150 to 320 KB, mostly the raw transcript and the notes again, and to call `export` for audio, even for a download link. It also says that times such as `start_at` are UTC without a `Z`. `plaud_export` says that each export first asks the user and shows the account, kind, recording and destination, that nothing is written if they decline, and that another folder must be added to `exportRoots`; its `destination` says that `~` is not expanded. `plaud_recent` says that each item's `id` is the recording's `file_id`, and to use `list_files` for more than 20 recordings, a date range or a name search.
|
|
17
|
+
- The three skills teach the choices agents got wrong. `opencode-plaud` gives the exact Code Mode calls with their parameters, so no catalogue search is needed, and how to read a result safely out of Plaud's untrusted-data tags. It says when a list is enough and when to read a note or a transcript, that `start_at` is UTC without a `Z`, how to tell the last `list_files` page, how to page a long transcript with `limit` up to 500, and not to call `get_file`. `opencode-plaud-digest` uses `list_files`' `date_from` and `date_to`, and says how Plaud's server draws the day boundaries. `opencode-plaud-export` sends audio straight to `plaud_export`, picks the transcript block from the user's words, and says how to add an export root instead of copying a file elsewhere. The descriptions fire on Plaud and voice recordings, not on meetings in general.
|
|
18
|
+
- `docs/scripting.md` shows how to take a result's JSON out of Plaud's untrusted-data tags.
|
|
19
|
+
- The tools RPC uses the shared module v4. When a deny rule refuses a script's call, `PERMISSION_DENIED` names the denied action, such as `plaud_list_files` under `recent`, and its next step says to remove or narrow that deny rule, add a later allow rule for it to the session, or use a session whose agent allows it. A refused ask keeps its next step.
|
|
20
|
+
|
|
21
|
+
### Removed
|
|
22
|
+
|
|
23
|
+
- The `maxTextBytes` option. A transcript or note export is now held to a fixed 25 MiB, about 50 times the longest transcript seen, so there is nothing to tune. Remove `maxTextBytes` from the plugin's options: OpenCode refuses to start the plugin with an unknown option (`OPTIONS_INVALID`). `maxAudioBytes` stays.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- `plaud_recent` shows each recording's start time in UTC, as Plaud recorded it. Plaud sends its times as UTC with no zone, and the plugin read them as the machine's local time, so every time was off by the machine's offset from UTC. An export's frontmatter `date` is now the recording's local calendar date on your machine, as documented; before, it was the UTC date.
|
|
28
|
+
|
|
29
|
+
## [0.0.4] - 2026-11-04
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- Jelly shows the plugin's one-line summary and icon: `jelly.summary`, and `jelly.icon`, shipped as `assets/icon.svg`.
|
|
34
|
+
- Scripts can call `plaud_recent` through the tools RPC, as the method `recent`. Its input is `{ "limit"?: 1 to 20 }`; the account is the envelope's `account`, as for the five reads, and an account the options don't name is `ACCOUNT_UNKNOWN`. It runs under the same rules as for the model: `plaud_recent`, then the account's `list_files`, and a refused read is `PERMISSION_DENIED` naming that read. An input it does not take, such as `account`, is the new code `INPUT_INVALID`. `describe` lists it.
|
|
35
|
+
|
|
5
36
|
## [0.0.3] - 2026-11-04
|
|
6
37
|
|
|
7
38
|
### Added
|
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ opencode plugin add @joe-broadhead/opencode-plaud
|
|
|
20
20
|
|
|
21
21
|
Run `opencode reload`, or restart OpenCode. Then run `/plaud-status`: it shows `sign-in required` until you sign in.
|
|
22
22
|
|
|
23
|
-
**Update** with `opencode plugin update @joe-broadhead/opencode-plaud`, then run `opencode reload`. An entry pinned to a version, such as `@joe-broadhead/opencode-plaud
|
|
23
|
+
**Update** with `opencode plugin update @joe-broadhead/opencode-plaud`, then run `opencode reload`. An entry pinned to a version, such as `@joe-broadhead/opencode-plaud@<version>`, does not update: remove the `@version` from its `plugins` entry first.
|
|
24
24
|
|
|
25
25
|
## Sign in
|
|
26
26
|
|
|
@@ -45,7 +45,7 @@ Ask about your recordings, for example "what did I record this week?" or "save t
|
|
|
45
45
|
| `plaud_list_files` | `tools.plaud.list_files` | List or search recordings | runs |
|
|
46
46
|
| `plaud_get_note` | `tools.plaud.get_note` | The recording's notes, such as its summary | runs |
|
|
47
47
|
| `plaud_get_transcript` | `tools.plaud.get_transcript` | One transcript block, a page at a time | runs |
|
|
48
|
-
| `plaud_get_file` | `tools.plaud.get_file` | One recording in full
|
|
48
|
+
| `plaud_get_file` | `tools.plaud.get_file` | One recording in full: 150 to 320 KB, mostly the raw transcript and the notes again. The skill and Code Mode's description steer the model away from it, to the notes, the transcript, or `plaud_export` for audio | runs |
|
|
49
49
|
| `plaud_get_current_user` | `tools.plaud.get_current_user` | The signed-in account | runs |
|
|
50
50
|
| `plaud_recent` | `tools.plaud.recent` | The newest recordings, one line each: title, start time and length | runs |
|
|
51
51
|
| `plaud_export` | `tools.plaud.export` | Save audio, a transcript or a note as a file | asks |
|
|
@@ -81,7 +81,7 @@ See [SECURITY.md](https://github.com/joe-broadhead/opencode-plaud/blob/HEAD/SECU
|
|
|
81
81
|
|
|
82
82
|
### Scripts
|
|
83
83
|
|
|
84
|
-
A script or a cron job can call Plaud's five read tools with no model, through `opencode api`. It runs as a session and its agent, under that agent's permission rules and the session's own. Add `"account": "<alias>"` to read another account. Exports and every other Plaud tool are never available to scripts, and a script never gets a signed link:
|
|
84
|
+
A script or a cron job can call Plaud's five read tools and `plaud_recent` with no model, through `opencode api`. It runs as a session and its agent, under that agent's permission rules and the session's own. Add `"account": "<alias>"` to read another account. Exports and every other Plaud tool are never available to scripts, and a script never gets a signed link:
|
|
85
85
|
|
|
86
86
|
```sh
|
|
87
87
|
opencode api post /api/rpc/plaud.recordings.tools/list_files \
|
|
@@ -145,6 +145,7 @@ Members then only sign in, once per account: run `/connect` and choose **Plaud**
|
|
|
145
145
|
| --- | --- |
|
|
146
146
|
| `AUTH_REQUIRED` from an export | That account's server is not connected or not signed in. Sign in from `/connect`, then retry. |
|
|
147
147
|
| Status names agents that lack the default rules | Agents defined only in your config miss the rules; status lists those whose own rules would run Plaud tools without asking. Put the rules it shows first in **that agent's own** `permissions`, then repeat your top-level rules for Plaud tools after them. Never add them to the top-level `permissions`. See [the example](https://github.com/joe-broadhead/opencode-plaud/blob/HEAD/docs/configuration.md#agents-defined-in-your-config). |
|
|
148
|
+
| Status names a shadowed skill | A skill of your own, or a project's, has the id of one of the plugin's skills, so OpenCode loads it instead. Move or rename the file status names, then run `opencode reload`. |
|
|
148
149
|
| `OPTIONS_INVALID` | An option is wrong; the message names each one. Fix it in the plugin's `options`. |
|
|
149
150
|
| `HOST_UNTESTED` | Your OpenCode is outside `>=2.2.3 <2.3.0`. Install a tested release, or set `allowUntestedHost`. |
|
|
150
151
|
| `/plaud-status` and the palette command are missing | The plugin did not start. Open `/plugins` to see the error. |
|
package/assets/icon.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48" height="48"><rect width="48" height="48" rx="12" fill="#141414"/><g fill="none" stroke="#FFFFFF" stroke-width="3.5" stroke-linecap="round"><path d="M12 21v6"/><path d="M18 16v16"/><path d="M24 11v26"/><path d="M30 17v14"/><path d="M36 21v6"/></g></svg>
|