Private Issues: “Privatize” Comments #594

Open
opened 2026-05-26 12:16:33 +00:00 by nphilipp · 2 comments
Member

Story

As someone posting sensitive data in a private issue,
I want that my comments stay private and don’t get leaked,
so that I can confidently share information in these tickets.

Acceptance Criteria

  • Internal API is adapted to accommodate both.
  • Data structures are adapted for private comments.
  • A migration exists which modifies the DB schema appropriately.
  • Functions and methods for creating public comments are adapted so they can create either.

Tasks & Spikes

  • Verify public/private ID pairs (#634)
  • Fundamental changes for public/private comments (#635)
  • Related types
  • Deal with leaky comment IDs
    • [Spike] Figure out how to deal with leaky comment IDs in the web API (#652)
    • Enable comment and private_comment tables to share unique IDs between them
  • Rebase shared branches on top of this work

Background

As discussed with Gusted from Forgejo, private comments should live in their own DB table, too, so they need the same treatment as issues, i.e.: issue & private_issue tables ⇒ comment & private_comment.

The existing migration script for issues should be extended, so it covers both issues and comments.

See #168 about issues for reference.

# Story As someone posting sensitive data in a private issue, I want that my comments stay private and don’t get leaked, so that I can confidently share information in these tickets. # Acceptance Criteria - [ ] Internal API is adapted to accommodate both. - [ ] Data structures are adapted for private comments. - [ ] A migration exists which modifies the DB schema appropriately. - [ ] Functions and methods for creating public comments are adapted so they can create either. # Tasks & Spikes - [x] Verify public/private ID pairs (#634) - [x] Fundamental changes for public/private comments (#635) - [x] Related types - [x] Action, etc. (#636) - [x] Attachment (#637) - [x] ContentHistory (#638) - [x] Reaction (#639) - [ ] Deal with leaky comment IDs - [x] \[Spike\] Figure out how to deal with leaky comment IDs in the web API (#652) - [ ] Enable `comment` and `private_comment` tables to share unique IDs between them - [ ] Rebase shared branches on top of this work # Background As discussed with [Gusted from Forgejo](https://codeberg.org/forgejo/design/issues/2#issuecomment-13899974), private comments should live in their own DB table, too, so they need the same treatment as issues, i.e.: `issue` & `private_issue` tables ⇒ `comment` & `private_comment`. The existing migration script for issues should be extended, so it covers both issues and comments. See #168 about issues for reference.
nphilipp added this to the Backlog project 2026-05-26 12:16:34 +00:00
nphilipp removed their assignment 2026-05-26 12:26:06 +00:00
nphilipp changed title from Private Issues: Privatize Comments to Private Issues: “Privatize” Comments 2026-06-01 08:14:01 +00:00
nphilipp modified the project from Backlog to Sprint 22 2026-06-01 10:22:46 +00:00
Author
Member

Bumping SPs to reflect increased complexity.

Bumping SPs to reflect increased complexity.
Author
Member

Hmm, having banged my head against this for a while, this feels more like a (sub-) epic which can be broken down into smaller tickets.

Also, here’s some progress (against the "Foundational Changes") commit/branch: https://codeberg.org/nilsph/forgejo/src/branch/private-issues-backend-foundational

Hmm, having banged my head against this for a while, this feels more like a (sub-) epic which can be broken down into smaller tickets. Also, here’s some progress (against the "Foundational Changes") commit/branch: https://codeberg.org/nilsph/forgejo/src/branch/private-issues-backend-foundational
nphilipp modified the project from Sprint 24 to Backlog 2026-06-30 11:55:13 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
forge/forge#594
No description provided.