Skip to content

[Node] add support feature#3506

Draft
Herklos wants to merge 3 commits into
devfrom
feature/add-support-feature
Draft

[Node] add support feature#3506
Herklos wants to merge 3 commits into
devfrom
feature/add-support-feature

Conversation

@Herklos

@Herklos Herklos commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

No description provided.

Herklos and others added 3 commits June 17, 2026 21:43
Add an end-to-end-encrypted support chat to the node web interface:
- Settings "Support" card (replacing the unused Logging card) + a /support
  ticket page: message history, compose, file attach, and one-click
  "Share debug state" (reuses the /app/debug export).
- src/lib/octochat.ts wraps @drakkar.software/octochat-sdk: persistent
  requester identity, one-ticket-per-space (derived via
  getRequesterTicketForSpace), 2-phase create/claim, and E2EE message/
  attachment read+write over the per-node invite-log stream (writes require
  the encryptor — never fall back to plaintext).
- node API GET /config/octochat serves OCTOCHAT_* settings (packages/node).

Remove the legacy Starfish log-upload: core error_sharing push, the node
/logs/share route, and the Flask web_interface share-logs UI/route/model
(local log export and Sentry are kept).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…icket

Re-adds the Share logs button on the OctoBots selection toolbar. Instead of
the removed Starfish log upload, it fetches the selected OctoBots' logs from
the node (new POST /api/v1/logs/export returning a zip) and attaches them to
the existing OctoChat support ticket via the SDK.

The button never creates a ticket (creation stays in Settings): with no open
ticket it shows a modal pointing to Settings; with a pending ticket it explains
the DRAKKAR-SOFTWARE team hasn't accepted it yet (matching the Settings card).

Adds the backend route with auth + functional tests and a testable frontend
support-share lib with vitest coverage of all branches.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Derive the OctoChat support identity deterministically from the OctoBot wallet
(deriveRootIdentityFromEvmSignature) instead of a random per-browser device key,
so the same account resolves to the same OctoChat identity — and the same
support ticket — on every device.

New node endpoint GET /config/octochat-identity returns a deterministic (RFC
6979) EIP-191 signature over a fixed challenge, signed with the caller's wallet;
the browser (new lib/octochat-identity.ts) pipes it through the SDK. The derived
identity is cached encrypted-at-rest keyed by wallet address (re-derives on a
wallet switch); the signature is consumed once and never persisted.

Adds backend (config route auth + deterministic-signature) and frontend
(derivation, caching, re-derive-on-wallet-change) tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Herklos Herklos self-assigned this Jun 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant