diff --git a/apps/web/src/components/GlobalSearch.tsx b/apps/web/src/components/GlobalSearch.tsx index 2ca10d6c5..15180e0c0 100644 --- a/apps/web/src/components/GlobalSearch.tsx +++ b/apps/web/src/components/GlobalSearch.tsx @@ -1,35 +1,90 @@ /** * Global search component. * - * Provides a Cmd+K searchable dialog for finding documents. + * The unified Cmd+K palette: fuzzy document search, workspace commands + * from the CommandRegistry (with their keyboard hints), and quick task + * capture — one keyboard surface for "find or do anything" + * (exploration 0161, phase 3). */ import type { SearchResult } from '@xnetjs/sdk' import { useNavigate } from '@tanstack/react-router' +import { TaskSchema } from '@xnetjs/data' +import { getCommandRegistry, type WorkspaceCommand } from '@xnetjs/plugins' +import { useMutate } from '@xnetjs/react' +import { CheckSquare2, CornerDownLeft, FileText, Terminal } from 'lucide-react' import { startTransition, useDeferredValue, useEffect, useMemo, useRef, useState } from 'react' import { usePageSearchSurface } from '../hooks/usePageSearchSurface' +type PaletteEntry = + | { kind: 'command'; command: WorkspaceCommand } + | { kind: 'page'; result: SearchResult } + | { kind: 'create-task'; title: string } + +function generateTaskId(): string { + if (typeof globalThis.crypto?.randomUUID === 'function') { + return `task_${globalThis.crypto.randomUUID()}` + } + + return `task_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}` +} + export function GlobalSearch() { const [isOpen, setIsOpen] = useState(false) const [query, setQuery] = useState('') const [selectedIndex, setSelectedIndex] = useState(0) const inputRef = useRef(null) const navigate = useNavigate() + const { create } = useMutate() const deferredQuery = useDeferredValue(query) const { indexedPages, loading, search, totalPages } = usePageSearchSurface({ enabled: isOpen }) + const results = useMemo(() => { if (!deferredQuery.trim()) return [] return search(deferredQuery, 10) }, [deferredQuery, search]) + const commandMatches = useMemo(() => { + if (!isOpen) return [] + const registry = getCommandRegistry() + const needle = deferredQuery.trim().toLowerCase() + return registry + .getAvailableCommands() + .filter((command) => !needle || command.title.toLowerCase().includes(needle)) + .slice(0, needle ? 5 : 4) + }, [isOpen, deferredQuery]) + + const entries = useMemo(() => { + const list: PaletteEntry[] = commandMatches.map((command) => ({ kind: 'command', command })) + for (const result of results) list.push({ kind: 'page', result }) + if (deferredQuery.trim()) { + list.push({ kind: 'create-task', title: deferredQuery.trim() }) + } + return list + }, [commandMatches, results, deferredQuery]) + + // Cmd+K is a workspace command so it appears in the shortcut help and + // can be re-bound centrally; allowInInput keeps it reachable mid-edit. useEffect(() => { - const handler = (event: KeyboardEvent) => { - if ((event.metaKey || event.ctrlKey) && event.key === 'k') { - event.preventDefault() + const registry = getCommandRegistry() + const disposable = registry.register({ + id: 'search.open', + title: 'Search & commands', + key: 'Mod-K', + allowInInput: true, + run: () => { setIsOpen(true) setTimeout(() => inputRef.current?.focus(), 10) } + }) + + return () => disposable.dispose() + }, []) + + useEffect(() => { + if (!isOpen) return - if (event.key === 'Escape' && isOpen) { + const handler = (event: KeyboardEvent) => { + if (event.key === 'Escape') { event.preventDefault() setIsOpen(false) setQuery('') @@ -42,33 +97,52 @@ export function GlobalSearch() { useEffect(() => { setSelectedIndex(0) - }, [results]) + }, [entries.length]) - const handleSelect = (result: SearchResult) => { + const close = () => { setIsOpen(false) setQuery('') - navigate({ to: '/doc/$docId', params: { docId: result.id } }) + } + + const handleSelect = (entry: PaletteEntry) => { + if (entry.kind === 'command') { + close() + void getCommandRegistry().runCommand(entry.command.id) + return + } + + if (entry.kind === 'page') { + close() + navigate({ to: '/doc/$docId', params: { docId: entry.result.id } }) + return + } + + close() + void create( + TaskSchema, + { title: entry.title, completed: false, status: 'todo', source: 'api' }, + generateTaskId() + ).then(() => navigate({ to: '/tasks' })) } const handleKeyDown = (event: React.KeyboardEvent) => { if (event.key === 'ArrowDown') { event.preventDefault() - setSelectedIndex((index) => Math.min(index + 1, results.length - 1)) + setSelectedIndex((index) => Math.min(index + 1, entries.length - 1)) } else if (event.key === 'ArrowUp') { event.preventDefault() setSelectedIndex((index) => Math.max(index - 1, 0)) - } else if (event.key === 'Enter' && results[selectedIndex]) { + } else if (event.key === 'Enter' && entries[selectedIndex]) { event.preventDefault() - handleSelect(results[selectedIndex]) + handleSelect(entries[selectedIndex]) } } - const handleCreate = () => { + const handleCreatePage = () => { if (!query.trim()) return const newId = `default/${query.toLowerCase().replace(/\s+/g, '-')}` - setIsOpen(false) - setQuery('') + close() navigate({ to: '/doc/$docId', params: { docId: newId } }) } @@ -90,10 +164,74 @@ export function GlobalSearch() { ) } + const registry = getCommandRegistry() + + const renderEntry = (entry: PaletteEntry, index: number) => { + const isSelected = index === selectedIndex + const baseClass = `flex items-center gap-3 px-5 py-2.5 cursor-pointer transition-colors ${ + isSelected ? 'bg-secondary' : 'hover:bg-secondary' + }` + + if (entry.kind === 'command') { + return ( +
  • handleSelect(entry)} + onMouseEnter={() => setSelectedIndex(index)} + > + + {entry.command.title} + {entry.command.key && ( + + {registry.formatForDisplay(entry.command.key)} + + )} +
  • + ) + } + + if (entry.kind === 'page') { + return ( +
  • handleSelect(entry)} + onMouseEnter={() => setSelectedIndex(index)} + > + + + + {entry.result.title} + + + {entry.result.snippet || entry.result.title} + + +
  • + ) + } + + return ( +
  • handleSelect(entry)} + onMouseEnter={() => setSelectedIndex(index)} + > + + + Create task “{entry.title}” + + +
  • + ) + } + return (
    setIsOpen(false)} + onClick={close} >
    { const value = event.target.value @@ -121,35 +259,20 @@ export function GlobalSearch() {
    )} - {results.length > 0 && ( + {entries.length > 0 && (
      - {results.map((result, index) => ( -
    • handleSelect(result)} - onMouseEnter={() => setSelectedIndex(index)} - > - {result.title} -

      - {result.snippet || result.title} -

      -
    • - ))} + {entries.map((entry, index) => renderEntry(entry, index))}
    )} {query && !loading && results.length === 0 && ( -
    -

    No results found

    +
    )} diff --git a/apps/web/src/components/Sidebar.tsx b/apps/web/src/components/Sidebar.tsx index fc458d25f..08a08f3b5 100644 --- a/apps/web/src/components/Sidebar.tsx +++ b/apps/web/src/components/Sidebar.tsx @@ -11,6 +11,7 @@ import { Layout, Plus, Trash2, + CheckSquare2, ChevronDown, ChevronRight, Settings, @@ -372,6 +373,17 @@ export function Sidebar() { {/* Settings */}
    + + + Tasks + void + onClose: () => void +} + +export function TaskMiniPalette({ + title, + kind, + options, + onSelect, + onClose +}: TaskMiniPaletteProps): JSX.Element { + const [query, setQuery] = useState('') + const [activeIndex, setActiveIndex] = useState(0) + const inputRef = useRef(null) + + const filtered = useMemo(() => { + const needle = query.trim().toLowerCase() + if (!needle) return options + return options.filter((option) => option.label.toLowerCase().includes(needle)) + }, [options, query]) + + return ( +
    +
    event.stopPropagation()} + > + { + setQuery(event.target.value) + setActiveIndex(0) + }} + onKeyDown={(event) => { + if (event.key === 'ArrowDown') { + event.preventDefault() + setActiveIndex((index) => Math.min(index + 1, filtered.length - 1)) + } else if (event.key === 'ArrowUp') { + event.preventDefault() + setActiveIndex((index) => Math.max(index - 1, 0)) + } else if (event.key === 'Enter') { + event.preventDefault() + const option = filtered[activeIndex] + if (option) { + onSelect(option.id) + onClose() + } + } else if (event.key === 'Escape') { + event.preventDefault() + event.stopPropagation() + onClose() + } + }} + className="w-full border-b border-border bg-transparent px-3 py-2 text-sm text-foreground outline-none placeholder:text-muted-foreground" + /> +
      + {filtered.map((option, index) => ( +
    • { + onSelect(option.id) + onClose() + }} + onMouseEnter={() => setActiveIndex(index)} + > + {kind === 'status' ? ( + + ) : ( + + )} + {option.label} +
    • + ))} + {filtered.length === 0 && ( +
    • No matches
    • + )} +
    +
    +
    + ) +} diff --git a/apps/web/src/components/TasksView.tsx b/apps/web/src/components/TasksView.tsx new file mode 100644 index 000000000..7aac01914 --- /dev/null +++ b/apps/web/src/components/TasksView.tsx @@ -0,0 +1,393 @@ +/** + * TasksView - the Linear-style Tasks surface. + * + * Tabs scope the global Task collection (All / My Tasks / Triage); the + * list and board modes are projections of the same canonical Task nodes, + * so edits here are instantly visible in pages, canvases, and database + * cells (exploration 0161). Opening a task navigates to its host surface. + */ +import { useNavigate } from '@tanstack/react-router' +import { + TASK_STATUS_CATEGORIES, + TaskSchema, + isCompletedTaskStatus, + taskBranchName, + type TaskStatusId +} from '@xnetjs/data' +import { getCommandRegistry } from '@xnetjs/plugins' +import { useIdentity, useMutate, useTasks } from '@xnetjs/react' +import { getTaskStatusMeta, type TaskDisplayData } from '@xnetjs/ui' +import { TaskBoard, TaskListGrouped, type TaskBoardStatusChange } from '@xnetjs/views' +import { Inbox, KanbanSquare, List, Plus, User } from 'lucide-react' +import { useEffect, useMemo, useRef, useState, type JSX } from 'react' +import { TaskMiniPalette } from './TaskMiniPalette' + +const WORKFLOW_ORDER = Object.keys(TASK_STATUS_CATEGORIES) as TaskStatusId[] + +const STATUS_OPTIONS = WORKFLOW_ORDER.map((status) => ({ + id: status, + label: getTaskStatusMeta(status).name +})) + +const PRIORITY_OPTIONS = [ + { id: 'low', label: 'Low' }, + { id: 'medium', label: 'Medium' }, + { id: 'high', label: 'High' }, + { id: 'urgent', label: 'Urgent' } +] + +type TasksTab = 'all' | 'mine' | 'triage' +type TasksMode = 'list' | 'board' + +function generateTaskId(): string { + if (typeof globalThis.crypto?.randomUUID === 'function') { + return `task_${globalThis.crypto.randomUUID()}` + } + + return `task_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}` +} + +export function TasksView(): JSX.Element { + const navigate = useNavigate() + const { identity } = useIdentity() + const did = identity?.did ?? null + const { create, update } = useMutate() + const [tab, setTab] = useState('all') + const [mode, setMode] = useState('list') + const [draft, setDraft] = useState('') + const [focusedTaskId, setFocusedTaskId] = useState(null) + const [miniPalette, setMiniPalette] = useState<'status' | 'priority' | null>(null) + const quickAddRef = useRef(null) + + const { data: tasks, loading } = useTasks({ includeCompleted: true }) + + const visibleTasks = useMemo(() => { + return tasks.filter((task) => { + if (tab === 'mine') { + if (!did) return false + const assignees = Array.isArray(task.assignees) ? task.assignees.map(String) : [] + if (task.assignee !== did && !assignees.includes(did)) return false + } + if (tab === 'triage') { + return task.status === 'triage' + } + return true + }) + }, [tasks, tab, did]) + + const displayTasks = useMemo>(() => { + return visibleTasks.map((task) => ({ + id: task.id, + title: typeof task.title === 'string' ? task.title : '', + completed: Boolean(task.completed), + status: typeof task.status === 'string' ? task.status : undefined, + priority: typeof task.priority === 'string' ? task.priority : undefined, + dueDate: typeof task.dueDate === 'number' ? task.dueDate : null, + assignees: Array.isArray(task.assignees) ? task.assignees.map(String) : [], + referenceCount: Array.isArray(task.references) ? task.references.length : 0, + shortId: typeof task.shortId === 'string' ? task.shortId : null, + sortKey: typeof task.sortKey === 'string' ? task.sortKey : null + })) + }, [visibleTasks]) + + // Ordered ids matching the grouped-list render order (workflow groups, + // then input order) so focus movement walks rows the way they look. + const orderedTaskIds = useMemo(() => { + const byStatus = new Map(WORKFLOW_ORDER.map((s) => [s, []])) + for (const task of displayTasks) { + const status = (task.status ?? 'todo') as TaskStatusId + ;(byStatus.get(status) ?? byStatus.get('todo'))?.push(task.id) + } + return WORKFLOW_ORDER.flatMap((status) => byStatus.get(status) ?? []) + }, [displayTasks]) + + const stateRef = useRef({ focusedTaskId, orderedTaskIds, miniPalette }) + stateRef.current = { focusedTaskId, orderedTaskIds, miniPalette } + const tasksRef = useRef(tasks) + tasksRef.current = tasks + + // Surface scope: focus movement + quick capture, active while mounted. + useEffect(() => { + const registry = getCommandRegistry() + const scope = registry.activateScope('surface:tasks') + + const moveFocus = (delta: 1 | -1) => { + const { focusedTaskId: current, orderedTaskIds: ids } = stateRef.current + if (ids.length === 0) return + const index = current ? ids.indexOf(current) : -1 + const next = index === -1 ? (delta === 1 ? 0 : ids.length - 1) : index + delta + setFocusedTaskId(ids[Math.max(0, Math.min(next, ids.length - 1))] ?? null) + } + + const disposables = [ + registry.register({ + id: 'tasks.focusNext', + title: 'Focus next task', + scope: 'surface:tasks', + key: 'j', + run: () => moveFocus(1) + }), + registry.register({ + id: 'tasks.focusNext.arrow', + title: 'Focus next task', + scope: 'surface:tasks', + key: 'down', + run: () => moveFocus(1) + }), + registry.register({ + id: 'tasks.focusPrev', + title: 'Focus previous task', + scope: 'surface:tasks', + key: 'k', + run: () => moveFocus(-1) + }), + registry.register({ + id: 'tasks.focusPrev.arrow', + title: 'Focus previous task', + scope: 'surface:tasks', + key: 'up', + run: () => moveFocus(-1) + }), + registry.register({ + id: 'tasks.quickCreate', + title: 'New task', + scope: 'surface:tasks', + key: 'c', + run: () => quickAddRef.current?.focus() + }) + ] + + return () => { + for (const disposable of disposables) disposable.dispose() + scope.dispose() + } + }, []) + + // Focused-task scope: single-key verbs acting on the highlighted row. + useEffect(() => { + if (!focusedTaskId) return + + const registry = getCommandRegistry() + const scope = registry.activateScope('task-focused') + + const withFocused = (action: (taskId: string) => void) => () => { + const { focusedTaskId: current, miniPalette: palette } = stateRef.current + if (current && !palette) action(current) + } + + const disposables = [ + registry.register({ + id: 'task.toggleCompleted', + title: 'Toggle task completion', + scope: 'task-focused', + key: 'x', + run: withFocused((taskId) => { + const task = tasksRef.current.find((t) => t.id === taskId) + handleToggleCompleted(taskId, !task?.completed) + }) + }), + registry.register({ + id: 'task.setStatus', + title: 'Change task status…', + scope: 'task-focused', + key: 's', + run: withFocused(() => setMiniPalette('status')) + }), + registry.register({ + id: 'task.setPriority', + title: 'Change task priority…', + scope: 'task-focused', + key: 'p', + run: withFocused(() => setMiniPalette('priority')) + }), + registry.register({ + id: 'task.open', + title: 'Open task', + scope: 'task-focused', + key: 'enter', + run: withFocused((taskId) => handleOpenTask(taskId)) + }), + registry.register({ + id: 'task.copyBranchName', + title: 'Copy git branch name', + scope: 'task-focused', + key: 'Mod-Shift-.', + run: withFocused((taskId) => { + const task = tasksRef.current.find((t) => t.id === taskId) + if (!task) return + const shortId = typeof task.shortId === 'string' && task.shortId ? task.shortId : taskId + const branch = taskBranchName(shortId, typeof task.title === 'string' ? task.title : '') + void navigator.clipboard?.writeText(branch) + }) + }) + ] + + return () => { + for (const disposable of disposables) disposable.dispose() + scope.dispose() + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [Boolean(focusedTaskId)]) + + const handleToggleCompleted = (taskId: string, completed: boolean) => { + void update(TaskSchema, taskId, { + completed, + status: completed ? 'done' : 'todo' + }) + } + + const handleStatusChange = (change: TaskBoardStatusChange) => { + void update(TaskSchema, change.taskId, { + status: change.status, + completed: change.completed, + sortKey: change.sortKey + }) + } + + const handleOpenTask = (taskId: string) => { + const task = tasks.find((candidate) => candidate.id === taskId) + if (!task) return + + if (typeof task.page === 'string' && task.page) { + void navigate({ to: '/doc/$docId', params: { docId: task.page } }) + return + } + + if (typeof task.canvas === 'string' && task.canvas) { + void navigate({ to: '/canvas/$canvasId', params: { canvasId: task.canvas } }) + } + } + + const handleCreate = async () => { + const title = draft.trim() + if (!title) return + + setDraft('') + const status: TaskStatusId = tab === 'triage' ? 'triage' : 'todo' + await create( + TaskSchema, + { + title, + completed: isCompletedTaskStatus(status), + status, + source: 'api', + ...(tab === 'mine' && did ? { assignee: did, assignees: [did] } : {}) + }, + generateTaskId() + ) + } + + const tabs: Array<{ id: TasksTab; label: string; icon: JSX.Element }> = [ + { id: 'all', label: 'All Tasks', icon: }, + { id: 'mine', label: 'My Tasks', icon: }, + { id: 'triage', label: 'Triage', icon: } + ] + + return ( +
    +
    +
    + {tabs.map(({ id, label, icon }) => ( + + ))} +
    + +
    + + +
    +
    + +
    + + setDraft(event.target.value)} + onKeyDown={(event) => { + if (event.key === 'Enter') { + event.preventDefault() + void handleCreate() + } + }} + placeholder={tab === 'triage' ? 'Add to triage…' : 'Add a task…'} + className="flex-1 border-none bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground" + /> +
    + +
    + {loading ? ( +
    + Loading tasks… +
    + ) : mode === 'board' ? ( + + ) : ( + + )} +
    + + {miniPalette && focusedTaskId && ( + { + if (miniPalette === 'status') { + const status = optionId as TaskStatusId + void update(TaskSchema, focusedTaskId, { + status, + completed: isCompletedTaskStatus(status) + }) + } else { + void update(TaskSchema, focusedTaskId, { + priority: optionId as 'low' | 'medium' | 'high' | 'urgent' + }) + } + }} + onClose={() => setMiniPalette(null)} + /> + )} +
    + ) +} diff --git a/apps/web/src/components/WorkspaceCommands.tsx b/apps/web/src/components/WorkspaceCommands.tsx new file mode 100644 index 000000000..f671bdae4 --- /dev/null +++ b/apps/web/src/components/WorkspaceCommands.tsx @@ -0,0 +1,97 @@ +/** + * WorkspaceCommands - installs the global command handler and registers + * workspace-wide keyboard commands (g-chord navigation, ? help overlay). + * + * Surfaces register their own scoped commands; this component owns only + * the global layer and the shortcut-help overlay (exploration 0161, + * phase 3). + */ +import { useNavigate } from '@tanstack/react-router' +import { getCommandRegistry, installCommandHandler } from '@xnetjs/plugins' +import { useEffect, useState, type JSX } from 'react' + +export function WorkspaceCommands(): JSX.Element | null { + const navigate = useNavigate() + const [helpOpen, setHelpOpen] = useState(false) + + useEffect(() => { + const registry = getCommandRegistry() + const uninstall = installCommandHandler() + + const disposables = [ + registry.register({ + id: 'nav.home', + title: 'Go to home', + key: 'g h', + run: () => void navigate({ to: '/' }) + }), + registry.register({ + id: 'nav.tasks', + title: 'Go to tasks', + key: 'g t', + run: () => void navigate({ to: '/tasks' }) + }), + registry.register({ + id: 'nav.data', + title: 'Go to data workspace', + key: 'g d', + run: () => void navigate({ to: '/data' }) + }), + registry.register({ + id: 'nav.settings', + title: 'Go to settings', + key: 'g s', + run: () => void navigate({ to: '/settings' }) + }), + registry.register({ + id: 'help.shortcuts', + title: 'Keyboard shortcuts', + key: '?', + run: () => setHelpOpen((open) => !open) + }) + ] + + return () => { + for (const disposable of disposables) disposable.dispose() + uninstall() + } + }, [navigate]) + + if (!helpOpen) return null + + const registry = getCommandRegistry() + const commands = registry.getAllCommands().filter((command) => command.key) + + return ( +
    setHelpOpen(false)} + > +
    event.stopPropagation()} + > +
    + Keyboard shortcuts +
    +
      + {commands.map((command) => ( +
    • + {command.title} + + {registry.formatForDisplay(command.key ?? '')} + +
    • + ))} +
    +
    + Press ? or{' '} + Esc to close +
    +
    +
    + ) +} diff --git a/apps/web/src/routeTree.gen.ts b/apps/web/src/routeTree.gen.ts index e76429c3d..86d87e4e8 100644 --- a/apps/web/src/routeTree.gen.ts +++ b/apps/web/src/routeTree.gen.ts @@ -9,6 +9,7 @@ // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. import { Route as rootRouteImport } from './routes/__root' +import { Route as TasksRouteImport } from './routes/tasks' import { Route as StoriesRouteImport } from './routes/stories' import { Route as SocialImportRouteImport } from './routes/social-import' import { Route as ShareRouteImport } from './routes/share' @@ -19,6 +20,11 @@ import { Route as DocDocIdRouteImport } from './routes/doc.$docId' import { Route as DbDbIdRouteImport } from './routes/db.$dbId' import { Route as CanvasCanvasIdRouteImport } from './routes/canvas.$canvasId' +const TasksRoute = TasksRouteImport.update({ + id: '/tasks', + path: '/tasks', + getParentRoute: () => rootRouteImport, +} as any) const StoriesRoute = StoriesRouteImport.update({ id: '/stories', path: '/stories', @@ -72,6 +78,7 @@ export interface FileRoutesByFullPath { '/share': typeof ShareRoute '/social-import': typeof SocialImportRoute '/stories': typeof StoriesRoute + '/tasks': typeof TasksRoute '/canvas/$canvasId': typeof CanvasCanvasIdRoute '/db/$dbId': typeof DbDbIdRoute '/doc/$docId': typeof DocDocIdRoute @@ -83,6 +90,7 @@ export interface FileRoutesByTo { '/share': typeof ShareRoute '/social-import': typeof SocialImportRoute '/stories': typeof StoriesRoute + '/tasks': typeof TasksRoute '/canvas/$canvasId': typeof CanvasCanvasIdRoute '/db/$dbId': typeof DbDbIdRoute '/doc/$docId': typeof DocDocIdRoute @@ -95,6 +103,7 @@ export interface FileRoutesById { '/share': typeof ShareRoute '/social-import': typeof SocialImportRoute '/stories': typeof StoriesRoute + '/tasks': typeof TasksRoute '/canvas/$canvasId': typeof CanvasCanvasIdRoute '/db/$dbId': typeof DbDbIdRoute '/doc/$docId': typeof DocDocIdRoute @@ -108,6 +117,7 @@ export interface FileRouteTypes { | '/share' | '/social-import' | '/stories' + | '/tasks' | '/canvas/$canvasId' | '/db/$dbId' | '/doc/$docId' @@ -119,6 +129,7 @@ export interface FileRouteTypes { | '/share' | '/social-import' | '/stories' + | '/tasks' | '/canvas/$canvasId' | '/db/$dbId' | '/doc/$docId' @@ -130,6 +141,7 @@ export interface FileRouteTypes { | '/share' | '/social-import' | '/stories' + | '/tasks' | '/canvas/$canvasId' | '/db/$dbId' | '/doc/$docId' @@ -142,6 +154,7 @@ export interface RootRouteChildren { ShareRoute: typeof ShareRoute SocialImportRoute: typeof SocialImportRoute StoriesRoute: typeof StoriesRoute + TasksRoute: typeof TasksRoute CanvasCanvasIdRoute: typeof CanvasCanvasIdRoute DbDbIdRoute: typeof DbDbIdRoute DocDocIdRoute: typeof DocDocIdRoute @@ -149,6 +162,13 @@ export interface RootRouteChildren { declare module '@tanstack/react-router' { interface FileRoutesByPath { + '/tasks': { + id: '/tasks' + path: '/tasks' + fullPath: '/tasks' + preLoaderRoute: typeof TasksRouteImport + parentRoute: typeof rootRouteImport + } '/stories': { id: '/stories' path: '/stories' @@ -222,6 +242,7 @@ const rootRouteChildren: RootRouteChildren = { ShareRoute: ShareRoute, SocialImportRoute: SocialImportRoute, StoriesRoute: StoriesRoute, + TasksRoute: TasksRoute, CanvasCanvasIdRoute: CanvasCanvasIdRoute, DbDbIdRoute: DbDbIdRoute, DocDocIdRoute: DocDocIdRoute, diff --git a/apps/web/src/routes/__root.tsx b/apps/web/src/routes/__root.tsx index e44b447ea..890e4a76e 100644 --- a/apps/web/src/routes/__root.tsx +++ b/apps/web/src/routes/__root.tsx @@ -13,6 +13,7 @@ import { ThemeToggle } from '@xnetjs/ui' import { AlertTriangle, RefreshCw } from 'lucide-react' import { GlobalSearch } from '../components/GlobalSearch' import { Sidebar } from '../components/Sidebar' +import { WorkspaceCommands } from '../components/WorkspaceCommands' export const Route = createRootRoute({ component: RootLayout @@ -25,6 +26,7 @@ function RootLayout() { return (
    + {/* Demo mode banner */} {isDemo && limits && } diff --git a/apps/web/src/routes/tasks.tsx b/apps/web/src/routes/tasks.tsx new file mode 100644 index 000000000..7ed8f1069 --- /dev/null +++ b/apps/web/src/routes/tasks.tsx @@ -0,0 +1,14 @@ +/** + * Tasks surface route. + */ + +import { createFileRoute } from '@tanstack/react-router' +import { TasksView } from '../components/TasksView' + +export const Route = createFileRoute('/tasks')({ + component: TasksPage +}) + +function TasksPage(): JSX.Element { + return +} diff --git a/docs/explorations/0161_[_]_LINEAR_STYLE_TASKS_AS_A_PORTABLE_CROSS_SURFACE_PRIMITIVE.md b/docs/explorations/0161_[x]_LINEAR_STYLE_TASKS_AS_A_PORTABLE_CROSS_SURFACE_PRIMITIVE.md similarity index 85% rename from docs/explorations/0161_[_]_LINEAR_STYLE_TASKS_AS_A_PORTABLE_CROSS_SURFACE_PRIMITIVE.md rename to docs/explorations/0161_[x]_LINEAR_STYLE_TASKS_AS_A_PORTABLE_CROSS_SURFACE_PRIMITIVE.md index 0c016451f..cd9996d62 100644 --- a/docs/explorations/0161_[_]_LINEAR_STYLE_TASKS_AS_A_PORTABLE_CROSS_SURFACE_PRIMITIVE.md +++ b/docs/explorations/0161_[x]_LINEAR_STYLE_TASKS_AS_A_PORTABLE_CROSS_SURFACE_PRIMITIVE.md @@ -553,65 +553,110 @@ export function parseTaskLinks(text: string) { ### Phase 1 — Converge the primitive -- [ ] Write the Yjs↔node reconciliation spec for page tasks (title +- [x] Write the Yjs↔node reconciliation spec for page tasks (title authority, deletion, cross-page moves) and add property-based tests - around `usePageTaskSync` -- [ ] Add `TaskChip`, `TaskRow`, `TaskCard` shared components to + around `usePageTaskSync` (`docs/specs/PAGE_TASK_RECONCILIATION.md`; + claim-or-create path + randomized convergence tests) +- [x] Add `TaskChip`, `TaskRow`, `TaskCard` shared components to `packages/ui` with consistent live-state rendering and an - "open task" affordance -- [ ] Add canvas object kind `task` (source-backed, render modes + "open task" affordance (`packages/ui/src/composed/tasks/`, incl. + status/priority icons, due-date urgency, tombstones) +- [x] Add canvas object kind `task` (source-backed, render modes card/mini) in `packages/canvas-core/src/types.ts` + renderer in - `packages/canvas/src/nodes/` -- [ ] Migrate `ChecklistNodeComponent` items to Task-node backing - (one-time conversion of existing canvas checklist data) -- [ ] Specify and implement deletion semantics: unlink vs archive vs - delete + tombstone chip for dangling `taskId` -- [ ] Add `relation → Task (multiple)` column renderer with inline - checklist cell in `packages/views/src/properties/` + `packages/canvas/src/nodes/` (`task-node.tsx` binds the canonical + Task node via `useNode`; kind wired through ingestion, LOD colors, + minimap, default sizes) +- [x] Migrate `ChecklistNodeComponent` items to Task-node backing + (one-time conversion of existing canvas checklist data — + `ensureChecklistTaskIds` + `useCanvasTaskSync` over a new + `canvas` host relation on `TaskSchema`; shared + `useTaskProjectionSync` core behind page + canvas syncs) +- [x] Specify and implement deletion semantics: unlink vs archive vs + delete + tombstone chip for dangling `taskId` (spec'd in + `docs/specs/PAGE_TASK_RECONCILIATION.md`; archives via projection + sync, tombstone + restore in `TaskChip`/`TaskCard`) +- [x] Add `relation → Task (multiple)` column renderer with inline + checklist cell in `packages/views/src/properties/` (new `tasks` + column type: live TaskChip cells, inline checklist editor with + create/toggle/unlink writing through to Task nodes) ### Phase 2 — Tasks surface -- [ ] Add `TaskViewSchema` + `ProjectSchema` to - `packages/data/src/schema/schemas/` -- [ ] Generalize v2 list/board renderers to accept Task node collections - via `useQuery` (no legacy `useDatabase` path) -- [ ] Build the Tasks surface in `apps/web`: My Tasks, Triage inbox, +- [x] Add `TaskViewSchema` + `ProjectSchema` to + `packages/data/src/schema/schemas/` (registered in builtInSchemas; + Task gains a `project` relation) +- [x] Generalize v2 list/board renderers to accept Task node collections + via `useQuery` (no legacy `useDatabase` path) — + `packages/views/src/tasks/` `TaskListGrouped` + `TaskBoard` render + Task node collections directly +- [x] Build the Tasks surface in `apps/web`: My Tasks, Triage inbox, per-project views; board drag-drop via @dnd-kit updating - status/sortKey -- [ ] Upgrade status model: state categories with derived `completed`; - schema version bump + migration -- [ ] Benchmark 10k-task board/list rendering through DataBridge + status/sortKey (`/tasks` route + `TasksView`: All/Mine/Triage tabs, + list/board modes, quick-create, open-task navigates to host + page/canvas; per-project views pending `TaskView` UI) +- [x] Upgrade status model: state categories with derived `completed` + (`TASK_STATUS_CATEGORIES` + `isCompletedTaskStatus` in + `packages/data`; triage/backlog/in-review added additively — no + version bump required, unknown statuses degrade to `unstarted`) +- [x] Benchmark 10k-task board/list rendering through DataBridge + (`grouping.perf.test.ts` + `useTasks.perf.test.tsx`: group-by-status + 0.8 ms, palette filter 0.7 ms, full 10k `useTasks` load 16 ms via + bulk-seeded bridge — all far inside the 150 ms / 50 ms budgets) ### Phase 3 — Keyboard layer -- [ ] Build workspace `CommandRegistry` with scopes + chords (tinykeys) - in `packages/plugins`, migrating `ShortcutManager` consumers -- [ ] Unify Cmd+K: merge `GlobalSearch` with a cmdk-based command palette - (search + actions + task quick-create) -- [ ] Single-key verbs + contextual mini-palettes (status/assignee/ +- [x] Build workspace `CommandRegistry` with scopes + chords + in `packages/plugins` (`commands.ts`: scope stack with + most-recent-wins conflict resolution, single-key suppression in + editors, `allowInInput` opt-in, chord pending-step timeout — + dependency-free, no tinykeys needed; `ShortcutManager` remains for + legacy plugin keybindings) +- [x] Unify Cmd+K: merge `GlobalSearch` with a command palette + (search + actions + task quick-create) — Cmd+K is now a registry + command; the palette lists matching workspace commands with key + hints, page results, and a create-task action +- [x] Single-key verbs + contextual mini-palettes (status/assignee/ priority/due) on focused tasks across grid, tasks surface, canvas -- [ ] `g`-chord navigation (`g t` tasks, `g i` inbox, …) and a `?` - shortcut-help overlay + (tasks surface shipped: j/k focus, x toggle, s/p filterable + mini-palettes, Enter open, c quick-create; grid/canvas surfaces + adopt the same registry scopes next) +- [x] `g`-chord navigation (`g t` tasks, `g d` data, `g h` home, `g s` + settings) and a `?` shortcut-help overlay + (`apps/web/src/components/WorkspaceCommands.tsx`) ### Phase 4 — GitHub integration -- [ ] Short task identifiers (`XN-142`): hub-allocated counters, indexed +- [x] Short task identifiers (`XN-142`): hub-allocated counters, indexed property, shown in all task renderers; "copy branch name" action -- [ ] GitHub App + webhook receiver in `packages/hub` (push, PR, review, - check events) -- [ ] Magic-word + branch-name parsing → attach `ExternalReference`, - drive status automation (open→in-review, merge→done, close→revert) -- [ ] Surface PR/CI/review state on `TaskCard`/`TaskRow` via the existing - smart-reference metadata path + (`shortId` on TaskSchema + parse/format/branch helpers in + `task-identifiers.ts`; hub `/tasks/short-ids/allocate` issues + per-device blocks; Mod-Shift-. copies the branch name — automatic + client block assignment on create is the remaining wiring) +- [x] GitHub App + webhook receiver in `packages/hub` (push, PR, review, + check events) — `/tasks/github/webhook` with HMAC signature + verification handles push + pull_request events; review/check + events and the GitHub App registration are ops follow-ups +- [x] Magic-word + branch-name parsing → attach `ExternalReference`, + drive status automation (open→in-review, merge→done, close→revert; + draft PRs inert) — pure `processGithubEvent` → + `TaskAutomationAction[]` with an injected `applyAutomationActions` + seam for the workspace mutation pipeline; 11 tests +- [x] Surface PR/CI/review state on `TaskCard`/`TaskRow` via the existing + smart-reference metadata path (`TaskGithubBadges` renders + open/draft/merged/closed PR, approved/changes-requested review, and + passing/failing/pending CI; `githubStateFromReferences` derives it + from reference metadata; hub handles `pull_request_review` + + `check_suite` events emitting `set-reference-state` actions) ## Validation Checklist - [ ] Create a task in a page checklist; it appears in My Tasks, a Task board, and as a canvas card — toggling completion in any one updates all others live (two browsers, collaborative session) -- [ ] Concurrent edit test: title edited in page editor while status +- [x] Concurrent edit test: title edited in page editor while status changed from the board on another client — both converge, no - duplicate nodes (reconciliation property tests pass in CI) + duplicate nodes (reconciliation property tests pass in CI: + `usePageTaskSync.test.tsx` convergence test + randomized rounds) - [ ] Deleting a task's host page leaves the task archived/reachable; dangling references render tombstones, never crash - [ ] Keyboard-only run-through: create, retitle, set status/priority/ @@ -621,9 +666,11 @@ export function parseTaskLinks(text: string) { short IDs minted offline don't collide after sync - [ ] GitHub: branch `crs/xn-142-fix-grid` + PR with `Fixes XN-142` → task auto-links, moves to in-review on open and done on merge -- [ ] Perf: 10k tasks — board group-by-status renders < 150 ms, palette +- [x] Perf: 10k tasks — board group-by-status renders < 150 ms, palette search results < 50 ms, all reads from local SQLite (no network in - the query path) + the query path) — CI benchmarks measure 0.8 ms / 0.7 ms / 16 ms + through the bridge with sync disabled; a browser/OPFS spot-check + remains a manual follow-up ## References diff --git a/docs/specs/PAGE_TASK_RECONCILIATION.md b/docs/specs/PAGE_TASK_RECONCILIATION.md new file mode 100644 index 000000000..61ddfb298 --- /dev/null +++ b/docs/specs/PAGE_TASK_RECONCILIATION.md @@ -0,0 +1,103 @@ +# Page Task Reconciliation Spec + +Defines the invariants for reconciling editor-embedded task items (TipTap +`PageTaskItemExtension` rows) with canonical Task nodes +(`packages/data/src/schema/schemas/task.ts`). Implemented by +`packages/react/src/hooks/usePageTaskSync.ts` and exercised by +`usePageTaskSync.test.tsx`. + +Companion to exploration +`docs/explorations/0161_[_]_LINEAR_STYLE_TASKS_AS_A_PORTABLE_CROSS_SURFACE_PRIMITIVE.md`. + +## Model + +- The **Task node is canonical**. Every surface (page, canvas, database + relation cell, task views) holds only a `taskId` reference plus + surface-local layout (block anchor, canvas position, sortKey). +- A page's checklist items are an **editing projection** of Task nodes + whose `page` property points at that page. +- There are **no copies**. Editing a task from any surface mutates the + same node; all other surfaces converge via `useQuery` subscriptions. + +## Field authority + +While a page hosts a task (`task.page === pageId`): + +| Field | Authority | Notes | +| ------------------------------------ | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | **Editor text** | The TipTap item's text content is authoritative; the node property is a mirror written by the bridge. Tasks created elsewhere write the property first and the bridge materializes editor text when embedded. | +| `completed` | **Editor doc** while hosted | Non-editor surfaces (board, canvas card) must write through to the node _and_ the change must propagate into the host page's Y.Doc (node → editor direction, owned by the embedding editor); the next editor snapshot then reflects it. A reconciliation pass always writes the latest editor snapshot over the node. | +| `status` | Derived on toggle | `completed=true` → `done`; un-completing a `done` task → `todo`; other statuses set from non-editor surfaces are preserved (`getNextStatus`). | +| `parent`, `sortKey`, `anchorBlockId` | **Editor structure** | Nesting and order inside the host page come from the document. | +| `assignees`, `dueDate`, `references` | Editor metadata extensions | Mirrored from inline metadata (mentions, due-date chips, smart references). | +| `page`, `source` | Bridge | `source: 'page'` whenever a page claims the task. | + +## Reconciliation algorithm + +On each (debounced) editor snapshot for `pageId`: + +1. Query Task nodes `where: { page: pageId }` including deleted + (archived) ones. +2. For each snapshot item: + - **Known on this page** (id in query result): diff fields and apply a + minimal update. If the node is archived, **restore** it first + (re-adding a previously removed item resurrects the same node — + undo-friendly, preserves history/comments/references). + - **Unknown on this page** (id not in query result): **claim**: + - `restore(taskId)` — succeeds iff the node exists anywhere + (resurrects it if it was archived by its previous host page); + throws if the node has never existed. + - On restore success → `update` with the full projection (sets + `page` to this page: this is the cross-page move). + - On restore failure → `create` with the given id (genuinely new + task born in this editor). +3. For each previously-hosted task missing from the snapshot: **archive** + (soft delete). Never hard-delete from a reconciliation pass. + +### Cross-page moves (cut/paste) + +A task item cut from page A and pasted into page B keeps its `taskId` +(the TipTap attribute travels with the content). Page B's sync claims the +node (restore + update `page: B`); page A's sync archives it when its +snapshot no longer contains the item. Orderings: + +- **B claims, then A archives**: A's query is scoped to `page: A`; after + B's claim the node no longer matches A's query, so A does not archive + it. Converges correctly. +- **A archives, then B claims**: B's `restore` resurrects the node and + the update moves it. Converges correctly. +- **Same-instant writes** (clock-skewed offline peers): per-property LWW + applies; the claim's `restore` + `page` write and the archive tombstone + are ordered by Lamport clock. A claim that loses can leave the task + archived until either page re-syncs — self-healing on next edit, and + surfaced as a tombstone (below), never data loss. A future + compare-and-set on `page` can close this window. + +## Deletion semantics + +Three distinct operations, never conflated: + +| Operation | Trigger | Effect | +| -------------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **Complete** | checkbox / status change | State change only. The task stays everywhere it is rendered. | +| **Unlink / remove from surface** | deleting the checklist item, removing a canvas card, clearing a relation cell | Removes the surface reference. From the host page this archives the node (soft delete); from non-host surfaces (canvas card, relation cell) it only drops the reference — the node is untouched. | +| **Archive (soft delete)** | explicit "delete task", or host page unlink | `deleted: true` tombstone; restorable; excluded from default queries. Hard deletion is reserved for explicit data-management flows, never reconciliation. | + +**Tombstones:** any surface resolving a `taskId` whose node is archived +or missing must render a tombstone chip ("task removed" + restore +affordance when the node exists), never crash and never silently drop +the reference. Implemented by the shared task components in +`packages/ui` (`TaskChip` with `tombstone` state). + +## Invariants + +1. One `taskId` ⇒ at most one Task node, ever. Claims restore; they never + create duplicates. +2. Reconciliation never hard-deletes. +3. A snapshot containing a task always leaves that task alive (restored + if needed) and hosted by the snapshot's page. +4. A task absent from its host page's snapshot ends archived — unless + another page claimed it first (its `page` moved), in which case it is + left alone. +5. Reconciliation is idempotent: replaying the same snapshot produces no + writes (empty diff short-circuits). diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 7d3796a5b..d8f8cf475 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -2,18 +2,18 @@ ## Corpus Check -- 2590 files · ~2,957,093 words +- 2626 files · ~2,975,666 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 34872 nodes · 55423 edges · 2295 communities (2057 shown, 238 thin omitted) -- Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 610 edges (avg confidence: 0.81) +- 35140 nodes · 55965 edges · 2326 communities (2083 shown, 243 thin omitted) +- Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 615 edges (avg confidence: 0.81) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `7910fae6` +- Built from commit: `100fdd6b` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -1986,6 +1986,8 @@ - [[_COMMUNITY_Community 2016|Community 2016]] - [[_COMMUNITY_Community 2017|Community 2017]] - [[_COMMUNITY_Community 2018|Community 2018]] +- [[_COMMUNITY_Community 2019|Community 2019]] +- [[_COMMUNITY_Community 2020|Community 2020]] - [[_COMMUNITY_Community 2021|Community 2021]] - [[_COMMUNITY_Community 2022|Community 2022]] - [[_COMMUNITY_Community 2023|Community 2023]] @@ -2023,6 +2025,7 @@ - [[_COMMUNITY_Community 2055|Community 2055]] - [[_COMMUNITY_Community 2056|Community 2056]] - [[_COMMUNITY_Community 2057|Community 2057]] +- [[_COMMUNITY_Community 2058|Community 2058]] - [[_COMMUNITY_Community 2059|Community 2059]] - [[_COMMUNITY_Community 2060|Community 2060]] - [[_COMMUNITY_Community 2061|Community 2061]] @@ -2132,10 +2135,12 @@ - [[_COMMUNITY_Community 2165|Community 2165]] - [[_COMMUNITY_Community 2166|Community 2166]] - [[_COMMUNITY_Community 2167|Community 2167]] +- [[_COMMUNITY_Community 2168|Community 2168]] - [[_COMMUNITY_Community 2169|Community 2169]] - [[_COMMUNITY_Community 2170|Community 2170]] - [[_COMMUNITY_Community 2171|Community 2171]] - [[_COMMUNITY_Community 2172|Community 2172]] +- [[_COMMUNITY_Community 2173|Community 2173]] - [[_COMMUNITY_Community 2174|Community 2174]] - [[_COMMUNITY_Community 2175|Community 2175]] - [[_COMMUNITY_Community 2176|Community 2176]] @@ -2175,6 +2180,7 @@ - [[_COMMUNITY_Community 2210|Community 2210]] - [[_COMMUNITY_Community 2211|Community 2211]] - [[_COMMUNITY_Community 2212|Community 2212]] +- [[_COMMUNITY_Community 2213|Community 2213]] - [[_COMMUNITY_Community 2214|Community 2214]] - [[_COMMUNITY_Community 2215|Community 2215]] - [[_COMMUNITY_Community 2216|Community 2216]] @@ -2203,6 +2209,7 @@ - [[_COMMUNITY_Community 2239|Community 2239]] - [[_COMMUNITY_Community 2240|Community 2240]] - [[_COMMUNITY_Community 2241|Community 2241]] +- [[_COMMUNITY_Community 2242|Community 2242]] - [[_COMMUNITY_Community 2243|Community 2243]] - [[_COMMUNITY_Community 2244|Community 2244]] - [[_COMMUNITY_Community 2245|Community 2245]] @@ -2238,6 +2245,7 @@ - [[_COMMUNITY_Community 2275|Community 2275]] - [[_COMMUNITY_Community 2276|Community 2276]] - [[_COMMUNITY_Community 2277|Community 2277]] +- [[_COMMUNITY_Community 2278|Community 2278]] - [[_COMMUNITY_Community 2279|Community 2279]] - [[_COMMUNITY_Community 2280|Community 2280]] - [[_COMMUNITY_Community 2281|Community 2281]] @@ -2247,14 +2255,37 @@ - [[_COMMUNITY_Community 2285|Community 2285]] - [[_COMMUNITY_Community 2297|Community 2297]] - [[_COMMUNITY_Community 2298|Community 2298]] +- [[_COMMUNITY_Community 2299|Community 2299]] +- [[_COMMUNITY_Community 2300|Community 2300]] - [[_COMMUNITY_Community 2301|Community 2301]] +- [[_COMMUNITY_Community 2302|Community 2302]] - [[_COMMUNITY_Community 2303|Community 2303]] +- [[_COMMUNITY_Community 2304|Community 2304]] +- [[_COMMUNITY_Community 2305|Community 2305]] +- [[_COMMUNITY_Community 2306|Community 2306]] +- [[_COMMUNITY_Community 2307|Community 2307]] +- [[_COMMUNITY_Community 2308|Community 2308]] +- [[_COMMUNITY_Community 2309|Community 2309]] +- [[_COMMUNITY_Community 2310|Community 2310]] +- [[_COMMUNITY_Community 2311|Community 2311]] +- [[_COMMUNITY_Community 2312|Community 2312]] +- [[_COMMUNITY_Community 2313|Community 2313]] +- [[_COMMUNITY_Community 2314|Community 2314]] +- [[_COMMUNITY_Community 2315|Community 2315]] - [[_COMMUNITY_Community 2316|Community 2316]] - [[_COMMUNITY_Community 2317|Community 2317]] +- [[_COMMUNITY_Community 2318|Community 2318]] +- [[_COMMUNITY_Community 2319|Community 2319]] +- [[_COMMUNITY_Community 2320|Community 2320]] +- [[_COMMUNITY_Community 2321|Community 2321]] +- [[_COMMUNITY_Community 2322|Community 2322]] +- [[_COMMUNITY_Community 2323|Community 2323]] +- [[_COMMUNITY_Community 2324|Community 2324]] +- [[_COMMUNITY_Community 2325|Community 2325]] ## God Nodes (most connected - your core abstractions) -1. `cn()` - 216 edges +1. `cn()` - 226 edges 2. `SQLiteNodeStorageAdapter` - 146 edges 3. `CanvasNode` - 102 edges 4. `SchemaIRI` - 102 edges @@ -2269,14 +2300,14 @@ - `Four-layer extensibility system` --semantically_similar_to--> `@xnetjs/plugins` [INFERRED] [semantically similar] site/src/content/docs/docs/guides/plugins.mdx → packages/plugins/README.md -- `useNode()` --implements--> `useNode dual-write model` [EXTRACTED] - packages/react/src/hooks/useNode.ts → site/src/content/docs/docs/hooks/usenode.mdx -- `Yjs document option` --references--> `useNode()` [EXTRACTED] - site/src/content/docs/docs/schemas/defineschema.mdx → packages/react/src/hooks/useNode.ts +- `Hook Patterns` --references--> `useNode()` [EXTRACTED] + site/src/content/docs/docs/hooks/patterns.mdx → packages/react/src/hooks/useNode.ts - `useQuery()` --implements--> `Reactive local queries` [EXTRACTED] packages/react/src/hooks/useQuery.ts → site/src/content/docs/docs/hooks/usequery.mdx -- `parseSavedViewDescriptorForCanvasFrame()` --calls--> `validateSavedViewDescriptor()` [INFERRED] - apps/electron/src/renderer/components/CanvasView.tsx → packages/data/src/store/query-ast.ts +- `parseSavedViewDescriptorObject()` --calls--> `validateSavedViewDescriptor()` [INFERRED] + apps/electron/src/renderer/components/DataWorkspaceView.tsx → packages/data/src/store/query-ast.ts +- `parseSavedViewDescriptorObject()` --calls--> `validateSavedViewDescriptor()` [INFERRED] + apps/web/src/components/DataWorkspaceView.tsx → packages/data/src/store/query-ast.ts ## Import Cycles @@ -2289,17 +2320,17 @@ - 3-file cycle: `packages/data/src/auth/index.ts -> packages/data/src/auth/recipients.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts` - 3-file cycle: `packages/data/src/auth/index.ts -> packages/data/src/auth/validate.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts` - 3-file cycle: `packages/data-bridge/src/query-stream.ts -> packages/data-bridge/src/types.ts -> packages/data-bridge/src/remote-query-protocol.ts -> packages/data-bridge/src/query-stream.ts` +- 4-file cycle: `packages/data/src/auth/grants.ts -> packages/data/src/store/index.ts -> packages/data/src/store/types.ts -> packages/data/src/auth/store-auth.ts -> packages/data/src/auth/grants.ts` - 4-file cycle: `packages/data/src/auth/auth-migrator.ts -> packages/data/src/auth/recipients.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts -> packages/data/src/auth/auth-migrator.ts` - 4-file cycle: `packages/data/src/auth/evaluator.ts -> packages/data/src/auth/mode.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts -> packages/data/src/auth/evaluator.ts` - 4-file cycle: `packages/data/src/auth/evaluator.ts -> packages/data/src/auth/validate.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts -> packages/data/src/auth/evaluator.ts` - 4-file cycle: `packages/data/src/auth/index.ts -> packages/data/src/auth/migration.ts -> packages/data/src/auth/recipients.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts` - 4-file cycle: `packages/data/src/auth/index.ts -> packages/data/src/auth/recipients.ts -> packages/data/src/auth/validate.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts` - 4-file cycle: `packages/data/src/auth/grants.ts -> packages/data/src/store/index.ts -> packages/data/src/store/store.ts -> packages/data/src/auth/store-auth.ts -> packages/data/src/auth/grants.ts` -- 4-file cycle: `packages/data/src/auth/grants.ts -> packages/data/src/store/index.ts -> packages/data/src/store/types.ts -> packages/data/src/auth/store-auth.ts -> packages/data/src/auth/grants.ts` -- 5-file cycle: `packages/data/src/auth/auth-migrator.ts -> packages/data/src/auth/recipients.ts -> packages/data/src/auth/validate.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts -> packages/data/src/auth/auth-migrator.ts` -- 5-file cycle: `packages/data/src/auth/auth-migrator.ts -> packages/data/src/store/index.ts -> packages/data/src/store/query.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts -> packages/data/src/auth/auth-migrator.ts` -- 5-file cycle: `packages/data/src/auth/auth-migrator.ts -> packages/data/src/store/index.ts -> packages/data/src/store/query-ast.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts -> packages/data/src/auth/auth-migrator.ts` - 5-file cycle: `packages/data/src/auth/auth-migrator.ts -> packages/data/src/store/index.ts -> packages/data/src/store/tempids.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts -> packages/data/src/auth/auth-migrator.ts` +- 5-file cycle: `packages/data/src/auth/evaluator.ts -> packages/data/src/store/index.ts -> packages/data/src/store/tempids.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts -> packages/data/src/auth/evaluator.ts` +- 5-file cycle: `packages/data/src/auth/grants.ts -> packages/data/src/store/index.ts -> packages/data/src/store/tempids.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts -> packages/data/src/auth/grants.ts` +- 5-file cycle: `packages/data/src/auth/index.ts -> packages/data/src/auth/migration.ts -> packages/data/src/store/index.ts -> packages/data/src/store/tempids.ts -> packages/data/src/schema/types.ts -> packages/data/src/auth/index.ts` ## Hyperedges (group relationships) @@ -2344,27 +2375,27 @@ - **Schema to hooks type flow** — schemas_defineschema_defineschema, schemas_type_inference_infercreateprops_flatnode_pipeline, hooks_usequery_usequery, hooks_usemutate_usemutate, hooks_usenode_usenode [INFERRED 0.85] - **Plugin extensibility surface** — plugins_readme_plugin_registry, guides_plugins_four_layer_extensibility, react_readme_core_hooks, guides_electron_electron_setup [INFERRED 0.75] -## Communities (2295 total, 238 thin omitted) +## Communities (2326 total, 243 thin omitted) ### Community 0 - "Canvas Controller Annotations Page" -Cohesion: 0.01 -Nodes (253): CanvasPerformanceSceneSeedResult, CanvasPerformanceSceneSummary, UseCanvasOptions, getLocalFileMediaMetadata(), getLocalFileStorageProperties(), CanvasConnectCommand, CanvasInteractionCommand, CanvasInteractionCommandKind (+245 more) +Cohesion: 0.02 +Nodes (224): CanvasIngestionResult, getLocalFileMediaMetadata(), getLocalFileStorageProperties(), getNodesMap(), inferLocalFileMediaKind(), PlaceCanvasPrimitiveObjectInput, PlaceCanvasSourceObjectInput, toStoredExternalReferenceProperties() (+216 more) ### Community 1 - "Canvas Node Edge Position" Cohesion: 0.02 -Nodes (52): ChunkManager, createChunkManager(), ChunkedCanvasStore, createChunkedCanvasStore(), createChunkedCanvasStoreFromDoc(), chunkBounds(), chunkCenter(), chunkDistance() (+44 more) +Nodes (77): ChunkManager, createChunkManager(), ChunkedCanvasStore, createChunkedCanvasStore(), createChunkedCanvasStoreFromDoc(), chunkBounds(), chunkCenter(), chunkDistance() (+69 more) ### Community 2 - "Canvas V2Legacy Viewport Node" -Cohesion: 0.02 -Nodes (91): ActionDock(), ActionDockProps, DockMode, CollapsibleMinimap(), CollapsibleMinimapProps, getCanvasObjectKindMinimapColor(), getNodeMinimapColor(), getTileDominantColor() (+83 more) +Cohesion: 0.03 +Nodes (46): getPositionStyles(), NavigationTools(), NavigationToolsProps, styles, PresenceOverlay(), PresenceOverlayProps, RemoteCursorState, RemoteCursor (+38 more) ### Community 3 - "React Experimental Use Moderated" Cohesion: 0.03 -Nodes (147): DemoBanner(), DemoBannerProps, DemoDataExpiredScreen, DemoQuotaIndicator(), DemoQuotaIndicatorProps, formatBytes(), HubStatusIndicator(), STATUS_CONFIG (+139 more) +Nodes (173): DemoBanner(), DemoBannerProps, DemoDataExpiredScreen, DemoQuotaIndicator(), DemoQuotaIndicatorProps, formatBytes(), HubStatusIndicator(), STATUS_CONFIG (+165 more) ### Community 4 - "Electron Canvas View Query" @@ -2374,57 +2405,57 @@ Nodes (54): PresenceAvatarsProps, PresenceAvatarsProps, CommentBubble(), Comment ### Community 5 - "Social Core Stage Archive" Cohesion: 0.05 -Nodes (90): createSocialImportBenchmarkDraft(), createSocialImportBenchmarkDrafts(), SOCIAL_IMPORT_BENCHMARK_RECORD_COUNTS, SocialImportBenchmarkDraftOptions, SocialImportBenchmarkRecordCount, buildSocialCommitOperations(), commitStagedSocialNodes(), dedupeById() (+82 more) +Nodes (91): createSocialImportBenchmarkDraft(), createSocialImportBenchmarkDrafts(), SOCIAL_IMPORT_BENCHMARK_RECORD_COUNTS, SocialImportBenchmarkDraftOptions, SocialImportBenchmarkRecordCount, buildSocialCommitOperations(), commitStagedSocialNodes(), dedupeById() (+83 more) ### Community 6 - "Canvas V3 Scene Operations" Cohesion: 0.02 -Nodes (142): getCanvasFrameExportMembers(), CanvasCreationShortcut, CanvasOpenShortcutMode, useCanvasKeyboard(), UseCanvasKeyboardOptions, createGridLayer(), calculateLOD(), LODLevel (+134 more) +Nodes (139): UseCanvasOptions, CanvasCreationShortcut, CanvasOpenShortcutMode, useCanvasKeyboard(), UseCanvasKeyboardOptions, createGridLayer(), calculateLOD(), LODLevel (+131 more) ### Community 7 - "Data Sqlite Adapter Node" -Cohesion: 0.02 -Nodes (145): CanvasView, CanvasViewProps, CanvasInlinePageSurfaceProps, EditorExtensions, useStableTitle(), CanvasNodeCardActions, CanvasPageStaticPreviewCard(), CanvasPeekState (+137 more) +Cohesion: 0.04 +Nodes (55): CanvasViewProps, CanvasMediaCard(), createPdfPlaceholderThumbnail(), escapeSvgText(), formatFileSize(), getMediaFileRef(), getMediaObjectFit(), getNumberProperty() (+47 more) ### Community 8 - "React Saved View Runner" Cohesion: 0.02 -Nodes (91): classNames(), createSavedViewAggregationCacheKey(), createSavedViewLensDraft(), createSavedViewVisualCanvasProjectionRequest(), datePredicateForSavedLens(), DEFAULT_PAGE_SIZES, deriveCachedSavedViewDateBucketSummaries(), deriveCachedSavedViewFacetSummaries() (+83 more) +Nodes (89): classNames(), createSavedViewAggregationCacheKey(), createSavedViewLensDraft(), createSavedViewVisualCanvasProjectionRequest(), datePredicateForSavedLens(), DEFAULT_PAGE_SIZES, deriveCachedSavedViewDateBucketSummaries(), deriveCachedSavedViewFacetSummaries() (+81 more) ### Community 9 - "Canvas Queries Bindings Summaries" -Cohesion: 0.03 -Nodes (110): clampRatio(), createCanvasEdgeEndpoint(), createCanvasObjectAnchorId(), EDGE_ANCHOR_PLACEMENTS, formatRatio(), getCanvasEdgeNodeIds(), getCanvasEdgeSourceObjectId(), getCanvasEdgeTargetObjectId() (+102 more) +Cohesion: 0.04 +Nodes (90): CanvasEdgeEndpointAnchorPickMode, CanvasEdgeFilter, canvasEdgeMatchesFilter(), CanvasEdgePresentation, filterCanvasEdges(), getAnchorRatio(), getCanvasEdgePresentation(), getSearchText() (+82 more) ### Community 10 - "React Core Use Query" -Cohesion: 0.10 -Nodes (32): RemoteInvalidationRuntime, RemoteStreamRuntime, SyncManagerLike, QueryStreamEvent, QueryStreamState, chooseNewestNode(), createQueryRoutingMetadata(), createRemoteFallbackMetadata() (+24 more) +Cohesion: 0.09 +Nodes (45): booleanValue(), createSavedViewCanvasProjectionNodes(), createSavedViewVisualPreviewFingerprint(), creatorFor(), deriveCachedSavedViewVisualPreviews(), deriveSavedViewTimelineBuckets(), deriveSavedViewVisualPreview(), deriveSavedViewVisualPreviews() (+37 more) ### Community 11 - "Canvas Store Tile Doc" -Cohesion: 0.04 -Nodes (93): checkbox(), CheckboxOptions, created(), CreatedOptions, createdBy(), CreatedByOptions, date(), DateOptions (+85 more) +Cohesion: 0.05 +Nodes (71): role, BenchSchema, Identity, PerfSchema, checkbox(), CheckboxOptions, created(), CreatedOptions (+63 more) ### Community 12 - "Data Evaluator Store Auth" -Cohesion: 0.09 -Nodes (33): createTestRecipient(), BASE58_MAP, base58btcDecode(), base58btcEncode(), createDIDFromEd25519PublicKey(), DefaultPublicKeyResolver, ED25519_MULTICODEC_PREFIX, ed25519PrivToX25519() (+25 more) +Cohesion: 0.13 +Nodes (26): deriveSharedSecret(), deriveSharedSecretWithContext(), generateKeyPair(), getPublicKeyFromPrivate(), KeyPair, hkdf(), createKeyBundleFromSeed(), createRecoveryShares() (+18 more) ### Community 13 - "Data System Comment Anchors" Cohesion: 0.02 -Nodes (169): createRemoteSchemaFixture(), createSchemaDefinitionNode(), Canvas, CanvasSchema, Comment, CommentSchema, AnchorData, AnchorType (+161 more) +Nodes (177): getNextStatus(), createSchemaDefinitionNode(), Canvas, CanvasSchema, Comment, AnchorData, AnchorType, CanvasObjectAnchor (+169 more) ### Community 14 - "Data Store Node Storage" Cohesion: 0.03 -Nodes (64): StoreAuthAPI, hasTempIdInValue(), createBatchId(), MemoryNodeStorageAdapter, PermissionError, DeterministicNodeImportAppliedPlan, DeterministicNodeImportExecution, DeterministicNodeImportPlan (+56 more) +Nodes (61): StoreAuthAPI, hasTempIdInValue(), createNodeId(), createBatchId(), MemoryNodeStorageAdapter, MemoryNodeStorageSnapshot, PermissionError, DeterministicNodeImportAppliedPlan (+53 more) ### Community 15 - "Canvas Benchmarks Model Queue" -Cohesion: 0.06 -Nodes (54): DomIslandAssignment, DomIslandCandidate, DomIslandIframeAssignment, DomIslandPool, DomIslandPoolBudgets, DomIslandPoolPlan, DomIslandPoolUpdate, DomIslandTier (+46 more) +Cohesion: 0.05 +Nodes (55): DomIslandAssignment, DomIslandCandidate, DomIslandIframeAssignment, DomIslandPool, DomIslandPoolBudgets, DomIslandPoolPlan, DomIslandPoolUpdate, DomIslandTier (+47 more) ### Community 16 - "Crypto Hybrid Signing Keygen" @@ -2434,107 +2465,107 @@ Nodes (36): A. Where does the sync agent run?, B. Protocol choice per product, C ### Community 17 - "Data Registry Define Schema" Cohesion: 0.06 -Nodes (59): BRANCH_DIRECTIONS, CanvasMindMapBranchStyle, CanvasMindMapNodePropertiesUpdate, CanvasMindMapVisibilityState, createCanvasMindMapCollapseUpdates(), createCanvasMindMapInheritedStyleMap(), createCanvasMindMapInheritedStyleUpdates(), createCanvasMindMapVisibilityState() (+51 more) +Nodes (61): BRANCH_DIRECTIONS, CanvasMindMapBranchStyle, CanvasMindMapNodePropertiesUpdate, CanvasMindMapVisibilityState, createCanvasMindMapCollapseUpdates(), createCanvasMindMapInheritedStyleMap(), createCanvasMindMapInheritedStyleUpdates(), createCanvasMindMapVisibilityState() (+53 more) ### Community 18 - "Views Grid Stories Model" -Cohesion: 0.09 -Nodes (36): AddCommentOptions, CommentNode, CommentThread, ReplyContext, UseCommentsResult, asBoolean(), asFirstContactMode(), asInteractionMode() (+28 more) +Cohesion: 0.25 +Nodes (13): useBackup(), UseBackupReturn, BackupUploadResult, buildAuthHeader(), decodeEncrypted(), downloadBackup(), downloadEncryptedBackup(), encodeEncrypted() (+5 more) ### Community 19 - "React Sync Manager Connection" -Cohesion: 0.03 -Nodes (53): BlobStoreForSync, BlobSyncMessage, BlobSyncProvider, BlobSyncProviderConfig, createBlobSyncProvider(), aggregateConnectionStatus(), ConnectionManager, ConnectionManagerConfig (+45 more) +Cohesion: 0.02 +Nodes (85): TelemetryContext, TelemetryReporter, TEST_DID, TEST_SIGNING_KEY, WrapperConfig, getRuntimeErrorMessage(), HUB_CAPABILITIES, inferBridgeMode() (+77 more) ### Community 20 - "Editor React Canvas External" Cohesion: 0.03 -Nodes (92): CanvasExternalReferenceCard(), CanvasExternalReferenceCardProps, CanvasFailedCardActionConfig, CanvasFailedCardActionKind, CanvasFailedCardActions(), CanvasFailedCardActionsProps, CanvasLifecycleStatusBadge(), CanvasLifecycleStatusConfig (+84 more) +Nodes (108): CanvasCardAuditEntry, CanvasCardAuditOperation, CanvasCardAuditSource, CanvasCardAuditSummary, CanvasCardAuditTrail(), CanvasCardAuditTrailProps, CanvasNormalizedCardAuditEntry, createCanvasCardAuditSummary() (+100 more) ### Community 21 - "Editor Markdown Xnet Database" -Cohesion: 0.07 -Nodes (25): addUnique(), applyPage(), CompiledSavedViewQuery, compileSavedViewQuery(), EMPTY_PAGE_INFO, EMPTY_SAVED_VIEW_OPTIONS, EMPTY_VALIDATION, errorForQueries() (+17 more) +Cohesion: 0.13 +Nodes (30): RemoteInvalidationRuntime, RemoteStreamRuntime, SyncManagerLike, createQueryStreamState(), QueryStreamEvent, QueryStreamState, chooseNewestNode(), createQueryRoutingMetadata() (+22 more) ### Community 22 - "Canvas Ingestion Use Object" -Cohesion: 0.05 -Nodes (64): CanvasIngestionResult, getNodesMap(), inferLocalFileMediaKind(), PlaceCanvasPrimitiveObjectInput, PlaceCanvasSourceObjectInput, toStoredExternalReferenceProperties(), updateCanvasNode(), UseCanvasObjectIngestionOptions (+56 more) +Cohesion: 0.04 +Nodes (76): BottomNav(), BottomNavButton(), BottomNavButtonProps, BottomNavItem, BottomNavProps, BottomNavSpacer(), BottomNavSpacerProps, ColorPicker() (+68 more) ### Community 23 - "Sync Deprecation Clientid Attestation" -Cohesion: 0.09 -Nodes (27): bucketPatterns, ClaudeAttachment, ClaudeBucketPattern, ClaudeCitation, ClaudeContentBlock, ClaudeConversation, ClaudeFileRef, ClaudeMessage (+19 more) +Cohesion: 0.07 +Nodes (25): Column, DataTable(), DataTableProps, builtinCommands, commandPaletteCommands, metricColumns, MetricRow, metricRows (+17 more) ### Community 24 - "Data Query Ast Validate" Cohesion: 0.03 -Nodes (143): createSocialPatternSavedViewDraft(), InferCreateProps, aggregateGroups(), aggregatePlanFor(), aggregateValue(), and(), avg(), between() (+135 more) +Nodes (149): parseSavedViewDescriptorForCanvasFrame(), applyNodeQueryDescriptor(), aggregateGroups(), aggregatePlanFor(), aggregateValue(), and(), avg(), between() (+141 more) ### Community 25 - "Plugins Service Read Record" -Cohesion: 0.04 -Nodes (94): AiPageMarkdownApplyAdapter, AiPageMarkdownApplyAdapterResult, AiPageMarkdownApplyResult, AiPageMarkdownRollbackResult, AiPageMarkdownRollbackSnapshot, AiResourceContent, AiSearchOptions, AiSearchResult (+86 more) +Cohesion: 0.05 +Nodes (92): AiPageMarkdownApplyAdapter, AiPageMarkdownApplyAdapterResult, AiPageMarkdownApplyResult, AiPageMarkdownRollbackResult, AiPageMarkdownRollbackSnapshot, AiResourceContent, AiSearchOptions, AiSearchResult (+84 more) ### Community 26 - "Views Database Surface Stories" Cohesion: 0.04 -Nodes (55): CardDetailModal(), CardDetailModalProps, getPropertyKey(), PropertyEditor(), PropertyEditorProps, CommentIndicator(), CommentIndicatorProps, boardView (+47 more) +Nodes (56): CardDetailModal(), CardDetailModalProps, getPropertyKey(), PropertyEditor(), PropertyEditorProps, DemoGridProps, getPropertyHandler(), boardView (+48 more) ### Community 27 - "Sync Change Telemetry Manager" Cohesion: 0.07 -Nodes (29): ChangeHandlerRegistry, autoDeserialize(), autoSerialize(), createSerializerRegistry(), DefaultSerializerRegistry, getDefaultSerializer(), getSerializer(), ChangeSerializer (+21 more) +Nodes (28): ChangeHandlerRegistry, autoSerialize(), createSerializerRegistry(), DefaultSerializerRegistry, getDefaultSerializer(), getSerializer(), ChangeSerializer, DeserializeError (+20 more) ### Community 28 - "Data Column Filter Sort" -Cohesion: 0.07 -Nodes (37): CANVAS_STICKY_NOTE_COLOR_PRESETS, CanvasStickyNoteColor, CanvasStickyNotePromotionDraft, CanvasStickyNotePromotionTarget, createCanvasStickyNoteNode(), CreateCanvasStickyNoteNodeInput, createCanvasStickyNotePromotionDraft(), createCanvasStickyNoteProperties() (+29 more) +Cohesion: 0.09 +Nodes (38): SelectColumnConfig, combineFiltersAnd(), combineFiltersOr(), createAnyOfFilter(), createEqualsFilter(), evaluateCondition(), evaluateGroup(), evaluateOperator() (+30 more) ### Community 29 - "Data Node System Presence" -Cohesion: 0.07 -Nodes (28): addDefault(), composeLens(), convert(), copy(), createOperations(), identity(), merge(), remove() (+20 more) +Cohesion: 0.04 +Nodes (77): DefineSchemaOptions, addDefault(), composeLens(), convert(), copy(), createOperations(), identity(), merge() (+69 more) ### Community 30 - "Editor Extensions Markdown Io" Cohesion: 0.04 -Nodes (60): isMarkdownClipboardCandidate(), MARKDOWN_PATTERNS, MarkdownClipboard, markdownClipboardPluginKey, closeMarkdownHistoryStep(), exitCodeBlock(), findListItemDepth(), HeadingLevel (+52 more) +Nodes (63): isMarkdownClipboardCandidate(), MARKDOWN_PATTERNS, MarkdownClipboard, markdownClipboardPluginKey, closeMarkdownHistoryStep(), exitCodeBlock(), findListItemDepth(), HeadingLevel (+55 more) ### Community 31 - "React Context Internal Use" -Cohesion: 0.02 -Nodes (228): AccessibleButton, AccessibleButtonProps, AccessibleIconButton, AccessibleIconButtonProps, AccessibleInput, AccessibleInputProps, AccessibleTextarea, AccessibleTextareaProps (+220 more) +Cohesion: 0.03 +Nodes (118): SkeletonAvatar, SkeletonAvatarProps, SkeletonButton, SkeletonButtonProps, SkeletonCard, SkeletonCardProps, SkeletonText, SkeletonTextProps (+110 more) ### Community 32 - "Social Importers Instagram Registry" -Cohesion: 0.05 -Nodes (92): createSourceRecord(), createStagedNode(), claudeAdapter, mapClaudeConversation(), mapClaudeConversations(), mapClaudeFiles(), mapClaudeProfile(), mapClaudeProject() (+84 more) +Cohesion: 0.04 +Nodes (105): createSourceRecord(), createStagedNode(), ImportBucket, claudeAdapter, createProjectDocRecords(), isoOrUndefined(), mapClaudeConversation(), mapClaudeConversations() (+97 more) ### Community 33 - "Hub Sqlite Interface Storage" -Cohesion: 0.05 -Nodes (64): BackupConfig, BackupError, BackupResult, DEFAULT_CONFIG, IndexAck, IndexUpdate, isQueryRequestTooLarge(), QueryService (+56 more) +Cohesion: 0.04 +Nodes (66): DEFAULT_CONFIG, DiscoveryConfig, DiscoveryService, ENDPOINT_TYPES, normalizeEndpoints(), RegisterInput, IndexAck, IndexUpdate (+58 more) ### Community 34 - "Ui Responsive Sidebar Contrast" -Cohesion: 0.09 -Nodes (37): clearCompletedSocialImportJobs(), createSocialImportJob(), createSocialImportJobCheckpointAccumulator(), createSocialImportJobId(), CreateSocialImportJobInput, getSocialImportJobsById(), getSocialImportJobsChannel(), getSocialImportJobsStorage() (+29 more) +Cohesion: 0.06 +Nodes (55): clampRatio(), createCanvasEdgeEndpoint(), createCanvasObjectAnchorId(), EDGE_ANCHOR_PLACEMENTS, formatRatio(), getPageAnchorSegment(), getPositiveInteger(), getRectCenter() (+47 more) ### Community 35 - "Plugins Ai Workspace Exporter" -Cohesion: 0.05 -Nodes (57): AiMutationPlan, AiWorkspaceChangedFile, AiWorkspaceChangedFileStatus, AiWorkspaceConflict, AiWorkspaceConflictKind, AiWorkspaceExporterConfig, AiWorkspaceExportKind, AiWorkspaceExportOptions (+49 more) +Cohesion: 0.18 +Nodes (3): createAiSurfaceService(), MCPServer, toMCPTool() ### Community 36 - "Plugins Service Ai Surface" Cohesion: 0.06 -Nodes (40): AiSurfaceService, applyDatabaseQueryDescriptorFallback(), clampLimit(), classifyDatabaseOperations(), createResource(), databaseMutationChangeSets(), databaseMutationRisk(), databaseMutationScopes() (+32 more) +Nodes (39): AiSurfaceService, applyDatabaseQueryDescriptorFallback(), clampLimit(), classifyDatabaseOperations(), createResource(), databaseMutationChangeSets(), databaseMutationRisk(), databaseMutationScopes() (+31 more) ### Community 37 - "Social Reddit Ids Create" -Cohesion: 0.08 -Nodes (13): CachedEdge, createEdgeRenderer(), DEFAULT_EDGE_STYLE, EdgeRenderer, EdgeRendererViewport, expandRect(), hashCode(), intersects() (+5 more) +Cohesion: 0.06 +Nodes (30): FilterBuilder(), FilterBuilderProps, FilterValueInputProps, createCellKey(), isDatabaseAnchorOrphaned(), parseCellKey(), UseDatabaseCommentsOptions, UseDatabaseCommentsResult (+22 more) ### Community 38 - "Plugins Page Markdown Validation" @@ -2544,7 +2575,7 @@ Nodes (62): findJsonPayloadEnd(), getXNetMarkdownDirectiveSpecs(), isRecord(), p ### Community 39 - "Sync Yjs Authorized Peer" Cohesion: 0.04 -Nodes (58): CachedPeerDecision, decryptYjsState(), deserializeEncryptedYjsState(), EncryptedYjsState, EncryptedYjsStateWire, encryptYjsState(), serializeEncryptedYjsState(), DID_A (+50 more) +Nodes (84): autoDeserialize(), checkAndLogDeprecations(), checkDeprecations(), clearLoggedDeprecations(), configureDeprecationPolicy(), createWarning(), DEPRECATION_POLICY, DeprecationCallback (+76 more) ### Community 40 - "Plugins Providers Runtime Ai" @@ -2569,42 +2600,42 @@ Nodes (22): createMockServiceClient(), createServiceClient(), getIPC(), isServic ### Community 44 - "Data Field Operations View" Cohesion: 0.09 -Nodes (20): CommitProgress, CommitProgressPanel(), CommitProgressPhase, CommitSummary, emptyCommitProgressMetrics(), formatByteSize(), formatDuration(), formatMilliseconds() (+12 more) +Nodes (25): bucketPatterns, ClaudeAttachment, ClaudeBucketPattern, ClaudeCitation, ClaudeContentBlock, ClaudeConversation, ClaudeFileRef, ClaudeMessage (+17 more) ### Community 45 - "Abuse Classifier Cascade Cloud" -Cohesion: 0.07 -Nodes (46): classifyWithModerationCascade(), CloudReviewCallReason, CloudReviewRouteDecision, CloudReviewSkipReason, createCascadeResult(), decideCloudReviewRoute(), hasNoLocalSignals(), localQualityRisk() (+38 more) +Cohesion: 0.06 +Nodes (60): classifyWithModerationCascade(), CloudReviewCallReason, CloudReviewRouteDecision, CloudReviewSkipReason, createCascadeResult(), decideCloudReviewRoute(), hasNoLocalSignals(), localQualityRisk() (+52 more) ### Community 46 - "Views Property Handler Editor" -Cohesion: 0.02 -Nodes (65): FilterBuilder(), FilterBuilderProps, FilterValueInputProps, options, createCellKey(), isDatabaseAnchorOrphaned(), parseCellKey(), UseDatabaseCommentsOptions (+57 more) +Cohesion: 0.04 +Nodes (38): options, checkboxHandler, dateHandler, DateRangeConfig, dateRangeHandler, DateRangeValue, emailHandler, builtinHandlers (+30 more) ### Community 47 - "React Use Node Store" -Cohesion: 0.06 -Nodes (44): useCell(), UseCellOptions, UseCellResult, DatabaseRow, useDatabase(), UseDatabaseOptions, UseDatabaseResult, useDatabaseDoc() (+36 more) +Cohesion: 0.04 +Nodes (71): CanvasDatabasePreviewSurface(), did, trace, AuthTraceSummary, ChangeEventLike, summarizeAuthTrace(), useAuthTrace(), UseAuthTraceOptions (+63 more) ### Community 48 - "Canvas Core Synthetic Moves" Cohesion: 0.07 -Nodes (45): CanvasObjectKind, Point, Rect, CanvasLodTier, CanvasObjectSummary, chooseObjectLod(), ChooseObjectLodInput, LodBudgets (+37 more) +Nodes (44): CanvasObjectKind, Point, Rect, CanvasLodTier, CanvasObjectSummary, chooseObjectLod(), ChooseObjectLodInput, LodBudgets (+36 more) ### Community 49 - "Ui Comments Catalog Stories" -Cohesion: 0.09 -Nodes (19): bucketPatterns, createPlaylistCollection(), createPlaylistItemRecords(), createVideoContentNode(), createYouTubeVideoContentId(), findEntry(), isoOrUndefined(), isRecord() (+11 more) +Cohesion: 0.06 +Nodes (44): CANVAS_SCENE_NODE_KINDS, createImportedEdgeStyle(), createImportedNode(), createJsonCanvasBaseNode(), createXNetEdgeMetadata(), createXNetNodeMetadata(), ExportCanvasToJsonCanvasInput, exportEdgeToJsonCanvas() (+36 more) ### Community 50 - "Editor Rich Text Ux" -Cohesion: 0.07 -Nodes (64): setupDatabase(), SetupDatabaseResult, createField(), createSelectOption(), deleteField(), deleteSelectOption(), duplicateField(), getDatabaseSelectOptions() (+56 more) +Cohesion: 0.08 +Nodes (56): setupDatabase(), SetupDatabaseResult, createField(), createSelectOption(), deleteField(), deleteSelectOption(), duplicateField(), getDatabaseSelectOptions() (+48 more) ### Community 51 - "Canvas Frame Export Create" -Cohesion: 0.06 -Nodes (33): Column, DataTable(), DataTableProps, builtinCommands, commandPaletteCommands, metricColumns, MetricRow, metricRows (+25 more) +Cohesion: 0.09 +Nodes (19): bucketPatterns, createPlaylistCollection(), createPlaylistItemRecords(), createVideoContentNode(), createYouTubeVideoContentId(), findEntry(), isoOrUndefined(), isRecord() (+11 more) ### Community 52 - "Canvas Persistence Drawing Tool" @@ -2613,8 +2644,8 @@ Nodes (40): DrawingToolController, drawPath(), drawPaths(), generateId(), Drawin ### Community 53 - "Abuse Decision Adapters Telemetry" -Cohesion: 0.06 -Nodes (31): CanvasViewCommandState, CanvasViewHandle, SavedViewCanvasFrameInput, SECTIONS, SettingsSection, SettingsSectionConfig, SettingsView(), SettingsViewProps (+23 more) +Cohesion: 0.03 +Nodes (113): CanvasView, CanvasViewProps, CanvasNodeCardActions, CanvasPageStaticPreviewCard(), CanvasPeekState, CanvasQueryFrameTarget, CanvasResolvedObject, CanvasSavedViewQueryFrameExecutor() (+105 more) ### Community 54 - "Canvas Orthogonal Router Point" @@ -2623,18 +2654,18 @@ Nodes (19): BundleConfig, BundledEdge, CanvasEdge, createEdgeBundler(), DEFAULT_ ### Community 55 - "Data Bridge Worker Sync" -Cohesion: 0.09 +Cohesion: 0.08 Nodes (15): handler, QueryPageOptions, SyncStatus, createWorkerBridge(), MirrorDocEntry, UpdateBatcher, DataWorker, PoolEntry (+7 more) ### Community 56 - "Hub Server Node Relay" -Cohesion: 0.05 -Nodes (43): actionAllows(), hasHubCapability(), resourceAllows(), authenticateConnection(), authenticateHttpRequest(), AuthSession, createAnonymousSession(), createAuthContext() (+35 more) +Cohesion: 0.04 +Nodes (58): actionAllows(), hasHubCapability(), resourceAllows(), authenticateConnection(), authenticateHttpRequest(), AuthSession, createAnonymousSession(), createAuthContext() (+50 more) ### Community 57 - "Data View Save Template" -Cohesion: 0.08 -Nodes (43): ColumnType, createQueryRouter(), DEFAULT_ROUTER_CONFIG, QueryRouter, QueryRouterConfig, QueryRouterResult, QuerySource, RouteOptions (+35 more) +Cohesion: 0.11 +Nodes (36): ColumnType, QueryOptions, CreateViewOptions, ViewNode, FilterGroup, SortConfig, ViewType, InferredColumn (+28 more) ### Community 58 - "Identity Key Bundle Create" @@ -2663,8 +2694,8 @@ Nodes (71): DEFAULT_KEYBOARD_THRESHOLDS, deriveKeyboardState(), deriveSelectionS ### Community 63 - "Data Bridge Remote Query" -Cohesion: 0.07 -Nodes (53): MainThreadBridgeOptions, RemoteNodeQueryAuth, RemoteNodeQueryClient, RemoteNodeQueryClientState, RemoteNodeQueryInvalidationController, RemoteNodeQueryInvalidationObserver, RemoteNodeQueryInvalidationReason, RemoteNodeQueryRequest (+45 more) +Cohesion: 0.06 +Nodes (58): createMainThreadBridge(), MainThreadBridgeOptions, RemoteNodeQueryAuth, RemoteNodeQueryClient, RemoteNodeQueryClientState, RemoteNodeQueryErrorResponse, RemoteNodeQueryInvalidationController, RemoteNodeQueryInvalidationObserver (+50 more) ### Community 64 - "Editor Document Compat Core" @@ -2689,27 +2720,27 @@ Nodes (54): SocialActor, SocialActorSchema, SocialIdentityClaim, SocialIdentityC ### Community 68 - "Views Builtins Registry View" Cohesion: 0.05 -Nodes (85): ColumnConfig, DateColumnConfig, EmptyConfig, FileColumnConfig, FormulaColumnConfig, isAutoColumnType(), isComputedColumnType(), isNodeStoreColumnType() (+77 more) +Nodes (67): ColumnConfig, DateColumnConfig, EmptyConfig, FileColumnConfig, isAutoColumnType(), isComputedColumnType(), isNodeStoreColumnType(), isYDocColumnType() (+59 more) ### Community 69 - "Views Grid Surface State" -Cohesion: 0.13 -Nodes (31): ABUSE_LABELS, activeLabels(), appendReason(), applySafeOverride(), clamp01(), createDecision(), decideAbuse(), decideByFirstContact() (+23 more) +Cohesion: 0.11 +Nodes (25): TaskRoutesOptions, CheckSuitePayload, parseBranchTaskId(), ParsedTaskLinks, parseTaskLinks(), processCheckSuiteEvent(), processGithubEvent(), processPullRequestEvent() (+17 more) ### Community 70 - "Canvas Branches Conversion Creation" -Cohesion: 0.10 -Nodes (20): applyPublicPresenceNoise(), asPresenceVisibility(), asString(), bucketPresenceCount(), buildPresenceSummaryId(), createZeroPresenceSummaryProperties(), getPresenceNoisePolicy(), isPresenceSummaryNode() (+12 more) +Cohesion: 0.12 +Nodes (26): Block, BlockDefinition, BlockType, createBlock(), getRegisteredBlockTypes(), registerBlockType(), registry, validateBlock() (+18 more) ### Community 71 - "Hub Shards Shard Registry" Cohesion: 0.06 -Nodes (24): computeRange(), encoder, hashTerm(), ShardAssignment, ShardConfig, ShardRegistry, IndexableDocument, IngestResult (+16 more) +Nodes (26): computeRange(), encoder, hashTerm(), ShardAssignment, ShardConfig, ShardRegistry, IndexableDocument, IngestResult (+18 more) ### Community 72 - "Crypto Envelope Key Resolution" Cohesion: 0.06 -Nodes (76): CacheEntry, CacheStats, clearVerificationCache(), getVerificationCache(), setVerificationCache(), VerificationCache, VerificationCacheOptions, generateCursorColor() (+68 more) +Nodes (80): CacheEntry, CacheStats, clearVerificationCache(), getVerificationCache(), setVerificationCache(), VerificationCache, VerificationCacheOptions, generateCursorColor() (+72 more) ### Community 73 - "Devtools Dev Tools Event" @@ -2718,18 +2749,18 @@ Nodes (54): STORE_EVENT_TYPES, AbuseLabelEvent, AbusePeerScoresEvent, AbusePendi ### Community 74 - "Hub Relay Sync Yjs" -Cohesion: 0.05 -Nodes (76): attestationPayloadV1(), AttestationVerificationResult, AttestationVerifyResult, ClientIdAttestation, ClientIdAttestationV1, ClientIdAttestationV2, ClientIdAttestationWire, ClientIdMap (+68 more) +Cohesion: 0.10 +Nodes (20): attestationPayloadV1(), AttestationVerificationResult, AttestationVerifyResult, ClientIdAttestation, ClientIdAttestationV1, ClientIdAttestationV2, ClientIdAttestationWire, ClientIdMap (+12 more) ### Community 75 - "Identity Ucan Create Share" -Cohesion: 0.11 -Nodes (28): UCANCapability, UCANToken, actionAllows(), capabilityAllows(), createHeader(), createPayload(), createSigningInput(), createUCAN() (+20 more) +Cohesion: 0.19 +Nodes (17): fromBase64Url(), toBase64Url(), buildCapabilities(), createShareToken(), parseAndVerifyShareLink(), ParsedShare, parseShareLink(), verifyShareToken() (+9 more) ### Community 76 - "Editor Rich Text Stories" Cohesion: 0.05 -Nodes (44): recordAttr(), parseSmartReferenceUrl(), SmartReference, SmartReferenceKind, Commands, metadataAttr(), parseMetadata(), SmartReferenceExtension (+36 more) +Nodes (39): parseSmartReferenceUrl(), SmartReference, SmartReferenceKind, SmartReferenceExtension, SmartReferenceOptions, UpdateSmartReferenceOptions, AWARENESS_SYNC_ORIGIN, boardView (+31 more) ### Community 77 - "Data Node Id Memory" @@ -2739,22 +2770,22 @@ Nodes (48): 0062 - Monorepo Release Automation, Appendix: Tool Installation Comm ### Community 78 - "React Use Node Identity" Cohesion: 0.16 -Nodes (10): BacklinksPanel(), Props, GlobalSearch(), BacklinkResult, IndexedPage, PageHandle, usePageSearchSurface(), UsePageSearchSurfaceOptions (+2 more) +Nodes (10): BacklinksPanel(), Props, PaletteEntry, BacklinkResult, IndexedPage, PageHandle, usePageSearchSurface(), UsePageSearchSurfaceOptions (+2 more) ### Community 79 - "Identity Key Bundle Entry" -Cohesion: 0.13 -Nodes (30): bundleCanSignAt(), bundleSecurityLevel(), bundleSize(), bundlesMatch(), createKeyBundleWithAttestation(), extractPublicKeys(), signWithBundle(), deserializeHybridKeyBundle() (+22 more) +Cohesion: 0.12 +Nodes (32): bundleCanSignAt(), bundleSecurityLevel(), bundleSize(), bundlesMatch(), createKeyBundleWithAttestation(), extractPublicKeys(), signWithBundle(), deserializeHybridKeyBundle() (+24 more) ### Community 80 - "Plugins Canvas Sandbox Script" -Cohesion: 0.05 -Nodes (59): ASTNode, ASTVisitors, FORBIDDEN_GLOBALS, FORBIDDEN_PROPERTIES, quickSafetyCheck(), validateScriptAST(), ValidationResult, walkAST() (+51 more) +Cohesion: 0.04 +Nodes (60): ASTNode, ASTVisitors, FORBIDDEN_GLOBALS, FORBIDDEN_PROPERTIES, quickSafetyCheck(), validateScriptAST(), ValidationResult, walkAST() (+52 more) ### Community 81 - "Data Dependency Formula Service" Cohesion: 0.08 -Nodes (39): createFormulaService(), FormulaService, FormulaValidationResult, buildDependencyGraph(), CircularCheckResult, collectDependencies(), DependencyGraph, detectCircularDependencies() (+31 more) +Nodes (41): ColumnDefinition, FormulaColumnConfig, createFormulaService(), FormulaService, FormulaValidationResult, buildDependencyGraph(), CircularCheckResult, collectDependencies() (+33 more) ### Community 82 - "Data Moderation Create Authorization" @@ -2769,27 +2800,27 @@ Nodes (44): 1. The SKILL.md (the whole primary interface costs ~this much), 2. C ### Community 84 - "Data Query Sqlite Adapter" Cohesion: 0.03 -Nodes (67): Commands, DATABASE_VIEW_TYPES, DatabaseEmbedExtension, DatabaseEmbedOptions, DatabaseEmbedSelectionRange, DatabaseViewType, getSelectedDatabaseEmbedRange(), insertParagraphAroundDatabaseEmbed() (+59 more) +Nodes (77): Commands, DATABASE_VIEW_TYPES, DatabaseEmbedExtension, DatabaseEmbedOptions, DatabaseEmbedSelectionRange, DatabaseViewType, getSelectedDatabaseEmbedRange(), insertParagraphAroundDatabaseEmbed() (+69 more) ### Community 85 - "Data Row Operations Scripts" -Cohesion: 0.09 -Nodes (42): cellKey(), columnIdFromKey(), DateRange, FileRef, fromCellProperties(), isCellKey(), isCellValue(), isDateRange() (+34 more) +Cohesion: 0.08 +Nodes (47): cellKey(), CellValue, columnIdFromKey(), DateRange, FileRef, fromCellProperties(), isCellKey(), isCellValue() (+39 more) ### Community 86 - "Web Social Import Worker" Cohesion: 0.06 -Nodes (45): BrowserSocialImportPreviewResult, BrowserSocialImportStageChunkInput, BrowserSocialImportStageChunkResult, BrowserSocialImportStageInput, clampInteger(), cleanupPendingWorkerRequest(), createStageId(), createStagePayload() (+37 more) +Nodes (44): BrowserSocialImportPreviewResult, BrowserSocialImportStageChunkInput, BrowserSocialImportStageChunkResult, BrowserSocialImportStageInput, clampInteger(), cleanupPendingWorkerRequest(), createStageId(), createStagePayload() (+36 more) ### Community 87 - "Electron Social Import Ipc" -Cohesion: 0.10 -Nodes (25): sendDataProcessRequest(), approvedArchivePaths, archiveDialogOptions, assertCommitJobNotCancelled(), cancelCommitJob(), cancelledCommitJobIds, commitJobs, createArchivePreview() (+17 more) +Cohesion: 0.06 +Nodes (30): A. Fixing invalidation-by-re-execution (finding 1), Architecture map, B. Per-query adapter overhead (finding 2), C. React identity churn (finding 3), Current State In The Repository, D. Write path (finding 4), E. Structural (findings 6–8), Ed25519 signing (+22 more) ### Community 88 - "Data Sqlite Adapter Query" -Cohesion: 0.03 -Nodes (53): extractSearchableContent(), applyNodeQueryDescriptor(), NodeQueryDescriptor, NodeQueryParityCheckMetadata, NodeQueryResult, NodeQuerySpatialFilter, NodeQueryStorageCapabilitiesMetadata, SortDirection (+45 more) +Cohesion: 0.02 +Nodes (56): deleteNodeFTS(), extractSearchableContent(), updateNodeFTS(), NodeQueryDescriptor, NodeQueryParityCheckMetadata, NodeQueryResult, NodeQuerySpatialFilter, NodeQueryStorageCapabilitiesMetadata (+48 more) ### Community 89 - "Ui Cn Devtools Catalog" @@ -2799,17 +2830,17 @@ Nodes (25): getBetterSqlite3(), ExpoSQLiteDatabase, ExpoSQLiteResult, ExpoSQLite ### Community 90 - "Editor Floating Toolbar Shortcuts" Cohesion: 0.09 -Nodes (42): booleanValue(), createSavedViewCanvasProjectionNodes(), createSavedViewVisualPreviewFingerprint(), creatorFor(), deriveCachedSavedViewVisualPreviews(), deriveSavedViewTimelineBuckets(), deriveSavedViewVisualPreview(), deriveSavedViewVisualPreviews() (+34 more) +Nodes (15): GlobalSearch(), CommandContext, CommandRegistry, CommandScope, eventToStep(), getCommandRegistry(), installCommandHandler(), isEditableTarget() (+7 more) ### Community 91 - "Sync Change Clock Yjs" Cohesion: 0.09 -Nodes (43): serializerRegistry, createTestChange(), ChainValidationResult, detectFork(), findCommonAncestor(), Fork, getAncestry(), getChainHeads() (+35 more) +Nodes (42): serializerRegistry, createTestChange(), ChainValidationResult, detectFork(), findCommonAncestor(), Fork, getAncestry(), getChainHeads() (+34 more) ### Community 92 - "Hub Crawl Coordinator Submit" -Cohesion: 0.07 -Nodes (18): XNetCrawler, clamp(), clamp01(), CrawlCoordinator, CrawlDomainPolicy, CrawlIngestionDecision, CrawlQualitySignals, crawlReferenceFingerprints() (+10 more) +Cohesion: 0.08 +Nodes (16): XNetCrawler, clamp(), clamp01(), CrawlCoordinator, CrawlDomainPolicy, CrawlIngestionDecision, CrawlQualitySignals, crawlReferenceFingerprints() (+8 more) ### Community 93 - "Editor Task Mention Extension" @@ -2819,22 +2850,22 @@ Nodes (32): TaskMentionMenu, TaskMentionMenuProps, TaskMentionMenuRef, TaskMenti ### Community 94 - "Canvas Tree Layout Manager" Cohesion: 0.08 -Nodes (28): CANVAS_MIND_MAP_TREE_LAYOUT_DEFAULTS, CanvasMindMapTreeLayoutDirection, CanvasMindMapTreeLayoutInput, CanvasMindMapTreeLayoutOptions, CanvasMindMapTreeLayoutResult, CanvasMindMapTreePositionUpdatesInput, createCanvasMindMapTreeLayoutRequest(), createCanvasMindMapTreePositionUpdates() (+20 more) +Nodes (27): CANVAS_MIND_MAP_TREE_LAYOUT_DEFAULTS, CanvasMindMapTreeLayoutDirection, CanvasMindMapTreeLayoutInput, CanvasMindMapTreeLayoutOptions, CanvasMindMapTreeLayoutResult, CanvasMindMapTreePositionUpdatesInput, createCanvasMindMapTreeLayoutRequest(), createCanvasMindMapTreePositionUpdates() (+19 more) ### Community 95 - "Storybook Xnet Plugins Browser" -Cohesion: 0.07 -Nodes (78): CANVAS_PLUGIN_FIXTURES, CanvasPluginFixture, CanvasPluginFixtureCardSample, CanvasPluginFixtureKind, createCanvasPluginFixtureCards(), createCanvasPluginFixtureManifests(), CRM_CANVAS_PLUGIN_FIXTURE, ERP_CANVAS_PLUGIN_FIXTURE (+70 more) +Cohesion: 0.05 +Nodes (101): CANVAS_PLUGIN_FIXTURES, CanvasPluginFixture, CanvasPluginFixtureCardSample, CanvasPluginFixtureKind, createCanvasPluginFixtureCards(), createCanvasPluginFixtureManifests(), CRM_CANVAS_PLUGIN_FIXTURE, ERP_CANVAS_PLUGIN_FIXTURE (+93 more) ### Community 96 - "Sqlite Diagnostics Fts Adapter" -Cohesion: 0.06 -Nodes (57): BrowserSupport, checkBrowserSupport(), checkPersistentStorage(), escapeHtml(), getPersistenceMessage(), isSafariPrivateBrowsing(), PersistentStorageRequestOptions, PersistentStorageStatus (+49 more) +Cohesion: 0.09 +Nodes (41): analyzeQuery(), analyzeTable(), canCreateVirtualTable(), checkIntegrity(), DatabaseStats, detectSQLiteCapabilities(), dropProbeTable(), explainQuery() (+33 more) ### Community 97 - "Plugins Process Manager Managed" -Cohesion: 0.14 -Nodes (29): createEncryptedEnvelope(), createSignatureMessage(), decryptEnvelopeContent(), EncryptedEnvelope, EnvelopeMetadata, generateContentKey(), generateX25519KeyPair(), isPublicEnvelope() (+21 more) +Cohesion: 0.13 +Nodes (29): createEncryptedEnvelope(), createSignatureMessage(), decryptEnvelopeContent(), EncryptedEnvelope, EnvelopeMetadata, generateX25519KeyPair(), isPublicEnvelope(), PUBLIC_CONTENT_KEY (+21 more) ### Community 98 - "Data Bridge Thread Query" @@ -2843,8 +2874,8 @@ Nodes (48): 1. Existing Tools in This Space, 2. Key Data Entities for Permacultu ### Community 99 - "React Saved View Visual" -Cohesion: 0.13 -Nodes (24): assertResolvedZip64Values(), BrowserZipArchiveManifestOptions, BrowserZipCentralDirectoryEntry, dosDateToIso(), findEndOfCentralDirectory(), getEntryDataStart(), hashZipEntry(), inflateRaw() (+16 more) +Cohesion: 0.14 +Nodes (22): assertResolvedZip64Values(), BrowserZipArchiveManifestOptions, BrowserZipCentralDirectoryEntry, dosDateToIso(), findEndOfCentralDirectory(), getEntryDataStart(), hashZipEntry(), inflateRaw() (+14 more) ### Community 100 - "Identity Package Exports Dependencies" @@ -2853,8 +2884,8 @@ Nodes (46): dependencies, multiformats, @noble/curves, @noble/post-quantum, @xne ### Community 101 - "React Onboarding Flow Provider" -Cohesion: 0.12 -Nodes (34): copyToClipboard(), getPlatformAuthName(), truncateDid(), createInitialState(), OnboardingEvent, OnboardingMachineContext, onboardingReducer(), OnboardingReducerState (+26 more) +Cohesion: 0.13 +Nodes (32): copyToClipboard(), getPlatformAuthName(), truncateDid(), createInitialState(), OnboardingEvent, OnboardingMachineContext, onboardingReducer(), OnboardingReducerState (+24 more) ### Community 102 - "Data Adversarial Evaluator Bench" @@ -2863,8 +2894,8 @@ Nodes (47): Advanced Type Safety, Authorization Schema DSL Variations: Three App ### Community 103 - "Data Package Exports Scripts" -Cohesion: 0.04 -Nodes (45): import, types, import, types, import, types, devDependencies, tsup (+37 more) +Cohesion: 0.08 +Nodes (25): import, types, import, types, import, types, exports, ./auth (+17 more) ### Community 104 - "Data View Operations Column" @@ -2874,12 +2905,12 @@ Nodes (41): columnMapToDefinition(), createColumn(), deleteColumn(), duplicateCo ### Community 105 - "Canvas Webgl Raster Tiles" Cohesion: 0.08 -Nodes (42): clamp(), createRasterTileDrawPlan(), createWebGLRasterTileRenderer(), DEFAULT_RASTER_TILE_CONFIG, getCrossfadeProgress(), measureRasterTileTexturePressure(), MeasureRasterTileTexturePressureInput, RasterTileDrawItem (+34 more) +Nodes (41): clamp(), createRasterTileDrawPlan(), createWebGLRasterTileRenderer(), DEFAULT_RASTER_TILE_CONFIG, getCrossfadeProgress(), measureRasterTileTexturePressure(), MeasureRasterTileTexturePressureInput, RasterTileDrawItem (+33 more) ### Community 106 - "Hub Schemas Validation Is" -Cohesion: 0.06 -Nodes (37): CrawlRoutesOptions, createCrawlRoutes(), Env, createFederationRoutes(), FederationRoutesOptions, parsePeerPayload(), createKeyRegistryRoutes(), isRegisterPayload() (+29 more) +Cohesion: 0.13 +Nodes (8): AwarenessConfig, AwarenessRoomState, AwarenessService, DEFAULT_CONFIG, extractUserDid(), toBytes(), withOnlineState(), withUserDid() ### Community 107 - "Sync Integrity Cli Doctor" @@ -2948,13 +2979,13 @@ Nodes (18): attachLogCollector(), CanvasFrameBudgetInput, CanvasPerformanceScene ### Community 120 - "React Use Tasks Task" -Cohesion: 0.06 -Nodes (21): schemaByType, MyTasksPanel(), getStartOfUtcDay(), isOverdue(), PageTasksPanel(), PageTasksPanelProps, RenderableTaskRow, DocType (+13 more) +Cohesion: 0.08 +Nodes (22): CanvasTaskInput, useCanvasTaskSync(), UseCanvasTaskSyncOptions, UseCanvasTaskSyncResult, PageTaskInput, PageTaskReferenceInput, UsePageTaskSyncOptions, UsePageTaskSyncResult (+14 more) ### Community 121 - "Data Schema Clone Resolver" -Cohesion: 0.10 -Nodes (36): cloneColumns(), cloneSampleRows(), cloneSchema(), CloneSchemaOptions, CloneSchemaResult, CloneSourceData, generateColumnIdMap(), remapFilterGroup() (+28 more) +Cohesion: 0.08 +Nodes (45): cloneColumns(), cloneSampleRows(), cloneSchema(), CloneSchemaOptions, CloneSchemaResult, CloneSourceData, generateColumnIdMap(), remapFilterGroup() (+37 more) ### Community 122 - "Editor Drag Drop Plugin" @@ -2973,8 +3004,8 @@ Nodes (37): AISignalProvenance, AISignalProvenanceInput, AISignalProvenanceValid ### Community 125 - "Sqlite Web Proxy Config" -Cohesion: 0.07 -Nodes (35): CanvasCardAuditEntry, CanvasCardAuditOperation, CanvasCardAuditSource, CanvasCardAuditSummary, CanvasCardAuditTrail(), CanvasCardAuditTrailProps, CanvasNormalizedCardAuditEntry, createCanvasCardAuditSummary() (+27 more) +Cohesion: 0.06 +Nodes (24): ActionDock(), ActionDockProps, DockMode, CanvasViewCommandState, CanvasViewHandle, SavedViewCanvasFrameInput, SECTIONS, SettingsSection (+16 more) ### Community 126 - "Expo App Navigator Database" @@ -2984,12 +3015,12 @@ Nodes (31): getEditorHTML(), MessageFromWebView, MessageToWebView, styles, WebVi ### Community 127 - "Hub Config Capabilities Resolve" Cohesion: 0.06 -Nodes (26): HUB_ACTION_MAP, HubAction, HubCapability, verifyHubCapability(), createHubAuthError(), HubAuthError, HubAuthErrorCode, registerShutdownHandlers() (+18 more) +Nodes (25): HUB_ACTION_MAP, HubAction, HubCapability, verifyHubCapability(), createHubAuthError(), HubAuthError, HubAuthErrorCode, registerShutdownHandlers() (+17 more) ### Community 128 - "Views View Config Use" -Cohesion: 0.20 -Nodes (16): BoardCard(), BoardCardProps, getTitlePropertyKey(), BoardColumn(), BoardColumnProps, BoardView(), BoardViewProps, BoardColumn (+8 more) +Cohesion: 0.04 +Nodes (41): CommentPopoverState, CREATABLE_FIELD_TYPES, DatabaseViewProps, FieldMenuState, CommentPopoverState, CREATABLE_FIELD_TYPES, DatabaseViewProps, FieldMenuState (+33 more) ### Community 129 - "Canvas Package Dev Dependencies" @@ -3004,7 +3035,7 @@ Nodes (29): buildWebSocketProtocols(), ConnectionStatus, CountNodesOptions, crea ### Community 131 - "Data Import Export Parser" Cohesion: 0.11 -Nodes (33): createCsvBlob(), CsvExportOptions, downloadCsv(), escapeCSV(), ExportRow, exportToCsv(), formatDate(), formatValue() (+25 more) +Nodes (32): createCsvBlob(), CsvExportOptions, downloadCsv(), escapeCSV(), ExportRow, exportToCsv(), formatDate(), formatValue() (+24 more) ### Community 132 - "Canvas Planning Templates Sticky" @@ -3014,7 +3045,7 @@ Nodes (46): 0096 [ _ ] Plan03 ERP Reality Check and Execution Reset, 00-01 (Over ### Community 133 - "Data Bridge Query Cache" Cohesion: 0.10 -Nodes (7): CacheEntry, QueryCache, QueryCacheOptions, queryDescriptorToOptions(), QueryMetadata, QueryOptions, TEST_SCHEMA_ID +Nodes (5): CacheEntry, QueryCache, QueryMetadata, QueryOptions, TEST_SCHEMA_ID ### Community 134 - "Devtools Abuse Panel Use" @@ -3034,7 +3065,7 @@ Nodes (29): AddSharedDialogProps, ShareButton(), ShareButtonProps, AddSharedInpu ### Community 137 - "Data Recipients Schema Auth" Cohesion: 0.02 -Nodes (127): LoopSchema, makeDid(), AuthMigrator, AuthMigratorSchemaRegistry, AuthMigratorStore, EncryptionLayer, MigrationError, MigrationOptions (+119 more) +Nodes (121): LoopSchema, makeDid(), AuthMigrator, AuthMigratorSchemaRegistry, AuthMigratorStore, EncryptionLayer, MigrationError, MigrationOptions (+113 more) ### Community 138 - "Hub Package Dependencies Dev" @@ -3048,23 +3079,23 @@ Nodes (35): assertResolvedZip64Values(), createZipJsonEntryReader(), createZipTe ### Community 140 - "Canvas Edge Renderer Update" -Cohesion: 0.05 -Nodes (40): CanvasNodeComponent, getHandleCursor(), getHandleStyle(), getNodeAccessibleLabel(), getNodeColor(), getNodeTitle(), getNodeTypeLabel(), NodeRemoteUser (+32 more) +Cohesion: 0.06 +Nodes (42): CanvasQueryFrameResultCard, canDragQueryResultCard(), CanvasPrimitiveNodeContent(), createQueryResultCardDragStart(), getFrameLanes(), getShapeType(), viewport, toShapeNodeData() (+34 more) ### Community 141 - "Social Suggestion Read String" Cohesion: 0.09 -Nodes (38): attentionBursts(), bridgeActors(), CountBucket, createSocialPatternDefinitions(), creatorKey(), creatorLabel(), crossSourceOverlap(), dateBucketKey() (+30 more) +Nodes (39): attentionBursts(), bridgeActors(), CountBucket, createSocialPatternDefinitions(), createSocialPatternSavedViewDraft(), creatorKey(), creatorLabel(), crossSourceOverlap() (+31 more) ### Community 142 - "Abuse Query Cost Budget" -Cohesion: 0.07 -Nodes (36): CloudReviewCallPolicy, AbuseDeploymentProfile, AbuseDeploymentProfileInput, AbuseDeploymentProfileKind, createDeploymentBudgetHints(), createPublicSearchHubAbuseProfile(), createSmallSelfHostedAbuseProfile(), HubPolicyBudgetHint (+28 more) +Cohesion: 0.08 +Nodes (35): CloudReviewCallPolicy, AbuseDeploymentProfile, AbuseDeploymentProfileInput, AbuseDeploymentProfileKind, createDeploymentBudgetHints(), createPublicSearchHubAbuseProfile(), createSmallSelfHostedAbuseProfile(), HubPolicyBudgetHint (+27 more) ### Community 143 - "React Use Saved View" -Cohesion: 0.11 -Nodes (18): did, trace, ChangeEventLike, INITIAL_STATE, useCan(), UseCanResult, ChangeEventLike, INITIAL_STATE (+10 more) +Cohesion: 0.07 +Nodes (37): CANVAS_STICKY_NOTE_COLOR_PRESETS, CanvasStickyNoteColor, CanvasStickyNotePromotionDraft, CanvasStickyNotePromotionTarget, createCanvasStickyNoteNode(), CreateCanvasStickyNoteNodeInput, createCanvasStickyNotePromotionDraft(), createCanvasStickyNoteProperties() (+29 more) ### Community 144 - "Social Openai Map Open" @@ -3073,8 +3104,8 @@ Nodes (33): arrayFromUnknown(), bucketPatterns, cleanString(), cleanUrl(), colle ### Community 145 - "Data Bridge Native Create" -Cohesion: 0.07 -Nodes (16): CreateBridgeOptions, createDataBridge(), createMainThreadBridgeSync(), createWorkerBridgeSync(), isNodeEnvironment(), isWorkerSupported(), createNativeBridge(), isExpo() (+8 more) +Cohesion: 0.11 +Nodes (26): createNativeBridge(), isExpo(), isReactNative(), NativeBridgeConfig, NativeStorageAdapter, QueryCacheOptions, applyNodeChangeToQueryResult(), applyQueryDescriptor() (+18 more) ### Community 146 - "Plugins Package Dev Dependencies" @@ -3093,13 +3124,13 @@ Nodes (39): dependencies, @dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities, ### Community 149 - "Data Bridge Thread Query" -Cohesion: 0.08 -Nodes (8): BenchTaskSchema, setupBridge(), testDID, MainThreadBridge, applyNodeChangeToQueryResult(), shouldUseRemoteOnlyQuery(), RemoteNodeQueryInvalidationSubscription, RemoteNodeQueryStreamSubscription +Cohesion: 0.07 +Nodes (7): BenchTaskSchema, setupBridge(), testDID, MainThreadBridge, RemoteNodeQueryInvalidation, RemoteNodeQueryInvalidationSubscription, RemoteNodeQueryStreamSubscription ### Community 150 - "Editor Items Slash Command" -Cohesion: 0.08 -Nodes (24): SlashCommandContribution, useSlashCommands(), UseSlashCommandsOptions, SlashCommand, SlashCommandOptions, slashCommandPluginKey, rendererState, suggestionMock (+16 more) +Cohesion: 0.10 +Nodes (21): SlashCommand, SlashCommandOptions, slashCommandPluginKey, rendererState, suggestionMock, SuggestionOptions, SuggestionRenderProps, tippyInstanceMock (+13 more) ### Community 151 - "Devtools Package Dev Dependencies" @@ -3108,8 +3139,8 @@ Nodes (38): default, dependencies, @xnetjs/history, @xnetjs/sqlite, @xnetjs/ui, ### Community 152 - "Social Tiktok Map Tik" -Cohesion: 0.12 -Nodes (26): Block, BlockDefinition, BlockType, createBlock(), getRegisteredBlockTypes(), registerBlockType(), registry, validateBlock() (+18 more) +Cohesion: 0.06 +Nodes (33): Architecture, Charting libraries, Current State In The Repository, Dashboard Builder With Pluggable Widgets, Data model, Example Code, Executive Summary, External Research (+25 more) ### Community 153 - "Network Package Dependencies Scripts" @@ -3123,8 +3154,8 @@ Nodes (39): Schema-Agnostic Comment Rationale, Schema-Agnostic Comment Schema, E ### Community 155 - "Web Route Tree Gen" -Cohesion: 0.07 -Nodes (28): Route, Route, Route, Route, DocInfo, DocType, Route, Route (+20 more) +Cohesion: 0.06 +Nodes (31): WorkspaceCommands(), Route, Route, Route, Route, DocInfo, DocType, Route (+23 more) ### Community 156 - "Network Logging Auto Blocker" @@ -3148,8 +3179,8 @@ Nodes (37): dependencies, expo, expo-secure-store, expo-splash-screen, expo-sqli ### Community 160 - "Network Node Sync Ywebrtc" -Cohesion: 0.09 -Nodes (36): SyncMessageV2, SyncProtocol, SyncProtocolConfig, createYWebRTCProvider(), getConnectedPeers(), isConnected(), onPeersChange(), YWebRTCOptions (+28 more) +Cohesion: 0.12 +Nodes (29): createYWebRTCProvider(), getConnectedPeers(), isConnected(), onPeersChange(), YWebRTCOptions, YWebRTCProvider, connectToPeer(), createNode() (+21 more) ### Community 161 - "Network Rate Limiter Sync" @@ -3158,8 +3189,8 @@ Nodes (3): ProtocolRateLimiter, SyncRateLimiter, TokenBucket ### Community 162 - "Abuse Usage Events Create" -Cohesion: 0.10 -Nodes (37): ABUSE_USAGE_EVENT_KINDS, ABUSE_USAGE_SETTLEMENTS, AbuseDecisionUsageInput, AbuseUsageEvent, AbuseUsageEventInput, AbuseUsageEventKind, AbuseUsageEventSummary, AbuseUsageSettlement (+29 more) +Cohesion: 0.09 +Nodes (40): HashAlgorithm, hashBase64(), hashAbusePeerIdentifier(), ABUSE_USAGE_EVENT_KINDS, ABUSE_USAGE_SETTLEMENTS, AbuseDecisionUsageInput, AbuseUsageEvent, AbuseUsageEventInput (+32 more) ### Community 163 - "React Web Socket Sync" @@ -3169,27 +3200,27 @@ Nodes (14): AwarenessSnapshotUser, deserializeEnvelope(), fromBase64(), hasEnvel ### Community 164 - "Web App Browser Storage" Cohesion: 0.07 -Nodes (13): BundledPluginInstaller(), InstallPluginDialogProps, PluginCardProps, PluginManager(), BundledPluginInstaller(), InstallPluginDialogProps, PluginCardProps, PluginManager() (+5 more) +Nodes (24): addUnique(), applyPage(), CompiledSavedViewQuery, compileSavedViewQuery(), EMPTY_PAGE_INFO, EMPTY_SAVED_VIEW_OPTIONS, EMPTY_VALIDATION, errorForQueries() (+16 more) ### Community 165 - "Web Canvas Ingestion Data" Cohesion: 0.07 -Nodes (18): cell(), setupDatabase(), setupDatabase(), connectCanvasNodes(), dragCanvasNode(), dragCanvasResizeHandle(), selectCanvasNode(), waitForCanvasShell() (+10 more) +Nodes (17): cell(), setupDatabase(), connectCanvasNodes(), dragCanvasNode(), dragCanvasResizeHandle(), selectCanvasNode(), waitForCanvasShell(), CanvasFrameBudgetInput (+9 more) ### Community 166 - "Social Browser Ids Archive" -Cohesion: 0.11 -Nodes (9): createDiscoveryRoutes(), DiscoveryRoutesOptions, DEFAULT_CONFIG, DiscoveryConfig, DiscoveryError, DiscoveryService, ENDPOINT_TYPES, normalizeEndpoints() (+1 more) +Cohesion: 0.09 +Nodes (22): AccessibleInput, AccessibleInputProps, AccessibleTextarea, AccessibleTextareaProps, defaultStorage, PluginPanelProps, PluginSettingsPanel, SectionDef (+14 more) ### Community 167 - "Abuse Policy Blocks Verify" -Cohesion: 0.19 -Nodes (18): cancelCanvasPreviewJob(), CanvasPreviewQueueClaimResult, CanvasPreviewQueueFailureOptions, CanvasPreviewQueueJob, CanvasPreviewQueueJobInput, CanvasPreviewQueueJobStatus, CanvasPreviewQueueState, claimNextCanvasPreviewJob() (+10 more) +Cohesion: 0.08 +Nodes (32): activePolicyBlockEntries(), auditPolicyBlockEntries(), canonicalizePolicyBlockList(), createPolicyBlockList(), encoder, findPolicyBlockAuditEntry(), findPolicyBlockEntry(), isRecord() (+24 more) ### Community 168 - "Canvas Swimlane Manager Node" -Cohesion: 0.08 -Nodes (19): positionToItem(), rectToSearchBox(), SpatialIndex, CanvasNodePosition, createSwimlaneManager(), SwimlaneManager, SwimlaneNodeComponent, SwimlaneNodeProps (+11 more) +Cohesion: 0.15 +Nodes (15): createSwimlaneManager(), SwimlaneManager, SwimlaneNodeComponent, SwimlaneNodeProps, ContentBounds, DEFAULT_SWIMLANE_CONFIG, GenericCanvasNode, getContentBounds() (+7 more) ### Community 169 - "Plugins Runtime Ai Agent" @@ -3213,8 +3244,8 @@ Nodes (15): DEFAULT_OPTIONS, DocumentDiffResult, DocumentHistoryEngine, Document ### Community 173 - "Canvas Core Summary Workers" -Cohesion: 0.12 -Nodes (16): defaultStorage, PluginPanelProps, PluginSettingsPanel, SectionDef, SECTIONS, SettingsPanelProps, SettingsRow(), SettingsSection (+8 more) +Cohesion: 0.08 +Nodes (49): MiniPaletteOption, TaskMiniPalette(), TaskMiniPaletteProps, PRIORITY_OPTIONS, STATUS_OPTIONS, TasksMode, TasksTab, WORKFLOW_ORDER (+41 more) ### Community 174 - "Web Data Workspace View" @@ -3238,8 +3269,8 @@ Nodes (35): Calibrated Fallow Adoption, Canonical Data With Competitive Service ### Community 178 - "Hub Create Instance Awareness" -Cohesion: 0.11 -Nodes (15): Commands, createPageEmbedAttrs(), createPageEmbedMarkdownPayload(), normalizeText(), PageEmbedAttrs, PageEmbedExtension, PageEmbedMarkdownAttrs, PageEmbedOptions (+7 more) +Cohesion: 0.07 +Nodes (52): AbuseAdapterResult, AbuseDecisionFunction, AbuseFactAdapter, createAbuseDecisionAdapter(), createAbuseFactAdapter(), createRemoteAdmissionPipeline(), decideWithAdapter(), RemoteAdmissionPipeline (+44 more) ### Community 179 - "X Net Hybrid Sync" @@ -3249,7 +3280,7 @@ Nodes (36): xNet Hub Server Infrastructure, Chat and Video Architecture, Mastodo ### Community 180 - "Hub Ucan Files File" Cohesion: 0.10 -Nodes (18): BENCH_AUTHOR_DID, BENCH_SCHEMA_ID, CountRow, createSeededBenchmarkStore(), maxNodeCount, nextMutationNode(), queryBenchmarkCases, SeededBenchmarkStore (+10 more) +Nodes (37): clearCompletedSocialImportJobs(), createSocialImportJob(), createSocialImportJobId(), CreateSocialImportJobInput, getSocialImportJobsById(), getSocialImportJobsChannel(), getSocialImportJobsStorage(), initializeSocialImportJobsChannel() (+29 more) ### Community 181 - "Canvas Core Interest Tiles" @@ -3263,18 +3294,23 @@ Nodes (13): Listener, ChangeHandlerRegistry, createTestContext(), EventListener, ### Community 183 - "Abuse Citation Coverage Extract" -Cohesion: 0.09 -Nodes (29): CitationKind, citationKindPriority(), CitationReference, ClaimCitationCoverageAssessment, ClaimCitationCoverageInput, ClaimCitationCoverageOptions, clamp(), compareCitationPriority() (+21 more) +Cohesion: 0.10 +Nodes (28): CitationKind, citationKindPriority(), CitationReference, ClaimCitationCoverageAssessment, ClaimCitationCoverageInput, ClaimCitationCoverageOptions, clamp(), compareCitationPriority() (+20 more) ### Community 184 - "Devtools Telemetry Panel Use" Cohesion: 0.08 Nodes (16): CrashEventEntry(), formatRelativeTime(), SecurityEventEntry(), TelemetryPanel(), computeNetworkHealth(), computePerformanceGroups(), ConsentState, CrashEntry (+8 more) +### Community 185 - "Data Evaluator Default Policy" + +Cohesion: 0.14 +Nodes (21): getAllowedEmbedPolicy(), cloneProviderPolicy(), DESIGN_IFRAME_ATTRIBUTES, EMBED_REGISTRY_PROVIDER_POLICIES, EmbedRegistryIframeSecurityAttributes, EmbedRegistryPolicyDecision, EmbedRegistryProvider, EmbedRegistryProviderPolicy (+13 more) + ### Community 186 - "Ui Responsive Dialog Modal" -Cohesion: 0.09 -Nodes (29): createFederatedQueryRouter(), FederatedQueryRouter, createLocalQueryEngine(), LocalQueryEngine, matchesFilter(), matchesFilters(), Filter, FilterOperator (+21 more) +Cohesion: 0.29 +Nodes (9): createFederatedQueryRouter(), FederatedQueryRouter, Filter, FilterOperator, Query, QueryResult, QueryType, SearchQuery (+1 more) ### Community 187 - "History Package Scripts Dependencies" @@ -3283,8 +3319,8 @@ Nodes (32): dependencies, @xnetjs/core, @xnetjs/data, @xnetjs/sync, yjs, descrip ### Community 188 - "Social Claude Map Message" -Cohesion: 0.17 -Nodes (11): SystemSchemaFederationAppProps, createClient(), CreateClientOptions, SdkTelemetry, XNetClient, createSchemaDiscovery(), SchemaDiscovery, SchemaDiscoveryOptions (+3 more) +Cohesion: 0.14 +Nodes (24): createIdentity(), setup(), createIdentity(), createIdentity(), createTestStore(), createTestStore(), createTestStore(), createTestStore() (+16 more) ### Community 189 - "Electron Ipc Node Storage" @@ -3309,7 +3345,7 @@ Nodes (4): UndoEntry, UndoManagerOptions, TelemetryReporter, UndoManager ### Community 193 - "Data Awareness Registry Updates" Cohesion: 0.17 -Nodes (19): cloneDefaultTaskViewConfig(), Commands, DEFAULT_TASK_VIEW_CONFIG, mergeTaskViewConfig(), parseTaskViewConfig(), TaskViewAssigneeFilter, TaskViewDueDateFilter, TaskViewEmbedExtension (+11 more) +Nodes (20): cloneDefaultTaskViewConfig(), Commands, DEFAULT_TASK_VIEW_CONFIG, mergeTaskViewConfig(), parseTaskViewConfig(), TaskViewAssigneeFilter, TaskViewConfig, TaskViewDueDateFilter (+12 more) ### Community 194 - "Editor Embed Extension Node" @@ -3318,8 +3354,8 @@ Nodes (28): AGENTS.md - Coding Agent Guidelines, Build & Test Commands, Bypassin ### Community 195 - "Social Youtube Create Playlist" -Cohesion: 0.16 -Nodes (19): CanvasViewProps, CanvasMediaCard(), createPdfPlaceholderThumbnail(), escapeSvgText(), formatFileSize(), getMediaFileRef(), getMediaObjectFit(), getNumberProperty() (+11 more) +Cohesion: 0.12 +Nodes (17): addObjectToDensity(), CANVAS_OBJECT_KINDS, CanvasTileSummaryEdge, CanvasTileSummaryObject, createCanvasTileSummaries(), CreateCanvasTileSummariesInput, createCanvasTileSummaryCacheKey(), createEmptyCanvasTileSummary() (+9 more) ### Community 196 - "Canvas Css Grid Fallback" @@ -3338,13 +3374,8 @@ Nodes (32): Yjs Awareness Cursor Presence, Selection Presence and Edit Locking, ### Community 199 - "Scripts Benchmark Social Batch" -Cohesion: 0.08 -Nodes (35): createElectronSQLiteAdapter(), cleanupDb(), getTestDbPath(), isNativeSQLiteLoadError(), probeNativeSQLite(), createMemorySQLiteAdapter(), addStorageTotals(), addTimingTotals() (+27 more) - -### Community 200 - "Plugins Local Api Apiserver" - -Cohesion: 0.08 -Nodes (20): AiSurfaceLimits, BufferedEvent, constantTimeCompare(), createLocalAPI(), EventBuffer, hasAllAiScopes(), hasLocalScope(), LOCAL_API_TOKEN_SCOPES (+12 more) +Cohesion: 0.09 +Nodes (28): addStorageTotals(), addTimingTotals(), BenchmarkError, BenchmarkOptions, BenchmarkReport, BenchmarkResult, BenchmarkRuntime, benchmarkRuntimeSafely() (+20 more) ### Community 201 - "Data External Reference Metadata" @@ -3353,13 +3384,13 @@ Nodes (28): createResolvedMetadata(), decodeHtmlEntities(), ExternalReferenceMet ### Community 202 - "Canvas Saved Layouts Create" -Cohesion: 0.12 -Nodes (27): calculateBounds(), CANVAS_SAVED_LAYOUT_VALUES, CanvasSavedLayoutDefinition, CanvasSavedLayoutDirection, CanvasSavedLayoutKind, CanvasSavedLayoutOptions, CanvasSavedLayoutPlan, CanvasSavedLayoutState (+19 more) +Cohesion: 0.05 +Nodes (61): CanvasFrameExportDocument, CanvasFrameExportFormat, createCanvasFrameExportDocument(), CreateCanvasFrameExportDocumentInput, getCanvasFrameExportEdges(), getCanvasFrameExportMembers(), getFrameTitle(), getNodeRect() (+53 more) ### Community 203 - "Canvas Core Camera Coordinates" -Cohesion: 0.07 -Nodes (51): createCanvasCameraForViewport(), getScreenPointForCanvasPoint(), getScreenRectForCanvasRect(), getObjectTileId(), getObjectTileIdFromRect(), CanvasCameraState, createCanvasCamera(), CreateCanvasCameraInput (+43 more) +Cohesion: 0.16 +Nodes (22): createCanvasCameraForViewport(), getScreenLineForSnapGuide(), getScreenPointForCanvasPoint(), getScreenRectForCanvasRect(), getScreenRectForObject(), CanvasCameraState, createCanvasCamera(), CreateCanvasCameraInput (+14 more) ### Community 204 - "Canvas Source Bulk Operations" @@ -3378,8 +3409,8 @@ Nodes (29): AllValuesOf, AnyEntryMap, CollectionEntry, CollectionKey, ContentCol ### Community 207 - "Electron App Settings View" -Cohesion: 0.12 -Nodes (25): CanvasSourceBackedCardRef, CanvasSourceBulkExternalAction, CanvasSourceBulkNodeUpdate, CanvasSourceBulkOperation, CanvasSourceBulkOperationDefinition, CanvasSourceBulkOperationKind, CanvasSourceBulkOperationPlan, createCanvasSourceBulkOperationDefinitions() (+17 more) +Cohesion: 0.09 +Nodes (30): maxWidthClasses, ResponsiveDialog(), ResponsiveDialogContent(), ResponsiveDialogContentProps, ResponsiveDialogProps, ResponsiveDialogRoot(), ResponsiveDialogRootProps, useIsDesktop() (+22 more) ### Community 208 - "Electron Social Import View" @@ -3389,7 +3420,7 @@ Nodes (45): 0091 - Global Schema Federation Model, 1) Four Planes, 2) Global Add ### Community 209 - "Canvas Webgl Vector Tiles" Cohesion: 0.10 -Nodes (16): clamp(), createInstance(), createVectorTileInstances(), createWebGLVectorTileRenderer(), DEFAULT_VECTOR_TILE_CONFIG, getAlpha(), isWebGL2Available(), KIND_COLORS (+8 more) +Nodes (15): clamp(), createInstance(), createVectorTileInstances(), createWebGLVectorTileRenderer(), DEFAULT_VECTOR_TILE_CONFIG, getAlpha(), isWebGL2Available(), KIND_COLORS (+7 more) ### Community 210 - "Web Social Import Resume" @@ -3409,7 +3440,7 @@ Nodes (28): import, types, dependencies, @xnetjs/crypto, @xnetjs/identity, descr ### Community 213 - "Data Sqlite Node Store" Cohesion: 0.12 -Nodes (21): deserializeEnvelope(), deserializeV1Envelope(), EnvelopeVerificationResult, fromBase64(), getEnvelope(), hasPeerId(), isRecord(), isSyncMessage() (+13 more) +Nodes (22): deserializeEnvelope(), deserializeV1Envelope(), EnvelopeVerificationResult, fromBase64(), getEnvelope(), hasPeerId(), isRecord(), isSyncMessage() (+14 more) ### Community 214 - "Crypto Package Dependencies Scripts" @@ -3443,8 +3474,8 @@ Nodes (17): createVectorIndex(), IndexEntry, MetricType, SearchResult, VectorInd ### Community 220 - "Canvas Core Benchmarks Measure" -Cohesion: 0.10 -Nodes (26): Operation, measure(), average(), BENCHMARK_OBJECT_KINDS, benchmarkSyntheticCanvasWorlds(), CanvasObjectTransferPayloadProfile, CanvasWorkerTransferBenchmarkInput, CanvasWorkerTransferBenchmarkObjectsInput (+18 more) +Cohesion: 0.08 +Nodes (35): average(), BENCHMARK_OBJECT_KINDS, BenchmarkClock, benchmarkSyntheticCanvasWorlds(), CanvasObjectTransferPayloadProfile, CanvasWorkerTransferBenchmarkInput, CanvasWorkerTransferBenchmarkObjectsInput, CanvasWorkerTransferOverheadMeasurement (+27 more) ### Community 221 - "Telemetry Package Scripts Dev" @@ -3493,8 +3524,8 @@ Nodes (9): AIProviderRouter, createCapabilities(), emptyProviderUsage(), estimat ### Community 230 - "Editor Blob Context Image" -Cohesion: 0.15 -Nodes (3): estimateTextureBytes(), RasterTileTextureLru, WebGLRasterTileRenderer +Cohesion: 0.03 +Nodes (67): CommitProgress, CommitProgressPanel(), CommitProgressPhase, CommitSummary, emptyCommitProgressMetrics(), formatByteSize(), formatDuration(), formatMilliseconds() (+59 more) ### Community 231 - "Data Computed Cache Get" @@ -3533,18 +3564,13 @@ Nodes (8): topologicalSort(), applyChangeToState(), createEmptyState(), SchemaSc ### Community 238 - "Views Use Timeline State" -Cohesion: 0.18 -Nodes (20): mockData, mockSchema, mockView, now, formatDate(), TimelineBar(), TimelineBarProps, TimelineView() (+12 more) +Cohesion: 0.11 +Nodes (17): createSchemaRoutes(), SchemaRoutesOptions, extractAuthority(), extractNamespace(), isBuiltInAuthority(), KNOWN_CONFIG_KEYS, normalizeDefinition(), normalizeProperties() (+9 more) ### Community 239 - "Canvas Use Comments Comment" -Cohesion: 0.14 -Nodes (20): CommentOverlay(), CommentOverlayProps, INITIAL_POPOVER_STATE, PopoverState, CommentPin(), CommentPinProps, getAuthorInitial(), CanvasObject (+12 more) - -### Community 240 - "Data Row Cache Cached" - -Cohesion: 0.09 -Nodes (7): CachedRow, CacheEntry, CacheStats, createRowCache(), DEFAULT_CACHE_CONFIG, RowCache, RowCacheConfig +Cohesion: 0.07 +Nodes (39): CommentOverlay(), CommentOverlayProps, INITIAL_POPOVER_STATE, PopoverState, CommentPin(), CommentPinProps, getAuthorInitial(), CanvasObject (+31 more) ### Community 241 - "Electron Package Dependencies Better" @@ -3553,13 +3579,13 @@ Nodes (26): dependencies, better-sqlite3, electron-updater, lucide-react, mermai ### Community 242 - "Social Graph Lenses Data" -Cohesion: 0.08 -Nodes (25): CanvasErpPrototypeAuditEntry, CanvasErpPrototypeAuditOperation, CanvasErpPrototypeAuditSource, CanvasErpPrototypeCard, CanvasErpPrototypeCommand, CanvasErpPrototypeEdge, CanvasErpPrototypeEntityKind, CanvasErpPrototypeLayoutKind (+17 more) +Cohesion: 0.14 +Nodes (4): estimateTextureBytes(), RasterTileTextureLru, WebGLRasterTileRenderer, RasterTileRef ### Community 243 - "Web Social Import Commit" -Cohesion: 0.10 -Nodes (20): activeCommitJobs, applyBatchResultMetrics(), applyOperationStatsDelta(), assertBrowserSocialImportCommitNotCancelled(), BrowserSocialImportCommitCancelledError, BrowserSocialImportCommitJob, BrowserSocialImportCommitProgress, BrowserSocialImportCommitProgressMetrics (+12 more) +Cohesion: 0.11 +Nodes (16): readBrowserSocialImportPreview(), CommitProgressPanel(), formatByteSize(), formatDuration(), formatMilliseconds(), formatOperationDelta(), formatRate(), formatStorageRows() (+8 more) ### Community 244 - "Sdk Package Dependencies Scripts" @@ -3598,13 +3624,13 @@ Nodes (33): bucketDefinitions, cleanString(), cleanUrl(), createTikTokAccountAct ### Community 253 - "Electron Cloudflare Tunnel Manager" -Cohesion: 0.15 -Nodes (14): setupCloudflareTunnelIPC(), stopCloudflareTunnel(), buildCloudflaredArgs(), CloudflareTunnelManager, getCloudflaredInstallHint(), getCloudflareTunnelManager(), getStateFilePath(), parseEndpointFromLogLine() (+6 more) +Cohesion: 0.21 +Nodes (12): setupCloudflareTunnelIPC(), stopCloudflareTunnel(), buildCloudflaredArgs(), getCloudflaredInstallHint(), getCloudflareTunnelManager(), parseEndpointFromLogLine(), PersistedTunnelState, resolveCloudflaredCommand() (+4 more) ### Community 254 - "Sync Replication Policy Plan" -Cohesion: 0.08 -Nodes (25): A. Fixing invalidation-by-re-execution (finding 1), Architecture map, B. Per-query adapter overhead (finding 2), C. React identity churn (finding 3), Current State In The Repository, D. Write path (finding 4), E. Structural (findings 6–8), Example Code (+17 more) +Cohesion: 0.06 +Nodes (30): Cross-cutting choice: where does "checklist in a database cell" fit?, Current State In The Repository, Example Code, Executive Summary, External Research, Implementation Checklist, Key Findings, Libraries (+22 more) ### Community 255 - "Query Package Dependencies Scripts" @@ -3623,8 +3649,8 @@ Nodes (18): bucketCount(), bucketLatency(), bucketScore(), bucketSize(), bucketT ### Community 259 - "Abuse Content Fingerprint Crypto" -Cohesion: 0.09 -Nodes (35): assessDuplicateContent(), canonicalizeContentText(), clamp01(), compareContentFingerprints(), compareSimHash64(), ContentFingerprint, ContentFingerprintInput, ContentFingerprintOptions (+27 more) +Cohesion: 0.15 +Nodes (22): assessDuplicateContent(), canonicalizeContentText(), clamp01(), compareContentFingerprints(), compareSimHash64(), ContentFingerprint, ContentFingerprintInput, ContentFingerprintOptions (+14 more) ### Community 260 - "Formula Ast Base Node" @@ -3633,13 +3659,13 @@ Nodes (20): arrayLiteral, BaseNode, binaryExpression, booleanLiteral, callExpres ### Community 261 - "Data Bridge Query Descriptor" -Cohesion: 0.04 -Nodes (78): average(), BENCHMARK_SOURCES, CanvasPreviewGenerationBenchmarkInput, CanvasPreviewGenerationBenchmarkMeasurement, CanvasPreviewGenerationBenchmarkSource, createBenchmarkClock(), createCanvasPreviewGenerationBenchmarkSources(), createPreviewModelForSource() (+70 more) +Cohesion: 0.03 +Nodes (96): Operation, average(), BENCHMARK_SOURCES, CanvasPreviewGenerationBenchmarkInput, CanvasPreviewGenerationBenchmarkMeasurement, CanvasPreviewGenerationBenchmarkSource, createBenchmarkClock(), createCanvasPreviewGenerationBenchmarkSources() (+88 more) ### Community 262 - "Sync Yjs Limits Rate" -Cohesion: 0.11 -Nodes (21): createSyncProtocol(), compareDestinations(), compareText(), inferReplicationNamespaceKind(), normalizeSyncFederationHubs(), planReplicationDestinations(), PolicyRevisionSimulation, ReplicationNamespaceKind (+13 more) +Cohesion: 0.05 +Nodes (62): AiSurfaceLimits, AiWorkspaceChangedFile, AiWorkspaceChangedFileStatus, AiWorkspaceConflict, AiWorkspaceConflictKind, AiWorkspaceExporterConfig, AiWorkspaceExportKind, AiWorkspaceExportOptions (+54 more) ### Community 263 - "Editor Task View Embed" @@ -3649,12 +3675,12 @@ Nodes (44): 1. Current State Assessment, 2. Target Audience & Core Message, 3. C ### Community 264 - "Plugins Ai Mutation Plan" Cohesion: 0.14 -Nodes (17): applyQueryDescriptor(), createQueryDescriptor(), decodeQueryCursor(), encodeQueryCursor(), filterQueryNodes(), matchesQueryDescriptor(), normalizeQueryExecutionMode(), normalizeQuerySourcePreference() (+9 more) +Nodes (3): positionToItem(), rectToSearchBox(), SpatialIndex ### Community 265 - "Views Use Gallery State" -Cohesion: 0.19 -Nodes (15): GalleryCard(), GalleryCardProps, getCoverUrl(), getPropertyKey(), GalleryView(), GalleryViewProps, CARD_SIZES, GalleryRow (+7 more) +Cohesion: 0.18 +Nodes (21): ViewConfig, mockData, mockSchema, mockView, now, formatDate(), TimelineBar(), TimelineBarProps (+13 more) ### Community 266 - "Auth Setup Editor Markdown" @@ -3663,8 +3689,8 @@ Nodes (8): enableTestBypass(), isNavigationAbortError(), setupTestAuth(), waitFo ### Community 267 - "Identity Keys Passkey Generate" -Cohesion: 0.12 -Nodes (14): calculateChunkCount(), chunkUpdate(), DEFAULT_RATE_LIMITER_CONFIG, estimateBase64DecodedLength(), isAwarenessUpdateTooLarge(), isBase64PayloadTooLarge(), isDocumentTooLarge(), isStateVectorTooLarge() (+6 more) +Cohesion: 0.20 +Nodes (16): BoardCard(), BoardCardProps, getTitlePropertyKey(), BoardColumn(), BoardColumnProps, BoardView(), BoardViewProps, BoardColumn (+8 more) ### Community 268 - "Storage Blob Store Chunk" @@ -3681,10 +3707,10 @@ Nodes (20): clamp(), CommunityNoteAgreementOptions, CommunityNoteAgreementStatus Cohesion: 0.09 Nodes (22): dependencies, usearch, @xenova/transformers, @xnetjs/core, @xnetjs/storage, devDependencies, tsup, typescript (+14 more) -### Community 271 - "Sqlite Expo Adapter Exec" +### Community 272 - "Sqlite Web Adapter Exec" Cohesion: 0.12 -Nodes (6): createExpoSQLiteAdapter(), ExpoSQLiteAdapter, isSQLiteCorruptionError(), isSQLiteCorruptionErrorInternal(), SQLiteErrorLike, toErrorLike() +Nodes (8): WebSQLiteAdapter, forceFreePorts(), killTree(), ROOT, spawnAndWait(), startHarness(), startHub(), ensureElectronRuntimeDeps() ### Community 273 - "Web Canvas View Media" @@ -3718,13 +3744,13 @@ Nodes (22): devDependencies, autoprefixer, concurrently, cross-env, electron, el ### Community 279 - "Electron Ipc Secure Seed" -Cohesion: 0.15 -Nodes (9): dataPath, clearSeedPhrase(), getSeedFilePath(), isStoredSeedRecord(), loadSeedPhrase(), SafeStorageLike, StoredSeedRecord, storeSeedPhrase() (+1 more) +Cohesion: 0.14 +Nodes (10): getOrCreateStorage(), setupIPC(), clearSeedPhrase(), getSeedFilePath(), isStoredSeedRecord(), loadSeedPhrase(), SafeStorageLike, StoredSeedRecord (+2 more) ### Community 280 - "Hub Backup Service Create" -Cohesion: 0.07 -Nodes (27): Architecture Decisions, DID:key identity decision, Multiplexed WebSocket decision, One-way MetaBridge decision, Yjs over Automerge, DID:key and UCAN identity model, Identity Model, Identity Guide (+19 more) +Cohesion: 0.14 +Nodes (13): Lower packages cannot import higher packages, Package Graph, Monorepo development workflow, @xnetjs/sync initial publish metadata, Architecture, Change, Dependencies, Features (+5 more) ### Community 281 - "Hub Discovery Service Dids" @@ -3738,8 +3764,8 @@ Nodes (5): HUB_METRICS, Metrics, DEFAULT_CONFIG, TelemetryBridge, TelemetryBridg ### Community 283 - "Data Embed Registry Evaluate" -Cohesion: 0.10 -Nodes (16): imageRef, pdfRef, ResizeObserverStub, resolveUrl, GridPeek(), Lightbox(), PeekField(), FileCellConfig (+8 more) +Cohesion: 0.13 +Nodes (13): imageRef, pdfRef, ResizeObserverStub, resolveUrl, Lightbox(), PeekField(), FileCellConfig, FileChip() (+5 more) ### Community 285 - "Editor Announcer Screen Reader" @@ -3758,8 +3784,8 @@ Nodes (21): dependencies, lucide-react, mermaid, tippy.js, @tiptap/core, @tiptap ### Community 289 - "Views Grid Peek File" -Cohesion: 0.13 -Nodes (6): createBackupRoutes(), createOwnershipMessage(), Env, KeyBackupPayload, verifyOwnershipProof(), BackupService +Cohesion: 0.10 +Nodes (10): createBackupRoutes(), createOwnershipMessage(), Env, KeyBackupPayload, verifyOwnershipProof(), BackupConfig, BackupError, BackupResult (+2 more) ### Community 290 - "React Use Page Task" @@ -3768,13 +3794,13 @@ Nodes (44): 0125 - AFFiNE as the xNet UI Layer, Adapter Responsibilities, AFFiNE ### Community 291 - "Electron Ipc Blob Store" -Cohesion: 0.07 -Nodes (27): ContentId, createIPCBlobStore(), IPCBlobStore, AwarenessSnapshotHandler, AwarenessSnapshotUsers, ConnectionStatus, createIPCSyncManager(), DevToolsEventBus (+19 more) +Cohesion: 0.11 +Nodes (16): ContentId, createIPCBlobStore(), IPCBlobStore, IPCSyncManager, CanvasFrameBudgetInput, CanvasPerformanceSceneInput, CanvasTestHarness, consentManager (+8 more) ### Community 292 - "Electron Service Ipc Handle" Cohesion: 0.13 -Nodes (15): dbPath, deliverSharePayload(), **dirname, **filename, handleDeepLink(), hasSingleInstanceLock, parseSharePayloadFromDeepLink(), getOrCreateStorage() (+7 more) +Nodes (14): dbPath, deliverSharePayload(), **dirname, **filename, handleDeepLink(), hasSingleInstanceLock, parseSharePayloadFromDeepLink(), createMenu() (+6 more) ### Community 293 - "Plugins Registry Context Extension" @@ -3783,8 +3809,8 @@ Nodes (43): 10. Appendix: Comparison with Alternatives, 1.1 Features Analysis, 1 ### Community 294 - "Canvas Frame Monitor Stats" -Cohesion: 0.20 -Nodes (9): createFrameMonitor(), FrameMonitor, FrameStats, createMemoryTracker(), formatBytes(), getMemoryUsage(), MemorySnapshot, MemoryTracker (+1 more) +Cohesion: 0.04 +Nodes (63): CanvasInlinePageSurfaceProps, EditorExtensions, useStableTitle(), CollapsibleMinimap(), CollapsibleMinimapProps, getCanvasObjectKindMinimapColor(), getNodeMinimapColor(), getTileDominantColor() (+55 more) ### Community 295 - "Network Access List Peer" @@ -3818,13 +3844,13 @@ Nodes (3): ElectronBatchWriter, SQLiteWorkerHandler, SQLValue ### Community 301 - "Identity Did Create Crypto" -Cohesion: 0.19 -Nodes (17): fromBase64Url(), toBase64Url(), buildCapabilities(), createShareToken(), parseAndVerifyShareLink(), ParsedShare, parseShareLink(), verifyShareToken() (+9 more) +Cohesion: 0.11 +Nodes (27): UCANCapability, UCANToken, actionAllows(), capabilityAllows(), createHeader(), createPayload(), createSigningInput(), createUCAN() (+19 more) ### Community 302 - "Electron Data Process Manager" Cohesion: 0.14 -Nodes (16): BSMStartOptions, **dirname, emitEvent(), eventListeners, **filename, handleProcessMessage(), log(), onEvent() (+8 more) +Nodes (17): BSMStartOptions, **dirname, emitEvent(), eventListeners, **filename, handleProcessMessage(), log(), onEvent() (+9 more) ### Community 303 - "Data Store Create Migration" @@ -3833,8 +3859,8 @@ Nodes (43): 15: Enterprise Scale Architecture, 1. Protocol Versioning, 2. Worksp ### Community 305 - "Plugins Canvas Permissions Evaluate" -Cohesion: 0.16 -Nodes (15): CanvasPluginPermissionDecisionStatus, CanvasPluginPermissionGateDecision, CanvasPluginPermissionGateInput, CanvasPluginPermissionPrompt, CanvasPluginPermissionPromptOption, CanvasPluginPromptMode, CanvasPluginWorkspacePolicy, createCanvasPluginPermissionPrompt() (+7 more) +Cohesion: 0.15 +Nodes (16): CanvasPluginPermissionDecisionStatus, CanvasPluginPermissionGateDecision, CanvasPluginPermissionGateInput, CanvasPluginPermissionPrompt, CanvasPluginPermissionPromptOption, CanvasPluginPromptMode, CanvasPluginWorkspacePolicy, createCanvasPluginPermissionPrompt() (+8 more) ### Community 306 - "Plugins Shortcuts Shortcut Manager" @@ -3868,13 +3894,13 @@ Nodes (18): dependencies, devDependencies, tsup, typescript, vitest, exports, im ### Community 313 - "Social Grok Import Context" -Cohesion: 0.06 -Nodes (67): AbuseAdapterResult, AbuseDecisionFunction, AbuseFactAdapter, createAbuseDecisionAdapter(), createAbuseFactAdapter(), createRemoteAdmissionPipeline(), decideWithAdapter(), RemoteAdmissionPipeline (+59 more) +Cohesion: 0.09 +Nodes (16): generateContentKey(), CachedPeerDecision, decryptYjsState(), deserializeEncryptedYjsState(), EncryptedYjsState, EncryptedYjsStateWire, encryptYjsState(), serializeEncryptedYjsState() (+8 more) ### Community 314 - "Plugins Registry Plugin Manifest" -Cohesion: 0.09 -Nodes (22): SocialImportArchivePreview, SocialImportCommitJobRequest, SocialImportStageRequest, SocialImportStageResult, acquiredNodes, ALLOWED_SERVICE_CHANNELS, bsmMessageHandlers, bsmPortReadyCallbacks (+14 more) +Cohesion: 0.10 +Nodes (18): BENCH_AUTHOR_DID, BENCH_SCHEMA_ID, CountRow, createSeededBenchmarkStore(), maxNodeCount, nextMutationNode(), queryBenchmarkCases, SeededBenchmarkStore (+10 more) ### Community 315 - "Identity Seed Recovery Create" @@ -3893,8 +3919,8 @@ Nodes (4): decodeNodeStates(), encodeNodeStates(), NodeStateDecoder, shouldUseBi ### Community 318 - "Web Social Import Worker" -Cohesion: 0.15 -Nodes (23): createBrowserZipJsonEntryReader(), createBrowserZipTextEntryReader(), getCommitRecordCount(), getMainThreadStageDraftStream(), SocialImportWorkerSuccessResponse, clampInteger(), createStageId(), createStagePayload() (+15 more) +Cohesion: 0.14 +Nodes (24): createBrowserZipJsonEntryReader(), createBrowserZipTextEntryReader(), readBrowserZipJsonEntry(), readBrowserZipTextEntry(), SocialImportWorkerStagePayload, SocialImportWorkerSuccessResponse, clampInteger(), createStageId() (+16 more) ### Community 319 - "Devtools Yjs Inspector Use" @@ -3918,18 +3944,13 @@ Nodes (4): AuditIndex, ActivitySummary, AuditEntry, AuditQuery ### Community 324 - "Canvas Core Connectors Create" -Cohesion: 0.09 -Nodes (29): addObjectToDensity(), CANVAS_OBJECT_KINDS, CanvasTileSummaryEdge, CanvasTileSummaryObject, createCanvasTileSummaries(), CreateCanvasTileSummariesInput, createCanvasTileSummaryCacheKey(), createEmptyCanvasTileSummary() (+21 more) +Cohesion: 0.08 +Nodes (36): getNodeCenter(), getNodeTileId(), resolveRasterTileBounds(), getObjectTileId(), createMutableSummary(), getObjectTileIdFromRect(), createViewportTileSubscriptionPlan(), expandTileCoverage() (+28 more) ### Community 325 - "Data External Reference Embed" -Cohesion: 0.14 -Nodes (13): CanvasFrameExportDocument, CanvasFrameExportFormat, createCanvasFrameExportDocument(), CreateCanvasFrameExportDocumentInput, getCanvasFrameExportEdges(), getFrameTitle(), getNodeRect(), isCanvasNodeInsideFrameExportBounds() (+5 more) - -### Community 326 - "Plugins Mcp Server Mcpserver" - -Cohesion: 0.14 -Nodes (3): WorkerBridge, MockWorker, remote +Cohesion: 0.11 +Nodes (19): activeCommitJobs, applyBatchResultMetrics(), applyOperationStatsDelta(), assertBrowserSocialImportCommitNotCancelled(), BrowserSocialImportCommitCancelledError, BrowserSocialImportCommitJob, BrowserSocialImportCommitProgress, BrowserSocialImportCommitProgressMetrics (+11 more) ### Community 327 - "Site Docs Schema Properties" @@ -3943,8 +3964,8 @@ Nodes (43): 1. Identity, Directory, and Authorization Fabric, 2. User-Owned Data ### Community 330 - "Sdk Client Discovery Create" -Cohesion: 0.12 -Nodes (15): CommitProgressPanel(), formatByteSize(), formatDuration(), formatMilliseconds(), formatOperationDelta(), formatRate(), formatStorageRows(), getCommitEtaLabel() (+7 more) +Cohesion: 0.15 +Nodes (12): Reactive local queries, Architecture, Dependencies, Features, Federated query router, Installation, Local query engine, Modules (+4 more) ### Community 331 - "Telemetry Collector Schema Iris" @@ -3953,8 +3974,8 @@ Nodes (10): CrashReport, CrashReportSchema, TelemetrySchemaIRIs, TelemetrySchema ### Community 332 - "Canvas Contextual Popovers Create" -Cohesion: 0.03 -Nodes (73): ErrorBoundary, ErrorBoundaryFallbackProps, ErrorBoundaryProps, ErrorBoundaryState, OfflineIndicator(), OfflineIndicatorProps, useIsOffline(), SocialImportView() (+65 more) +Cohesion: 0.18 +Nodes (11): clamp(), DEFAULT_DEMOTED_LABELS, DEFAULT_HIDDEN_LABELS, maxLabelConfidence(), RISK_QUALITY_SIGNALS, SearchModerationLabel, SearchModerationPolicy, SearchModerationSummary (+3 more) ### Community 333 - "Sqlite Browser Support Request" @@ -3999,7 +4020,7 @@ Nodes (6): ConnectionGater, DefaultConnectionGater, getSecurityLogger(), hashPee ### Community 341 - "Data External References Parse" Cohesion: 0.17 -Nodes (16): CellValue, ColumnDefinition, RollupColumnConfig, ConvertedCell, FormulaRow, aggregate(), batchComputeRollups(), computeRollup() (+8 more) +Nodes (13): AiWorkspaceExporter, fileStem(), inferExportKind(), isManifestEntry(), isMutationPlan(), isRecord(), manifestEntry(), nodeRevision() (+5 more) ### Community 342 - "Tsconfig Compiler Options Declaration" @@ -4043,13 +4064,13 @@ Nodes (13): ColumnDefinition, ColumnType, DatabaseRow, extractPlainTextFromRichT ### Community 350 - "Plugins Middleware Chain Node" -Cohesion: 0.19 -Nodes (12): ListItem(), ListItemProps, getPropertyKey(), ListView(), ListViewProps, ListRow, useListState(), UseListStateOptions (+4 more) +Cohesion: 0.23 +Nodes (10): buildStatus(), ensureStorybook(), probeStorybook(), refreshStatus(), setupStorybookIPC(), stopStorybook(), STORYBOOK_PORT, StorybookRuntimeState (+2 more) ### Community 352 - "Data Bridge Query Stream" -Cohesion: 0.20 -Nodes (12): createQueryStreamState(), deleteNode(), getNextMetadata(), insertNode(), reduceQueryStreamEvent(), reduceQueryStreamEvents(), updateNode(), QueryStreamProgress (+4 more) +Cohesion: 0.21 +Nodes (11): deleteNode(), getNextMetadata(), insertNode(), reduceQueryStreamEvent(), reduceQueryStreamEvents(), updateNode(), QueryStreamProgress, QueryStreamProgressPhase (+3 more) ### Community 353 - "Data Analyze Schema Changes" @@ -4088,8 +4109,8 @@ Nodes (10): arrayFunctions, conversionFunctions, dateFunctions, functions, getFu ### Community 360 - "Electron Ipc Sync Manager" -Cohesion: 0.02 -Nodes (85): Understanding xNet for AI Assistants, No-backend AI assistance model, Additional packages, Design principles, Further reading, How data flows, Layered architecture, Read path (+77 more) +Cohesion: 0.03 +Nodes (109): DatabaseView(), CanvasView(), DatabaseView(), Architecture Decisions, DID:key identity decision, Multiplexed WebSocket decision, One-way MetaBridge decision, Yjs over Automerge (+101 more) ### Community 361 - "Turbo Tasks Build Package" @@ -4118,8 +4139,8 @@ Nodes (42): 05: Schema and Migrations, 1. Adding a New Migration, 2. Migration S ### Community 369 - "Telemetry Context Use Collector" -Cohesion: 0.18 -Nodes (11): ChangeHandler, createHandler(), createTestContext(), createVersionedHandler(), HandlerContext, HandlerEvent, ProcessResult, RegistryStats (+3 more) +Cohesion: 0.15 +Nodes (13): addBlocker(), CompiledFindQuery, compileFindQuery(), compileNodeQuery(), compilePage(), compilePredicate(), EMPTY_FIND_OPTIONS, schemaIdsFor() (+5 more) ### Community 370 - "Site Docs Schema Attrs" @@ -4143,8 +4164,8 @@ Nodes (12): compilerOptions, esModuleInterop, jsx, module, moduleResolution, pat ### Community 374 - "Electron Storybook Ipc Build" -Cohesion: 0.23 -Nodes (10): buildStatus(), ensureStorybook(), probeStorybook(), refreshStatus(), setupStorybookIPC(), stopStorybook(), STORYBOOK_PORT, StorybookRuntimeState (+2 more) +Cohesion: 0.27 +Nodes (7): createQueryErrorMetadata(), createQueryMetadata(), createQuerySnapshotMetadata(), getCountMetadata(), getOffset(), getPageInfo(), TEST_SCHEMA_ID ### Community 376 - "React Package Dependencies Lucide" @@ -4153,8 +4174,8 @@ Nodes (13): dependencies, lucide-react, @tanstack/react-virtual, @xnetjs/core, @ ### Community 377 - "Query Moderation Summarize Search" -Cohesion: 0.27 -Nodes (3): AutoBackup, AutoBackupOptions, BackupUploader +Cohesion: 0.13 +Nodes (7): CanvasDatabasePreviewSurfaceProps, mockUseDatabase, mockUseDatabaseDoc, mockUseIdentity, mockUseNode, ResizeObserverMock, useStableTitle() ### Community 381 - "Plugins Providers Open Aicompatible" @@ -4173,8 +4194,8 @@ Nodes (41): 1. Technical Integration, 2. Information Architecture, 3. Content Pr ### Community 385 - "Crypto Metrics Collector Create" -Cohesion: 0.13 -Nodes (8): AwarenessConfig, AwarenessRoomState, AwarenessService, DEFAULT_CONFIG, extractUserDid(), toBytes(), withOnlineState(), withUserDid() +Cohesion: 0.17 +Nodes (13): AiMutationPlan, createAiOperation(), AiWorkspaceWatcher, createWorkspaceReviewIndex(), databaseProjectionOperation(), errorKindForChangedFile(), parseJsonlObjects(), parseJsonObjectFile() (+5 more) ### Community 386 - "React Package Publish Config" @@ -4188,8 +4209,8 @@ Nodes (12): import, types, import, types, exports, ./database, ./experimental, . ### Community 388 - "Web Settings About Appearance" -Cohesion: 0.12 -Nodes (17): Architecture, Editor extensions, `EditorToolbar`, Exports, Features, Installation, Keyboard Shortcuts, Quick Start with React (+9 more) +Cohesion: 0.11 +Nodes (19): Architecture, Editor extensions, `EditorToolbar`, Exports, Features, Installation, Keyboard Shortcuts, Quick Start with React (+11 more) ### Community 389 - "Sqlite Package Exports Expo" @@ -4218,19 +4239,29 @@ Nodes (10): author, email, name, description, homepage, main, name, private (+2 ### Community 394 - "Harness Database Undo Force" -Cohesion: 0.38 -Nodes (6): forceFreePorts(), killTree(), ROOT, spawnAndWait(), startHarness(), startHub() +Cohesion: 0.18 +Nodes (16): GalleryCard(), GalleryCardProps, getCoverUrl(), getPropertyKey(), GalleryView(), GalleryViewProps, CARD_SIZES, GalleryRow (+8 more) ### Community 395 - "Hub Rate Limit Limiter" -Cohesion: 0.10 -Nodes (33): createIdentity(), setup(), createIdentity(), createTestStore(), createTestStore(), createTestStore(), createTestStore(), makeIdentity() (+25 more) +Cohesion: 0.20 +Nodes (13): makeIdentityEvent(), makeImportEvent(), deriveKeyBundle(), deserializeKeyBundle(), generateKeyBundle(), serializeKeyBundle(), BrowserPasskeyStorage, concatBytes() (+5 more) + +### Community 396 - "Devtools Schema Registry Use" + +Cohesion: 0.16 +Nodes (14): compareTileAddress(), ConnectorStorageKind, ConnectorStoragePlan, createConnectorStoragePlan(), CreateConnectorStoragePlanOptions, createFarFieldEdgeSummaries(), CreateFarFieldEdgeSummariesOptions, createTilePairStorageKey() (+6 more) ### Community 397 - "Network Authorized Sync Provider" Cohesion: 0.20 Nodes (5): AuthorizedSyncProvider, EnvelopeReader, RecipientEnvelope, SyncEventStore, Change +### Community 398 - "Plugins Contributions Typed Registry" + +Cohesion: 0.12 +Nodes (3): ContributionRegistry, TypedRegistry, PluginRegistry + ### Community 399 - "Formula Parser Lexer Token" Cohesion: 0.25 @@ -4238,8 +4269,8 @@ Nodes (3): Token, TokenType, ParseError ### Community 400 - "Sync Yjs Integrity Hash" -Cohesion: 0.09 -Nodes (21): accountSecurityPatterns, adsPatterns, billingPatterns, classifySocialEntryPrivacy(), getBucketDefaultSelected(), isSensitivePrivacyClass(), messagePatterns, ImportBucket (+13 more) +Cohesion: 0.22 +Nodes (10): accountSecurityPatterns, adsPatterns, billingPatterns, classifySocialEntryPrivacy(), getBucketDefaultSelected(), isSensitivePrivacyClass(), messagePatterns, createGrokBuckets() (+2 more) ### Community 401 - "Expo Activity Create React" @@ -4253,8 +4284,8 @@ Nodes (9): AppDelegate, -applicationcontinueUserActivityrestorationHandler, -app ### Community 403 - "Data Store Auth Evaluator" -Cohesion: 0.14 -Nodes (16): resolveRasterTileBounds(), compareTileAddress(), ConnectorStorageKind, ConnectorStoragePlan, createConnectorStoragePlan(), CreateConnectorStoragePlanOptions, createFarFieldEdgeSummaries(), CreateFarFieldEdgeSummariesOptions (+8 more) +Cohesion: 0.16 +Nodes (16): DEFAULT_ALLOWED_PROVIDERS, DEFAULT_SANDBOX, evaluateExternalReferenceEmbedPolicy(), EvaluateExternalReferenceEmbedPolicyInput, ExternalReferenceEmbedBlockReason, ExternalReferenceEmbedPolicy, ExternalReferenceEmbedPolicyDecision, ExternalReferenceIframeSandboxToken (+8 more) ### Community 404 - "Changeset Config Access Base" @@ -4268,8 +4299,8 @@ Nodes (40): 0063 - Community Communication Tools, Automation Ideas, Bluesky, Blu ### Community 406 - "Data Package Dependencies Nanoid" -Cohesion: 0.20 -Nodes (10): dependencies, nanoid, @xnetjs/core, @xnetjs/crypto, @xnetjs/identity, @xnetjs/sqlite, @xnetjs/storage, @xnetjs/sync (+2 more) +Cohesion: 0.16 +Nodes (8): NodeChangeMessage, NodePayload, NodeRelayError, NodeRelayService, NodeSyncRequest, NodeSyncResponse, RemoteMutationTelemetryOptions, verifyChange() ### Community 407 - "Editor Package Peer Dependencies" @@ -4409,7 +4440,7 @@ Nodes (7): buildLlmsFull(), cleanMdxContent(), collectMdxFiles(), DocPage, extra ### Community 434 - "Social Package Exports Import" Cohesion: 0.25 -Nodes (8): exports, ./import/browser, ./lenses, import, import, types, import, types +Nodes (8): exports, ./import/browser, ./importers, import, import, types, import, types ### Community 435 - "Ui Tsconfig Compiler Options" @@ -4553,8 +4584,8 @@ Nodes (5): compilerOptions, outDir, rootDir, extends, include ### Community 465 - "Network Logging Security Logger" -Cohesion: 0.15 -Nodes (12): Reactive local queries, Architecture, Dependencies, Features, Federated query router, Installation, Local query engine, Modules (+4 more) +Cohesion: 0.17 +Nodes (11): xNet Documentation, Local-first React framework introduction, Task manager quickstart, Deployment, Development, Documentation Sections, Landing Page, Astro Starlight docs structure (+3 more) ### Community 466 - "Social Tsconfig Compiler Options" @@ -4598,8 +4629,8 @@ Nodes (13): Clean shutdown after local testing, Code style and architecture rule ### Community 475 - "Electron Social Workspace Get" -Cohesion: 0.23 -Nodes (10): deriveSharedSecret(), deriveSharedSecretWithContext(), generateKeyPair(), getPublicKeyFromPrivate(), KeyPair, HashAlgorithm, hashBase64(), hkdf() (+2 more) +Cohesion: 0.15 +Nodes (12): Adding authorization, Adding rich text support, Coercion, Dev-time warnings, Options, Quick example, Related, Return value: DefinedSchema (+4 more) ### Community 476 - "Web Social Workspace Get" @@ -4718,8 +4749,8 @@ Nodes (4): peerDependencies, better-sqlite3, expo-sqlite, @sqlite.org/sqlite-was ### Community 504 - "Network Compat Ensure Promise" -Cohesion: 0.15 -Nodes (12): Adding authorization, Adding rich text support, Coercion, Dev-time warnings, Options, Quick example, Related, Return value: DefinedSchema (+4 more) +Cohesion: 0.05 +Nodes (23): schemaByType, MyTasksPanel(), getStartOfUtcDay(), isOverdue(), PageTasksPanel(), PageTasksPanelProps, RenderableTaskRow, DocType (+15 more) ### Community 507 - "Telemetry Xnetjs P2P Sync" @@ -4763,8 +4794,8 @@ Nodes (3): OpenCode Autonomous Plan Loop, Autonomous Builder Prompt, Plan Loop O ### Community 520 - "React Package Core Import" -Cohesion: 0.20 -Nodes (14): CanvasContextPopoverDefinition, CanvasContextPopoverKind, CONTEXT_POPOVER_LABELS, createCanvasContextPopoverDefinitions(), CreateCanvasContextPopoverDefinitionsInput, createDefinition(), getEnabledCanvasContextPopovers(), hasMultipleSourceBackedNodes() (+6 more) +Cohesion: 0.13 +Nodes (15): labelForTheme(), RecentDocument, Default, EmptyRecent, Story, SystemMenu(), SystemMenuProps, ThemeToggle() (+7 more) ### Community 521 - "React Package Repository Url" @@ -4863,13 +4894,13 @@ Nodes (12): Composed Components, Dependencies, Exports, Features, Hooks, Install ### Community 781 - "Community 781" -Cohesion: 0.14 -Nodes (13): Lower packages cannot import higher packages, Package Graph, Monorepo development workflow, @xnetjs/sync initial publish metadata, Architecture, Change, Dependencies, Features (+5 more) +Cohesion: 0.18 +Nodes (14): BrowserSupport, checkBrowserSupport(), checkPersistentStorage(), escapeHtml(), getPersistenceMessage(), isSafariPrivateBrowsing(), PersistentStorageRequestOptions, PersistentStorageStatus (+6 more) ### Community 782 - "Community 782" -Cohesion: 0.03 -Nodes (106): CommentPopoverState, CREATABLE_FIELD_TYPES, DatabaseViewProps, FieldMenuState, CommentPopoverState, CREATABLE_FIELD_TYPES, DatabaseViewProps, FieldMenuState (+98 more) +Cohesion: 0.05 +Nodes (71): fields, rows, coerceCellText(), CoerceResult, CopyField, FALSY, formatCellText(), parseTsv() (+63 more) ### Community 783 - "Community 783" @@ -4906,15 +4937,10 @@ Nodes (39): 10: Cleanup & Documentation, 1. Remove Radix Dependencies, 2. Update Cohesion: 0.05 Nodes (37): 08 - Editor & Canvas Packages, CANVAS-01: Node Dragging Reads Stale Position, CANVAS-02: handleNodesChange Emits Empty Changes, CANVAS-03: Cursor Ref Doesn't Trigger Re-render, CANVAS-04: autoLayout Uses Stale Closure, CANVAS-05: Global Listeners Not Cleaned on Unmount, CANVAS-06: findNodeAt Sorts on Every Call, CANVAS-07: ResizeObserver Doesn't Trigger State Update (+29 more) -### Community 792 - "Community 792" - -Cohesion: 0.27 -Nodes (7): createQueryErrorMetadata(), createQueryMetadata(), createQuerySnapshotMetadata(), getCountMetadata(), getOffset(), getPageInfo(), TEST_SCHEMA_ID - ### Community 795 - "Community 795" -Cohesion: 0.14 -Nodes (21): getAllowedEmbedPolicy(), cloneProviderPolicy(), DESIGN_IFRAME_ATTRIBUTES, EMBED_REGISTRY_PROVIDER_POLICIES, EmbedRegistryIframeSecurityAttributes, EmbedRegistryPolicyDecision, EmbedRegistryProvider, EmbedRegistryProviderPolicy (+13 more) +Cohesion: 0.23 +Nodes (11): AppealAnnotation, AppealEffect, AppealEffectAction, AppealEffectInput, AppealResolutionAction, AppealStatus, clamp(), createAppealEffect() (+3 more) ### Community 796 - "Community 796" @@ -4928,13 +4954,18 @@ Nodes (30): resetWebSQLiteStorage(), clearIndexedDBDatabases(), clearWebSQLiteSt ### Community 798 - "Community 798" -Cohesion: 0.22 -Nodes (8): Architecture overview, Data flow: an edit, Electron architecture, Further reading, Peer scoring, Security layer, Transport layer, Update batching +Cohesion: 0.10 +Nodes (11): CreateBridgeOptions, createDataBridge(), createMainThreadBridgeSync(), createWorkerBridgeSync(), isNodeEnvironment(), isWorkerSupported(), DataBridge, DataBridgeConfig (+3 more) ### Community 799 - "Community 799" -Cohesion: 0.20 -Nodes (10): AiWorkspaceExporter, fileStem(), inferExportKind(), manifestEntry(), nodeRevision(), renderAgentsMd(), renderClaudeMcpConfig(), renderCodexConfig() (+2 more) +Cohesion: 0.16 +Nodes (11): CACHE_STATUS_COLORS, CanvasDebugCacheStatus, CanvasDebugOverlayCommand, CanvasDebugOverlayInput, CanvasDebugOverlayViewport, CanvasDebugTileOverlay, createCanvasDebugOverlayCommands(), LOD_LABELS (+3 more) + +### Community 800 - "Community 800" + +Cohesion: 0.21 +Nodes (13): createGenericExternalReferenceDescriptor(), describeEmbedReference(), detectEmbedProvider(), EMBED_PROVIDERS, EmbedProvider, ExternalReferenceDescriptor, ExternalReferenceKind, ExternalReferenceProvider (+5 more) ### Community 801 - "Community 801" @@ -5058,8 +5089,8 @@ Nodes (34): 🔴 A1. X25519 Key Resolution Is Under-Designed (Blocker), 🟡 A2. ### Community 825 - "Community 825" -Cohesion: 0.08 -Nodes (32): activePolicyBlockEntries(), auditPolicyBlockEntries(), canonicalizePolicyBlockList(), createPolicyBlockList(), encoder, findPolicyBlockAuditEntry(), findPolicyBlockEntry(), isRecord() (+24 more) +Cohesion: 0.11 +Nodes (37): createUnauthorizedRemoteWriteFacts(), reportUnauthorizedRemoteWrite(), ABUSE_LABELS, activeLabels(), appendReason(), applySafeOverride(), clamp01(), createDecision() (+29 more) ### Community 826 - "Community 826" @@ -5468,8 +5499,8 @@ Nodes (25): APIs, CI Integration, Communicating with Users, Console Output, Curr ### Community 907 - "Community 907" -Cohesion: 0.18 -Nodes (4): ConnectionState, DEFAULT_CONFIG, RateLimitConfig, RateLimiter +Cohesion: 0.12 +Nodes (16): Authorization is encryption, Every change is signed, Identity is a key pair, Next steps, Nodes are your data, Schemas define your data, Three hooks for everything, Two conflict resolution strategies (+8 more) ### Community 908 - "Community 908" @@ -5503,8 +5534,8 @@ Nodes (24): Architecture Decisions, Architecture Overview, Current State, Depend ### Community 914 - "Community 914" -Cohesion: 0.19 -Nodes (10): createTopic(), getMessageTopics(), isStringArray(), MessageInterceptor, publish(), send(), SignalingMessage, SignalingService (+2 more) +Cohesion: 0.09 +Nodes (20): devDependencies, tsup, typescript, files, license, main, name, publishConfig (+12 more) ### Community 915 - "Community 915" @@ -5514,12 +5545,12 @@ Nodes (24): Auto-populated types, Basic types, checkbox, created, createdBy, dat ### Community 916 - "Community 916" Cohesion: 0.27 -Nodes (8): CanvasTileAwarenessFanoutPlan, CanvasTileAwarenessRoomPlan, CanvasTilePresenceParticipant, countRoomPeerDeliveries(), createCanvasTileRoomId(), createTileAwarenessFanoutPlan(), CreateTileAwarenessFanoutPlanInput, normalizeRoomPrefix() +Nodes (3): AutoBackup, AutoBackupOptions, BackupUploader ### Community 917 - "Community 917" -Cohesion: 0.17 -Nodes (12): Background Sync Manager, MetaBridge, NodePool, NodePool Registry OfflineQueue, OfflineQueue, Orchestration layer, Registry, Sync Architecture (+4 more) +Cohesion: 0.18 +Nodes (11): ChangeHandler, createHandler(), createTestContext(), createVersionedHandler(), HandlerContext, HandlerEvent, ProcessResult, RegistryStats (+3 more) ### Community 918 - "Community 918" @@ -5568,8 +5599,8 @@ Nodes (23): 08: Performance and Security, 1. Conformance Test Matrix, 1. Layered ### Community 927 - "Community 927" -Cohesion: 0.05 -Nodes (47): DatabaseView(), CanvasView(), DatabaseView(), CanvasDatabasePreviewSurface(), CanvasDatabasePreviewSurfaceProps, mockUseDatabase, mockUseDatabaseDoc, mockUseIdentity (+39 more) +Cohesion: 0.27 +Nodes (8): formatBytes(), getToneClasses(), StorageWarningBanner(), StorageWarningBannerProps, Informational, Story, Success, Warning ### Community 928 - "Community 928" @@ -5698,8 +5729,8 @@ Nodes (20): AuthZ, Changes, Configuration, Event bus, Event categories, History, ### Community 953 - "Community 953" -Cohesion: 0.27 -Nodes (9): createSocialCanvasProjectionPlan(), SocialCanvasEdgeDraft, SocialCanvasNodeDraft, SocialCanvasProjectionOptions, SocialCanvasProjectionPlan, SocialProjectionEdgeInput, SocialProjectionNodeInput, SocialProjectionNodeKind (+1 more) +Cohesion: 0.14 +Nodes (13): DID:key and UCAN identity model, Identity Model, @xnetjs/identity initial publish metadata, Dependencies, Features, Installation, Key bundles, Modules (+5 more) ### Community 954 - "Community 954" @@ -5818,8 +5849,8 @@ Nodes (19): Architecture and Phase Overview, Current State in the Repository, Ex ### Community 977 - "Community 977" -Cohesion: 0.27 -Nodes (8): formatBytes(), getToneClasses(), StorageWarningBanner(), StorageWarningBannerProps, Informational, Story, Success, Warning +Cohesion: 0.13 +Nodes (19): compareDestinations(), compareText(), inferReplicationNamespaceKind(), normalizeSyncFederationHubs(), planReplicationDestinations(), PolicyRevisionSimulation, ReplicationNamespaceKind, ReplicationPlan (+11 more) ### Community 978 - "Community 978" @@ -5993,8 +6024,8 @@ Nodes (16): 0108 - Canvas V1 Pages, Databases, Drops, and Infinite Canvas Deep D ### Community 1012 - "Community 1012" -Cohesion: 0.12 -Nodes (16): 0111 - Unified Workbench Architecture for xNet, Canonical Model, Collaboration Fabric, Collaboration stack, ERP and Other Vertical Products, Exploration Status, External Research, Final Recommendation (+8 more) +Cohesion: 0.14 +Nodes (13): 0111 - Unified Workbench Architecture for xNet, Canonical Model, Collaboration Fabric, Collaboration stack, ERP and Other Vertical Products, Exploration Status, Final Recommendation, Future continuum (+5 more) ### Community 1013 - "Community 1013" @@ -6103,13 +6134,13 @@ Nodes (16): Architecture Decisions, Architecture Overview, Data Model, Dependenc ### Community 1034 - "Community 1034" -Cohesion: 0.22 -Nodes (9): Field-level LWW decision, BLAKE3 integrity, Hybrid classical post-quantum cryptography stack, Security levels, XChaCha20-Poly1305 encryption, SignedYjsEnvelope, Sync Guide, Lamport clocks (+1 more) +Cohesion: 0.16 +Nodes (12): createNodeGraphSchemaResolver(), SystemSchemaFederationAppProps, createClient(), CreateClientOptions, SdkTelemetry, XNetClient, createSchemaDiscovery(), SchemaDiscovery (+4 more) ### Community 1035 - "Community 1035" -Cohesion: 0.25 -Nodes (6): authorDID, identity, nodeStorage, params, seed, userNum +Cohesion: 0.20 +Nodes (9): createFrameMonitor(), FrameMonitor, FrameStats, createMemoryTracker(), formatBytes(), getMemoryUsage(), MemorySnapshot, MemoryTracker (+1 more) ### Community 1036 - "Community 1036" @@ -6118,8 +6149,8 @@ Nodes (8): 3.1 Like, 3.2 React (Emoji Reactions), 3.3 Bookmark, 3.4 Comment, 3.5 ### Community 1037 - "Community 1037" -Cohesion: 0.40 -Nodes (5): 🔧 Phase 4: Specialized Features (Weeks 7-8), @xnetjs/formula - Expression Evaluation ✅ **COMPLETE**, @xnetjs/history - Time Travel ✅ **COMPLETE**, @xnetjs/plugins - Sandbox Execution ✅ **COMPLETE**, @xnetjs/vectors - Vector Search ✅ **COMPLETE** +Cohesion: 0.18 +Nodes (4): ConnectionState, DEFAULT_CONFIG, RateLimitConfig, RateLimiter ### Community 1038 - "Community 1038" @@ -6138,8 +6169,8 @@ Nodes (15): Applications, Dependency graph, Package details, The rule, @xnetjs/c ### Community 1041 - "Community 1041" -Cohesion: 0.15 -Nodes (13): addBlocker(), CompiledFindQuery, compileFindQuery(), compileNodeQuery(), compilePage(), compilePredicate(), EMPTY_FIND_OPTIONS, schemaIdsFor() (+5 more) +Cohesion: 0.19 +Nodes (11): createTestRecipient(), BASE58_MAP, base58btcDecode(), base58btcEncode(), createDIDFromEd25519PublicKey(), DefaultPublicKeyResolver, ED25519_MULTICODEC_PREFIX, ed25519PrivToX25519() (+3 more) ### Community 1042 - "Community 1042" @@ -6358,8 +6389,8 @@ Nodes (14): Conclusion, Current State Audit, Exploration 0056: Web App Integrati ### Community 1085 - "Community 1085" -Cohesion: 0.14 -Nodes (14): 3.1 Hero CTA, 3.2 Nav Link, 3.3 Fix Download Page Dead Link, 3.4 GetStarted Section, 4.1 DemoBanner Component, 4.2 DemoQuotaIndicator Component, 4.3 Demo Data Expired Screen, 5.1 Quota Enforcement Service (+6 more) +Cohesion: 0.13 +Nodes (15): 2.1 Configure Vite Base Path, 2.2 Configure TanStack Router Base Path, 2.3 Update PWA Manifest, 2.4 SPA Fallback on GitHub Pages, 2.5 Update deploy-site.yml, 4.1 DemoBanner Component, 4.2 DemoQuotaIndicator Component, 4.3 Demo Data Expired Screen (+7 more) ### Community 1086 - "Community 1086" @@ -6516,6 +6547,11 @@ Nodes (13): Architecture, Canvas Comments, Canvas Store (Yjs), Dependencies, Fea Cohesion: 0.25 Nodes (13): CLI Migration Schema Doctor Tools, Schema Migration Lenses, Protocol Schema Compatibility, Lens Migration Patterns, Deprecation Lifecycle, Stages, Sync Recovery Tooling, Schema CI Gates (+5 more) +### Community 1117 - "Community 1117" + +Cohesion: 0.40 +Nodes (8): createPersistedDocState(), hashYjsState(), loadVerifiedState(), PersistedDocState, shouldCompact(), verifyPersistedDocState(), verifyYjsStateIntegrity(), YjsIntegrityError + ### Community 1118 - "Community 1118" Cohesion: 0.14 @@ -6573,8 +6609,8 @@ Nodes (13): Background sync for important nodes, Connection status indicator, Ha ### Community 1129 - "Community 1129" -Cohesion: 0.16 -Nodes (16): DEFAULT_ALLOWED_PROVIDERS, DEFAULT_SANDBOX, evaluateExternalReferenceEmbedPolicy(), EvaluateExternalReferenceEmbedPolicyInput, ExternalReferenceEmbedBlockReason, ExternalReferenceEmbedPolicy, ExternalReferenceEmbedPolicyDecision, ExternalReferenceIframeSandboxToken (+8 more) +Cohesion: 0.12 +Nodes (14): calculateChunkCount(), chunkUpdate(), DEFAULT_RATE_LIMITER_CONFIG, estimateBase64DecodedLength(), isAwarenessUpdateTooLarge(), isBase64PayloadTooLarge(), isDocumentTooLarge(), isStateVectorTooLarge() (+6 more) ### Community 1130 - "Community 1130" @@ -6981,6 +7017,11 @@ Nodes (12): 03: Authorization Engine, 1. PolicyEvaluator Interface, 2. Role Reso Cohesion: 0.15 Nodes (12): 08: Multilingual Node Content, Acceptance Criteria, Adding translations field to existing schemas, Benefits of Separate Fragments, Implementation, Overview, Rich Text (Y.Doc) Translation, Schema Extension (+4 more) +### Community 1211 - "Community 1211" + +Cohesion: 0.13 +Nodes (16): EditorRolloutMode, EditorSurface(), EditorSurfaceDensity, EditorSurfaceErrorBoundary, EditorSurfaceErrorBoundaryProps, EditorSurfaceErrorBoundaryState, EditorSurfaceMode, EditorSurfaceProps (+8 more) + ### Community 1213 - "Community 1213" Cohesion: 0.15 @@ -7306,6 +7347,11 @@ Nodes (11): 10: Community Translations, Acceptance Criteria, Approved Contributi Cohesion: 0.17 Nodes (11): 02: Species Database, 1. Import Pipeline, 2. PFAF Parser, 3. Companion Planting Import, 4. Seed Script, 5. Community Contributions, Checklist, Data Files (+3 more) +### Community 1278 - "Community 1278" + +Cohesion: 0.60 +Nodes (5): createElectronSQLiteAdapter(), cleanupDb(), getTestDbPath(), isNativeSQLiteLoadError(), probeNativeSQLite() + ### Community 1279 - "Community 1279" Cohesion: 0.18 @@ -7433,8 +7479,8 @@ Nodes (10): Best practices, Deprecation policy, DevTools panel, Further reading, ### Community 1304 - "Community 1304" -Cohesion: 0.20 -Nodes (9): 14: Notifications, Calendar & External Integrations, Calendar Integration for ERP, ERP Integration Points, Platform Capabilities, Platform Feature Matrix, Summary, Task Notifications, The Challenge (+1 more) +Cohesion: 0.18 +Nodes (10): 14: Notifications, Calendar & External Integrations, External Integrations Pattern, Integration Bridge, Platform Capabilities, Platform Feature Matrix, Self-Hosted Bridge Option, Summary, The Challenge (+2 more) ### Community 1305 - "Community 1305" @@ -7588,8 +7634,8 @@ Nodes (10): 09: API Gateway, API Gateway Server, Architecture, Core Types, File ### Community 1335 - "Community 1335" -Cohesion: 0.40 -Nodes (5): External Integrations Pattern, Integration Bridge, Self-Hosted Bridge Option, The General Problem, What Requires the Bridge vs What Doesn't +Cohesion: 0.22 +Nodes (8): Additional packages, Design principles, Further reading, How data flows, Layered architecture, Read path, Sync path, Write path ### Community 1336 - "Community 1336" @@ -7753,8 +7799,8 @@ Nodes (9): Executive Summary, Implementation Checklist, More Visual Data Workspa ### Community 1368 - "Community 1368" -Cohesion: 0.18 -Nodes (3): createAiSurfaceService(), MCPServer, toMCPTool() +Cohesion: 0.25 +Nodes (7): Cross-page moves (cut/paste), Deletion semantics, Field authority, Invariants, Model, Page Task Reconciliation Spec, Reconciliation algorithm ### Community 1369 - "Community 1369" @@ -7763,8 +7809,8 @@ Nodes (9): 09: AI & MCP Interface, AI-Collaborative Document Editing, Architectu ### Community 1370 - "Community 1370" -Cohesion: 0.14 -Nodes (14): Alternative: Make.com / Zapier, API Endpoints, Architecture: xNet + n8n, Comparison, Deployment Options, Docker Compose Setup, Option 1: Same Machine (Simplest), Option 2: Home Server / NAS (+6 more) +Cohesion: 0.20 +Nodes (10): Alternative: Make.com / Zapier, API Endpoints, Architecture: xNet + n8n, Comparison, Docker Compose Setup, Security Considerations, Webhook Events (Outbound), Workflow Automation (n8n, Make, Zapier) (+2 more) ### Community 1371 - "Community 1371" @@ -8283,8 +8329,8 @@ Nodes (8): Canvas V2 Release Gates, Current Thresholds, Gate Decision, Gate Mapp ### Community 1474 - "Community 1474" -Cohesion: 0.33 -Nodes (6): Core Hooks, Materialized views, Remote and stream queries, `useMutate` -- Write Data, `useNode` -- Rich Text Editing, `useQuery` -- Read Data +Cohesion: 0.19 +Nodes (12): ListItem(), ListItemProps, getPropertyKey(), ListView(), ListViewProps, ListRow, useListState(), UseListStateOptions (+4 more) ### Community 1475 - "Community 1475" @@ -8318,8 +8364,8 @@ Nodes (8): 10. Webhook/Event Notifications, 11. Conflict Audit Trail, 12. Peer R ### Community 1481 - "Community 1481" -Cohesion: 0.50 -Nodes (4): Implementation Priority, Long-Term (Year 4+), Mid-Term (Year 3), Near-Term (Year 2) +Cohesion: 0.67 +Nodes (3): import, types, ./core ### Community 1482 - "Community 1482" @@ -9193,13 +9239,13 @@ Nodes (6): Current Checkpoint, Execution Model, Goal, Remaining Work, useQuery A ### Community 1656 - "Community 1656" -Cohesion: 0.67 -Nodes (3): Codebase, External references, References +Cohesion: 0.22 +Nodes (8): Architecture overview, Data flow: an edit, Electron architecture, Further reading, Peer scoring, Security layer, Transport layer, Update batching ### Community 1657 - "Community 1657" -Cohesion: 0.67 -Nodes (3): Four-layer extensibility system, Plugin middleware system, Plugin Development Guide +Cohesion: 0.20 +Nodes (10): Commands, createDatabaseReferenceAttrs(), createDatabaseReferenceMarkdownPayload(), DatabaseReferenceAttrs, databaseReferenceClickPluginKey, DatabaseReferenceExtension, DatabaseReferenceMarkdownAttrs, DatabaseReferenceOptions (+2 more) ### Community 1658 - "Community 1658" @@ -9923,8 +9969,8 @@ Nodes (5): Block Graph Performance Research, Temp IDs and Relation References, F ### Community 1802 - "Community 1802" -Cohesion: 0.67 -Nodes (3): Dependencies, Implementation Notes, Package Structure +Cohesion: 0.53 +Nodes (4): isSQLiteCorruptionError(), isSQLiteCorruptionErrorInternal(), SQLiteErrorLike, toErrorLike() ### Community 1803 - "Community 1803" @@ -10011,11 +10057,6 @@ Nodes (5): Comparison, DNS Setup, Domain Strategy: `xnet.fyi`, Option 1: Subpath Cohesion: 0.40 Nodes (5): 1.1 Replace Hardcoded Identity with Passkey Auth, 1.2 Add Hub Connection (Sync), 1.3 Add Demo UI Components, 1.4 Wire Onboarding Into Root Layout, Phase 1: Wire Up the Web App (apps/web) -### Community 1820 - "Community 1820" - -Cohesion: 0.23 -Nodes (14): createGenericExternalReferenceDescriptor(), describeEmbedReference(), detectEmbedProvider(), EMBED_PROVIDERS, EmbedProvider, ExternalReferenceDescriptor, ExternalReferenceKind, ExternalReferenceProvider (+6 more) - ### Community 1821 - "Community 1821" Cohesion: 0.40 @@ -10166,11 +10207,6 @@ Nodes (5): 🏗️ Implementation Patterns, Pattern 1: Hook-Based (React Compone Cohesion: 0.40 Nodes (5): 💡 Phase 3: Developer Experience (Weeks 5-6), @xnetjs/canvas - Rendering Performance ✅ **COMPLETE**, @xnetjs/editor - Rich Text Performance ✅ **COMPLETE**, @xnetjs/query - Query Performance ✅ **COMPLETE**, @xnetjs/views - Table/Board Rendering ✅ **COMPLETE** -### Community 1851 - "Community 1851" - -Cohesion: 0.25 -Nodes (13): useBackup(), UseBackupReturn, BackupUploadResult, buildAuthHeader(), decodeEncrypted(), downloadBackup(), downloadEncryptedBackup(), encodeEncrypted() (+5 more) - ### Community 1852 - "Community 1852" Cohesion: 0.40 @@ -10943,8 +10979,8 @@ Nodes (4): 8.1 How History Works, 8.2 API Design, 8.3 History-Aware Includes, Pa ### Community 2006 - "Community 2006" -Cohesion: 0.67 -Nodes (3): import, types, ./core +Cohesion: 0.08 +Nodes (12): BundledPluginInstaller(), InstallPluginDialogProps, PluginCardProps, PluginManager(), BundledPluginInstaller(), InstallPluginDialogProps, PluginCardProps, PluginManager() (+4 more) ### Community 2007 - "Community 2007" @@ -11006,6 +11042,11 @@ Nodes (4): Part 1: How xNet Stores Content Today, The Dual Storage System, The Y Cohesion: 0.50 Nodes (4): Environment Variables, Railway Deployment Configuration, railway.toml (Demo Hub), Volume +### Community 2020 - "Community 2020" + +Cohesion: 0.15 +Nodes (11): AwarenessSnapshotHandler, AwarenessSnapshotUsers, ConnectionStatus, createIPCSyncManager(), DevToolsEventBus, DocType, LifecycleHandler, ReconciliationHandler (+3 more) + ### Community 2021 - "Community 2021" Cohesion: 0.50 @@ -11191,6 +11232,11 @@ Nodes (4): Capability Cache Design, Eventual Consistency Tradeoffs, Part 7: Offl Cohesion: 0.50 Nodes (4): Key Insight: The Dual-Layer Model, Part 1: The Core Tension: Flexibility vs. Cryptography, The Integration Challenge, Two Worlds, One Authorization System +### Community 2058 - "Community 2058" + +Cohesion: 0.18 +Nodes (11): createSignalingService(), createTopic(), getMessageTopics(), isStringArray(), MessageInterceptor, publish(), send(), SignalingMessage (+3 more) + ### Community 2059 - "Community 2059" Cohesion: 0.50 @@ -11733,8 +11779,13 @@ Nodes (4): Hybrid Sync Architecture, Implementation, Sync Flow, Why Hybrid? ### Community 2167 - "Community 2167" -Cohesion: 0.40 -Nodes (5): Additional Hooks, Comment Hooks, History Hooks, Hub Hooks, Plugin Hooks +Cohesion: 0.17 +Nodes (12): Background Sync Manager, MetaBridge, NodePool, NodePool Registry OfflineQueue, OfflineQueue, Orchestration layer, Registry, Sync Architecture (+4 more) + +### Community 2168 - "Community 2168" + +Cohesion: 0.67 +Nodes (3): Integration Strategy, The y-crdt (yrs) Opportunity, yrs vs yjs Comparison ### Community 2169 - "Community 2169" @@ -11756,6 +11807,11 @@ Nodes (4): Federated Query Engine, Query Across the Network, Query Planning, Que Cohesion: 0.50 Nodes (4): Lightweight Consensus, Proof of Storage, Validation & Consensus, What Needs Consensus +### Community 2173 - "Community 2173" + +Cohesion: 0.67 +Nodes (3): Prompt Injection and Retrieval Security, Recommended pipeline, Why xNet AI is especially exposed + ### Community 2174 - "Community 2174" Cohesion: 0.50 @@ -11783,8 +11839,8 @@ Nodes (3): 0.0.2, Patch Changes, @xnetjs/storage ### Community 2180 - "Community 2180" -Cohesion: 0.33 -Nodes (6): 2.1 Configure Vite Base Path, 2.2 Configure TanStack Router Base Path, 2.3 Update PWA Manifest, 2.4 SPA Fallback on GitHub Pages, 2.5 Update deploy-site.yml, Phase 2: Serve from the Site (CI Pipeline) +Cohesion: 0.27 +Nodes (9): createSocialCanvasProjectionPlan(), SocialCanvasEdgeDraft, SocialCanvasNodeDraft, SocialCanvasProjectionOptions, SocialCanvasProjectionPlan, SocialProjectionEdgeInput, SocialProjectionNodeInput, SocialProjectionNodeKind (+1 more) ### Community 2181 - "Community 2181" @@ -11946,6 +12002,11 @@ Nodes (3): Existing P2P Discovery Mechanisms, Landscape Analysis, What xNet Alre Cohesion: 0.67 Nodes (3): Codebase Inventory, Dependency Graph with Rewrite Candidates, Package Sizes & Classification +### Community 2213 - "Community 2213" + +Cohesion: 0.27 +Nodes (8): CanvasTileAwarenessFanoutPlan, CanvasTileAwarenessRoomPlan, CanvasTilePresenceParticipant, countRoomPeerDeliveries(), createCanvasTileRoomId(), createTileAwarenessFanoutPlan(), CreateTileAwarenessFanoutPlanInput, normalizeRoomPrefix() + ### Community 2214 - "Community 2214" Cohesion: 0.67 @@ -12038,8 +12099,8 @@ Nodes (3): Executive Summary, Main thesis, The shortest useful recommendation ### Community 2232 - "Community 2232" -Cohesion: 0.50 -Nodes (4): 9.1 Why Datalog Matters, 9.2 Translation to Datalog-Like Evaluation, 9.3 Incremental View Maintenance, Part 9: Datalog Semantics Under the Hood +Cohesion: 0.22 +Nodes (9): Field-level LWW decision, BLAKE3 integrity, Hybrid classical post-quantum cryptography stack, Security levels, XChaCha20-Poly1305 encryption, SignedYjsEnvelope, Sync Guide, Lamport clocks (+1 more) ### Community 2233 - "Community 2233" @@ -12048,8 +12109,8 @@ Nodes (3): Affinity Clusters and Mixture-of-Experts Routing, Important nuance, W ### Community 2234 - "Community 2234" -Cohesion: 0.03 -Nodes (90): createCanvasFarZoomEdgeSummaries(), createCanvasMinimapRelationshipHints(), buildCanvasPerformanceScene(), calculateBounds(), CanvasPerformanceSceneOptions, CONTENT_NODE_SEQUENCE, createCanvasPerformanceSceneDoc(), createClusterGroup() (+82 more) +Cohesion: 0.05 +Nodes (59): buildCanvasPerformanceScene(), calculateBounds(), CanvasPerformanceSceneOptions, CanvasPerformanceSceneSeedResult, CanvasPerformanceSceneSummary, CONTENT_NODE_SEQUENCE, createCanvasPerformanceSceneDoc(), createClusterGroup() (+51 more) ### Community 2235 - "Community 2235" @@ -12073,23 +12134,28 @@ Nodes (3): The source of truth rule, Timeline classes, Timelines as Derived View ### Community 2239 - "Community 2239" -Cohesion: 0.50 -Nodes (4): 3.1 Update Hub Handshake Response, 3.2 Update Network Package Types, 3.3 Update SyncManager State, Phase 3: Hub Handshake Demo Info (Day 2) +Cohesion: 0.20 +Nodes (10): dependencies, nanoid, @xnetjs/core, @xnetjs/crypto, @xnetjs/identity, @xnetjs/sqlite, @xnetjs/storage, @xnetjs/sync (+2 more) ### Community 2240 - "Community 2240" Cohesion: 0.50 -Nodes (4): Part 4: Deep Dive: UCAN vs Alternatives, The Hybrid Model: UCAN + CRDT, UCAN's Limitations for Node-Level Permissions, Where UCAN Shines vs Where It Struggles +Nodes (4): 9.1 Why Datalog Matters, 9.2 Translation to Datalog-Like Evaluation, 9.3 Incremental View Maintenance, Part 9: Datalog Semantics Under the Hood ### Community 2241 - "Community 2241" Cohesion: 0.67 Nodes (3): Core rule, User Requirement: Canonical Chat, Pluggable Models, Why this matters +### Community 2242 - "Community 2242" + +Cohesion: 0.50 +Nodes (4): 3.1 Update Hub Handshake Response, 3.2 Update Network Package Types, 3.3 Update SyncManager State, Phase 3: Hub Handshake Demo Info (Day 2) + ### Community 2243 - "Community 2243" -Cohesion: 0.67 -Nodes (3): Integration Strategy, The y-crdt (yrs) Opportunity, yrs vs yjs Comparison +Cohesion: 0.20 +Nodes (9): Conditional hooks, Create and navigate, Debounced updates, Error boundaries, Hook Patterns, List + detail pattern, Related, Stable filter references (+1 more) ### Community 2244 - "Community 2244" @@ -12256,15 +12322,15 @@ Nodes (3): External References, References, Repository References Cohesion: 0.67 Nodes (3): Features To Pause Or Coalesce During Fast Batch Writes, Pause Only Behind Explicit Policy, Safe To Pause Or Coalesce By Default -### Community 2277 - "Community 2277" +### Community 2278 - "Community 2278" -Cohesion: 0.67 -Nodes (3): Backing Datastores and Caches, Required caches, Required stores +Cohesion: 0.50 +Nodes (3): ensurePromiseWithResolvers(), PromiseConstructorWithResolvers, PromiseWithResolvers ### Community 2279 - "Community 2279" -Cohesion: 0.67 -Nodes (3): External Research, Key Sources, xNet Repo +Cohesion: 0.33 +Nodes (6): Core Hooks, Materialized views, Remote and stream queries, `useMutate` -- Write Data, `useNode` -- Rich Text Editing, `useQuery` -- Read Data ### Community 2280 - "Community 2280" @@ -12296,47 +12362,142 @@ Nodes (3): Deployment Order, Infrastructure Priority, Phase 4: Infrastructure (O Cohesion: 0.67 Nodes (3): ./import/node, import, types +### Community 2299 - "Community 2299" + +Cohesion: 0.50 +Nodes (4): Part 4: Deep Dive: UCAN vs Alternatives, The Hybrid Model: UCAN + CRDT, UCAN's Limitations for Node-Level Permissions, Where UCAN Shines vs Where It Struggles + +### Community 2300 - "Community 2300" + +Cohesion: 0.22 +Nodes (7): authorDID, DocEditor(), identity, nodeStorage, params, seed, userNum + ### Community 2301 - "Community 2301" -Cohesion: 0.67 -Nodes (3): ./importers, import, types +Cohesion: 0.40 +Nodes (5): 3.1 Hero CTA, 3.2 Nav Link, 3.3 Fix Download Page Dead Link, 3.4 GetStarted Section, Phase 3: Landing Page Integration + +### Community 2302 - "Community 2302" + +Cohesion: 0.31 +Nodes (4): createLocalQueryEngine(), LocalQueryEngine, matchesFilter(), matchesFilters() ### Community 2303 - "Community 2303" Cohesion: 0.67 Nodes (3): Forms of Decentralized AI, Main claim, Practical forms -### Community 2316 - "Community 2316" +### Community 2306 - "Community 2306" + +Cohesion: 0.33 +Nodes (5): IndexedDoc, SearchableDocument, SearchIndex, SearchIndexOptions, SearchModerationSignals + +### Community 2307 - "Community 2307" + +Cohesion: 0.40 +Nodes (5): Additional Hooks, Comment Hooks, History Hooks, Hub Hooks, Plugin Hooks + +### Community 2308 - "Community 2308" + +Cohesion: 0.29 +Nodes (6): createSyncProtocol(), SyncMessageV2, SyncProtocol, SyncProtocolConfig, resolveSyncReplicationPolicy(), SyncMessage + +### Community 2309 - "Community 2309" Cohesion: 0.67 -Nodes (3): Prompt Injection and Retrieval Security, Recommended pipeline, Why xNet AI is especially exposed +Nodes (3): Codebase, External references, References + +### Community 2310 - "Community 2310" + +Cohesion: 0.67 +Nodes (3): External Research, Key Sources, xNet Repo + +### Community 2311 - "Community 2311" + +Cohesion: 0.67 +Nodes (3): Four-layer extensibility system, Plugin middleware system, Plugin Development Guide + +### Community 2312 - "Community 2312" + +Cohesion: 0.67 +Nodes (3): Dependencies, Implementation Notes, Package Structure + +### Community 2313 - "Community 2313" + +Cohesion: 0.36 +Nodes (6): createSyncLifecycleState(), deriveSyncLifecyclePhase(), SyncConnectionStatus, SyncLifecycleInput, SyncLifecyclePhase, SyncLifecycleState + +### Community 2314 - "Community 2314" + +Cohesion: 0.29 +Nodes (7): Understanding xNet for AI Assistants, No-backend AI assistance model, Local-First, Offline-first local data model, Offline Support, AI no-backend mental model, Complete LLM documentation bundle + +### Community 2315 - "Community 2315" + +Cohesion: 0.40 +Nodes (5): AccessibleButton, AccessibleButtonProps, AccessibleIconButton, AccessibleIconButtonProps, ButtonProps ### Community 2317 - "Community 2317" Cohesion: 0.67 Nodes (3): Phase 0: Setup & Foundations (Weeks 0-4), Week 0: Monorepo Setup, Weeks 1-4: Phase 0 Foundations +### Community 2318 - "Community 2318" + +Cohesion: 0.40 +Nodes (5): 🔧 Phase 4: Specialized Features (Weeks 7-8), @xnetjs/formula - Expression Evaluation ✅ **COMPLETE**, @xnetjs/history - Time Travel ✅ **COMPLETE**, @xnetjs/plugins - Sandbox Execution ✅ **COMPLETE**, @xnetjs/vectors - Vector Search ✅ **COMPLETE** + +### Community 2319 - "Community 2319" + +Cohesion: 0.50 +Nodes (4): Calendar Integration for ERP, ERP Integration Points, Task Notifications, Workflow Notifications + +### Community 2320 - "Community 2320" + +Cohesion: 0.50 +Nodes (4): Deployment Options, Option 1: Same Machine (Simplest), Option 2: Home Server / NAS, Option 3: Cloud VPS (Self-Hosted) + +### Community 2321 - "Community 2321" + +Cohesion: 0.50 +Nodes (4): Implementation Priority, Long-Term (Year 4+), Mid-Term (Year 3), Near-Term (Year 2) + +### Community 2322 - "Community 2322" + +Cohesion: 0.67 +Nodes (3): External Research, Key Sources, xNet Repo + +### Community 2323 - "Community 2323" + +Cohesion: 0.67 +Nodes (3): Backing Datastores and Caches, Required caches, Required stores + +### Community 2325 - "Community 2325" + +Cohesion: 0.67 +Nodes (3): ./lenses, import, types + ## Knowledge Gaps -- **16806 isolated node(s):** `Problem Statement`, `Executive Summary`, `Architecture map`, `Read path anatomy (useQuery)`, `Query execution anatomy (NodeStore → SQLite)` (+16801 more) +- **16893 isolated node(s):** `Problem Statement`, `Executive Summary`, `The Task node already exists and is rich`, `Surface-by-surface inventory`, `Prior explorations that constrain this design` (+16888 more) These have ≤1 connection - possible missing edges or undocumented components. -- **238 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **243 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `Listener` connect `React Use Auth Hooks` to `Canvas Node Edge Position`, `Sync Features Provider Base`, `Site Crdts Dual Crdt`, `Devtools Schema Registry Use`, `Electron Data Process Manager`, `Views Property Handler Editor`, `Plugins Contributions Typed Registry`, `Identity Key Bundle Entry`, `Data Store Node Storage`, `React Sync Manager Connection`, `Data Evaluator Default Policy`, `Telemetry Manager Tier Consent`, `Sync Change Telemetry Manager`, `Electron Cloudflare Tunnel Manager`?** +- **Why does `Listener` connect `React Use Auth Hooks` to `Canvas Node Edge Position`, `Community 2277`, `Social Reddit Ids Create`, `Sync Features Provider Base`, `Site Crdts Dual Crdt`, `Electron Data Process Manager`, `Views Property Handler Editor`, `Plugins Contributions Typed Registry`, `Identity Key Bundle Entry`, `Data Store Node Storage`, `Community 792`, `Telemetry Manager Tier Consent`, `Sync Change Telemetry Manager`, `Community 1820`?** _High betweenness centrality (0.024) - this node is a cross-community bridge._ -- **Why does `hashHex()` connect `Abuse Content Fingerprint Crypto` to `Views Grid Peek File`, `Ui Settings View Stories`, `React Saved View Visual`, `Crypto Envelope Key Resolution`, `Sync Change Clock Yjs`, `Hub Relay Sync Yjs`, `Data System Comment Anchors`, `Identity Did Create Crypto`, `Social Tiktok Map Tik`, `Electron Social Workspace Get`?** - _High betweenness centrality (0.021) - this node is a cross-community bridge._ -- **Why does `cn()` connect `React Context Internal Use` to `Views View Config Use`, `Electron Canvas View Query`, `Views Use Gallery State`, `Community 782`, `Editor React Canvas External`, `Editor Items Slash Command`, `Views Database Surface Stories`, `Data Embed Registry Evaluate`, `Views Use Calendar State`, `Canvas Core Summary Workers`, `Views Property Handler Editor`, `Hub Create Instance Awareness`, `Canvas Frame Export Create`, `Abuse Decision Adapters Telemetry`, `Canvas Performance Validation Snap`, `Data Awareness Registry Updates`, `Data Query Sqlite Adapter`, `Editor File Extension Drop`, `Editor Mermaid Extension Node`, `Editor Task Mention Extension`, `Plugins Middleware Chain Node`, `Views Add Column Modal`, `Editor Callout Extension Node`, `Views Use Timeline State`, `Canvas Use Comments Comment`, `Plugins Erp Prototype Canvas`, `Editor Drag Drop Plugin`, `Sqlite Web Proxy Config`?** - _High betweenness centrality (0.018) - this node is a cross-community bridge._ -- **What connects `Problem Statement`, `Executive Summary`, `Architecture map` to the rest of the system?** - _16833 weakly-connected nodes found - possible documentation gaps or missing edges._ +- **Why does `cn()` connect `Canvas Ingestion Use Object` to `Views View Config Use`, `Electron Canvas View Query`, `React Package Core Import`, `Views Use Gallery State`, `Harness Database Undo Force`, `Identity Keys Passkey Generate`, `Community 2315`, `Community 782`, `Editor React Canvas External`, `Editor Items Slash Command`, `Sync Deprecation Clientid Attestation`, `Views Database Surface Stories`, `Data Embed Registry Evaluate`, `Views Use Calendar State`, `React Context Internal Use`, `Social Reddit Ids Create`, `Social Browser Ids Archive`, `Canvas Core Summary Workers`, `Community 1211`, `Canvas Performance Validation Snap`, `Data Awareness Registry Updates`, `Community 1474`, `Electron App Settings View`, `Data Query Sqlite Adapter`, `Editor File Extension Drop`, `Editor Mermaid Extension Node`, `Editor Task Mention Extension`, `Views Add Column Modal`, `Editor Callout Extension Node`, `Canvas Use Comments Comment`, `Plugins Erp Prototype Canvas`, `Editor Drag Drop Plugin`, `Sqlite Web Proxy Config`?** + _High betweenness centrality (0.017) - this node is a cross-community bridge._ +- **Why does `hashHex()` connect `Abuse Content Fingerprint Crypto` to `Views Grid Peek File`, `Abuse Usage Events Create`, `Ui Settings View Stories`, `Social Core Stage Archive`, `Canvas Branches Conversion Creation`, `Crypto Envelope Key Resolution`, `Identity Ucan Create Share`, `Data System Comment Anchors`, `Sync Change Clock Yjs`, `Community 1117`?** + _High betweenness centrality (0.017) - this node is a cross-community bridge._ +- **What connects `Problem Statement`, `Executive Summary`, `The Task node already exists and is rich` to the rest of the system?** + _16920 weakly-connected nodes found - possible documentation gaps or missing edges._ - **Should `Canvas Controller Annotations Page` be split into smaller, more focused modules?** - _Cohesion score 0.01395753895400838 - nodes in this community are weakly interconnected._ + _Cohesion score 0.01741012610577828 - nodes in this community are weakly interconnected._ - **Should `Canvas Node Edge Position` be split into smaller, more focused modules?** - _Cohesion score 0.024840434707607384 - nodes in this community are weakly interconnected._ + _Cohesion score 0.02042825498400197 - nodes in this community are weakly interconnected._ - **Should `Canvas V2Legacy Viewport Node` be split into smaller, more focused modules?** - _Cohesion score 0.022400676246830092 - nodes in this community are weakly interconnected._ + _Cohesion score 0.03450134770889488 - nodes in this community are weakly interconnected._ diff --git a/graphify-out/graph.html b/graphify-out/graph.html index 0c363e772..a91d3c18e 100644 --- a/graphify-out/graph.html +++ b/graphify-out/graph.html @@ -67,8 +67,8 @@

    Communities