Skip to content

fix(chat): restore sender messages and agent SSE - #355

Merged
sh1pt-actions-fleet[bot] merged 2 commits into
masterfrom
codex/fix-chat-messages-and-agent
Oct 31, 2026
Merged

sh1pt-actions-fleet[bot] merged 2 commits into
masterfrom
codex/fix-chat-messages-and-agent

Conversation

@sh1pt-actions-fleet

Copy link
Copy Markdown
Contributor

What changed

  • Encrypt the sender's copy with the private/public keypair held by that device, refresh restored keys before send/decrypt, and verify the sender copy decrypts before allowing a send.
  • Return that ciphertext in the send acknowledgement and render the acknowledged message immediately; preserve it across concurrent history loads and skip the incomplete self-broadcast reload.
  • Refresh the PWA cache so stale chat code is replaced.
  • Move the legacy qryptchat-agent command from the retired WebSocket endpoint to authenticated REST + SSE, while keeping existing identities and supporting secure qc-vault agent joins.
  • Fix /mark-read: authorize conversation membership and pass actual message ID arrays to PostgREST in bounded batches.
  • Release version metadata for qryptchat-web 0.21.1 and @profullstack/qryptchat 0.14.2.

Validation

  • bun run build:qc passed; package dry-run includes the built CLI and updated version.
  • Node syntax checks and git diff --check passed.
  • CI will run the repository's required checks before merge.

@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

18 finding(s)

MEDIUM: 14 | LOW: 4

Severity Rule Location
MEDIUM js-unescaped-html-sink src/app/blog/[slug]/page.jsx:38
MEDIUM js-unescaped-html-sink src/app/blog/[slug]/page.jsx:66
MEDIUM js-unescaped-html-sink src/app/faq/page.jsx:57
MEDIUM js-unescaped-html-sink src/app/layout.jsx:142
MEDIUM js-unescaped-html-sink src/app/layout.jsx:146
MEDIUM js-unescaped-html-sink src/app/page.jsx:50
MEDIUM js-open-redirect src/app/phone/page.jsx:70
MEDIUM redos-nested-quantifier src/lib/auth/dns-name.js:88
MEDIUM redos-nested-quantifier src/lib/chat/voice-mode.js:116
MEDIUM redos-nested-quantifier src/lib/chat/voice-mode.js:121
MEDIUM js-unescaped-html-sink src/lib/components/chat/MessageItem.jsx:85
MEDIUM js-unescaped-html-sink src/lib/components/chat/MessageItem.jsx:130
MEDIUM js-unescaped-html-sink src/lib/components/PitFooter.jsx:15
MEDIUM js-open-redirect src/lib/components/settings/CoinpaySettings.jsx:62
LOW secret-generic-credential src/app/api/auth/register-anon/route.test.js:32
LOW secret-jwt tests/debug-sms.js:10
LOW secret-generic-credential tests/private-key-import-export.test.js:252
LOW secret-generic-credential tests/private-key-import-export.test.js:264

Snippets are redacted; ThreatCrush never prints matched credential material.

@sh1pt-actions-fleet
sh1pt-actions-fleet Bot merged commit f60330b into master Oct 31, 2026
11 checks passed
Comment thread bin/qryptchat-agent.js
const supabaseUrl = agent.supabase?.url || process.env.NEXT_PUBLIC_SUPABASE_URL;
const anonKey = agent.supabase?.anonKey || process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
if (!supabaseUrl || !anonKey || !client.session.refresh_token) throw qcError;
const response = await fetch(`${supabaseUrl.replace(/\/+$/, '')}/auth/v1/token?grant_type=refresh_token`, {
Comment thread bin/qryptchat-agent.js
if (!supabaseUrl || !anonKey || !client.session.refresh_token) throw qcError;
const response = await fetch(`${supabaseUrl.replace(/\/+$/, '')}/auth/v1/token?grant_type=refresh_token`, {
method: 'POST',
headers: { apikey: anonKey, 'Content-Type': 'application/json' },
Comment thread bin/qryptchat-agent.js
const response = await fetch(`${supabaseUrl.replace(/\/+$/, '')}/auth/v1/token?grant_type=refresh_token`, {
method: 'POST',
headers: { apikey: anonKey, 'Content-Type': 'application/json' },
body: JSON.stringify({ refresh_token: client.session.refresh_token }),
@sh1pt-actions-fleet
sh1pt-actions-fleet Bot deleted the codex/fix-chat-messages-and-agent branch October 31, 2026 05:11
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.

2 participants