feat(core): comment panel (#12989)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Introduced a full-featured document comment system with sidebar for
viewing, filtering, replying, resolving, and managing comments and
replies.
* Added a rich text comment editor supporting editable and read-only
modes.
  * Enabled comment-based navigation and highlighting within documents.
* Integrated comment functionality into the workspace sidebar (excluding
local workspaces).
* Added internationalization support and new UI strings for comment
features.
* Added new feature flag `enable_comment` for toggling comment
functionality.
  * Enhanced editor focus to support comment-related selections.
  * Added snapshot and store helpers for comment content management.
* Implemented backend GraphQL support for comment and reply operations.
* Added services for comment entity management and comment panel
behavior.
* Extended comment configuration to support optional framework
providers.
* Added preview generation from user selections when creating comments.
  * Enabled automatic sidebar opening on new pending comments.
  * Added comment-related query parameter support for navigation.
  * Included inline comment module exports for integration.
* Improved comment provider implementation with full lifecycle
management and UI integration.
* Added comment highlight state tracking and refined selection handling
in inline comments.

* **Style**
* Added comprehensive styles for the comment editor and sidebar
components.

* **Chores**
  * Updated language completeness percentages for multiple locales.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: L-Sun <zover.v@gmail.com>
This commit is contained in:
Peng Xiao
2025-07-02 23:47:00 +08:00
committed by GitHub
parent a59448ec4b
commit a21f1c943e
30 changed files with 2572 additions and 68 deletions

View File

@@ -1,26 +1,26 @@
{
"ar": 100,
"ar": 99,
"ca": 4,
"da": 4,
"de": 100,
"el-GR": 100,
"de": 99,
"el-GR": 99,
"en": 100,
"es-AR": 100,
"es-AR": 99,
"es-CL": 100,
"es": 100,
"fa": 100,
"fr": 100,
"es": 99,
"fa": 99,
"fr": 99,
"hi": 2,
"it-IT": 100,
"it-IT": 99,
"it": 1,
"ja": 100,
"ja": 99,
"ko": 53,
"pl": 100,
"pt-BR": 100,
"ru": 100,
"sv-SE": 100,
"uk": 100,
"pl": 99,
"pt-BR": 99,
"ru": 99,
"sv-SE": 99,
"uk": 99,
"ur": 2,
"zh-Hans": 100,
"zh-Hant": 100
"zh-Hans": 99,
"zh-Hant": 99
}

View File

@@ -8212,6 +8212,50 @@ export function useAFFiNEI18N(): {
* `Migrate data`
*/
["com.affine.migration-all-docs-notification.button"](): string;
/**
* `Comments`
*/
["com.affine.comment.comments"](): string;
/**
* `No comments yet`
*/
["com.affine.comment.no-comments"](): string;
/**
* `Delete the thread?`
*/
["com.affine.comment.delete.confirm.title"](): string;
/**
* `All comments will also be deleted, and this action cannot be undone.`
*/
["com.affine.comment.delete.confirm.description"](): string;
/**
* `Delete this reply?`
*/
["com.affine.comment.reply.delete.confirm.title"](): string;
/**
* `Delete this reply? This action cannot be undone.`
*/
["com.affine.comment.reply.delete.confirm.description"](): string;
/**
* `Show resolved comments`
*/
["com.affine.comment.filter.show-resolved"](): string;
/**
* `Only my replies and mentions`
*/
["com.affine.comment.filter.only-my-replies"](): string;
/**
* `Only current mode`
*/
["com.affine.comment.filter.only-current-mode"](): string;
/**
* `Reply`
*/
["com.affine.comment.reply"](): string;
/**
* `Copy link`
*/
["com.affine.comment.copy-link"](): string;
/**
* `An internal error occurred.`
*/

View File

@@ -2059,6 +2059,17 @@
"com.affine.migration-all-docs-notification.desc": "We are updating the local data to facilitate the recording and filtering of created by and Last edited by information. Please click the “Migrate Data” button and ensure a stable network connection during the process.",
"com.affine.migration-all-docs-notification.error": "Migration failed: {{errorMessage}}",
"com.affine.migration-all-docs-notification.button": "Migrate data",
"com.affine.comment.comments": "Comments",
"com.affine.comment.no-comments": "No comments yet",
"com.affine.comment.delete.confirm.title": "Delete the thread?",
"com.affine.comment.delete.confirm.description": "All comments will also be deleted, and this action cannot be undone.",
"com.affine.comment.reply.delete.confirm.title": "Delete this reply?",
"com.affine.comment.reply.delete.confirm.description": "Delete this reply? This action cannot be undone.",
"com.affine.comment.filter.show-resolved": "Show resolved comments",
"com.affine.comment.filter.only-my-replies": "Only my replies and mentions",
"com.affine.comment.filter.only-current-mode": "Only current mode",
"com.affine.comment.reply": "Reply",
"com.affine.comment.copy-link": "Copy link",
"error.INTERNAL_SERVER_ERROR": "An internal error occurred.",
"error.NETWORK_ERROR": "Network error.",
"error.TOO_MANY_REQUEST": "Too many requests.",