Skip to content

Direct Messages parity gaps #84

Closed
2 of 2 issues completed
Closed

Description

@Adron

Where this stands

:feature:directmessages is in good shape — inbox with cursor paging, send, thread by username,
/updates polling, read, trash, restore, recipients and image upload, with an unread badge. It is
one of the more complete modules in the app.

Gaps

  • GET /api/dm/conversations is unused — "One row per conversation (grouped by pairKey),
    newest activity first."
    The inbox is currently built from GET /api/dm, which is a message
    list, not a conversation list. On the web the user sees conversations; on Android they see
    messages.
  • /help/direct-messages documents who you can message — recipients are constrained (the
    test account can DM only a mutual follow). Android surfaces the recipient list but not the
    rule, so an empty picker looks like a bug.

Filed from the parity review of feature/parity-wip @ 14d7795 against interlinedlist.com (OpenAPI /api/openapi.json, 233 paths) and the public help centre.

Activity

  1. added
    epicA feature area tracked as a parent issue
    parityClosing a gap against interlinedlist.com
    P2Completeness / settings surface
    area:dmDirect messages
    on Sep 15, 2026
  2. Adron commented on Sep 16, 2026

    @Adron
    MemberAuthor

    Both sub-issues are done, so closing this epic.

    Review continues on those two PRs. Two things surfaced that are worth recording against the epic rather than losing:

    GET /api/dm/conversations is undocumented. It is a bare object in the OpenAPI spec and absent from /help/api/direct-messages entirely, and the test account has no conversations, so the live response was { "items": [], "nextCursor": null } — the envelope is confirmed but the row shape is still inferred. The DTO accepts the participant under otherUser/user/author and the newest message either nested or flattened. One authenticated curl from an account that actually has conversations would let it be trimmed to the real shape.

    A latent bug was fixed along the way: POST /api/dm returns { "message": { … } }, which the app never unwrapped, so a sent message kept its optimistic local-… id and any later read/trash on it would have 404'd.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Completeness / settings surfacearea:dmDirect messagesepicA feature area tracked as a parent issueparityClosing a gap against interlinedlist.com

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions