Compare commits

..

318 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
su-ex
2bccbdbe57
New test release v1.11.1-sc.0.test.1 2022-08-01 11:57:31 +02:00
pixelcode
5ce4f71da2 Translated using Weblate (German)
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/de/
2022-07-29 11:04:37 +02:00
Linerly
0f691d4dc6 Translated using Weblate (Indonesian)
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/id/
2022-07-17 02:04:32 +02:00
joshua
97d058da1b Translated using Weblate (Swedish)
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/sv/
2022-07-17 02:04:32 +02:00
waclaw66
a96278bc44 Translated using Weblate (Czech)
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/cs/
2022-07-17 02:04:31 +02:00
su-ex
8dfcd78f01
New test release v1.11.0-sc.0.test.2 2022-07-14 12:03:01 +02:00
su-ex
c8df36cfc6
Add new strings for sound pack 2022-07-14 12:02:48 +02:00
su-ex
c9333c24d5
New test release v1.11.0-sc.0.test.1 2022-07-07 19:01:48 +02:00
metezd
a89a4bc9e0 Translated using Weblate (Turkish)
Currently translated at 95.8% (46 of 48 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/tr/
2022-06-29 15:04:25 +02:00
metezd
01895fc35c Translated using Weblate (Turkish)
Currently translated at 39.5% (19 of 48 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/tr/
2022-06-26 16:04:24 +02:00
metezd
e0ee5eaaef Translated using Weblate (Turkish)
Currently translated at 100.0% (1 of 1 strings)

Translation: SchildiChat/element-desktop
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/element-desktop/tr/
2022-06-24 10:04:22 +02:00
Weblate
4d6909368b Added translation using Weblate (Turkish) 2022-06-22 09:02:59 +02:00
Weblate
8d2e87e3ff Added translation using Weblate (Turkish) 2022-06-22 09:02:56 +02:00
Weblate
89e4c0444e Added translation using Weblate (Turkish) 2022-06-22 09:02:54 +02:00
Linerly
cddd80ae2a Translated using Weblate (Indonesian)
Currently translated at 100.0% (48 of 48 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/id/
2022-06-21 09:04:22 +02:00
joshua
4650aa2ec1 Translated using Weblate (Swedish)
Currently translated at 100.0% (48 of 48 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/sv/
2022-06-21 09:04:22 +02:00
waclaw66
6aaa75d991 Translated using Weblate (Czech)
Currently translated at 100.0% (48 of 48 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/cs/
2022-06-21 09:04:21 +02:00
su-ex
714ea6d9e4
New test release v1.10.15-sc.0.test.2 2022-06-18 19:41:42 +02:00
su-ex
2a4d537607 Translated using Weblate (German)
Currently translated at 100.0% (48 of 48 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/de/
2022-06-18 19:40:27 +02:00
su-ex
0595d1d099
Add new border radius strings 2022-06-18 19:23:39 +02:00
su-ex
4349e1116e
New test release v1.10.15-sc.0.test.1 2022-06-16 18:43:13 +02:00
su-ex
b7dfafa250
sqlciper whyever ... 2022-06-09 19:16:41 +02:00
su-ex
50e2b95737
New test release v1.10.14-sc.0.test.1 2022-06-07 16:49:40 +02:00
su-ex
0d28fedcd1
New test release v1.10.13-sc.0.test.3 2022-06-04 19:14:31 +02:00
su-ex
67d0129df1
Update feature list 2022-06-03 10:22:16 +02:00
su-ex
7010bc8eef
New test release v1.10.13-sc.0.test.2 2022-05-30 17:41:41 +02:00
su-ex
a8d635c26f
New test release v1.10.13-sc.0.test.1 2022-05-28 15:22:24 +02:00
su-ex
dffc2ad920
Preemptively add static sqlcipher flag
See: https://github.com/vector-im/element-desktop/blob/develop/docs/native-node-modules.md#statically-linking-libsqlcipher
2022-05-28 14:24:00 +02:00
su-ex
3d5935fc27
Add some Debian build dependencies 2022-05-14 00:26:14 +02:00
su-ex
74127c8d7b
New release v1.10.12-sc.1 2022-05-13 23:01:59 +02:00
su-ex
01506eb519
New test release v1.10.12-sc.0.test.1 2022-05-11 01:56:07 +02:00
su-ex
b6ed8d444b
New test release v1.10.11-sc.0.test.3 2022-05-09 09:42:44 +02:00
su-ex
febe7e7184
Merge remote-tracking branch 'weblate/sc' into sc 2022-05-09 09:41:26 +02:00
su-ex
b110f12655
New test release v1.10.11-sc.0.test.3 2022-05-09 09:37:17 +02:00
Lynn Nakanishi Lin(林中西)
7b8af07aef Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (44 of 44 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/zh_Hans/
2022-05-05 04:55:57 +02:00
su-ex
dbda42b528
New test release v1.10.11-sc.0.test.2 2022-05-01 19:14:00 +02:00
su-ex
921f3c5a0a
New test release v1.10.11-sc.0.test.1 2022-04-30 13:52:59 +02:00
su-ex
72166a9a90
Remove reskindex 2022-04-30 13:48:37 +02:00
su-ex
3b2da6b386
New test release v1.10.10-sc.0.test.3 2022-04-30 11:59:31 +02:00
su-ex
982c2ac09b
New test release v1.10.10-sc.0.test.2 2022-04-30 11:58:48 +02:00
su-ex
58e2f34b63
New test release v1.10.10-sc.0.test.1 2022-04-16 21:36:25 +02:00
su-ex
3d67db61b6
Use signed tags 2022-04-16 21:36:25 +02:00
joshua
ad2fc85f24
Translated using Weblate (Swedish)
Currently translated at 100.0% (44 of 44 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/sv/
2022-04-16 21:36:25 +02:00
Linerly
a20f05c933
Translated using Weblate (Indonesian)
Currently translated at 100.0% (44 of 44 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/id/
2022-04-16 21:36:25 +02:00
waclaw66
3b5d16de82
Translated using Weblate (Czech)
Currently translated at 100.0% (44 of 44 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/cs/
2022-04-16 21:36:25 +02:00
su-ex
7b4678e91d
Add Debian signing key to readme 2022-04-16 16:13:26 +02:00
su-ex
fe615fa099
New test release v1.10.8-sc.0.test.2 2022-04-01 17:34:31 +02:00
su-ex
a0f99d1c86
New test release v1.10.8-sc.0.test.1 2022-04-01 13:50:19 +02:00
su-ex
1e90e778bb
Add new string for disabling home meta space 2022-04-01 13:48:40 +02:00
su-ex
0bc5275d14
New test release v1.10.7-sc.0.test.1 2022-03-17 11:14:21 +01:00
Linerly
79ac866bed Translated using Weblate (Indonesian)
Currently translated at 100.0% (43 of 43 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/id/
2022-03-16 23:52:58 +01:00
joshua
bcf9db8b8f Translated using Weblate (Swedish)
Currently translated at 100.0% (43 of 43 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/sv/
2022-03-07 11:44:58 +01:00
su-ex
dd75a20e7a Translated using Weblate (German)
Currently translated at 100.0% (43 of 43 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/de/
2022-03-07 11:44:58 +01:00
waclaw66
c07881ba34 Translated using Weblate (Czech)
Currently translated at 100.0% (43 of 43 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/cs/
2022-03-07 11:44:58 +01:00
su-ex
3957463f72
New test release v1.10.6-sc.0.test.3 2022-03-07 09:57:07 +01:00
su-ex
d0b9a59e59
Let version bump scripts add tags 2022-03-07 09:55:58 +01:00
su-ex
40694fb207
sqlcipher now statically linked 2022-03-07 09:34:07 +01:00
su-ex
5a232a27db
New test release v1.10.6-sc.0.test.2 2022-03-05 01:40:52 +01:00
su-ex
602d6bcc91
Add string 2022-03-05 01:36:42 +01:00
su-ex
768b648981
New test release v1.10.6-sc.0.test.1 2022-03-05 01:32:50 +01:00
waclaw66
909043215f Translated using Weblate (Czech)
Currently translated at 100.0% (42 of 42 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/cs/
2022-03-02 17:44:56 +01:00
Linerly
7228bf7fee Translated using Weblate (Indonesian)
Currently translated at 100.0% (42 of 42 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/id/
2022-03-01 09:44:56 +01:00
joshua
84be27839c Translated using Weblate (Swedish)
Currently translated at 100.0% (42 of 42 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/sv/
2022-03-01 09:44:56 +01:00
su-ex
c655803783
New release v1.10.4-sc.1 2022-02-27 19:45:35 +01:00
su-ex
cf10ad7893
Add string for YouTube embed player option 2022-02-27 19:37:37 +01:00
su-ex
edb8bd0a58
Merge remote-tracking branch 'weblate/sc' into sc 2022-02-27 19:35:03 +01:00
su-ex
605966fc32
Revert "Try Element nightly AUR search in encrypted rooms fix"
This reverts commit fd8bca4d20c642877546e00f7a45fe0bf3af13a3.
2022-02-27 19:24:46 +01:00
su-ex
db1d3e4e8a
Reset AUR bin pkgrel 2022-02-26 11:39:22 +01:00
mezysinc
74bb708796 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (41 of 41 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/pt_BR/
2022-02-17 21:39:01 +01:00
su-ex
3a8eecb023
New test release v1.10.3-sc.0.test.1 2022-02-15 01:36:47 +01:00
su-ex
a689c01b0e
Add map_style_url to sc config 2022-02-15 00:50:29 +01:00
su-ex
7a96f32c3f
New test release v1.10.1-sc.0.test.1 2022-02-01 19:52:34 +01:00
su-ex
867ca2ceaa
local-pkgbuild: Actually fix search in encrypted rooms 2022-01-31 23:52:13 +01:00
su-ex
57be42182b
New test release v1.10.0-sc.0.test.1 2022-01-31 23:19:40 +01:00
su-ex
47e56badc4
New test release v1.9.9-sc.0.test.1 2022-01-26 23:47:55 +01:00
su-ex
9d595d6087
Allow react sdk theme.sh being run without commit 2022-01-26 23:47:11 +01:00
su-ex
c4e17a1bc4
Let sc.0.test.0 be the initial version after a merge 2022-01-17 21:27:44 +01:00
su-ex
3c9487541b
New release v1.9.8-sc.1 2021-12-31 03:48:23 +01:00
su-ex
4a52399ec2
Always run setup to get yarn links in place (again) 2021-12-30 01:20:07 +01:00
su-ex
c27c617d14
New test release v1.9.8-sc.0.test.3 2021-12-30 00:39:29 +01:00
su-ex
764f0767c7
sc update announcement room toast now uses hardcoded alias 2021-12-30 00:39:06 +01:00
su-ex
fd8bca4d20
Try Element nightly AUR search in encrypted rooms fix
https://aur.archlinux.org/cgit/aur.git/commit/?h=element-desktop-nightly-bin&id=ca89fc1f025d30512c53abbe87cff61c7739c69b
2021-12-27 22:35:40 +01:00
su-ex
52bfca57fb
New test release v1.9.8-sc.0.test.2 2021-12-27 22:30:13 +01:00
su-ex
5dfc140993
Let version bumps autocommit everything 2021-12-27 22:29:51 +01:00
su-ex
50dde2a683
Revert "Every build after a merge is a new test build"
This reverts commit 31c746c5d22e260e919ab4afb099d025bc0499b8.
2021-12-27 22:29:13 +01:00
Shahed Hosseini
8ada69cbcd Translated using Weblate (Persian)
Currently translated at 100.0% (1 of 1 strings)

Translation: SchildiChat/element-desktop
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/element-desktop/fa/
2021-12-20 01:06:48 +01:00
su-ex
5aaedf0f19
Update submodules 2021-12-13 17:05:52 +01:00
su-ex
a03a0dd01e
New release v1.9.7-sc.1 2021-12-13 16:55:54 +01:00
su-ex
5a04ec7c3c
New test release v1.9.6-sc.0.test.3 2021-12-13 16:15:38 +01:00
su-ex
718c2a57bd
New test release v1.9.6-sc.0.test.2 2021-12-12 17:19:12 +01:00
su-ex
5abd379edb
Update Debian dependencies for bullseye 2021-12-10 13:27:45 +01:00
Lynn Nakanishi Lin(林中西)
9e03657ec4 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (41 of 41 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/zh_Hans/
2021-12-05 21:06:44 +01:00
su-ex
05e8426172
New release v1.9.5-sc.2 2021-12-03 17:28:50 +01:00
su-ex
8bbae92dce
New release v1.9.5-sc.1 2021-12-03 16:27:05 +01:00
Linerly
8d64b69523 Translated using Weblate (Indonesian)
Currently translated at 100.0% (41 of 41 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/id/
2021-12-03 14:06:43 +01:00
waclaw66
b3623fea39 Translated using Weblate (Czech)
Currently translated at 100.0% (41 of 41 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/cs/
2021-11-27 14:06:42 +01:00
Weblate
f5d6de5a99 Added translation using Weblate (Bulgarian) 2021-11-26 11:26:24 +01:00
Weblate
a574c196ca Added translation using Weblate (Bulgarian) 2021-11-26 11:26:20 +01:00
Weblate
2b11d57d03 Added translation using Weblate (Bulgarian) 2021-11-26 11:26:17 +01:00
su-ex
ae7e3c11b7 Translated using Weblate (German)
Currently translated at 100.0% (41 of 41 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/de/
2021-11-26 01:06:41 +01:00
joshua
eebf90e664 Translated using Weblate (Swedish)
Currently translated at 100.0% (41 of 41 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/sv/
2021-11-19 14:06:39 +01:00
waclaw66
74d6ac6092 Translated using Weblate (Czech)
Currently translated at 100.0% (41 of 41 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/cs/
2021-11-19 14:06:38 +01:00
Linerly
71fbf37b8a Translated using Weblate (Indonesian)
Currently translated at 100.0% (1 of 1 strings)

Translation: SchildiChat/element-desktop
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/element-desktop/id/
2021-11-17 18:11:30 +01:00
Linerly
c91c02231d Translated using Weblate (Indonesian)
Currently translated at 100.0% (38 of 38 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/id/
2021-11-17 18:11:30 +01:00
SpiritCroc
c1397c5ff1 Add string overlays for mark as (un)read 2021-11-17 16:27:56 +01:00
Lynn Nakanishi Lin
6507aa195d Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1 of 1 strings)

Translation: SchildiChat/element-desktop
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/element-desktop/zh_Hant/
2021-11-07 23:06:35 +01:00
Lynn Nakanishi Lin
80d380aa18 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (38 of 38 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/zh_Hans/
2021-11-07 23:06:35 +01:00
Lynn Nakanishi Lin
a45d2ec0dc Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1 of 1 strings)

Translation: SchildiChat/element-desktop
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/element-desktop/zh_Hans/
2021-11-07 23:06:34 +01:00
Weblate
bab64d3a11 Added translation using Weblate (Chinese (Traditional)) 2021-11-06 22:19:51 +01:00
Weblate
1c3f68a0a2 Added translation using Weblate (Chinese (Traditional)) 2021-11-06 22:19:50 +01:00
Lynn Nakanishi Lin
43bd5860f8 Added translation using Weblate (Chinese (Traditional)) 2021-11-06 22:19:48 +01:00
Weblate
b952f0c90c Added translation using Weblate (Chinese (Simplified)) 2021-11-06 22:15:35 +01:00
Weblate
9bc7439399 Added translation using Weblate (Chinese (Simplified)) 2021-11-06 22:15:27 +01:00
Lynn Nakanishi Lin
59e8830550 Added translation using Weblate (Chinese (Simplified)) 2021-11-06 22:15:24 +01:00
inkhorn
61e5e05bf7 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (1 of 1 strings)

Translation: SchildiChat/element-desktop
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/element-desktop/pt_BR/
2021-10-26 01:06:31 +02:00
inkhorn
7bbeed7e44 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (38 of 38 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/pt_BR/
2021-10-26 01:06:30 +02:00
twann
a70fbc26d5 Translated using Weblate (French)
Currently translated at 60.5% (23 of 38 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/fr/
2021-10-24 01:06:29 +02:00
Nikita Epifanov
2503792cdb Translated using Weblate (Russian)
Currently translated at 100.0% (38 of 38 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/ru/
2021-10-17 01:04:31 +02:00
dc7ia
e72f0869d8 Translated using Weblate (Swedish)
Currently translated at 94.7% (36 of 38 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/sv/
2021-10-17 01:04:31 +02:00
twann
7f11a25859 Translated using Weblate (French)
Currently translated at 21.0% (8 of 38 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/fr/
2021-10-17 01:04:31 +02:00
su-ex
5c3fe626cd
bash increment failed this way for whatever reason 2021-10-17 00:49:17 +02:00
su-ex
24803095bb
Don't rely on upstream/master 2021-10-16 23:46:56 +02:00
su-ex
31c746c5d2
Every build after a merge is a new test build 2021-10-14 18:11:21 +02:00
Govindas
079575eb20 Translated using Weblate (Lithuanian)
Currently translated at 50.0% (19 of 38 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/lt/
2021-10-11 16:24:31 +02:00
Weblate
db8da648b5 Added translation using Weblate (Indonesian) 2021-10-11 16:24:31 +02:00
Weblate
9240a11f59 Added translation using Weblate (Indonesian) 2021-10-11 16:24:31 +02:00
Weblate
57a5141051 Added translation using Weblate (Indonesian) 2021-10-11 16:24:31 +02:00
waclaw66
37622b25ea Translated using Weblate (Czech)
Currently translated at 100.0% (38 of 38 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/cs/
2021-10-11 16:24:31 +02:00
su-ex
c0e608b2a9
Merge pull request #106 from yu-re-ka/feature-unvendor-yarn2nix
nix: update nixpkgs, unvendor yarn2nix
2021-10-11 15:30:38 +02:00
Yureka
e153a52c84
nix: update nixpkgs, unvendor yarn2nix 2021-10-10 23:36:06 +02:00
su-ex
50d8b024b6
Add helper scripts 2021-10-08 17:03:28 +02:00
su-ex
bfb1270131
New release v1.9.0-sc.1 2021-10-07 23:07:18 +02:00
su-ex
5dcd48b4d5 Translated using Weblate (German)
Currently translated at 100.0% (38 of 38 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/de/
2021-10-07 23:00:31 +02:00
su-ex
bd2d3d27a3
Add some sc specific strings 2021-10-07 22:50:36 +02:00
su-ex
a1dcd4c7a3
Merge remote-tracking branch 'weblate/sc' into sc 2021-09-28 17:27:07 +02:00
su-ex
32a1898fc0
Use new helpers in merge script 2021-09-28 17:26:53 +02:00
su-ex
d674744588
Add version helpers
Close #97
Co-authored-by: Finn Behrens <me@kloenk.dev>
2021-09-28 17:23:48 +02:00
su-ex
8ecdbb82b0
Add helpers for overlaying package.json 2021-09-28 12:46:07 +02:00
Weblate
a2d5ca9656 Added translation using Weblate (Vietnamese) 2021-09-27 11:05:12 +02:00
Weblate
307541ac00 Added translation using Weblate (Vietnamese) 2021-09-27 11:05:10 +02:00
Weblate
11cef45048 Added translation using Weblate (Vietnamese) 2021-09-27 11:05:09 +02:00
su-ex
312b0ef380 Translated using Weblate (German)
Currently translated at 100.0% (33 of 33 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/de/
2021-09-23 17:54:15 +02:00
waclaw66
9ca2ebb64f Translated using Weblate (Czech)
Currently translated at 100.0% (33 of 33 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/cs/
2021-09-23 17:54:15 +02:00
waclaw66
a88415936c Translated using Weblate (Czech)
Currently translated at 100.0% (29 of 29 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/cs/
2021-09-23 17:22:27 +02:00
dc7ia
b3b5688a42 Translated using Weblate (Swedish)
Currently translated at 93.1% (27 of 29 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/sv/
2021-09-23 17:22:27 +02:00
Vib
48fca325c9 Translated using Weblate (Romanian)
Currently translated at 89.6% (26 of 29 strings)

Translation: SchildiChat/matrix-react-sdk
Translate-URL: https://weblate.bubu1.eu/projects/schildichat/matrix-react-sdk/ro/
2021-09-23 17:22:27 +02:00
su-ex
e79c17cb87
Add sc specific strings 2021-09-23 17:21:51 +02:00
123 changed files with 29396 additions and 9524 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 reskindex web desktop-common linux debian rpm pacman local-pkgbuild local-pkgbuild-install windows windows-portable
.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)
@ -43,7 +54,7 @@ CSC_NAME ?=
-include release.mk
setup:
if [ ! -L "element-desktop/webapp" ]; then ./setup.sh; fi
./setup.sh
element-desktop/build/SchildiChat.xcassets/SchildiChat.iconset: $(wildcard element-desktop/build/SchildiChat.xcassets/SchildiChat.iconset/*)
@ -60,19 +71,15 @@ icns: element-desktop/build/icon.icns element-desktop/build/dmg.icns
regenerate-i18n: setup
./regenerate_i18n.sh
reskindex: setup
$(YARN) --cwd matrix-react-sdk reskindex
$(YARN) --cwd element-web reskindex
web: export DIST_VERSION=$(WEB_OUT_DIST_VERSION)
web: setup reskindex
web: setup
cp $(CFGDIR)/config.json element-web/
$(YARN) --cwd element-web dist
echo "$(VERSION)" > element-web/webapp/version
desktop-common: web
$(YARN) --cwd element-desktop run fetch --cfgdir ''
$(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 ''
@ -118,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)
@ -157,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

120
README.md
View File

@ -1,32 +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:
- A unified chat list for both direct and group chats
- Message bubbles
- Bigger items in the room list
- &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/)
## Initial build setup
Feel free to [join the discussion on matrix](https://matrix.to/#/#schildichat-web:matrix.org).
```
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
```
<img src="https://raw.githubusercontent.com/SchildiChat/schildichat-desktop/sc/screenshots/1.png"/>
## 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>
@ -36,11 +102,12 @@ Development happens in the `sc` branch, which might be **broken at any time**!
Since Debian is usually slow to update packages on its stable releases,
some dependencies might not be recent enough to build SchildiChat.
The following are the dependencies required to build SchildiChat Web/Desktop on Debian 10:
The following are the dependencies required to build SchildiChat Web/Desktop on Debian 11 (bullseye):
```
# apt install vim curl git make gcc g++ libsqlcipher-dev pkg-config libsecret-1-dev bsdtar
# curl -sL https://deb.nodesource.com/setup_14.x | bash -
# 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_16.x | bash -
# apt update
# apt install nodejs
@ -75,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
```
@ -121,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

29
bump_release_version.sh Executable file
View File

@ -0,0 +1,29 @@
#!/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
bump_release_version
# Get version string
get_current_versions
get_versions_string
# Add everything
git add -A
git commit --allow-empty -m "New release v$versions_string"
git tag -s "v$versions_string" -m "New release v$versions_string"
popd > /dev/null

29
bump_test_version.sh Executable file
View File

@ -0,0 +1,29 @@
#!/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
bump_test_version
# Get version string
get_current_versions
get_versions_string
# Add everything
git add -A
git commit --allow-empty -m "New test release v$versions_string"
git tag -s "v$versions_string" -m "New test release v$versions_string"
popd > /dev/null

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": {
@ -27,11 +35,5 @@
"text": "Privacy Policy"
}
],
"sc_update_announcement_room": {
"room_id_or_alias": "!JwTYjASnrfLEJQGQvt:matrix.org",
"via_servers": [
"supercable.onl",
"spiritcroc.de"
]
}
"map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx"
}

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

@ -21,6 +21,7 @@ git fetch
git reset --hard origin/master
sed -i "s|^_pkgver=.*$|_pkgver=$version|" PKGBUILD
sed -i "s|^pkgrel=.*$|pkgrel=1|" PKGBUILD
sed -i "s|^sha256sums=('.*'$|sha256sums=('$sha256sum'|" PKGBUILD
makepkg --printsrcinfo > .SRCINFO

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 04d86eb9fc3805ed8925c6e5ccdb53d3c54c9931
Subproject commit 7d95337b9b4847752b4d7ffac8a894c7bdc7d7ac

@ -1 +1 @@
Subproject commit 18331cb1bc4b3783da239dd311911a039d5e0430
Subproject commit 702182d503b5afdb262634384606797dde103a4d

6
flake.lock generated
View File

@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1631731047,
"narHash": "sha256-qXEH1hyrlyghNzD0vOqwVD55OzKIfeJnluXXfYrD568=",
"lastModified": 1699380656,
"narHash": "sha256-H9kQH3J2Z15Ady3zVQsN/tXv8qnRr+p1B0eUkR1bKfE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5fe7b30633fcdc5cca2b7a1f5459b71c66ca6b88",
"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

@ -0,0 +1 @@
{}

View File

@ -1 +1,3 @@
{}
{
"Show": "نشان دادن"
}

View File

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

View File

@ -0,0 +1,3 @@
{
"Show": "Tampilkan"
}

View File

@ -0,0 +1 @@
{}

View File

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

View File

@ -0,0 +1,3 @@
{
"Show": "Göster"
}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1,3 @@
{
"Show": "显示"
}

View File

@ -0,0 +1,3 @@
{
"Show": "顯示"
}

View File

@ -0,0 +1 @@
{}

View File

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

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -14,5 +14,42 @@
"Light theme": "Světlý motiv",
"Dark theme": "Tmavý motiv",
"Add custom theme": "Přidat vlastní motiv",
"Theme in use": "Používaný motiv"
"Theme in use": "Používaný motiv",
"User name color mode": "Barevný režim uživatelského jména",
"Uniform": "Jednotný",
"PowerLevel": "Úroveň oprávnění",
"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 Ú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",
"If disabled, the space overview will be shown when switching to another space.": "Pokud je vypnuto, zobrazí se při přepnutí do jiného prostoru přehled prostorů.",
"For people": "Pro osoby",
"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.": "Pokud je zakázáno, můžete stále přidávat chaty s lidmi do osobních prostorů. Pokud je povoleno, automaticky se zobrazí všichni, kteří jsou členy daného prostoru.",
"Intermediate: medium sized avatar with single-line preview": "Střední: středně velký avatar s jednořádkovým náhledem",
"Roomy: big avatar with two-line preview": "Prostorný: velký avatar s dvouřádkovým náhledem",
"Room list style": "Styl seznamu místností",
"Compact: tiny avatar together with name and preview in one line": "Kompaktní: malý avatar spolu se jménem a náhledem v jednom řádku",
"Show advanced theme settings": "Zobrazit pokročilá nastavení motivu",
"Theme": "Motiv",
"Room list": "Seznam místností",
"Font size and typeface": "Velikost a typ písma",
"Hide advanced theme settings": "Skrýt pokročilá nastavení motivu",
"Mark rooms as unread": "Povolit označování chatů jako nepřečtených",
"Mark as unread": "Označit jako nepřečtené",
"Mark as read": "Označit jako přečtené",
"Enable YouTube embed player": "Povolí vložený přehrávač YouTube",
"Collapse additional buttons": "Sbalit další tlačítka",
"Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Úvod je užitečný pro získání přehledu o všem. Mějte na paměti, že její vypnutí může způsobit, že nebudete moci zobrazit některé místnosti.",
"Corners": "Rohy",
"Round": "Oblé",
"Extra round": "Kulaté",
"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",
"React with \"%(reaction)s\"": "Reagovat pomocí \"%(reaction)s\""
}

View File

@ -86,7 +86,7 @@
"Enable experimental, compact IRC style layout": "Kompaktes, experimentelles Layout im IRC-Stil aktivieren",
"Enable layout with message bubbles": "Layout mit Sprechblasen aktivieren",
"Show message bubbles on one side only": "Sprechblasen nur auf einer Seite anzeigen",
"Show message bubbles depending on the width either on both sides or only on one side": "Sprechblasen abhänging von der Breite auf beiden Seiten oder nur einer Seite anzeigen",
"Show message bubbles depending on the width either on both sides or only on one side": "Sprechblasen abhängig von der Breite auf beiden Seiten oder nur einer Seite anzeigen",
"%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use <desktopLink>%(brand)s Desktop</desktopLink> for encrypted messages to appear in search results.": "%(brand)s kann verschlüsselte Nachrichten nicht sicher während der Ausführung im Browser durchsuchen. Benutze <desktopLink>%(brand)s Desktop</desktopLink>, um verschlüsselte Nachrichten in den Suchergebnissen angezeigt zu bekommen.",
"Use default": "Standardeinstellungen benutzen",
"Your firewall or anti-virus is blocking the request.": "Deine Firewall oder dein Antivirenprogramm blockiert die Anfrage.",
@ -129,5 +129,27 @@
"All rooms you're in will appear in Home.": "Alle Räume, in denen du dich befindest, werden auf der Startseite angezeigt.",
"Show people in spaces": "Personen in Spaces anzeigen",
"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.": "Falls deaktiviert, kannst du trotzdem Direktnachrichten in privaten Spaces hinzufügen. Falls aktiviert, wirst du alle Mitglieder des Spaces sehen.",
"For people": "Für Personen"
"For people": "Für Personen",
"Intermediate: medium sized avatar with single-line preview": "Zwischending: mittelgroßer Avatar mit einer einzeiligen Vorschau",
"Roomy: big avatar with two-line preview": "Geräumig: großer Avatar mit einer zweizeiligen Vorschau",
"Room list style": "Stil der Raumliste",
"Compact: tiny avatar together with name and preview in one line": "Kompakt: winziger Avatar zusammen mit dem Namen und der Vorschau in einer Zeile",
"Hide advanced theme settings": "Erweiterte Designeinstellungen ausblenden",
"Theme": "Design",
"Room list": "Raumliste",
"Font size and typeface": "Schriftgröße und Schriftart",
"Show advanced theme settings": "Erweiterte Designeinstellungen anzeigen",
"Mark rooms as unread": "Erlaube Chats als ungelesen zu markieren",
"Mark as read": "Als gelesen markieren",
"Mark as unread": "Als ungelesen markieren",
"Enable YouTube embed player": "Eingebetteten YouTube-Player aktivieren",
"Collapse additional buttons": "Zusätzliche Buttons einklappen",
"Round": "Rund",
"Mixed": "Gemischt",
"Corners": "Ecken",
"Extra round": "Extra rund",
"Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Die Startseite hilft dir, einen Überblick über deine Chats zu bekommen. Bedenke, dass die Deaktivierung dazu führen kann, dass du bestimmte Räume nicht sehen kannst.",
"Classic: The same sharp sounds as Element": "Klassisch: Die gleichen scharfen Geräusche wie in Element",
"Sound pack": "Geräuschpaket",
"Schildi: Softer sounds for reduced anxiety": "Schildi: Sanftere Klänge für weniger Angstgefühle"
}

View File

@ -27,5 +27,28 @@
"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.": "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.",
"Show notification badges for People in Spaces": "Show notification badges for People in Spaces",
"Return to the room previously opened in a space": "Return to the room previously opened in a space",
"If disabled, the space overview will be shown when switching to another space.": "If disabled, the space overview will be shown when switching to another space."
"If disabled, the space overview will be shown when switching to another space.": "If disabled, the space overview will be shown when switching to another space.",
"Compact: tiny avatar together with name and preview in one line": "Compact: tiny avatar together with name and preview in one line",
"Intermediate: medium sized avatar with single-line preview": "Intermediate: medium sized avatar with single-line preview",
"Roomy: big avatar with two-line preview": "Roomy: big avatar with two-line preview",
"Room list style": "Room list style",
"Hide advanced theme settings": "Hide advanced theme settings",
"Show advanced theme settings": "Show advanced theme settings",
"Theme": "Theme",
"Room list": "Room list",
"Font size and typeface": "Font size and typeface",
"Mark rooms as unread": "Allow marking chats as unread",
"Mark as unread": "Mark as unread",
"Mark as read": "Mark as read",
"Enable YouTube embed player": "Enable YouTube embed player",
"Collapse additional buttons": "Collapse additional buttons",
"Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.",
"Corners": "Corners",
"Round": "Round",
"Extra round": "Extra round",
"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",
"React with \"%(reaction)s\"": "React with \"%(reaction)s\""
}

View File

@ -5,5 +5,24 @@
"Normal priority": "Priorité normale",
"Message layout": "Disposition des messages",
"Modern": "Moderne",
"Show people and rooms in a combined list": "Afficher les personnes et les salons dans une liste combinée"
"Show people and rooms in a combined list": "Afficher les personnes et les salons dans une liste combinée",
"Update notifications": "Mettre à jour les notifications",
"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).": "Souhaitez-vous rejoindre un salon vous notifiant à propos des nouvelles versions ? Cela est surtout utile si votre plateforme ne supporte pas les mises à jour automatiques pour SchildiChat (par ex. Windows et macOS).",
"Don't ask again": "Ne plus demander",
"System": "Système",
"Add custom theme": "Ajouter un thème personnalisé",
"Theme in use": "Thème utilisé",
"Light theme": "Thème lumineux",
"Dark theme": "Thème sombre",
"Uniform": "Uniforme",
"MXID": "MXID",
"In group chats": "Dans les chats de groupe",
"In public rooms": "Dans les salons publiques",
"All rooms you're in will appear in Home.": "Tous les salons dans lesquels vous êtes apparaîtront dans Accueil",
"Show people in spaces": "Afficher les personnes dans les espaces",
"Show notification badges for People in Spaces": "Afficher les badges de notifications pour les Personnes dans les Espaces",
"User name color mode": "Mode de couleur des noms d'utilisateur",
"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.": "Si désactivé, vous pouvez toujours ajouter Messages Directs à votre Espace Personnel. Si activé, vous verrez automatiquement toutes les personnes qui sont membres de l'Espace.",
"For people": "Pour les personnes",
"Show all rooms in Home": "Afficher tous les salons dans Accueil"
}

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

@ -0,0 +1,54 @@
{
"Normal priority": "Prioritas normal",
"Message layout": "Tata letak pesan",
"Modern": "Modern",
"Show people and rooms in a combined list": "Tampilkan pengguna dan ruangan di daftar gabungan",
"Don't ask again": "Jangan tanya lagi",
"System": "Sistem",
"Add custom theme": "Tambahkan tema kustom",
"Theme in use": "Tema digunakan",
"Light theme": "Tema terang",
"Dark theme": "Tema gelap",
"User name color mode": "Mode warna nama pengguna",
"Uniform": "Seragam",
"PowerLevel": "TingkatDaya",
"MXID": "MXID",
"In group chats": "Di grup",
"In public rooms": "Di ruangan publik",
"Show all rooms in Home": "Tampilkan semua ruangan di Beranda",
"All rooms you're in will appear in Home.": "Semua ruangan yang Anda bergabung akan ditampilkan di Beranda.",
"Show notification badges for People in Spaces": "Tampilkan lencana pemberitahuan untuk Orang di Space",
"Show people in spaces": "Tampilkan orang di space",
"For people": "Untuk orang-orang",
"Return to the room previously opened in a space": "Kembali ke ruangan yang sebelumnya dibuka di sebuah space",
"If disabled, the space overview will be shown when switching to another space.": "Jika dinonaktifkan, ikhtisar space akan ditampilkan saat ganti ke space yang lain.",
"Compact: tiny avatar together with name and preview in one line": "Kecil: avatar kecil dengan nama dan tampilan di satu baris",
"Roomy: big avatar with two-line preview": "Luas: avatar besar dengan tampilan dua baris",
"Room list style": "Gaya daftar ruangan",
"Hide advanced theme settings": "Sembunyikan pengaturan tema lanjutan",
"Show advanced theme settings": "Tampilkan pengaturan tema lanjutan",
"Theme": "Tema",
"Room list": "Daftar ruangan",
"Font size and typeface": "Ukuran fon dan jenis huruf",
"Show message bubbles on one side only": "Tampilkan gelembung pesan di satu sisi saja",
"Show message bubbles depending on the width either on both sides or only on one side": "Tampilkan gelembung pesan tergantung pada lebarnya baik di kedua sisi atau hanya di satu sisi",
"Message bubbles": "Gelembung pesan",
"Update notifications": "Notifikasi peningkatan",
"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).": "Apakah Anda ingin bergabung ke ruangan yang memberitahu Anda tentang rilis yang baru? Ini sangat berguna jika platform Anda tidak mendukung pembaruan otomatis untuk SchildiChat (mis. Windows dan macOS).",
"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.": "Jika dinonaktifkan, Anda masih dapat menambahkan Pesan Langsung ke Space Personal. Jika diaktifkan, Anda akan otomatis melihat semua orang yang juga ada di Spacenya.",
"Intermediate: medium sized avatar with single-line preview": "Sedang: avatar sedang dengan tampilan satu baris",
"Mark rooms as unread": "Perbolehkan menandai obrolan sebagai dibaca",
"Mark as unread": "Tandai sebagai belum dibaca",
"Mark as read": "Tandai sebagai dibaca",
"Enable YouTube embed player": "Aktifkan pemain YouTube tersemat",
"Collapse additional buttons": "Sembunyikan tombol tambahan",
"Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Beranda berguna untuk mendapatkan ikhtisar segalanya. Menonaktifkan Beranda mungkin dapat membuat Anda tidak dapat melihat beberapa ruangan.",
"Corners": "Sudut",
"Round": "Bulat",
"Extra round": "Ekstra bulat",
"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",
"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

@ -3,5 +3,51 @@
"Modern": "Modernus",
"Message bubbles": "Žinučių burbulai",
"Message layout": "Žinučių išdėstymas",
"Show people and rooms in a combined list": "Asmenų ir kambarių rodymas bendrame sąraše"
"Show people and rooms in a combined list": "Asmenų ir kambarių rodymas bendrame sąraše",
"Room list": "Kambarių sąrašas",
"Show message bubbles on one side only": "Rodyti žinučių burbulus tik vienoje pusėje",
"Update notifications": "Atnaujinimų pranešimai",
"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).": "Ar jūs norite prisijungti prie kambario kuris praneš jums apie atnaujinimus? Tai yra labai naudinga jei jūsų platforma nepalaiko automatinių SchildiChat atnaujinimų (pvz. Windows ir macOS).",
"Don't ask again": "Nebeklausti",
"System": "Sistema",
"Theme in use": "Tema naudojama",
"Light theme": "Šviesi tema",
"Dark theme": "Tamsi tema",
"MXID": "MXID",
"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.",
"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

@ -3,5 +3,43 @@
"Message bubbles": "Bolhas de mensagens",
"Normal priority": "Prioridade normal",
"Show message bubbles on one side only": "Mostrar bolhas de mensagem em apenas um lado",
"Show message bubbles depending on the width either on both sides or only on one side": "Mostrar bolhas de mensagem dependendo da largura de ambos os lados ou somente de um lado"
"Show message bubbles depending on the width either on both sides or only on one side": "Mostrar bolhas de mensagem dependendo da largura de ambos os lados ou somente de um lado",
"Hide advanced theme settings": "Ocultar configurações de tema avançadas",
"Show advanced theme settings": "Mostrar configurações de tema avançadas",
"Theme": "Tema",
"Room list": "Lista de salas",
"Font size and typeface": "Tamanho da fonte e tipo de letra",
"Message layout": "Layout da mensagem",
"Modern": "Moderno",
"Show people and rooms in a combined list": "Mostrar pessoas e salas em uma lista combinada",
"Update notifications": "Atualizar notificações",
"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).": "Você quer participar numa sala para ser notificado sobre novos lançamentos? Isto é especialmente útil se a sua plataforma não suportar atualizações automáticas para SchildiChat (tipo Windows e macOS).",
"Don't ask again": "Não pergunte novamente",
"System": "Sistema",
"Add custom theme": "Adicionar tema personalizado",
"Theme in use": "Tema em uso",
"Dark theme": "Tema escuro",
"Light theme": "Tema claro",
"Uniform": "comum",
"PowerLevel": "Nível de poder",
"MXID": "MXID",
"In group chats": "Em conversas de grupo",
"In public rooms": "Em salas públicas",
"All rooms you're in will appear in Home.": "Todos as salas em que você estiver aparecerão em Início.",
"Show all rooms in Home": "Mostrar todos as salas em Início",
"Show people in spaces": "Mostrar as pessoas em espaços",
"Show notification badges for People in Spaces": "Mostrar símbolo de notificação para Pessoas em Espaços",
"Return to the room previously opened in a space": "Retornar à sala previamente aberta em um espaço",
"If disabled, the space overview will be shown when switching to another space.": "Se desativado, a visão geral do espaço será mostrada ao mudar para outro espaço.",
"For people": "Para pessoas",
"User name color mode": "Modo de cor baseado em nome do usuário",
"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.": "Se estiver desativado, você ainda pode adicionar Mensagens Diretas aos Espaços Pessoais. Se ativado, você verá automaticamente todos os que são membros do Espaço.",
"Compact: tiny avatar together with name and preview in one line": "Compacto: avatar minúsculo junto com o nome e visualização em uma linha",
"Intermediate: medium sized avatar with single-line preview": "Intermédio: avatar de tamanho médio com visualização de uma linha",
"Roomy: big avatar with two-line preview": "Amplo: grande avatar com visualização em duas linhas",
"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",
"Collapse additional buttons": "Recolher botões adicionais"
}

View File

@ -6,5 +6,23 @@
"Message layout": "Așezarea mesajului",
"Modern": "Modern",
"Show people and rooms in a combined list": "Arată persoanele și camerele într-o listă combinată",
"Update notifications": "Actualizează notificările"
"Update notifications": "Actualizează notificările",
"Don't ask again": "Nu întreba din nou",
"System": "Sistem",
"Add custom theme": "Adaugă o temă proprie",
"Theme in use": "Temă în folosință",
"Light theme": "Temă luminoasă",
"Dark theme": "Temă întunecată",
"Uniform": "Uniform",
"In group chats": "În chaturile de grup",
"In public rooms": "În camerele publice",
"All rooms you're in will appear in Home.": "Toate camerele în care te afli vor apărea în Pagina principala",
"Show people in spaces": "Arată persoanele în spații",
"Show notification badges for People in Spaces": "Arată simboluri de notificare pentru Persoanele din Spații",
"Return to the room previously opened in a space": "Întoarce-te spre camera deschisă ultima oară într-un spațiu",
"If disabled, the space overview will be shown when switching to another space.": "Dacă e dezactivat, se va arăta vederea de ansamblu a spațiului când schimbi pe alt spațiu.",
"For people": "Pentru persoane",
"User name color mode": "Modul culorilor utilizatorilor",
"Show all rooms in Home": "Arată toate camerele în Pagina principală",
"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.": "Dacă e dezactivat, încă poți adăuga Mesaje Directe în Spații Personale. Dacă e activat, vei vedea toți membrii Spațiului automat."
}

View File

@ -9,5 +9,33 @@
"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).": "Вы хотите присоединиться к комнате, уведомляющей вас о новых релизах? Это особенно полезно, если ваша платформа не поддерживает автоматические обновления для SchildiChat (например, Windows и macOS).",
"Show people and rooms in a combined list": "Показать людей и комнаты в объединенном списке",
"Update notifications": "Уведомления об обновлениях",
"Don't ask again": "Не спрашивать больше"
"Don't ask again": "Не спрашивать больше",
"Hide advanced theme settings": "Скрыть расширенные настройки темы",
"Show advanced theme settings": "Показать расширенные настройки темы",
"Theme": "Тема",
"Room list": "Список комнат",
"Font size and typeface": "Размер и начертание шрифта",
"Light theme": "Светлая тема",
"Dark theme": "Тёмная тема",
"System": "Система",
"Add custom theme": "Добавить пользовательскую тему",
"Theme in use": "Используемая тема",
"In group chats": "В групповых чатах",
"In public rooms": "В публичных комнатах",
"PowerLevel": "Уровень прав",
"MXID": "MXID",
"Show all rooms in Home": "Показать все комнаты в Начале",
"Show notification badges for People in Spaces": "Показывать значки уведомлений для людей в пространствах",
"Return to the room previously opened in a space": "Возврат в комнату, ранее открытую в пространстве",
"If disabled, the space overview will be shown when switching to another space.": "Если отключить, то при переключении на другое пространство будет отображаться обзор пространства.",
"Uniform": "Одинаковый",
"All rooms you're in will appear in Home.": "Все комнаты, в которых вы находитесь, будут отображаться в Начале.",
"Show people in spaces": "Показать людей в пространствах",
"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.": "Если этот параметр отключен, вы по-прежнему можете добавлять личные сообщения в личные пространства. Если включено, вы будете автоматически видеть всех, кто является членом пространства.",
"Compact: tiny avatar together with name and preview in one line": "Компактный: крошечный аватар вместе с именем и превью в одной строке",
"User name color mode": "Имя пользователя цветовой режим",
"For people": "Для людей",
"Room list style": "Стиль списка комнат",
"Intermediate: medium sized avatar with single-line preview": "Средний: аватар среднего размера с однострочным превью",
"Roomy: big avatar with two-line preview": "Вместительный: большой аватар с двухстрочным превью"
}

View File

@ -13,5 +13,41 @@
"Dark theme": "Mörkt tema",
"Show message bubbles on one side only": "Visa meddelandebubblor bara på ena sidan",
"Show message bubbles depending on the width either on both sides or only on one side": "Visa meddelandebubblor beroende på bredden antingen på båda sidor eller bara på ena sidan",
"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).": "Vill du gå med i ett rum som informerar dig om nya utgåvor? Detta är särskilt användbart om din plattform inte stöder automatiska uppdateringar för SchildiChat (t.ex.Windows och 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).": "Vill du gå med i ett rum som informerar dig om nya utgåvor? Detta är särskilt användbart om din plattform inte stöder automatiska uppdateringar för SchildiChat (t.ex.Windows och macOS).",
"Uniform": "Enhetlig",
"PowerLevel": "PowerLevel",
"MXID": "MXID",
"In group chats": "I gruppchattar",
"In public rooms": "I offentliga rum",
"Show all rooms in Home": "Visa alla rum i Home",
"Show people in spaces": "Visa människor i Spaces",
"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.": "Om den är inaktiverad kan du fortfarande lägga till direktmeddelanden till personliga utrymmen. Om den är aktiverad ser du automatiskt alla som är medlem i Space.",
"Show notification badges for People in Spaces": "Visa meddelandemärken för personer in Spaces",
"Return to the room previously opened in a space": "Återgå till rummet som tidigare öppnats i ett Space",
"If disabled, the space overview will be shown when switching to another space.": "Om den är inaktiverad visas utrymmeöversikten när du byter till ett annat utrymme.",
"For people": "För folk",
"User name color mode": "Användarnamns färgläge",
"All rooms you're in will appear in Home.": "Alla rum du befinner dig i visas i Home.",
"Show advanced theme settings": "Visa avancerade temainställningar",
"Theme": "tema",
"Room list": "Rumslista",
"Font size and typeface": "Teckenstorlek och typsnitt",
"Hide advanced theme settings": "Dölj avancerade temainställningar",
"Compact: tiny avatar together with name and preview in one line": "Kompakt: liten avatar tillsammans med namn och förhandsvisning på en rad",
"Intermediate: medium sized avatar with single-line preview": "Medel: medelstor avatar med enradig förhandsvisning",
"Roomy: big avatar with two-line preview": "Rymlig: stor avatar med förhandsvisning med två rader",
"Room list style": "Rumslista stil",
"Mark as unread": "markera som oläst",
"Mark as read": "markera som läst",
"Mark rooms as unread": "Tillåt att chattar markeras som olästa",
"Enable YouTube embed player": "Aktivera inbäddad YouTube-spelare",
"Collapse additional buttons": "Dölj ytterligare knappar",
"Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Home är användbart för att få en överblick över allt. Tänk på att om du inaktiverar den kan du inte se vissa rum.",
"Round": "Runda",
"Extra round": "Extrarunda",
"Mixed": "Blandad",
"Corners": "Hörn",
"Sound pack": "Ljudpaket",
"Schildi: Softer sounds for reduced anxiety": "Schildi: Mjukare ljud för minskad ångest",
"Classic: The same sharp sounds as Element": "Klassisk: Samma skarpa ljud som Element"
}

View File

@ -0,0 +1,48 @@
{
"Show message bubbles on one side only": "Mesaj baloncuklarını yalnızca bir tarafta göster",
"Show message bubbles depending on the width either on both sides or only on one side": "Genişliğe bağlı olarak mesaj baloncuklarını her iki tarafta veya sadece bir tarafta göster",
"Message bubbles": "Mesaj baloncukları",
"Normal priority": "Normal öncelik",
"Message layout": "Mesaj düzeni",
"Modern": "Modern",
"Update notifications": "Güncelleme bildirimleri",
"Don't ask again": "Bir daha sorma",
"System": "Sistem",
"Add custom theme": "Özel tema ekle",
"Theme in use": "Tema kullanımda",
"Light theme": "Açık tema",
"Dark theme": "Koyu tema",
"Uniform": "Düzenli",
"For people": "İnsanlar için",
"In group chats": "Grup sohbetlerinde",
"In public rooms": "Halka açık odalarda",
"Show people and rooms in a combined list": "Kişileri ve odaları birleşik bir listede göster",
"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).": "Yeni sürümler hakkında sizi bilgilendiren bir odaya katılmak ister misiniz? Bu oda özellikle platformunuz SchildiChat için otomatik güncellemeleri desteklemiyorsa (ör. Windows ve macOS) kullanışlıdır.",
"If disabled, the space overview will be shown when switching to another space.": "Devre dışı bırakılırsa, başka bir alana geçerken alana ilişkin genel görünüm gösterilir.",
"Mark as unread": "Okunmadı olarak işaretle",
"User name color mode": "Kullanıcı adı renk modu",
"Show people in spaces": "İnsanları alanlarda göster",
"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.": "Devre dışı bırakılmışsa, kişisel alanlara direkt mesajlar eklemeye devam edebilirsiniz. Etkinleştirilirse, alana üye olan herkesi otomatik olarak görürsünüz.",
"Show notification badges for People in Spaces": "Alanlardaki Kişiler için bildirim rozetlerini göster",
"Return to the room previously opened in a space": "Bir alanda daha önce açılmış olan odaya geri dön",
"Compact: tiny avatar together with name and preview in one line": "Sıkıştırılmış: tek satırda isim ve önizleme ile birlikte küçük avatar",
"Intermediate: medium sized avatar with single-line preview": "Orta: tek satır önizlemeli orta boy avatar",
"Roomy: big avatar with two-line preview": "Ferah: iki satırlık önizleme ile büyük avatar",
"Room list style": "Oda listesi tarzı",
"Hide advanced theme settings": "Gelişmiş tema ayarlarını gizle",
"Show all rooms in Home": "Ana sayfadaki tüm odaları göster",
"All rooms you're in will appear in Home.": "Bulunduğunuz tüm odalar ana sayfada görünecektir.",
"Show advanced theme settings": "Gelişmiş tema ayarlarını göster",
"Theme": "Tema",
"Font size and typeface": "Yazı tipi boyutu ve yazı karakteri",
"Room list": "Oda sıralaması",
"Mark rooms as unread": "Sohbetleri okunmamış olarak işaretlemeye izin ver",
"Mark as read": "Okundu olarak işaretle",
"Enable YouTube embed player": "YouTube gömülü oynatıcıyı etkinleştir",
"Collapse additional buttons": "Ek düğmeleri daralt",
"Corners": "Köşeler",
"Round": "Yuvarlak",
"Extra round": "Fazladan yuvarlak",
"Mixed": "Karışık",
"Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Ana sayfa, her şeye genel bir bakış elde etmek için kullanışlıdır. Devre dışı bırakıldığında belirli odaları göremeyebileceğinizi unutmayın."
}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1,54 @@
{
"Message bubbles": "消息气泡",
"Normal priority": "正常优先级",
"Message layout": "消息布局",
"Modern": "现代",
"Show people and rooms in a combined list": "使用组合列表显示所有人员和房间",
"Update notifications": "更新通知",
"Don't ask again": "不再询问",
"System": "系统",
"Add custom theme": "添加自定义主题",
"Theme in use": "当前主题",
"User name color mode": "用户名颜色模式",
"Light theme": "浅色主题",
"Dark theme": "深色主题",
"Uniform": "单色",
"In group chats": "群聊",
"For people": "私聊",
"All rooms you're in will appear in Home.": "你加入的所有聊天室都会显示在主页。",
"In public rooms": "公共聊天室",
"Show people in spaces": "显示空间中的人",
"Show all rooms in Home": "在主页显示所有聊天室",
"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.": "如果禁用,你仍可以将私聊添加至个人空间。若启用,你将自动看见空间中的每位成员。",
"Show notification badges for People in Spaces": "为空间中的人显示通知标志",
"PowerLevel": "根据权限等级自动设定",
"MXID": "根据 Matrix ID 自动设定",
"Return to the room previously opened in a space": "返回先前在空间中打开的聊天室",
"If disabled, the space overview will be shown when switching to another space.": "如果禁用,切换到其他空间时将显示空间概览。",
"Compact: tiny avatar together with name and preview in one line": "紧凑:在一行中包含小头像、用户名和消息预览",
"Intermediate: medium sized avatar with single-line preview": "中等:中等大小头像,用户名与消息预览在头像旁以单行宽度分列",
"Roomy: big avatar with two-line preview": "宽敞:大尺寸头像,用户名与消息预览在头像旁以双行宽度分列",
"Hide advanced theme settings": "隐藏高级主题设置",
"Show advanced theme settings": "显示高级主题设置",
"Theme": "主题",
"Room list": "聊天室列表",
"Font size and typeface": "字号与字型",
"Show message bubbles on one side only": "仅在一侧显示消息气泡",
"Room list style": "聊天室列表样式",
"Show message bubbles depending on the width either on both sides or only on one side": "根据窗口大小智能切换消息气泡的显示样式",
"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).": "您想加入一个用来通知版本更新的房间吗?如果您的平台不支持自动更新 SchildiChat例如 Windows 和 macOS这将非常有用。",
"Mark as read": "标记为已读",
"Mark rooms as unread": "允许将聊天记录标记为未读",
"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": "折叠额外的按钮",
"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": "边缘"
}

View File

@ -0,0 +1 @@
{}

View File

@ -10,7 +10,7 @@ pkgdesc="SchildiChat is a Matrix client based on Element with a more traditional
arch=('x86_64')
url="https://schildi.chat"
license=('Apache')
depends=('sqlcipher')
depends=()
provides=('---appName---')
conflicts=('---appName---')
source=("---debName---"
@ -22,4 +22,5 @@ package() {
msg2 "Extracting the data.tar.xz..."
bsdtar -xf data.tar.xz -C "$pkgdir/"
install -Dm755 "${srcdir}"/---appName---.sh "${pkgdir}"/usr/bin/---appName---
sed -i 's|^Exec=.*|Exec=/usr/bin/---appName--- %u|' "${pkgdir}"/usr/share/applications/---appName---.desktop
}

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

@ -1 +0,0 @@
Subproject commit 8a14b9e2872acc80faedf5ed3bd25705f114947a

View File

@ -1,6 +1,10 @@
#!/bin/bash
SCHILDI_ROOT="$(dirname "$(realpath "$0")")"
if [ -z "$SCHILDI_ROOT" ]; then
SCHILDI_ROOT="$(dirname "$(realpath "$0")")"
fi
branch=${BRANCH:-"lite"}
i18n_helper_path="$SCHILDI_ROOT/i18n-helper/index.js"
i18n_path="src/i18n/strings"
@ -10,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
@ -30,23 +34,32 @@ add_upstream() {
}
forall_repos() {
pushd "$SCHILDI_ROOT/matrix-js-sdk"
"$@"
popd
pushd "$SCHILDI_ROOT/matrix-react-sdk"
"$@"
popd
pushd "$SCHILDI_ROOT/element-web"
"$@"
popd
pushd "$SCHILDI_ROOT/element-desktop"
"$@"
popd
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() {
for repo in "element-web" "element-desktop"; do
pushd "$SCHILDI_ROOT/$repo" > /dev/null
"$@"
popd > /dev/null
done
}
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
@ -70,9 +83,10 @@ check_clean_git() {
revert_i18n_changes() {
local i18n_path="$1"
local skip_commit="$2"
local revision="$2"
local skip_commit="$3"
git checkout upstream/master -- "$i18n_path"
git checkout "$revision" -- "$i18n_path"
if [[ "$skip_commit" != [Yy]* ]]; then
git commit -m "Automatic i18n reversion" || true
@ -89,27 +103,22 @@ apply_i18n_changes() {
automatic_i18n_reversion() {
local skip_commit="$1"
pushd "$SCHILDI_ROOT/matrix-react-sdk" > /dev/null
revert_i18n_changes "$i18n_path" $skip_commit
popd > /dev/null
local current_upstream_tag
get_current_upstream_tag
local current_mxjssdk_tag
get_current_mxsdk_tags
pushd "$SCHILDI_ROOT/element-web" > /dev/null
revert_i18n_changes "$i18n_path" $skip_commit
revert_i18n_changes "$i18n_path" "$current_upstream_tag" "$skip_commit"
popd > /dev/null
pushd "$SCHILDI_ROOT/element-desktop" > /dev/null
revert_i18n_changes "$i18n_path" $skip_commit
revert_i18n_changes "$i18n_path" "$current_upstream_tag" "$skip_commit"
popd > /dev/null
}
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
@ -124,3 +133,164 @@ automatic_i18n_adjustment() {
apply_i18n_changes "$i18n_path"
popd > /dev/null
}
get_current_versions() {
local version=`cat "$SCHILDI_ROOT/element-web/package.json" | jq .version -r`
if [[ "$version" =~ ([0-9\.]*)(-sc\.([0-9]+)(\.test.([0-9]+))?)? ]]; then
upstream="${BASH_REMATCH[1]}"
release="${BASH_REMATCH[3]}"
test="${BASH_REMATCH[5]}"
fi
versions=("${upstream:-"0.0.1"}" "${release:-"0"}" "${test:-"0"}")
}
get_versions_string() {
versions_string="${versions[0]}-sc.${versions[1]}"
# both zero means the initial version after a merge
if [[ ${versions[1]} -eq 0 || ${versions[2]} -gt 0 ]]; then
versions_string+=".test.${versions[2]}"
fi
}
write_version() {
local file="$1"
local versions_string
get_versions_string
new_content=`jq --arg version "$versions_string" '.version = $version' "$file"`
echo "$new_content" > "$file"
git add "$file"
git commit -m "Update version to $versions_string" || true
}
bump_test_version() {
local versions
get_current_versions
# increment test version
versions[2]=$((versions[2] + 1))
forelement_repos write_version "package.json"
}
bump_release_version() {
local versions
get_current_versions
# increment release version
versions[1]=$((versions[1] + 1))
# set test version to 0
versions[2]=0
forelement_repos write_version "package.json"
}
revert_packagejson_changes() {
local path="$1"
local revision="$2"
local skip_commit="$3"
git checkout "$revision" -- "$path"
if [[ "$skip_commit" != [Yy]* ]]; then
git commit -m "Automatic package.json reversion" || true
fi
}
apply_packagejson_overlay() {
local orig_path="$1"
local overlay_path="../overlay/$(basename "$PWD")/package.json"
# see: https://stackoverflow.com/a/24904276
new_content=`jq -s '.[0] * .[1]' "$orig_path" "$overlay_path" | sed 's| | |g'`
echo "$new_content" > "$orig_path"
git add "$orig_path"
git commit -m "Automatic package.json adjustment" || true
}
automatic_packagejson_reversion() {
local skip_commit="$1"
local current_upstream_tag
get_current_upstream_tag
forelement_repos revert_packagejson_changes "package.json" "$current_upstream_tag" "$skip_commit"
}
automatic_packagejson_adjustment() {
local versions
get_current_versions
forelement_repos apply_packagejson_overlay "package.json"
forelement_repos write_version "package.json"
}
get_latest_upstream_tag() {
pushd "$SCHILDI_ROOT/element-web" > /dev/null
git fetch upstream
latest_upstream_tag=`git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags | sed -nr 's|refs/tags/(v[0-9]+(\.[0-9]+(\.[0-9]+)?)?) .*|\1|p' | tail -n 1`
popd > /dev/null
}
get_current_upstream_tag() {
local versions
get_current_versions
current_upstream_tag="v${versions[0]}"
}
get_current_mxsdk_tags() {
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

@ -3,36 +3,56 @@
set -e
mydir="$(dirname "$(realpath "$0")")"
branch=${BRANCH:-"sc"}
# 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
# Automatic i18n reversion
automatic_i18n_reversion
# Merge
# Fetch upstream
forall_repos git fetch upstream
forall_repos git merge upstream/master
# Check if specific version to merge passed
if [ -z "$1" ]; then
get_latest_upstream_tag
else
latest_upstream_tag="$1"
fi
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 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 i18n adjustment
automatic_i18n_adjustment
./apply_patches.sh
# Automatic theme update
pushd "matrix-react-sdk" > /dev/null
./theme.sh
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,22 +0,0 @@
final: prev: {
yarn2nix-sc = final.callPackage ./yarn2nix { };
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 {
inherit (final.yarn2nix-sc) mkYarnModules;
};
schildichat-desktop = final.callPackage ./schildichat-desktop.nix {
inherit (final.yarn2nix-sc) mkYarnPackage;
inherit (final.darwin.apple_sdk.frameworks) Security AppKit CoreServices;
};
schildichat-desktop-wayland = final.callPackage ./schildichat-desktop.nix {
inherit (final.yarn2nix-sc) mkYarnPackage;
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

@ -1,674 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

View File

@ -1,90 +0,0 @@
#!/usr/bin/env node
const fs = require('fs')
const lockfile = require('@yarnpkg/lockfile')
const { docopt } = require('docopt')
const deepEqual = require('deep-equal')
const R = require('ramda')
const fixPkgAddMissingSha1 = require('../lib/fixPkgAddMissingSha1')
const mapObjIndexedReturnArray = require('../lib/mapObjIndexedReturnArray')
const generateNix = require('../lib/generateNix')
const USAGE = `
Usage: yarn2nix [options]
Options:
-h --help Shows this help.
--no-nix Hide the nix output
--no-patch Don't patch the lockfile if hashes are missing
--lockfile=FILE Specify path to the lockfile [default: ./yarn.lock].
--builtin-fetchgit Use builtin fetchGit for git dependencies to support on-the-fly generation of yarn.nix without an internet connection
`
const options = docopt(USAGE)
const data = fs.readFileSync(options['--lockfile'], 'utf8')
// json example:
// {
// type:'success',
// object:{
// 'abbrev@1':{
// version:'1.0.9',
// resolved:'https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135'
// },
// 'shell-quote@git+https://github.com/srghma/node-shell-quote.git#without_unlicenced_jsonify':{
// version:'1.6.0',
// resolved:'git+https://github.com/srghma/node-shell-quote.git#0aa381896e0cd7409ead15fd444f225807a61e0a'
// },
// '@graphile/plugin-supporter@git+https://1234user:1234pass@git.graphile.com/git/users/1234user/postgraphile-supporter.git':{
// version:'1.6.0',
// resolved:'git+https://1234user:1234pass@git.graphile.com/git/users/1234user/postgraphile-supporter.git#1234commit'
// },
// }
// }
const json = lockfile.parse(data)
if (json.type !== 'success') {
throw new Error('yarn.lock parse error')
}
// Check for missing hashes in the yarn.lock and patch if necessary
let pkgs = R.pipe(
mapObjIndexedReturnArray((value, key) => ({
...value,
nameWithVersion: key,
})),
R.uniqBy(R.prop('resolved')),
)(json.object)
;(async () => {
if (!options['--no-patch']) {
pkgs = await R.map(fixPkgAddMissingSha1, pkgs)
}
const origJson = lockfile.parse(data)
if (!deepEqual(origJson, json)) {
console.error('found changes in the lockfile', options['--lockfile'])
if (options['--no-patch']) {
console.error('...aborting')
process.exit(1)
}
fs.writeFileSync(options['--lockfile'], lockfile.stringify(json.object))
}
if (!options['--no-nix']) {
// print to stdout
console.log(generateNix(pkgs, options['--builtin-fetchgit']))
}
})().catch(error => {
console.error(error)
process.exit(1)
})

View File

@ -1,429 +0,0 @@
{ pkgs ? import <nixpkgs> {}
, nodejs ? pkgs.nodejs
, yarn ? pkgs.yarn
}:
let
inherit (pkgs) stdenv lib fetchurl linkFarm callPackage git rsync makeWrapper runCommandLocal;
compose = f: g: x: f (g x);
id = x: x;
composeAll = builtins.foldl' compose id;
in rec {
# Export yarn again to make it easier to find out which yarn was used.
inherit yarn;
# Re-export pkgs
inherit pkgs;
unlessNull = item: alt:
if item == null then alt else item;
reformatPackageName = pname:
let
# regex adapted from `validate-npm-package-name`
# will produce 3 parts e.g.
# "@someorg/somepackage" -> [ "@someorg/" "someorg" "somepackage" ]
# "somepackage" -> [ null null "somepackage" ]
parts = builtins.tail (builtins.match "^(@([^/]+)/)?([^/]+)$" pname);
# if there is no organisation we need to filter out null values.
non-null = builtins.filter (x: x != null) parts;
in builtins.concatStringsSep "-" non-null;
# https://docs.npmjs.com/files/package.json#license
# TODO: support expression syntax (OR, AND, etc)
spdxLicense = licstr:
if licstr == "UNLICENSED" then
lib.licenses.unfree
else
lib.findFirst
(l: l ? spdxId && l.spdxId == licstr)
{ shortName = licstr; }
(builtins.attrValues lib.licenses);
# Generates the yarn.nix from the yarn.lock file
mkYarnNix = { yarnLock, flags ? [] }:
pkgs.runCommand "yarn.nix" {}
"${yarn2nix}/bin/yarn2nix --lockfile ${yarnLock} --no-patch --builtin-fetchgit ${lib.escapeShellArgs flags} > $out";
# Loads the generated offline cache. This will be used by yarn as
# the package source.
importOfflineCache = yarnNix:
let
pkg = callPackage yarnNix { };
in
pkg.offline_cache;
defaultYarnFlags = [
"--offline"
"--frozen-lockfile"
"--ignore-engines"
"--ignore-scripts"
];
mkYarnModules = {
name ? "${pname}-${version}", # safe name and version, e.g. testcompany-one-modules-1.0.0
pname, # original name, e.g @testcompany/one
version,
packageJSON,
yarnLock,
yarnNix ? mkYarnNix { inherit yarnLock; },
yarnFlags ? defaultYarnFlags,
pkgConfig ? {},
preBuild ? "",
postBuild ? "",
workspaceDependencies ? [], # List of yarn packages
}:
let
offlineCache = importOfflineCache yarnNix;
extraBuildInputs = (lib.flatten (builtins.map (key:
pkgConfig.${key}.buildInputs or []
) (builtins.attrNames pkgConfig)));
postInstall = (builtins.map (key:
if (pkgConfig.${key} ? postInstall) then
''
for f in $(find -L -path '*/node_modules/${key}' -type d); do
(cd "$f" && (${pkgConfig.${key}.postInstall}))
done
''
else
""
) (builtins.attrNames pkgConfig));
workspaceJSON = pkgs.writeText
"${name}-workspace-package.json"
(builtins.toJSON { private = true; workspaces = ["deps/**"]; }); # scoped packages need second splat
workspaceDependencyLinks = lib.concatMapStringsSep "\n"
(dep: ''
mkdir -p "deps/${dep.pname}"
ln -sf ${dep.packageJSON} "deps/${dep.pname}/package.json"
'')
workspaceDependencies;
in stdenv.mkDerivation {
inherit preBuild postBuild name;
dontUnpack = true;
dontInstall = true;
buildInputs = [ yarn nodejs git ] ++ extraBuildInputs;
configurePhase = ''
# Yarn writes cache directories etc to $HOME.
export HOME=$PWD/yarn_home
'';
buildPhase = ''
runHook preBuild
mkdir -p "deps/${pname}"
cp ${packageJSON} "deps/${pname}/package.json"
cp ${workspaceJSON} ./package.json
cp ${yarnLock} ./yarn.lock
chmod +w ./yarn.lock
yarn config --offline set yarn-offline-mirror ${offlineCache}
# Do not look up in the registry, but in the offline cache.
${fixup_yarn_lock}/bin/fixup_yarn_lock yarn.lock
${workspaceDependencyLinks}
yarn install ${lib.escapeShellArgs yarnFlags}
${lib.concatStringsSep "\n" postInstall}
mkdir $out
mv node_modules $out/
mv deps $out/
patchShebangs $out
runHook postBuild
'';
};
# This can be used as a shellHook in mkYarnPackage. It brings the built node_modules into
# the shell-hook environment.
linkNodeModulesHook = ''
if [[ -d node_modules || -L node_modules ]]; then
echo "./node_modules is present. Replacing."
rm -rf node_modules
fi
ln -s "$node_modules" node_modules
'';
mkYarnWorkspace = {
src,
packageJSON ? src + "/package.json",
yarnLock ? src + "/yarn.lock",
packageOverrides ? {},
...
}@attrs:
let
package = lib.importJSON packageJSON;
packageGlobs = package.workspaces;
globElemToRegex = lib.replaceStrings ["*"] [".*"];
# PathGlob -> [PathGlobElem]
splitGlob = lib.splitString "/";
# Path -> [PathGlobElem] -> [Path]
# Note: Only directories are included, everything else is filtered out
expandGlobList = base: globElems:
let
elemRegex = globElemToRegex (lib.head globElems);
rest = lib.tail globElems;
children = lib.attrNames (lib.filterAttrs (name: type: type == "directory") (builtins.readDir base));
matchingChildren = lib.filter (child: builtins.match elemRegex child != null) children;
in if globElems == []
then [ base ]
else lib.concatMap (child: expandGlobList (base+("/"+child)) rest) matchingChildren;
# Path -> PathGlob -> [Path]
expandGlob = base: glob: expandGlobList base (splitGlob glob);
packagePaths = lib.concatMap (expandGlob src) packageGlobs;
packages = lib.listToAttrs (map (src:
let
packageJSON = src + "/package.json";
package = lib.importJSON packageJSON;
allDependencies = lib.foldl (a: b: a // b) {} (map (field: lib.attrByPath [field] {} package) ["dependencies" "devDependencies"]);
# { [name: String] : { pname : String, packageJSON : String, ... } } -> { [pname: String] : version } -> [{ pname : String, packageJSON : String, ... }]
getWorkspaceDependencies = packages: allDependencies:
let
packageList = lib.attrValues packages;
in
composeAll [
(lib.filter (x: x != null))
(lib.mapAttrsToList (pname: _version: lib.findFirst (package: package.pname == pname) null packageList))
] allDependencies;
workspaceDependencies = getWorkspaceDependencies packages allDependencies;
name = reformatPackageName package.name;
in {
inherit name;
value = mkYarnPackage (
builtins.removeAttrs attrs ["packageOverrides"]
// { inherit src packageJSON yarnLock workspaceDependencies; }
// lib.attrByPath [name] {} packageOverrides
);
})
packagePaths
);
in packages;
mkYarnPackage = {
name ? null,
src,
packageJSON ? src + "/package.json",
yarnLock ? src + "/yarn.lock",
yarnNix ? mkYarnNix { inherit yarnLock; },
yarnFlags ? defaultYarnFlags,
yarnPreBuild ? "",
yarnPostBuild ? "",
pkgConfig ? {},
extraBuildInputs ? [],
publishBinsFor ? null,
workspaceDependencies ? [], # List of yarnPackages
...
}@attrs:
let
package = lib.importJSON packageJSON;
pname = package.name;
safeName = reformatPackageName pname;
version = attrs.version or package.version;
baseName = unlessNull name "${safeName}-${version}";
workspaceDependenciesTransitive = lib.unique (
(lib.flatten (builtins.map (dep: dep.workspaceDependencies) workspaceDependencies))
++ workspaceDependencies
);
deps = mkYarnModules {
name = "${safeName}-modules-${version}";
preBuild = yarnPreBuild;
postBuild = yarnPostBuild;
workspaceDependencies = workspaceDependenciesTransitive;
inherit packageJSON pname version yarnLock yarnNix yarnFlags pkgConfig;
};
publishBinsFor_ = unlessNull publishBinsFor [pname];
linkDirFunction = ''
linkDirToDirLinks() {
target=$1
if [ ! -f "$target" ]; then
mkdir -p "$target"
elif [ -L "$target" ]; then
local new=$(mktemp -d)
trueSource=$(realpath "$target")
if [ "$(ls $trueSource | wc -l)" -gt 0 ]; then
ln -s $trueSource/* $new/
fi
rm -r "$target"
mv "$new" "$target"
fi
}
'';
workspaceDependencyCopy = lib.concatMapStringsSep "\n"
(dep: ''
# ensure any existing scope directory is not a symlink
linkDirToDirLinks "$(dirname node_modules/${dep.pname})"
mkdir -p "deps/${dep.pname}"
tar -xf "${dep}/tarballs/${dep.name}.tgz" --directory "deps/${dep.pname}" --strip-components=1
if [ ! -e "deps/${dep.pname}/node_modules" ]; then
ln -s "${deps}/deps/${dep.pname}/node_modules" "deps/${dep.pname}/node_modules"
fi
'')
workspaceDependenciesTransitive;
in stdenv.mkDerivation (builtins.removeAttrs attrs ["yarnNix" "pkgConfig" "workspaceDependencies"] // {
inherit src pname;
name = baseName;
buildInputs = [ yarn nodejs rsync ] ++ extraBuildInputs;
node_modules = deps + "/node_modules";
configurePhase = attrs.configurePhase or ''
runHook preConfigure
for localDir in npm-packages-offline-cache node_modules; do
if [[ -d $localDir || -L $localDir ]]; then
echo "$localDir dir present. Removing."
rm -rf $localDir
fi
done
# move convent of . to ./deps/${pname}
mv $PWD $NIX_BUILD_TOP/temp
mkdir -p "$PWD/deps/${pname}"
rm -fd "$PWD/deps/${pname}"
mv $NIX_BUILD_TOP/temp "$PWD/deps/${pname}"
cd $PWD
ln -s ${deps}/deps/${pname}/node_modules "deps/${pname}/node_modules"
cp -r $node_modules node_modules
chmod -R +w node_modules
${linkDirFunction}
linkDirToDirLinks "$(dirname node_modules/${pname})"
ln -s "deps/${pname}" "node_modules/${pname}"
${workspaceDependencyCopy}
# Help yarn commands run in other phases find the package
echo "--cwd deps/${pname}" > .yarnrc
runHook postConfigure
'';
# Replace this phase on frontend packages where only the generated
# files are an interesting output.
installPhase = attrs.installPhase or ''
runHook preInstall
mkdir -p $out/{bin,libexec/${pname}}
mv node_modules $out/libexec/${pname}/node_modules
mv deps $out/libexec/${pname}/deps
node ${./internal/fixup_bin.js} $out/bin $out/libexec/${pname}/node_modules ${lib.concatStringsSep " " publishBinsFor_}
runHook postInstall
'';
doDist = true;
distPhase = attrs.distPhase or ''
# pack command ignores cwd option
rm -f .yarnrc
cd $out/libexec/${pname}/deps/${pname}
mkdir -p $out/tarballs/
yarn pack --offline --ignore-scripts --filename $out/tarballs/${baseName}.tgz
'';
passthru = {
inherit pname package packageJSON deps;
workspaceDependencies = workspaceDependenciesTransitive;
} // (attrs.passthru or {});
meta = {
inherit (nodejs.meta) platforms;
description = packageJSON.description or "";
homepage = packageJSON.homepage or "";
version = packageJSON.version or "";
license = if packageJSON ? license then spdxLicense packageJSON.license else "";
} // (attrs.meta or {});
});
yarn2nix = mkYarnPackage {
src =
let
src = ./.;
mkFilter = { dirsToInclude, filesToInclude, root }: path: type:
let
inherit (pkgs.lib) any flip elem hasSuffix hasPrefix elemAt splitString;
subpath = elemAt (splitString "${toString root}/" path) 1;
spdir = elemAt (splitString "/" subpath) 0;
in elem spdir dirsToInclude ||
(type == "regular" && elem subpath filesToInclude);
in builtins.filterSource
(mkFilter {
dirsToInclude = ["bin" "lib"];
filesToInclude = ["package.json" "yarn.lock"];
root = src;
})
src;
# yarn2nix is the only package that requires the yarnNix option.
# All the other projects can auto-generate that file.
yarnNix = ./yarn.nix;
# Using the filter above and importing package.json from the filtered
# source results in an error in restricted mode. To circumvent this,
# we import package.json from the unfiltered source
packageJSON = ./package.json;
yarnFlags = defaultYarnFlags ++ ["--production=true"];
buildPhase = ''
source ${./nix/expectShFunctions.sh}
expectFilePresent ./node_modules/.yarn-integrity
# check dependencies are installed
expectFilePresent ./node_modules/@yarnpkg/lockfile/package.json
# check devDependencies are not installed
expectFileOrDirAbsent ./node_modules/.bin/eslint
expectFileOrDirAbsent ./node_modules/eslint/package.json
'';
};
fixup_yarn_lock = runCommandLocal "fixup_yarn_lock"
{
buildInputs = [ nodejs ];
} ''
mkdir -p $out/lib
mkdir -p $out/bin
cp ${./lib/urlToName.js} $out/lib/urlToName.js
cp ${./internal/fixup_yarn_lock.js} $out/bin/fixup_yarn_lock
patchShebangs $out
'';
}

View File

@ -1,53 +0,0 @@
#!/usr/bin/env node
/* Usage:
* node fixup_bin.js <bin_dir> <modules_dir> [<bin_pkg_1>, <bin_pkg_2> ... ]
*/
const fs = require('fs')
const path = require('path')
const derivationBinPath = process.argv[2]
const nodeModules = process.argv[3]
const packagesToPublishBin = process.argv.slice(4)
function processPackage(name) {
console.log('fixup_bin: Processing ', name)
const packagePath = `${nodeModules}/${name}`
const packageJsonPath = `${packagePath}/package.json`
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath))
if (!packageJson.bin) {
console.log('fixup_bin: No binaries provided')
return
}
// There are two alternative syntaxes for `bin`
// a) just a plain string, in which case the name of the package is the name of the binary.
// b) an object, where key is the name of the eventual binary, and the value the path to that binary.
if (typeof packageJson.bin === 'string') {
const binName = packageJson.bin
packageJson.bin = {}
packageJson.bin[packageJson.name] = binName
}
// eslint-disable-next-line no-restricted-syntax, guard-for-in
for (const binName in packageJson.bin) {
const binPath = packageJson.bin[binName]
const normalizedBinName = binName.replace('@', '').replace('/', '-')
const targetPath = path.normalize(`${packagePath}/${binPath}`)
const createdPath = `${derivationBinPath}/${normalizedBinName}`
console.log(
`fixup_bin: creating link ${createdPath} that points to ${targetPath}`,
)
fs.symlinkSync(targetPath, createdPath)
}
}
packagesToPublishBin.forEach(pkg => {
processPackage(pkg)
})

View File

@ -1,49 +0,0 @@
#!/usr/bin/env node
/* Usage:
* node fixup_yarn_lock.js yarn.lock
*/
const fs = require('fs')
const readline = require('readline')
const urlToName = require('../lib/urlToName')
const yarnLockPath = process.argv[2]
const readFile = readline.createInterface({
input: fs.createReadStream(yarnLockPath, { encoding: 'utf8' }),
// Note: we use the crlfDelay option to recognize all instances of CR LF
// ('\r\n') in input.txt as a single line break.
crlfDelay: Infinity,
terminal: false, // input and output should be treated like a TTY
})
const result = []
readFile
.on('line', line => {
const arr = line.match(/^ {2}resolved "([^#]+)#([^"]+)"$/)
if (arr !== null) {
const [_, url, shaOrRev] = arr
const fileName = urlToName(url)
result.push(` resolved "${fileName}#${shaOrRev}"`)
} else {
result.push(line)
}
})
.on('close', () => {
fs.writeFile(yarnLockPath, result.join('\n'), 'utf8', err => {
if (err) {
console.error(
'fixup_yarn_lock: fatal error when trying to write to yarn.lock',
err,
)
}
})
})

View File

@ -1,66 +0,0 @@
const https = require('https')
const crypto = require('crypto')
// TODO:
// make test case where getSha1 function is used, i.e. the case when resolved is without sha1?
// consider using https://github.com/request/request-promise-native
function getSha1(url) {
return new Promise((resolve, reject) => {
https.get(url, res => {
const { statusCode } = res
const hash = crypto.createHash('sha1')
if (statusCode !== 200) {
const err = new Error(`Request Failed.\nStatus Code: ${statusCode}`)
// consume response data to free up memory
res.resume()
reject(err)
}
res.on('data', chunk => {
hash.update(chunk)
})
res.on('end', () => {
resolve(hash.digest('hex'))
})
res.on('error', reject)
})
})
}
// Object -> Object
async function fixPkgAddMissingSha1(pkg) {
// local dependency
if (!pkg.resolved) {
console.error(
`yarn2nix: can't find "resolved" field for package ${
pkg.nameWithVersion
}, you probably required it using "file:...", this feature is not supported, ignoring`,
)
return pkg
}
const [url, sha1] = pkg.resolved.split('#', 2)
if (sha1) {
return pkg
}
// if there is no sha1 in resolved url
// (this could happen if yarn.lock was generated by older version of yarn)
// - request it from registry by https and add it to pkg
const newSha1 = await getSha1(url)
return {
...pkg,
resolved: `${url}#${newSha1}`,
}
}
module.exports = fixPkgAddMissingSha1

View File

@ -1,129 +0,0 @@
const R = require('ramda')
const urlToName = require('./urlToName')
const { execFileSync } = require('child_process')
// fetchgit transforms
//
// "shell-quote@git+https://github.com/srghma/node-shell-quote.git#without_unlicenced_jsonify":
// version "1.6.0"
// resolved "git+https://github.com/srghma/node-shell-quote.git#1234commit"
//
// to
//
// builtins.fetchGit {
// url = "https://github.com/srghma/node-shell-quote.git";
// ref = "without_unlicenced_jsonify";
// rev = "1234commit";
// }
//
// and transforms
//
// "@graphile/plugin-supporter@git+https://1234user:1234pass@git.graphile.com/git/users/1234user/postgraphile-supporter.git":
// version "0.6.0"
// resolved "git+https://1234user:1234pass@git.graphile.com/git/users/1234user/postgraphile-supporter.git#1234commit"
//
// to
//
// builtins.fetchGit {
// url = "https://1234user:1234pass@git.graphile.com/git/users/1234user/postgraphile-supporter.git";
// ref = "master";
// rev = "1234commit";
// }
function prefetchgit(url, rev) {
return JSON.parse(
execFileSync("nix-prefetch-git", ["--rev", rev, url], {
stdio: [ "ignore", "pipe", "ignore" ],
timeout: 60000,
})
).sha256
}
function fetchgit(fileName, url, rev, branch, builtinFetchGit) {
return ` {
name = "${fileName}";
path =
let${builtinFetchGit ? `
repo = builtins.fetchGit {
url = "${url}";
ref = "${branch}";
rev = "${rev}";
};
` : `
repo = fetchgit {
url = "${url}";
rev = "${rev}";
sha256 = "${prefetchgit(url, rev)}";
};
`}in
runCommand "${fileName}" { buildInputs = [gnutar]; } ''
# Set u+w because tar-fs can't unpack archives with read-only dirs
# https://github.com/mafintosh/tar-fs/issues/79
tar cf $out --mode u+w -C \${repo} .
'';
}`
}
function fetchLockedDep(builtinFetchGit) {
return function (pkg) {
let { nameWithVersion, resolved } = pkg
if (!resolved) {
console.error(
`yarn2nix: can't find "resolved" field for package ${nameWithVersion}, you probably required it using "file:...", this feature is not supported, ignoring`,
)
return ''
}
const fileName = urlToName(resolved.split('#')[0])
if (resolved.startsWith('https://codeload.github.com/')) {
let s = resolved.split('/')
resolved = `git+https://github.com/${s[3]}/${s[4]}.git#${s[6]}`
}
const [url, sha1OrRev] = resolved.split('#')
if (url.startsWith('git+') || url.startsWith("git:")) {
const rev = sha1OrRev
const [_, branch] = nameWithVersion.split('#')
const urlForGit = url.replace(/^git\+/, '')
return fetchgit(fileName, urlForGit, rev, branch || 'master', builtinFetchGit)
}
const sha = sha1OrRev
return ` {
name = "${fileName}";
path = fetchurl {
name = "${fileName}";
url = "${url}";
sha1 = "${sha}";
};
}`
}
}
const HEAD = `
{ fetchurl, fetchgit, linkFarm, runCommand, gnutar }: rec {
offline_cache = linkFarm "offline" packages;
packages = [
`.trim()
// Object -> String
function generateNix(pkgs, builtinFetchGit) {
const nameWithVersionAndPackageNix = R.map(fetchLockedDep(builtinFetchGit), pkgs)
const packagesDefinition = R.join(
'\n',
R.values(nameWithVersionAndPackageNix),
)
return R.join('\n', [HEAD, packagesDefinition, ' ];', '}'])
}
module.exports = generateNix

View File

@ -1,21 +0,0 @@
const _curry2 = require('ramda/src/internal/_curry2')
const _map = require('ramda/src/internal/_map')
const keys = require('ramda/src/keys')
// mapObjIndexed: ((v, k, {k: v}) → v') → {k: v} → {k: v'}
// mapObjIndexedReturnArray: ((v, k, {k: v}) → v') → {k: v} → [v']
/*
* @example
*
* const xyz = { x: 1, y: 2, z: 3 };
* const prependKeyAndDouble = (num, key, obj) => key + (num * 2);
*
* mapObjIndexedReturnArray(prependKeyAndDouble, xyz); //=> ['x2', 'y4', 'z6']
*/
const mapObjIndexedReturnArray = _curry2((fn, obj) =>
_map(key => fn(obj[key], key, obj), keys(obj)),
)
module.exports = mapObjIndexedReturnArray

View File

@ -1,29 +0,0 @@
const path = require('path')
// String -> String
// @url examples:
// - https://registry.yarnpkg.com/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz
// - https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz
// - git+https://github.com/srghma/node-shell-quote.git
// - git+https://1234user:1234pass@git.graphile.com/git/users/1234user/postgraphile-supporter.git
// - https://codeload.github.com/Gargron/emoji-mart/tar.gz/934f314fd8322276765066e8a2a6be5bac61b1cf
function urlToName(url) {
// Yarn generates `codeload.github.com` tarball URLs, where the final
// path component (file name) is the git hash. See #111.
// See also https://github.com/yarnpkg/yarn/blob/989a7406/src/resolvers/exotics/github-resolver.js#L24-L26
let isCodeloadGitTarballUrl =
url.startsWith('https://codeload.github.com/') && url.includes('/tar.gz/')
if (url.startsWith('git+') || isCodeloadGitTarballUrl) {
return path.basename(url)
}
return url
.replace(/https:\/\/(.)*(.com)\//g, '') // prevents having long directory names
.replace(/[@/%:-]/g, '_') // replace @ and : and - and % characters with underscore
}
module.exports = urlToName

View File

@ -1,30 +0,0 @@
expectFilePresent () {
if [ -f "$1" ]; then
echo "Test passed: file is present - $1"
else
echo "Test failed: file is absent - $1"
exit 1
fi
}
expectFileOrDirAbsent () {
if [ ! -e "$1" ];
then
echo "Test passed: file or dir is absent - $1"
else
echo "Test failed: file or dir is present - $1"
exit 1
fi
}
expectEqual () {
if [ "$1" == "$2" ];
then
echo "Test passed: output is equal to expected_output"
else
echo "Test failed: output is not equal to expected_output:"
echo " output - $1"
echo " expected_output - $2"
exit 1
fi
}

View File

@ -1,47 +0,0 @@
{
"name": "yarn2nix",
"version": "1.0.0",
"description": "Convert packages.json and yarn.lock into a Nix expression that downloads all the dependencies",
"main": "index.js",
"repository": ".",
"author": "Maarten Hoogendoorn <maarten@moretea.nl>",
"license": "MIT",
"scripts": {
"yarn2nix": "bin/yarn2nix.js",
"format": "prettier-eslint --write './**/*.{js,jsx,json}'",
"lint": "eslint ."
},
"bin": {
"yarn2nix": "bin/yarn2nix.js"
},
"engines" : {
"node" : ">=8.0.0"
},
"dependencies": {
"@yarnpkg/lockfile": "^1.1.0",
"deep-equal": "^1.0.1",
"docopt": "^0.6.2",
"ramda": "^0.26.1"
},
"devDependencies": {
"babel-eslint": "^10.0.1",
"eslint": "^5.11.1",
"eslint-config-airbnb": "^17.1.0",
"eslint-config-prettier": "^3.3.0",
"eslint-config-standard": "^12.0.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jsx-a11y": "^6.1.2",
"eslint-plugin-node": "^8.0.0",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-react": "^7.12.2",
"eslint-plugin-standard": "^4.0.0",
"husky": "^1.3.1",
"lint-staged": "^8.1.0",
"prettier-eslint-cli": "^4.7.1"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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

Some files were not shown because too many files have changed in this diff Show More