Skip to content

Commit e5cc6fc

Browse files
committed
feat: ship 0.6.32 transport and remote mesh review updates
1 parent 87a70a4 commit e5cc6fc

27 files changed

Lines changed: 3141 additions & 109 deletions

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,33 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
88

99
## [Unreleased]
1010

11+
## [0.6.32] - 2026-04-17
12+
13+
### Changed
14+
- **Introduced peers from other meshspaces now require an explicit Connect-page review step instead of blending into routine contact introductions** - introduced cross-mesh peers are separated into a dedicated remote-meshspace section, blocked from the quick-connect path unless the operator explicitly confirms the bridge, and require instance-admin approval before the connection can proceed.
15+
16+
## [0.6.31] - 2026-04-17
17+
18+
### Changed
19+
- **Sidebar connected peers now deep-link into the right review surfaces instead of behaving like inert labels** - clicking an individual connected peer in the left rail now opens the matching Trust Network card, the header peer-count link now jumps to the Connected Peers section on Connect, and both destinations add target highlighting so operators land on the right peer state immediately.
20+
- **Notification bell filters now support multi-toggle adjustment without collapsing the menu after every click** - Mentions, Inbox, DMs, Channels, Feed, and Reset now keep the dropdown open while the user refines filters, without changing normal notification-item navigation or clear behavior.
21+
22+
## [0.6.30] - 2026-04-16
23+
24+
### Changed
25+
- **Admins can now configure secure mesh transport from the UI instead of hand-editing shell environment** - the Admin page adds a Transport Security panel for self-signed local TLS, provided certificate paths, external TLS terminator declaration, restart-required state, and secure-invite readiness so VPS and tunnel setup is much easier to understand and operate.
26+
- **Generated invites and handshake advertisements now stay honest while transport changes are pending restart** - saving a future TLS mode no longer causes Canopy to advertise `wss://` listener endpoints before the running mesh listener has actually restarted into secure mode, and stale external endpoint intent is cleared when operators switch back to non-external modes.
27+
28+
## [0.6.29] - 2026-04-16
29+
30+
### Changed
31+
- **Explicit public WSS invites now stay clearer from generation through live transport state** - public `wss://` invites no longer co-advertise same-host plain `ws://` fallback unless the operator explicitly opts in, active peer rows/diagnostics now distinguish the current live transport from other known endpoints, and operator-selected public endpoint intent no longer lingers after invite generation returns to the default/local path.
32+
33+
## [0.6.28] - 2026-04-16
34+
35+
### Changed
36+
- **WSS invite handling is now safer and clearer for VPS/public operators** - explicit `wss://` peer endpoints no longer silently downgrade to `ws://` when TLS fails, Connect now shows transport-security posture and secure-vs-plain advertised endpoint counts, and the docs explain how Canopy currently handles TLS, reverse proxies, self-signed certificates, and strict verified-WSS mode.
37+
1138
## [0.6.27] - 2026-04-13
1239

1340
### Changed

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</p>
1212

1313
<p align="center">
14-
<img src="https://img.shields.io/badge/version-0.6.27-blue" alt="Version 0.6.27">
14+
<img src="https://img.shields.io/badge/version-0.6.32-blue" alt="Version 0.6.32">
1515
<img src="https://img.shields.io/badge/python-3.10%2B-blue" alt="Python 3.10+">
1616
<img src="https://img.shields.io/badge/license-Apache%202.0-green" alt="Apache 2.0 License">
1717
<img src="https://img.shields.io/badge/encryption-ChaCha20--Poly1305-blueviolet" alt="ChaCha20-Poly1305">
@@ -102,6 +102,9 @@ Recent end-user improvements reflected in the app and docs:
102102
- **Preview-only review before sync** — first contact can connect for review while channels and history stay paused until an admin explicitly approves peer or mesh sync from the Trust page.
103103
- **Safer cross-mesh review** — invite import can keep a mismatched peer connected long enough for an admin to decide whether to treat it as the same mesh or keep an intentional bridge.
104104
- **Device Profile now drives peer-facing identity** — the name, avatar, and node hint shared during connection review now come from **Settings -> Device Profile**, and preview-only peers can refresh stale identity hints without approving sync.
105+
- **Admin transport setup is now first-class** — instance admins can configure self-signed TLS, provided certificate paths, or an external `wss://` terminator from the Admin UI and see whether secure invite generation is actually ready before sharing a public endpoint.
106+
- **Sidebar peer navigation is more useful** — connected peers in the left rail now open the matching Trust card, and the header peer count jumps directly to the Connected Peers section on Connect instead of dropping you at a generic page top.
107+
- **Remote meshspace introductions are now visually separated on Connect** — peers introduced through your contacts but advertising a different meshspace now appear in an explicit review section and require an intentional admin-approved bridge action instead of looking like routine same-mesh introductions.
105108
- **Meshspaces for safer local multi-mesh operation** — One Canopy install can now manage multiple isolated local Meshspaces with separate runtimes, ports, and operator controls instead of relying on manual repo clones or copied data directories.
106109
- **Bookmarks for durable memory** — Save important channel messages, feed posts, and DMs as private local bookmarks with notes and tags, then jump back to the original source later.
107110
- **Reposts and lineage variants** — Bring high-value sources forward again or publish a derivative version while preserving provenance back to the original instead of copying content blindly.
@@ -361,7 +364,7 @@ Agent account first-run guide: [docs/AGENT_ONBOARDING.md](docs/AGENT_ONBOARDING.
361364
Each Canopy instance is a self-contained node: it holds its own encrypted database, runs a local web UI and REST API, and connects directly to peer instances over encrypted WebSockets. There is no central server because the network is the peers themselves.
362365

363366
- Direct connections: peers on the same LAN can discover and connect automatically.
364-
- Remote connections: use invite codes to link peers across networks and port-forward mesh port `7771` when needed.
367+
- Remote connections: use invite codes to link peers across networks and port-forward mesh port `7771` when needed. Public VPS/tunnel endpoints can be advertised as `wss://...`; explicit `wss://` endpoints are not silently downgraded to plain `ws://` if TLS fails, and same-host public plain fallback is opt-in rather than automatic.
365368
- Relay routing: when no direct path exists, a mutually trusted peer can relay targeted traffic.
366369
- Inside each node, the web UI, REST API, local database, file storage, and P2P engine all live together as one local-first application surface.
367370

@@ -517,6 +520,7 @@ Full reference: [docs/API_REFERENCE.md](docs/API_REFERENCE.md)
517520
| A peer shows as preview-only after first connect | Transport is up, but sync/history are intentionally paused until review is complete. | Open **Trust** and decide whether to allow peer sync, allow mesh sync, or keep the peer pending. |
518521
| Cross-mesh warning during invite review | The remote peer advertises a different mesh identity than the current workspace. | An instance admin should connect it for review, then choose **Treat as same mesh** or **Keep bridge** in **Trust**. |
519522
| You are behind a router and peers are remote | LAN `ws://` endpoints are not directly reachable from the internet. | Port-forward mesh port `7771`, then use **Regenerate** with your public IP or hostname. |
523+
| You need to prove an invite uses WSS | The Connect page **Transport security** panel shows the mesh listener, certificate mode, outbound verification mode, and secure/plain advertised endpoint counts. | Use a full `wss://...` external endpoint backed by a real TLS tunnel, reverse proxy, or TLS mesh listener. |
520524
| "API key required" or auth error popup on Connect | Usually browser session expiry or auth mismatch. | Reload, sign in again. For scripts and CLI, include `X-API-Key`. |
521525
| Peer imports invite but cannot connect | Endpoint not reachable because of NAT, firewall, or offline peer. | Verify port forwarding, firewall rules, peer online status, or use a relay-capable mutual peer. |
522526

canopy/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
License: Apache 2.0
99
"""
1010

11-
__version__ = "0.6.27"
11+
__version__ = "0.6.32"
1212
__protocol_version__ = 1
1313
__author__ = "Canopy Contributors"
1414
__license__ = "Apache-2.0"

0 commit comments

Comments
 (0)