Commit Graph

69823 Commits

Author SHA1 Message Date
enki 4b560993a1 Remove the floating call/widget PiP window
Discord-style: an active call keeps running invisibly when you browse other
rooms (PersistedElement just hides the iframe) and reappears when you return
to its room — no floating window following you around.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
v1.0.4
2026-07-25 22:53:18 -07:00
enki 4e8d7be03e updater + docs: resolve releases from git.utn.lol instead of Codeberg
The runtime updater (API latest-release resolution + tag-specific feed
override) still pointed at Codeberg; releases now live on git.utn.lol.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
v1.0.3
2026-07-25 12:58:54 -07:00
enki fd525587ee Bump version to 1.0.3
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 12:50:02 -07:00
enki 6a83022a24 Move releases + auto-update feed from Codeberg to git.utn.lol
Codeberg is now mirror-only. Feed URL -> git.utn.lol/enki/blap rolling
"updates" release; release-codeberg.mjs renamed release-forge.mjs with
git.utn.lol defaults (FORGE_* env overrides unchanged).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 12:50:02 -07:00
enki a264351fea Discord-style ||spoiler|| syntax + SPOILER_ media filenames (Android interop)
- ||text|| in outgoing messages/edits becomes <span data-mx-spoiler> (MSC2010),
  matching what Blap Android sends; code/pre spans are left alone
- spoiler media uploads get the Discord SPOILER_ filename prefix (the only
  marker the Rust SDK on Android can produce) and isSpoilerMedia honors it

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 12:50:02 -07:00
enki badbd8f0f7 release script: require the tag to exist before creating a release
Letting the release API auto-create the tag leaves a forge-only tag the
push-mirror prunes on its next sync — and Forgejo demotes the release
to a hidden draft when its tag disappears (this made v1.0.2 vanish from
the releases page overnight). Fail with instructions instead.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 09:36:14 -07:00
enki 8a26cdca8c desktop: fix auto-update feed — Codeberg has no /releases/latest/download route
Forgejo/Codeberg 404s the GitHub-style latest/download path, so the feed
baked into app-update.yml never worked (1.0.0/1.0.1 never saw updates).
Point it at a rolling release on the fixed tag "updates" instead, and
make release-codeberg.mjs sync latest.yml + the Windows installer to
that release on every ship (channel files always replaced; curl retries
added).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 20:37:27 -07:00
enki 3439d61fe0 Bump version to 1.0.2
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
updates
2026-07-10 19:40:39 -07:00
enki b6bb6e56b9 blap: thread focus mode, room-list thread rows, fix round
- Thread focus mode: threads open centered in the main pane (expand
  button, room-list thread rows, and any ShowThread while focus mode is
  active); back bar / Escape / channel click return to the timeline.
  Centering strips the sidebar's thread cards so no duplicate remains.
- Room list: active-thread rows under channels (unread threads plus the
  one currently open), collapsible section headers with per-space
  persistence, live space-membership DM filtering (fixes the DM section
  capping at ~6 rooms after a space switch).
- CSS: Compound token overrides now also target the body theme class so
  remapped tokens stop shadowing back to green; reply-quote restyle;
  min-width on the room body so the message action bar can't render
  off-pane with a thread panel open in narrow windows (edit "did
  nothing").

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:40:31 -07:00
enki 955b3ea71d desktop: revert screenshare to video-only capture
The 1.0.1 loopback-audio request broke Windows screenshare entirely;
we don't need Windows audio, so go back to plain {video}.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:40:31 -07:00
enki a716252c67 docs: note Linux screen-share audio limitation + PipeWire workaround
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 13:29:23 -07:00
enki 7445a9d4e4 Fix updater: resolve latest via Codeberg API, not the broken /latest/ alias
Codeberg does not serve the `/releases/latest/download/<file>` alias (404s); only
tag-specific `/releases/download/<tag>/<file>` URLs work. The update feed baked into
the app used the alias, so update checks never resolved on any platform.

Now both the Linux notifier and the Windows electron-updater resolve the newest
release via the Codeberg API (`/releases/latest` -> tag_name) and build the working
tag-specific feed URL from it (setFeedURL for electron-updater).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 12:22:41 -07:00
enki 0601e50778 Blap 1.0.1: desktop screen-share audio + release tooling
- Desktop: capture system audio with the shared screen via Electron "loopback"
  audio, gated to Windows/macOS (Electron doesn't support loopback on Linux).
  Fixes screen shares having no audio for Windows users.
- release script: make it host-agnostic (FORGE_API/OWNER/REPO/TOKEN env) so it
  can publish to the git.utn.lol Gitea as well as Codeberg. Defaults unchanged.
- Bump version to 1.0.1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 11:20:30 -07:00
enki fc31bc4080 Blap: Discord-style room+call rework and Element Call swap
Ship our own Element Call fork build instead of the stock embedded package
(webpack copy repointed to ../element-call/dist, with npm-package fallback), and
rework the in-call room layout to match the Blap design:

- Chat stays in the main pane with the call as a compact right-hand column;
  when someone shares a screen the call takes prominence in the main pane and
  chat moves to the side column (never hidden). Driven by a same-origin
  screenshare signal from the EC fork.
- Camera-off: pass the `blapVideoMuted` flag to EC and drop the old (unreliable)
  widget-action mute code.
- Room list already lists in-call members under voice channels; add an
  "IN THE CALL" header to the call column.
- Hide redundant RTC call-notification ("Video call") pings from the timeline.
- Room header: remove the now-redundant chat, threads and member-facepile
  buttons; keep info working over the call (call stays mounted).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
v1.0.1
2026-07-02 08:52:02 -07:00
enki 5ccd85c8a9 release-codeberg: resume interrupted uploads
Skip release assets already uploaded at the same size instead of deleting and
re-uploading everything, so a re-run picks up where it left off.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 08:51:52 -07:00
enki d649ec645f Blap README + curl-based release uploads
- Replace the element-web README with a Blap one (downloads/updating/building).
- release-codeberg: upload assets via curl instead of Node fetch, which times
  out (UND_ERR_HEADERS_TIMEOUT) on 300MB+ files.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 21:31:23 -07:00
enki fb649be700 release-codeberg: upload all installers for the current version
Docker / Docker Buildx (push) Has been cancelled
Build Debian package / Build package (release) Has been cancelled
Build and Deploy / prepare (release) Has been cancelled
Build and Deploy / Trigger Pro pipeline (release) Has been cancelled
Build and Deploy / Windows arm64 (release) Has been cancelled
Build and Deploy / Windows x64 (release) Has been cancelled
Build and Deploy / macOS (release) Has been cancelled
Build and Deploy / Linux amd64 (sqlcipher static) (release) Has been cancelled
Build and Deploy / Linux arm64 (sqlcipher static) (release) Has been cancelled
Build and Deploy / ${{ needs.prepare.outputs.deploy == 'true' && 'Deploy' || 'Deploy (dry-run)' }} (release) Has been cancelled
Build and Deploy / Deploy builds to ESS (release) Has been cancelled
Deploy release / Deploy to Cloudflare Pages (release) Has been cancelled
Include deb/flatpak/pacman/tar.gz (not just the Windows exe) so the release page
has every platform's download for the Linux update-ping to link to. Filter by
version so leftover artifacts from older builds in dist/ aren't uploaded.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
v1.0.0
2026-06-30 20:55:29 -07:00
enki c9f73c26fa Packaging: build targets + Linux update-ping (v1.0.0)
- electron-builder: linux targets = deb, flatpak, tar.gz, pacman; win = nsis.
- updater.ts: Linux is notify-only (deb/pacman are package-manager owned,
  flatpak is sandboxed) — reads the same Codeberg feed as Windows and shows a
  "Blap X is available" desktop notification linking to HOW-TO-UPDATE.md.
  Windows/macOS keep electron-updater in-place install.
- HOW-TO-UPDATE.md: per-format update instructions.

Version stays 1.0.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 20:53:46 -07:00
enki aa8a765cf7 chore(desktop): set Blap version to 1.0.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 21:45:32 -07:00
enki 5b9d457704 Blap reskin: social UI, fixes, and update/release pipeline
Fork of element-web v1.12.22 reskinned as "Blap", a Discord-style social
Matrix client. Visual fork only: calls stay on the Element Call widget.

UI / reskin:
- yap CSS overlay (_yap.pcss) wired into the dark theme @layer; fonts, surfaces
- spaces rail icon-only with the collapse mechanism removed
- YapRoomList with manual drag-and-drop ordering (works in Home; drop-to-bottom)
- Discord-style inline message timestamps next to the sender name
- image lightbox toolbar visibility; themed context menus + toasts
- bridges panel + call facepile
- login screen rebuilt to the Blap design (centered card, accent buttons)
- accent (purple) primary buttons app-wide via Compound token overrides

Desktop / distribution:
- updater.ts switched Squirrel -> electron-updater (NSIS); Codeberg generic feed
- scripts/release-codeberg.mjs uploads artifacts to the Codeberg release
- Blap build variant (apps/desktop/blap/build.json, appId lol.utn.blap)

Calls (visual-only via widget API):
- "join with camera off" device setting + Voice settings toggle

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 21:37:49 -07:00
RiotRobot 94636e8d4d v1.12.22 2026-06-23 13:31:56 +00:00
RiotRobot 8882d88c39 Upgrade dependency to matrix-js-sdk@41.8.0 2026-06-23 13:20:31 +00:00
ElementRobot 8eeed8e2df [Backport staging] Fix broken scrollbar introduced by separator redesign (#33947)
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
2026-06-23 14:12:33 +01:00
RiotRobot 4920d6c8c6 v1.12.22-rc.0 2026-06-16 13:16:34 +00:00
RiotRobot 4fe7b9374a Upgrade dependency to matrix-js-sdk@41.8.0-rc.0 2026-06-16 13:09:53 +00:00
renovate[bot] 5d93490547 Update storybook to v10.4.4 (#33850)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-16 10:39:21 +00:00
David Baker 3ab233940c User status in user menu (#33797)
* Add user status on user profile icon

Currently unstyled & no tests

* Style the user status icon

* Update snapshot

for avatar wrapper

* More snapshot updates

* add if braces

* Split out user status functions

to avoid circular dep which has the weird effect of just breaking
jest's mocking.

* type imports

* Update imports

* Update snapshot

* Tests

* baseline image

* Just snapshot the component itself

* User status in user menu

first pass, unstyled

* fix export

* superstylin'

* snapshots

* Add story & test

* Snapshots

and re-use the repeated rules

* Tests

* Fix jest lcov projectRoot config

* Change tooltip text to just 'clear'

* Add comment & fix console warn

* Remove all options screenshot

as it's not really particularly useful as a preset story

* remove stale screenshot

* fix imports

---------

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-06-16 09:01:34 +00:00
Michael Telatynski 44c540eca0 Tweak modules to be disabled if config is missing (#33806)
* Consolidate modules vitest coverage

* Use vite-common as base for modules vitest config

* Make knip happier

* Fix coverage paths

* Place modules unit tests alongside src

* Switch to defineProject for better type safety

* Consolidate vitest CI & coverage

Kills off vite-common

* Update comment

* Update lockfile

* Fix shared-components vitest config

* Soften eslint config for tests in modules

* Run eslint on modules/playwright dir too

* Make tsc happy

* Tweak modules to be disabled if config is missing

* Restore blank line

* Improve coverage

* Potential fix for pull request finding 'Unused variable, import, function or class'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
2026-06-16 08:41:40 +00:00
renovate[bot] d92e10f01a Update github-actions non-major dependencies to v6.0.9 (#33849)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-16 08:01:53 +00:00
renovate[bot] 0c2ce4dde0 Update definitelyTyped to v3 (#33852)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-15 23:57:56 +00:00
renovate[bot] d238587234 Update testcontainers docker digests (#33848)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-15 22:14:02 +00:00
Florian Duros 1c8654e394 Room list: add notifications to section headers (#33826)
* feat(sc): add notification decoration to header

* feat(vm): add notification decoration to vm

* test(e2e): add test
2026-06-15 18:05:51 +00:00
Michael Telatynski 86a89c2aa5 Replace require calls for image uris with imports (#33847)
* Replace `require` calls for image uris with imports

In prep for vitest

* Fix copyright
2026-06-15 16:09:51 +00:00
Michael Telatynski 2f4e6a4ec4 Use vitest for some EW unit tests (#33816)
* Use vitest for some EW unit tests

* Ensure library builds are done before unit tests

* Stabilise jest tests

* Move more tests over

* Make sonar happier

* Update types/node for happy-dom compat again

* Decrease max-workers to stabilise jest tests

* Split jest over 3 runners to alleviate memory woes

* Switch jest to runInBand

* Attempt to deflake jest tests

* tweak coverage

* tweak coverage
2026-06-15 13:24:33 +00:00
Michael Telatynski 7949980a7e Apply html utils sanitiser to embedded page (#33842)
* Apply html utils sanitiser to embedded page

* Write tests
2026-06-15 12:58:56 +00:00
Zack 0f0f8c6ba2 Refactor UnreadNotificationBadge to shared MVVM view (#33672)
* Refactor notification badge to shared MVVM view

* Bage icons Images

* Narrow unread notification badge refactor scope

* Align unread badge MVVM pattern

* Reduce unread badge viewmodel duplication

* Document unread badge viewmodel props

* Remove legacy badge classes from shared view

* Update css for knocked door

* Update thread badge e2e selector

* Update read receipt badge e2e selectors
2026-06-15 10:20:27 +00:00
ElementRobot 5bcec9112e [create-pull-request] automated change (#33841)
Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
2026-06-15 08:40:28 +00:00
Michael Telatynski 48e4bce28e Use PR labels to request additional CI to run (#33829)
* Run all desktop platform tests on PR with `A-Electron` label

* Run modules tests on PR with `A-Modules` label

* Fix matrix configuration

* Iterate
2026-06-12 10:18:52 +00:00
ElementRobot 48af8cad02 [create-pull-request] automated change (#33830)
Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
2026-06-12 08:17:35 +00:00
Florian Duros 36a39f7fd6 Room list: fix keyboard navigation on sections (#33809)
* fix: keyboard navigation on sections

* test: add e2e test for keyboard navigation

* fix: add more keyboard navigation

* test: add e2e tests

* chore: remove useless check
2026-06-11 16:14:36 +00:00
renovate[bot] e441ca5d7c Update storybook to v10.4.2 (#33823)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-11 16:03:34 +00:00
renovate[bot] 9c4e06acc3 Update Element Call to v0.20.1 (#33820)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-11 14:51:10 +00:00
renovate[bot] c745a09c30 Update eslint-plugins (#33824)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-11 14:02:32 +00:00
renovate[bot] e6202cf02e Update matrix-org to v0.36.1 (#33821)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-11 13:50:52 +00:00
renovate[bot] 6b0e784168 Update testcontainers docker digests (#33818)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-11 13:06:22 +00:00
renovate[bot] dd103f7a27 Update electron-builder to v26.15.2 (#33819)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-11 13:06:13 +00:00
Florian Duros add7d4c405 Room list: hide the empty/collapse icon when the room list is empty (#33814)
* fix: don't display the empty/collapse icon when the room list is empty

* Fix jest lcov projectRoot config

---------

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-06-11 13:01:32 +00:00
Michael Telatynski 2d24778214 Fix modules dir tsc not running in CI (#33811)
* Fix modules dir tsc not running in CI

* Switch to nx run-many for ci task

This has smarter scheduling logic for dependant tasks
2026-06-11 10:37:47 +00:00
Florian Duros 2d434c72d4 feat: remove logic to expand a section when a filter is selected (#33785) 2026-06-11 09:21:30 +00:00
rbondesson a8f9c75fc1 Make EventTileViewModel consume pure render data (#33805) 2026-06-11 08:05:43 +00:00