Repository navigation
v0.0.2
[0.0.2] - 2026-11-12
Added
-
The
rpcCommitsoption, off by default. When a host turns it on, because it confirms each change on its own screen before it calls the RPC, the six commit tools are also tools RPC methods (write,send,share,delete,exportandadmin), so a script can commit a plan with{ planId }. Plans stay single-use and bound to their session, agent and account, andaccessstill decides each commit: at"ask-changes"the RPC refuses it. With the option off nothing changes: a commit method answersrpc.method_not_found. -
Status names each interactive account's signed-in
email(when Google has verified it) and Workspacedomain(Google'shd; absent for a consumer account), read from theid_tokenof the sign-in and of each refresh, only when its claims check out:issis Google's,audis the OAuth client the sign-in used, andexphas not passed.gws_statusand the status RPC carry them;/gws-statusand the status dialog do not show them. A sign-in from before this release shows them once a token refresh returns anid_token, or after signing in again. -
Status shows whether
rpcCommitsis on:rpcCommitsingws_statusand the status RPC, and a Script commits row in/gws-statusand the status dialog. When it is on, the row,gws_status(rpcCommitsUnguardedAgents) and each commit method'sdescribedescription name the agents without the default rules, whose scripts commit without asking; the status RPC names them inunguardedAgents. -
calendar.today, a read-only method for Jelly's calendar, on an RPC named after the package (@joe-broadhead/opencode-gws), where Jelly calls a view's methods. It takes{}and answers{ account, at, state, events }: today's entries on one account's primary calendar (the implicitdefaultaccount, or else the first account that enablescalendar), today being midnight to midnight in that calendar's own time zone, at most 50, not yet ended, each with its id, title, start, end,allDay, location and https links only. It reads through the plugin's own read path with the account's sign-in, never writes, never downloads gws, and returns no descriptions or guests. A reading is kept in memory for a minute, and when a later read fails its events of the same day come back asstale; an answer stays within 60 KB of JSON (Jelly refuses one over 64 KB) by leaving out its latest-starting events, which the audit counts asomittedon acalendar.todayrecord; a read that takes more than eight seconds is abandoned; with nothing kept, it fails with the plugin's code,AUTH_REQUIREDwhen the account must sign in, or the newCALENDAR_UNAVAILABLEwhen no account enablescalendar. -
The
jellydeclaration names it:rpcdeclarescalendar.todayread-only under the existinggws.readpermission, a Today Home tile (views/calendar.html, a sealed page with only therpcgrant) calls it, andnativeDatapoints Jelly's native calendar at that tile's read (In Jelly).
Fixed
- A commit's audit record carries
caller: "rpc"when a script made it, as a script's reads and plans already did.
Known limits
- Platforms. macOS (arm64, x64) and Linux (glibc, arm64, x64) only. Windows and musl have no release binary, so the tools refuse with
GWS_UNAVAILABLEunlessbinary.pathnames agws0.22.5 executable. - Operations. The tools are the operations in the manifest generated from the pinned
gws0.22.5. A method that a latergwsadds arrives with a plugin release, andgws_cataloglists only the manifest. - Services the default sign-in leaves out. Keep needs domain-wide delegation that a Workspace admin sets up, admin reports need a Workspace admin account, and Model Armor cannot run. A method that only a Chat app or a Classroom add-on can run (
appOnly) fails withAUTH_SCOPE_MISSINGunder a Google sign-in. - Unverified OAuth apps. An External client left in Testing shows unverified-app warnings, and its refresh tokens expire after 7 days, so each account signs in again weekly.
- A cancelled commit may have been applied.
CANCELLEDmeans the call stopped whilegwsran. Check the state withgws_readbefore planning the change again. - Asks need an answerer. At
access: "ask-changes",opencode runand scripts cannot answer a prompt, so a commit there needs an allow rule for it, oraccess: "all". - Output and time limits. A result that is too large stops with
OUTPUT_LIMIT, and a slow call withTIMEOUT. Narrow the request withfields, a smaller page size,maxPagesormaxItems. - Tested hosts. Tested on OpenCode 2.2.3, 2.2.4, 2.2.5 and 2.2.6. A later 2.2 release loads, and
/gws-statusmarks it untested. - Audit lines can drop. The audit log is written off the call path, with a 100 ms budget per line. A write that stalls past it is abandoned: its line and any queued behind it are lost. The call's result is not affected. The sink then stops writing until the plugin reloads, and
/gws-statusshows that some audit records could not be saved. - 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.