* Fix blank maps by bundling the maplibre-gl worker explicitly
maplibre-gl v6 locates its tile-parsing worker from `import.meta.url`,
which webpack inlines as a file:// path. maplibre rejects that, so no
worker is spawned and maps render only their background with no error.
Build the worker as its own entry and point maplibre at it.
* Resolve the maplibre worker inside the hashed bundle directory
The webpack public path is the webapp root, not the bundle directory,
so the worker URL pointed at a file that does not exist and maplibre
hung silently. Ask webpack for the entry's full filename instead.
* Test that maplibre is pointed at the bundled worker
* Reapply not allowing skip device verification by default.
Reverts the revert commit 417fa60b0e.
* Switch to a new local store entry to check if verification is enforced, that is only set when the force_verification is true at the login.
* Test that force_verification does not affect existing sessions.
* Update test title
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix formatting
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test title
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Address review comments for 'should not force verification on reload if force_verification is enabled after login' test.
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Satisfy pnpm audit
* Iterate
* Iterate
* Fix Windows issues due to npm shims
By switching to pnpm/setup
* Iterate
* Hold back unrelated dep bumps
* Update pnpm to fix Windows issue
* Update compound-web to 10.3.1
To fix tooltip overflow bug
* Fix success to accent
* snapshot/test updates
* Gah the snapshots
* more snapshots
* Last lot of snapshots, hopefully
* Change the brittle CSS override to reflect the new CSS
* Same hack on date picker context menu
* s/success/accent/ and another padding override
* Update for really tiny font rendering differences
* Deflake decryption-failure-messages playwright test
By waiting for things to happen in the right order
* Deflake sliding-sync playwright test
By waiting for things to happen in the right order
The HTML report uploader always runs but the blob merge step is skipped
on failing jobs, so if previous steps fail then the step that's supposed
to upload an HTML report will actually upload the three blob reports
again as one zipped artifact and Dave will become very confused.
As commented, if previous job flakes (but ran enough to upload a blob
report) and you retry it, the final job would still get the artifact
from the flaked run.
recheck() started a new check on every crypto, sync or account-data event,
so several could run at once, each writing its verdict when it finished.
"Not verified" is decided after a couple of local reads; "ok" only after
the full chain of checks, some hitting the server. So around a
verification, an older "not verified" could land after a newer "ok" and
stick, with no further event to correct it - leaving the app asking the
user to verify a device they had just verified.
Run rechecks one at a time. If more are requested while one is running,
run just one more afterwards, so the last result written is always the
newest.
Fixes#33784Fixes#33787Fixes#29451
Signed-off-by: David Langley <davidl@element.io>
* Use MatrixRTC slots behind labs flag
* Remove superfluous act's
* Remove outdated ensureSlotOpen wrapper
* Add description for labs togglec
* Add doc strings for slot methods
* Throw from the slot functions when the feature flag is off
* Log when opening slot fails
* Assert on slot ID
* Adapt to JS SDK changes
* Remove the libolm to rust crypto store migration
* Add LegacyCryptoUnsupportedView to shared-components
* Show LegacyCryptoUnsupportedView when an unmigrated libolm crypto store is found
* Replace crypto migration e2e test with legacy crypto store test
* Cleanup loadSession, reduce congivitive complexity.
* Improve centering and spacing of view
* update snap
* changes for review
* lint
* Don't format the dump file
* Re-add missing files
When the new timeline's scroller shrinks (a banner appears, the composer
grows, the window is resized), the browser keeps `scrollTop`, so a reader at
the bottom was left with the newest messages below the fold. Rows whose height
follows the window, such as collapsed code blocks, made window resizes lose
the bottom even with a resize handler in the view, because TanStack
compensated them before the handler ran.
The fix is a new hunk in our @tanstack/virtual-core patch rather than code in
TimelineView: an end-anchored list now keeps an end-pinned view pinned when
its scroll element shrinks, the same way it already does when a row grows.
It is proposed upstream to TanStack Virtual and can be dropped once released.
The rest of the patch is unchanged.
* Offer 'Sign out' on the identity reset page if there is no other option
* Fix incorrect prop documentation after review
* Update comments to reflect the 'Sign out' variant
* Fix sliding sync invite flake
* Reduce Synapse `synapse.storage.SQL` logs to INFO
* Disable push and debug logs for further speedups
* Remove overwritten synapse log consumer from playwright-common
testcontainers keeps only the last log consumer, so the `homeserver` one always replaced it and the "synapse" buffer stayed empty.
* Set up vitest unit tests in playwright-common
The build uses a separate tsconfig so test files are not compiled into lib/.
* Add PLAYWRIGHT_CAPTURE_LOGS to save container logs for passing e2e tests
Writes each container's logs to <container>.log in the test output directory, for analysing homeserver performance.
* Re-enable push in Synapse for e2e tests
Disabling it meant opting many specs back in. Keeps the INFO root log level from 0b8294cbc2.
* update lock
* temp synapse image
* Remove temp synapse image
* fmt
* Stop writing removed legacy mention rules from labs notification settings
Matrix v1.17 removed the legacy text-matching mention push rules
(.m.rule.contains_display_name, .m.rule.contains_user_name,
.m.rule.roomnotif) from the base rule set (MSC4210), and Synapse is
about to stop serving them by default. The labs notification settings
page wrote those three rules on every save regardless. Against a server
that no longer serves them the page never converges: Synapse currently
accepts the writes with 200 without serving the rules, so the "Update"
banner never clears and the page stays locked, and once the server
answers 404 as the spec requires every save fails.
The reconciler now only writes the legacy rules when they are present
in the rules fetched from the server, the same way the intentional
rules are gated on supportsIntentionalMentions.
Adds reconciler tests with the legacy rules absent and present, and
Playwright specs that run against Synapse with msc4210_enabled both
off and on.
* Split the labs mention rules e2e helper into explicit steps
Replace the shared parameterised test with small helpers that each spec
calls in order, so neither spec branches on the server mode. Each spec
asserts its own precondition and its own final state of the legacy rule.
Clicking "Proceed" is now unconditional and waits for the banner. Every
fresh account shows it, and the old one-shot presence check raced the
push rules fetch.
* Update copyright holder in labs mention rules e2e tests
* Cover all legacy mention rules in the labs notification e2e tests
* Keep proceeding until the labs update banner is gone in e2e tests
While the server serves the legacy mention rules, one click on "Proceed"
does not always unlock the labs notification settings page. The page writes
a legacy rule and its intentional counterpart in parallel, and
monitorSyncedPushRules copies the legacy rule's actions onto the intentional
one whenever a sync shows them out of step. When that sync lands between
the two writes, the monitor puts the old actions back, the page re-reads
the rules, still sees a difference and keeps the banner until the user
proceeds again.
That race is in the app and predates these tests, which are about which
rules get written. It made the served-mode spec flaky, so the helper now
proceeds until the banner is gone.
* Give the labs update banner click a timeout in e2e tests
click() waits for the "Proceed" button to be visible. On a retry the banner
may already be gone, which is why the helper checks for it before clicking.
A banner that goes away between that check and the click would still make
click() wait until the test times out, so the click now gives up after a
second and the next attempt finds the banner gone.