Commit Graph
18 Commits
Author SHA1 Message Date
ancsemi 90aabb428c Show the community server's status on the homepage 2026-10-17 12:35:02 -04:00
ancsemi 92738c2b09 Replace em dashes in server code comments and scripts 2026-10-10 16:08:55 -04:00
ancsemi 0b8c04e708 Replace em dashes in the English UI text and messages 2026-10-10 16:08:54 -04:00
Bernardo Costa e39ad073b6 fix(ci): tolerate translations-only label failure on fork PRs (#5717)
Fork PRs run the pull_request workflow with a read-only token, so
'gh label create' and the retry 'gh pr edit --add-label' fail when the
translations-only label does not exist yet, failing the whole validate
job even though locale validation passed (seen on #5716). Labeling is
best-effort: add continue-on-error and tolerate the final edit failure.
2026-10-02 23:17:53 -04:00
ancsemi 23f973c3eb Add issue forms: a bug report that asks for the version, where Haven is used and a screenshot, a feature request, and links to Discussions and the guide 2026-09-29 19:17:08 -04:00
ancsemi 2f6eeb98c3 Translations check: file names from a pull request reach the script as data, not as text pasted into it 2026-09-23 20:50:37 -04:00
ancsemi 4f99bd1aab ci: publish per-arch Docker tags and merge them, fixing arm64 dropping out of the multi-arch image (#5439) 2026-07-13 07:18:09 -04:00
ancsemi 24be24db8f feat(#5357): auto-validate translation-only PRs
The ask was to decouple translations from the release cycle so
community translators don't have to wait on a maintainer to merge
strings. Loading translations from a CDN was offered, but pulling
untrusted JSON into the UI at runtime adds attack surface and breaks
the offline-friendly self-hosted story.

Instead, automate the merge path that already exists:

- New scripts/validate-locales.js checks every public/locales/*.json
  for JSON validity, _meta fields, and shape compatibility with
  en.json (same key paths, same value types). Missing keys are
  warnings (partial translations are OK, English is the fallback).
  Also runnable locally with 'npm run validate-locales'.
- New .github/workflows/translations-autovalidate.yml runs that
  validator on every PR that touches public/locales/**. If the PR is
  translations-only (no en.json, no code) and validation passes,
  it labels the PR 'translations-only' and turns on GitHub's
  auto-merge so it goes in as soon as required checks are green.
- Workflow runs on pull_request (not pull_request_target) so it
  cannot read secrets from fork PRs.
2026-05-23 23:31:04 -04:00
ancsemi 9ad3f478b7 ci: upgrade actions/checkout to v5 (Node.js 24 compatibility) 2026-05-23 12:35:55 -04:00
ancsemi 7559451e2b ci: build docker amd64+arm64 on native runners (no QEMU)
QEMU emulation of arm64 for npm ci + better-sqlite3 native
compilation was intermittently hitting SIGILL (exit 132) due
to emulator resource exhaustion on shared runners.

Restructured to use a build matrix with ubuntu-latest (amd64)
and ubuntu-24.04-arm (arm64) native runners, push each arch
as a digest, then merge into a combined manifest in a final job.
2026-03-03 22:16:21 -05:00
ancsemi a3f75d3720 v2.2.5 Remove desktop app, security fixes, bug fixes
- Remove desktop/ directory and all desktop-grafted code from server
- Fix missing express-rate-limit import (server crash on startup)
- Validate webhook avatar_url protocol (block data: URI tracking)
- FORCE_HTTP support for reverse proxies (#48)
- Auto-assign default roles (#14)
- SSRF bypass prevention in link previews
- JWT admin claim verification from DB (13 endpoints)
- Path traversal fix in avatar uploads
- mark-read membership check
- transfer-admin race condition mutex
- Server-side sanitizeText() defense-in-depth
- broadcastChannelLists debounce (DoS fix)
- reorder-channels capped at 500
- Role color XSS prevention (server + client)
- Screen share quality controls, black screen fixes
- SSL setup script, cross-platform gameplan doc
- Website & docs updated to v2.2.5
2026-02-23 21:52:38 -05:00
ancsemiandUSBAkimbo a8207db578 fix: Docker image tags now include release version instead of hardcoded suffix (#53)
Per-platform builds were tagged as build-amd64/build-arm64 with no version,
so every release overwrote the same intermediate tags. Now uses
github.ref_name (e.g. v2.2.1-amd64) so each release is properly versioned.
Also fixed the merge loop to iterate newline-delimited metadata output
instead of splitting on commas.

Co-authored-by: USBAkimbo <71508071+USBAkimbo@users.noreply.github.com>
2026-02-22 13:37:07 -05:00
ancsemi 273b249bdb fix: Docker CI lowercase, auto-assign refresh, screen share quality settings
- Docker CI: lowercase IMAGE_NAME so tags are valid (#47)
- Roles: refresh detail panel after save so auto-assign reflects server state (#14)
- Roles: broadcast roles-updated after update-role so other admins stay in sync
- Screen share: constrain resolution/framerate via getDisplayMedia (#50)
- Screen share: cap bitrate per resolution via setParameters
- Screen share: quality picker in voice settings (720p/1080p/1440p/source, 15/30/60fps)
- Screen share: persist quality preferences in localStorage
2026-02-21 22:16:01 -05:00
ancsemi a6c43159e0 chore: bump to v2.2.2, fix Docker ARM build, update website and changelog 2026-02-21 13:30:54 -05:00
tylerobara 16bca65781 Add QEMU and Buildx for ARM64 Docker builds (#34)
Signed-off-by: tylerobara <49762914+tylerobara@users.noreply.github.com>
2026-02-18 16:05:46 -05:00
ancsemi 98a9a34b8a feat: image lightbox, DM auto-focus, voice profile clicks, Docker CI, version bump
- Image thumbnails (180px) w/ click-to-enlarge lightbox overlay (replaces window.open)
- Client setting to switch between thumbnail and full-width Discord-style images
- Auto-focus message input when switching channels/DMs
- Voice chat usernames now clickable to open profile popup (bio, DM, etc.)
- Automated Docker image publishing via GitHub Actions on release (GHCR)
- Updated website, docs, and README to v1.9.1
2026-02-18 11:55:42 -05:00
ancsemi b0fa2264b9 v1.8.2 PiP revert, YouTube playlists, bot modal fixes, 5 bug fixes, release tarball workflow
- Reverted PiP to native browser system (draggable across screens)
- YouTube playlist controls now work (list= param preserved in embed URL)
- YouTube auto-advance on video end for playlists
- Bot Updated toast fixed from red/error to green/success
- Toast z-index raised above modals
- Bot channel dropdown ordered with sub-channel indentation
- Uncategorized DMs now collapsible with localStorage persistence
- HTTPS redirect uses actual host instead of hardcoded localhost
- Removed duplicate /api/upload-avatar route, added 2MB size check
- Guarded global get-webhooks handler to not conflict with per-channel
- E2E safety number now full 60 digits (SHA-512 instead of SHA-256)
- Reset YouTube playlist flag on Spotify URLs
- GitHub Actions workflow attaches haven.tar.gz with fixed dir name (closes #22)
2026-02-17 03:15:42 -05:00
ancsemi 7d2074b68d Add FUNDING.yml to enable Sponsor button with Ko-fi link 2026-02-12 12:45:34 -05:00