chore: track the graphify knowledge graph and the bug-hunt ledger (#1381)

* chore: track the graphify knowledge graph and the bug-hunt ledger

Both were local-only, so a clone — including a cloud session, which sees
only tracked files — started with no graph and no findings history.

graphify-out/: the top-level built graph is now tracked so a fresh clone can
query it without a rebuild. Subdirectories stay ignored: cache/ is a
per-machine AST cache, and graphify parks the previous graph in a dated
YYYY-MM-DD/ backup on every rebuild (18 MB of stale duplicate, a local
rollback aid rather than shared state).

.gitattributes marks the tree -text: the repo-wide `* text=auto eol=lf` rule
would otherwise rewrite line endings inside .graphify_labels.json.sig, which
signs the labels byte-for-byte, and invalidate the signature on checkout.
graph.json/graph.html also get -diff, and the tree is linguist-generated so
it stays out of language stats and collapses in review.

.superpowers/: findings-ledger.json, its FINDINGS.md render and
render-ledger.mjs are tracked so contributors can add findings by PR. Hunt
transcripts, .bak snapshots and debris patches remain per-session scratch.

Tradeoff accepted deliberately: the post-commit rebuild hook rewrites
graph.json, so each refresh writes a fresh ~18 MB blob into history. Refresh
it in its own commit rather than folding it into an unrelated diff.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* chore(graphify): refresh the graph over the newly-tracked files

The first commit added findings-ledger.json, FINDINGS.md and render-ledger.mjs
to the tracked tree, so the post-commit rebuild picked them up and rewrote the
graph. Also ignores .pending_changes, the transient rebuild-state file.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* chore(graphify): share the PreToolUse graph-first nudge hooks

The two hook-guard hooks lived in the gitignored settings.local.json with an
absolute C:/Users path, so no other clone got them. Portable form: bare
`graphify` off PATH, and `|| exit 0` so a contributor without graphify
installed is never blocked.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* Update graph output files and manifest

- Updated binary files: graph.html and graph.json with new content.
- Added new entry for findings-ledger.json in manifest.json with updated metadata.

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
J3vb
2026-08-16 14:50:39 +02:00
committed by GitHub
co-authored by Claude Opus 5
parent 6a26f2a839
commit 150c6c42f4
14 changed files with 524743 additions and 2 deletions
+8
View File
@@ -0,0 +1,8 @@
{
"hooks": {
"PreToolUse": [
{ "matcher": "Bash|Grep", "hooks": [{ "type": "command", "command": "graphify hook-guard search || exit 0" }] },
{ "matcher": "Read|Glob", "hooks": [{ "type": "command", "command": "graphify hook-guard read || exit 0" }] }
]
}
}
+12
View File
@@ -7,3 +7,15 @@
*.ico binary
*.wasm binary
*.exe binary
# Knowledge graph (graphify) — generated, committed so a fresh clone can query
# it without rebuilding. `* text=auto eol=lf` above would rewrite line endings
# inside these on checkout, and .graphify_labels.json.sig signs the labels
# byte-for-byte, so normalization would invalidate the signature. -text opts the
# whole tree out; -diff keeps a 17 MB graph out of textual diffs.
graphify-out/** -text linguist-generated=true
graphify-out/graph.json -diff
graphify-out/graph.html -diff
# Rendered from findings-ledger.json by render-ledger.mjs — never hand-edit.
.superpowers/FINDINGS.md linguist-generated=true
+20 -2
View File
@@ -9,6 +9,7 @@ Server/.env
.claude/*
!.claude/skills/
!.claude/workflows/
!.claude/settings.json
CLAUDE.local.md
.mcp.json
@@ -67,8 +68,16 @@ node_modules/
# AI tooling
.gstack/
.claude-flow/
.superpowers/
.rust-review-results/
# Bug-hunt ledger: shared so contributors can add findings. Only the ledger,
# its render and its validator are tracked; hunt transcripts, .bak snapshots
# and debris patches are per-session scratch and stay local.
.superpowers/*
!.superpowers/findings-ledger.json
!.superpowers/FINDINGS.md
!.superpowers/render-ledger.mjs
.claude/worktrees/
# Internal dev tools (e.g. tools/livekit-server.exe) are ignored, but the
@@ -98,4 +107,13 @@ Client/tauri-client/.env
# local server run logs
server.log
graphify-out/
# Knowledge graph (graphify). The top-level built graph is tracked so a fresh
# clone can query it without a rebuild. Every subdirectory stays local: cache/
# is a per-machine AST build cache, and graphify parks the PREVIOUS graph in a
# dated YYYY-MM-DD/ backup on each rebuild — 18 MB of stale duplicate that is a
# local rollback aid, not shared state.
graphify-out/*/
# Transient graphify rebuild-state file.
graphify-out/.pending_changes
+3560
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+103
View File
@@ -0,0 +1,103 @@
// Renders .superpowers/findings-ledger.json to FINDINGS.md, and validates it.
// Run: node .superpowers/render-ledger.mjs # write FINDINGS.md
// node .superpowers/render-ledger.mjs --check # validate only
// node .superpowers/render-ledger.mjs --selftest # run built-in tests
import assert from 'node:assert/strict'
const VALID_STATUS = ['open', 'fixed', 'declined', 'refuted', 'duplicate', 'blocked']
export function validate(ledger) {
const problems = []
const ids = new Set()
for (const r of ledger.findings) {
if (ids.has(r.id)) problems.push(`duplicate id ${r.id}`)
ids.add(r.id)
if (!/^OC-\d{4}$/.test(r.id)) problems.push(`${r.id}: malformed id`)
if (!VALID_STATUS.includes(r.status)) problems.push(`${r.id}: bad status ${r.status}`)
if (r.status === 'fixed' && (!r.fix || !r.fix.commit)) problems.push(`${r.id}: fixed without a commit`)
if (r.status === 'declined' && !r.rationale) problems.push(`${r.id}: declined without a rationale`)
if (r.status === 'duplicate' && !r.duplicateOf) problems.push(`${r.id}: duplicate without duplicateOf`)
}
return problems
}
function selftest() {
assert.deepEqual(validate({ findings: [] }), [])
assert.deepEqual(
validate({ findings: [{ id: 'OC-0001', status: 'fixed', fix: null }] }),
['OC-0001: fixed without a commit'],
)
assert.deepEqual(validate({ findings: [{ id: 'bad', status: 'open' }] }), ['bad: malformed id'])
assert.deepEqual(
validate({ findings: [{ id: 'OC-0001', status: 'open' }, { id: 'OC-0001', status: 'open' }] }),
['duplicate id OC-0001'],
)
assert.deepEqual(validate({ findings: [{ id: 'OC-0002', status: 'declined' }] }), ['OC-0002: declined without a rationale'])
console.log('selftest: all assertions pass')
}
const SEV_RANK = { critical: 0, high: 1, medium: 2, low: 3 }
export function render(ledger) {
const by = (s) => ledger.findings.filter((f) => f.status === s)
const open = by('open').sort((a, b) => SEV_RANK[a.severity] - SEV_RANK[b.severity])
const blocked = by('blocked')
const fixed = by('fixed')
const declined = by('declined')
const refuted = by('refuted')
const dup = by('duplicate')
const lines = []
lines.push('# OwnCord Findings Ledger', '')
lines.push('Generated by `render-ledger.mjs`. Do not hand-edit — edit `findings-ledger.json`.', '')
lines.push(
`**${open.length} open** · ${blocked.length} blocked · ${fixed.length} fixed · ` +
`${declined.length} declined · ${refuted.length} refuted · ${dup.length} duplicate`,
'',
)
const section = (title, rows, extra) => {
if (!rows.length) return
lines.push(`## ${title}`, '')
for (const r of rows) {
lines.push(`### ${r.id}${r.severity}${r.title}`, '')
lines.push(`\`${r.file}:${r.line}\` · found ${r.found} · hunt \`${r.hunt}\` · lens \`${r.lens}\``, '')
if (r.why) lines.push(r.why, '')
if (r.repro) lines.push(`**Repro:** ${r.repro}`, '')
if (r.evidence) lines.push(`**Evidence:** ${r.evidence}`, '')
if (r.suggestedFix) lines.push(`**Suggested fix:** ${r.suggestedFix}`, '')
const e = extra && extra(r)
if (e) lines.push(e, '')
}
}
section('Open', open)
section('Blocked — fix attempted, revert-proof failed', blocked)
section('Fixed', fixed, (r) => `**Fixed:** \`${r.fix.commit}\` · test \`${r.fix.test}\` · revert-proof ${r.fix.revertProof}`)
section('Declined', declined, (r) => `**Declined:** ${r.rationale}`)
section('Refuted', refuted)
section('Duplicate', dup, (r) => `**Duplicate of** ${r.duplicateOf}`)
return lines.join('\n')
}
async function main() {
const { readFileSync, writeFileSync } = await import('node:fs')
const { dirname, join } = await import('node:path')
const { fileURLToPath } = await import('node:url')
const here = dirname(fileURLToPath(import.meta.url))
const ledger = JSON.parse(readFileSync(join(here, 'findings-ledger.json'), 'utf8'))
const problems = validate(ledger)
if (problems.length) {
for (const p of problems) console.error(`INVALID ${p}`)
process.exit(1)
}
if (process.argv.includes('--check')) {
console.log(`ledger valid: ${ledger.findings.length} finding(s)`)
return
}
writeFileSync(join(here, 'FINDINGS.md'), render(ledger) + '\n')
console.log(`wrote FINDINGS.md (${ledger.findings.length} finding(s))`)
}
if (process.argv.includes('--selftest')) selftest()
else await main()
+33
View File
@@ -17,6 +17,39 @@ CI fails on drift, and the next generator run silently discards your edit.
| `Server/ws/message_types.go` **and** `Client/tauri-client/src/lib/protocolTypes.ts` | `docs/protocol-schema.json` | `protocol-change` skill |
| `Client/tauri-client/src/generated/` | `tauri-typegen` | CI patches known typegen bugs — see `.github/workflows/ci.yml` |
## Knowledge graph (graphify)
`graphify-out/` holds a committed knowledge graph of this repo — god nodes,
communities, cross-file edges. It is checked in so a fresh clone can query it
without a rebuild.
- For codebase questions, run `graphify query "<question>"` before grepping.
`graphify path "<A>" "<B>"` for relationships, `graphify explain "<concept>"`
for one concept. These return a scoped subgraph — far smaller than
`GRAPH_REPORT.md` or raw grep output.
- Read `graphify-out/GRAPH_REPORT.md` only for broad architecture review.
- After changing code, `graphify update .` refreshes it (AST-only, no API cost).
`graphify hook install` wires that to a post-commit hook — `.git/hooks/` is not
tracked, so each clone installs it once.
- `graphify-out/cache/` is a per-machine AST cache and stays ignored.
The graph is generated: never hand-edit it, and refresh it in its own commit
rather than folding an 18 MB blob into an unrelated diff.
## Bug-hunt ledger
`.superpowers/findings-ledger.json` is the shared ledger of hunt findings —
open a PR against it to add one. `FINDINGS.md` is rendered from it:
```
node .superpowers/render-ledger.mjs # rewrite FINDINGS.md
node .superpowers/render-ledger.mjs --check # validate the ledger only
```
Statuses: `open`, `fixed`, `declined`, `refuted`, `duplicate`, `blocked`.
Never edit `FINDINGS.md` by hand — edit the ledger and re-render. Everything
else under `.superpowers/` is per-session scratch and stays local.
## Gotchas
- **Verify with the `ci-check` skill**, not with an ad-hoc `go build && go test`.
+531
View File
@@ -0,0 +1,531 @@
{
"0": "members.store.ts",
"1": "createElement",
"2": "testing.T",
"3": "livekitSession.ts",
"4": "dispatcher.ts",
"5": "openMigratedMemory",
"6": "context.Context",
"7": "buildChannelRouter",
"8": "MessageInput.ts",
"9": "attachments.ts",
"10": "telemetry.go",
"11": "waitRegistered",
"12": "types.ts",
"13": "NewAdminAPI",
"14": "Fixed",
"15": "messages_test.go",
"16": "main.ts",
"17": "net/http.HandlerFunc",
"18": "NewTestClient",
"19": "newHandlerHub",
"20": "livekitE2EE.ts",
"21": "drainChanTimeout",
"22": "buildDMRouter",
"23": "tofu.rs",
"24": "newAuthTestDB",
"25": "newMigratedTestDB",
"26": "time.Time",
"27": "Config",
"28": "secret_store.rs",
"29": "User",
"30": "database/sql.Result",
"31": "newUploadTestDB",
"32": "MainPage.ts",
"33": "writeJSON",
"34": "newAdminTestDB",
"35": "HashToken",
"36": "content-parser.ts",
"37": "ChannelSidebar.ts",
"38": "plugin/registry_test.go",
"39": "DB",
"40": "Instance",
"41": "livekit_test.go",
"42": "NewChecker",
"43": "middleware_test.go",
"44": "authStore",
"45": "DB",
"46": "testing.F",
"47": "Result",
"48": "livekit_proxy.rs",
"49": "native/helpers.ts",
"50": "NewRouter",
"51": "net/http.Handler",
"52": "totp_test.go",
"53": "newTestDB",
"54": "createLogger",
"55": "newServeHub",
"56": "OwnCord — Comprehensive Project Audit",
"57": "permissions_test.go",
"58": "seedMemberUser",
"59": "postJSONWithToken",
"60": "http_proxy.rs",
"61": "newVoiceTestDB",
"62": "messages.go",
"63": "dbgen/models.go",
"64": "ProfileManager",
"65": "README.md",
"66": "devDependencies",
"67": "itoa",
"68": "helpers_test.go",
"69": "ChannelService",
"70": "Security Policy",
"71": "Role",
"72": "channels.sql.go",
"73": "Deployment Guide",
"74": "livekit_proxy_test.go",
"75": "newEmojiService",
"76": "ws_proxy.rs",
"77": "bughunt.js",
"78": "openAdminTestDB",
"79": "db/db.go",
"80": "Tables",
"81": "newMentionFixture",
"82": "Channel",
"83": "NewWAFMiddlewareCRS",
"84": "E2EEManager",
"85": "storage_test.go",
"86": "Migrate",
"87": "Hub",
"88": "chdirTemp",
"89": "AppearanceTab.ts",
"90": "updater_test.go",
"91": "newTestMessageService",
"92": "textAssetServer",
"93": "Hub",
"94": "compilerOptions",
"95": "NewEventRingBuffer",
"96": "HandlerRegistry",
"97": "emoji_handler_test.go",
"98": "handleCreateEmoji",
"99": "doRequest",
"100": "audioPipeline.ts",
"101": "LoadOrGenerate",
"102": "Auth Endpoints",
"103": "MigrateFS",
"104": "newOverrideFixture",
"105": "Save",
"106": "REST API Reference",
"107": "NewRegistry",
"108": "voice_moderation_test.go",
"109": "ptt.rs",
"110": "OwnCord Audit — Documentation Accuracy & UI/UX Test Coverage (2026-08-04)",
"111": "scripts",
"112": "ResolveTokenHash",
"113": "Load",
"114": "handleVoiceE2EEOfferV2",
"115": "commands.rs",
"116": "newEmitTestHub",
"117": "Plan: Remediate security-hardening review regressions",
"118": "verify.go",
"119": "newRoleCRUDService",
"120": "Checker",
"121": "EnsureLiveKitBinary",
"122": "clientip_test.go",
"123": "AudioElements",
"124": "buildErrorMsg",
"125": "gif_handler_test.go",
"126": "navigateToMainPage",
"127": "messages.sql.go",
"128": "Channel Endpoints",
"129": "newSignedTestUpdater",
"130": "host_http_test.go",
"131": "Topic",
"132": "DB",
"133": "users",
"134": "Client",
"135": "identity.ts",
"136": "Queries",
"137": "Queries",
"138": "Queries",
"139": "middleware_and_spawn_test.go",
"140": "password_test.go",
"141": "newPurgeService",
"142": "handleVoiceTokenRefreshV2",
"143": "pubsub_test.go",
"144": "newChannelTestAPI",
"145": "handleLogStream",
"146": "handleSetup",
"147": "log/slog.Value",
"148": "Updater",
"149": "Credential storage",
"150": "dependencies",
"151": "newHarvestVoiceDB",
"152": "Config Key Reference",
"153": "newTestPermService",
"154": "markdown.ts",
"155": "VideoGrid.ts",
"156": "Manifest",
"157": "rate-limiter.ts",
"158": "e2e/helpers.ts",
"159": "main.test.ts",
"160": "testing.M",
"161": "newMockDB",
"162": "OwnCord",
"163": "bughunt-fix.js",
"164": "buildTauriMockScript",
"165": "OwnCord Introspection MCP Server",
"166": "Bug-detection improvements — design",
"167": "ptt.ts",
"168": "eslint-rules.js",
"169": "DB",
"170": "OwnCord — Security Review",
"171": "Plan: Slash command dispatcher in WS",
"172": "net/http.Request",
"173": "ChannelTopic",
"174": "UserService",
"175": "Blocked — fix attempted, revert-proof failed",
"176": "handlers_backup.go",
"177": "logger.ts",
"178": "fallback_crypto.rs",
"179": "Direct Messages",
"180": "WebSocket Protocol Reference",
"181": "command.go",
"182": "NewRingBuffer",
"183": "ws-load.js",
"184": "NewMessageService",
"185": "handler",
"186": "tauri-client/package.json",
"187": "screen-share-tracks.test.ts",
"188": "LoginFormApi",
"189": "social.parity.spec.ts",
"190": "fakeDirInfo",
"191": "Role Management",
"192": "User Profile & Sessions",
"193": "F3 — Voice E2EE identity keys + TOFU (the remaining work)",
"194": "run",
"195": "newWazeroTestRegistry",
"196": "newUserSvc",
"197": "plugins_handler_test.go",
"198": "badDirFile",
"199": "Contributing",
"200": ".handleFreshConnect",
"201": "mcp-introspect/package.json",
"202": "v1.2.0-alpha.1 — Discord feature parity",
"203": "Task Observer — Continuous Skill Discovery & Improvement",
"204": "scanPluginDirectory",
"205": "loadPref",
"206": "1. Channel sidebar",
"207": "Voice, Video & E2EE — target UX",
"208": "Updater",
"209": "LiveKitClient",
"210": "migrate.go",
"211": "Queries",
"212": "Messaging — target UX",
"213": "Registry",
"214": "handleChannelFocusV2",
"215": "handlers_channel_perms_test.go",
"216": "knip.json",
"217": "RNNoiseProcessor",
"218": "DeviceManager",
"219": "finish",
"220": "TestHarness",
"221": "Connection & Authentication — target UX",
"222": "Settings & Admin — target UX",
"223": "buildClientUpdateRouter",
"224": "logPersistence.ts",
"225": "newTestRoleService",
"226": "event.go",
"227": "NewTopicRateLimiter",
"228": "Skill Authoring — taxonomy, licensing, confidentiality, editing rules",
"229": ".oxlintrc.json",
"230": "message.go",
"231": "e2e/dm-system.spec.ts",
"232": "Queries",
"233": "emoji.sql.go",
"234": "OwnCord — Architectural Audit & Spec-Conformance Review",
"235": "LiveKit Setup Guide",
"236": "Voice Signaling",
"237": "Quick Start Guide",
"238": "readPump",
"239": "mockTauriFullSessionWithVoice",
"240": "index.mjs",
"241": "countingReadStateStore",
"242": "bughunt.harness.mjs",
"243": "voice-audio-tab.test.ts",
"244": "reactions.sql.go",
"245": "Channel Permission Overrides",
"246": "Server Stats & User Administration",
"247": "deep-link.ts",
"248": "EventSink",
"249": "handleChatCommandV2",
"250": "slashFS",
"251": "Running the bughunt pipeline",
"252": "OverlayManagers.ts",
"253": "reconnectAfterCertAccept",
"254": "VoiceTopic",
"255": "emoji-voicemod.parity.spec.ts",
"256": "voice-e2ee-verify.spec.ts",
"257": "include",
"258": "Queries",
"259": "Custom Emoji",
"260": "OwnCord — Test-Coverage Audit",
"261": "OriginAcceptOptions",
"262": "EventRingBuffer",
"263": "IsUniqueConstraintError",
"264": "newTokenTestDB",
"265": "scripts",
"266": "bughunt-fix.harness.mjs",
"267": "router.ts",
"268": "E2E Test Status — 2026-08-05",
"269": "render-ledger.mjs",
"270": "MountGIFRoutes",
"271": "TestMigrate_UpgradeFromMigration019PreservesData",
"272": "Queries",
"273": "TestChannelVisibility_RESTWSAgreement",
"274": "seed.go",
"275": "Finish the V2 Dispatch Migration (backlog item 11) — Design",
"276": "Port Forwarding Guide",
"277": "Chat Messages",
"278": "hello/main.go",
"279": "DMChannelInfo",
"280": "RingBuffer",
"281": "Client HTTP TOFU Proxy (D5) — Design",
"282": "create_tray",
"283": "API Tokens",
"284": "Backups",
"285": "Plugin Administration",
"286": "Invite Endpoints",
"287": "2. Code Quality",
"288": "Infrastructure roadmap — design",
"289": "Member Updates",
"290": "genprotocol/main.go",
"291": "Hub",
"292": ".finishVoiceLeave",
"293": "ChatSendCmd",
"294": "Environments, Activation Setup, and Handoff-Doc Mode",
"295": "handlePingV2",
"296": "capabilities-scope.test.ts",
"297": "savePref",
"298": "GET /admin/api/updates",
"299": "Channel-Visibility Unification (backlog item 3) — Design",
"300": "sqlc Adoption (D2) — Progress & Plan",
"301": "Authentication Flow",
"302": "Voice Moderation",
"303": "bug_report.md",
"304": "Pull Request",
"305": "prettier",
"306": "openFileDB",
"307": "hello plugin",
"308": "TestAdminAPI_PatchChannel_ArchiveCleansVoice",
"309": "window-state.ts",
"310": "Tauri HTTP Capability Narrowing — Design",
"311": "protocol_contract_test.go",
"312": "ChatCommandCmd",
"313": "ci-check",
"314": "Comprehensive Review (scheduled or fallback)",
"315": "VoiceWidgetOptions",
"316": "LiveKitProcess",
"317": "cert-tofu.spec.ts",
"318": "updater.spec.ts",
"319": "message_reactions_test.go",
"320": "tsconfig.build.json",
"321": "User Blocks",
"322": "PATCH /admin/api/settings",
"323": "GET /api/v1/gif/search",
"324": "First-Run Setup",
"325": "LiveKit Endpoints",
"326": "types.go",
"327": "Tailscale Guide (Zero-Config Remote Access)",
"328": "LiveKitProcess",
"329": "DB",
"330": "ChatEditCmd",
"331": "VoiceE2EEOfferCmd",
"332": "VoiceModDeafenCmd",
"333": "VoiceModMuteCmd",
"334": "TestHandlePresenceUpdate_BareStatusReadFailureAbortsBeforeCommit",
"335": "New",
"336": "GET /api/v1/client-update/{target}/{current_version}",
"337": "OwnCord Architecture Blueprints",
"338": "Voice End-to-End Encryption",
"339": "feature_request.md",
"340": "volume-menu.test.ts",
"341": "buildMetricsRouter",
"342": "RunningInContainer",
"343": "ChatDeleteCmd",
"344": "Permission-Middleware Consolidation (audit finding A-2026-07-16) — Design",
"345": "MessageDeletedDMEvent",
"346": "MessageEditedDMEvent",
"347": "MessageSentDMEvent",
"348": "PresenceUpdateCmd",
"349": "ReactionAddCmd",
"350": "PresenceOthersEvent",
"351": "ReactionRemoveCmd",
"352": "stubExcludeSenderEvent",
"353": "stubSequencedDMEvent",
"354": "stubVoiceChannelEvent",
"355": "stubVoiceChannelGuardedEvent",
"356": "ReactionDMEvent",
"357": "VoiceE2EEAnnounceCmd",
"358": "TypingChannelEvent",
"359": "VoiceE2EEAnnounceEvent",
"360": "VoiceModMoveCmd",
"361": "OwnCord",
"362": "OwnCord Client (Tauri v2)",
"363": "VadProcessor",
"364": "log_level_from_env",
"365": "TestHandleVoiceCameraV2_RefusedWhenScreenshareSlotFull",
"366": "VoiceE2EEOfferGuardedEvent",
"367": "File Upload and Serving",
"368": "Server Logs (SSE)",
"369": "D5 — Entity-relationship overview",
"370": "CallSignalEvent",
"371": "DMChannelOpenEvent",
"372": "MessageDeletedChannelEvent",
"373": "DM Calls",
"374": "Channel Updates",
"375": "Heartbeat and Connection Liveness",
"376": "Message Type Reference Table",
"377": "Direct Messages",
"378": "OwnCord Server (Go)",
"379": "MessageEditedChannelEvent",
"380": "CallDeclineCmd",
"381": "CallRingCmd",
"382": "MessageSentChannelEvent",
"383": "ChannelFocusCmd",
"384": "PluginBroadcastEvent",
"385": "MarkReadCmd",
"386": "PresenceSelfEvent",
"387": "ReactionChannelEvent",
"388": "TypingDMEvent",
"389": "VoiceStateEvent",
"390": "TestDeleteExpiredSessions_SargableFormat",
"391": ".EmitEvents",
"392": "stubChannelEvent",
"393": "stubUserTargetedEvent",
"394": "TestPresenceEvents_InvisibleBlanksCustomStatusForOthers",
"395": "TypingStartCmd",
"396": "VoiceCameraCmd",
"397": "VoiceDeafenCmd",
"398": "VoiceJoinCmd",
"399": "VoiceMuteCmd",
"400": "VoiceScreenshareCmd",
"401": "PresenceEvent",
"402": "errDMChannelIDsStore",
"403": "db-change",
"404": "enable_media_capture",
"405": "admin-panel.spec.ts",
"406": "start-server.sh",
"407": "Channel Focus and Read State",
"408": "Error Handling",
"409": "Presence",
"410": "Transport Layer",
"411": "pre-commit",
"412": "pre-push",
"413": "stubBroadcastAllEvent",
"416": "015_plugins.sql",
"417": "tryLoadPluginTOML",
"418": "tryLoadPluginTOML",
"424": "protocol-change/SKILL.md",
"425": "strip-appimage-bundled-libs.sh",
"426": "build.rs",
"427": "main.rs",
"428": "jitsi-rnnoise.d.ts",
"429": "stryker.config.mjs",
"430": "setup.ts",
"431": "appearance-high-contrast.test.ts",
"432": "base-font-size-css.test.ts",
"433": "vite.config.ts",
"434": "Querier",
"435": ".serialize",
"436": "lockfile_other.go",
"437": "lockfile_unix.go",
"438": "lockfile_windows.go",
"439": "free_other.go",
"440": "free_unix.go",
"441": "free_windows.go",
"442": "003_audit_log.sql",
"443": "011_rate_lockouts.sql",
"444": "014_events_table.sql",
"445": "chaos-test.sh",
"446": "voice-test.sh",
"447": "proc_spawner_nix.go",
"448": "proc_spawner_win.go",
"449": "RateLimiter",
"450": "playwright.config.ts",
"451": "playwright.config.admin.ts",
"452": "playwright.config.native.ts",
"453": "playwright.config.prod.ts",
"454": "constants.rs",
"455": "vite-env.d.ts",
"456": "smoke.test.ts",
"457": ".addEventListener",
"458": "tauri-conf-webview2-args.test.ts",
"459": "video-grid-track-muted-css.test.ts",
"460": "vitest.config.ts",
"461": "vitest.config.browser.ts",
"462": "github.com/owncord/server",
"463": "owncord-client",
"464": "auth.go",
"465": "auth/constants.go",
"466": "config/constants.go",
"467": "apitoken_queries.go",
"468": "block_queries.go",
"469": "emoji_queries.go",
"470": "invite_queries.go",
"471": "lockout_queries.go",
"472": "db/logvalue.go",
"473": "profile_queries.go",
"474": "admin.sql",
"475": "apitokens.sql",
"476": "attachments.sql",
"477": "blocks.sql",
"478": "channels.sql",
"479": "dm.sql",
"480": "emoji.sql",
"481": "events.sql",
"482": "invites.sql",
"483": "lockouts.sql",
"484": "messages.sql",
"485": "plugins.sql",
"486": "profile.sql",
"487": "reactions.sql",
"488": "roles.sql",
"489": "sessions.sql",
"490": "users.sql",
"491": "voice.sql",
"492": "diskutil.go",
"493": "004_voice_optimization.sql",
"494": "005_fix_member_permissions.sql",
"495": "006_channel_overrides_index.sql",
"496": "007_member_video_permissions.sql",
"497": "008_attachment_dimensions.sql",
"498": "attachments",
"499": "010_attachment_uploader.sql",
"500": "attachments",
"501": "013_channel_type_constraint.sql",
"502": "016_announcement_channel_type.sql",
"503": "017_user_identity_key.sql",
"504": "019_perf_indexes.sql",
"505": "020_drop_redundant_indexes.sql",
"506": "021_voice_server_moderation.sql",
"507": "023_role_management.sql",
"508": "025_channel_nsfw.sql",
"509": "026_emoji_mime.sql",
"510": "emoji",
"511": "027_user_profile_fields.sql",
"512": "028_group_dms.sql",
"513": "029_drop_sounds_table.sql",
"514": "031_sessions_expiry_index.sql",
"515": "migrations.go",
"516": "plugin/errors.go",
"517": "host_storage.go",
"518": "host_ui.go",
"519": "message_crud.go",
"520": "message_purge.go",
"521": "mutex.go",
"522": "mutex_deadlock.go",
"523": "mutex_prod.go",
"524": "emit.go",
"525": "ws/errors.go",
"526": "handlers.go",
"527": "hub_livekit.go",
"528": "hub_sweep.go",
"529": "message_types.go",
"530": ".RoundTrip",
"531": "docker-smoke.sh",
"532": "TestRegisterNow_ReplacementNeverLosesAConcurrentGlobalBroadcast",
"533": "prettier",
"534": "@vitest/browser",
"535": "@vitest/coverage-v8"
}
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
.
+1880
View File
File diff suppressed because it is too large Load Diff
+320
View File
File diff suppressed because one or more lines are too long
+509089
View File
File diff suppressed because it is too large Load Diff
+5522
View File
File diff suppressed because it is too large Load Diff