Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions docs/deep-links.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ its `#buzz=` address form.
The OS ingress accepts the Buzz link forms and nothing else:

- `buzz://message?channel=<id>&id=<event>[&thread=<root>]`
- `buzz://plugin-install?repository=<encoded-https-or-ssh-url>[&ref=<encoded-branch-or-tag>]`
- `buzz://channel/<id>`
- `buzz://channel/<id>/<event>` (the original desktop message alias)
- `buzz://repo?owner=<64-hex key>&d=<identifier>[&tab=<section>]`
Expand All @@ -27,6 +28,20 @@ The OS ingress accepts the Buzz link forms and nothing else:
- `buzz://connect?relay=<wss-url>`
- `buzz://add-community?relay=<wss-url>[&name=<name>]`

Plugin install links open **Settings > Plugins > Manage plugins** and fetch a
preview from the Git repository and optional branch or tag. The repository accepts
HTTPS, `ssh://`, `git@host:path`, `github.com/owner/repo`, or `owner/repo`.
Percent-encode each query value. Review the plugin and computer access, then select
**Install plugin**. Opening the link does not install, enable, or grant access.
You can close a linked preview while Git loads; its late result is discarded.
An omitted `ref` uses the repository default. Duplicate known parameters and
repository credentials are rejected.

The Settings target has no community scope. A new installation completes identity
setup before the app can show it. Repositories hosted by a Buzz community require
that community to be selected and connected for authentication. See
[Git imports and SSH agents](plugin-architecture.md#open-a-git-import-from-a-link).

Both query-based invite and message links also accept a single `/` before `?`,
as supplied by Windows URL activation (for example, `buzz://join/?relay=…&code=…`).
Non-root paths remain unsupported for these forms; channel paths are unchanged.
Expand Down
26 changes: 26 additions & 0 deletions docs/plugin-architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,32 @@ create a second connection, cache or outbox inside a page. The conversation prev
source imports are not a versioned external SDK. See
[conversation component ownership](channels.md#reusing-conversation-ui).

## Open a Git import from a link

Open `buzz://plugin-install?repository=<encoded-repository>[&ref=<encoded-ref>]`
to open a preview in **Settings > Plugins > Manage plugins > Add**. The repository
accepts HTTPS, `ssh://`, `git@host:path`, `github.com/owner/repo`, or `owner/repo`.
Omit `ref` to use the repository default. For example, on macOS:

```sh
open 'buzz://plugin-install?repository=https%3A%2F%2Fgithub.com%2FOWNER%2FPLUGIN.git&ref=main'
open 'buzz://plugin-install?repository=git%40github.com%3AOWNER%2FPLUGIN.git&ref=main'
```

The link fetches a preview through the existing importer. Review the plugin and
computer access, then select **Install plugin**. Opening the link does not install,
enable, or grant access. You can close the dialog while the preview loads. A late
result is discarded. Confirmed installation remains protected from dismissal.

SSH uses the desktop process's inherited `SSH_AUTH_SOCK` and known hosts.
The importer disables SSH config and interactive prompts. If terminal Git uses
an `IdentityAgent`, launch Buzz with that socket as `SSH_AUTH_SOCK`.

A new installation completes identity setup before the app can show the linked
preview. For a repository hosted by a Buzz community, select that community and
wait for its relay connection before opening the link. Other repositories do not
require a selected community. See [OS deep links](deep-links.md).

## The `buzzodz` CLI

Run `pnpm buzzodz --help` from this repository, or install the standalone executable:
Expand Down
3 changes: 3 additions & 0 deletions src/app/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -575,6 +575,9 @@ function ConnectedApp({ services }: { services: AppServices }) {
);
}}
onSection={openSettingsSection}
onPluginImportClosed={() =>
route.dismissPluginImport(route.request)
}
onProvider={route.setSettingsProvider}
onUnsavedChange={setSettingsUnsaved}
/>
Expand Down
Loading
Loading