Files
2026-07-09 11:15:35 -04:00

60 lines
2.7 KiB
Markdown

# 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
- Skald is production software; prefer small, scoped maintenance changes with
focused verification.
- Use a temporary local plan file only for large or risky batches that need a
resumable checklist.
- Building the Arch package updates `distro-packages/Arch-Linux/skald-git/PKGBUILD`
with the generated `pkgver`, so this file is often dirty after package builds.
- 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.