2026-10-22 13:48:09 +03:00
|
|
|
{
|
|
|
|
|
"id": "hermes",
|
|
|
|
|
"name": "Hermes",
|
hermes: ship the browser side of the Theseus feature set
Fixes the "unknown invoke: fetchCloudBackup" dead-end on mobile sign-in
and the empty hooks the Settings UI depended on. The shim now implements:
- Local wrap: on signup it generates a BIP-39 mnemonic (@scure/bip39),
derives the Nostr sk via PBKDF2+HKDF with purpose "messenger/0" (same
chain Theseus runs), scrypt+AES-GCM wraps the mnemonic (@noble/hashes
scrypt matching HERMES_SCRYPT N=2^15 r=8 p=1), stores it in
localStorage.hermes.wrap. hasBackup/getBackup use that wrap, so a
password sign-in now works on the same device.
- Cloud backup: publishCloudBackup / fetchCloudBackup / removeCloudBackup
/ hasCloudBackup matching Theseus's dtag format
(hermes.backup.v1/<sha256(bareName)[:32]>). Password unlocks the local
wrap, re-wraps for the cloud copy with a fresh salt, publishes a
kind:30078 to every relay, remembers the event id for later retract
via NIP-09.
- Phone discovery: setPhone / clearPhone / findByPhones with the same
hermes.phone/<base64url(sha256(E.164))[:32]> d-tag Theseus uses, so a
vCard import on the browser surfaces the same matches a Theseus user
would see.
- contactsUpdate / contactsRemove rounded out so the panel's contacts
menu is fully wired.
Also:
- Default relay list bumped to [wss://hermes.x, wss://relay.silentmode.st,
wss://nos.lol] in both the Theseus host and the web shim, so every
publish/fetch hits our own strfry on the VPS and the cloud backup lives
somewhere we control.
- Theseus host: addons-host.js + main.js now understand a `width` field
on sidebar panels, so the Hermes panel declares width:500 and opens at
a Telegram-ish width by default (user can still drag; saved per-panel).
- Panel + web messenger: forced color-scheme:dark (the brand mark has
hard navy cutouts that stand out as "black inside the envelope" on a
light background; dark everywhere is cheaper than theme-aware marks).
- Password fields: 👁 toggle appears on every <input type="password">
via a tiny JS enhancer in both the panel and the web messenger.
- Settings/signin tabs: Sign in / Sign up persistent pill, drag-to-resize
contacts/thread splitter (persisted per device), 2-column always.
2026-10-22 15:33:07 +03:00
|
|
|
"version": "0.3.5",
|
2026-10-22 13:48:09 +03:00
|
|
|
"description": "Message anyone by their on-chain name. End-to-end encrypted DMs over Nostr (NIP-17), identity derived from your wallet seed.",
|
|
|
|
|
"author": "Silent Mode",
|
|
|
|
|
"icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjUwMCAyMzAgMzIwIDMyMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJIZXJtZXMiPjx0aXRsZT5IZXJtZXM8L3RpdGxlPjxwYXRoIGZpbGw9IiMzOEJERjgiIGQ9Ik01NDcuNjE1MTEyLDUxMC4zODA5NTEgICBDNTQxLjI1OTM5OSw1MDAuNzk2NjkyIDUzMy4xMjYzNDMsNDk3LjMwMDA0OSA1MjEuNTI2ODU1LDQ5Ni40MDA4MTggICBDNTAwLjQwMTU4MSw0OTQuNzYzMjE0IDQ4My45NTg0NjYsNDgyLjg4MDI4MCA0NzEuMzgzMjA5LDQ2NS45ODgzMTIgICBDNDY5LjIyNTY3Nyw0NjMuMDkwMDg4IDQ2Ny4wNzYxNDEsNDYyLjEwOTc3MiA0NjMuNTQwMTkyLDQ2Mi4xODkzOTIgICBDNDQxLjQ3MDI3Niw0NjIuNjg2MzEwIDQyMi4yODY2NTIsNDU1LjIyMjgzOSA0MDYuNTQ3NzkxLDQzOS44Mzc5NTIgICBDMzk3LjQyNDI1NSw0MzAuOTE5NTg2IDM4OS4xMzIwNTAsNDIxLjE1MDc1NyAzNzkuOTM5Nzg5LDQxMS4xOTUwMzggICBDMzgyLjg2NTE0Myw0MDkuODkxMzI3IDM4NC43NDMzMTcsNDA4Ljk0NzExMyAzODYuNjk2NjU1LDQwOC4xOTkzMTAgICBDNDQ5LjE2NTIyMiwzODQuMjg0NTQ2IDUxMS42NzUyMDEsMzYwLjQ3NzI5NSA1NzQuMDgzMDA4LDMzNi40MDUyMTIgICBDNTg0LjgzMjU4MSwzMzIuMjU4ODUwIDU5NS4yNzk1NDEsMzMxLjI5MDI1MyA2MDYuNDYyMDk3LDMzNi4yODMxNDIgICBDNjA3LjQyNzk3OSwzMjMuODU1NTkxIDYxNS40OTgxMDgsMzE5LjI1MzM4NyA2MjUuNTQzNDU3LDMxNS40NTUwNzggICBDNzAyLjQzMTgyNCwyODYuMzgyMDE5IDc3OS4xODI0OTUsMjU2Ljk0NDgyNCA4NTUuOTkxMjExLDIyNy42NjA3MDYgICBDODY5Ljg1NTE2NCwyMjIuMzc0OTA4IDg3OS4wMDI1NjMsMjI2LjgxMTc4MyA4ODQuMTYwNzY3LDI0MC44OTMyMDQgICBDOTAxLjg0NTc2NCwyODkuMTcxMjY1IDkxOS41NzAwNjgsMzM3LjQzNDk2NyA5MzcuMzIwNjE4LDM4NS42ODg5NjUgICBDOTQyLjI4NDk3MywzOTkuMTg0NDc5IDkzOC4yMDk0NzMsNDA4Ljk3OTEyNiA5MjQuODM1NTEwLDQxNC4wNzQ2NDYgICBDODU2LjU2OTY0MSw0NDAuMDg0MDc2IDc4OC4yNjE3ODAsNDY1Ljk4MzE4NSA3MTkuOTY2MTI1LDQ5MS45MTQzOTggICBDNzEwLjAwODE3OSw0OTUuNjk1MzEyIDcwMC4wNzk3NzMsNDk5LjU1OTg3NSA2OTAuMDYxMTU3LDUwMy4xNzM1ODQgICBDNjc3Ljg2Nzg1OSw1MDcuNTcxNjU1IDY2OC4zMjIzMjcsNTAzLjQwMzI5MCA2NjMuNjI2ODMxLDQ5MS4wMzMwNTEgICBDNjUyLjU4NDI5MCw0NjEuOTQxOTU2IDY0MS45MDMwNzYsNDMyLjcxMzc0NSA2MzEuMDY2ODMzLDQwMy41NDQzNDIgICBDNjI5LjM4NjM1MywzOTkuMDIwODc0IDYyNy4zNDAzOTMsMzk0LjYwNjE3MSA2MjYuMDE1MTM3LDM4OS45ODMwMzIgICBDNjIyLjM2MjYxMCwzNzcuMjQwOTk3IDYxMy4xMDMxNDksMzY5LjcwNjY5NiA2MDIuMDk3NzE3LDM2My44NzM1MzUgICBDNTkzLjYzMDczNywzNTkuMzg1NzczIDU4NS4wMzYwMTEsMzU4LjY2NTQwNSA1NzUuNjgyMTI5LDM2Mi4zMDU3MjUgICBDNTI2LjgzODU2MiwzODEuMzE0NDg0IDQ3Ny44NTU0OTksMzk5Ljk2NDg3NCA0MjguOTI1NzUxLDQxOC43NTI0MTEgICBDNDI3LjI0OTU3Myw0MTkuMzk1OTk2IDQyNS42MjQ2MzQsNDIwLjE3MjkxMyA0MjMuMjEyMzcyLDQyMS4yMTg1OTcgICBDNDI5Ljk0NzM4OCw0MjguMTYxMDExIDQzNy41MTQ1MjYsNDMyLjM0NjY0OSA0NDUuOTY2MzA5LDQzNC45MzY3OTggICBDNDU4LjY5Njc3Nyw0MzguODM4MTY1IDQ3MS4wODUwNTIsNDM3LjgxMjUwMCA0ODMuNTYxODkwLDQzMi45NDUxNjAgICBDNTIyLjYyMzIzMCw0MTcuNzA2ODE4IDU2MS44MzU2OTMsNDAyLjg1NTYyMSA2MDAuOTk0MjYzLDM4Ny44NjY2MzggICBDNjAyLjgyMTE2NywzODcuMTY3Mzg5IDYwNC42OTMyOTgsMzg2LjU4NjIxMiA2MDcuMTQxNTQxLDM4NS43NDQ3NTEgICBDNjA5Ljg5NjYwNiwzOTMuMzM3OTUyIDYxMi41NDQ0MzQsNDAwLjYzNTgwMyA2MTUuNDc2MzE4LDQwOC43MTY0OTIgICBDNTc1LjI2OTA0Myw0MjQuMTQ3MzY5IDUzNS4zMDY1ODAsNDM5LjQ4NDMxNCA0OTQuNzMwOTI3LDQ1NS4wNTY1NDkgICBDNTAyLjk4NTM1Miw0NjQuNzQwMTQzIDUxMi45MTU4MzMsNDcwLjAzMzI2NCA1MjQuNzkwNTg4LDQ3MS45NTQ0OTggICBDNTMzLjIyMDU4MSw0NzMuMzE4NDIwIDU0MS4zMjQzNDEsNDcyLjI5NDIyMCA1NDkuMjk1NzE1LDQ2OS4yMTI4OTEgICBDNTczLjUwNzA4MCw0NTkuODU0MDA0IDU5Ny43NjgxODgsNDUwLjYyMzcxOCA2MjIuMDE1NDQyLDQ0MS4zNTc5NDEgICBDNjIzLjUzMzk5Nyw0NDAuNzc3NjQ5IDYyNS4xMDA0MDMsNDQwLjMyMjQ3OSA2MjcuMTEzMDk4LDQzOS42NTMyOTAgICBDNjI5Ljk5Njg4Nyw0NDcuMjk4MTU3IDYzMi43ODIyODgsNDU0LjY4MjA5OCA2MzUuNzEyNDYzLDQ2Mi40NDk4NjAgICBDNjExLjQzMzI4OSw0NzEuODEyNDM5IDU4Ny42MTYwMjgsNDgwLjk5Njg4NyA1NjMuMDIzNjIxLDQ5MC40ODAyNTUgICBDNTc1LjM2NDg2OCw1MDMuNDA3NzQ1IDU4OS41OTQ0MjEsNTEwLjI5MDQ5NyA2MDYuNDYxMzA0LDUwNy4wODA5NjMgICBDNjE4LjQxMjUzNyw1MDQuODA2NzYzIDYyOS43NzgxMzcsNDk5LjQ1MTkwNCA2NDEuNDAxNTUwLDQ5NS40NjE2MDkgICBDNjQzLjExMTgxNiw0OTQuODc0NDgxIDY0NC44MDIxODUsNDk0LjIyOTMwOSA2NDUuODAwNjU5LDQ5My44NjYwNTggICBDNjUxLjI3MzM3Niw1MDAuNzkwNzEwIDY1Ni40NDAzMDgsNTA3LjMyODQwMCA2NjIuMTExNTExLDUxNC41MDQxNTAgICBDNjQ1LjgwODQ3Miw1MjAuMTUwMjY5IDYyOS40MDgzODYsNTI3LjU4Mjk0NyA2MTIuMjA1Njg4LDUzMS4zNjk2MjkgICBDNTg3LjQ2ODE0MCw1MzYuODE1MDYzIDU2Ni4wMjQwNDgsNTI3Ljc4MzUwOCA1NDcuNjE1MTEyLDUxMC4zODA5NTEgIE05MDguOTM1OTEzLDM3OS4yMDA4NjcgICBDODk1LjUwMDg1NCwzNDIuNjQ0Mzc5IDg4Mi4wNjU3MzUsMzA2LjA4Nzg5MSA4NjguMjEyMzQxLD
|
|
|
|
|
"main": "index.js",
|
|
|
|
|
"activation": "on-demand",
|
|
|
|
|
"panels": [
|
|
|
|
|
{
|
|
|
|
|
"id": "main",
|
|
|
|
|
"title": "Hermes",
|
|
|
|
|
"icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjUwMCAyMzAgMzIwIDMyMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJIZXJtZXMiPjx0aXRsZT5IZXJtZXM8L3RpdGxlPjxwYXRoIGZpbGw9IiMzOEJERjgiIGQ9Ik01NDcuNjE1MTEyLDUxMC4zODA5NTEgICBDNTQxLjI1OTM5OSw1MDAuNzk2NjkyIDUzMy4xMjYzNDMsNDk3LjMwMDA0OSA1MjEuNTI2ODU1LDQ5Ni40MDA4MTggICBDNTAwLjQwMTU4MSw0OTQuNzYzMjE0IDQ4My45NTg0NjYsNDgyLjg4MDI4MCA0NzEuMzgzMjA5LDQ2NS45ODgzMTIgICBDNDY5LjIyNTY3Nyw0NjMuMDkwMDg4IDQ2Ny4wNzYxNDEsNDYyLjEwOTc3MiA0NjMuNTQwMTkyLDQ2Mi4xODkzOTIgICBDNDQxLjQ3MDI3Niw0NjIuNjg2MzEwIDQyMi4yODY2NTIsNDU1LjIyMjgzOSA0MDYuNTQ3NzkxLDQzOS44Mzc5NTIgICBDMzk3LjQyNDI1NSw0MzAuOTE5NTg2IDM4OS4xMzIwNTAsNDIxLjE1MDc1NyAzNzkuOTM5Nzg5LDQxMS4xOTUwMzggICBDMzgyLjg2NTE0Myw0MDkuODkxMzI3IDM4NC43NDMzMTcsNDA4Ljk0NzExMyAzODYuNjk2NjU1LDQwOC4xOTkzMTAgICBDNDQ5LjE2NTIyMiwzODQuMjg0NTQ2IDUxMS42NzUyMDEsMzYwLjQ3NzI5NSA1NzQuMDgzMDA4LDMzNi40MDUyMTIgICBDNTg0LjgzMjU4MSwzMzIuMjU4ODUwIDU5NS4yNzk1NDEsMzMxLjI5MDI1MyA2MDYuNDYyMDk3LDMzNi4yODMxNDIgICBDNjA3LjQyNzk3OSwzMjMuODU1NTkxIDYxNS40OTgxMDgsMzE5LjI1MzM4NyA2MjUuNTQzNDU3LDMxNS40NTUwNzggICBDNzAyLjQzMTgyNCwyODYuMzgyMDE5IDc3OS4xODI0OTUsMjU2Ljk0NDgyNCA4NTUuOTkxMjExLDIyNy42NjA3MDYgICBDODY5Ljg1NTE2NCwyMjIuMzc0OTA4IDg3OS4wMDI1NjMsMjI2LjgxMTc4MyA4ODQuMTYwNzY3LDI0MC44OTMyMDQgICBDOTAxLjg0NTc2NCwyODkuMTcxMjY1IDkxOS41NzAwNjgsMzM3LjQzNDk2NyA5MzcuMzIwNjE4LDM4NS42ODg5NjUgICBDOTQyLjI4NDk3MywzOTkuMTg0NDc5IDkzOC4yMDk0NzMsNDA4Ljk3OTEyNiA5MjQuODM1NTEwLDQxNC4wNzQ2NDYgICBDODU2LjU2OTY0MSw0NDAuMDg0MDc2IDc4OC4yNjE3ODAsNDY1Ljk4MzE4NSA3MTkuOTY2MTI1LDQ5MS45MTQzOTggICBDNzEwLjAwODE3OSw0OTUuNjk1MzEyIDcwMC4wNzk3NzMsNDk5LjU1OTg3NSA2OTAuMDYxMTU3LDUwMy4xNzM1ODQgICBDNjc3Ljg2Nzg1OSw1MDcuNTcxNjU1IDY2OC4zMjIzMjcsNTAzLjQwMzI5MCA2NjMuNjI2ODMxLDQ5MS4wMzMwNTEgICBDNjUyLjU4NDI5MCw0NjEuOTQxOTU2IDY0MS45MDMwNzYsNDMyLjcxMzc0NSA2MzEuMDY2ODMzLDQwMy41NDQzNDIgICBDNjI5LjM4NjM1MywzOTkuMDIwODc0IDYyNy4zNDAzOTMsMzk0LjYwNjE3MSA2MjYuMDE1MTM3LDM4OS45ODMwMzIgICBDNjIyLjM2MjYxMCwzNzcuMjQwOTk3IDYxMy4xMDMxNDksMzY5LjcwNjY5NiA2MDIuMDk3NzE3LDM2My44NzM1MzUgICBDNTkzLjYzMDczNywzNTkuMzg1NzczIDU4NS4wMzYwMTEsMzU4LjY2NTQwNSA1NzUuNjgyMTI5LDM2Mi4zMDU3MjUgICBDNTI2LjgzODU2MiwzODEuMzE0NDg0IDQ3Ny44NTU0OTksMzk5Ljk2NDg3NCA0MjguOTI1NzUxLDQxOC43NTI0MTEgICBDNDI3LjI0OTU3Myw0MTkuMzk1OTk2IDQyNS42MjQ2MzQsNDIwLjE3MjkxMyA0MjMuMjEyMzcyLDQyMS4yMTg1OTcgICBDNDI5Ljk0NzM4OCw0MjguMTYxMDExIDQzNy41MTQ1MjYsNDMyLjM0NjY0OSA0NDUuOTY2MzA5LDQzNC45MzY3OTggICBDNDU4LjY5Njc3Nyw0MzguODM4MTY1IDQ3MS4wODUwNTIsNDM3LjgxMjUwMCA0ODMuNTYxODkwLDQzMi45NDUxNjAgICBDNTIyLjYyMzIzMCw0MTcuNzA2ODE4IDU2MS44MzU2OTMsNDAyLjg1NTYyMSA2MDAuOTk0MjYzLDM4Ny44NjY2MzggICBDNjAyLjgyMTE2NywzODcuMTY3Mzg5IDYwNC42OTMyOTgsMzg2LjU4NjIxMiA2MDcuMTQxNTQxLDM4NS43NDQ3NTEgICBDNjA5Ljg5NjYwNiwzOTMuMzM3OTUyIDYxMi41NDQ0MzQsNDAwLjYzNTgwMyA2MTUuNDc2MzE4LDQwOC43MTY0OTIgICBDNTc1LjI2OTA0Myw0MjQuMTQ3MzY5IDUzNS4zMDY1ODAsNDM5LjQ4NDMxNCA0OTQuNzMwOTI3LDQ1NS4wNTY1NDkgICBDNTAyLjk4NTM1Miw0NjQuNzQwMTQzIDUxMi45MTU4MzMsNDcwLjAzMzI2NCA1MjQuNzkwNTg4LDQ3MS45NTQ0OTggICBDNTMzLjIyMDU4MSw0NzMuMzE4NDIwIDU0MS4zMjQzNDEsNDcyLjI5NDIyMCA1NDkuMjk1NzE1LDQ2OS4yMTI4OTEgICBDNTczLjUwNzA4MCw0NTkuODU0MDA0IDU5Ny43NjgxODgsNDUwLjYyMzcxOCA2MjIuMDE1NDQyLDQ0MS4zNTc5NDEgICBDNjIzLjUzMzk5Nyw0NDAuNzc3NjQ5IDYyNS4xMDA0MDMsNDQwLjMyMjQ3OSA2MjcuMTEzMDk4LDQzOS42NTMyOTAgICBDNjI5Ljk5Njg4Nyw0NDcuMjk4MTU3IDYzMi43ODIyODgsNDU0LjY4MjA5OCA2MzUuNzEyNDYzLDQ2Mi40NDk4NjAgICBDNjExLjQzMzI4OSw0NzEuODEyNDM5IDU4Ny42MTYwMjgsNDgwLjk5Njg4NyA1NjMuMDIzNjIxLDQ5MC40ODAyNTUgICBDNTc1LjM2NDg2OCw1MDMuNDA3NzQ1IDU4OS41OTQ0MjEsNTEwLjI5MDQ5NyA2MDYuNDYxMzA0LDUwNy4wODA5NjMgICBDNjE4LjQxMjUzNyw1MDQuODA2NzYzIDYyOS43NzgxMzcsNDk5LjQ1MTkwNCA2NDEuNDAxNTUwLDQ5NS40NjE2MDkgICBDNjQzLjExMTgxNiw0OTQuODc0NDgxIDY0NC44MDIxODUsNDk0LjIyOTMwOSA2NDUuODAwNjU5LDQ5My44NjYwNTggICBDNjUxLjI3MzM3Niw1MDAuNzkwNzEwIDY1Ni40NDAzMDgsNTA3LjMyODQwMCA2NjIuMTExNTExLDUxNC41MDQxNTAgICBDNjQ1LjgwODQ3Miw1MjAuMTUwMjY5IDYyOS40MDgzODYsNTI3LjU4Mjk0NyA2MTIuMjA1Njg4LDUzMS4zNjk2MjkgICBDNTg3LjQ2ODE0MCw1MzYuODE1MDYzIDU2Ni4wMjQwNDgsNTI3Ljc4MzUwOCA1NDcuNjE1MTEyLDUxMC4zODA5NTEgIE05MDguOTM1OTEzLDM3OS4yMDA4NjcgICBDODk1LjUwMDg1NCwzNDIuNjQ0Mzc5IDg4Mi4wNjU3MzUsMzA2LjA4Nzg5MSA4NjguMjEyMz
|
|
|
|
|
"page": "panel.html",
|
hermes: ship the browser side of the Theseus feature set
Fixes the "unknown invoke: fetchCloudBackup" dead-end on mobile sign-in
and the empty hooks the Settings UI depended on. The shim now implements:
- Local wrap: on signup it generates a BIP-39 mnemonic (@scure/bip39),
derives the Nostr sk via PBKDF2+HKDF with purpose "messenger/0" (same
chain Theseus runs), scrypt+AES-GCM wraps the mnemonic (@noble/hashes
scrypt matching HERMES_SCRYPT N=2^15 r=8 p=1), stores it in
localStorage.hermes.wrap. hasBackup/getBackup use that wrap, so a
password sign-in now works on the same device.
- Cloud backup: publishCloudBackup / fetchCloudBackup / removeCloudBackup
/ hasCloudBackup matching Theseus's dtag format
(hermes.backup.v1/<sha256(bareName)[:32]>). Password unlocks the local
wrap, re-wraps for the cloud copy with a fresh salt, publishes a
kind:30078 to every relay, remembers the event id for later retract
via NIP-09.
- Phone discovery: setPhone / clearPhone / findByPhones with the same
hermes.phone/<base64url(sha256(E.164))[:32]> d-tag Theseus uses, so a
vCard import on the browser surfaces the same matches a Theseus user
would see.
- contactsUpdate / contactsRemove rounded out so the panel's contacts
menu is fully wired.
Also:
- Default relay list bumped to [wss://hermes.x, wss://relay.silentmode.st,
wss://nos.lol] in both the Theseus host and the web shim, so every
publish/fetch hits our own strfry on the VPS and the cloud backup lives
somewhere we control.
- Theseus host: addons-host.js + main.js now understand a `width` field
on sidebar panels, so the Hermes panel declares width:500 and opens at
a Telegram-ish width by default (user can still drag; saved per-panel).
- Panel + web messenger: forced color-scheme:dark (the brand mark has
hard navy cutouts that stand out as "black inside the envelope" on a
light background; dark everywhere is cheaper than theme-aware marks).
- Password fields: 👁 toggle appears on every <input type="password">
via a tiny JS enhancer in both the panel and the web messenger.
- Settings/signin tabs: Sign in / Sign up persistent pill, drag-to-resize
contacts/thread splitter (persisted per device), 2-column always.
2026-10-22 15:33:07 +03:00
|
|
|
"side": "left",
|
|
|
|
|
"width": 500
|
2026-10-22 13:48:09 +03:00
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"capabilities": [
|
|
|
|
|
"sidebar-panel"
|
|
|
|
|
]
|
|
|
|
|
}
|