docs: clarify http:// prefix needed for local/self-hosted servers#119
Conversation
Adds the permission surface to the in-app MCP client (mcp_tools.dart):
Read group:
- list_roles — list a space's roles with their permission sets
- list_permissions — enumerate all known permission ids + descriptions
(local, no connection needed — lets an agent discover valid strings)
Manage group (privileged, off by default like moderate):
- create_role / update_role / delete_role
- add_member_role / remove_member_role
- list_channel_permissions / set_channel_permission /
delete_channel_permission — per-channel role/member allow/deny overwrites
(PUT/DELETE /channels/{id}/permissions/{target_id})
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- _updateRole: guard against empty string name being sent to the API when the caller passes `name: ""` explicitly; now returns an error instead of forwarding a blank role name - _listPermissions: drop unnecessary async (no await) — use Future.value expression body consistent with other pure handlers - Add test/features/developer/mcp_tools_test.dart covering tool registration groups, list_permissions output, update_role validation, set_channel_permission target_type validation, and not-connected behaviour for all network-bound manage tools https://claude.ai/code/session_018dziXgcBzX4ppj7Fed1UY1
… open-in-rail Bundles the in-flight working-tree changes: - Member roster loading: members.list gains a `withUser` flag (server embeds the user object in one batched query); the controller falls back to a bounded-concurrency (8) user backfill for older servers, and message rendering skips the roster load unless the message contains a mention. - Space rail: drag-reorder with insertion gaps between items, reordering within and across folders (moveSpaceToFolder gains a `before` anchor). - Image cropping: new shared showImageCropDialog (crop_your_image) with a pan/zoom frame; wired into avatar (circular 1:1), space icon and banner (16:9) editing. - Admin: open a space directly in the rail via `/spaces?space=<id>` using the admin's own connection instead of a public join. - Error reporting: navigation breadcrumbs driven off persisted space/channel selection (avoids a settings->reporting dependency cycle). - Open-tab strip: keep a tab's captured label in sync on channel rename. - Developer/MCP: surface the new `manage` permission group in settings + the developer settings page. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ch tests create_role now reports not-connected before name validation; update_role validates fields before the connection check. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Connecting to a local or self-hosted Accord server with a bare address (e.g. localhost:39099) fails with a "Broken pipe" error: the client assumes https:// when no scheme is given, then attempts a TLS handshake against a plain-HTTP port and the socket drops. Update the docs to steer users toward an explicit http:// prefix for local/LAN servers while keeping https:// the default for public hosts: - self-hosting/desktop-app.md: use http://localhost / http://<ip> in the connect steps, with a callout explaining the cause. - getting-started/adding-a-server.md: note the prefix in URL-format docs. - troubleshooting/common-issues.md: add a "Broken pipe" bullet. - self-hosting/deploying-a-server.md: distinguish HTTPS-proxy vs direct http://<ip>:39099 connections. No code changes; client scheme behavior is unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Review findings and fixesFixes pushed in commit 🔴 Severity 1 — Crash bug: empty-folder
|
Summary
Connecting the desktop client to a local or self-hosted Accord server using a bare address (e.g.
localhost:39099) fails with aClientException: Broken pipeerror. The cause: when no scheme is entered, the client assumeshttps://(AccordServer.normalizeBaseUrl), then attempts a TLS handshake against a plain-HTTP port — the server reads the handshake as malformed HTTP and drops the socket.This PR is docs-only. Per discussion, the client's scheme behavior is intentionally left unchanged (bare hostnames default to
https://, keeping public servers secure; an explicithttp://is honored). The docs are updated to steer users toward thehttp://prefix for local/LAN servers.Changes
docs/self-hosting/desktop-app.md— connect steps now usehttp://localhost:39099/http://192.168.1.50:39099, with a callout explaining the broken-pipe cause.docs/getting-started/adding-a-server.md— URL-format section notes that local/self-hosted servers need thehttp://prefix.docs/troubleshooting/common-issues.md— added a "Broken pipe error on a local server" bullet under Can't Connect to a Server.docs/self-hosting/deploying-a-server.md— connect step distinguishes the HTTPS-reverse-proxy case from directhttp://your-ip:39099.Test plan
http://127.0.0.1:39099connects successfully where the bare address produced the broken-pipe error.🤖 Generated with Claude Code