Commit Graph

563 Commits

Author SHA1 Message Date
Benoit Marty 2de0d78ced Import multi-account announcement strings from Localazy
Add the `screen.multi_account_announcement.*` keys to the home module
Localazy configuration and import the latest strings.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 09:05:27 +02:00
Jorge Martín 41f7cb7b74 Fix aaptDump.txt and changelog
The previous commit changed the aaptDump.txt file too much
2026-09-29 22:03:13 +02:00
Jorge Martín 3985d4b712 Add missing parts of the 26.09.4 release to develop:
- Update CHANGES.md.
- Update aaptDump.txt.
2026-09-29 19:06:33 +02:00
Valere 0d5a79f3f2 Add the camera foreground service permission to the manifest snapshot 2026-09-29 18:44:49 +02:00
Jorge Martin Espinosa 03fd288c47 Upgrade to rustls-platform-verifier:0.2.0 (#7791)
* Upgrade to `rustls-platform-verifier:0.2.0`.

This re-enables certificate revocation checks, but v0.2.0 contains a list of CRL servers that can be accessed using clear text requests to check the validity of certain certificates, which should fix the issue that prevented us from using certificate revocation and at the same time strengthening the security of the client app.

Since we already had some network configuration in Element X, and `network_security_config.xml` files can't be merged, what we can do is manually download and merge the XML contents using `tools/dependencies/update_rustls_platform_verifier.py` like this:

```sh
./update_rustls_platform_verifier.py 0.2.0
```

It will automatically bump the Gradle dependency and merge the security config entries.

* Bump SDK bindings to `v26.09.28`, containing the rustls bump on the SDK side

* Fix unused resources caused by `app/src/main/res/xml/network_security_config_element.xml`
2026-09-28 15:35:33 +00:00
Benoit Marty 74b9c85c7c Merge pull request #7760 from element-hq/feature/bma/removeHaze
Remove Haze.
2026-09-28 15:07:15 +02:00
Jorge Martín bbb9750b3c Setting version for the release 26.09.3 2026-09-25 16:10:17 +02:00
Benoit Marty 7e5866a2b7 Merge branch 'develop' into bma/settingsIterationStep2Bis 2026-09-25 09:36:00 +02:00
Benoit Marty 6cb4343081 Add a script to end all the sessions of a Matrix account using MAS
The script logs in to MAS with the web login form (username and password),
then uses the MAS GraphQL API to end all the active compat, OAuth 2.0 and
browser sessions of the account. MAS pagination of browser sessions does not
always progress, so sessions are fetched and ended in batches until none are
left.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 17:13:00 +02:00
Benoit Marty 70058e0581 Run ./tools/manifest/aaptDump.sh 2026-09-24 15:02:00 +02:00
Jorge Martin Espinosa 4fa98752d4 Add a script to install and launch an APK given a PR URL (#7752)
* Add a script to install and launch an APK given a PR URL

This is easier than manually downloading, then installing the APK or scanning the QR code using the device

* Allow fetching the APK using the PR number too
2026-09-23 10:42:57 +00:00
Benoit Marty 9b2577f1dd Split settings: app settings / account settings 2026-09-22 13:17:16 +02:00
Jorge Martin Espinosa 4e47c6170e Integrate the new timeline renderer behind a feature flag (#7722)
* Integrate the new renderer with the timeline UI

* Composable functions are now in `:libraries:htmlrenderer:api` so we don't need to add `impl` to other modules.

* Improve inline code span

* Return both the text and URL in `onLinkClick` and `onLinkLongClick` so we can check the URL is not misleading

* Remove `SelectionContainer` for now - it creates issues when long pressing

* Make `LocalComposeTimelineEventRenderer` contain a `ComposeLocalTimelineEventRendererData` instance. This checks if the new rendering is enabled and what is the current user id so it can be used for styling mention pills

* Add fading edges to code block to indicate scrolling is possible

* Long pressing in a code block copies its contents to the clipboard

* Fix alignment of ordered list item prefixes

* Don't use default values in State data classes

---------

Co-authored-by: ElementBot <android@element.io>
2026-09-22 10:26:35 +02:00
Jorge Martin Espinosa 84a907d906 Fix regex for invalid placeholders (#7738)
This issue added some false positives to the list and broke the string synchronization.
2026-09-21 14:35:33 +02:00
Benoit Marty 58a00fd4e5 Merge pull request #7679 from element-hq/feature/bma/messageDeletionConfirmation
Let the user give an optional reason when removing a message
2026-09-16 16:37:51 +02:00
Benoit Marty 3e861cc646 Do not report detekt LargeClass issues on test classes (#7713)
detekt's default configuration excludes test source sets from
`TooManyFunctions` and `StringLiteralDuplication`, but not from
`LargeClass`, so large test classes were reported and had to carry a
`@Suppress("LargeClass")` annotation.

Add the same kind of exclusion to the `LargeClass` rule in
`tools/detekt/detekt.yml` and remove the 24 now-redundant suppressions
from test files. The two remaining suppressions are in production code,
where the rule still applies.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 13:56:33 +02:00
Benoit Marty 98c19de6e3 Merge pull request #7707 from element-hq/bma/gitFlowToGit
Replace git flow with regular git commands in the release script V2
2026-09-15 09:20:34 +02:00
Benoit Marty 5b09fdf13f Replace git flow with regular git commands in the release script V2
The script was relying on the external git-flow tool and on a local
`git config gitflow.*` initialisation, which made its behaviour depend on
the machine setup and hid what was actually done to the branches.

The release branch is now created with `git checkout -b`, and the release
is finished with explicit merge, tag, back-merge and branch deletion
commands. The merge and tag messages are provided explicitly so that the
generated history stays identical to the previous releases. Each step now
aborts the script with a clear message when it fails, instead of letting
the script continue.

Note that tools/release/release.sh (V1) still uses git flow.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-11 16:57:01 +02:00
ganfra 24a257bd38 Setting version for the release 26.09.2 2026-09-10 21:51:49 +02:00
Benoit Marty a7ff96c1c3 Update wording of the remove message confirmation dialog.
And get strings from Localazy
2026-09-09 16:26:51 +02:00
Benoit Marty 8e1a34cff8 Merge pull request #7649 from element-hq/feature/bma/replaceDangerByGhAction
Replace Danger with actions/github-script
2026-09-09 11:30:13 +02:00
ganfra 4201ece647 Update gplay release manifest dump after location changes 2026-09-08 12:46:38 +02:00
Benoit Marty d0d30dc6e2 Replace Danger with actions/github-script
The PR metadata checks move to a new PR Checks workflow, and the lint,
ktlint and detekt reports are now surfaced as inline annotations from the
quality workflow. This removes the danger-js dependency, its ad-hoc npm
installs and the need for the ElementBot token, so the checks also run on
pull requests from forks.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-04 15:54:02 +02:00
Benoit Marty 5c0c330bbd Import string from Localazy. (#7645) 2026-09-04 14:38:37 +02:00
Benoit Marty 94bfcc41a6 Merge pull request #7628 from element-hq/sync-localazy
Let's merge before we get a conflict.
2026-09-02 15:03:21 +02:00
Jorge Martin Espinosa f2cd0bf888 Improve detection of invalid placeholders in localazy strings (#7624) 2026-09-02 13:02:40 +02:00
jmartinesp dfccde93c6 Sync Strings from Localazy 2026-09-02 10:07:17 +00:00
Jorge Martin Espinosa 27e161605f Allow retrying finding the release assets in release script (#7619) 2026-09-01 16:59:56 +02:00
Jorge Martín 7c42f22b7c Setting version for the release 26.09.1 2026-09-01 13:57:32 +02:00
Jorge Martin Espinosa e5065d9baa Fix invalid placeholders in translations (#7612)
* Add logic to find invalid string placeholders in `checkForbiddenTerms.py`

* Fix found invalid placeholder in Chinese translations
2026-09-01 12:40:05 +02:00
Benoit Marty f97d207b16 [release] Check that there is no unmerged PR with the label "Z-NextRelease", else exit 2026-08-31 09:51:03 +02:00
Benoit Marty 8645260d46 Do not open the editor when finishing the release
`git flow release finish` opened the editor three times, and the content was
never edited: twice for the merge commits, where the message generated by git is
always kept, and once for the message of the annotated tag, where a placeholder
was typed by hand. The last tags carry the message "tag" for that reason.

GIT_MERGE_AUTOEDIT=no keeps the merge messages git already generates, and -m
provides the tag message. git flow appends the tag name to that message, so the
tag of the next release will read "Release v26.09.0".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 14:58:39 +02:00
Benoit Marty 2f3d197060 Setting version for the release 26.08.4 2026-08-27 14:20:36 +02:00
Benoit Marty c5f70de904 Add releaseV2.sh, a release script automating the GitHub release
releaseV2.sh is a copy of release.sh in which the GitHub CLI is mandatory and
does what was previously done by hand: it finds and waits for the release.yml
run, downloads and extracts its artifacts, creates the pre-release with its 6
assets and the generated release notes, and prepends those notes to CHANGES.md.
It also compares the version code and version name of the signed artifacts to
the expected values instead of asking the user to check them, and no longer
needs ELEMENT_GITHUB_TOKEN, since the CLI uses its own credentials. release.sh
is left untouched, so that the next release can be done with releaseV2.sh while
keeping a way back if something goes wrong. The installation documentation is
also fixed, as it referred to an asset name that does not exist anymore.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 22:15:54 +02:00
Benoit Marty 94259962a0 Setting version for the release 26.08.3 2026-08-26 13:56:12 +02:00
hayaksi1 76b19a158f Show the build date in the screenshot gallery footer
The gallery gave no indication of how old the screenshots on the page were,
which is one of the remaining items on the GitHub Pages improvement list.

The generator now writes the time it ran alongside the screenshot data, and the
page renders it in the footer next to the existing links.
2026-08-25 15:56:16 +03:00
hayaksi1 23005317cf Merge develop into the PreviewParam rename
The 174 commits develop gained since this branch was cut touch preview data
in three ways, and each is resolved so the flipped konsist rule still holds
across the merged tree.

Two screens the branch had renamed were deleted upstream by "Remove the
account provider search screen and homeserver resolver": the
changeaccountprovider and searchaccountprovider packages. Their deletion
wins, so ChangeAccountProviderStatePreviewParam, SearchAccountProviderStatePreviewParam
and the two views that used them go with them rather than coming back
under the new name.

Two preview classes develop added still carried the old suffix and are
renamed here, along with the `@PreviewParameter` reference in each view:
GlobalSearchStateProvider -> GlobalSearchStatePreviewParam and
SendFailureDialogStateProvider -> SendFailureDialogStatePreviewParam.

Everything else merged textually. No production class extending
PreviewParameterProvider is left with a `Provider` name, and no reference
to any of the 194 renamed names survives outside the CHANGES.md entry that
records a past pull request title.
2026-08-24 10:55:40 +03:00
Benoit Marty 441c88244f Merge pull request #7490 from element-hq/feature/bma/sendingMessageFailedReason
Show dialog with reason when user clicks on a message with a failure
2026-08-21 15:59:01 +02:00
Benoit Marty 2b3aeee1c6 Merge pull request #7494 from element-hq/feature/bma/loginWording
Move strings to the login module
2026-08-21 10:06:21 +02:00
Benoit Marty 25989135a8 Add error content to Localazy 2026-08-21 09:54:47 +02:00
Benoit Marty a078851b78 Add small script to force stop an application. 2026-08-20 13:23:21 +02:00
Benoit Marty b774e6a280 Setting version for the release 26.08.2 2026-08-20 10:12:25 +02:00
Benoit Marty 42f9e15641 Move strings to the login module 2026-08-19 17:18:16 +02:00
hayaksi1 03c330ee07 Rename PreviewParameterProvider subclasses to the PreviewParam suffix
The `Provider` suffix reads as a dependency provider rather than as preview
data, and it collides with the real providers in the codebase — `StringProvider`,
`PickerProvider`, the login feature's `AccountProvider` — so the name says
nothing about which of the two a class is. `PreviewParam` says it.

195 classes are renamed, along with the 185 files named after them, the konsist
rule that enforces the convention, the presentation-class file templates and the
onboarding documentation.

This cannot be split. `Konsist.scopeFromProduction()` scans the whole project, so
flipping the assertion before every class has moved leaves the rule red, and a
rule that accepted either suffix during a transition would be exactly the kind of
compatibility layer this convention change is meant to remove.

Two judgement calls in the rule itself. The `name.endsWith("PreviewProvider")`
exclusion is dropped: its only job was to reject a redundant `Preview` before
`Provider`, and the new suffix already contains it; no class currently ends with
`PreviewProvider`, so removing it changes nothing today. And
`EditableAvatarViewUriProvider` is renamed rather than deleted from the exclusion
list even though no such class exists in this repository, since it presumably
comes from the modules overlaid for the enterprise build.

Nothing keyed off the old suffix: no snapshot filename contains a provider class
name, so no Paparazzi image changes, and the Kover variants match on `*Presenter`,
`*State` and `*ViewKt`, so coverage bounds are unaffected.
2026-08-17 17:40:33 +03:00
hayaksi1 999bee2420 Remove the F-Droid dex patching step from the release script
fix-pg-map-id.py rewrites the pg_map_id of a dex file, but the dex
format changed and its regex no longer matches anything, so the step is
a no-op and the F-Droid build is reproducible without it. inplace-fix.py
only existed to drive it; none of its other commands are used here.

The removed call also re-ran zipalign -P 16 on each APK. AGP aligns the
release APKs at packaging time and apksigner is already invoked with
--alignment-preserved, so the signed output stays 16 KB aligned.
2026-08-17 03:40:53 +03:00
Jorge Martin Espinosa 22195a47f2 Move the custom tile server URL config to the Element wellknown content (#7416)
* Move the custom tile server URL config to the Element wellknown content

* Iteration: use whole `MapTilerConfig` in the remote config
2026-08-14 08:20:37 +02:00
Richard van der Hoff 76092fcba6 fix lint 2026-08-12 14:51:57 +02:00
Richard van der Hoff 6badc9634c build-rust-sdk: print the command we run
It's helpful to know what exactly is being run.

Also some tweaks to reduce the amount of directory changing that needs to
happen.
2026-08-12 14:51:57 +02:00
Benoit Marty de05495d51 Setting version for the release 26.08.1 2026-08-12 12:34:30 +02:00
hayaksi1 5140b7c3c8 Fix the feature module template writing the impl build script into the api module
Generating a feature with the Generate Module from Template plugin produced a
module that could not build: features/<name>/api/build.gradle.kts was written
from the impl template, giving the api module a dependency on itself and an
impl namespace.

FeatureModule.json declared BUILD_GRADLE_API and BUILD_GRADLE_IMPL, both
defaulting to build.gradle.kts, and used them as fileTemplates keys. The plugin
resolves keys to filenames before matching, so both collapsed to one key and
the second overwrote the first. The same matching code falls back to a suffix
match on the path, so DefaultXEntryPoint also matched the key XEntryPoint and
was generated from the api template.

Key both by directory, which the plugin supports for exactly this case, and
drop the two now-unused placeholders. The file templates themselves were
correct and are unchanged. The onboarding doc gains a note that an already
imported template must be removed before re-importing, since the plugin keeps
its own copy.
2026-08-09 15:10:00 +03:00