Commit Graph
55 Commits
Author SHA1 Message Date
Thore Cimbal 95ab6db12f feat: deploy full ThreadNet-Web rebuild with client-side content scanning
Auto-Deploy on Push / verify-and-notify (push) Successful in 5s
First full rebuild deployed to production (previous releases used the
widgets/element-call/-only patch workaround, fixed but not cut over in
Issue #12). Includes the new client-side scan hooks (DecryptFile.ts,
ContentMessages.ts) that cover encrypted rooms, which the server-side
Synapse module (Issue #19) structurally cannot see.
2026-07-29 16:54:50 +02:00
Thore Cimbal e9f000f87b revert: roll back VP9/AV1 codec test (Issue #11)
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
Real testing (Safari + Firefox, fresh rejoins) confirmed VP9 selection
always falls back to VP8 - our fork's buildPublishOptions() forces
simulcast:true unconditionally, which breaks LiveKit's SVC negotiation
path that vp9/av1 require. This is the same failure mode originally
suspected in the 2026-07-28 incident; the "LiveKit handles this
automatically" assumption from doc research did not hold up in
practice. Reverting to the known-safe VP8/H.264/H.265 SFU allow-list
and widget image. Root cause documented in Issue #11 for a future,
scoped fix (conditional simulcast vs. scalabilityMode per codec).
2026-07-29 07:27:38 +02:00
Thore Cimbal 3e38955c12 test: deploy VP9/AV1-enabled element-call widget (Issue #11)
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
Patches the re-enabled VP9/AV1 codec dropdown (threadnet-call) onto the
existing v0.1.0 base image. Test-only tag - to be reverted or made
permanent depending on real call test results.
2026-07-29 06:20:06 +02:00
Thore Cimbal f56f8c2479 feat: enable VP9/AV1 codecs at LiveKit SFU (Issue #11 test)
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
Appends video/VP9 and video/AV1 to the SFU's room.enabled_codecs
allow-list via matrixRTC.sfu.additional, keeping all currently
negotiated codecs unchanged. Opt-in test per Issue #11 - codecs
become selectable, not the new default.
2026-07-29 00:20:28 +02:00
Thore CimbalandClaude Sonnet 5 4d8fa5f06c fix(element-call): limit codec dropdown to codecs the SFU actually supports
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
Live-verified via matrix-rtc-sfu logs: VP9 gets silently rejected and
falls back to VP8 (SFU's enabledPublishCodecs is [VP8, H264, H265], no
VP9/AV1). Dropdown now only offers those three; also fixed
screenShareCodec's default which was "vp9" (fork commit ac99cc65 in
threadnet-call).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 23:08:58 +02:00
Thore CimbalandClaude Sonnet 5 7ff3fb65e8 i18n(element-call): add German translations for camera/screen share settings
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
The MediaQualitySettings labels moved into the Video tab had no German
translations at all (en/app.json had all 10 keys, de/app.json had none) -
fork commit f13c4b43 in threadnet-call.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 22:54:15 +02:00
Thore CimbalandClaude Sonnet 5 d8acc1e26c feat(element-call): expose camera/screen share quality settings in Video tab
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
Moved from behind the Developer-mode toggle into the regular Video
settings tab (fork commit f61650c0 in threadnet-call) - these are just
resolution/framerate/bitrate/codec pickers, not actually developer-only
functionality, just accidentally buried where most users would never
find them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 22:47:26 +02:00
Thore CimbalandClaude Sonnet 5 082817a0d7 fix(matrix-stack): shorten HelmRelease reconcile interval to 1m
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
Live-tested Issue #38's rotation: after merging the automated rotation
PR, coturn restarted quickly (Kustomization-level, 1m interval), but
synapse-main lagged behind since it depends on this separate HelmRelease
with its own 5m interval - a real (self-healing, but avoidable) window
where coturn had the new TURN secret and Synapse still had the old one,
which would reject each other's credentials/relayed media. Matching the
interval to production-apps's 1m tightens that window without needing
any new automation.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 21:40:13 +02:00
Thore CimbalandClaude Sonnet 5 0242238597 fix(coturn): remove plaintext TURN shared secret, rotate leaked value
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
Issue #38 discussion surfaced a real bug: the TURN shared secret was
duplicated - correctly SOPS-encrypted in coturn-secret.yaml, but also
hardcoded in plaintext in synapse-values.yaml (a plain, non-SOPS
ConfigMap), visible in git history. Also found turn_user_lifetime is
86400000ms (24h), not "short-lived" as previously assumed - raising the
stakes of the leak somewhat.

Extracted the turn config block into its own dedicated SOPS-encrypted
Secret (synapse-turn-secret.yaml), wired via a second HelmRelease
valuesFrom entry (same pattern already used for ess-mas-values-secret).
Rotated the value while doing this, so the leaked plaintext secret is no
longer live anywhere.

Added checksum/rotated-at annotations (matrix-stack HelmRelease's
existing element-config-checksum patch gets a sibling turn-secret-checksum;
coturn's Deployment pod template gets a rotated-at annotation) so future
rotations actually restart both consumers - Kubernetes doesn't restart
running pods when a referenced Secret's content changes on its own.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 21:05:07 +02:00
Thore CimbalandClaude Sonnet 5 c0be911797 fix: restore correct file permissions, stop tracking .DS_Store
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
Almost every tracked file in the repo had drifted to mode 777 on disk
(only files created fresh this session were unaffected), and a chunk of
that drift had already been committed as spurious +x bits on plain
YAML/Markdown files (authentik.yaml, kustomization.yaml, coturn.yaml,
element-server-suite.yaml, TASKS.md, install.md, etc.) - none of these
need to be executable. Restored to 644 for regular files, 755 only for
actual scripts (postCreateCommand.sh, docker-init.sh, install-hooks.sh,
pre-commit hook, element-setup-linux.sh).

Also found element-setup-macos.command was missing +x despite having a
shebang and being meant for double-click execution on macOS - fixed.

Added .gitignore for .DS_Store and .claude/ and stopped tracking the five
.DS_Store files that had been committed by accident.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 17:28:22 +02:00
Thore Cimbal 44aa5a918e feat: Try H.264 codec for calls instead of VP8
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
H.264 uses classic simulcast (like VP8), not SVC, so it's compatible
with the fork's simulcast-shaped publish options without needing a
code fix - unlike VP9/AV1 (see the 2026-07-28 incident notes). Also
tends to be hardware-accelerated on more devices, notably iOS/Safari.
Server-side: LiveKit has no codec restriction configured, supports
H.264 by default.
2026-07-28 16:17:23 +02:00
Thore Cimbal d24e37619c fix: Add 720p simulcast middle layer for smoother video quality
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
User reported visible artifacts/blockiness during calls. Root cause:
without an explicit simulcast_layers config, the fork defaulted to
only [180p, 360p] fallback layers below the 1440p top layer - any
minor network hiccup caused a hard cliff straight to blocky 360p
instead of a graceful step-down. Added a 720p middle rung.

VP9 retry deferred: LiveKit uses SVC for vp9/av1 instead of classic
simulcast, and the fork's buildPublishOptions() always builds
simulcast-shaped layers regardless of codec - likely the real reason
forcing vp9 broke calls entirely. Needs a code fix before retrying.
2026-07-28 16:06:24 +02:00
Thore Cimbal 3b42b220a0 fix: Raise matrixRTC authorisation service memory limit (20Mi -> 128Mi)
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
Chart default of 20Mi request+limit OOM-killed the service today after
~74 days of uptime (3rd OOM over its lifetime), causing intermittent
call setup failures unrelated to the NetworkPolicy work happening in
parallel. 20Mi is razor-thin for a long-running Go service; bumping to
a still-modest 64Mi/128Mi request/limit.
2026-07-28 15:47:47 +02:00
Thore Cimbal 65f6aa813d fix: Retry Element Call fork without forced VP9 codec preference
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
v0.2.0 forced video_codec: vp9, which broke calls entirely (no audio/
video transmitted, despite server logs showing the codec regression
fallback to VP8 working). Root cause not fully confirmed. This build
keeps the 1440p/60fps/bitrate defaults but leaves video_codec unset
(defaults to vp8) to isolate whether the codec preference itself was
the trigger.
2026-07-28 01:35:31 +02:00
Thore Cimbal ea72f5b357 revert: Roll back Element Call fork image - calls broken (no audio/video)
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
User reports calls transmit neither video nor audio with
v0.2.0-elementcall-mediaquality. Rolling back to known-good v0.1.0
while investigating; likely the video_codec: vp9 preference, not the
resolution/framerate bump.
2026-07-28 01:20:59 +02:00
Thore Cimbal baf0863a2f feat: Element Call fork with 1440p/60fps + VP9 defaults
Auto-Deploy on Push / verify-and-notify (push) Canceled after 0s
Bumps elementWeb image to a build with the embedded Element Call
widget replaced by our own fork (rohana.axion1337.de/sorb/threadnet-call,
based on emmick4/element-call:livekit / upstream PR #3736), raising
default call quality to up to 1440p/60fps camera (VP9) and 1440p/30fps
screen share. These are seeded defaults users can still adjust in
Settings, not hard-enforced caps.
2026-07-28 01:04:12 +02:00
Scrublord MacBad d37a65f4fa fix element web image version missing 2026-05-14 22:07:34 +02:00
Scrublord MacBad e6abd0fb3f feat: reinstate roomlist fork after config map fix 2026-05-14 21:59:34 +02:00
Scrublord MacBadandClaude Haiku 4.5 81a30e21b9 Fix: HelmRelease reconciliation on ConfigMap changes
- Reduce HelmRelease interval from 1h to 5m for faster sync
- Add checksum annotation to trigger reconciliation when element-values.yaml changes
- This ensures Flux CD re-deploys the chart when themes/config updates are made

To update the checksum after editing element-values.yaml:
  md5sum apps/production/custom-configs/element-values.yaml
  # Update the value in apps/production/kustomization.yaml patches[0].patch

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-14 21:37:07 +02:00
sorb f81fda12d4 Update apps/production/element-server-suite.yaml 2026-05-13 14:48:08 +00:00
sorb fe0165a509 Update apps/production/element-server-suite.yaml
new docker image for elementWeb
2026-05-13 14:43:50 +00:00
Scrublord MacBad e0ed10598f Update Element Web to use custom fork image
- Registry: rohana.axion1337.de
- Repository: sorb/threadnet-web
- Tag: v0.1.0
2026-05-10 23:44:35 +02:00
Scrublord MacBad 68bf4e213c Revert to ESS 26.4.0 - URL preview issues in 26.5.0 2026-05-08 00:39:20 +02:00
Scrublord MacBad 644dff9c48 Upgrade to ESS 26.5.0 with oembed support 2026-05-08 00:29:39 +02:00
Scrublord MacBad 8e0f244257 Add oembed configuration directly to synapse values 2026-05-08 00:20:45 +02:00
Scrublord MacBad 08a38fdfbb Revert to ESS 26.4.0 to test URL preview functionality 2026-05-07 23:58:15 +02:00
Scrublord MacBad eda648eaa7 Add media_repository and thumbnail_generator workers for URL preview support 2026-05-07 23:45:37 +02:00
Scrublord MacBad 7b4def0fe7 Upgrade ESS 26.5.0 2026-05-07 22:54:05 +02:00
Scrublord MacBad 80fa13b63f feat: separate nginx deployment to serve Element Desktop setup scripts 2026-04-23 18:36:13 +02:00
Scrublord MacBad cf8bc00613 fix: use init-container to copy docs from ConfigMap to nginx html 2026-04-23 18:34:45 +02:00
Scrublord MacBad 4bc0e10631 fix: correct ConfigMap keys and mount structure for /docs/setup/ 2026-04-23 18:18:15 +02:00
Scrublord MacBad 336f2aa1cb feat: serve Element Desktop setup scripts via Element Web at /docs/setup/ 2026-04-23 18:16:03 +02:00
Scrublord MacBad 4a5f62d17a fix ingress 2026-04-22 15:11:58 +02:00
Scrublord MacBad 245cfcc486 fix valuemapping 2026-04-22 15:04:23 +02:00
Scrublord MacBad 361f02eddb fix: replace SOPS secret with plain secret for MAS configuration 2026-04-22 13:23:29 +02:00
Scrublord MacBad 9e23202971 fix: remove SOPS secret from valuesFrom, use only ConfigMap 2026-04-22 13:20:27 +02:00
Scrublord MacBad dc0652ffe7 fix: add mas-values ConfigMap for email config with transport field 2026-04-22 12:42:16 +02:00
Scrublord MacBad b83fce9035 feat: add encrypted SMTP secrets for MAS 2026-04-21 23:32:23 +02:00
Scrublord MacBad 68aec4fc69 fix: disable wellKnownDelegation to resolve ACME cert conflict on axion1337.chat 2026-04-21 23:00:48 +02:00
Scrublord MacBad 2f4e4c9b26 fix: use chart's native certManager configuration instead of manual patches 2026-04-21 22:55:38 +02:00
Scrublord MacBad 007c6e76d0 fix: use JSON6902 patches to inject secretName into ingress TLS 2026-04-21 22:48:28 +02:00
Scrublord MacBad fb471fad46 fix: add tlsSecretName to all ingress configurations 2026-04-21 22:46:59 +02:00
Scrublord MacBad acd1d9dcdf fix: remove unsupported tls property from per-service ingress config 2026-04-21 22:29:38 +02:00
Scrublord MacBad a21afd98b4 fix: add per-service TLS and cert-manager annotations 2026-04-21 22:24:34 +02:00
Scrublord MacBad 16fe49a53e fix ki slop 2026-04-21 21:28:49 +02:00
Scrublord MacBad 760f8830a8 fix: resolve schema violations for postgres and well-known 2026-04-21 20:33:02 +02:00
Scrublord MacBad 1dab3790af fix chart compliancy 2026-04-21 20:22:23 +02:00
Scrublord MacBad a1160d8229 fix: structure values according to ESS component schem 2026-04-21 20:14:56 +02:00
Scrublord MacBad 12bb7e0220 fix: schema alignment with snake_case 2026-04-21 20:10:28 +02:00
Scrublord MacBad 9f30fdcfa0 fix: align values with matrix-stack schema 26.4.0 2026-04-21 20:05:58 +02:00