Compare commits

...

171 Commits

Author SHA1 Message Date
SpiritCroc
eff14caec3 Upstream 1.11.95 2025-03-15 16:56:27 +01:00
SpiritCroc
a9f81d8ebe Bump to 1.11.90 2025-01-16 09:00:26 +01:00
SpiritCroc
a1299ffb15 Bump to v1.11.89 2024-12-19 11:00:38 +01:00
SpiritCroc
240975cfe6 Update to Element v1.11.88 2024-12-17 18:10:32 +01:00
SpiritCroc
59fab598d2 Update to upstream v1.11.87 2024-12-03 19:56:44 +01:00
SpiritCroc
f8ecb305f6 Drop caption fixup patch
Has been added upstream in v1.11.87
2024-12-03 19:52:46 +01:00
SpiritCroc
dfbb5e7fc7
Merge pull request #274 from luixxiul/icon_gen.sh
Replace element-app-logo.png
2024-12-01 20:38:01 +01:00
Suguru Hirahara
10bc489f2b
Replace element-app-logo.png
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
2024-12-01 12:53:44 -05:00
SpiritCroc
459c1f7630 Disable showing people in spaces by default 2024-11-30 19:48:17 +01:00
SpiritCroc
40203b4ed7 Update IRC improvement patch
Includes https://github.com/SchildiChat/element-web/pull/5
2024-11-29 13:28:59 +01:00
SpiritCroc
c03ef20e5d RELEASE.md: Fix wrong make target name 2024-11-27 16:58:39 +01:00
SpiritCroc
e718080611 Cherry-pick search fix from upstream develop 2024-11-25 14:11:50 +01:00
SpiritCroc
e30832e7f8 Add IRC layout community contribution
Closes https://github.com/SchildiChat/schildichat-desktop/pull/269

Co-authored-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
2024-11-23 12:10:01 +01:00
SpiritCroc
ba3cf70b3b Upstream v1.11.86 2024-11-23 11:26:04 +01:00
SpiritCroc
491ad5ac75 Upstream v1.11.85 2024-11-13 15:07:08 +01:00
SpiritCroc
122f9d3033 Upstream v1.11.84 2024-11-10 12:03:00 +01:00
SpiritCroc
735143f88b [HACK] Get captions to show in bubble layout again
Timestamp position is bad with this, and probably has other bugs now too
2024-10-31 17:35:34 +01:00
SpiritCroc
86812e67e0 push_current_sc_branches.sh: Exclude compound for now 2024-10-30 19:46:24 +01:00
SpiritCroc
aa69433842 Upstream v1.11.84-rc.0: Get rid of matrix-react-sdk 2024-10-30 19:43:20 +01:00
SpiritCroc
9f65d55aad Upstream 1.11.83 2024-10-29 17:12:51 +01:00
SpiritCroc
82bcf74d8e apply_patches.sh: Re-enable element-web 2024-10-29 17:04:30 +01:00
SpiritCroc
44ea087c1a Schildify login screen a bit better 2024-10-27 20:11:15 +01:00
SpiritCroc
720ec98278 Enable chat previews by default 2024-10-27 19:27:04 +01:00
SpiritCroc
17c8d2e7f4 Properly .gitignore and make clean sc-cpd-overrides.css 2024-10-26 09:33:05 +02:00
SpiritCroc
840d1f60ea Fork compound-web and make tooltip design less bad 2024-10-25 18:35:10 +02:00
SpiritCroc
5bda6c96d6 Fix tray icon after upstream merge 2024-10-22 20:10:23 +02:00
SpiritCroc
ba6fe489e3 Upstream v1.11.82 2024-10-22 19:59:07 +02:00
SpiritCroc
f9686103b7 Remove caption patch that upstream merged, and squash SC CSS patches 2024-10-22 19:13:11 +02:00
SpiritCroc
a18b08ff06 Rename web app on release
Don't know why it's being called element right now, but we can rename
it afterwards anyway
2024-10-21 21:22:00 +02:00
SpiritCroc
d08d00eb09 Get Fedora-based build to work again 2024-10-21 20:20:28 +02:00
SpiritCroc
6b2b1a6968 Update README 2024-10-20 18:16:01 +02:00
SpiritCroc
c6286dafc7 Add dedicated linux-container-release make target
Windows targets should be compiled on windows natively
2024-10-20 17:15:27 +02:00
SpiritCroc
630f4f786e Fix webapp compile on Windows 2024-10-20 17:01:12 +02:00
SpiritCroc
a8eb3ece19 Stop requiring webapp symlink
Causes issues on Windows-native compile
2024-10-20 15:35:27 +02:00
SpiritCroc
85546de7b7 Fix rpm build with debian 2024-10-20 15:32:25 +02:00
SpiritCroc
8e8d874236 Prepare prerelease 2024-10-19 17:26:17 +02:00
SpiritCroc
70a053f7d9 Update containers and fix some release builds 2024-10-19 17:25:46 +02:00
SpiritCroc
a8f231f80f Remove outdated publish_release.sh
This script pushes branches in the old style, use
push_current_sc_branches.sh instead.
2024-10-19 15:35:40 +02:00
SpiritCroc
8069120847 Tweak dark theme text colors a bit more 2024-10-18 18:15:42 +02:00
SpiritCroc
915e74ae7a Enable custom emote rendering by default 2024-10-17 19:41:46 +02:00
SpiritCroc
d9984f6f40 Better dark theme secondary text color 2024-10-17 19:37:44 +02:00
SpiritCroc
f00efcb568 Switch to less aggressive hover color 2024-10-17 19:24:05 +02:00
SpiritCroc
8f8ba87d7c Keep naming it SchildiChatAlpha to separate .config dirs from old 2024-10-17 18:34:46 +02:00
SpiritCroc
c66d4c4371 push_current_sc_branches.sh: Allow passing arguments to git push 2024-10-17 18:34:16 +02:00
SpiritCroc
f9c56fa484 Don't welcome to Element 2024-10-17 18:21:24 +02:00
SpiritCroc
522095b79e Rebase to v1.11.81 2024-10-17 18:11:47 +02:00
SpiritCroc
dba9c78816 Rename binary to schildichat-desktop-alpha
This will be the official successor to old schildichat-desktop builds,
so drop "lite" from any user-facing naming.
2024-10-17 18:06:19 +02:00
SpiritCroc
7fbca648df Always show timestamps by default 2024-10-13 13:53:24 +02:00
SpiritCroc
a130372946 Fix missed element logo svg for icon_gen.sh 2024-10-13 13:46:34 +02:00
SpiritCroc
239da124ad Always round corners for message bubbles 2024-10-13 13:30:45 +02:00
SpiritCroc
3b246ff33f Update patches with more theme tweaks 2024-10-13 13:07:44 +02:00
SpiritCroc
0e85ad2ccb Try out some darker background 2024-10-13 13:03:21 +02:00
SpiritCroc
df81140151 Initial compound-based SC theme bringup 2024-10-13 12:33:26 +02:00
SpiritCroc
fc0edf9dca Update to 1.11.80 2024-10-09 08:04:03 +02:00
SpiritCroc
8de7f8f846 Some more tooling updates & Update to v1.11.79 2024-10-06 17:29:45 +02:00
SpiritCroc
4c8f9de4e8 Re-enable auto-commit for icons and theme 2024-10-06 17:11:27 +02:00
SpiritCroc
ebc3498510 Checkout release-specific branch names in our repos 2024-10-06 12:26:39 +02:00
SpiritCroc
c7181068c6 [TMP] Disable automatic commit for now
Need to revise how we do branches
2024-10-06 12:19:47 +02:00
SpiritCroc
055866f599 Update upstream remote for add_upstream 2024-10-06 12:16:19 +02:00
SpiritCroc
b214e8d568 Bump patches to 1.11.77 2024-09-10 17:59:46 +02:00
SpiritCroc
2ff1578a57 Automatic theme update 2024-09-10 17:58:07 +02:00
SpiritCroc
983cba224f [WIP] Add back theming 2024-09-01 21:15:31 +02:00
SpiritCroc
4696cee8c4 Add back icon generation 2024-08-30 19:54:55 +02:00
SpiritCroc
f3b47d4f38 Stop the search bar wobble to restore my sanity 2024-08-19 20:33:08 +02:00
SpiritCroc
642da40810 Update patches to v1.11.74 2024-08-18 11:51:12 +02:00
SpiritCroc
94c72f7f45 generate_patches.sh: Remove accidentally commited hardcoded value 2024-08-18 11:50:42 +02:00
SpiritCroc
a49c66538c Make merge_helpers.sh smarter if you have the commit around 2024-08-18 11:45:47 +02:00
SpiritCroc
a23614d3de Update patches to 1.11.73 2024-08-07 08:21:27 +02:00
SpiritCroc
b04c8cc063 Move apply_patches to its own script 2024-08-07 08:06:46 +02:00
SpiritCroc
977e955265 Do not add spaces spaces to breadcrumbs 2024-06-21 20:10:03 +02:00
SpiritCroc
2c65d8e567 Update README.md for the curious 2024-06-01 10:37:41 +02:00
SpiritCroc
1489beb322 Show space overview on space switch 2024-05-30 15:07:55 +02:00
SpiritCroc
34c14329f2 Add back wider width limit for text reactions 2024-05-29 20:05:42 +02:00
SpiritCroc
a670bf6bea Add back freeform reactions 2024-05-29 19:35:18 +02:00
SpiritCroc
108a76376c Include DMs in space unread counts 2024-05-26 11:59:51 +02:00
SpiritCroc
0fb8fa0931 Update patches 2024-05-10 19:03:54 +02:00
SpiritCroc
634049ce7a Exclude reactions from room previews 2024-05-09 09:39:30 +02:00
SpiritCroc
649a7f00bf Add FEATURES.md 2024-05-09 09:36:23 +02:00
SpiritCroc
511c1c8da8 Render captions 2024-05-09 09:33:20 +02:00
SpiritCroc
8b9c72584b merge_upstream.sh: Do not recreate patches by default 2024-05-09 09:31:24 +02:00
SpiritCroc
11adc81230 Do not sort muted chats at the bottom 2024-05-08 15:36:09 +02:00
SpiritCroc
9242672525 merge_upstream.sh: Add flag to skip patch generation
Also checkout upstream/master for all repos until we push our own again.
2024-05-07 08:33:48 +02:00
SpiritCroc
b0d22fba6b Update config overlays 2024-05-06 20:18:53 +02:00
SpiritCroc
6a6c997c1c Merge remote-tracking branch 'origin/sc' into lite 2024-05-05 16:39:14 +02:00
SpiritCroc
b059c2f83d Update setup.sh for seshat 2024-05-05 13:30:23 +02:00
SpiritCroc
8f70dea230 Automate rebase with patches 2024-05-05 11:29:58 +02:00
SpiritCroc
eb706739a9 Update patches: disable sticky rooms, bring back unified room list 2024-05-05 11:29:04 +02:00
SpiritCroc
f67822feab merge_upstream.sh --checkout: re-apply our patches 2024-05-05 09:32:17 +02:00
SpiritCroc
b353040947 Collect MVP patches for rebase 2024-05-05 09:07:33 +02:00
SpiritCroc
a95402e0a7 Import theme.sh from matrix-react-sdk
Original history:

    commit 3ac1d305c420a23cab13c4f1756742663dddfe5a
    Author: su-ex <codeworks@supercable.onl>

        Make linter happier

    commit 1cea13f3c55f353fd3bac1110214de54ba3d6ade
    Author: su-ex <codeworks@supercable.onl>

        Make linter happier

    commit a29fbec8465ed803e44c386395bf81945b417175
    Author: su-ex <codeworks@supercable.onl>

        Fix codeblock background and border

    commit 0f9478f023f050a46788a4cb8a988d7a80afe57b
    Merge: a1e6fe4d42 1f3ad86106
    Author: su-ex <codeworks@supercable.onl>

        Merge tag 'v3.65.0' into sc

    commit ae33cfe40daa995ff4944b5a6d53a3fbfcd824e2
    Merge: be6ad48996 8219e44596
    Author: su-ex <codeworks@supercable.onl>

        Merge tag 'v3.64.1' into sc

    commit 8126c80e45eefac0a2e42381c45461552ac7521f
    Merge: 4e56372068 cf36acaa41
    Author: su-ex <codeworks@supercable.onl>

        Merge tag 'v3.63.0' into sc

    commit 98e270faeb43e823bb04d9ee75883fd41adfc1c4
    Author: su-ex <codeworks@supercable.onl>

        theme.sh: scss --> pcss

    commit 8513eaa1390922f05d498c8490737be95c6b5ce8
    Author: su-ex <codeworks@supercable.onl>

        Change red the second

    commit 002d1365346f53261cf67427f383aea85655b3b3
    Author: su-ex <codeworks@supercable.onl>

        Better pill and alert colors

    commit 1ad4250029b8c3a06d588d80b1e06a9a051e48e0
    Merge: 158486173b b5fdf11a03
    Author: su-ex <codeworks@supercable.onl>

        Merge tag 'v3.45.0' into sc

    commit c1a277047410e74ae24d3737fe514c7579f98878
    Author: su-ex <codeworks@supercable.onl>

        Fix themes
        - Rebase on Element
        - Better pills

    commit 6e73e67e7e98b3b35804aafa1349b38ad66eac08
    Author: su-ex <codeworks@supercable.onl>

        Fix $presence-offline not visible with light theme if room tile selected

    commit 9092353573307888b64fa1d0b841b43520b26e20
    Author: su-ex <codeworks@supercable.onl>

        theme.sh: Move clean git state check inside correct folder

    commit 6dd1575cadda61502eb509757182377c06adfd27
    Merge: d30537548c cc296ef3da
    Author: su-ex <codeworks@supercable.onl>

        Merge tag 'v3.42.1' into sc

    commit f3da66ac6aec0e726f37dc114466642e907b9cf5
    Author: su-ex <codeworks@supercable.onl>

        Allow theme.sh being run without commit

    commit 44fce0c9120bd29ac4d2673589c56d05f2dc5aeb
    Author: su-ex <codeworks@supercable.onl>

        More pill stuff:
        - Consider custom themes
        - Same colors for other users and rooms
        - Less lighter dark bg

    commit 0b012f748750db67f1618c4aeb1b16c87403fb41
    Author: su-ex <codeworks@supercable.onl>

        Make pill background actually lighter tham the background with the dark theme

    commit c1cde5ad305610245af6c155dbddfb17e2962e24
    Author: su-ex <codeworks@supercable.onl>

        Fix other user pills not visible with dark theme

    commit 973ddf8edc3fd4583961c65909bbc279dc36f847
    Merge: 56b7e84a4c b856083716
    Author: su-ex <codeworks@supercable.onl>

        Merge tag 'v3.36.0' into sc

    commit 515ee58343ac057ccaea75476377078f5ff99bc0
    Merge: ae37a2dc79 bb55c76d81
    Author: su-ex <codeworks@supercable.onl>

        Merge tag 'v3.35.1' into sc

    commit c6f67a0bce737e2d3f19bda4e07dab91e6b8fd33
    Merge: 9e709b6699 27e2faaf64
    Author: su-ex <codeworks@supercable.onl>

        Merge tag 'v3.34.0' into sc

    commit 3c6579e953662e46454b5e3140ad37262d34709c
    Author: su-ex <codeworks@supercable.onl>

        theme.sh update

    commit 7bf38e0802b549184158c049a3c2efc162cb4b8e
    Author: su-ex <codeworks@supercable.onl>

        Some after merge fixes

    commit e2d95dab547d944c4b4c04aac8c52cedcafddd4e
    Merge: 8ee39e7f15 e4f27f04b9
    Author: su-ex <codeworks@supercable.onl>

        Merge remote-tracking branch 'upstream/master' into sc

    commit 508e1653131481bde34b70c7737e5c1f09d5cb2a
    Merge: 351fd94451 e77f7319f2
    Author: su-ex <codeworks@supercable.onl>

        Merge remote-tracking branch 'upstream/master' into sc

    commit 525337fd829e5f778fcab8de68a5fcb078ab8c38
    Author: su-ex <codeworks@supercable.onl>

        Add some colors to theme.sh

    commit e918256a19bc195fd7bf3afa44144804390d6ff3
    Author: su-ex <codeworks@supercable.onl>

        Don't let automatic theme update fail if there was nothing to commit

    commit 09ce713cecd749c195264f8051572bb0db05b496
    Author: SpiritCroc <dev@spiritcroc.de>

        Fix some theme inconsistencies

    commit 196bed3bf5ce9b006005f32092e6dbc898ac30ce
    Author: SpiritCroc <dev@spiritcroc.de>

        Update theme.sh

    commit 53ad57e118b2c14b8dcc6bf6821dde80df980626
    Author: SpiritCroc <dev@spiritcroc.de>

        Update theme.sh

    commit be4d6751620d73a256337803ad5f9d9b47463c56
    Author: SpiritCroc <dev@spiritcroc.de>

        theme.sh: Improve unread badge bg color

    commit d91294f6ee0b92c37d7770f77f043f82fd1f2b58
    Author: SpiritCroc <dev@spiritcroc.de>

        Add theme.sh
2024-04-27 18:01:16 +02:00
su-ex
a1458b136b
New release v1.11.36-sc.3 2024-02-26 10:57:25 +01:00
su-ex
4b0435ef3b
Fix fedora container build
See: https://stackoverflow.com/a/74330717/4515820
2024-02-26 10:45:34 +01:00
su-ex
48fb86093a
New release v1.11.36-sc.2 2024-02-25 21:01:22 +01:00
su-ex
4dcd73f083
Changed sqlcipher variable name 2024-02-25 20:56:48 +01:00
su-ex
9f8bad4ea5
New release v1.11.36-sc.1 2024-02-25 20:36:56 +01:00
su-ex
ab496f7977
Fully containerized release builds 2024-02-25 20:36:48 +01:00
su-ex
9241a6d044
Use fully qualified name here as well 2024-02-24 22:29:48 +01:00
su-ex
446b55792f
This got lost while rebasing 2024-02-24 22:28:53 +01:00
su-ex
1338cf0604
Fix containerbuilds, also always use host directory as project directory 2024-02-24 21:46:25 +01:00
SpiritCroc
90912a5d07 Fix debian container compile 2024-02-24 20:00:45 +01:00
su-ex
e9faf9ab15
Bump node version from 16 to 18 2024-02-24 19:43:25 +01:00
su-ex
aae0f2868e
New test release v1.11.36-sc.0.test.2 2024-02-24 19:37:16 +01:00
su-ex
5f41b4c654
New test release v1.11.36-sc.0.test.1 2024-02-24 19:21:05 +01:00
su-ex
2597454e96
New test release v1.11.35-sc.0.test.1 2024-02-22 19:56:41 +01:00
su-ex
cb6f6d9901
New test release v1.11.34-sc.0.test.1 2024-02-22 19:24:36 +01:00
su-ex
8cf7414a85
New test release v1.11.33-sc.0.test.2 2023-12-13 02:28:15 +01:00
su-ex
2c9f4caa8b
New test release v1.11.33-sc.0.test.1 2023-12-13 02:28:08 +01:00
SpiritCroc
a2c3639112 Bootstrap schildi-lite 2023-12-03 11:45:56 +01:00
Sebastian Walz
8a1b9ab40f Update flake.lock 2023-11-07 23:24:52 +01:00
su-ex
143bf7af1e
merge-upstream.sh: Allow merging specific version 2023-07-31 15:11:53 +02:00
Xenine
e68cd72772 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (52 of 52 strings)

Translation: SchildiChat/schildichat-deskop/matrix-react-sdk
Translate-URL: https://weblate.spiritcroc.de/projects/schildichat/matrix-react-sdk/zh_Hans/
2023-05-15 23:01:59 +00:00
Linerly
3ac88b9132 Translated using Weblate (Indonesian)
Currently translated at 100.0% (52 of 52 strings)

Translation: SchildiChat/schildichat-deskop/matrix-react-sdk
Translate-URL: https://weblate.spiritcroc.de/projects/schildichat/matrix-react-sdk/id/
2023-05-09 17:00:37 +00:00
waclaw66
9561c95bb6 Translated using Weblate (Czech)
Currently translated at 100.0% (52 of 52 strings)

Translation: SchildiChat/schildichat-deskop/matrix-react-sdk
Translate-URL: https://weblate.spiritcroc.de/projects/schildichat/matrix-react-sdk/cs/
2023-05-09 17:00:37 +00:00
misibacsi
a8be3ffcde Translated using Weblate (Hungarian)
Currently translated at 50.9% (26 of 51 strings)

Translation: SchildiChat/schildichat-deskop/matrix-react-sdk
Translate-URL: https://weblate.spiritcroc.de/projects/schildichat/matrix-react-sdk/hu/
2023-05-09 17:00:37 +00:00
su-ex
0ba494e955
Use llvm instead llvm15 for Fedora 2023-04-25 23:53:41 +02:00
su-ex
be44d4a1a6
New release v1.11.30-sc.2 2023-04-25 23:23:49 +02:00
su-ex
f9ab1ef2e0
New release v1.11.30-sc.1 2023-04-25 22:59:51 +02:00
su-ex
1a485faf72
New test release v1.11.29-sc.0.test.3 2023-04-22 12:30:03 +02:00
su-ex
64557e1da9
New test release v1.11.29-sc.0.test.2 2023-04-22 12:25:57 +02:00
su-ex
5122f0e870
Add missing string for freeform reactions 2023-04-22 12:25:57 +02:00
SpiritCroc
0eb99a6a60 Make fixup: also check if yarn cache is broken and clean it if necessary
If `yarn cache list` fails, this can also lead to weird errors during
fixup, like
```
error /schildichat-desktop/matrix-react-sdk/node_modules/cypress: Command failed.
Exit code: 1
Command: node index.js --exec install
Arguments:
Directory: /schildichat-desktop/matrix-react-sdk/node_modules/cypress
Output:
node:internal/modules/cjs/loader:433
      throw err;
      ^

Error: Cannot find module '/schildichat-desktop/matrix-react-sdk/node_modules/human-signals/build/src/main.js'. Please verify that the package.json has a valid "main" entry
    at tryPackage (node:internal/modules/cjs/loader:425:19)
    at Function.Module._findPath (node:internal/modules/cjs/loader:638:18)
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1012:27)
    at Function.Module._load (node:internal/modules/cjs/loader:871:27)
    at Module.require (node:internal/modules/cjs/loader:1098:19)
    at require (node:internal/modules/cjs/helpers:108:18)
    at Object.<anonymous> (/schildichat-desktop/matrix-react-sdk/node_modules/execa/lib/error.js:2:25)
    at Module._compile (node:internal/modules/cjs/loader:1196:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1250:10)
    at Module.load (node:internal/modules/cjs/loader:1074:32) {
  code: 'MODULE_NOT_FOUND',
  path: '/schildichat-desktop/matrix-react-sdk/node_modules/human-signals
```
2023-04-22 10:41:59 +02:00
SpiritCroc
979be00158 Add script to completely reset repos from leftovers 2023-04-22 10:41:59 +02:00
su-ex
10a5112285
ruby fpm also needs its dependencies for Fedora 2023-04-21 12:47:41 +02:00
su-ex
40c598e91b
llvm15 seems to be necessary for Fedora 38 with rust 2023-04-21 12:37:58 +02:00
su-ex
1e0e3b718c
New test release v1.11.29-sc.0.test.1 2023-04-21 12:32:00 +02:00
misibacsi
219c0e3cf7 Translated using Weblate (Hungarian)
Currently translated at 100.0% (1 of 1 strings)

Translation: SchildiChat/schildichat-deskop/element-desktop
Translate-URL: https://weblate.spiritcroc.de/projects/schildichat/element-desktop/hu/
2023-04-20 21:06:03 +00:00
Michele Agostinelli
0ecdbb1bb8 Translated using Weblate (Italian)
Currently translated at 62.7% (32 of 51 strings)

Translation: SchildiChat/schildichat-deskop/matrix-react-sdk
Translate-URL: https://weblate.spiritcroc.de/projects/schildichat/matrix-react-sdk/it/
2023-04-07 11:40:28 +00:00
su-ex
c5042532eb
automatic_i18n_adjustment: It's still Element Call 2023-04-07 12:57:44 +02:00
su-ex
b3516d1621
New test release v1.11.28-sc.0.test.1 2023-04-02 02:30:27 +02:00
su-ex
788816299c
New release v1.11.26-sc.1 2023-03-28 20:59:25 +02:00
su-ex
2e3d370c38
New test release v1.11.25-sc.0.test.1 2023-03-16 00:10:51 +01:00
su-ex
d977e5c753
New test release v1.11.24-sc.0.test.1 2023-03-15 21:43:57 +01:00
Felipe Nogueira
0ef609f57b Translated using Weblate (Portuguese (Brazil))
Currently translated at 82.3% (42 of 51 strings)

Translation: SchildiChat/schildichat-deskop/matrix-react-sdk
Translate-URL: https://weblate.spiritcroc.de/projects/schildichat/matrix-react-sdk/pt_BR/
2023-03-03 19:00:13 +00:00
su-ex
2066ef2623
New test release v1.11.23-sc.0.test.1 2023-03-01 00:21:34 +01:00
waclaw66
b0177a4276 Translated using Weblate (Czech)
Currently translated at 100.0% (51 of 51 strings)

Translation: SchildiChat/schildichat-deskop/matrix-react-sdk
Translate-URL: https://weblate.spiritcroc.de/projects/schildichat/matrix-react-sdk/cs/
2023-02-04 06:42:18 +00:00
su-ex
87e7893d07
New release v1.11.22-sc.1 2023-02-01 20:32:07 +01:00
su-ex
ae4eb4c3da
New test release v1.11.22-sc.0.test.1 2023-02-01 16:51:20 +01:00
su-ex
32f58e1c3f
New test release v1.11.20-sc.0.test.1 2023-01-30 23:43:21 +01:00
su-ex
db908634ea
New test release v1.11.19-sc.0.test.1 2023-01-19 18:22:08 +01:00
su-ex
965a3b2d0e
New test release v1.11.17-sc.0.test.1 2023-01-15 13:18:24 +01:00
su-ex
775fb00b75
Adjust default config.json to changed property names 2023-01-15 12:31:07 +01:00
SpiritCroc
9d4602fea6 Add stale automation github action 2022-12-23 10:14:00 +01:00
su-ex
eb17c2ad94
New test release v1.11.16-sc.0.test.1 2022-12-06 20:08:30 +01:00
su-ex
a4ab5f55c9
New test release v1.11.15-sc.0.test.2 2022-12-04 02:56:38 +01:00
su-ex
fc27cbfd74
Allow building using containers
Co-authored-by: Paarth Shah <mail@shahpaarth.com>

Closes #145
2022-12-04 02:37:55 +01:00
su-ex
51e7d4b67b
New test release v1.11.15-sc.0.test.1 2022-11-26 00:30:33 +01:00
su-ex
92ac040175
Renovate config.json
- default_server_name --> default_server_config
- Add more room directories
2022-11-15 23:39:05 +01:00
su-ex
0bfa5733d5
New test release v1.11.14-sc.0.test.1 2022-11-12 11:28:31 +01:00
su-ex
b6fe959153
Meh, flathub seems to require PRs now 🐐 2022-11-05 22:42:14 +01:00
su-ex
3c405aeaf6
New release v1.11.13-sc.1 2022-11-05 20:22:09 +01:00
su-ex
e26d244c1e
New test release v1.11.13-sc.0.test.1 2022-11-04 21:17:04 +01:00
su-ex
6bc26949c1
New test release v1.11.12-sc.0.test.2 2022-10-30 12:08:59 +01:00
su-ex
e22b6bb031
New test release v1.11.12-sc.0.test.1 2022-10-29 23:41:13 +02:00
autoteelar
ae1e15dcef Translated using Weblate (Japanese)
Currently translated at 1.9% (1 of 51 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/ja/
2022-10-27 11:11:02 +02:00
Weblate
92599de20a Added translation using Weblate (Japanese) 2022-10-26 10:50:50 +02:00
Weblate
c2318080eb Added translation using Weblate (Japanese) 2022-10-26 10:50:49 +02:00
autoteelar
b9d35c0cc1 Added translation using Weblate (Japanese) 2022-10-26 10:50:41 +02:00
su-ex
77fbeb625c
New release v1.11.8-sc.1 2022-09-28 19:49:26 +02:00
su-ex
95d46b08b4
New test release v1.11.6-sc.0.test.3 2022-09-28 14:34:33 +02:00
su-ex
a7c084d6f8
New test release v1.11.6-sc.0.test.2 2022-09-28 13:35:57 +02:00
su-ex
6c5136d844
New test release v1.11.6-sc.0.test.1 2022-09-28 13:08:02 +02:00
Anonimas
fc8900cf13 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (51 of 51 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/lt/
2022-09-17 20:10:47 +02:00
su-ex
e886c4c135
New test release v1.11.5-sc.0.test.1 2022-09-15 17:46:31 +02:00
su-ex
30dc3ba5b9
readme: Debian node 16 2022-09-03 23:11:51 +02:00
su-ex
dfa7921f9a
Makefile: fixup just too useful everywhere 2022-09-03 22:26:58 +02:00
su-ex
cd8998da62
Add script for changelog generation 2022-09-03 22:04:10 +02:00
su-ex
05ff60b4c3
New release v1.11.4-sc.1 2022-09-03 19:02:18 +02:00
su-ex
04cb55d6c3
New test release v1.11.4-sc.0.test.2 2022-09-03 16:29:29 +02:00
su-ex
a2a87f04ca
New test release v1.11.4-sc.0.test.1 2022-09-03 16:08:46 +02:00
su-ex
7f80df5ca6
New test release v1.11.3-sc.0.test.1 2022-08-22 23:33:14 +02:00
Allan Nordhøy
3757d1d7d6 Translated using Weblate (Norwegian Bokmål)
Currently translated at 66.6% (34 of 51 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/nb_NO/
2022-08-04 04:04:39 +02:00
83 changed files with 28782 additions and 384 deletions

1
.containerignore Normal file
View File

@ -0,0 +1 @@
release/

17
.github/workflows/stale.yml vendored Normal file
View File

@ -0,0 +1,17 @@
name: 'Close stale issues'
on:
schedule:
- cron: '30 1 * * *'
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v6
with:
stale-issue-message: 'This issue is stale because it has been open 150 days with no activity. Remove stale label or comment or this will be closed in 14 days.'
days-before-issue-stale: 150
days-before-issue-close: 14
days-before-pr-stale: -1
days-before-pr-close: -1
exempt-issue-labels: 'longterm,enhancement,parity-with-android,prio:medium,prio:high,electron issue,encrypted room search,build infrastructure'

6
.gitmodules vendored
View File

@ -1,12 +1,12 @@
[submodule "matrix-js-sdk"]
path = matrix-js-sdk
url = https://github.com/SchildiChat/matrix-js-sdk.git
[submodule "matrix-react-sdk"]
path = matrix-react-sdk
url = https://github.com/SchildiChat/matrix-react-sdk.git
[submodule "element-web"]
path = element-web
url = https://github.com/SchildiChat/element-web.git
[submodule "element-desktop"]
path = element-desktop
url = https://github.com/SchildiChat/element-desktop.git
[submodule "compound-web"]
path = compound-web
url = https://github.com/SchildiChat/compound-web.git

28
Containerfile.debian Normal file
View File

@ -0,0 +1,28 @@
ARG NODE_VERSION
FROM docker.io/node:${NODE_VERSION}-bookworm
RUN apt-get -qq update && apt-get -qq install --no-install-recommends -y \
curl \
g++ \
gcc \
git \
jq \
libarchive-tools \
libsecret-1-dev \
libsqlcipher-dev \
libssl-dev \
make \
openssl \
pkg-config \
python3 \
rpm \
tcl \
vim
RUN ln -s /usr/bin/python3 /usr/bin/python
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal
WORKDIR /project

22
Containerfile.fedora Normal file
View File

@ -0,0 +1,22 @@
FROM docker.io/fedora:40
RUN dnf install -y openssl openssl-devel cargo llvm libsecret libsecret-devel sqlcipher sqlcipher-devel g++ ruby-devel gcc make rpm-build libffi-devel tcl libxcrypt-compat pkgconf perl python3-setuptools
# node setup
ARG NODE_VERSION
RUN mkdir -p /usr/local/n
RUN mkdir -p /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
RUN curl -L https://raw.githubusercontent.com/tj/n/master/bin/n -o n
RUN bash n ${NODE_VERSION}
RUN npm install -g n
RUN npm install -g yarn
RUN npm install -g node-gyp
RUN gem install --no-user-install --no-document fpm
RUN ln -s /usr/bin/python3 /usr/bin/python
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal
WORKDIR /project

13
Containerfile.windows Normal file
View File

@ -0,0 +1,13 @@
ARG CONTAINER_IMAGE_DEBIAN
FROM ${CONTAINER_IMAGE_DEBIAN}:latest
RUN dpkg --add-architecture i386 && apt-get update && apt-get install --no-install-recommends -y \
wine \
wine32 \
wine64 \
libwine \
libwine:i386 \
fonts-wine \
zip
WORKDIR /project

35
FEATURES.md Normal file
View File

@ -0,0 +1,35 @@
# Features and changes compared to upstream
Note that this list may be incomplete or outdated.
## General UI
- Schildi theme
- Some changed settings defaults
## Chat overview ("room list")
- Unified room list instead of separating DMs and groups (TODO: setting)
- Do not exclude currently selected room when updating room sort order
- Do not force muted rooms to be sorted at the bottom
- Hide reactions from room previews
- Show unread state of muted rooms
- Increase default visible tiles before collapsing each section
- Include DMs in space unread counts
- Show space overview rather then jumping to last opened room when switching space
- Do not add spaces to recently opened rooms list ("breadcrumbs")
## Conversation screen
- Allow sending freeform reactions
- Less restrictive width limit for rendering text reactions
## Non-core community contributions
Following features and changes are community-maintained, i.e. do not embody core SchildiChat features and may be dropped in future releases in case they cause a notable maintenance burden.
- [Improved IRC layout](https://github.com/SchildiChat/schildichat-desktop/pull/269)

View File

@ -1,13 +1,19 @@
.PHONY: all setup regenerate-i18n web desktop-common linux debian rpm pacman local-pkgbuild local-pkgbuild-install windows windows-portable
.PHONY: web-release debian-release rpm-release pacman-release windows-setup-release windows-unpacked-release windows-portable-release windows-release
.PHONY: macos-common macos macos-mas macos-release macos-mas-release icns
.PHONY: clean
.PHONY: container-build-debian container-build-fedora container-build-windows
.PHONY: container-web-release container-debian-release container-rpm-release container-appimage-release container-windows-release container-release container-local-pkgbuild
.PHONY: linux-container-release container-debian-based-release
.PHONY: clean undo_setup fixup
.PHONY: fix_yarn_cache
CFGDIR ?= configs/sc
all: web
YARN ?= yarnpkg
CONTAINER_ENGINE ?= podman
NODE_VERSION ?= 22
VERSION := $(shell grep version element-desktop/package.json | sed 's|.*: \"\(.*\)\",|\1|')
WEB_APP_NAME := $(shell grep '"name"' element-web/package.json | head -n 1 | sed 's|.*: \"\(.*\)\",|\1|')
@ -16,7 +22,8 @@ PRODUCT_NAME := $(shell grep '"productName"' element-desktop/package.json | sed
WEB_OUT := element-web/dist
WEB_OUT_DIST_VERSION := $(VERSION)
OUT_WEB := $(WEB_OUT)/$(WEB_APP_NAME)-$(WEB_OUT_DIST_VERSION).tar.gz
#OUT_WEB := $(WEB_OUT)/$(WEB_APP_NAME)-$(WEB_OUT_DIST_VERSION).tar.gz
OUT_WEB := $(WEB_OUT)/element-$(WEB_OUT_DIST_VERSION).tar.gz
DESKTOP_OUT := element-desktop/dist
OUT_DEB64 := $(DESKTOP_OUT)/$(DESKTOP_APP_NAME)_$(VERSION)_amd64.deb
@ -32,6 +39,10 @@ OUT_WIN64_PORTABLE_BETTER_NAME := $(PRODUCT_NAME)_win-portable_v$(VERSION)
OUT_MACOS := $(DESKTOP_OUT)/$(PRODUCT_NAME)-$(VERSION)-universal.dmg
OUT_MACOS_MAS := $(DESKTOP_OUT)/mas-universal/$(PRODUCT_NAME).app
CONTAINER_IMAGE_DEBIAN := schildichat-desktop-containerbuild-debian
CONTAINER_IMAGE_FEDORA := schildichat-desktop-containerbuild-fedora
CONTAINER_IMAGE_WINDOWS := schildichat-desktop-containerbuild-windows
RELEASE_DIR := release
CURRENT_RELEASE_DIR := $(RELEASE_DIR)/$(VERSION)
@ -68,7 +79,7 @@ web: setup
desktop-common: web
$(YARN) --cwd element-desktop run fetch --cfgdir ''
SQLCIPHER_STATIC=1 $(YARN) --cwd element-desktop run build:native
SQLCIPHER_BUNDLED=1 $(YARN) --cwd element-desktop run build:native
macos-common: web icns
$(YARN) --cwd element-desktop run fetch --cfgdir ''
@ -114,7 +125,7 @@ local-pkgbuild-install: local-pkgbuild
web-release: web
mkdir -p $(CURRENT_RELEASE_DIR)
cp $(OUT_WEB) $(CURRENT_RELEASE_DIR)
cp $(OUT_WEB) $(CURRENT_RELEASE_DIR)/${WEB_APP_NAME}-$(WEB_OUT_DIST_VERSION).tar.gz
debian-release: debian
mkdir -p $(CURRENT_RELEASE_DIR)
@ -153,16 +164,65 @@ macos-mas-release: macos-mas
mkdir -p $(CURRENT_RELEASE_DIR)
cp $(OUT_MACOS_MAS) $(CURRENT_RELEASE_DIR)
bom.lock: element-desktop/yarn.lock element-web/yarn.lock matrix-js-sdk/yarn.lock matrix-react-sdk/yarn.lock
container-build-debian:
$(CONTAINER_ENGINE) build --security-opt seccomp=unconfined --security-opt label=disable -t $(CONTAINER_IMAGE_DEBIAN) -f Containerfile.debian --build-arg NODE_VERSION=$(NODE_VERSION) .
container-build-fedora:
$(CONTAINER_ENGINE) build --security-opt seccomp=unconfined --security-opt label=disable -t $(CONTAINER_IMAGE_FEDORA) -f Containerfile.fedora --build-arg NODE_VERSION=$(NODE_VERSION) .
container-build-windows: container-build-debian
$(CONTAINER_ENGINE) build --security-opt seccomp=unconfined --security-opt label=disable -t $(CONTAINER_IMAGE_WINDOWS) -f Containerfile.windows --build-arg CONTAINER_IMAGE_DEBIAN=$(CONTAINER_IMAGE_DEBIAN) .
container-web-release: container-build-debian
$(CONTAINER_ENGINE) run --rm -ti -v $(PWD):/project --security-opt seccomp=unconfined --security-opt label=disable $(CONTAINER_IMAGE_DEBIAN):latest make web-release
container-debian-release: container-build-debian
$(CONTAINER_ENGINE) run --rm -ti -v $(PWD):/project --security-opt seccomp=unconfined --security-opt label=disable $(CONTAINER_IMAGE_DEBIAN):latest make debian-release
# For all releases which are fine being built from Debian
container-debian-based-release: container-build-debian
$(CONTAINER_ENGINE) run --rm -ti -v $(PWD):/project --security-opt seccomp=unconfined --security-opt label=disable $(CONTAINER_IMAGE_DEBIAN):latest make web-release debian-release appimage-release
container-rpm-release: container-build-fedora
$(CONTAINER_ENGINE) run --rm -ti -v $(PWD):/project --security-opt seccomp=unconfined --security-opt label=disable $(CONTAINER_IMAGE_FEDORA):latest make rpm-release
container-appimage-release: container-build-debian
$(CONTAINER_ENGINE) run --rm -ti -v $(PWD):/project --security-opt seccomp=unconfined --security-opt label=disable $(CONTAINER_IMAGE_DEBIAN):latest make appimage-release
container-windows-release: container-build-windows
$(CONTAINER_ENGINE) run --rm -ti -v $(PWD):/project --security-opt seccomp=unconfined --security-opt label=disable $(CONTAINER_IMAGE_WINDOWS):latest make windows-release
container-release: container-build-windows #container-build-fedora
$(CONTAINER_ENGINE) run --rm -ti -v $(PWD):/project --security-opt seccomp=unconfined --security-opt label=disable $(CONTAINER_IMAGE_WINDOWS):latest make web-release debian-release appimage-release rpm-release windows-setup-release windows-portable-release
#$(CONTAINER_ENGINE) run --rm -ti -v $(PWD):/project --security-opt seccomp=unconfined --security-opt label=disable $(CONTAINER_IMAGE_FEDORA):latest make rpm-release
# For all Linux releases we build
linux-container-release: container-debian-based-release container-rpm-release
container-local-pkgbuild: container-build-debian
$(CONTAINER_ENGINE) run --rm -ti -v $(PWD):/project --security-opt seccomp=unconfined --security-opt label=disable $(CONTAINER_IMAGE_DEBIAN):latest make local-pkgbuild
bom.lock: element-desktop/yarn.lock element-web/yarn.lock matrix-js-sdk/yarn.lock
./build-bom.sh
bom: bom.lock
fix_yarn_cache:
$(YARN) cache list || $(YARN) cache clean
clean:
$(YARN) --cwd matrix-js-sdk clean
$(YARN) --cwd matrix-react-sdk clean
$(YARN) --cwd element-web clean
$(YARN) --cwd element-desktop clean
rm -f element-desktop/webapp
rm -f element-desktop/webapp || true
rm -rf element-web/dist
rm -rf local-pkgbuild
rm -f bom.lock
rm -f element-web/res/css/sc-cpd-overrides.css
undo_setup:
rm -rf element-desktop/node_modules element-web/node_modules matrix-js-sdk/node_modules i18n-helper/node_modules element-desktop/.hak
fixup: undo_setup fix_yarn_cache
make setup
make clean
make setup

124
README.md
View File

@ -1,45 +1,98 @@
# SchildiChat Web/Desktop
SchildiChat Web/Desktop is a fork of Element [Web](https://github.com/vector-im/element-web)/[Desktop](https://github.com/vector-im/element-desktop).
SchildiChat Web/Desktop is a fork of Element [Web](https://github.com/element-hq/element-web)/[Desktop](https://github.com/element-hq/element-desktop).
The most important changes of SchildiChat Web/Desktop compared to Element Web/Desktop are:
- Customizable room list style (compact single line, intermediate and roomy with two line preview)
- Option to show direct and group chats in a combined list
- Improved theming options
- Message bubbles
- &hellip; and more!
Desktop downloads with installation instructions are listed on our website: [https://schildi.chat/desktop](https://schildi.chat/desktop)
Hosted web variant: [https://app.schildi.chat/](https://app.schildi.chat/)
Feel free to [join the discussion on matrix](https://matrix.to/#/#schildichat-web:matrix.org).
<img src="https://raw.githubusercontent.com/SchildiChat/schildichat-desktop/sc/screenshots/1.png"/>
<details>
<summary>Public key used to sign the Debian packages</summary>
## Initial build setup
```
pub rsa4096 2020-12-08 [SC]
560BB70DA86A6633A39CEC6023358905FE294D01
uid Super apt repo key <apt@supercable.onl>
sub rsa4096 2020-12-08 [E]
git clone -b lite --recurse-submodules https://github.com/SchildiChat/schildichat-desktop.git
cd schildichat-desktop
make setup # optional step if using the other make targets
```
</details>
## Building on Linux
Easiest to build on Linux is using `podman`, i.e. use one of the following make targets:
```
make container-appimage-release
make container-debian-release
make container-rpm-release
make container-web-release
```
## Windows building dependencies
To build on Windows, use [Element's](https://web-docs.element.dev/Element%20Desktop/windows-requirements.html) guide as starting point.
Some additional notes I found useful:
### Before build
To prepare your build environment for VSC tools (use 2022 rather than 2019 mentioned upstream:
```
"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" amd64
```
Additionally, make sure some programs are in your `PATH`:
```
export PATH="/C/Strawberry/perl/bin:$PATH:/C/Program Files/NASM:/C/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.41.34120/bin/Hostx64/x64/"
```
- Strawberry perl needs to go before possibly already installed `/usr/bin/perl`
- NASM needs to be available
- `nmake` bundled with VSC wasn't available without adding that additionally (make sure the version is correct for what you installed)
### Additional packages not mentioned upstream
```
npm install yarn
npm install gyp
npm install electron-builder
npm install @electron/fuses
pip install setuptools
```
To update outdated npm packages:
```
npm outdated
npm update <name>
```
### Troubleshooting
- `yarn link` fails with permission denied: [kill any running nodejs task](https://stackoverflow.com/questions/64603970/an-unexpected-error-occurred-eperm-operation-not-permitted-in-yarn)
- `electron-builder` fails to extract `winCodeSign`:
- Download [source code](https://github.com/electron-userland/electron-builder-binaries/releases/tag/winCodeSign-2.6.0) manually
- Extract `electron-builder-binaries-winCodeSign-2.6.0.zip\electron-builder-binaries-winCodeSign-2.6.0\winCodeSign` to your `AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.6.0
- [Source](https://github.com/electron-userland/electron-builder/issues/8149#issuecomment-2328460139)
## Release builds
See [here](RELEASE.md).
## Old build instructions, to be revised in the future
## Building SchildiChat Web/Desktop
This particular repo is a wrapper project for element-desktop, element-web, matrix-react-sdk and matrix-js-sdk. It's the recommended starting point to build SchildiChat for Web **and** Desktop.
This particular repo is a wrapper project for element-desktop, element-web, and matrix-js-sdk. It's the recommended starting point to build SchildiChat for Web **and** Desktop.
The `master` branch contains the latest release.
Development happens in the `sc` branch, which might be **broken at any time**!
<pre><code><b>schildichat-desktop</b> <i>&lt;-- this repo</i> (recommended starting point to build SchildiChat for Web <b>and</b> Desktop)
|-- <a href="https://github.com/SchildiChat/element-desktop">element-desktop</a> (electron wrapper)
|-- <a href="https://github.com/SchildiChat/element-web">element-web</a> ("skin" for matrix-react-sdk)
|-- <a href="https://github.com/SchildiChat/matrix-react-sdk">matrix-react-sdk</a> (most of the development happens here)
|-- <a href="https://github.com/SchildiChat/element-web">element-web</a> (most of the development happens here)
`-- <a href="https://github.com/SchildiChat/matrix-js-sdk">matrix-js-sdk</a> (Matrix client js sdk)
</code></pre>
@ -54,7 +107,7 @@ The following are the dependencies required to build SchildiChat Web/Desktop on
```
# apt install vim curl git make gcc g++ python jq libsqlcipher-dev pkg-config libsecret-1-dev libarchive-tools openssl libssl-dev tcl
# curl -sL https://deb.nodesource.com/setup_14.x | bash -
# curl -sL https://deb.nodesource.com/setup_16.x | bash -
# apt update
# apt install nodejs
@ -89,17 +142,6 @@ or set `CSC_NAME` to your certificate name or id.
To notarize a build with Apple set `NOTARIZE_APPLE_ID` to your AppleID and set the keychain item
`NOTARIZE_CREDS` to an App specific AppleID password.
### Initial setup
As already noted above, **`master` contains the latest release** and **`sc` is the development branch**!
```
git clone -b master --recurse-submodules https://github.com/SchildiChat/schildichat-desktop.git
cd schildichat-desktop
make setup # optional step if using the other make targets
```
### Create release builds
```
@ -135,3 +177,13 @@ your-deploy-%: CFGDIR := $(YOUR_CFGDIR)
your-deploy-web: web
rsync --info=progress2 -rup --del element-web/webapp/ you@yourwebserver:/the/folder/served/for/schildi/
```
# Merge helpers
## Add upstream repo remotes
```
source merge_helpers.sh
forall_repos add_upstream
```

26
RELEASE.md Normal file
View File

@ -0,0 +1,26 @@
# Releasing SchildiChat deskop
## Build Linux releases
On a Linux machine with podman:
```
make linux-container-release
```
## Build Windows releases
On a Windows machine in git bash (**not** WSL), run:
```
make windows-setup-release
```
## Upload the release
Copy the Windows-generated `.exe` from the `release` directory into the release directory on your Linux machine.
Then (after ensuring you have a GitHub API token setup for the script to pick up):
```
./deploy/create-github-release.sh
```

38
apply_patches.sh Executable file
View File

@ -0,0 +1,38 @@
#!/bin/bash
set -e
mydir="$(dirname "$(realpath "$0")")"
print_section() {
local msg="$1"
echo "##############################################################"
echo "# $msg"
echo "##############################################################"
}
pushd "$mydir" > /dev/null
source ./merge_helpers.sh
# Apply our patches
#print_section "Apply patches to matrix-js-sdk"
#apply_patches matrix-js-sdk
print_section "Apply patches to element-web"
apply_patches element-web
print_section "Apply patches to element-desktop"
apply_patches element-desktop
# Automatic adjustments
#print_section "Apply i18n"
#automatic_i18n_adjustment
print_section "Apply automatic package adjustments"
automatic_packagejson_adjustment
# Automatic theme and icon update
print_section "Apply automatic theme updates"
./theme.sh y
print_section "Generate icons"
./graphics/icon_gen.sh y
popd > /dev/null

View File

@ -5,8 +5,6 @@ cat element-web/yarn.lock >> bom.lock
echo "" >> bom.lock
cat matrix-js-sdk/yarn.lock >> bom.lock
echo "" >> bom.lock
cat matrix-react-sdk/yarn.lock >> bom.lock
echo "" >> bom.lock
# matrix-seshat
cat << EOF >> bom.lock

1
compound-web Submodule

@ -0,0 +1 @@
Subproject commit 57ee5bfdf13c58ca3bcbc2d0eb2993d7b4a0b89d

View File

@ -1,6 +1,11 @@
{
"update_base_url": null,
"default_server_name": "matrix.org",
"default_server_config": {
"m.homeserver": {
"base_url": "https://matrix-client.matrix.org",
"server_name": "matrix.org"
}
},
"brand": "SchildiChat",
"integrations_ui_url": "https://scalar.vector.im/",
"integrations_rest_url": "https://scalar.vector.im/api",
@ -11,10 +16,13 @@
"https://scalar-staging.vector.im/api",
"https://scalar-staging.riot.im/scalar/api"
],
"showLabsSettings": true,
"roomDirectory": {
"show_labs_settings": true,
"room_directory": {
"servers": [
"matrix.org"
"matrix.org",
"gitter.im",
"libera.chat",
"schildi.chat"
]
},
"enable_presence_by_hs_url": {

View File

@ -10,12 +10,21 @@ set -e
version="$1"
releasepath="$2"
github_api_token=`cat ~/githubtoken`
if [ -z "$version" ] || [ -z "$releasepath" ]; then
echo "Usage: $0 <version> <releasepath>"
exit 1
fi
if [ -z "$GITHUB_API_TOKEN" ]; then
github_api_token=`cat ~/githubtoken`
else
github_api_token="$GITHUB_API_TOKEN"
fi
release_notes_file="/tmp/scrn.md"
owner=SchildiChat
repo=schildichat-desktop
target=master
target=lite
# Define variables
GH_API="https://api.github.com"
@ -37,7 +46,7 @@ json_string=`jq -n --arg tag "v$version" --arg target "$target" --arg body "$rel
name: $tag,
body: $body,
draft: true,
prerelease: false
prerelease: true
}'`
# echo "$json_string"
res=`echo "$json_string" | curl -sH "$AUTH" $GH_REPO/releases -d @-`

View File

@ -20,8 +20,11 @@ debdate=$(date +%Y-%m-%d -r $debpath)
pushd "$repopath" > /dev/null
git fetch
git checkout master
git reset --hard origin/master
git checkout -B "release-v$version"
yamlFile="chat.schildi.desktop.yaml"
xmlFile="chat.schildi.desktop.metainfo.xml"
@ -33,8 +36,8 @@ sed -i "s|^\s\s<releases>$| <releases>\n <release version=\"$version\" date=
git add $yamlFile $xmlFile
git commit -m "Bump version to v$version"
git push
git push -f --set-upstream origin "release-v$version"
popd > /dev/null
echo "Release v$version published on flathub!"
echo "Release v$version published on flathub, now merge that branch as PR: https://github.com/flathub/chat.schildi.desktop/"

@ -1 +1 @@
Subproject commit ba6b8bf283a92c3f80539eab5b1c62e396b6e93e
Subproject commit 7d95337b9b4847752b4d7ffac8a894c7bdc7d7ac

@ -1 +1 @@
Subproject commit 1203f1530d67863a4cb27d25851d46eecebf5685
Subproject commit 702182d503b5afdb262634384606797dde103a4d

6
flake.lock generated
View File

@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1633901457,
"narHash": "sha256-GNJLwKENqEA4xlzkWI76VLHBAua4LUIlTeeiH4FR7Gc=",
"lastModified": 1699380656,
"narHash": "sha256-H9kQH3J2Z15Ady3zVQsN/tXv8qnRr+p1B0eUkR1bKfE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f358794824b4595d77fec93732485d329ed7b0e0",
"rev": "03e7a22654c44489a0a70ea0e237de3e512cd8a6",
"type": "github"
},
"original": {

61
generate_changelog.sh Executable file
View File

@ -0,0 +1,61 @@
#!/bin/bash
set -e
mydir="$(dirname "$(realpath "$0")")"
pushd "$mydir" > /dev/null
source ./merge_helpers.sh
# Check branch
check_branch $branch
forall_repos check_branch $branch
# Ensure clean git state
forall_repos check_clean_git
# Fetch upstream
forall_repos git fetch origin > /dev/null 2>/dev/null
forall_repos git fetch upstream > /dev/null 2>/dev/null
(
# Add new line below git log: https://unix.stackexchange.com/a/345558
get_latest_upstream_tag
forelement_repos git log --pretty=format:"- %s" "sc" "^$latest_upstream_tag" "^master" \
| printf '%s\n' "$(cat)" \
| sed "s|Merge tag '\\(.*\\)' into sc.*|Update codebase to Element \1|" \
| sed "s|Merge tag '\\(.*\\)' into merge.*|Update codebase to Element \1|"
get_current_mxsdk_tags
pushd "matrix-js-sdk" > /dev/null
git log --pretty=format:"- %s" "sc" "^$current_mxjssdk_tag" "^master" \
| printf '%s\n' "$(cat)" \
| grep -v "Merge .*tag"
popd > /dev/null
pushd "matrix-react-sdk" > /dev/null
git log --pretty=format:"- %s" "sc" "^$current_mxreactsdk_tag" "^master" \
| printf '%s\n' "$(cat)" \
| grep -v "Merge .*tag"
popd > /dev/null
) \
| grep -v "Automatic i18n reversion" \
| grep -v "Automatic package.json reversion" \
| grep -v "Merge .*branch" \
| grep -v "Automatic theme update" \
| grep -v "Automatic package.json adjustment" \
| grep -v "Automatic i18n adjustment" \
| grep -v "Update version to .*-sc\\..*" \
| grep -v "\\.sh" \
| grep -v "\\.md" \
| grep -v "Added translation using Weblate" \
| grep -v "Translated using Weblate" \
| grep -v "weblate/sc" \
| grep -v "\\[.*merge.*\\]" \
| awk '!seen[$0]++' `# https://stackoverflow.com/a/1444448` \
|| echo "No significant changes since the last stable release"
popd > /dev/null

44
generate_patches.sh Executable file
View File

@ -0,0 +1,44 @@
#!/bin/bash
set -e
mydir="$(dirname "$(realpath "$0")")"
pushd "$mydir" > /dev/null
source ./merge_helpers.sh
persist_patches() {
local repo="$(realpath "$1")"
local patch_dir="$SCHILDI_ROOT/patches/$(basename "$1")"
if [ ! -d "$repo" ]; then
echo "Unknown repo: $repo"
return 1
fi
pushd "$repo"
if [ -d "$patch_dir" ]; then
echo "Clearing old patches..."
rm "$patch_dir"/*
else
echo "Creating new patch dir $patch_dir..."
mkdir "$patch_dir"
fi
# Assume we forked from a tag starting with 'v' (our own tags start with sc_)
local fork_point=`git describe --tags --match 'v*'| sed 's|-[^-]*-[^-]*$||'`
echo "Creating new patches from $fork_point"
git format-patch -k "$fork_point".. -o "$patch_dir"
echo "Clearing automated commits from patches"
find "$patch_dir" -name "*-Automatic-package.json-adjustment.patch" -exec rm {} \;
find "$patch_dir" -name "*-Automatic-icon-update.patch" -exec rm {} \;
find "$patch_dir" -name "*-Automatic-theme-update.patch" -exec rm {} \;
find "$patch_dir" -name "*-Automatic-setup-commit.patch" -exec rm {} \;
find "$patch_dir" -name "*-Update-version-to-*.patch" -exec rm {} \;
popd
}
persist_patches element-desktop
persist_patches element-web
#persist_patches matrix-js-sdk
popd > /dev/null

815
graphics/feature_image.svg Normal file
View File

@ -0,0 +1,815 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
sodipodi:docname="feature_image.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
id="svg1224"
version="1.1"
viewBox="0 0 270.93333 132.29167"
height="500"
width="1024"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs1218">
<linearGradient
id="linearGradient1"
inkscape:collect="always">
<stop
style="stop-color:#0a5c7c;stop-opacity:1;"
offset="0"
id="stop2" />
<stop
style="stop-color:#001a2a;stop-opacity:1;"
offset="1"
id="stop1" />
</linearGradient>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2036"
x="-0.13812872"
y="-0.16452942"
width="1.2762574"
height="1.3290588">
<feFlood
flood-opacity="0.501961"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood2026" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite2028" />
<feGaussianBlur
in="composite1"
stdDeviation="1.5"
result="blur"
id="feGaussianBlur2030" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset2032" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite2034" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2965-4"
x="-0.21722835"
y="-0.25923403"
width="1.4344567"
height="1.5184681">
<feFlood
flood-opacity="0.8"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood2955-7" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite2957-6" />
<feGaussianBlur
in="composite1"
stdDeviation="8"
result="blur"
id="feGaussianBlur2959-56" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset2961-9" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite2963-3" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2953-7"
x="-0.32309693"
y="-0.25279658"
width="1.6461939"
height="1.5055932">
<feFlood
flood-opacity="0.8"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood2943-4" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite2945-5" />
<feGaussianBlur
in="composite1"
stdDeviation="8"
result="blur"
id="feGaussianBlur2947-2" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset2949-5" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite2951-4" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2989-7"
x="-0.23252267"
y="-0.46413375"
width="1.4650453"
height="1.9282675">
<feFlood
flood-opacity="0.8"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood2979-4" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite2981-4" />
<feGaussianBlur
in="composite1"
stdDeviation="8"
result="blur"
id="feGaussianBlur2983-3" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset2985-07" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite2987-8" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2977-6"
x="-0.3235366"
y="-0.25277925"
width="1.6470732"
height="1.5055585">
<feFlood
flood-opacity="0.8"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood2967-8" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite2969-84" />
<feGaussianBlur
in="composite1"
stdDeviation="8"
result="blur"
id="feGaussianBlur2971-31" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset2973-4" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite2975-9" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter1778-20"
x="-0.071003587"
y="-0.3840027"
width="1.1420072"
height="1.7680054">
<feFlood
flood-opacity="0.501961"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood1768-6" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite1770-8" />
<feGaussianBlur
in="composite1"
stdDeviation="5"
result="blur"
id="feGaussianBlur1772-9" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset1774-2" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite1776-6" />
</filter>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient1"
id="radialGradient2"
cx="58.048798"
cy="-112.54058"
fx="58.048798"
fy="-112.54058"
r="33.780365"
gradientTransform="matrix(-6.2100452,0.00407995,-0.0033846,-5.1506999,495.81504,-579.41311)"
gradientUnits="userSpaceOnUse" />
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2"
x="-0.057143129"
y="-0.26463369"
width="1.1142863"
height="1.5292674">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood1" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur1" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset1" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite1" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite2" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter4"
x="-0.040001377"
y="-0.06584548"
width="1.0800028"
height="1.131691">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood2" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur2" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset2" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite3" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite4" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter6"
x="-0.042308918"
y="-0.099385318"
width="1.0846178"
height="1.1987706">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood4" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur4" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset4" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite5" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite6" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter13"
x="-0.057149831"
y="-0.066851122"
width="1.1142997"
height="1.1337022">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood12" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur12" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset12" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite12" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite13" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2-3"
x="-0.057143129"
y="-0.26463369"
width="1.1142863"
height="1.5292674">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood1-6" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur1-7" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset1-5" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite1-3" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite2-5" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter4-6"
x="-0.040001377"
y="-0.06584548"
width="1.0800028"
height="1.131691">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood2-2" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur2-9" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset2-1" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite3-2" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite4-7" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter6-0"
x="-0.042308918"
y="-0.099385318"
width="1.0846178"
height="1.1987706">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood4-9" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur4-3" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset4-6" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite5-0" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite6-6" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter13-2"
x="-0.057149831"
y="-0.066851122"
width="1.1142997"
height="1.1337022">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood12-6" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur12-1" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset12-8" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite12-7" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite13-9" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2-3-5"
x="-0.057143129"
y="-0.26463369"
width="1.1142863"
height="1.5292674">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood1-6-9" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur1-7-2" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset1-5-2" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite1-3-8" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite2-5-9" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter4-6-7"
x="-0.040001377"
y="-0.06584548"
width="1.0800028"
height="1.131691">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood2-2-3" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur2-9-6" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset2-1-1" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite3-2-2" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite4-7-9" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter6-0-3"
x="-0.042308918"
y="-0.099385318"
width="1.0846178"
height="1.1987706">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood4-9-1" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur4-3-9" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset4-6-4" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite5-0-7" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite6-6-8" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter13-2-4"
x="-0.057149831"
y="-0.066851122"
width="1.1142997"
height="1.1337022">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood12-6-5" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur12-1-0" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset12-8-3" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite12-7-6" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite13-9-1" />
</filter>
</defs>
<sodipodi:namedview
inkscape:window-maximized="0"
inkscape:window-y="0"
inkscape:window-x="0"
inkscape:window-height="2113"
inkscape:window-width="3840"
units="px"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="470.73109"
inkscape:cx="594.47477"
inkscape:zoom="0.98994949"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:showpageshadow="2"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" />
<metadata
id="metadata1221">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<rect
style="fill:url(#radialGradient2);stroke:none;stroke-width:2.93304;stroke-linejoin:round"
id="rect1"
width="270.93335"
height="132.29167"
x="0"
y="0" />
<g
id="g2-2"
transform="matrix(-1.594384,0,0,1.5943814,341.71584,-85.591264)">
<path
id="path1-2-6-0"
style="fill:#8bc34a;fill-opacity:1;stroke-width:5.99989;filter:url(#filter2-3)"
d="m 131.95298,130.05572 -16.01513,5.95434 4.06075,12.18394 h 18 z m -66.03453,3.06114 c 0.591926,1.32709 -0.153511,3.3108 -2.919861,6.07714 L 53.999,148.19354 71.998589,148.194 84.06424,136.11351 Z"
sodipodi:nodetypes="ccccccscccc"
transform="matrix(0.2561001,-0.04056227,0.04056227,0.2561001,77.322414,74.043198)" />
<path
id="path1-2-7-2"
style="fill:#8bc34a;fill-opacity:1;stroke-width:5.99989;filter:url(#filter4-6)"
d="m 151.8621,67.80338 c -7.31987,-0.24 -14.58332,5.39078 -16.86328,14.39062 -2.99994,11.999783 -3.0001,12.000123 -9,18.00001 -11.99978,11.9998 -30.00071,18.00011 -66.000018,24 -5.999894,0.95998 -8.997855,3.00041 -11.997802,6.00036 8.311322,0 16.615171,0.002 17.948974,2.99183 l 18.048836,3.00781 c 11.99979,5.99991 19.98068,5.99991 31.98048,0 l 16.01953,-6 c 0,0 6.00011,-24.0001 12,-30 5.99989,-5.999887 6.00011,0 12,0 5.99989,0 11.99805,-6.000167 11.99805,-15.00001 0,-2.99994 0.002,-9.0001 -8.99805,-15 -2.09997,-1.43997 -4.55682,-2.27062 -7.13672,-2.39062 z m -85.765642,65.87696 c 0.0048,0.0269 0.0079,0.0547 0.01172,0.082 -0.0038,-0.0273 -0.0069,-0.0551 -0.01172,-0.082 z m 0.0293,0.54883 c -0.0021,0.0384 -0.004,0.0761 -0.0078,0.11523 0.0038,-0.0391 0.0057,-0.0769 0.0078,-0.11523 z m -0.107422,0.65039 c -0.0073,0.0267 -0.01157,0.0512 -0.01953,0.0781 0.0079,-0.027 0.01231,-0.0515 0.01953,-0.0781 z m -0.654297,1.43555 c -0.222659,0.36603 -0.500167,0.7568 -0.828125,1.16797 0.327872,-0.41123 0.605727,-0.80194 0.828125,-1.16797 z m -1.085937,1.47851 c -0.372584,0.44383 -0.782042,0.90314 -1.279297,1.40039 0.496681,-0.49668 0.907296,-0.9571 1.279297,-1.40039 z"
sodipodi:nodetypes="cccccccccsssccccccccccccccccc"
transform="matrix(0.2561001,-0.04056227,0.04056227,0.2561001,77.322414,74.043198)" />
<path
id="path1-3"
style="fill:#8bc34a;fill-opacity:1;stroke-width:5.99989;filter:url(#filter6-0)"
d="M 90,70.205078 A 35.999403,35.999385 0 0 0 54,106.20312 c 0,3.59995 0.780871,6.47968 1.380859,9.59961 35.51933,-5.87988 54.359411,-12.05918 64.199221,-21.95898 l 3,-3 C 116.64017,78.243986 103.91976,70.205078 90,70.205078 Z m 77.45117,19.535156 C 165.84103,96.15802 160.92131,100.19531 156,100.19531 c -5.99988,0 -6.00012,-5.999874 -12,0 -3.16399,3.164 -6.30176,11.2911 -8.58594,18.30664 h 0.004 c 2.28351,-7.01319 5.41893,-15.13572 8.58203,-18.29883 5.99988,-5.999869 6.00012,1e-5 12,0 4.9235,0 9.84339,-4.040099 11.45117,-10.462886 z"
transform="matrix(0.2561001,-0.04056227,0.04056227,0.2561001,77.322414,74.043198)" />
<path
d="m 172.34987,97.828382 c -11.37062,-16.4492 -40.97915,4.018018 -40.97915,4.018018 0,0 -19.73895,13.64478 -23.02883,15.91894 -3.28981,2.27415 -4.30548,7.83811 -4.30548,7.83811 l -3.28987,2.27415 -9.09654,-13.15933 3.289881,-2.27415 c 0,0 5.563959,1.01566 8.853779,-1.25842 0.65795,-0.4548 2.30289,-1.5919 4.2768,-2.9564 -3.76897,0.17459 -7.00575,-0.99143 -8.825099,-3.6233 -4.09339,-5.921678 0.74423,-15.099988 11.271689,-22.377228 10.52745,-7.27725 20.82301,-8.55991 24.91646,-2.63823 1.3645,1.97392 1.74201,4.63002 1.23418,7.412 7.4165,-7.55762 15.21502,-18.78268 8.39257,-28.65213 l 3.28987,-2.27415 27.28962,39.47797 -3.28988,2.27415 m -58.87642,-11.32281 c -7.56662,5.23049 -11.66901,11.9558 -9.62231,14.916638 2.04675,2.96084 9.78772,1.49932 17.35434,-3.731228 7.56662,-5.23049 11.669,-11.9558 9.62231,-14.91664 -2.04675,-2.96084 -9.78773,-1.49926 -17.35434,3.73123 z"
id="path1-5-7"
style="fill:#fdd835;fill-opacity:1;stroke-width:3.99934;filter:url(#filter13-2)"
transform="matrix(0.256099,-0.0405621,0.0405621,0.256099,64.048763,73.297633)" />
</g>
<g
id="g2-2-0"
transform="matrix(1.594384,0,0,1.5943814,-70.782467,-85.591264)">
<path
id="path1-2-6-0-6"
style="fill:#8bc34a;fill-opacity:1;stroke-width:5.99989;filter:url(#filter2-3-5)"
d="m 131.95298,130.05572 -16.01513,5.95434 4.06075,12.18394 h 18 z m -66.03453,3.06114 c 0.591926,1.32709 -0.153511,3.3108 -2.919861,6.07714 L 53.999,148.19354 71.998589,148.194 84.06424,136.11351 Z"
sodipodi:nodetypes="ccccccscccc"
transform="matrix(0.2561001,-0.04056227,0.04056227,0.2561001,77.322414,74.043198)" />
<path
id="path1-2-7-2-3"
style="fill:#8bc34a;fill-opacity:1;stroke-width:5.99989;filter:url(#filter4-6-7)"
d="m 151.8621,67.80338 c -7.31987,-0.24 -14.58332,5.39078 -16.86328,14.39062 -2.99994,11.999783 -3.0001,12.000123 -9,18.00001 -11.99978,11.9998 -30.00071,18.00011 -66.000018,24 -5.999894,0.95998 -8.997855,3.00041 -11.997802,6.00036 8.311322,0 16.615171,0.002 17.948974,2.99183 l 18.048836,3.00781 c 11.99979,5.99991 19.98068,5.99991 31.98048,0 l 16.01953,-6 c 0,0 6.00011,-24.0001 12,-30 5.99989,-5.999887 6.00011,0 12,0 5.99989,0 11.99805,-6.000167 11.99805,-15.00001 0,-2.99994 0.002,-9.0001 -8.99805,-15 -2.09997,-1.43997 -4.55682,-2.27062 -7.13672,-2.39062 z m -85.765642,65.87696 c 0.0048,0.0269 0.0079,0.0547 0.01172,0.082 -0.0038,-0.0273 -0.0069,-0.0551 -0.01172,-0.082 z m 0.0293,0.54883 c -0.0021,0.0384 -0.004,0.0761 -0.0078,0.11523 0.0038,-0.0391 0.0057,-0.0769 0.0078,-0.11523 z m -0.107422,0.65039 c -0.0073,0.0267 -0.01157,0.0512 -0.01953,0.0781 0.0079,-0.027 0.01231,-0.0515 0.01953,-0.0781 z m -0.654297,1.43555 c -0.222659,0.36603 -0.500167,0.7568 -0.828125,1.16797 0.327872,-0.41123 0.605727,-0.80194 0.828125,-1.16797 z m -1.085937,1.47851 c -0.372584,0.44383 -0.782042,0.90314 -1.279297,1.40039 0.496681,-0.49668 0.907296,-0.9571 1.279297,-1.40039 z"
sodipodi:nodetypes="cccccccccsssccccccccccccccccc"
transform="matrix(0.2561001,-0.04056227,0.04056227,0.2561001,77.322414,74.043198)" />
<path
id="path1-3-2"
style="fill:#8bc34a;fill-opacity:1;stroke-width:5.99989;filter:url(#filter6-0-3)"
d="M 90,70.205078 A 35.999403,35.999385 0 0 0 54,106.20312 c 0,3.59995 0.780871,6.47968 1.380859,9.59961 35.51933,-5.87988 54.359411,-12.05918 64.199221,-21.95898 l 3,-3 C 116.64017,78.243986 103.91976,70.205078 90,70.205078 Z m 77.45117,19.535156 C 165.84103,96.15802 160.92131,100.19531 156,100.19531 c -5.99988,0 -6.00012,-5.999874 -12,0 -3.16399,3.164 -6.30176,11.2911 -8.58594,18.30664 h 0.004 c 2.28351,-7.01319 5.41893,-15.13572 8.58203,-18.29883 5.99988,-5.999869 6.00012,1e-5 12,0 4.9235,0 9.84339,-4.040099 11.45117,-10.462886 z"
transform="matrix(0.2561001,-0.04056227,0.04056227,0.2561001,77.322414,74.043198)" />
<path
d="m 172.34987,97.828382 c -11.37062,-16.4492 -40.97915,4.018018 -40.97915,4.018018 0,0 -19.73895,13.64478 -23.02883,15.91894 -3.28981,2.27415 -4.30548,7.83811 -4.30548,7.83811 l -3.28987,2.27415 -9.09654,-13.15933 3.289881,-2.27415 c 0,0 5.563959,1.01566 8.853779,-1.25842 0.65795,-0.4548 2.30289,-1.5919 4.2768,-2.9564 -3.76897,0.17459 -7.00575,-0.99143 -8.825099,-3.6233 -4.09339,-5.921678 0.74423,-15.099988 11.271689,-22.377228 10.52745,-7.27725 20.82301,-8.55991 24.91646,-2.63823 1.3645,1.97392 1.74201,4.63002 1.23418,7.412 7.4165,-7.55762 15.21502,-18.78268 8.39257,-28.65213 l 3.28987,-2.27415 27.28962,39.47797 -3.28988,2.27415 m -58.87642,-11.32281 c -7.56662,5.23049 -11.66901,11.9558 -9.62231,14.916638 2.04675,2.96084 9.78772,1.49932 17.35434,-3.731228 7.56662,-5.23049 11.669,-11.9558 9.62231,-14.91664 -2.04675,-2.96084 -9.78773,-1.49926 -17.35434,3.73123 z"
id="path1-5-7-0"
style="fill:#fdd835;fill-opacity:1;stroke-width:3.99934;filter:url(#filter13-2-4)"
transform="matrix(0.256099,-0.0405621,0.0405621,0.256099,64.048763,73.297633)" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -0,0 +1,784 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
sodipodi:docname="feature_image_transparent.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
id="svg1224"
version="1.1"
viewBox="0 0 270.93333 132.29167"
height="500"
width="1024"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs1218">
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2036"
x="-0.13812872"
y="-0.16452942"
width="1.2762574"
height="1.3290588">
<feFlood
flood-opacity="0.501961"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood2026" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite2028" />
<feGaussianBlur
in="composite1"
stdDeviation="1.5"
result="blur"
id="feGaussianBlur2030" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset2032" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite2034" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2965-4"
x="-0.21722835"
y="-0.25923403"
width="1.4344567"
height="1.5184681">
<feFlood
flood-opacity="0.8"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood2955-7" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite2957-6" />
<feGaussianBlur
in="composite1"
stdDeviation="8"
result="blur"
id="feGaussianBlur2959-56" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset2961-9" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite2963-3" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2953-7"
x="-0.32309693"
y="-0.25279658"
width="1.6461939"
height="1.5055932">
<feFlood
flood-opacity="0.8"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood2943-4" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite2945-5" />
<feGaussianBlur
in="composite1"
stdDeviation="8"
result="blur"
id="feGaussianBlur2947-2" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset2949-5" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite2951-4" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2989-7"
x="-0.23252267"
y="-0.46413375"
width="1.4650453"
height="1.9282675">
<feFlood
flood-opacity="0.8"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood2979-4" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite2981-4" />
<feGaussianBlur
in="composite1"
stdDeviation="8"
result="blur"
id="feGaussianBlur2983-3" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset2985-07" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite2987-8" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2977-6"
x="-0.3235366"
y="-0.25277925"
width="1.6470732"
height="1.5055585">
<feFlood
flood-opacity="0.8"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood2967-8" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite2969-84" />
<feGaussianBlur
in="composite1"
stdDeviation="8"
result="blur"
id="feGaussianBlur2971-31" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset2973-4" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite2975-9" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter1778-20"
x="-0.071003587"
y="-0.3840027"
width="1.1420072"
height="1.7680054">
<feFlood
flood-opacity="0.501961"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood1768-6" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="out"
result="composite1"
id="feComposite1770-8" />
<feGaussianBlur
in="composite1"
stdDeviation="5"
result="blur"
id="feGaussianBlur1772-9" />
<feOffset
dx="0"
dy="0"
result="offset"
id="feOffset1774-2" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="atop"
result="composite2"
id="feComposite1776-6" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2"
x="-0.057143129"
y="-0.26463369"
width="1.1142863"
height="1.5292674">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood1" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur1" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset1" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite1" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite2" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter4"
x="-0.040001377"
y="-0.06584548"
width="1.0800028"
height="1.131691">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood2" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur2" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset2" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite3" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite4" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter6"
x="-0.042308918"
y="-0.099385318"
width="1.0846178"
height="1.1987706">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood4" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur4" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset4" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite5" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite6" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter13"
x="-0.057149831"
y="-0.066851122"
width="1.1142997"
height="1.1337022">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood12" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur12" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset12" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite12" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite13" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2-3"
x="-0.057143129"
y="-0.26463369"
width="1.1142863"
height="1.5292674">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood1-6" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur1-7" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset1-5" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite1-3" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite2-5" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter4-6"
x="-0.040001377"
y="-0.06584548"
width="1.0800028"
height="1.131691">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood2-2" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur2-9" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset2-1" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite3-2" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite4-7" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter6-0"
x="-0.042308918"
y="-0.099385318"
width="1.0846178"
height="1.1987706">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood4-9" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur4-3" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset4-6" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite5-0" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite6-6" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter13-2"
x="-0.057149831"
y="-0.066851122"
width="1.1142997"
height="1.1337022">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood12-6" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur12-1" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset12-8" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite12-7" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite13-9" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter2-3-5"
x="-0.057143129"
y="-0.26463369"
width="1.1142863"
height="1.5292674">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood1-6-9" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur1-7-2" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset1-5-2" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite1-3-8" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite2-5-9" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter4-6-7"
x="-0.040001377"
y="-0.06584548"
width="1.0800028"
height="1.131691">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood2-2-3" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur2-9-6" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset2-1-1" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite3-2-2" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite4-7-9" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter6-0-3"
x="-0.042308918"
y="-0.099385318"
width="1.0846178"
height="1.1987706">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood4-9-1" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur4-3-9" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset4-6-4" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite5-0-7" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite6-6-8" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter13-2-4"
x="-0.057149831"
y="-0.066851122"
width="1.1142997"
height="1.1337022">
<feFlood
result="flood"
in="SourceGraphic"
flood-opacity="0.258824"
flood-color="rgb(0,0,0)"
id="feFlood12-6-5" />
<feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="2.000000"
id="feGaussianBlur12-1-0" />
<feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset12-8-3" />
<feComposite
result="comp1"
operator="out"
in="flood"
in2="offset"
id="feComposite12-7-6" />
<feComposite
result="comp2"
operator="atop"
in="comp1"
in2="SourceGraphic"
id="feComposite13-9-1" />
</filter>
</defs>
<sodipodi:namedview
inkscape:window-maximized="0"
inkscape:window-y="0"
inkscape:window-x="0"
inkscape:window-height="2111"
inkscape:window-width="956"
units="px"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="-747.51288"
inkscape:cx="509.11688"
inkscape:zoom="0.24748737"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:showpageshadow="2"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" />
<metadata
id="metadata1221">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<g
id="g2-2"
transform="matrix(-1.594384,0,0,1.5943814,341.71584,-85.591264)">
<path
id="path1-2-6-0"
style="fill:#8bc34a;fill-opacity:1;stroke-width:5.99989;filter:url(#filter2-3)"
d="m 131.95298,130.05572 -16.01513,5.95434 4.06075,12.18394 h 18 z m -66.03453,3.06114 c 0.591926,1.32709 -0.153511,3.3108 -2.919861,6.07714 L 53.999,148.19354 71.998589,148.194 84.06424,136.11351 Z"
sodipodi:nodetypes="ccccccscccc"
transform="matrix(0.2561001,-0.04056227,0.04056227,0.2561001,77.322414,74.043198)" />
<path
id="path1-2-7-2"
style="fill:#8bc34a;fill-opacity:1;stroke-width:5.99989;filter:url(#filter4-6)"
d="m 151.8621,67.80338 c -7.31987,-0.24 -14.58332,5.39078 -16.86328,14.39062 -2.99994,11.999783 -3.0001,12.000123 -9,18.00001 -11.99978,11.9998 -30.00071,18.00011 -66.000018,24 -5.999894,0.95998 -8.997855,3.00041 -11.997802,6.00036 8.311322,0 16.615171,0.002 17.948974,2.99183 l 18.048836,3.00781 c 11.99979,5.99991 19.98068,5.99991 31.98048,0 l 16.01953,-6 c 0,0 6.00011,-24.0001 12,-30 5.99989,-5.999887 6.00011,0 12,0 5.99989,0 11.99805,-6.000167 11.99805,-15.00001 0,-2.99994 0.002,-9.0001 -8.99805,-15 -2.09997,-1.43997 -4.55682,-2.27062 -7.13672,-2.39062 z m -85.765642,65.87696 c 0.0048,0.0269 0.0079,0.0547 0.01172,0.082 -0.0038,-0.0273 -0.0069,-0.0551 -0.01172,-0.082 z m 0.0293,0.54883 c -0.0021,0.0384 -0.004,0.0761 -0.0078,0.11523 0.0038,-0.0391 0.0057,-0.0769 0.0078,-0.11523 z m -0.107422,0.65039 c -0.0073,0.0267 -0.01157,0.0512 -0.01953,0.0781 0.0079,-0.027 0.01231,-0.0515 0.01953,-0.0781 z m -0.654297,1.43555 c -0.222659,0.36603 -0.500167,0.7568 -0.828125,1.16797 0.327872,-0.41123 0.605727,-0.80194 0.828125,-1.16797 z m -1.085937,1.47851 c -0.372584,0.44383 -0.782042,0.90314 -1.279297,1.40039 0.496681,-0.49668 0.907296,-0.9571 1.279297,-1.40039 z"
sodipodi:nodetypes="cccccccccsssccccccccccccccccc"
transform="matrix(0.2561001,-0.04056227,0.04056227,0.2561001,77.322414,74.043198)" />
<path
id="path1-3"
style="fill:#8bc34a;fill-opacity:1;stroke-width:5.99989;filter:url(#filter6-0)"
d="M 90,70.205078 A 35.999403,35.999385 0 0 0 54,106.20312 c 0,3.59995 0.780871,6.47968 1.380859,9.59961 35.51933,-5.87988 54.359411,-12.05918 64.199221,-21.95898 l 3,-3 C 116.64017,78.243986 103.91976,70.205078 90,70.205078 Z m 77.45117,19.535156 C 165.84103,96.15802 160.92131,100.19531 156,100.19531 c -5.99988,0 -6.00012,-5.999874 -12,0 -3.16399,3.164 -6.30176,11.2911 -8.58594,18.30664 h 0.004 c 2.28351,-7.01319 5.41893,-15.13572 8.58203,-18.29883 5.99988,-5.999869 6.00012,1e-5 12,0 4.9235,0 9.84339,-4.040099 11.45117,-10.462886 z"
transform="matrix(0.2561001,-0.04056227,0.04056227,0.2561001,77.322414,74.043198)" />
<path
d="m 172.34987,97.828382 c -11.37062,-16.4492 -40.97915,4.018018 -40.97915,4.018018 0,0 -19.73895,13.64478 -23.02883,15.91894 -3.28981,2.27415 -4.30548,7.83811 -4.30548,7.83811 l -3.28987,2.27415 -9.09654,-13.15933 3.289881,-2.27415 c 0,0 5.563959,1.01566 8.853779,-1.25842 0.65795,-0.4548 2.30289,-1.5919 4.2768,-2.9564 -3.76897,0.17459 -7.00575,-0.99143 -8.825099,-3.6233 -4.09339,-5.921678 0.74423,-15.099988 11.271689,-22.377228 10.52745,-7.27725 20.82301,-8.55991 24.91646,-2.63823 1.3645,1.97392 1.74201,4.63002 1.23418,7.412 7.4165,-7.55762 15.21502,-18.78268 8.39257,-28.65213 l 3.28987,-2.27415 27.28962,39.47797 -3.28988,2.27415 m -58.87642,-11.32281 c -7.56662,5.23049 -11.66901,11.9558 -9.62231,14.916638 2.04675,2.96084 9.78772,1.49932 17.35434,-3.731228 7.56662,-5.23049 11.669,-11.9558 9.62231,-14.91664 -2.04675,-2.96084 -9.78773,-1.49926 -17.35434,3.73123 z"
id="path1-5-7"
style="fill:#fdd835;fill-opacity:1;stroke-width:3.99934;filter:url(#filter13-2)"
transform="matrix(0.256099,-0.0405621,0.0405621,0.256099,64.048763,73.297633)" />
</g>
<g
id="g2-2-0"
transform="matrix(1.594384,0,0,1.5943814,-70.782467,-85.591264)">
<path
id="path1-2-6-0-6"
style="fill:#8bc34a;fill-opacity:1;stroke-width:5.99989;filter:url(#filter2-3-5)"
d="m 131.95298,130.05572 -16.01513,5.95434 4.06075,12.18394 h 18 z m -66.03453,3.06114 c 0.591926,1.32709 -0.153511,3.3108 -2.919861,6.07714 L 53.999,148.19354 71.998589,148.194 84.06424,136.11351 Z"
sodipodi:nodetypes="ccccccscccc"
transform="matrix(0.2561001,-0.04056227,0.04056227,0.2561001,77.322414,74.043198)" />
<path
id="path1-2-7-2-3"
style="fill:#8bc34a;fill-opacity:1;stroke-width:5.99989;filter:url(#filter4-6-7)"
d="m 151.8621,67.80338 c -7.31987,-0.24 -14.58332,5.39078 -16.86328,14.39062 -2.99994,11.999783 -3.0001,12.000123 -9,18.00001 -11.99978,11.9998 -30.00071,18.00011 -66.000018,24 -5.999894,0.95998 -8.997855,3.00041 -11.997802,6.00036 8.311322,0 16.615171,0.002 17.948974,2.99183 l 18.048836,3.00781 c 11.99979,5.99991 19.98068,5.99991 31.98048,0 l 16.01953,-6 c 0,0 6.00011,-24.0001 12,-30 5.99989,-5.999887 6.00011,0 12,0 5.99989,0 11.99805,-6.000167 11.99805,-15.00001 0,-2.99994 0.002,-9.0001 -8.99805,-15 -2.09997,-1.43997 -4.55682,-2.27062 -7.13672,-2.39062 z m -85.765642,65.87696 c 0.0048,0.0269 0.0079,0.0547 0.01172,0.082 -0.0038,-0.0273 -0.0069,-0.0551 -0.01172,-0.082 z m 0.0293,0.54883 c -0.0021,0.0384 -0.004,0.0761 -0.0078,0.11523 0.0038,-0.0391 0.0057,-0.0769 0.0078,-0.11523 z m -0.107422,0.65039 c -0.0073,0.0267 -0.01157,0.0512 -0.01953,0.0781 0.0079,-0.027 0.01231,-0.0515 0.01953,-0.0781 z m -0.654297,1.43555 c -0.222659,0.36603 -0.500167,0.7568 -0.828125,1.16797 0.327872,-0.41123 0.605727,-0.80194 0.828125,-1.16797 z m -1.085937,1.47851 c -0.372584,0.44383 -0.782042,0.90314 -1.279297,1.40039 0.496681,-0.49668 0.907296,-0.9571 1.279297,-1.40039 z"
sodipodi:nodetypes="cccccccccsssccccccccccccccccc"
transform="matrix(0.2561001,-0.04056227,0.04056227,0.2561001,77.322414,74.043198)" />
<path
id="path1-3-2"
style="fill:#8bc34a;fill-opacity:1;stroke-width:5.99989;filter:url(#filter6-0-3)"
d="M 90,70.205078 A 35.999403,35.999385 0 0 0 54,106.20312 c 0,3.59995 0.780871,6.47968 1.380859,9.59961 35.51933,-5.87988 54.359411,-12.05918 64.199221,-21.95898 l 3,-3 C 116.64017,78.243986 103.91976,70.205078 90,70.205078 Z m 77.45117,19.535156 C 165.84103,96.15802 160.92131,100.19531 156,100.19531 c -5.99988,0 -6.00012,-5.999874 -12,0 -3.16399,3.164 -6.30176,11.2911 -8.58594,18.30664 h 0.004 c 2.28351,-7.01319 5.41893,-15.13572 8.58203,-18.29883 5.99988,-5.999869 6.00012,1e-5 12,0 4.9235,0 9.84339,-4.040099 11.45117,-10.462886 z"
transform="matrix(0.2561001,-0.04056227,0.04056227,0.2561001,77.322414,74.043198)" />
<path
d="m 172.34987,97.828382 c -11.37062,-16.4492 -40.97915,4.018018 -40.97915,4.018018 0,0 -19.73895,13.64478 -23.02883,15.91894 -3.28981,2.27415 -4.30548,7.83811 -4.30548,7.83811 l -3.28987,2.27415 -9.09654,-13.15933 3.289881,-2.27415 c 0,0 5.563959,1.01566 8.853779,-1.25842 0.65795,-0.4548 2.30289,-1.5919 4.2768,-2.9564 -3.76897,0.17459 -7.00575,-0.99143 -8.825099,-3.6233 -4.09339,-5.921678 0.74423,-15.099988 11.271689,-22.377228 10.52745,-7.27725 20.82301,-8.55991 24.91646,-2.63823 1.3645,1.97392 1.74201,4.63002 1.23418,7.412 7.4165,-7.55762 15.21502,-18.78268 8.39257,-28.65213 l 3.28987,-2.27415 27.28962,39.47797 -3.28988,2.27415 m -58.87642,-11.32281 c -7.56662,5.23049 -11.66901,11.9558 -9.62231,14.916638 2.04675,2.96084 9.78772,1.49932 17.35434,-3.731228 7.56662,-5.23049 11.669,-11.9558 9.62231,-14.91664 -2.04675,-2.96084 -9.78773,-1.49926 -17.35434,3.73123 z"
id="path1-5-7-0"
style="fill:#fdd835;fill-opacity:1;stroke-width:3.99934;filter:url(#filter13-2-4)"
transform="matrix(0.256099,-0.0405621,0.0405621,0.256099,64.048763,73.297633)" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

2243
graphics/ic_launcher_sc.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 68 KiB

101
graphics/icon_gen.sh Executable file
View File

@ -0,0 +1,101 @@
#!/bin/bash
set -e
mydir="$(dirname "$(realpath "$0")")"
automatic_commit="$1"
SCHILDI_ROOT="$mydir/.."
source "$SCHILDI_ROOT/merge_helpers.sh"
if [[ "$automatic_commit" == [Yy]* ]]; then
forelement_repos check_clean_git
fi
export_rect() {
w="$1"
h="$2"
in="$3"
out="$4"
inkscape -w "$w" -h "$h" --export-filename="$out" -C "$in"
}
export_square() {
size="$1"
in="$2"
out="$3"
export_rect "$1" "$size" "$in" "$out"
}
repo_dir="$SCHILDI_ROOT/element-web"
base_out="$repo_dir/res/vector-icons"
for i in 1024 120 150 152 180 24 300 44 48 50 76 88; do
export_square "$i" "$mydir/ic_launcher_sc.svg" "$base_out/$i.png"
done
for i in 114 120 144 152 180 57 60 72 76; do
export_square "$i" "$mydir/store_icon.svg" "$base_out/apple-touch-icon-$i.png"
done
for i in 150 310 70; do
export_square "$i" "$mydir/store_icon.svg" "$base_out/mstile-$i.png"
done
# TODO fix measures of input to have correct measures for export here again
export_rect 1024 500 "$mydir/feature_image_transparent.svg" "$base_out/1240x600.png"
export_rect 512 250 "$mydir/feature_image_transparent.svg" "$base_out/620x300.png"
export_rect 256 125 "$mydir/feature_image.svg" "$base_out/mstile-310x150.png"
magick "$base_out/48.png" "$base_out/favicon.ico"
rm "$base_out/48.png" # this was only created for favicon.ico
for f in "$base_out"/*.png; do
pngcrush -ow "$f"
done
cp "$mydir/ic_launcher_sc.svg" "$repo_dir/res/themes/element/img/logos/element-logo.svg"
export_square 320 "$mydir/ic_launcher_sc.svg" "$repo_dir/res/themes/element/img/logos/element-app-logo.png"
repo_dir="$SCHILDI_ROOT/element-desktop"
base_out="$repo_dir/res/img"
export_square 256 "$mydir/ic_launcher_sc.svg" "$base_out/element.png"
magick "$base_out/element.png" "$base_out/element.ico"
# TODO monochrome icon? Unless https://github.com/element-hq/element-desktop/pull/1934 is what we'll end with
export_square 256 "$mydir/ic_launcher_sc.svg" "$base_out/monochrome.png"
magick "$base_out/element.png" "$base_out/monochrome.ico"
for f in "$base_out"/*.png; do
pngcrush -ow "$f"
done
base_out="$repo_dir/build"
for i in 16 24 48 64 96 128 256 512 1024; do
export_square "$i" "$mydir/ic_launcher_sc.svg" "$base_out/icons/$i"x"$i.png"
done
export_square "320" "$mydir/ic_launcher_sc.svg" "$base_out/install-spinner.png"
pngcrush "$base_out/install-spinner.png"
magick "$base_out/install-spinner.png" "$base_out/install-spinner.gif"
rm "$base_out/install-spinner.png"
magick "$base_out/icons/256x256.png" "$base_out/icon.ico"
magick "$base_out/icons/1024x1024.png" "$base_out/icon.icns"
rm "$base_out/icons/1024x1024.png"
for f in "$base_out/icons"/*.png; do
pngcrush -ow "$f"
done
if [[ "$automatic_commit" == [Yy]* ]]; then
forelement_repos commit_if_dirty "Automatic icon update"
fi

1
graphics/store_icon.svg Symbolic link
View File

@ -0,0 +1 @@
ic_launcher_sc.svg

15
hard_reset_repos.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/bash
set -e
mydir="$(dirname "$(realpath "$0")")"
cd "$mydir"
source ./merge_helpers.sh
# Note: this doesn't delete files starting with a dot,
# and in particular not the '.git' directory, which we
# want to keep
forall_repos bash -c 'rm -rf *'
forall_repos git reset HEAD --hard

View File

@ -35,7 +35,13 @@ function writeStrings(p, strings) {
let strings = readStrings(p);
for (const key of Object.keys(strings)) {
strings[key] = strings[key].replace(/Element/g, "SchildiChat").replace(/element\.io/g, "schildi.chat");
strings[key] = strings[key]
.replace(/Element/g, "SchildiChat")
.replace(/element\.io/g, "schildi.chat")
// It's still Element Call
.replace(/SchildiChat Call/g, "Element Call")
.replace(/SchildiChat-Call/g, "Element-Call");
}
if (overlayPath) {

View File

@ -1 +1,3 @@
{}
{
"Show": "Mutat"
}

View File

@ -0,0 +1 @@
{}

View File

@ -1 +1,3 @@
{}
{
"Welcome to SchildiChat": "Welcome to SchildiChat"
}

View File

@ -0,0 +1 @@
{}

View File

@ -21,8 +21,8 @@
"MXID": "MXID",
"In group chats": "Ve skupinových chatech",
"In public rooms": "Ve veřejných místnostech",
"All rooms you're in will appear in Home.": "Všechny místnosti, ve kterých se nacházíte, se zobrazí v domovském zobrazení.",
"Show all rooms in Home": "Ukázat všechny místnosti v domovském zobrazení",
"All rooms you're in will appear in Home.": "Všechny místnosti, ve kterých se nacházíte, se zobrazí v Úvodu.",
"Show all rooms in Home": "Zobrazit všechny místnosti v Úvodu",
"Show people in spaces": "Ukázat lidi v prostorech",
"Show notification badges for People in Spaces": "Zobrazit odznaky oznámení pro Lidé v prostorech",
"Return to the room previously opened in a space": "Návrat do dříve otevřené místnosti v prostoru",
@ -50,5 +50,6 @@
"Mixed": "Smíšené",
"Sound pack": "Balíček zvuků",
"Schildi: Softer sounds for reduced anxiety": "Schildi: Jemnější zvuky pro snížení úzkosti",
"Classic: The same sharp sounds as Element": "Klasické: Stejně ostré zvuky jako Element"
"Classic: The same sharp sounds as Element": "Klasické: Stejně ostré zvuky jako Element",
"React with \"%(reaction)s\"": "Reagovat pomocí \"%(reaction)s\""
}

View File

@ -49,5 +49,6 @@
"Mixed": "Mixed",
"Sound pack": "Sound pack",
"Schildi: Softer sounds for reduced anxiety": "Schildi: Softer sounds for reduced anxiety",
"Classic: The same sharp sounds as Element": "Classic: The same sharp sounds as Element"
"Classic: The same sharp sounds as Element": "Classic: The same sharp sounds as Element",
"React with \"%(reaction)s\"": "React with \"%(reaction)s\""
}

View File

@ -3,5 +3,27 @@
"Show message bubbles on one side only": "Üzenetbuborékok megjelenítése csak az egyik oldalon",
"Message bubbles": "Üzenet buborékok",
"Show message bubbles depending on the width either on both sides or only on one side": "Üzenetbuborékok megjelenítése a szélességtől függően mindkét oldalon vagy csak az egyik oldalon",
"Normal priority": "Normál prioritás"
"Normal priority": "Normál prioritás",
"Show people and rooms in a combined list": "Személyek és szobák megjelenítése egy egyesített listában",
"Update notifications": "Értesítések frissítése",
"Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Szeretne csatlakozni olyan szobához, amely értesíti Önt az új megjelenésekről? Ez különösen akkor hasznos, ha az Ön platformja nem támogatja a SchildiChat automatikus frissítéseit (pl. Windows és macOS).",
"System": "Rendszer",
"Show all rooms in Home": "Az összes szoba megjelenítése a kezdőoldalon",
"All rooms you're in will appear in Home.": "Az összes szoba, amelyben tartózkodik, megjelenik a Kezdőlapon.",
"Mark as read": "Olvasottnak jelöl",
"Enable YouTube embed player": "YouTube beágyazott lejátszó engedélyezése",
"Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "A Kezdőlap hasznos ahhoz, hogy mindenről áttekintést kapjunk. Ne feledje, hogy a kikapcsolásával bizonyos szobákat nem fog látni.",
"Schildi: Softer sounds for reduced anxiety": "Schildi: Lágyabb hangok a kevesebb stresszért",
"Sound pack": "Hangcsomag",
"Classic: The same sharp sounds as Element": "Klasszikus: Ugyanazok az éles hangok, mint az Elementnél",
"Don't ask again": "Ne kérdezze újra",
"Light theme": "Világos téma",
"Dark theme": "Sötét téma",
"Mark as unread": "Olvasatlannak jelöl",
"Collapse additional buttons": "További gombok összecsukása",
"Theme": "Téma",
"Room list": "Szobák listája",
"Font size and typeface": "Betűméret és betűtípus",
"Message layout": "Üzenetek elrendezése",
"Modern": "Modern"
}

View File

@ -49,5 +49,6 @@
"Mixed": "Campur",
"Sound pack": "Paket suara",
"Schildi: Softer sounds for reduced anxiety": "Schildi: Suara lebih lembut untuk mengurangi kecemasan",
"Classic: The same sharp sounds as Element": "Klasik: Suara keras yang biasa seperti Element"
"Classic: The same sharp sounds as Element": "Klasik: Suara keras yang biasa seperti Element",
"React with \"%(reaction)s\"": "Reaksi dengan \"%(reaction)s\""
}

View File

@ -9,5 +9,26 @@
"Light theme": "Tema chiaro",
"Dark theme": "Tema scuro",
"Normal priority": "Priorità normale",
"Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Vuoi entrare in una stanza che ti notificherà riguardo nuove release? Sarebbe comodo particolarmente se la tua piattaforma non supporta aggiornamenti automatici (Come per esempio Windows o MacOS.)"
"Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Vuoi entrare in una stanza che ti notificherà riguardo nuove release? Sarebbe comodo particolarmente se la tua piattaforma non supporta aggiornamenti automatici (Come per esempio Windows o MacOS.)",
"Show message bubbles on one side only": "Visualizza bolle messaggi su un lato solo",
"Show message bubbles depending on the width either on both sides or only on one side": "Visualizza bolle messaggi in base alla lunghezza di entrambi i lati o di uno solo",
"User name color mode": "Modalità colore nome utente",
"Room list style": "Stile lista stanze",
"Theme": "Tema",
"Show all rooms in Home": "Visualizza tutte le stanze nella Home",
"All rooms you're in will appear in Home.": "Tutte le stanze in cui partecipi appariranno nella Home.",
"For people": "Per le persone",
"Room list": "Lista stanze",
"Show advanced theme settings": "Visualizza impostazioni avanzate tema",
"Mark rooms as unread": "Permetti di segnare le chat come non lette",
"Message bubbles": "Bolle messaggi",
"Message layout": "Impaginazione messaggi",
"Mark as unread": "Segna come non letto",
"Uniform": "Uniforme",
"Show people in spaces": "Visualizza persone negli spazi",
"MXID": "MXID",
"In public rooms": "Nelle stanze pubbliche",
"In group chats": "Nelle chat di gruppo",
"Font size and typeface": "Dimensione e tipo carattere",
"Hide advanced theme settings": "Nascondi impostazioni avanzate tema"
}

View File

@ -0,0 +1,3 @@
{
"Normal priority": "常優先度"
}

View File

@ -17,5 +17,37 @@
"In group chats": "Pokalbių grupėse",
"In public rooms": "Viešuose kambariuose",
"Show all rooms in Home": "Rodyti visus kambarius Pradžioje",
"All rooms you're in will appear in Home.": "Visi kambariai kuriuose esate bus rodomi Pradžioje."
"All rooms you're in will appear in Home.": "Visi kambariai kuriuose esate bus rodomi Pradžioje.",
"Hide advanced theme settings": "Slėpti išplėstinius temos nustatymus",
"Show advanced theme settings": "Rodyti išplėstinius temos nustatymus",
"Theme": "Tema",
"Font size and typeface": "Šrifto dydis ir raštas",
"Show message bubbles depending on the width either on both sides or only on one side": "Rodyti žinučių burbulus, priklausomai nuo pločio, abiejose pusėse arba tik vienoje pusėje",
"Sound pack": "Garso paketas",
"Schildi: Softer sounds for reduced anxiety": "Schildi: švelnesni garsai sumažintam nerimui",
"Classic: The same sharp sounds as Element": "Klasikiniai: Tie patys aštrūs garsai kaip ir Element",
"Enable YouTube embed player": "Įgalinti YouTube įterptą grotuvą",
"Add custom theme": "Pridėti pasirinktinę temą",
"Mark as unread": "Žymėti kaip neskaitytą",
"Mark as read": "Žymėti kaip perskaitytą",
"User name color mode": "Naudotojo vardo spalvų režimas",
"Uniform": "Vienodi",
"Show notification badges for People in Spaces": "Rodyti pranešimų ženkliukus žmonėms erdvėse",
"Return to the room previously opened in a space": "Grįžti į anksčiau atidarytą kambarį erdvėje",
"If disabled, the space overview will be shown when switching to another space.": "Jei išjungta, perjungiant į kitą erdvę bus rodoma erdvės apžvalga.",
"Room list style": "Kambarių sąrašo stilius",
"Compact: tiny avatar together with name and preview in one line": "Kompaktiška: mažytis avataras kartu su vardu ir peržiūra vienoje eilutėje",
"Intermediate: medium sized avatar with single-line preview": "Vidutinis: vidutinio dydžio avataras su vienos eilutės peržiūra",
"Roomy: big avatar with two-line preview": "Erdvus: didelis avataras su dviejų eilučių peržiūra",
"PowerLevel": "Galios lygis",
"For people": "Žmonėms",
"Show people in spaces": "Rodyti žmones erdvėse",
"If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "Jei išjungta, vis tiek galite pridėti tiesioginius pokalbius į asmenines erdves. Jei ši funkcija įjungta, automatiškai matysite visus, kurie yra erdvės nariai.",
"Mark rooms as unread": "Leisti žymėti pokalbius kaip neskaitytus",
"Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Pradžia yra naudinga, kad galėtumėte viską apžvelgti. Turėkite omenyje, kad ją išjungę galite nematyti tam tikrų kambarių.",
"Collapse additional buttons": "Sulankstyti papildomus mygtukus",
"Corners": "Kampai",
"Round": "Apvalus",
"Extra round": "Ypač apvalus",
"Mixed": "Mišrus"
}

View File

@ -8,5 +8,29 @@
"Show message bubbles on one side only": "Vis meldingsbobler kun på én side",
"Show message bubbles depending on the width either on both sides or only on one side": "Vis meldingsbobler avhengig av bredden enten på begge sider eller kun på én side",
"Don't ask again": "Ikke spør igjen",
"Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Ønsker du at et rom skal gi deg merknader om nye utgivelser? Dette er spesielt nyttig hvis din plattform ikke støtter automatiske oppdateringer for SchildiChat (f.eks. Windows og macOS)."
"Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Ønsker du at et rom skal gi deg merknader om nye utgivelser? Dette er spesielt nyttig hvis din plattform ikke støtter automatiske oppdateringer for SchildiChat (f.eks. Windows og macOS).",
"Hide advanced theme settings": "Skjul avanserte draktinnstillinger",
"Show advanced theme settings": "Vis avanserte draktinnstillinger",
"Theme": "Drakt",
"Room list": "Romliste",
"Font size and typeface": "Størrelse på og type skrift",
"Sound pack": "Lydpakke",
"Schildi: Softer sounds for reduced anxiety": "Schildi: Mykere lyder for mindre angst",
"System": "System",
"Add custom theme": "Legg til egendefinert drakt",
"Theme in use": "Drakt i bruk",
"Light theme": "Lys drakt",
"Dark theme": "Mørk drakt",
"Mark as read": "Marker som lest",
"Mark rooms as unread": "Tillat markering av sludringer som uleste",
"Mark as unread": "Marker som ulest",
"In group chats": "I gruppesludringer",
"In public rooms": "I offentlige rom",
"For people": "For folk",
"Classic: The same sharp sounds as Element": "Klassisk: Samme skarpe lyder som Element",
"Collapse additional buttons": "Fold sammen ytterligere knapper",
"Corners": "Hjørner",
"Round": "Runde",
"Extra round": "Ekstra runde",
"Mixed": "Blandet"
}

View File

@ -40,5 +40,6 @@
"Room list style": "Estilo da lista de salas",
"Mark rooms as unread": "Permitir markar conversas como não lidos",
"Mark as unread": "Markar como não lido",
"Mark as read": "Markar como lido"
"Mark as read": "Markar como lido",
"Collapse additional buttons": "Recolher botões adicionais"
}

View File

@ -42,5 +42,13 @@
"Mark as unread": "标记为未读",
"Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "主页对于概览所有消息来说非常有用。请注意:禁用主页可能会让您无法看到某些房间。",
"Enable YouTube embed player": "启用 YouTube 嵌入式播放器",
"Collapse additional buttons": "折叠额外的按钮"
"Collapse additional buttons": "折叠额外的按钮",
"Round": "圆角",
"React with \"%(reaction)s\"": "与 \"%(reaction)s\" 互动",
"Schildi: Softer sounds for reduced anxiety": "Schildi: 舒缓音效以减少焦虑",
"Mixed": "混合",
"Extra round": "超圆角",
"Sound pack": "音频包",
"Classic: The same sharp sounds as Element": "Classic: 与 Element 相同的尖锐声音",
"Corners": "边缘"
}

@ -1 +1 @@
Subproject commit d0951b83471f5fcabdfe14b5df497dc54acbeda4
Subproject commit 5f3f08071fbab8bc6af08b0d940189a513f572e2

@ -1 +0,0 @@
Subproject commit f05b786171f1d6997076a59764f359ed5d0fdc27

View File

@ -1,8 +1,10 @@
#!/bin/bash
SCHILDI_ROOT="$(dirname "$(realpath "$0")")"
if [ -z "$SCHILDI_ROOT" ]; then
SCHILDI_ROOT="$(dirname "$(realpath "$0")")"
fi
branch=${BRANCH:-"sc"}
branch=${BRANCH:-"lite"}
i18n_helper_path="$SCHILDI_ROOT/i18n-helper/index.js"
i18n_path="src/i18n/strings"
@ -12,16 +14,16 @@ yarn=yarnpkg
add_upstream() {
if git remote | grep -q upstream; then
echo "Remote named upstream already exists!"
return 1
echo "Remote named upstream already exists, deleting..."
git remote remove upstream
fi
local sc_remote="$(git remote -v|grep origin|grep fetch|sed 's|.*\t\(.*\) (fetch)|\1|')"
if echo "$sc_remote" | grep -q matrix; then
local sc_remote="$(git remote -v|grep origin|grep fetch|sed 's|.*\t\(.*\) (fetch)|\1|;s|git@github.com:|https://github.com/|')"
if echo "$sc_remote" | grep -q matrix-js-sdk; then
# matrix.org repo
local upstream_remote="$(echo "$sc_remote" | sed 's|SchildiChat|matrix-org|')"
elif echo "$sc_remote" | grep -q element; then
elif echo "$sc_remote" | grep -q "element\\|compound-web"; then
# vector-im repo
local upstream_remote="$(echo "$sc_remote" | sed 's|SchildiChat|vector-im|')"
local upstream_remote="$(echo "$sc_remote" | sed 's|SchildiChat|element-hq|')"
else
echo "Don't know upstream repo for $sc_remote"
return 1
@ -32,36 +34,32 @@ add_upstream() {
}
forall_repos() {
pushd "$SCHILDI_ROOT/matrix-js-sdk" > /dev/null
"$@"
popd > /dev/null
pushd "$SCHILDI_ROOT/matrix-react-sdk" > /dev/null
"$@"
popd > /dev/null
pushd "$SCHILDI_ROOT/element-web" > /dev/null
"$@"
popd > /dev/null
pushd "$SCHILDI_ROOT/element-desktop" > /dev/null
"$@"
popd > /dev/null
for repo in "matrix-js-sdk" "element-web" "element-desktop" "compound-web"; do
pushd "$SCHILDI_ROOT/$repo" > /dev/null
"$@"
popd > /dev/null
done
}
forelement_repos() {
pushd "$SCHILDI_ROOT/element-web" > /dev/null
"$@"
popd > /dev/null
for repo in "element-web" "element-desktop"; do
pushd "$SCHILDI_ROOT/$repo" > /dev/null
"$@"
popd > /dev/null
done
}
pushd "$SCHILDI_ROOT/element-desktop" > /dev/null
"$@"
popd > /dev/null
for_main_repos() {
for repo in "matrix-js-sdk" "element-web" "element-desktop"; do
pushd "$SCHILDI_ROOT/$repo" > /dev/null
"$@"
popd > /dev/null
done
}
ensure_yes() {
read -e -p "$1 [y/N] " choice
if [[ "$choice" != [Yy]* ]]; then
exit 1
fi
@ -109,13 +107,8 @@ automatic_i18n_reversion() {
get_current_upstream_tag
local current_mxjssdk_tag
local current_mxreactsdk_tag
get_current_mxsdk_tags
pushd "$SCHILDI_ROOT/matrix-react-sdk" > /dev/null
revert_i18n_changes "$i18n_path" "$current_mxreactsdk_tag" "$skip_commit"
popd > /dev/null
pushd "$SCHILDI_ROOT/element-web" > /dev/null
revert_i18n_changes "$i18n_path" "$current_upstream_tag" "$skip_commit"
popd > /dev/null
@ -126,13 +119,6 @@ automatic_i18n_reversion() {
}
automatic_i18n_adjustment() {
# matrix-react-sdk
pushd "$SCHILDI_ROOT/matrix-react-sdk" > /dev/null
$yarn i18n
node "$i18n_helper_path" "$SCHILDI_ROOT/matrix-react-sdk/$i18n_path" "$i18n_overlay_path/matrix-react-sdk"
apply_i18n_changes "$i18n_path"
popd > /dev/null
# element-web
pushd "$SCHILDI_ROOT/element-web" > /dev/null
$yarn i18n
@ -217,10 +203,10 @@ revert_packagejson_changes() {
apply_packagejson_overlay() {
local orig_path="$1"
local overlay_path="$2"
local overlay_path="../overlay/$(basename "$PWD")/package.json"
# see: https://stackoverflow.com/a/24904276
new_content=`jq -s '.[0] * .[1]' "$orig_path" "$overlay_path"`
new_content=`jq -s '.[0] * .[1]' "$orig_path" "$overlay_path" | sed 's| | |g'`
echo "$new_content" > "$orig_path"
git add "$orig_path"
@ -240,7 +226,7 @@ automatic_packagejson_adjustment() {
local versions
get_current_versions
forelement_repos apply_packagejson_overlay "package.json" "overlay-package.json"
forelement_repos apply_packagejson_overlay "package.json"
forelement_repos write_version "package.json"
}
@ -258,6 +244,53 @@ get_current_upstream_tag() {
}
get_current_mxsdk_tags() {
current_mxreactsdk_tag="v$(cat "$SCHILDI_ROOT/element-web/package.json" | jq '.dependencies["matrix-react-sdk"]' -r)"
current_mxjssdk_tag="v$(cat "$SCHILDI_ROOT/element-web/package.json" | jq '.dependencies["matrix-js-sdk"]' -r)"
}
apply_patches() {
local repo="$(realpath "$1")"
local patch_dir="$SCHILDI_ROOT/patches/$(basename "$1")"
if [ ! -d "$repo" ]; then
echo "Unknown repo: $repo"
return 1
fi
if [ ! -d "$patch_dir" ]; then
echo "No patches found at $patch_dir"
return 1
fi
pushd "$repo"
for patch in "$patch_dir"/*; do
echo "Applying $patch to $repo..."
git am "$patch" || on_apply_patch_fail_try_original_commit "$patch" "$repo"
done
popd
}
on_apply_patch_fail_try_original_commit() {
local patch="$1"
local repo="$2"
local orig_commit="$(head -n 1 "$patch"|sed 's|From ||;s| .*||')"
echo "Applying $patch failed, trying with original commit $orig_commit..."
git am --abort
git cherry-pick "$orig_commit" || on_apply_patch_fail "$patch" "$repo" "$orig_commit"
}
on_apply_patch_fail() {
local patch="$1"
local repo="$2"
local orig_commit="$3"
echo "----------------------------------"
echo "Applying patch failed, please commit manually!"
echo "Patch: $patch"
echo "Repo: $repo"
echo "Original commit: $(head -n 1 "$patch"|sed 's|From ||;s| .*||')"
echo "----------------------------------"
read -p "Press enter after committing resolved conflicts: "
}
commit_if_dirty() {
local message="$1"
# see: https://devops.stackexchange.com/a/5443
git add -A
git diff-index --quiet HEAD || git commit -m "$message"
}

View File

@ -4,49 +4,55 @@ set -e
mydir="$(dirname "$(realpath "$0")")"
# Update patches?
if [ "$1" = "-u" ]; then
keep_patches=0
shift
else
keep_patches=1
fi
pushd "$mydir" > /dev/null
source ./merge_helpers.sh
# Check branch
check_branch $branch
forall_repos check_branch $branch
# Persist current state
if [ "$keep_patches" = 0 ]; then
./generate_patches.sh
fi
# Ensure clean git state
forall_repos check_clean_git
# Abandon all local submodule state
forall_repos git reset --hard
git submodule update -f --recursive
# Fetch upstream
forall_repos git fetch upstream
# Automatic reversions
automatic_i18n_reversion
automatic_packagejson_reversion
# Check if specific version to merge passed
if [ -z "$1" ]; then
get_latest_upstream_tag
else
latest_upstream_tag="$1"
fi
# Merge upstream
get_latest_upstream_tag
forelement_repos git merge "$latest_upstream_tag"
sc_branch_name="sc_$latest_upstream_tag"
forelement_repos git checkout "$latest_upstream_tag" -B "$sc_branch_name"
get_current_mxsdk_tags
pushd "matrix-js-sdk" > /dev/null
git merge "$current_mxjssdk_tag"
popd > /dev/null
pushd "matrix-react-sdk" > /dev/null
git merge "$current_mxreactsdk_tag"
git checkout "$current_mxjssdk_tag" -B "$sc_branch_name"
popd > /dev/null
# Refresh environment
make clean
make setup
forall_repos commit_if_dirty "Automatic setup commit"
# Automatic adjustments
automatic_i18n_adjustment
automatic_packagejson_adjustment
./apply_patches.sh
# Automatic theme update
pushd "matrix-react-sdk" > /dev/null
./theme.sh y
popd > /dev/null
compound_web_version=`cat element-web/package.json|grep compound-web|sed 's|.*: \"\(.*\)",|\1|;s|\^||'`
echo "TODO: merge compound web at $compound_web_version"
popd > /dev/null

View File

@ -1,18 +0,0 @@
final: prev: {
cleanSchildichatDesktopSource = src: with final.lib; cleanSourceWith {
filter = name: type: cleanSourceFilter name type
&& !(hasInfix "/node_modules/" name)
&& !(hasInfix "/nix/" name && hasSuffix ".nix" name)
;
inherit src;
};
schildichat-web = final.callPackage ./schildichat-web.nix {
};
schildichat-desktop = final.callPackage ./schildichat-desktop.nix {
inherit (final.darwin.apple_sdk.frameworks) Security AppKit CoreServices;
};
schildichat-desktop-wayland = final.callPackage ./schildichat-desktop.nix {
inherit (final.darwin.apple_sdk.frameworks) Security AppKit CoreServices;
useWayland = true;
};
}

View File

@ -1,109 +0,0 @@
{ lib
, stdenv
, fetchFromGitHub
, makeWrapper
, makeDesktopItem
, mkYarnPackage
, electron
, element-desktop # for native modules
, schildichat-web
, callPackage
, Security
, AppKit
, CoreServices
, useWayland ? false
, cleanSchildichatDesktopSource
, schildichat-desktop-src ? ../.
}:
let
packageJSON = schildichat-desktop-src + "/element-desktop/package.json";
yarnLock = schildichat-desktop-src + "/element-desktop/yarn.lock";
package = builtins.fromJSON (builtins.readFile packageJSON);
pname = "schildichat-desktop";
version = package.version;
executableName = pname;
electron_exec = if stdenv.isDarwin then "${electron}/Applications/Electron.app/Contents/MacOS/Electron" else "${electron}/bin/electron";
in mkYarnPackage rec {
inherit pname version packageJSON;
src = cleanSchildichatDesktopSource (schildichat-desktop-src + "/element-desktop");
nativeBuildInputs = [ makeWrapper ];
inherit (element-desktop) seshat keytar;
buildPhase = ''
runHook preBuild
export HOME=$(mktemp -d)
pushd deps/schildichat-desktop/
npx tsc
yarn run i18n
node ./scripts/copy-res.js
popd
rm -rf node_modules/matrix-seshat node_modules/keytar
ln -s $keytar node_modules/keytar
ln -s $seshat node_modules/matrix-seshat
runHook postBuild
'';
installPhase = ''
runHook preInstall
# resources
mkdir -p "$out/share/element"
ln -s '${schildichat-web}' "$out/share/element/webapp"
cp -r './deps/schildichat-desktop' "$out/share/element/electron"
cp -r './deps/schildichat-desktop/res/img' "$out/share/element"
rm "$out/share/element/electron/node_modules"
cp -r './node_modules' "$out/share/element/electron"
cp $out/share/element/electron/lib/i18n/strings/en_EN.json $out/share/element/electron/lib/i18n/strings/en-us.json
ln -s $out/share/element/electron/lib/i18n/strings/en{-us,}.json
# icons
for icon in $out/share/element/electron/build/icons/*.png; do
mkdir -p "$out/share/icons/hicolor/$(basename $icon .png)/apps"
ln -s "$icon" "$out/share/icons/hicolor/$(basename $icon .png)/apps/element.png"
done
# desktop item
mkdir -p "$out/share"
ln -s "${desktopItem}/share/applications" "$out/share/applications"
# executable wrapper
makeWrapper '${electron_exec}' "$out/bin/${executableName}" \
--add-flags "$out/share/element/electron${lib.optionalString useWayland " --enable-features=UseOzonePlatform --ozone-platform=wayland"}"
runHook postInstall
'';
# Do not attempt generating a tarball for element-web again.
# note: `doDist = false;` does not work.
distPhase = ''
true
'';
# The desktop item properties should be kept in sync with data from upstream:
# https://github.com/vector-im/element-desktop/blob/develop/package.json
desktopItem = makeDesktopItem {
name = "schildichat-desktop";
exec = "${executableName} %u";
icon = "schildichat";
desktopName = "SchildiChat";
genericName = "Matrix Client";
categories = "Network;InstantMessaging;Chat;";
extraEntries = ''
StartupWMClass=schildichat
MimeType=x-scheme-handler/element;
'';
};
}

View File

@ -1,75 +0,0 @@
{ stdenv
, mkYarnModules
, nodejs
, cleanSchildichatDesktopSource
, schildichat-desktop-src ? ../.
, ...
}:
let
packageJSON = schildichat-desktop-src + "/element-web/package.json";
yarnLock = schildichat-desktop-src + "/element-web/yarn.lock";
package = builtins.fromJSON (builtins.readFile packageJSON);
pname = "schildichat-web";
version = package.version;
modules = mkYarnModules {
name = "${pname}-modules-${version}";
inherit pname version packageJSON yarnLock;
};
in stdenv.mkDerivation {
inherit pname version;
src = cleanSchildichatDesktopSource schildichat-desktop-src;
buildInputs = [ nodejs ];
postPatch = ''
patchShebangs .
'';
configurePhase = ''
runHook preConfigure
cp configs/sc/config.json element-web/
cp -r ${modules}/node_modules node_modules
chmod u+rwX -R node_modules
rm -rf node_modules/matrix-react-sdk
ln -s $PWD/matrix-react-sdk node_modules/
ln -s $PWD/node_modules matrix-react-sdk/
ln -s $PWD/node_modules element-web/
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
pushd matrix-react-sdk
node_modules/.bin/reskindex -h ../element-web/src/header
popd
pushd element-web
node scripts/copy-res.js
node_modules/.bin/reskindex -h ../element-web/src/header
node_modules/.bin/webpack --progress --mode production
popd
runHook postBuild
'';
installPhase = ''
runHook preInstall
cp -r element-web/webapp $out
runHook postInstall
'';
passthru = {
inherit modules;
};
}

View File

@ -0,0 +1,10 @@
{
"name": "schildichat-desktop-alpha",
"productName": "SchildiChatAlpha",
"description": "A Matrix Client based on Element with some changes and tweaks",
"author": "SchildiChat",
"repository": {
"url": "https://github.com/SchildiChat/schildichat-desktop"
},
"homepage": "https://schildi.chat/"
}

View File

@ -0,0 +1,8 @@
{
"name": "schildichat-web-alpha",
"description": "A Matrix Client based on Element with some changes and tweaks",
"author": "SchildiChat",
"repository": {
"url": "https://github.com/SchildiChat/schildichat-desktop"
}
}

View File

@ -0,0 +1,62 @@
From 1f589d9bb0c332ccb55d51f824f707385d80fbc0 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sat, 2 Dec 2023 12:57:26 +0100
Subject: Add back schildi fetch-package.ts modifications
---
scripts/fetch-package.ts | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/scripts/fetch-package.ts b/scripts/fetch-package.ts
index 7282945..4be7ab0 100644
--- a/scripts/fetch-package.ts
+++ b/scripts/fetch-package.ts
@@ -54,6 +54,7 @@ async function main(): Promise<number | undefined> {
let filename: string | undefined;
let url: string | undefined;
let setVersion = false;
+ const sc = true;
while (process.argv.length > 2) {
switch (process.argv[2]) {
@@ -82,7 +83,9 @@ async function main(): Promise<number | undefined> {
process.argv.shift();
}
- if (targetVersion === undefined) {
+ if (sc) {
+ // nothing
+ } else if (targetVersion === undefined) {
targetVersion = "v" + riotDesktopPackageJson.version;
} else if (targetVersion !== "develop") {
setVersion = true; // version was specified
@@ -92,7 +95,7 @@ async function main(): Promise<number | undefined> {
filename = "develop.tar.gz";
url = DEVELOP_TGZ_URL;
verify = false; // develop builds aren't signed
- } else if (targetVersion.includes("://")) {
+ } else if (targetVersion?.includes("://")) {
filename = targetVersion.substring(targetVersion.lastIndexOf("/") + 1);
url = targetVersion;
verify = false; // manually verified
@@ -146,12 +149,15 @@ async function main(): Promise<number | undefined> {
}
let haveDeploy = false;
- let expectedDeployDir = path.join(deployDir, path.basename(filename).replace(/\.tar\.gz/, ""));
+ let expectedDeployDir = sc ? "../element-web/webapp" : path.join(deployDir, path.basename(filename).replace(/\.tar\.gz/, ""));
try {
await fs.opendir(expectedDeployDir);
console.log(expectedDeployDir + "already exists");
haveDeploy = true;
- } catch {}
+ } catch (e) {
+ console.log("Not a valid webapp dir: " + expectedDeployDir, e);
+ return 1;
+ }
if (!haveDeploy) {
const outPath = path.join(pkgDir, filename);
--
2.48.1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
From c3cf43a61f54bb688b32c881564a181485170013 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 27 Oct 2024 19:38:47 +0100
Subject: Don't welcome to Element
---
res/welcome.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/res/welcome.html b/res/welcome.html
index ef2d43bd8f..5b71670f4f 100644
--- a/res/welcome.html
+++ b/res/welcome.html
@@ -169,7 +169,7 @@ we don't have an account and should hide them. No account == no guest account ei
<a href="https://element.io" target="_blank" rel="noopener">
<img src="$logoUrl" alt="" class="mx_Logo" />
</a>
- <h1 class="mx_Header_title">_t("welcome_to_element")</h1>
+ <h1 class="mx_Header_title">_t("Welcome to SchildiChat")</h1>
<!-- XXX: Our translations system isn't smart enough to recognize variables in the HTML, so we manually do it -->
<h4 class="mx_Header_subtitle">_t("powered_by_matrix_with_logo")</h4>
<div class="mx_ButtonGroup">
--
2.48.1

View File

@ -0,0 +1,25 @@
From 61fd7f169e275a27d168d1afe436c5dd34dbc09a Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 27 Oct 2024 19:55:30 +0100
Subject: Stronger login background to ensure contrast of our icon with our bg
---
src/components/views/auth/AuthPage.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/views/auth/AuthPage.tsx b/src/components/views/auth/AuthPage.tsx
index 3c7fe2503e..64163e837c 100644
--- a/src/components/views/auth/AuthPage.tsx
+++ b/src/components/views/auth/AuthPage.tsx
@@ -58,7 +58,7 @@ export default class AuthPage extends React.PureComponent<React.PropsWithChildre
const modalContentStyle: React.CSSProperties = {
display: "flex",
zIndex: 1,
- background: "rgba(255, 255, 255, 0.59)",
+ background: "linear-gradient(rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.7))",
borderRadius: "8px",
};
--
2.48.1

View File

@ -0,0 +1,30 @@
From 460db57d64132c244504f2f046f7473b30359e7d Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 27 Oct 2024 20:07:30 +0100
Subject: Schildify login footer
---
src/components/views/auth/AuthFooter.tsx | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/components/views/auth/AuthFooter.tsx b/src/components/views/auth/AuthFooter.tsx
index f609b4792a..8abcc8fa37 100644
--- a/src/components/views/auth/AuthFooter.tsx
+++ b/src/components/views/auth/AuthFooter.tsx
@@ -15,9 +15,13 @@ import { _t } from "../../../languageHandler";
const AuthFooter = (): ReactElement => {
const brandingConfig = SdkConfig.getObject("branding");
const links = brandingConfig?.get("auth_footer_links") ?? [
+ /*
{ text: "Blog", url: "https://element.io/blog" },
{ text: "Mastodon", url: "https://mastodon.matrix.org/@Element" },
{ text: "GitHub", url: "https://github.com/element-hq/element-web" },
+ */
+ { text: "About", url: "https://schildi.chat" },
+ { text: "GitHub", url: "https://github.com/schildichat/schildichat-desktop" },
];
const authFooterLinks: JSX.Element[] = [];
--
2.48.1

View File

@ -0,0 +1,29 @@
From 12b585464c5d85df4d210862543018a28b815bd0 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Tue, 18 Jan 2022 13:28:22 +0100
Subject: Disable sticky rooms
---
src/stores/room-list/algorithms/Algorithm.ts | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/stores/room-list/algorithms/Algorithm.ts b/src/stores/room-list/algorithms/Algorithm.ts
index 5419a6e47c..25d6b78fde 100644
--- a/src/stores/room-list/algorithms/Algorithm.ts
+++ b/src/stores/room-list/algorithms/Algorithm.ts
@@ -159,8 +159,10 @@ export class Algorithm extends EventEmitter {
this.recalculateActiveCallRooms(tagId);
}
- private updateStickyRoom(val: Room | null): void {
- this.doUpdateStickyRoom(val);
+ private updateStickyRoom(val: Room) {
+ // Schildi: we don't want it sticky
+ this.doUpdateStickyRoom(null);
+ //this.doUpdateStickyRoom(val);
this._lastStickyRoom = null; // clear to indicate we're done changing
}
--
2.48.1

View File

@ -0,0 +1,267 @@
From c14f17a15c7a4f22126eba9a92a417732fe3f659 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 5 May 2024 10:12:17 +0200
Subject: Bring back unified room list
Remaining TODO:
- Hook up setting to UI again (better with own SC-specific screen?)
Co-authored-by: su-ex <codeworks@supercable.onl>
---
src/components/views/rooms/LegacyRoomList.tsx | 39 ++++++++++++++++++-
src/settings/Settings.tsx | 8 ++++
src/stores/room-list/RoomListStore.ts | 19 ++++++++-
src/stores/room-list/algorithms/Algorithm.ts | 20 ++++++++--
src/stores/room-list/models.ts | 2 +
5 files changed, 83 insertions(+), 5 deletions(-)
diff --git a/src/components/views/rooms/LegacyRoomList.tsx b/src/components/views/rooms/LegacyRoomList.tsx
index a940484b16..663f741fed 100644
--- a/src/components/views/rooms/LegacyRoomList.tsx
+++ b/src/components/views/rooms/LegacyRoomList.tsx
@@ -83,11 +83,13 @@ interface IState {
sublists: ITagMap;
currentRoomId?: string;
suggestedRooms: ISuggestedRoom[];
+ unifiedRoomList: boolean;
}
export const TAG_ORDER: TagID[] = [
DefaultTagID.Invite,
DefaultTagID.Favourite,
+ DefaultTagID.Unified,
DefaultTagID.DM,
DefaultTagID.Untagged,
DefaultTagID.Conference,
@@ -100,6 +102,7 @@ export const TAG_ORDER: TagID[] = [
// but we'd have to make sure that rooms you weren't in were hidden.
];
const ALWAYS_VISIBLE_TAGS: TagID[] = [DefaultTagID.DM, DefaultTagID.Untagged];
+const ALWAYS_VISIBLE_UNIFIED_TAGS: TagID[] = [DefaultTagID.Unified];
interface ITagAesthetics {
sectionLabel: TranslationKey;
@@ -377,6 +380,17 @@ const UntaggedAuxButton: React.FC<IAuxButtonProps> = ({ tabIndex }) => {
return null;
};
+const UnifiedAuxButton: React.FC<IAuxButtonProps> = (iAuxButtonProps: IAuxButtonProps) => {
+ return (
+ <>
+ {/* eslint-disable-next-line new-cap */}
+ {DmAuxButton(iAuxButtonProps)}
+ {/* eslint-disable-next-line new-cap */}
+ {UntaggedAuxButton(iAuxButtonProps)}
+ </>
+ );
+};
+
const TAG_AESTHETICS: TagAestheticsMap = {
[DefaultTagID.Invite]: {
sectionLabel: _td("action|invites_list"),
@@ -394,6 +408,12 @@ const TAG_AESTHETICS: TagAestheticsMap = {
defaultHidden: false,
AuxButtonComponent: DmAuxButton,
},
+ [DefaultTagID.Unified]: {
+ sectionLabel: _td("Normal priority"),
+ isInvite: false,
+ defaultHidden: false,
+ AuxButtonComponent: UnifiedAuxButton,
+ },
[DefaultTagID.Conference]: {
sectionLabel: _td("voip|metaspace_video_rooms|conference_room_section"),
isInvite: false,
@@ -432,6 +452,7 @@ const TAG_AESTHETICS: TagAestheticsMap = {
export default class LegacyRoomList extends React.PureComponent<IProps, IState> {
private dispatcherRef?: string;
+ private readonly unifiedRoomListWatcherRef: string;
private treeRef = createRef<HTMLDivElement>();
public static contextType = MatrixClientContext;
@@ -443,7 +464,14 @@ export default class LegacyRoomList extends React.PureComponent<IProps, IState>
this.state = {
sublists: {},
suggestedRooms: SpaceStore.instance.suggestedRooms,
+ unifiedRoomList: SettingsStore.getValue("unifiedRoomList"),
};
+
+ this.unifiedRoomListWatcherRef = SettingsStore.watchSetting(
+ "unifiedRoomList",
+ null,
+ this.onUnifiedRoomListChange,
+ );
}
public componentDidMount(): void {
@@ -459,6 +487,7 @@ export default class LegacyRoomList extends React.PureComponent<IProps, IState>
SpaceStore.instance.off(UPDATE_SUGGESTED_ROOMS, this.updateSuggestedRooms);
RoomListStore.instance.off(LISTS_UPDATE_EVENT, this.updateLists);
defaultDispatcher.unregister(this.dispatcherRef);
+ SettingsStore.unwatchSetting(this.unifiedRoomListWatcherRef);
SdkContextClass.instance.roomViewStore.off(UPDATE_EVENT, this.onRoomViewStoreUpdate);
LegacyCallHandler.instance.off(LegacyCallHandlerEvent.ProtocolSupport, this.updateProtocolSupport);
}
@@ -467,6 +496,12 @@ export default class LegacyRoomList extends React.PureComponent<IProps, IState>
this.updateLists();
};
+ private onUnifiedRoomListChange = (): void => {
+ this.setState({
+ unifiedRoomList: SettingsStore.getValue("unifiedRoomList"),
+ });
+ };
+
private onRoomViewStoreUpdate = (): void => {
this.setState({
currentRoomId: SdkContextClass.instance.roomViewStore.getRoomId() ?? undefined,
@@ -605,7 +640,9 @@ export default class LegacyRoomList extends React.PureComponent<IProps, IState>
const aesthetics = TAG_AESTHETICS[orderedTagId];
if (!aesthetics) throw new Error(`Tag ${orderedTagId} does not have aesthetics`);
- let alwaysVisible = ALWAYS_VISIBLE_TAGS.includes(orderedTagId);
+ let alwaysVisible = (
+ this.state.unifiedRoomList ? ALWAYS_VISIBLE_UNIFIED_TAGS : ALWAYS_VISIBLE_TAGS
+ ).includes(orderedTagId);
if (
(this.props.activeSpace === MetaSpace.Favourites && orderedTagId !== DefaultTagID.Favourite) ||
(this.props.activeSpace === MetaSpace.People && orderedTagId !== DefaultTagID.DM) ||
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
index 439b0c112f..5d06388535 100644
--- a/src/settings/Settings.tsx
+++ b/src/settings/Settings.tsx
@@ -351,6 +351,14 @@ export type FeatureSettingKey = Assignable<Settings, IFeature>;
export type BooleanSettingKey = Assignable<Settings, IBaseSetting<boolean>> | FeatureSettingKey;
export const SETTINGS: Settings = {
+ // SC settings start
+ "unifiedRoomList": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td("Show people and rooms in a combined list"),
+ default: true,
+ controller: new ReloadOnChangeController(),
+ },
+ // SC settings end
"feature_video_rooms": {
isFeature: true,
labsGroup: LabGroup.VoiceAndVideo,
diff --git a/src/stores/room-list/RoomListStore.ts b/src/stores/room-list/RoomListStore.ts
index e1d2f7b7e8..64c757c377 100644
--- a/src/stores/room-list/RoomListStore.ts
+++ b/src/stores/room-list/RoomListStore.ts
@@ -502,6 +502,9 @@ export class RoomListStoreClass extends AsyncStoreWithClient<EmptyObject> implem
this.setAndPersistListOrder(tag, listOrder);
}
}
+
+ // SC: Unified list for DMs and groups
+ this.algorithm.setUnifiedRoomList(SettingsStore.getValue("unifiedRoomList"));
}
private onAlgorithmListUpdated = (forceUpdate: boolean): void => {
@@ -615,7 +618,21 @@ export class RoomListStoreClass extends AsyncStoreWithClient<EmptyObject> implem
*/
public getTagsForRoom(room: Room): TagID[] {
const algorithmTags = this.algorithm.getTagsForRoom(room);
- if (!algorithmTags) return [DefaultTagID.Untagged];
+ if (!algorithmTags) {
+ if (SettingsStore.getValue("unifiedRoomList")) {
+ return [DefaultTagID.Unified];
+ } else {
+ return [DefaultTagID.Untagged];
+ }
+ }
+ const dmTagIndex = algorithmTags.indexOf(DefaultTagID.DM);
+ if (dmTagIndex !== -1) {
+ algorithmTags[dmTagIndex] = DefaultTagID.Unified;
+ }
+ const untaggedTagIndex = algorithmTags.indexOf(DefaultTagID.Untagged);
+ if (untaggedTagIndex !== -1) {
+ algorithmTags[untaggedTagIndex] = DefaultTagID.Unified;
+ }
return algorithmTags;
}
diff --git a/src/stores/room-list/algorithms/Algorithm.ts b/src/stores/room-list/algorithms/Algorithm.ts
index 25d6b78fde..f3fc3899d0 100644
--- a/src/stores/room-list/algorithms/Algorithm.ts
+++ b/src/stores/room-list/algorithms/Algorithm.ts
@@ -75,6 +75,7 @@ export class Algorithm extends EventEmitter {
* Set to true to suspend emissions of algorithm updates.
*/
public updatesInhibited = false;
+ private unifiedRoomList: boolean = true;
public start(): void {
CallStore.instance.on(CallStoreEvent.ConnectedCalls, this.onConnectedCalls);
@@ -106,6 +107,10 @@ export class Algorithm extends EventEmitter {
return this._cachedRooms;
}
+ public setUnifiedRoomList(unifiedRoomList: boolean): void {
+ this.unifiedRoomList = unifiedRoomList;
+ }
+
/**
* Awaitable version of the sticky room setter.
* @param val The new room to sticky.
@@ -513,7 +518,10 @@ export class Algorithm extends EventEmitter {
}
if (!inTag) {
- if (DMRoomMap.shared().getUserIdForRoomId(room.roomId)) {
+ if (this.unifiedRoomList) {
+ // SC: Unified room list for DMs and groups
+ newTags[DefaultTagID.Unified].push(room);
+ } else if (DMRoomMap.shared().getUserIdForRoomId(room.roomId)) {
newTags[DefaultTagID.DM].push(room);
} else {
newTags[DefaultTagID.Untagged].push(room);
@@ -557,7 +565,13 @@ export class Algorithm extends EventEmitter {
tags.push(...this.getTagsOfJoinedRoom(room));
}
- if (!tags.length) tags.push(DefaultTagID.Untagged);
+ if (!tags.length) {
+ if (this.unifiedRoomList) {
+ tags.push(DefaultTagID.Unified);
+ } else {
+ tags.push(DefaultTagID.Untagged);
+ }
+ }
return tags;
}
@@ -567,7 +581,7 @@ export class Algorithm extends EventEmitter {
if (tags.length === 0) {
// Check to see if it's a DM if it isn't anything else
- if (DMRoomMap.shared().getUserIdForRoomId(room.roomId)) {
+ if (DMRoomMap.shared().getUserIdForRoomId(room.roomId) && !this.unifiedRoomList) {
tags = [DefaultTagID.DM];
}
}
diff --git a/src/stores/room-list/models.ts b/src/stores/room-list/models.ts
index 78823cbc42..00883e2ad6 100644
--- a/src/stores/room-list/models.ts
+++ b/src/stores/room-list/models.ts
@@ -13,6 +13,7 @@ export enum DefaultTagID {
LowPriority = "m.lowpriority",
Favourite = "m.favourite",
DM = "im.vector.fake.direct",
+ Unified = "chat.schildi.fake.unified",
Conference = "im.vector.fake.conferences",
ServerNotice = "m.server_notice",
Suggested = "im.vector.fake.suggested",
@@ -21,6 +22,7 @@ export enum DefaultTagID {
export const OrderedDefaultTagIDs = [
DefaultTagID.Invite,
DefaultTagID.Favourite,
+ DefaultTagID.Unified,
DefaultTagID.DM,
DefaultTagID.Conference,
DefaultTagID.Untagged,
--
2.48.1

View File

@ -0,0 +1,25 @@
From 2180196ba74a9526d0a68ad17328631d9b661cd2 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 17 Dec 2023 11:11:58 +0100
Subject: Don't sort muted rooms to bottom, I still want to see them.
---
.../room-list/algorithms/list-ordering/OrderingAlgorithm.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/stores/room-list/algorithms/list-ordering/OrderingAlgorithm.ts b/src/stores/room-list/algorithms/list-ordering/OrderingAlgorithm.ts
index 0f95fe78c2..2de554c357 100644
--- a/src/stores/room-list/algorithms/list-ordering/OrderingAlgorithm.ts
+++ b/src/stores/room-list/algorithms/list-ordering/OrderingAlgorithm.ts
@@ -38,7 +38,7 @@ export abstract class OrderingAlgorithm {
}
public get isMutedToBottom(): boolean {
- return this.sortingAlgorithm === SortAlgorithm.Recent;
+ return this.sortingAlgorithm === SortAlgorithm.Recent && false;
}
/**
--
2.48.1

View File

@ -0,0 +1,29 @@
From 27d4baaaf19f3d80ec7d5617e54bd7621090d6a4 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Thu, 14 Dec 2023 10:32:10 +0100
Subject: Don't preview reactions
---
src/stores/room-list/MessagePreviewStore.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/stores/room-list/MessagePreviewStore.ts b/src/stores/room-list/MessagePreviewStore.ts
index 51e413940d..7775d1e52a 100644
--- a/src/stores/room-list/MessagePreviewStore.ts
+++ b/src/stores/room-list/MessagePreviewStore.ts
@@ -63,10 +63,12 @@ const PREVIEWS: Record<
isState: false,
previewer: new StickerEventPreview(),
},
+ /*
"m.reaction": {
isState: false,
previewer: new ReactionEventPreview(),
},
+ */
[M_POLL_START.name]: {
isState: false,
previewer: new PollStartEventPreview(),
--
2.48.1

View File

@ -0,0 +1,30 @@
From db8b600a3695f35e70cb0c2a9f6b3cba99d2bfae Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Wed, 17 Nov 2021 12:50:25 +0100
Subject: Hide the "mute" notification state the same way as the other states
This can get in the way of the "marked as unread" icon otherwise.
Furthermore, I didn't really like it showing there persistently either
way.
---
src/components/views/rooms/RoomTile.tsx | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx
index 3eafb671cb..c9dcd00fd0 100644
--- a/src/components/views/rooms/RoomTile.tsx
+++ b/src/components/views/rooms/RoomTile.tsx
@@ -300,7 +300,9 @@ class RoomTile extends React.PureComponent<Props, State> {
// Only show the icon by default if the room is overridden to muted.
// TODO: [FTUE Notifications] Probably need to detect global mute state
- mx_RoomTile_notificationsButton_show: state === RoomNotifState.Mute,
+ //mx_RoomTile_notificationsButton_show: state === RoomNotifState.Mute,
+ // SchildiChat: never show the icon by default. This gets in the way of the "marked as unread" icon.
+ mx_RoomTile_notificationsButton_show: false,
});
return (
--
2.48.1

View File

@ -0,0 +1,25 @@
From 773a15b9d4a880d4fa9ddf06bda99c6d15316bb4 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Fri, 10 May 2024 18:58:32 +0200
Subject: Allow muted rooms to render as unread
---
src/RoomNotifs.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/RoomNotifs.ts b/src/RoomNotifs.ts
index e6064d2691..37838c79b5 100644
--- a/src/RoomNotifs.ts
+++ b/src/RoomNotifs.ts
@@ -255,7 +255,7 @@ export function determineUnreadState(
return { symbol: "!", count: 1, level: NotificationLevel.Highlight };
}
- if (getRoomNotifsState(room.client, room.roomId) === RoomNotifState.Mute) {
+ if (false && getRoomNotifsState(room.client, room.roomId) === RoomNotifState.Mute) {
return { symbol: null, count: 0, level: NotificationLevel.None };
}
--
2.48.1

View File

@ -0,0 +1,25 @@
From 52ee72a4f5ba98cee0eb6ce60aaac29daa2ce119 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 30 Aug 2020 15:33:01 +0200
Subject: Increase default visible tiles
---
src/stores/room-list/ListLayout.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/stores/room-list/ListLayout.ts b/src/stores/room-list/ListLayout.ts
index a4468dfffe..a4ae9bbc1d 100644
--- a/src/stores/room-list/ListLayout.ts
+++ b/src/stores/room-list/ListLayout.ts
@@ -74,7 +74,7 @@ export class ListLayout {
public get defaultVisibleTiles(): number {
// This number is what "feels right", and mostly subject to design's opinion.
- return 8;
+ return 50;
}
public tilesWithPadding(n: number, paddingPx: number): number {
--
2.48.1

View File

@ -0,0 +1,92 @@
From 75cf379cff65aa966ad3fc1acc5371c96e19c121 Mon Sep 17 00:00:00 2001
From: su-ex <codeworks@supercable.onl>
Date: Sun, 26 May 2024 10:43:36 +0200
Subject: Bring back showSpaceDMBadges setting, force-enabled for now
TODO settings UI
Co-authored-by: SpiritCroc <dev@spiritcroc.de>
---
src/settings/Settings.tsx | 5 +++++
src/stores/spaces/SpaceStore.ts | 25 +++++++++++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
index 5d06388535..5ca4cbc3e8 100644
--- a/src/settings/Settings.tsx
+++ b/src/settings/Settings.tsx
@@ -358,6 +358,11 @@ export const SETTINGS: Settings = {
default: true,
controller: new ReloadOnChangeController(),
},
+ "Spaces.showSpaceDMBadges": {
+ displayName: _td("Show notification badges for People in Spaces"),
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ default: true,
+ },
// SC settings end
"feature_video_rooms": {
isFeature: true,
diff --git a/src/stores/spaces/SpaceStore.ts b/src/stores/spaces/SpaceStore.ts
index 690beaa0b7..fcd7ff659b 100644
--- a/src/stores/spaces/SpaceStore.ts
+++ b/src/stores/spaces/SpaceStore.ts
@@ -155,9 +155,17 @@ export class SpaceStoreClass extends AsyncStoreWithClient<EmptyObject> {
private _msc3946ProcessDynamicPredecessor: boolean = SettingsStore.getValue("feature_dynamic_room_predecessors");
private _storeReadyDeferred = defer();
+ // SC start
+ private _showSpaceDMBadges = true;
+ // SC end
+
public constructor() {
super(defaultDispatcher, {});
+ // SC start
+ SettingsStore.monitorSetting("Spaces.showSpaceDMBadges", null);
+ // SC end
+
SettingsStore.monitorSetting("Spaces.allRoomsInHome", null);
SettingsStore.monitorSetting("Spaces.enabledMetaSpaces", null);
SettingsStore.monitorSetting("Spaces.showPeopleInSpace", null);
@@ -215,6 +223,10 @@ export class SpaceStoreClass extends AsyncStoreWithClient<EmptyObject> {
return this._allRoomsInHome;
}
+ public get showSpaceDMBadges(): boolean { // SC
+ return this._showSpaceDMBadges;
+ }
+
public setActiveRoomInSpace(space: SpaceKey): void {
if (!isMetaSpace(space) && !this.matrixClient?.getRoom(space)?.isSpaceRoom()) return;
if (space !== this.activeSpace) this.setActiveSpace(space, false);
@@ -724,6 +736,10 @@ export class SpaceStoreClass extends AsyncStoreWithClient<EmptyObject> {
if (room.isSpaceRoom() || !flattenedRoomsForSpace.has(room.roomId)) return false;
+ if (this.showSpaceDMBadges) { // SC
+ return true;
+ }
+
if (dmBadgeSpace && DMRoomMap.shared().getUserIdForRoomId(room.roomId)) {
return s === dmBadgeSpace;
}
@@ -1301,6 +1317,15 @@ export class SpaceStoreClass extends AsyncStoreWithClient<EmptyObject> {
break;
}
+ case "Spaces.showSpaceDMBadges": { // SC
+ const newValue = SettingsStore.getValue("Spaces.showSpaceDMBadges");
+ if (this.showSpaceDMBadges !== newValue) {
+ this._showSpaceDMBadges = newValue;
+ this.rebuildSpaceHierarchy(); // rebuild everything
+ }
+ break;
+ }
+
case "Spaces.enabledMetaSpaces": {
const newValue = SettingsStore.getValue("Spaces.enabledMetaSpaces");
const enabledMetaSpaces = this.metaSpaceOrder.filter((k) => newValue[k]);
--
2.48.1

View File

@ -0,0 +1,135 @@
From dbd02e7c0b1c63d432adb2d78c4ed5cb701092f7 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Wed, 29 May 2024 19:32:42 +0200
Subject: Squashed: Freeform reactions from tadzik/freeform-reactions-upstream
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
commit 9eea56b0080db3720efa49b457707bcde3be6474
Merge: 06f81c9662 8570f16e31
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Tue Jun 20 09:57:19 2023 +0200
Merge branch 'develop' into tadzik/freeform-reactions-upstream
commit 06f81c9662fbe033b4eac859d7e14e0ab24a6e91
Merge: ad4fef85b1 0d6a550c33
Author: Michael Telatynski <7t3chguy@gmail.com>
Date: Wed Aug 31 09:06:49 2022 +0100
Merge branch 'develop' into tadzik/freeform-reactions
commit ad4fef85b160087b8017b9ae9cf9aebfd5348f41
Merge: 689b57c0b9 5aae974e93
Author: Tadeusz Sośnierz <tadzik@tadzik.net>
Date: Sun Aug 28 10:11:48 2022 +0200
Merge branch 'develop' into tadzik/freeform-reactions
commit 689b57c0b91e12907a8dbc3fac3ed10302a11e4a
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Fri May 20 10:35:06 2022 +0200
Fix conflict resolution fail in EmojiPicker
commit 70a8e212b748584949b37bc99b72acffce2fd148
Merge: 215df55f13 a0cdc93642
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Fri May 20 10:25:17 2022 +0200
Merge branch 'develop' into tadzik/freeform-reactions-upstream
commit 215df55f13162bdc8eb13da5219763c56f560dd0
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Tue Aug 17 16:30:06 2021 +0200
Disable freeform emoji reactions in the message composer
commit 6bb8263007e077d22929fcc1fb439d94a4f15c6f
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Tue Aug 17 12:12:28 2021 +0200
Add more typing to EmojiPicker
commit b2a1728318a8a5496345797995c1ec09ae3f88e6
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Tue Aug 17 11:52:35 2021 +0200
Make free-form reaction button translatable
commit f4adaf00b805baba454fbceb41cc5c081ec886a7
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Tue Aug 17 11:29:22 2021 +0200
Allow sending free-form reactions
Signed-off-by: Tadeusz Sośnierz <tadeusz@sosnierz.com>
---
src/components/views/emojipicker/EmojiPicker.tsx | 16 ++++++++++++++++
.../views/emojipicker/ReactionPicker.tsx | 1 +
2 files changed, 17 insertions(+)
diff --git a/src/components/views/emojipicker/EmojiPicker.tsx b/src/components/views/emojipicker/EmojiPicker.tsx
index 71659d579b..4acbfd1fcb 100644
--- a/src/components/views/emojipicker/EmojiPicker.tsx
+++ b/src/components/views/emojipicker/EmojiPicker.tsx
@@ -29,6 +29,8 @@ import { Key } from "../../../Keyboard";
import { clamp } from "../../../utils/numbers";
import { type ButtonEvent } from "../elements/AccessibleButton";
+import AccessibleButton from '../elements/AccessibleButton';
+
export const CATEGORY_HEADER_HEIGHT = 20;
export const EMOJI_HEIGHT = 35;
export const EMOJIS_PER_ROW = 8;
@@ -36,6 +38,7 @@ export const EMOJIS_PER_ROW = 8;
const ZERO_WIDTH_JOINER = "\u200D";
interface IProps {
+ allowUnlisted?: boolean;
selectedEmojis?: Set<string>;
onChoose(unicode: string): boolean;
onFinished(): void;
@@ -337,6 +340,10 @@ class EmojiPicker extends React.Component<IProps, IState> {
}
};
+ private reactWith = (reaction: string): void => {
+ this.props.onChoose(reaction);
+ };
+
private static categoryHeightForEmojiCount(count: number): number {
if (count === 0) {
return 0;
@@ -392,6 +399,15 @@ class EmojiPicker extends React.Component<IProps, IState> {
return categoryElement;
})}
</AutoHideScrollbar>
+ {
+ (this.props.allowUnlisted && this.state.filter) &&
+ <AccessibleButton
+ kind="link"
+ onClick={() => this.reactWith(this.state.filter)}
+ >
+ { _t('React with "%(reaction)s"', { reaction: this.state.filter }) }
+ </AccessibleButton>
+ }
{this.state.previewEmoji ? (
<Preview emoji={this.state.previewEmoji} />
) : (
diff --git a/src/components/views/emojipicker/ReactionPicker.tsx b/src/components/views/emojipicker/ReactionPicker.tsx
index 8509b4014a..5e9ea0fd60 100644
--- a/src/components/views/emojipicker/ReactionPicker.tsx
+++ b/src/components/views/emojipicker/ReactionPicker.tsx
@@ -126,6 +126,7 @@ class ReactionPicker extends React.Component<IProps, IState> {
public render(): React.ReactNode {
return (
<EmojiPicker
+ allowUnlisted={true}
onChoose={this.onChoose}
isEmojiDisabled={this.isEmojiDisabled}
onFinished={this.props.onFinished}
--
2.48.1

View File

@ -0,0 +1,32 @@
From fcc37848fb0e949888a77325a4990639a3661d8e Mon Sep 17 00:00:00 2001
From: su-ex <codeworks@supercable.onl>
Date: Sat, 22 Apr 2023 12:15:18 +0200
Subject: Allow reactions to take more space
---
res/css/views/messages/_ReactionsRowButton.pcss | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/res/css/views/messages/_ReactionsRowButton.pcss b/res/css/views/messages/_ReactionsRowButton.pcss
index 917bcfbb84..75ec572c9e 100644
--- a/res/css/views/messages/_ReactionsRowButton.pcss
+++ b/res/css/views/messages/_ReactionsRowButton.pcss
@@ -14,6 +14,7 @@ Please see LICENSE files in the repository root for full details.
background-color: var(--cpd-color-gray-200);
user-select: none;
align-items: center;
+ max-width: calc(100% - 40px);;
&.mx_ReactionsRowButton_selected {
background-color: $accent-300;
@@ -25,7 +26,6 @@ Please see LICENSE files in the repository root for full details.
}
.mx_ReactionsRowButton_content {
- max-width: 100px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
--
2.48.1

View File

@ -0,0 +1,79 @@
From e9975388c5e2071240b8e16b122100f532aee10a Mon Sep 17 00:00:00 2001
From: su-ex <codeworks@supercable.onl>
Date: Thu, 30 May 2024 14:35:16 +0200
Subject: On space switch don't automatically show last opened room
---
src/components/structures/MatrixChat.tsx | 18 +++++++++++++++++-
src/settings/Settings.tsx | 6 ++++++
src/stores/spaces/SpaceStore.ts | 1 +
3 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx
index 3d802d34ad..e90667898b 100644
--- a/src/components/structures/MatrixChat.tsx
+++ b/src/components/structures/MatrixChat.tsx
@@ -1454,7 +1454,15 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
if (this.screenAfterLogin && this.screenAfterLogin.screen) {
this.showScreen(this.screenAfterLogin.screen, this.screenAfterLogin.params);
this.screenAfterLogin = undefined;
- } else if (localStorage && localStorage.getItem("mx_last_room_id")) {
+ } else if (
+ !SettingsStore.getValue("Spaces.returnToPreviouslyOpenedRoom") &&
+ localStorage &&
+ localStorage.getItem("mx_active_space") &&
+ localStorage.getItem("mx_active_space")[0] === "!"
+ ) {
+ // SC: Show the last viewed space
+ this.viewLastSpace();
+ } else if (SettingsStore.getValue("Spaces.returnToPreviouslyOpenedRoom") && localStorage && localStorage.getItem("mx_last_room_id")) {
// Before defaulting to directory, show the last viewed room
this.viewLastRoom();
} else {
@@ -1466,6 +1474,14 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
}
}
+ private viewLastSpace(): void { // SC
+ // SC-ToDo: Make this work for meta spaces
+ dis.dispatch({
+ action: Action.ViewRoom,
+ room_id: localStorage.getItem("mx_active_space"),
+ });
+ }
+
private viewLastRoom(): void {
dis.dispatch<ViewRoomPayload>({
action: Action.ViewRoom,
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
index 5ca4cbc3e8..80ada478ba 100644
--- a/src/settings/Settings.tsx
+++ b/src/settings/Settings.tsx
@@ -363,6 +363,12 @@ export const SETTINGS: Settings = {
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
default: true,
},
+ "Spaces.returnToPreviouslyOpenedRoom": {
+ displayName: _td("Return to the room previously opened in a space"),
+ description: _td("If disabled, the space overview will be shown when switching to another space."),
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ default: false,
+ },
// SC settings end
"feature_video_rooms": {
isFeature: true,
diff --git a/src/stores/spaces/SpaceStore.ts b/src/stores/spaces/SpaceStore.ts
index fcd7ff659b..33407f74e8 100644
--- a/src/stores/spaces/SpaceStore.ts
+++ b/src/stores/spaces/SpaceStore.ts
@@ -288,6 +288,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<EmptyObject> {
// else if the last viewed room in this space is joined then view that
// else view space home or home depending on what is being clicked on
if (
+ SettingsStore.getValue("Spaces.returnToPreviouslyOpenedRoom") &&
roomId &&
cliSpace?.getMyMembership() !== KnownMembership.Invite &&
this.matrixClient.getRoom(roomId)?.getMyMembership() === KnownMembership.Join &&
--
2.48.1

View File

@ -0,0 +1,24 @@
From bfe58ad4c742484429495dda65fdfd26302270c3 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Tue, 9 Aug 2022 09:32:19 +0200
Subject: Exclude spaces from breadcrumbs
---
src/stores/BreadcrumbsStore.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/stores/BreadcrumbsStore.ts b/src/stores/BreadcrumbsStore.ts
index e3b01cae0b..02f6c286f2 100644
--- a/src/stores/BreadcrumbsStore.ts
+++ b/src/stores/BreadcrumbsStore.ts
@@ -137,6 +137,7 @@ export class BreadcrumbsStore extends AsyncStoreWithClient<IState> {
}
private async appendRoom(room: Room): Promise<void> {
+ if (room.isSpaceRoom()) return;
let updated = false;
const rooms = (this.state.rooms || []).slice(); // cheap clone
const msc3946ProcessDynamicPredecessor = SettingsStore.getValue("feature_dynamic_room_predecessors");
--
2.48.1

View File

@ -0,0 +1,24 @@
From b97e37b1f5e4ad33cf044f5371e91955cafc4b55 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Mon, 19 Aug 2024 20:27:33 +0200
Subject: Stop the search bar wobble
---
res/css/_common.pcss | 1 +
1 file changed, 1 insertion(+)
diff --git a/res/css/_common.pcss b/res/css/_common.pcss
index 75180013f6..e55eadaaf7 100644
--- a/res/css/_common.pcss
+++ b/res/css/_common.pcss
@@ -181,6 +181,7 @@ input[type="search"].mx_textinput_icon {
padding-left: 36px;
background-repeat: no-repeat;
background-position: 10px center;
+ min-height: 33px;
}
/* FIXME THEME - Tint by CSS rather than referencing a duplicate asset */
--
2.48.1

View File

@ -0,0 +1,24 @@
From d37ddfc40426f200c9fcaa4298c5cf9921fb9025 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 13 Oct 2024 11:23:54 +0200
Subject: Import SC compound theme overrides
---
res/css/_common.pcss | 1 +
1 file changed, 1 insertion(+)
diff --git a/res/css/_common.pcss b/res/css/_common.pcss
index e55eadaaf7..21d0f1d83a 100644
--- a/res/css/_common.pcss
+++ b/res/css/_common.pcss
@@ -11,6 +11,7 @@ Please see LICENSE files in the repository root for full details.
@import url("@vector-im/compound-design-tokens/assets/web/css/compound-design-tokens.css") layer(compound);
@import url("@vector-im/compound-web/dist/style.css");
+@import "./sc-cpd-overrides.css";
@import "./_font-sizes.pcss";
@import "./_animations.pcss";
@import "./_spacing.pcss";
--
2.48.1

View File

@ -0,0 +1,26 @@
From 51cc5b9086927db3a9c3aa21e59a6f0d7e8fc761 Mon Sep 17 00:00:00 2001
From: su-ex <codeworks@supercable.onl>
Date: Tue, 7 Sep 2021 19:41:52 +0200
Subject: No damn avatar background in room list
---
src/components/structures/BackdropPanel.tsx | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/components/structures/BackdropPanel.tsx b/src/components/structures/BackdropPanel.tsx
index f3a44521fa..396601ba6e 100644
--- a/src/components/structures/BackdropPanel.tsx
+++ b/src/components/structures/BackdropPanel.tsx
@@ -13,6 +13,9 @@ interface IProps {
}
export const BackdropPanel: React.FC<IProps> = ({ backgroundImage, blurMultiplier }) => {
+ // SC: no damn avatar background in room list
+ return null;
+
if (!backgroundImage) return null;
const styles: CSSProperties = {};
--
2.48.1

View File

@ -0,0 +1,29 @@
From 50e71f22ccf8640b8cef718a3389b878602dd1d4 Mon Sep 17 00:00:00 2001
From: su-ex <codeworks@supercable.onl>
Date: Tue, 22 Dec 2020 19:16:28 +0100
Subject: No red messages in 1:1 chats Close SchildiChat/schildichat-desktop#13
---
src/components/views/rooms/EventTile.tsx | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx
index 17d09b661d..214514686f 100644
--- a/src/components/views/rooms/EventTile.tsx
+++ b/src/components/views/rooms/EventTile.tsx
@@ -685,6 +685,12 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
return false;
}
+ // don't show highlights in 1:1 rooms
+ const room = cli.getRoom(this.props.mxEvent.getRoomId());
+ if (room && room.currentState.getJoinedMemberCount() === 2) {
+ return false;
+ }
+
return !!(actions?.tweaks.highlight || previousActions?.tweaks.highlight);
}
--
2.48.1

View File

@ -0,0 +1,61 @@
From df6840270f2b8c6c1c1b5aaf430fa78f016b1a56 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 13 Oct 2024 13:26:16 +0200
Subject: Always apply corner radius to all edges of the bubble
---
res/css/views/rooms/_EventBubbleTile.pcss | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/res/css/views/rooms/_EventBubbleTile.pcss b/res/css/views/rooms/_EventBubbleTile.pcss
index c25cbfcec4..682ea64890 100644
--- a/res/css/views/rooms/_EventBubbleTile.pcss
+++ b/res/css/views/rooms/_EventBubbleTile.pcss
@@ -283,6 +283,8 @@ Please see LICENSE files in the repository root for full details.
margin-inline: var(--EventTile_bubble_line-margin-inline-start) var(--EventTile_bubble_line-margin-inline-end);
border-top-left-radius: var(--cornerRadius);
border-top-right-radius: var(--cornerRadius);
+ border-bottom-left-radius: var(--cornerRadius);
+ border-bottom-right-radius: var(--cornerRadius);
/* the selector here is quite weird because timestamps can appear linked & unlinked and in different places */
/* in the DOM depending on the specific rendering context */
@@ -376,7 +378,7 @@ Please see LICENSE files in the repository root for full details.
}
&.mx_EventTile_continuation[data-self="false"] .mx_EventTile_line {
- border-top-left-radius: 0;
+ //border-top-left-radius: 0;
.mx_MImageBody .mx_MImageBody_thumbnail_container,
.mx_MVideoBody .mx_MVideoBody_container,
@@ -384,7 +386,7 @@ Please see LICENSE files in the repository root for full details.
.mx_MediaBody,
.mx_MLocationBody_map,
.mx_MBeaconBody {
- border-top-left-radius: 0;
+ //border-top-left-radius: 0;
}
}
&.mx_EventTile_lastInSection[data-self="false"] .mx_EventTile_line {
@@ -401,7 +403,7 @@ Please see LICENSE files in the repository root for full details.
}
&.mx_EventTile_continuation[data-self="true"] .mx_EventTile_line {
- border-top-right-radius: 0;
+ //border-top-right-radius: 0;
.mx_MImageBody .mx_MImageBody_thumbnail_container,
.mx_MVideoBody .mx_MVideoBody_container,
@@ -409,7 +411,7 @@ Please see LICENSE files in the repository root for full details.
.mx_MediaBody,
.mx_MLocationBody_map,
.mx_MBeaconBody {
- border-top-right-radius: 0;
+ //border-top-right-radius: 0;
}
}
&.mx_EventTile_lastInSection[data-self="true"] .mx_EventTile_line {
--
2.48.1

View File

@ -0,0 +1,25 @@
From 89c6003be2e9510be12640809a316278816f1837 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 13 Oct 2024 13:53:07 +0200
Subject: Always show timestamps by default
---
src/settings/Settings.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
index 80ada478ba..e41c19b750 100644
--- a/src/settings/Settings.tsx
+++ b/src/settings/Settings.tsx
@@ -786,7 +786,7 @@ export const SETTINGS: Settings = {
"alwaysShowTimestamps": {
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
displayName: _td("settings|always_show_message_timestamps"),
- default: false,
+ default: true,
},
"userTimezone": {
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
--
2.48.1

View File

@ -0,0 +1,25 @@
From 2f4546aaca472f4ac2304fc5b5bdcb36c9a380c6 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Thu, 17 Oct 2024 19:40:51 +0200
Subject: Enable custom emote rendering by default
---
src/settings/Settings.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
index e41c19b750..276d72cf23 100644
--- a/src/settings/Settings.tsx
+++ b/src/settings/Settings.tsx
@@ -641,7 +641,7 @@ export const SETTINGS: Settings = {
description: _td("labs|render_reaction_images_description"),
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED,
supportedLevelsAreOrdered: true,
- default: false,
+ default: true,
},
"feature_new_room_list": {
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED,
--
2.48.1

View File

@ -0,0 +1,25 @@
From 9b7345671c0910cf9d6ca3710a4cd9f5126fe186 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 27 Oct 2024 19:24:26 +0100
Subject: Enable chat previews by default
---
src/stores/room-list/ListLayout.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/stores/room-list/ListLayout.ts b/src/stores/room-list/ListLayout.ts
index a4ae9bbc1d..227c918457 100644
--- a/src/stores/room-list/ListLayout.ts
+++ b/src/stores/room-list/ListLayout.ts
@@ -18,7 +18,7 @@ interface ISerializedListLayout {
export class ListLayout {
private _n = 0;
- private _previews = false;
+ private _previews = true;
private _collapsed = false;
public constructor(public readonly tagId: TagID) {
--
2.48.1

View File

@ -0,0 +1,39 @@
From 1d3a914d447e6ccae5ad13ac4438aa979610946e Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sat, 30 Nov 2024 19:42:44 +0100
Subject: Disable showing people in spaces by default
---
src/settings/Settings.tsx | 2 +-
src/stores/room-list/filters/SpaceFilterCondition.ts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
index 276d72cf23..4de889b562 100644
--- a/src/settings/Settings.tsx
+++ b/src/settings/Settings.tsx
@@ -1206,7 +1206,7 @@ export const SETTINGS: Settings = {
},
"Spaces.showPeopleInSpace": {
supportedLevels: [SettingLevel.ROOM_ACCOUNT],
- default: true,
+ default: false,
},
"developerMode": {
displayName: _td("devtools|developer_mode"),
diff --git a/src/stores/room-list/filters/SpaceFilterCondition.ts b/src/stores/room-list/filters/SpaceFilterCondition.ts
index 02e20e9103..2b49711c8e 100644
--- a/src/stores/room-list/filters/SpaceFilterCondition.ts
+++ b/src/stores/room-list/filters/SpaceFilterCondition.ts
@@ -25,7 +25,7 @@ import SettingsStore from "../../../settings/SettingsStore";
export class SpaceFilterCondition extends EventEmitter implements IFilterCondition, IDestroyable {
private roomIds = new Set<string>();
private userIds = new Set<string>();
- private showPeopleInSpace = true;
+ private showPeopleInSpace = false;
private space: SpaceKey = MetaSpace.Home;
public isVisible(room: Room): boolean {
--
2.48.1

View File

@ -0,0 +1,310 @@
From 1784aaa9b523c5f02b089ed08847bb8d07240570 Mon Sep 17 00:00:00 2001
From: Suguru Hirahara <luixxiul@users.noreply.github.com>
Date: Thu, 31 Oct 2024 13:44:20 -0400
Subject: Improve IRC layout for SchildiChat
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
Squashed:
Author: Suguru Hirahara <luixxiul@users.noreply.github.com>
Date: Thu Nov 28 10:01:43 2024 -0500
Improve IRC layout for SchildiChat: fix placement of capital letters inside read receipts
This is a follow-up to 18578fe4ac6838b2d70a4efb029a75ab24087dab.
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
---
.../elements/_GenericEventListSummary.pcss | 15 ++
res/css/views/rooms/_EventTile.pcss | 148 ++++++++++++++++--
res/css/views/rooms/_IRCLayout.pcss | 2 +
3 files changed, 155 insertions(+), 10 deletions(-)
diff --git a/res/css/views/elements/_GenericEventListSummary.pcss b/res/css/views/elements/_GenericEventListSummary.pcss
index f4aa0e6f0f..88bcb88f14 100644
--- a/res/css/views/elements/_GenericEventListSummary.pcss
+++ b/res/css/views/elements/_GenericEventListSummary.pcss
@@ -1,5 +1,6 @@
/*
Copyright 2024 New Vector Ltd.
+Copyright 2024 Suguru Hirahara
Copyright 2016 OpenMarket Ltd
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
@@ -36,6 +37,20 @@ Please see LICENSE files in the repository root for full details.
}
}
+ &[data-layout="irc"] {
+ .mx_GenericEventListSummary_avatars {
+ vertical-align: text-bottom; /* Align with mx_GenericEventListSummary_summary */
+
+ > * {
+ line-height: inherit; /* Same size as avatar height */
+ }
+ }
+
+ .mx_GenericEventListSummary_summary {
+ line-height: var(--irc-line-height); /* Override the declaration by mx_TextualEvent */
+ }
+ }
+
&[data-layout="group"] {
margin-top: $spacing-8;
}
diff --git a/res/css/views/rooms/_EventTile.pcss b/res/css/views/rooms/_EventTile.pcss
index 54f91bd5f4..952f267902 100644
--- a/res/css/views/rooms/_EventTile.pcss
+++ b/res/css/views/rooms/_EventTile.pcss
@@ -1,5 +1,6 @@
/*
Copyright 2024 New Vector Ltd.
+Copyright 2024 Suguru Hirahara
Copyright 2020, 2021 The Matrix.org Foundation C.I.C.
Copyright 2015, 2016 OpenMarket Ltd
@@ -273,6 +274,10 @@ $left-gutter: 64px;
align-items: flex-start;
padding-top: 0;
+ * {
+ line-height: var(--line-height); /* Unify the line-height value for IRC layout. The value is applied by default to everything under data-layout="irc", enabling declarations with more specificity to override the value as this is not enforced with "!important" */
+ }
+
> a {
text-decoration: none; /* timestamps are links which shouldn't be underlined */
min-width: var(--MessageTimestamp-width); /* ensure space for EventTile without timestamp */
@@ -280,6 +285,7 @@ $left-gutter: 64px;
> * {
margin-right: var(--right-padding);
+ padding-block: var(--EventTile_irc_line-padding-block); /* Unify block padding value of anything directly under mx_EventTile */
}
.mx_EventTile_avatar,
@@ -315,17 +321,46 @@ $left-gutter: 64px;
width: var(--name-width);
margin-inline-end: 0; /* override mx_EventTile > * */
+ /* Align elements to the end side */
+ display: block;
+ text-align: end;
+
+ --sc-border-radius-8px: 8px; /* TODO: customize the variable per out taste */
+ border-start-start-radius: var(--sc-border-radius-8px, 3px);
+ border-end-start-radius: var(--sc-border-radius-8px, 3px);
+
+ /* Set $accent as default color, in order to make ellipsis rendered with the accent color (green, by default) */
+ color: $accent;
+
+ &:hover {
+ background-color: $event-selected-color;
+
+ /* This removes top left and bottom left corders from mx_EventTile_line, if just mx_DisambiguatedProfile is hovered. This enables the highlight line to be rendered straight without being dent by those corners. Please note that they do appear if just mx_EventTile_line is hovered. */
+ & ~ .mx_EventTile_line {
+ border-start-start-radius: 0;
+ border-end-start-radius: 0;
+ }
+ }
+
> .mx_DisambiguatedProfile_displayName {
width: 100%;
text-align: end;
overflow: hidden;
text-overflow: ellipsis;
+ padding-inline-end: var(--right-padding); /* Add padding between displayName and mx_EventTile_line */
}
> .mx_DisambiguatedProfile_mxid {
- visibility: collapse;
+ /* On the upstream, appearance of mxid on disambiguatedProfile is managed by
+ "visibility" property. Since it renders mxid hiding it and pushes
+ displayName to the left side, we need to use display property instead. */
+ display: none;
+
margin-left: 0; /* Override the inherited margin. */
padding: 0 5px;
+ padding-inline-start: 0; /* Remove the value specified on upstream since var(--right-padding) is specified for mx_DisambiguatedProfile_displayName above */
+
+ color: $primary-content; /* Override the color specified above to make the mxid rendered as $primary-content (black, by default) */
}
&:hover {
@@ -337,17 +372,68 @@ $left-gutter: 64px;
display: inline;
background-color: $event-selected-color;
border-radius: 8px 0 0 8px;
- padding-right: $spacing-8;
+ padding-inline-end: var(--right-padding);
}
> .mx_DisambiguatedProfile_mxid {
- visibility: visible;
+ display: inline-block; /* Make var(--irc-line-height) work */
+
opacity: 1;
background-color: $event-selected-color;
}
}
}
+ /* Need to use important to override the js provided height and width values. */
+ .mx_BaseAvatar,
+ .mx_BaseAvatar > * {
+ height: $font-14px !important;
+ width: $font-14px !important;
+ line-height: $font-14px; /* override wildcard; fix alignment of capital letter inside read receipts */
+ flex-shrink: 0; /* Prevents the avatar from shrinking (when mx_DisambiguatedProfile_displayName is long) */
+ }
+
+ /* Fill the pill with the avatar */
+ /* TODO: Adjust the size for IRC layout */
+ .mx_Pill {
+ .mx_BaseAvatar,
+ .mx_BaseAvatar > * {
+ height: $font-16px !important; /* override the value specified above */
+ width: $font-16px !important; /* override the value specified above */
+ line-height: $font-16px; /* override wildcard; fix alignment of capital letter inside read receipts */
+ }
+ }
+
+ .mx_EventTile_bigEmoji {
+ line-height: initial; /* Reset global line-height value inside IRC EventTile */
+
+ .mx_Emoji {
+ line-height: unset;
+ }
+ }
+
+ .mx_EventTile_content {
+ .markdown-body {
+ > * {
+ margin-bottom: 4px; /* Unify block end margin for elements like blockquote */
+ }
+
+ > p {
+ margin-bottom: 1rem; /* Re-add block end margin to unify the margin for paragraphs with or without annotation */
+ }
+
+ code:not(pre *) {
+ padding-block: 0; /* Remove block padding to avoid line height overflow */
+ }
+
+ .mx_EventTile_pre_container {
+ pre {
+ margin-bottom: 0; /* Remove default block end margin */
+ }
+ }
+ }
+ }
+
.mx_EventTile_e2eIcon {
padding: 0;
flex-grow: 0;
@@ -359,9 +445,8 @@ $left-gutter: 64px;
.mx_TextualEvent,
.mx_ViewSourceEvent,
.mx_MTextBody {
- /* add a 1px padding top and bottom because our larger
- emoji font otherwise gets cropped by anti-zalgo */
- padding: var(--EventTile_irc_line-padding-block) 0;
+ /* Cancel the padding specified by the upstream as it is taken care of by padding var(--EventTile_irc_line-padding-block) */
+ padding: unset;
}
.mx_EventTile_e2eIcon,
@@ -399,8 +484,36 @@ $left-gutter: 64px;
}
}
- .mx_ReplyChain {
- margin: 0;
+ .mx_ReplyChain_wrapper {
+ .mx_ReplyChain {
+ margin: 0;
+
+ .mx_ReplyTile {
+ padding-block: unset; /* Unset the inherited value */
+ }
+
+ .mx_DisambiguatedProfile {
+ line-height: var(--irc-line-height);
+
+ /* Stop mxid from moving avatar up on ReplyChain by resetting display
+ value "none" specified above */
+ /* Mind the difference of avatar placement between on upstream's
+ mx_EventTile and mx_ReplyTile_sender */
+ > .mx_DisambiguatedProfile_mxid {
+ display: unset;
+ }
+
+ &:hover {
+ overflow: hidden; /* Override "overflow: visible" specified by the upstream */
+ }
+ }
+ }
+
+ /* Align avatar inside ReplyChain (ReplyTile) */
+ /* "In reply to" line */
+ div:first-of-type blockquote.mx_ReplyChain {
+ padding-bottom: 2px; /* Add padding between "In reply to" line and the replied content */
+ }
}
.mx_MessageTimestamp {
@@ -453,8 +566,14 @@ $left-gutter: 64px;
&.mx_EventTile_emote {
.mx_EventTile_avatar {
- /* add --right-padding value of MessageTimestamp only */
- margin-left: calc(var(--name-width) + var(--icon-width) + 1 * var(--right-padding));
+ /* Required for the avatar to reserve spacing between timestamp and the avatar */
+ margin-left: var(--name-width); /* Align emote with other EventTile */
+ }
+
+ &.mx_EventTile_info {
+ .mx_EventTile_avatar {
+ margin-left: unset; /* Required for hidden events for emote */
+ }
}
}
@@ -636,6 +755,15 @@ $left-gutter: 64px;
var(--name-width) + var(--icon-width) + var(--MessageTimestamp-width) + 2 * var(--right-padding)
);
}
+
+ .mx_EventTile_line .mx_RedactedBody {
+ line-height: var(--line-height); /* Unify the line-height value for IRC layout by overwriting the line-height value specified on upstream _EventTile.pcss */
+
+ &::before {
+ height: var(--line-height); /* Set the line height value to the trash icon */
+ top: 0px; /* Remove the value specified by the upstream as this is no longer needed */
+ }
+ }
}
&[data-layout="group"] {
diff --git a/res/css/views/rooms/_IRCLayout.pcss b/res/css/views/rooms/_IRCLayout.pcss
index 953a0c941f..3326d0c0ff 100644
--- a/res/css/views/rooms/_IRCLayout.pcss
+++ b/res/css/views/rooms/_IRCLayout.pcss
@@ -1,5 +1,6 @@
/*
Copyright 2024 New Vector Ltd.
+Copyright 2024 Suguru Hirahara
Copyright 2020 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
@@ -15,6 +16,7 @@ Please see LICENSE files in the repository root for full details.
--icon-width: 14px;
--line-height: var(--irc-line-height);
--right-padding: 5px;
+ --cpd-font-line-height-regular: var(--irc-line-height); /* Unify the line-height value for IRC layout */
line-height: var(--line-height) !important;
--
2.48.1

View File

@ -1,31 +0,0 @@
#!/bin/bash
set -e
mydir="$(dirname "$(realpath "$0")")"
pushd "$mydir" > /dev/null
source ./merge_helpers.sh
# Check branch
check_branch $branch
forall_repos check_branch $branch
# Ensure clean git state
forall_repos check_clean_git
git fetch origin
git branch -D master || true
git checkout -b master --track origin/master
git merge --ff-only sc
git push
git checkout sc
forall_repos git fetch origin
forall_repos git branch -D master || true
forall_repos git checkout -b master --track origin/master
forall_repos git merge --ff-only sc
forall_repos git push
forall_repos git checkout sc
popd > /dev/null

38
push_current_sc_branches.sh Executable file
View File

@ -0,0 +1,38 @@
#!/bin/bash
set -e
mydir="$(dirname "$(realpath "$0")")"
pushd "$mydir" > /dev/null
source ./merge_helpers.sh
get_branch_of() {
local repo="$1"
pushd "$repo" > /dev/null
local b=`git branch --show-current`
if [[ "$b" = sc_v* ]]; then
echo "$b"
else
>&2 echo "Unexpected branch name for $repo: $b"
exit 1
fi
popd > /dev/null
}
b_js=`get_branch_of matrix-js-sdk`
b_web=`get_branch_of element-web`
b_desktop=`get_branch_of element-desktop`
if [ "$b_js" != "$b_web" ] || [ "$b_web" != "$b_desktop" ]; then
echo "Detected branch name mismatch!"
echo "js-sdk: $b_js"
echo "element-web: $b_web"
echo "element-desktop: $b_desktop"
exit 1
fi
branch="$b_js"
echo "Pushing to all repos: $branch"
for_main_repos git push --set-upstream origin "$branch" "$@"

View File

@ -0,0 +1,176 @@
/*
* Upstream file for reference:
* - Dark: https://github.com/element-hq/compound-design-tokens/blob/main/assets/web/css/cpd-theme-dark-base.css
* - Light: https://github.com/element-hq/compound-design-tokens/blob/main/assets/web/css/cpd-theme-light-base.css
*/
.cpd-theme-dark.cpd-theme-dark {
--cpd-color-text-primary: rgba(255, 255, 255, 0.9);
--cpd-color-text-secondary: rgba(255, 255, 255, 0.65);
/* TODO?
--cpd-color-alpha-green-1400: hsla(152, 88%, 94%, 0.96);
--cpd-color-alpha-green-1300: hsla(152, 93%, 88%, 0.91);
--cpd-color-alpha-green-1200: hsla(156, 97%, 76%, 0.83);
--cpd-color-alpha-green-1100: hsla(162, 98%, 57%, 0.74);
--cpd-color-alpha-green-1000: hsla(163, 99%, 55%, 0.65);
--cpd-color-alpha-green-900: hsla(164, 98%, 53%, 0.58);
--cpd-color-alpha-green-800: hsl(168, 100%, 24%, 1);
--cpd-color-alpha-green-700: hsl(165, 100%, 18%, 1);
--cpd-color-alpha-green-600: hsl(162, 100%, 14%, 1);
--cpd-color-alpha-green-500: hsl(160, 100%, 12%, 1);
--cpd-color-alpha-green-400: hsl(155, 100%, 9%, 1);
--cpd-color-alpha-green-300: hsl(151, 100%, 7%, 1);
--cpd-color-alpha-green-200: hsl(147, 100%, 6%, 1);
--cpd-color-alpha-green-100: hsl(144, 100%, 6%, 1);
--cpd-color-alpha-gray-1400: hsla(214, 78%, 98%, 0.95);
--cpd-color-alpha-gray-1300: hsla(213, 73%, 97%, 0.89);
--cpd-color-alpha-gray-1200: hsla(215, 74%, 96%, 0.79);
--cpd-color-alpha-gray-1100: hsla(215, 92%, 95%, 0.68);
--cpd-color-alpha-gray-1000: hsla(213, 93%, 94%, 0.61);
--cpd-color-alpha-gray-900: hsla(211, 94%, 94%, 0.54);
--cpd-color-alpha-gray-800: hsla(216, 100%, 94%, 0.41);
--cpd-color-alpha-gray-700: hsla(213, 85%, 95%, 0.27);
--cpd-color-alpha-gray-600: hsla(225, 46%, 95%, 0.2);
--cpd-color-alpha-gray-500: hsla(214, 41%, 97%, 0.15);
--cpd-color-alpha-gray-400: hsla(270, 37%, 93%, 0.1);
--cpd-color-alpha-gray-200: hsla(286, 31%, 82%, 0.04);
--cpd-color-alpha-gray-100: hsla(214, 10%, 86%, 0.02);
*/
/* Hover of room list items, search bar bg, space icon bg */
--cpd-color-alpha-gray-300: rgba(255, 255, 255, 0.06);
/* TODO more accent variants? */
--cpd-color-green-1400: #F1F8E9;
--cpd-color-green-1300: #DCEDC8;
--cpd-color-green-1200: #C5E1A5;
--cpd-color-green-1100: #AED581;
--cpd-color-green-1000: #9CCC65;
--cpd-color-green-900: #8BC34A;
--cpd-color-green-800: #8BC34A;
--cpd-color-green-700: #8BC34A;
--cpd-color-green-600: #8BC34A;
--cpd-color-green-500: #8BC34A;
--cpd-color-green-400: #689F38;
--cpd-color-green-300: #33691E;
--cpd-color-green-200: #33691E;
--cpd-color-green-100: #33691E;
/* TODO
--cpd-color-red-1400: #ffe9e6;
--cpd-color-red-1300: #ffd4cd;
--cpd-color-red-1200: #ffaea4;
--cpd-color-red-1100: #ff877c;
--cpd-color-red-1000: #ff665d;
--cpd-color-red-900: #fd3e3c;
--cpd-color-red-800: #d1212a;
--cpd-color-red-700: #9f0d1e;
--cpd-color-red-600: #830009;
--cpd-color-red-500: #710000;
--cpd-color-red-400: #590000;
--cpd-color-red-300: #470000;
--cpd-color-red-200: #3e0000;
--cpd-color-red-100: #370000;
*/
--cpd-color-gray-1400: #eeeeee;
--cpd-color-gray-1300: #e0e0e0;
--cpd-color-gray-1200: #b3b3b3;
--cpd-color-gray-1100: #aaaaaa;
--cpd-color-gray-1000: #9e9e9e;
--cpd-color-gray-900: #808080;
--cpd-color-gray-800: #757575;
--cpd-color-gray-700: #424242;
--cpd-color-gray-600: #424242;
--cpd-color-gray-500: #424242;
--cpd-color-gray-400: #303030;
--cpd-color-gray-300: #212121;
--cpd-color-gray-200: #212121;
--cpd-color-gray-100: #171717;
--cpd-color-theme-bg: #171717;
--cpd-color-tooltip-bg: #424242;
}
.cpd-theme-light.cpd-theme-light {
/* TODO?
--cpd-color-alpha-gray-1400: hsla(223, 64%, 2%, 0.9);
--cpd-color-alpha-gray-1300: hsla(225, 57%, 3%, 0.84);
--cpd-color-alpha-gray-1200: hsla(213, 73%, 3%, 0.77);
--cpd-color-alpha-gray-1100: hsla(215, 74%, 5%, 0.71);
--cpd-color-alpha-gray-1000: hsla(218, 79%, 6%, 0.66);
--cpd-color-alpha-gray-900: hsla(213, 83%, 7%, 0.61);
--cpd-color-alpha-gray-800: hsla(213, 87%, 9%, 0.5);
--cpd-color-alpha-gray-700: hsla(215, 96%, 10%, 0.35);
--cpd-color-alpha-gray-600: hsla(212, 97%, 12%, 0.26);
--cpd-color-alpha-gray-500: hsla(212, 87%, 15%, 0.2);
--cpd-color-alpha-gray-400: hsla(213, 90%, 20%, 0.12);
--cpd-color-alpha-gray-300: hsla(216, 89%, 18%, 0.06);
--cpd-color-alpha-gray-200: hsla(200, 41%, 36%, 0.04);
--cpd-color-alpha-gray-100: hsla(210, 48%, 41%, 0.02);
--cpd-color-alpha-green-1400: hsl(149, 100%, 7%, 1);
--cpd-color-alpha-green-1300: hsl(157, 100%, 10%, 1);
--cpd-color-alpha-green-1200: hsl(162, 100%, 14%, 1);
--cpd-color-alpha-green-1100: hsl(165, 100%, 18%, 1);
--cpd-color-alpha-green-1000: hsl(166, 100%, 21%, 1);
--cpd-color-alpha-green-900: hsl(168, 100%, 24%, 1);
--cpd-color-alpha-green-800: hsl(166, 100%, 30%, 1);
--cpd-color-alpha-green-700: hsla(163, 99%, 38%, 0.96);
--cpd-color-alpha-green-600: hsla(156, 99%, 36%, 0.56);
--cpd-color-alpha-green-500: hsla(154, 96%, 37%, 0.41);
--cpd-color-alpha-green-400: hsla(151, 93%, 37%, 0.23);
--cpd-color-alpha-green-300: hsla(150, 100%, 36%, 0.11);
--cpd-color-alpha-green-200: hsla(150, 79%, 41%, 0.06);
--cpd-color-alpha-green-100: hsla(156, 79%, 41%, 0.03);
*/
/* TODO accent variants? */
--cpd-color-green-1400: #33691E;
--cpd-color-green-1300: #33691E;
--cpd-color-green-1200: #33691E;
--cpd-color-green-1100: #33691E;
--cpd-color-green-1000: #33691E;
--cpd-color-green-900: #33691E;
--cpd-color-green-800: #33691E;
--cpd-color-green-700: #8BC34A;
--cpd-color-green-600: #8BC34A;
--cpd-color-green-500: #8BC34A;
--cpd-color-green-400: #8BC34A;
--cpd-color-green-300: #C5E1A5;
--cpd-color-green-200: #DCEDC8;
--cpd-color-green-100: #F1F8E9;
/* TODO
--cpd-color-red-1400: #450000;
--cpd-color-red-1300: #620000;
--cpd-color-red-1200: #850006;
--cpd-color-red-1100: #a4041d;
--cpd-color-red-1000: #bc0f22;
--cpd-color-red-900: #d51928;
--cpd-color-red-800: #ff3d3d;
--cpd-color-red-700: #ff8c81;
--cpd-color-red-600: #ffafa5;
--cpd-color-red-500: #ffc5bc;
--cpd-color-red-400: #ffdfda;
--cpd-color-red-300: #ffefec;
--cpd-color-red-200: #fff7f6;
--cpd-color-red-100: #fffaf9;
*/
--cpd-color-gray-1400: #212121;
--cpd-color-gray-1300: #212121;
--cpd-color-gray-1200: #424242;
--cpd-color-gray-1100: #424242;
--cpd-color-gray-1000: #616161;
--cpd-color-gray-900: #616161;
--cpd-color-gray-800: #808080;
--cpd-color-gray-700: #b3b3b3;
--cpd-color-gray-600: #b3b3b3;
--cpd-color-gray-500: #cdd3da;
--cpd-color-gray-400: #e0e0e0;
--cpd-color-gray-300: #f5f5f5;
--cpd-color-gray-200: #f5f5f5;
--cpd-color-gray-100: #fafafa;
--cpd-color-theme-bg: #ffffff;
--cpd-color-tooltip-bg: #f5f5f5;
}

View File

@ -10,8 +10,7 @@ $yarn link
$yarn install
popd
pushd matrix-react-sdk
$yarn link matrix-js-sdk
pushd compound-web
$yarn unlink &>/dev/null || true
$yarn link
$yarn install
@ -19,15 +18,31 @@ popd
pushd element-web
$yarn link matrix-js-sdk
$yarn link matrix-react-sdk
$yarn link @vector-im/compound-web
$yarn install
popd
pushd element-desktop
$yarn install
ln -s ../element-web/webapp ./ || true
# Seshat: compare https://github.com/element-hq/element-desktop/blob/develop/docs/native-node-modules.md#adding-seshat-for-search-in-e2e-encrypted-rooms
$yarn add matrix-seshat
#$yarn add electron-build-env
#$yarn run electron-build-env -- --electron "$electron_version" -- neon build matrix-seshat --release
popd
pushd i18n-helper
$yarn install
popd
# CSS overrides
cp res/css/* element-web/res/css/
# Ensure appropriate .gitignore to avoid unnecessary dirty repos
# when re-running setup. merge_upstream.sh will include this into the
# "Automatic setup commit".
if grep -q res/css/sc- element-web/.gitignore; then
echo "Skip updating .gitignore, already looks ok"
else
echo "Updating .gitignore"
echo -e "\nres/css/sc-*.css" >> element-web/.gitignore
fi

189
theme.sh Executable file
View File

@ -0,0 +1,189 @@
#!/bin/bash
set -e
shopt -s globstar
mydir="$(dirname "$(realpath "$0")")"
automatic_commit="$1"
pushd "$mydir/element-web" > /dev/null
if [[ "$automatic_commit" == [Yy]* ]]; then
# Require clean git state
uncommitted=`git status --porcelain`
if [ ! -z "$uncommitted" ]; then
echo "Uncommitted changes are present, please commit first!"
exit 1
fi
fi
M_ACCENT="#8bc34a"
M_ACCENT_DEC="139, 195, 74"
M_ACCENT_DARK="#33691e"
M_ACCENT_LIGHT="#dcedc8"
M_ALERT="#e53935"
M_LINK="#368bd6"
replace_colors() {
local f="$1"
if [[ "$f" =~ "dark" ]]; then
echo "Replacing colors (dark) for $f..."
BG_ACCENT="$M_ACCENT_DARK"
CODEBLOCK_BORDER_COLOR="#121212"
CODEBLOCK_BACKGROUND_COLOR="#121212"
PILL_COLOR="rgba(255, 255, 255, 0.15)"
PILL_HOVER_COLOR="rgba(255, 255, 255, 0.18)"
PRESENCE_OFFLINE="#e0e0e0" # not applied because not existing specifically for dark
MESSAGE_BUBBLE_BACKGROUND="#424242"
MESSAGE_BUBBLE_BACKGROUND_SELF="#303030"
MESSAGE_BUBBLE_BACKGROUND_SELECTED="#212121"
ROOMLIST_BG_COLOR="#303030"
SPACELIST_BG_COLOR="#424242"
else
echo "Replacing colors (light) for $f..."
BG_ACCENT="$M_ACCENT_LIGHT"
CODEBLOCK_BORDER_COLOR="#00000010"
CODEBLOCK_BACKGROUND_COLOR="#00000010"
PILL_COLOR="rgba(0, 0, 0, 0.13)"
PILL_HOVER_COLOR="rgba(0, 0, 0, 0.1)"
PRESENCE_OFFLINE="#bdbdbd" # for light this should actually be darker
MESSAGE_BUBBLE_BACKGROUND="#eeeeee"
MESSAGE_BUBBLE_BACKGROUND_SELF="#f1f8e9"
MESSAGE_BUBBLE_BACKGROUND_SELECTED="#e0e0e0"
ROOMLIST_BG_COLOR="#eeeeee"
SPACELIST_BG_COLOR="#fafafa"
fi
# Neutral colors
sed -i 's|#15171b|#212121|gi' "$f"
sed -i 's|#15191E|#212121|gi' "$f"
sed -i 's|#2e2f32|#212121|gi' "$f"
sed -i 's|#232f32|#212121|gi' "$f"
sed -i 's|#27303a|#212121|gi' "$f"
sed -i 's|#17191C|#212121|gi' "$f"
sed -i 's|#181b21|#303030|gi' "$f"
sed -i 's|#1A1D23|#303030|gi' "$f"
sed -i 's|#20252B|#303030|gi' "$f"
sed -i 's|#20252c|#303030|gi' "$f"
sed -i 's|#21262c|#383838|gi' "$f" # selection/hover color
sed -i 's|#238cf5|#303030|gi' "$f"
sed -i 's|#25271F|#303030|gi' "$f"
sed -i 's|#272c35|#303030|gi' "$f"
sed -i 's|#2a3039|#303030|gi' "$f"
sed -i 's|#343a46|#424242|gi' "$f"
sed -i 's|#3c4556|#424242|gi' "$f"
sed -i 's|#3d3b39|#424242|gi' "$f"
sed -i 's|#45474a|#424242|gi' "$f"
sed -i 's|#454545|#424242|gi' "$f"
sed -i 's|#2e3649|#424242|gi' "$f"
sed -i 's|#4e5054|#424242|gi' "$f"
sed -i 's|#394049|#424242|gi' "$f"
sed -i 's|#3e444c|#424242|gi' "$f"
sed -i 's|#61708b|#616161|gi' "$f"
sed -i 's|#616b7f|#616161|gi' "$f"
sed -i 's|#5c6470|#616161|gi' "$f"
sed -i 's|#545a66|#616161|gi' "$f" # pill hover bg color
sed -i 's|#737D8C|#757575|gi' "$f"
sed -i 's|#6F7882|#757575|gi' "$f"
sed -i 's|#91A1C0|#757575|gi' "$f" # icon in button color
sed -i 's|#8D99A5|#808080|gi' "$f"
sed -i 's|#8E99A4|#808080|gi' "$f" # maybe use #9e9e9e instead
sed -i 's|#8D97A5|#808080|gi' "$f"
sed -i 's|#a2a2a2|#9e9e9e|gi' "$f"
sed -i 's|#9fa9ba|#aaaaaa|gi' "$f" # maybe use #9e9e9e instead
sed -i 's|#acacac|#aaaaaa|gi' "$f" # maybe use #9e9e9e instead
sed -i 's|#B9BEC6|#b3b3b3|gi' "$f" # maybe use #bdbdbd instead
sed -i 's|#a1b2d1|#b3b3b3|gi' "$f"
sed -i 's|#A9B2BC|#b3b3b3|gi' "$f"
sed -i 's|#C1C6CD|#bdbdbd|gi' "$f"
sed -i 's|#c1c9d6|#bdbdbd|gi' "$f"
sed -i 's|#c8c8cd|#cccccc|gi' "$f" # maybe use #bdbdbd instead
# sed -i 's|#dddddd|#e0e0e0|gi' "$f" # really?
sed -i 's|#e7e7e7|#e0e0e0|gi' "$f"
sed -i 's|#e3e8f0|#e0e0e0|gi' "$f"
sed -i 's|#e9e9e9|#e0e0e0|gi' "$f"
sed -i 's|#e9edf1|#e0e0e0|gi' "$f"
sed -i 's|#e8eef5|#e0e0e0|gi' "$f"
sed -i 's|#deddfd|#e0e0e0|gi' "$f" # $location-live-secondary-color, what to use really?
sed -i 's|#edf3ff|#eeeeee|gi' "$f"
sed -i 's|#f4f6fa|#f5f5f5|gi' "$f"
sed -i 's|#f6f7f8|#f5f5f5|gi' "$f"
sed -i 's|#f2f5f8|#f5f5f5|gi' "$f"
sed -i 's|#f5f8fa|#f5f5f5|gi' "$f"
sed -i 's|#f3f8fd|#fafafa|gi' "$f"
sed -i 's|rgba(33, 38, 34,|rgba(48, 48, 48,|gi' "$f"
sed -i 's|rgba(33, 38, 44,|rgba(48, 48, 48,|gi' "$f"
sed -i 's|rgba(34, 38, 46,|rgba(48, 48, 48,|gi' "$f"
sed -i 's|rgba(38, 39, 43,|rgba(48, 48, 48,|gi' "$f"
sed -i 's|rgba(38, 40, 45,|rgba(48, 48, 48,|gi' "$f"
sed -i 's|rgba(46, 48, 51,|rgba(48, 48, 48,|gi' "$f"
sed -i 's|rgba(92, 100, 112,|rgba(97, 97, 97,|gi' "$f"
sed -i 's|rgba(141, 151, 165,|rgba(144, 144, 144,|gi' "$f"
sed -i 's|rgba(242, 245, 248,|rgba(248, 248, 248,|gi' "$f"
sed -i "s|\\(\$event-highlight-bg-color: \\).*;|\\1transparent;|gi" "$f"
sed -i "s|\\(\$preview-widget-bar-color: \\).*;|\\1#bdbdbd;|gi" "$f"
sed -i "s|\\(\$blockquote-bar-color: \\).*;|\\1#bdbdbd;|gi" "$f"
sed -i "s|\\(\$pill-bg-color: \\).*;|\\1$PILL_COLOR;|gi" "$f"
sed -i "s|\\(\$pill-hover-bg-color: \\).*;|\\1$PILL_HOVER_COLOR;|gi" "$f"
sed -i "s|\\(\$inlinecode-border-color: \\).*;|\\1$CODEBLOCK_BORDER_COLOR;|gi" "$f"
sed -i "s|\\(\$inlinecode-background-color: \\).*;|\\1$CODEBLOCK_BACKGROUND_COLOR;|gi" "$f"
sed -i "s|\\(\$codeblock-background-color: \\).*;|\\1$CODEBLOCK_BACKGROUND_COLOR;|gi" "$f"
sed -i "s|\\(\$presence-offline: \\).*;|\\1$PRESENCE_OFFLINE;|gi" "$f"
sed -i "s|\\(\$roomlist-bg-color: \\).*;|\\1$ROOMLIST_BG_COLOR;|gi" "$f"
sed -i "s|\\(\$spacePanel-bg-color: \\).*;|\\1$SPACELIST_BG_COLOR;|gi" "$f"
# Accent colors
sed -i "s|#368bd6|$M_ACCENT|gi" "$f"
sed -i "s|#ac3ba8|$M_ACCENT|gi" "$f"
sed -i "s|#0DBD8B|$M_ACCENT|gi" "$f"
sed -i "s|#e64f7a|$M_ACCENT|gi" "$f"
sed -i "s|#ff812d|$M_ACCENT|gi" "$f"
sed -i "s|#2dc2c5|$M_ACCENT|gi" "$f"
sed -i "s|#5c56f5|$M_ACCENT|gi" "$f"
sed -i "s|#74d12c|$M_ACCENT|gi" "$f"
sed -i "s|#76CFA6|$M_ACCENT|gi" "$f"
sed -i "s|#03b381|$M_ACCENT|gi" "$f"
sed -i "s|rgba(3, 179, 129,|rgba($M_ACCENT_DEC,|gi" "$f"
sed -i "s|#03b381|$M_ACCENT|gi" "$f"
sed -i "s|#FF5B55|$M_ALERT|gi" "$f"
sed -i "s|\\(\$accent-alt: \\).*;|\\1$M_LINK;|gi" "$f"
#sed -i "s|\\(\$accent-darker: \\).*;|\\1$M_ACCENT_DARK;|gi" "$f"
sed -i "s|\\(\$roomtile-default-badge-bg-color: \\).*;|\\1$M_ACCENT;|gi" "$f"
#sed -i "s|\\(\$input-focused-border-color: \\).*;|\\1\$accent;|gi" "$f" # not existing anymore, need replacement?
sed -i "s|\\(\$reaction-row-button-selected-bg-color: \\).*;|\\1$BG_ACCENT;|gi" "$f"
# e2e colors
sed -i "s|\\(\$e2e-verified-color: \\).*;|\\1$M_ACCENT;|gi" "$f"
sed -i "s|\\(\$e2e-unknown-color: \\).*;|\\1#ffc107;|gi" "$f"
sed -i "s|\\(\$e2e-unverified-color: \\).*;|\\1#ffc107;|gi" "$f"
sed -i "s|\\(\$e2e-warning-color: \\).*;|\\1$M_ALERT;|gi" "$f"
# Message bubbles
sed -i "s|\\(\$eventbubble-self-bg: \\).*;|\$eventbubble-self-bg: $MESSAGE_BUBBLE_BACKGROUND_SELF;|gi" "$f"
sed -i "s|\\(\$eventbubble-others-bg: \\).*;|\$eventbubble-others-bg: $MESSAGE_BUBBLE_BACKGROUND;|gi" "$f"
sed -i "s|\\(\$eventbubble-bg-hover: \\).*;|\$eventbubble-bg-hover: $MESSAGE_BUBBLE_BACKGROUND_SELECTED;|gi" "$f"
#sed -i "s|\\(\$eventbubble-reply-color: \\).*;$||gi" "$f"
}
replace_colors res/themes/light/css/light.pcss
replace_colors res/themes/light/css/_light.pcss
replace_colors res/themes/legacy-light/css/legacy-light.pcss
replace_colors res/themes/legacy-light/css/_legacy-light.pcss
replace_colors res/themes/dark/css/dark.pcss
replace_colors res/themes/dark/css/_dark.pcss
replace_colors res/themes/legacy-dark/css/legacy-dark.pcss
replace_colors res/themes/legacy-dark/css/_legacy-dark.pcss
for f in res/**/*.svg; do
replace_colors "$f"
done
if [[ "$automatic_commit" == [Yy]* ]]; then
# see: https://devops.stackexchange.com/a/5443
git add -A
git diff-index --quiet HEAD || git commit -m "Automatic theme update"
fi
popd > /dev/null