Implements Notion-style sync blocks: a Tiptap node whose content is shared across N pages. Editing via the Hocuspocus overlay propagates to all instances via Yjs collab + SSE broadcast (EventEmitter2 bus). Server: DB migration, NestJS module (CRUD + BFS cycle detection + broadcast), Hocuspocus persistence extension extended for sync-block-* docs, 3 new RBAC permissions (sync_blocks:create/edit/delete), seeded to Admin/Editor/Member. Client: SyncBlockExtension (Tiptap node), SyncBlockNodeView (NodeView + Mantine Modal overlay + SSE hook), /sync-block slash command, service client. Tests: 32 server Jest + 18 client Vitest, all green. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
38 lines
870 B
JSON
38 lines
870 B
JSON
{
|
|
"manifest_version": 3,
|
|
"name": "DocAdenice Web Clipper",
|
|
"version": "1.0.0",
|
|
"description": "Clip web pages into your DocAdenice workspace",
|
|
"permissions": [
|
|
"activeTab",
|
|
"storage",
|
|
"scripting",
|
|
"contextMenus"
|
|
],
|
|
"host_permissions": ["<all_urls>"],
|
|
"background": {
|
|
"service_worker": "src/background/background.ts",
|
|
"type": "module"
|
|
},
|
|
"action": {
|
|
"default_popup": "src/popup/popup.html",
|
|
"default_title": "DocAdenice Web Clipper",
|
|
"default_icon": {
|
|
"16": "icons/icon16.png",
|
|
"48": "icons/icon48.png",
|
|
"128": "icons/icon128.png"
|
|
}
|
|
},
|
|
"content_scripts": [
|
|
{
|
|
"matches": ["<all_urls>"],
|
|
"js": ["src/content/content.ts"],
|
|
"run_at": "document_idle"
|
|
}
|
|
],
|
|
"icons": {
|
|
"16": "icons/icon16.png",
|
|
"48": "icons/icon48.png",
|
|
"128": "icons/icon128.png"
|
|
}
|
|
}
|