Skip to content

Feat/chat details panel - #245

Merged
tranh0anghuan merged 10 commits into
testfrom
feat/chat-details-panel
Oct 2, 2026
Merged

tranh0anghuan merged 10 commits into
testfrom
feat/chat-details-panel

Conversation

@tranh0anghuan

Copy link
Copy Markdown
Contributor

No description provided.

Drumee Dev and others added 10 commits October 1, 2026 20:36
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The media table stores no duration, so the Chat details Videos page had
none. For kind=video, rows without a duration read
<hub home>/__storage__/<nid>/info.json (orig.format.duration, ffprobe),
rounded to seconds; null when absent/unreadable. The nid must be a plain id,
so the read never leaves __storage__.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Chat details for a DIRECT conversation:
- chat.p2p_details {peer_id}: media counts from both participants'
  p2p_channel (p2p_media_stats in the viewer's DB, like p2p_list_messages)
  and the two participants with presence (yp drumate_presence).
- chat.p2p_media_list {peer_id, kind, page}: rows carry their own hub_id;
  a video's missing duration is read from that hub's info.json.
The info.json reader moves to service/lib/media-duration.js, shared with
channel.media_list.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ation partner

Any authenticated caller could walk peer ids and read each user's email,
online flag and last-seen through p2p_details. The peer now counts only when
the viewer has them as a contact or has a conversation with them (p2p_time
holds one row per partner, either side wrote); otherwise the panel gets the
viewer alone and no media. drumate_presence keeps its arity (shared stage yp).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e_state)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…t, worker p2p mode)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
this.db is the DB of the hub the request names. A caller with write on
someone else's shared folder could name that hub and read or export the
owner's DMs with a contact. _p2pRelated (p2p_details, p2p_media_list,
p2p_export_scope, p2p_export) now refuses unless the hub is the caller's.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… on messages/post)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… in SQL

- channel.acknowledge with topic_id (the team chat reads on interaction):
  channel_topic_mark_read only, never the hub read_channel cursor that would
  mark General and other topics read; a message outside the topic is refused.
- messages topic_id=general → channel_general_messages (full SQL pages).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

@tranh0anghuan
tranh0anghuan merged commit cbc8100 into test Oct 2, 2026
9 checks passed
@sonarqubecloud

sonarqubecloud Bot commented Oct 2, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
0.0% Coverage on New Code (required ≥ 80%)
C Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@github-actions

github-actions Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

Claude encountered an error after 0s —— View job


I'll analyze this and get back to you.

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