Checkpoint audio-only Skald fork work

This commit is contained in:
Storm Dragon
2026-05-18 13:06:57 -04:00
parent a8ada950d5
commit 965347cad4
48 changed files with 1080 additions and 3651 deletions
+64
View File
@@ -0,0 +1,64 @@
# Skald Project Instructions
Skald is a hard fork of Galene into an audio-only, hall-based conferencing
server.
## Direction
- Treat Skald as incompatible with Galene unless compatibility is explicitly
requested.
- Do not add legacy Galene routes, config fallbacks, protocol shims, migration
behavior, or compatibility aliases by default.
- Replace Galene branding and group/room terminology with Skald and hall
terminology everywhere practical.
- Apply renames and removals thoroughly. When changing a concept, route,
command, UI label, config key, file name, or behavior, search for every
related surface and update even small details such as tests, examples, help
text, comments, docs, error messages, CSS selectors, and generated/static
asset references.
- Remove video behavior rather than hiding it.
- Reject incoming video intentionally.
- Recordings should become single mixed Ogg Opus audio files.
## Workflow
- Use `todo.txt` as the source of truth for staged work.
- Preserve the todo status markers:
- `-` means open.
- `+` means implemented, needs testing.
- `X` means tested and done.
- Work in small batches and update `todo.txt` only for items actually completed
or tested.
- Before beginning a new phase or section, review all earlier `+` and `X`
sections in `todo.txt`; confirm their status still matches the code, tests,
docs, and user-facing surfaces, and downgrade stale `X` markers when evidence
no longer supports them.
- Keep changes scoped to the current batch. Do not mix in unrelated cleanup.
- Before behavior changes, inspect the current code path and tests rather than
assuming Galene behavior still applies.
## Verification
- Run the narrowest useful verification for each change.
- For Go changes, prefer focused package tests first, then broader
`go test ./...` when the change crosses packages.
- For frontend changes, verify renamed assets load and keyboard-accessible
controls still work where practical.
- For shell script changes, run `shellcheck`.
- If verification is not possible, state that plainly.
## Accessibility
- The browser UI must be fully screen-reader accessible, not merely visually
simplified.
- Dynamic conference events must be announced through appropriate live regions
so screen readers read important changes automatically. This includes chat
messages, participant joins and leaves, raised hands, recording state changes,
moderation actions, connection status changes, and errors that require user
attention.
- Use polite live regions for routine updates and assertive live regions only
for urgent or blocking errors.
- Avoid duplicate announcements when updating visible text and live-region text.
- The browser UI must be audio-only and keyboard accessible.
- Preserve labels or accessible names when removing or reworking controls.
- Do not rely on visual layout, sound, or color alone to communicate state.