forked from github/schildichat-desktop
Compare commits
23 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
cb58eccf49 | ||
![]() |
181508997e | ||
![]() |
d021e3be2f | ||
![]() |
5d594f2b2f | ||
![]() |
0b863757b7 | ||
![]() |
87d8647809 | ||
![]() |
3879b01f08 | ||
![]() |
7cce0b17c4 | ||
![]() |
23e464c0b8 | ||
![]() |
842f7ba052 | ||
![]() |
d7cb37b62a | ||
![]() |
c5a7b893c6 | ||
![]() |
183883d1f9 | ||
![]() |
5c65524d5d | ||
![]() |
f34f4e0c73 | ||
![]() |
dbac606c42 | ||
![]() |
47e586b009 | ||
![]() |
0a0c30abd9 | ||
![]() |
d3d9d0351d | ||
![]() |
2fadcc908d | ||
![]() |
bd1c6dab82 | ||
![]() |
39976378ec | ||
![]() |
8d436d4c6f |
6
.gitmodules
vendored
6
.gitmodules
vendored
@ -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
|
||||
|
@ -1,5 +1,5 @@
|
||||
ARG NODE_VERSION
|
||||
FROM docker.io/node:${NODE_VERSION}-bookworm
|
||||
FROM docker.io/node:${NODE_VERSION}-buster
|
||||
|
||||
RUN apt-get -qq update && apt-get -qq install --no-install-recommends -y \
|
||||
curl \
|
||||
@ -14,15 +14,13 @@ RUN apt-get -qq update && apt-get -qq install --no-install-recommends -y \
|
||||
make \
|
||||
openssl \
|
||||
pkg-config \
|
||||
python3 \
|
||||
rpm \
|
||||
python \
|
||||
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
|
||||
WORKDIR /project
|
@ -1,6 +1,6 @@
|
||||
FROM docker.io/fedora:40
|
||||
FROM docker.io/fedora:38
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
# node setup
|
||||
ARG NODE_VERSION
|
||||
@ -12,11 +12,10 @@ 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
|
||||
WORKDIR /project
|
35
FEATURES.md
35
FEATURES.md
@ -1,35 +0,0 @@
|
||||
# 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)
|
29
Makefile
29
Makefile
@ -3,7 +3,6 @@
|
||||
.PHONY: macos-common macos macos-mas macos-release macos-mas-release icns
|
||||
.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
|
||||
|
||||
@ -13,7 +12,7 @@ all: web
|
||||
|
||||
YARN ?= yarnpkg
|
||||
CONTAINER_ENGINE ?= podman
|
||||
NODE_VERSION ?= 22
|
||||
NODE_VERSION ?= 18
|
||||
|
||||
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|')
|
||||
@ -22,8 +21,7 @@ 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)/element-$(WEB_OUT_DIST_VERSION).tar.gz
|
||||
OUT_WEB := $(WEB_OUT)/$(WEB_APP_NAME)-$(WEB_OUT_DIST_VERSION).tar.gz
|
||||
|
||||
DESKTOP_OUT := element-desktop/dist
|
||||
OUT_DEB64 := $(DESKTOP_OUT)/$(DESKTOP_APP_NAME)_$(VERSION)_amd64.deb
|
||||
@ -125,7 +123,7 @@ local-pkgbuild-install: local-pkgbuild
|
||||
|
||||
web-release: web
|
||||
mkdir -p $(CURRENT_RELEASE_DIR)
|
||||
cp $(OUT_WEB) $(CURRENT_RELEASE_DIR)/${WEB_APP_NAME}-$(WEB_OUT_DIST_VERSION).tar.gz
|
||||
cp $(OUT_WEB) $(CURRENT_RELEASE_DIR)
|
||||
|
||||
debian-release: debian
|
||||
mkdir -p $(CURRENT_RELEASE_DIR)
|
||||
@ -179,10 +177,6 @@ container-web-release: container-build-debian
|
||||
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
|
||||
|
||||
@ -192,17 +186,14 @@ container-appimage-release: container-build-debian
|
||||
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-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 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
|
||||
|
||||
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
|
||||
bom.lock: element-desktop/yarn.lock element-web/yarn.lock matrix-js-sdk/yarn.lock matrix-react-sdk/yarn.lock
|
||||
./build-bom.sh
|
||||
bom: bom.lock
|
||||
|
||||
@ -211,16 +202,16 @@ fix_yarn_cache:
|
||||
|
||||
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 || true
|
||||
rm -f element-desktop/webapp
|
||||
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
|
||||
rm -rf element-desktop/node_modules element-web/node_modules matrix-react-sdk/node_modules matrix-js-sdk/node_modules i18n-helper/node_modules element-desktop/.hak
|
||||
|
||||
fixup: undo_setup fix_yarn_cache
|
||||
make setup
|
||||
|
122
README.md
122
README.md
@ -1,98 +1,45 @@
|
||||
# SchildiChat Web/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).
|
||||
SchildiChat Web/Desktop is a fork of Element [Web](https://github.com/vector-im/element-web)/[Desktop](https://github.com/vector-im/element-desktop).
|
||||
|
||||
The most important changes of SchildiChat Web/Desktop compared to Element Web/Desktop are:
|
||||
- Customizable room list style (compact single line, intermediate and roomy with two line preview)
|
||||
- Option to show direct and group chats in a combined list
|
||||
- Improved theming options
|
||||
- Message bubbles
|
||||
- … and more!
|
||||
|
||||
## Initial build setup
|
||||
Desktop downloads with installation instructions are listed on our website: [https://schildi.chat/desktop](https://schildi.chat/desktop)
|
||||
Hosted web variant: [https://app.schildi.chat/](https://app.schildi.chat/)
|
||||
|
||||
Feel free to [join the discussion on matrix](https://matrix.to/#/#schildichat-web:matrix.org).
|
||||
|
||||
<img src="https://raw.githubusercontent.com/SchildiChat/schildichat-desktop/sc/screenshots/1.png"/>
|
||||
|
||||
<details>
|
||||
<summary>Public key used to sign the Debian packages</summary>
|
||||
|
||||
```
|
||||
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
|
||||
pub rsa4096 2020-12-08 [SC]
|
||||
560BB70DA86A6633A39CEC6023358905FE294D01
|
||||
uid Super apt repo key <apt@supercable.onl>
|
||||
sub rsa4096 2020-12-08 [E]
|
||||
```
|
||||
|
||||
## 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
|
||||
</details>
|
||||
|
||||
|
||||
## Building SchildiChat Web/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.
|
||||
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.
|
||||
|
||||
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><-- 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> (most of the development happens here)
|
||||
|-- <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/matrix-js-sdk">matrix-js-sdk</a> (Matrix client js sdk)
|
||||
</code></pre>
|
||||
|
||||
@ -142,6 +89,17 @@ 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
|
||||
|
||||
```
|
||||
@ -177,13 +135,3 @@ 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
26
RELEASE.md
@ -1,26 +0,0 @@
|
||||
# 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
|
||||
```
|
@ -1,38 +0,0 @@
|
||||
#!/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
|
@ -5,6 +5,8 @@ cat element-web/yarn.lock >> bom.lock
|
||||
echo "" >> bom.lock
|
||||
cat matrix-js-sdk/yarn.lock >> bom.lock
|
||||
echo "" >> bom.lock
|
||||
cat matrix-react-sdk/yarn.lock >> bom.lock
|
||||
echo "" >> bom.lock
|
||||
|
||||
# matrix-seshat
|
||||
cat << EOF >> bom.lock
|
||||
|
@ -1 +0,0 @@
|
||||
Subproject commit 57ee5bfdf13c58ca3bcbc2d0eb2993d7b4a0b89d
|
@ -10,21 +10,12 @@ set -e
|
||||
version="$1"
|
||||
releasepath="$2"
|
||||
|
||||
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
|
||||
github_api_token=`cat ~/githubtoken`
|
||||
release_notes_file="/tmp/scrn.md"
|
||||
|
||||
owner=SchildiChat
|
||||
repo=schildichat-desktop
|
||||
target=lite
|
||||
target=master
|
||||
|
||||
# Define variables
|
||||
GH_API="https://api.github.com"
|
||||
@ -46,7 +37,7 @@ json_string=`jq -n --arg tag "v$version" --arg target "$target" --arg body "$rel
|
||||
name: $tag,
|
||||
body: $body,
|
||||
draft: true,
|
||||
prerelease: true
|
||||
prerelease: false
|
||||
}'`
|
||||
# echo "$json_string"
|
||||
res=`echo "$json_string" | curl -sH "$AUTH" $GH_REPO/releases -d @-`
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 7d95337b9b4847752b4d7ffac8a894c7bdc7d7ac
|
||||
Subproject commit fb2931eb808d99995a4cd5ef168e8d4697f39e3f
|
@ -1 +1 @@
|
||||
Subproject commit 702182d503b5afdb262634384606797dde103a4d
|
||||
Subproject commit 904c6378682d314fe91bf536b6207c6d5e320459
|
@ -1,44 +0,0 @@
|
||||
#!/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
|
@ -1,815 +0,0 @@
|
||||
<?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>
|
Before Width: | Height: | Size: 27 KiB |
@ -1,784 +0,0 @@
|
||||
<?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>
|
Before Width: | Height: | Size: 26 KiB |
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 68 KiB |
@ -1,101 +0,0 @@
|
||||
#!/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 +0,0 @@
|
||||
ic_launcher_sc.svg
|
@ -1,3 +1 @@
|
||||
{
|
||||
"Welcome to SchildiChat": "Welcome to SchildiChat"
|
||||
}
|
||||
{}
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 5f3f08071fbab8bc6af08b0d940189a513f572e2
|
||||
Subproject commit 9bbc329635e1e31f5e72e93ef87ccd90b43de538
|
1
matrix-react-sdk
Submodule
1
matrix-react-sdk
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 5a1c34750acf0c8da2a8ba25b6f79e9ac115230e
|
125
merge_helpers.sh
125
merge_helpers.sh
@ -1,10 +1,8 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -z "$SCHILDI_ROOT" ]; then
|
||||
SCHILDI_ROOT="$(dirname "$(realpath "$0")")"
|
||||
fi
|
||||
SCHILDI_ROOT="$(dirname "$(realpath "$0")")"
|
||||
|
||||
branch=${BRANCH:-"lite"}
|
||||
branch=${BRANCH:-"sc"}
|
||||
|
||||
i18n_helper_path="$SCHILDI_ROOT/i18n-helper/index.js"
|
||||
i18n_path="src/i18n/strings"
|
||||
@ -14,16 +12,16 @@ yarn=yarnpkg
|
||||
|
||||
add_upstream() {
|
||||
if git remote | grep -q upstream; then
|
||||
echo "Remote named upstream already exists, deleting..."
|
||||
git remote remove upstream
|
||||
echo "Remote named upstream already exists!"
|
||||
return 1
|
||||
fi
|
||||
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
|
||||
local sc_remote="$(git remote -v|grep origin|grep fetch|sed 's|.*\t\(.*\) (fetch)|\1|')"
|
||||
if echo "$sc_remote" | grep -q matrix; then
|
||||
# matrix.org repo
|
||||
local upstream_remote="$(echo "$sc_remote" | sed 's|SchildiChat|matrix-org|')"
|
||||
elif echo "$sc_remote" | grep -q "element\\|compound-web"; then
|
||||
elif echo "$sc_remote" | grep -q element; then
|
||||
# vector-im repo
|
||||
local upstream_remote="$(echo "$sc_remote" | sed 's|SchildiChat|element-hq|')"
|
||||
local upstream_remote="$(echo "$sc_remote" | sed 's|SchildiChat|vector-im|')"
|
||||
else
|
||||
echo "Don't know upstream repo for $sc_remote"
|
||||
return 1
|
||||
@ -34,32 +32,36 @@ add_upstream() {
|
||||
}
|
||||
|
||||
forall_repos() {
|
||||
for repo in "matrix-js-sdk" "element-web" "element-desktop" "compound-web"; do
|
||||
pushd "$SCHILDI_ROOT/$repo" > /dev/null
|
||||
"$@"
|
||||
popd > /dev/null
|
||||
done
|
||||
pushd "$SCHILDI_ROOT/matrix-js-sdk" > /dev/null
|
||||
"$@"
|
||||
popd > /dev/null
|
||||
|
||||
pushd "$SCHILDI_ROOT/matrix-react-sdk" > /dev/null
|
||||
"$@"
|
||||
popd > /dev/null
|
||||
|
||||
pushd "$SCHILDI_ROOT/element-web" > /dev/null
|
||||
"$@"
|
||||
popd > /dev/null
|
||||
|
||||
pushd "$SCHILDI_ROOT/element-desktop" > /dev/null
|
||||
"$@"
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
forelement_repos() {
|
||||
for repo in "element-web" "element-desktop"; do
|
||||
pushd "$SCHILDI_ROOT/$repo" > /dev/null
|
||||
"$@"
|
||||
popd > /dev/null
|
||||
done
|
||||
}
|
||||
pushd "$SCHILDI_ROOT/element-web" > /dev/null
|
||||
"$@"
|
||||
popd > /dev/null
|
||||
|
||||
for_main_repos() {
|
||||
for repo in "matrix-js-sdk" "element-web" "element-desktop"; do
|
||||
pushd "$SCHILDI_ROOT/$repo" > /dev/null
|
||||
"$@"
|
||||
popd > /dev/null
|
||||
done
|
||||
pushd "$SCHILDI_ROOT/element-desktop" > /dev/null
|
||||
"$@"
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
ensure_yes() {
|
||||
read -e -p "$1 [y/N] " choice
|
||||
|
||||
|
||||
if [[ "$choice" != [Yy]* ]]; then
|
||||
exit 1
|
||||
fi
|
||||
@ -107,8 +109,13 @@ automatic_i18n_reversion() {
|
||||
get_current_upstream_tag
|
||||
|
||||
local current_mxjssdk_tag
|
||||
local current_mxreactsdk_tag
|
||||
get_current_mxsdk_tags
|
||||
|
||||
pushd "$SCHILDI_ROOT/matrix-react-sdk" > /dev/null
|
||||
revert_i18n_changes "$i18n_path" "$current_mxreactsdk_tag" "$skip_commit"
|
||||
popd > /dev/null
|
||||
|
||||
pushd "$SCHILDI_ROOT/element-web" > /dev/null
|
||||
revert_i18n_changes "$i18n_path" "$current_upstream_tag" "$skip_commit"
|
||||
popd > /dev/null
|
||||
@ -119,6 +126,13 @@ automatic_i18n_reversion() {
|
||||
}
|
||||
|
||||
automatic_i18n_adjustment() {
|
||||
# matrix-react-sdk
|
||||
pushd "$SCHILDI_ROOT/matrix-react-sdk" > /dev/null
|
||||
$yarn i18n
|
||||
node "$i18n_helper_path" "$SCHILDI_ROOT/matrix-react-sdk/$i18n_path" "$i18n_overlay_path/matrix-react-sdk"
|
||||
apply_i18n_changes "$i18n_path"
|
||||
popd > /dev/null
|
||||
|
||||
# element-web
|
||||
pushd "$SCHILDI_ROOT/element-web" > /dev/null
|
||||
$yarn i18n
|
||||
@ -203,10 +217,10 @@ revert_packagejson_changes() {
|
||||
|
||||
apply_packagejson_overlay() {
|
||||
local orig_path="$1"
|
||||
local overlay_path="../overlay/$(basename "$PWD")/package.json"
|
||||
local overlay_path="$2"
|
||||
|
||||
# see: https://stackoverflow.com/a/24904276
|
||||
new_content=`jq -s '.[0] * .[1]' "$orig_path" "$overlay_path" | sed 's| | |g'`
|
||||
new_content=`jq -s '.[0] * .[1]' "$orig_path" "$overlay_path"`
|
||||
|
||||
echo "$new_content" > "$orig_path"
|
||||
git add "$orig_path"
|
||||
@ -226,7 +240,7 @@ automatic_packagejson_adjustment() {
|
||||
local versions
|
||||
get_current_versions
|
||||
|
||||
forelement_repos apply_packagejson_overlay "package.json"
|
||||
forelement_repos apply_packagejson_overlay "package.json" "overlay-package.json"
|
||||
forelement_repos write_version "package.json"
|
||||
}
|
||||
|
||||
@ -244,53 +258,6 @@ get_current_upstream_tag() {
|
||||
}
|
||||
|
||||
get_current_mxsdk_tags() {
|
||||
current_mxreactsdk_tag="v$(cat "$SCHILDI_ROOT/element-web/package.json" | jq '.dependencies["matrix-react-sdk"]' -r)"
|
||||
current_mxjssdk_tag="v$(cat "$SCHILDI_ROOT/element-web/package.json" | jq '.dependencies["matrix-js-sdk"]' -r)"
|
||||
}
|
||||
|
||||
apply_patches() {
|
||||
local repo="$(realpath "$1")"
|
||||
local patch_dir="$SCHILDI_ROOT/patches/$(basename "$1")"
|
||||
if [ ! -d "$repo" ]; then
|
||||
echo "Unknown repo: $repo"
|
||||
return 1
|
||||
fi
|
||||
if [ ! -d "$patch_dir" ]; then
|
||||
echo "No patches found at $patch_dir"
|
||||
return 1
|
||||
fi
|
||||
pushd "$repo"
|
||||
for patch in "$patch_dir"/*; do
|
||||
echo "Applying $patch to $repo..."
|
||||
git am "$patch" || on_apply_patch_fail_try_original_commit "$patch" "$repo"
|
||||
done
|
||||
popd
|
||||
}
|
||||
|
||||
on_apply_patch_fail_try_original_commit() {
|
||||
local patch="$1"
|
||||
local repo="$2"
|
||||
local orig_commit="$(head -n 1 "$patch"|sed 's|From ||;s| .*||')"
|
||||
echo "Applying $patch failed, trying with original commit $orig_commit..."
|
||||
git am --abort
|
||||
git cherry-pick "$orig_commit" || on_apply_patch_fail "$patch" "$repo" "$orig_commit"
|
||||
}
|
||||
|
||||
on_apply_patch_fail() {
|
||||
local patch="$1"
|
||||
local repo="$2"
|
||||
local orig_commit="$3"
|
||||
echo "----------------------------------"
|
||||
echo "Applying patch failed, please commit manually!"
|
||||
echo "Patch: $patch"
|
||||
echo "Repo: $repo"
|
||||
echo "Original commit: $(head -n 1 "$patch"|sed 's|From ||;s| .*||')"
|
||||
echo "----------------------------------"
|
||||
read -p "Press enter after committing resolved conflicts: "
|
||||
}
|
||||
|
||||
commit_if_dirty() {
|
||||
local message="$1"
|
||||
# see: https://devops.stackexchange.com/a/5443
|
||||
git add -A
|
||||
git diff-index --quiet HEAD || git commit -m "$message"
|
||||
}
|
||||
|
@ -4,55 +4,55 @@ set -e
|
||||
|
||||
mydir="$(dirname "$(realpath "$0")")"
|
||||
|
||||
# Update patches?
|
||||
if [ "$1" = "-u" ]; then
|
||||
keep_patches=0
|
||||
shift
|
||||
else
|
||||
keep_patches=1
|
||||
fi
|
||||
|
||||
pushd "$mydir" > /dev/null
|
||||
|
||||
source ./merge_helpers.sh
|
||||
|
||||
# Persist current state
|
||||
if [ "$keep_patches" = 0 ]; then
|
||||
./generate_patches.sh
|
||||
fi
|
||||
# Check branch
|
||||
check_branch $branch
|
||||
forall_repos check_branch $branch
|
||||
|
||||
# Abandon all local submodule state
|
||||
forall_repos git reset --hard
|
||||
git submodule update -f --recursive
|
||||
# Ensure clean git state
|
||||
forall_repos check_clean_git
|
||||
|
||||
# Fetch upstream
|
||||
forall_repos git fetch upstream
|
||||
|
||||
# Automatic reversions
|
||||
automatic_i18n_reversion
|
||||
automatic_packagejson_reversion
|
||||
|
||||
# Merge upstream
|
||||
|
||||
# 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"
|
||||
forelement_repos git merge "$latest_upstream_tag"
|
||||
|
||||
get_current_mxsdk_tags
|
||||
|
||||
pushd "matrix-js-sdk" > /dev/null
|
||||
git checkout "$current_mxjssdk_tag" -B "$sc_branch_name"
|
||||
git merge "$current_mxjssdk_tag"
|
||||
popd > /dev/null
|
||||
|
||||
pushd "matrix-react-sdk" > /dev/null
|
||||
git merge "$current_mxreactsdk_tag"
|
||||
popd > /dev/null
|
||||
|
||||
# Refresh environment
|
||||
make clean
|
||||
make setup
|
||||
forall_repos commit_if_dirty "Automatic setup commit"
|
||||
|
||||
./apply_patches.sh
|
||||
# Automatic adjustments
|
||||
automatic_i18n_adjustment
|
||||
automatic_packagejson_adjustment
|
||||
|
||||
compound_web_version=`cat element-web/package.json|grep compound-web|sed 's|.*: \"\(.*\)",|\1|;s|\^||'`
|
||||
echo "TODO: merge compound web at $compound_web_version"
|
||||
# Automatic theme update
|
||||
pushd "matrix-react-sdk" > /dev/null
|
||||
./theme.sh y
|
||||
popd > /dev/null
|
||||
|
||||
popd > /dev/null
|
||||
|
18
nix/overlay.nix
Normal file
18
nix/overlay.nix
Normal file
@ -0,0 +1,18 @@
|
||||
final: prev: {
|
||||
cleanSchildichatDesktopSource = src: with final.lib; cleanSourceWith {
|
||||
filter = name: type: cleanSourceFilter name type
|
||||
&& !(hasInfix "/node_modules/" name)
|
||||
&& !(hasInfix "/nix/" name && hasSuffix ".nix" name)
|
||||
;
|
||||
inherit src;
|
||||
};
|
||||
schildichat-web = final.callPackage ./schildichat-web.nix {
|
||||
};
|
||||
schildichat-desktop = final.callPackage ./schildichat-desktop.nix {
|
||||
inherit (final.darwin.apple_sdk.frameworks) Security AppKit CoreServices;
|
||||
};
|
||||
schildichat-desktop-wayland = final.callPackage ./schildichat-desktop.nix {
|
||||
inherit (final.darwin.apple_sdk.frameworks) Security AppKit CoreServices;
|
||||
useWayland = true;
|
||||
};
|
||||
}
|
109
nix/schildichat-desktop.nix
Normal file
109
nix/schildichat-desktop.nix
Normal file
@ -0,0 +1,109 @@
|
||||
{ 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;
|
||||
'';
|
||||
};
|
||||
}
|
75
nix/schildichat-web.nix
Normal file
75
nix/schildichat-web.nix
Normal file
@ -0,0 +1,75 @@
|
||||
{ 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;
|
||||
};
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"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/"
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
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
@ -1,25 +0,0 @@
|
||||
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
|
||||
|
@ -1,25 +0,0 @@
|
||||
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
|
||||
|
@ -1,30 +0,0 @@
|
||||
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
|
||||
|
@ -1,29 +0,0 @@
|
||||
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
|
||||
|
@ -1,267 +0,0 @@
|
||||
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
|
||||
|
@ -1,25 +0,0 @@
|
||||
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
|
||||
|
@ -1,29 +0,0 @@
|
||||
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
|
||||
|
@ -1,30 +0,0 @@
|
||||
From db8b600a3695f35e70cb0c2a9f6b3cba99d2bfae Mon Sep 17 00:00:00 2001
|
||||
From: SpiritCroc <dev@spiritcroc.de>
|
||||
Date: Wed, 17 Nov 2021 12:50:25 +0100
|
||||
Subject: Hide the "mute" notification state the same way as the other states
|
||||
|
||||
This can get in the way of the "marked as unread" icon otherwise.
|
||||
Furthermore, I didn't really like it showing there persistently either
|
||||
way.
|
||||
---
|
||||
src/components/views/rooms/RoomTile.tsx | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx
|
||||
index 3eafb671cb..c9dcd00fd0 100644
|
||||
--- a/src/components/views/rooms/RoomTile.tsx
|
||||
+++ b/src/components/views/rooms/RoomTile.tsx
|
||||
@@ -300,7 +300,9 @@ class RoomTile extends React.PureComponent<Props, State> {
|
||||
|
||||
// Only show the icon by default if the room is overridden to muted.
|
||||
// TODO: [FTUE Notifications] Probably need to detect global mute state
|
||||
- mx_RoomTile_notificationsButton_show: state === RoomNotifState.Mute,
|
||||
+ //mx_RoomTile_notificationsButton_show: state === RoomNotifState.Mute,
|
||||
+ // SchildiChat: never show the icon by default. This gets in the way of the "marked as unread" icon.
|
||||
+ mx_RoomTile_notificationsButton_show: false,
|
||||
});
|
||||
|
||||
return (
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 773a15b9d4a880d4fa9ddf06bda99c6d15316bb4 Mon Sep 17 00:00:00 2001
|
||||
From: SpiritCroc <dev@spiritcroc.de>
|
||||
Date: Fri, 10 May 2024 18:58:32 +0200
|
||||
Subject: Allow muted rooms to render as unread
|
||||
|
||||
---
|
||||
src/RoomNotifs.ts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/RoomNotifs.ts b/src/RoomNotifs.ts
|
||||
index e6064d2691..37838c79b5 100644
|
||||
--- a/src/RoomNotifs.ts
|
||||
+++ b/src/RoomNotifs.ts
|
||||
@@ -255,7 +255,7 @@ export function determineUnreadState(
|
||||
return { symbol: "!", count: 1, level: NotificationLevel.Highlight };
|
||||
}
|
||||
|
||||
- if (getRoomNotifsState(room.client, room.roomId) === RoomNotifState.Mute) {
|
||||
+ if (false && getRoomNotifsState(room.client, room.roomId) === RoomNotifState.Mute) {
|
||||
return { symbol: null, count: 0, level: NotificationLevel.None };
|
||||
}
|
||||
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 52ee72a4f5ba98cee0eb6ce60aaac29daa2ce119 Mon Sep 17 00:00:00 2001
|
||||
From: SpiritCroc <dev@spiritcroc.de>
|
||||
Date: Sun, 30 Aug 2020 15:33:01 +0200
|
||||
Subject: Increase default visible tiles
|
||||
|
||||
---
|
||||
src/stores/room-list/ListLayout.ts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/stores/room-list/ListLayout.ts b/src/stores/room-list/ListLayout.ts
|
||||
index a4468dfffe..a4ae9bbc1d 100644
|
||||
--- a/src/stores/room-list/ListLayout.ts
|
||||
+++ b/src/stores/room-list/ListLayout.ts
|
||||
@@ -74,7 +74,7 @@ export class ListLayout {
|
||||
|
||||
public get defaultVisibleTiles(): number {
|
||||
// This number is what "feels right", and mostly subject to design's opinion.
|
||||
- return 8;
|
||||
+ return 50;
|
||||
}
|
||||
|
||||
public tilesWithPadding(n: number, paddingPx: number): number {
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,92 +0,0 @@
|
||||
From 75cf379cff65aa966ad3fc1acc5371c96e19c121 Mon Sep 17 00:00:00 2001
|
||||
From: su-ex <codeworks@supercable.onl>
|
||||
Date: Sun, 26 May 2024 10:43:36 +0200
|
||||
Subject: Bring back showSpaceDMBadges setting, force-enabled for now
|
||||
|
||||
TODO settings UI
|
||||
|
||||
Co-authored-by: SpiritCroc <dev@spiritcroc.de>
|
||||
---
|
||||
src/settings/Settings.tsx | 5 +++++
|
||||
src/stores/spaces/SpaceStore.ts | 25 +++++++++++++++++++++++++
|
||||
2 files changed, 30 insertions(+)
|
||||
|
||||
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
|
||||
index 5d06388535..5ca4cbc3e8 100644
|
||||
--- a/src/settings/Settings.tsx
|
||||
+++ b/src/settings/Settings.tsx
|
||||
@@ -358,6 +358,11 @@ export const SETTINGS: Settings = {
|
||||
default: true,
|
||||
controller: new ReloadOnChangeController(),
|
||||
},
|
||||
+ "Spaces.showSpaceDMBadges": {
|
||||
+ displayName: _td("Show notification badges for People in Spaces"),
|
||||
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
|
||||
+ default: true,
|
||||
+ },
|
||||
// SC settings end
|
||||
"feature_video_rooms": {
|
||||
isFeature: true,
|
||||
diff --git a/src/stores/spaces/SpaceStore.ts b/src/stores/spaces/SpaceStore.ts
|
||||
index 690beaa0b7..fcd7ff659b 100644
|
||||
--- a/src/stores/spaces/SpaceStore.ts
|
||||
+++ b/src/stores/spaces/SpaceStore.ts
|
||||
@@ -155,9 +155,17 @@ export class SpaceStoreClass extends AsyncStoreWithClient<EmptyObject> {
|
||||
private _msc3946ProcessDynamicPredecessor: boolean = SettingsStore.getValue("feature_dynamic_room_predecessors");
|
||||
private _storeReadyDeferred = defer();
|
||||
|
||||
+ // SC start
|
||||
+ private _showSpaceDMBadges = true;
|
||||
+ // SC end
|
||||
+
|
||||
public constructor() {
|
||||
super(defaultDispatcher, {});
|
||||
|
||||
+ // SC start
|
||||
+ SettingsStore.monitorSetting("Spaces.showSpaceDMBadges", null);
|
||||
+ // SC end
|
||||
+
|
||||
SettingsStore.monitorSetting("Spaces.allRoomsInHome", null);
|
||||
SettingsStore.monitorSetting("Spaces.enabledMetaSpaces", null);
|
||||
SettingsStore.monitorSetting("Spaces.showPeopleInSpace", null);
|
||||
@@ -215,6 +223,10 @@ export class SpaceStoreClass extends AsyncStoreWithClient<EmptyObject> {
|
||||
return this._allRoomsInHome;
|
||||
}
|
||||
|
||||
+ public get showSpaceDMBadges(): boolean { // SC
|
||||
+ return this._showSpaceDMBadges;
|
||||
+ }
|
||||
+
|
||||
public setActiveRoomInSpace(space: SpaceKey): void {
|
||||
if (!isMetaSpace(space) && !this.matrixClient?.getRoom(space)?.isSpaceRoom()) return;
|
||||
if (space !== this.activeSpace) this.setActiveSpace(space, false);
|
||||
@@ -724,6 +736,10 @@ export class SpaceStoreClass extends AsyncStoreWithClient<EmptyObject> {
|
||||
|
||||
if (room.isSpaceRoom() || !flattenedRoomsForSpace.has(room.roomId)) return false;
|
||||
|
||||
+ if (this.showSpaceDMBadges) { // SC
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
if (dmBadgeSpace && DMRoomMap.shared().getUserIdForRoomId(room.roomId)) {
|
||||
return s === dmBadgeSpace;
|
||||
}
|
||||
@@ -1301,6 +1317,15 @@ export class SpaceStoreClass extends AsyncStoreWithClient<EmptyObject> {
|
||||
break;
|
||||
}
|
||||
|
||||
+ case "Spaces.showSpaceDMBadges": { // SC
|
||||
+ const newValue = SettingsStore.getValue("Spaces.showSpaceDMBadges");
|
||||
+ if (this.showSpaceDMBadges !== newValue) {
|
||||
+ this._showSpaceDMBadges = newValue;
|
||||
+ this.rebuildSpaceHierarchy(); // rebuild everything
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
case "Spaces.enabledMetaSpaces": {
|
||||
const newValue = SettingsStore.getValue("Spaces.enabledMetaSpaces");
|
||||
const enabledMetaSpaces = this.metaSpaceOrder.filter((k) => newValue[k]);
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,135 +0,0 @@
|
||||
From dbd02e7c0b1c63d432adb2d78c4ed5cb701092f7 Mon Sep 17 00:00:00 2001
|
||||
From: SpiritCroc <dev@spiritcroc.de>
|
||||
Date: Wed, 29 May 2024 19:32:42 +0200
|
||||
Subject: Squashed: Freeform reactions from tadzik/freeform-reactions-upstream
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
commit 9eea56b0080db3720efa49b457707bcde3be6474
|
||||
Merge: 06f81c9662 8570f16e31
|
||||
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
|
||||
Date: Tue Jun 20 09:57:19 2023 +0200
|
||||
|
||||
Merge branch 'develop' into tadzik/freeform-reactions-upstream
|
||||
|
||||
commit 06f81c9662fbe033b4eac859d7e14e0ab24a6e91
|
||||
Merge: ad4fef85b1 0d6a550c33
|
||||
Author: Michael Telatynski <7t3chguy@gmail.com>
|
||||
Date: Wed Aug 31 09:06:49 2022 +0100
|
||||
|
||||
Merge branch 'develop' into tadzik/freeform-reactions
|
||||
|
||||
commit ad4fef85b160087b8017b9ae9cf9aebfd5348f41
|
||||
Merge: 689b57c0b9 5aae974e93
|
||||
Author: Tadeusz Sośnierz <tadzik@tadzik.net>
|
||||
Date: Sun Aug 28 10:11:48 2022 +0200
|
||||
|
||||
Merge branch 'develop' into tadzik/freeform-reactions
|
||||
|
||||
commit 689b57c0b91e12907a8dbc3fac3ed10302a11e4a
|
||||
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
|
||||
Date: Fri May 20 10:35:06 2022 +0200
|
||||
|
||||
Fix conflict resolution fail in EmojiPicker
|
||||
|
||||
commit 70a8e212b748584949b37bc99b72acffce2fd148
|
||||
Merge: 215df55f13 a0cdc93642
|
||||
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
|
||||
Date: Fri May 20 10:25:17 2022 +0200
|
||||
|
||||
Merge branch 'develop' into tadzik/freeform-reactions-upstream
|
||||
|
||||
commit 215df55f13162bdc8eb13da5219763c56f560dd0
|
||||
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
|
||||
Date: Tue Aug 17 16:30:06 2021 +0200
|
||||
|
||||
Disable freeform emoji reactions in the message composer
|
||||
|
||||
commit 6bb8263007e077d22929fcc1fb439d94a4f15c6f
|
||||
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
|
||||
Date: Tue Aug 17 12:12:28 2021 +0200
|
||||
|
||||
Add more typing to EmojiPicker
|
||||
|
||||
commit b2a1728318a8a5496345797995c1ec09ae3f88e6
|
||||
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
|
||||
Date: Tue Aug 17 11:52:35 2021 +0200
|
||||
|
||||
Make free-form reaction button translatable
|
||||
|
||||
commit f4adaf00b805baba454fbceb41cc5c081ec886a7
|
||||
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
|
||||
Date: Tue Aug 17 11:29:22 2021 +0200
|
||||
|
||||
Allow sending free-form reactions
|
||||
|
||||
Signed-off-by: Tadeusz Sośnierz <tadeusz@sosnierz.com>
|
||||
---
|
||||
src/components/views/emojipicker/EmojiPicker.tsx | 16 ++++++++++++++++
|
||||
.../views/emojipicker/ReactionPicker.tsx | 1 +
|
||||
2 files changed, 17 insertions(+)
|
||||
|
||||
diff --git a/src/components/views/emojipicker/EmojiPicker.tsx b/src/components/views/emojipicker/EmojiPicker.tsx
|
||||
index 71659d579b..4acbfd1fcb 100644
|
||||
--- a/src/components/views/emojipicker/EmojiPicker.tsx
|
||||
+++ b/src/components/views/emojipicker/EmojiPicker.tsx
|
||||
@@ -29,6 +29,8 @@ import { Key } from "../../../Keyboard";
|
||||
import { clamp } from "../../../utils/numbers";
|
||||
import { type ButtonEvent } from "../elements/AccessibleButton";
|
||||
|
||||
+import AccessibleButton from '../elements/AccessibleButton';
|
||||
+
|
||||
export const CATEGORY_HEADER_HEIGHT = 20;
|
||||
export const EMOJI_HEIGHT = 35;
|
||||
export const EMOJIS_PER_ROW = 8;
|
||||
@@ -36,6 +38,7 @@ export const EMOJIS_PER_ROW = 8;
|
||||
const ZERO_WIDTH_JOINER = "\u200D";
|
||||
|
||||
interface IProps {
|
||||
+ allowUnlisted?: boolean;
|
||||
selectedEmojis?: Set<string>;
|
||||
onChoose(unicode: string): boolean;
|
||||
onFinished(): void;
|
||||
@@ -337,6 +340,10 @@ class EmojiPicker extends React.Component<IProps, IState> {
|
||||
}
|
||||
};
|
||||
|
||||
+ private reactWith = (reaction: string): void => {
|
||||
+ this.props.onChoose(reaction);
|
||||
+ };
|
||||
+
|
||||
private static categoryHeightForEmojiCount(count: number): number {
|
||||
if (count === 0) {
|
||||
return 0;
|
||||
@@ -392,6 +399,15 @@ class EmojiPicker extends React.Component<IProps, IState> {
|
||||
return categoryElement;
|
||||
})}
|
||||
</AutoHideScrollbar>
|
||||
+ {
|
||||
+ (this.props.allowUnlisted && this.state.filter) &&
|
||||
+ <AccessibleButton
|
||||
+ kind="link"
|
||||
+ onClick={() => this.reactWith(this.state.filter)}
|
||||
+ >
|
||||
+ { _t('React with "%(reaction)s"', { reaction: this.state.filter }) }
|
||||
+ </AccessibleButton>
|
||||
+ }
|
||||
{this.state.previewEmoji ? (
|
||||
<Preview emoji={this.state.previewEmoji} />
|
||||
) : (
|
||||
diff --git a/src/components/views/emojipicker/ReactionPicker.tsx b/src/components/views/emojipicker/ReactionPicker.tsx
|
||||
index 8509b4014a..5e9ea0fd60 100644
|
||||
--- a/src/components/views/emojipicker/ReactionPicker.tsx
|
||||
+++ b/src/components/views/emojipicker/ReactionPicker.tsx
|
||||
@@ -126,6 +126,7 @@ class ReactionPicker extends React.Component<IProps, IState> {
|
||||
public render(): React.ReactNode {
|
||||
return (
|
||||
<EmojiPicker
|
||||
+ allowUnlisted={true}
|
||||
onChoose={this.onChoose}
|
||||
isEmojiDisabled={this.isEmojiDisabled}
|
||||
onFinished={this.props.onFinished}
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,32 +0,0 @@
|
||||
From fcc37848fb0e949888a77325a4990639a3661d8e Mon Sep 17 00:00:00 2001
|
||||
From: su-ex <codeworks@supercable.onl>
|
||||
Date: Sat, 22 Apr 2023 12:15:18 +0200
|
||||
Subject: Allow reactions to take more space
|
||||
|
||||
---
|
||||
res/css/views/messages/_ReactionsRowButton.pcss | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/res/css/views/messages/_ReactionsRowButton.pcss b/res/css/views/messages/_ReactionsRowButton.pcss
|
||||
index 917bcfbb84..75ec572c9e 100644
|
||||
--- a/res/css/views/messages/_ReactionsRowButton.pcss
|
||||
+++ b/res/css/views/messages/_ReactionsRowButton.pcss
|
||||
@@ -14,6 +14,7 @@ Please see LICENSE files in the repository root for full details.
|
||||
background-color: var(--cpd-color-gray-200);
|
||||
user-select: none;
|
||||
align-items: center;
|
||||
+ max-width: calc(100% - 40px);;
|
||||
|
||||
&.mx_ReactionsRowButton_selected {
|
||||
background-color: $accent-300;
|
||||
@@ -25,7 +26,6 @@ Please see LICENSE files in the repository root for full details.
|
||||
}
|
||||
|
||||
.mx_ReactionsRowButton_content {
|
||||
- max-width: 100px;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,79 +0,0 @@
|
||||
From e9975388c5e2071240b8e16b122100f532aee10a Mon Sep 17 00:00:00 2001
|
||||
From: su-ex <codeworks@supercable.onl>
|
||||
Date: Thu, 30 May 2024 14:35:16 +0200
|
||||
Subject: On space switch don't automatically show last opened room
|
||||
|
||||
---
|
||||
src/components/structures/MatrixChat.tsx | 18 +++++++++++++++++-
|
||||
src/settings/Settings.tsx | 6 ++++++
|
||||
src/stores/spaces/SpaceStore.ts | 1 +
|
||||
3 files changed, 24 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx
|
||||
index 3d802d34ad..e90667898b 100644
|
||||
--- a/src/components/structures/MatrixChat.tsx
|
||||
+++ b/src/components/structures/MatrixChat.tsx
|
||||
@@ -1454,7 +1454,15 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
||||
if (this.screenAfterLogin && this.screenAfterLogin.screen) {
|
||||
this.showScreen(this.screenAfterLogin.screen, this.screenAfterLogin.params);
|
||||
this.screenAfterLogin = undefined;
|
||||
- } else if (localStorage && localStorage.getItem("mx_last_room_id")) {
|
||||
+ } else if (
|
||||
+ !SettingsStore.getValue("Spaces.returnToPreviouslyOpenedRoom") &&
|
||||
+ localStorage &&
|
||||
+ localStorage.getItem("mx_active_space") &&
|
||||
+ localStorage.getItem("mx_active_space")[0] === "!"
|
||||
+ ) {
|
||||
+ // SC: Show the last viewed space
|
||||
+ this.viewLastSpace();
|
||||
+ } else if (SettingsStore.getValue("Spaces.returnToPreviouslyOpenedRoom") && localStorage && localStorage.getItem("mx_last_room_id")) {
|
||||
// Before defaulting to directory, show the last viewed room
|
||||
this.viewLastRoom();
|
||||
} else {
|
||||
@@ -1466,6 +1474,14 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
||||
}
|
||||
}
|
||||
|
||||
+ private viewLastSpace(): void { // SC
|
||||
+ // SC-ToDo: Make this work for meta spaces
|
||||
+ dis.dispatch({
|
||||
+ action: Action.ViewRoom,
|
||||
+ room_id: localStorage.getItem("mx_active_space"),
|
||||
+ });
|
||||
+ }
|
||||
+
|
||||
private viewLastRoom(): void {
|
||||
dis.dispatch<ViewRoomPayload>({
|
||||
action: Action.ViewRoom,
|
||||
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
|
||||
index 5ca4cbc3e8..80ada478ba 100644
|
||||
--- a/src/settings/Settings.tsx
|
||||
+++ b/src/settings/Settings.tsx
|
||||
@@ -363,6 +363,12 @@ export const SETTINGS: Settings = {
|
||||
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
|
||||
default: true,
|
||||
},
|
||||
+ "Spaces.returnToPreviouslyOpenedRoom": {
|
||||
+ displayName: _td("Return to the room previously opened in a space"),
|
||||
+ description: _td("If disabled, the space overview will be shown when switching to another space."),
|
||||
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
|
||||
+ default: false,
|
||||
+ },
|
||||
// SC settings end
|
||||
"feature_video_rooms": {
|
||||
isFeature: true,
|
||||
diff --git a/src/stores/spaces/SpaceStore.ts b/src/stores/spaces/SpaceStore.ts
|
||||
index fcd7ff659b..33407f74e8 100644
|
||||
--- a/src/stores/spaces/SpaceStore.ts
|
||||
+++ b/src/stores/spaces/SpaceStore.ts
|
||||
@@ -288,6 +288,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<EmptyObject> {
|
||||
// else if the last viewed room in this space is joined then view that
|
||||
// else view space home or home depending on what is being clicked on
|
||||
if (
|
||||
+ SettingsStore.getValue("Spaces.returnToPreviouslyOpenedRoom") &&
|
||||
roomId &&
|
||||
cliSpace?.getMyMembership() !== KnownMembership.Invite &&
|
||||
this.matrixClient.getRoom(roomId)?.getMyMembership() === KnownMembership.Join &&
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,24 +0,0 @@
|
||||
From bfe58ad4c742484429495dda65fdfd26302270c3 Mon Sep 17 00:00:00 2001
|
||||
From: SpiritCroc <dev@spiritcroc.de>
|
||||
Date: Tue, 9 Aug 2022 09:32:19 +0200
|
||||
Subject: Exclude spaces from breadcrumbs
|
||||
|
||||
---
|
||||
src/stores/BreadcrumbsStore.ts | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/stores/BreadcrumbsStore.ts b/src/stores/BreadcrumbsStore.ts
|
||||
index e3b01cae0b..02f6c286f2 100644
|
||||
--- a/src/stores/BreadcrumbsStore.ts
|
||||
+++ b/src/stores/BreadcrumbsStore.ts
|
||||
@@ -137,6 +137,7 @@ export class BreadcrumbsStore extends AsyncStoreWithClient<IState> {
|
||||
}
|
||||
|
||||
private async appendRoom(room: Room): Promise<void> {
|
||||
+ if (room.isSpaceRoom()) return;
|
||||
let updated = false;
|
||||
const rooms = (this.state.rooms || []).slice(); // cheap clone
|
||||
const msc3946ProcessDynamicPredecessor = SettingsStore.getValue("feature_dynamic_room_predecessors");
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,24 +0,0 @@
|
||||
From b97e37b1f5e4ad33cf044f5371e91955cafc4b55 Mon Sep 17 00:00:00 2001
|
||||
From: SpiritCroc <dev@spiritcroc.de>
|
||||
Date: Mon, 19 Aug 2024 20:27:33 +0200
|
||||
Subject: Stop the search bar wobble
|
||||
|
||||
---
|
||||
res/css/_common.pcss | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/res/css/_common.pcss b/res/css/_common.pcss
|
||||
index 75180013f6..e55eadaaf7 100644
|
||||
--- a/res/css/_common.pcss
|
||||
+++ b/res/css/_common.pcss
|
||||
@@ -181,6 +181,7 @@ input[type="search"].mx_textinput_icon {
|
||||
padding-left: 36px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 10px center;
|
||||
+ min-height: 33px;
|
||||
}
|
||||
|
||||
/* FIXME THEME - Tint by CSS rather than referencing a duplicate asset */
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,24 +0,0 @@
|
||||
From d37ddfc40426f200c9fcaa4298c5cf9921fb9025 Mon Sep 17 00:00:00 2001
|
||||
From: SpiritCroc <dev@spiritcroc.de>
|
||||
Date: Sun, 13 Oct 2024 11:23:54 +0200
|
||||
Subject: Import SC compound theme overrides
|
||||
|
||||
---
|
||||
res/css/_common.pcss | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/res/css/_common.pcss b/res/css/_common.pcss
|
||||
index e55eadaaf7..21d0f1d83a 100644
|
||||
--- a/res/css/_common.pcss
|
||||
+++ b/res/css/_common.pcss
|
||||
@@ -11,6 +11,7 @@ Please see LICENSE files in the repository root for full details.
|
||||
|
||||
@import url("@vector-im/compound-design-tokens/assets/web/css/compound-design-tokens.css") layer(compound);
|
||||
@import url("@vector-im/compound-web/dist/style.css");
|
||||
+@import "./sc-cpd-overrides.css";
|
||||
@import "./_font-sizes.pcss";
|
||||
@import "./_animations.pcss";
|
||||
@import "./_spacing.pcss";
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,26 +0,0 @@
|
||||
From 51cc5b9086927db3a9c3aa21e59a6f0d7e8fc761 Mon Sep 17 00:00:00 2001
|
||||
From: su-ex <codeworks@supercable.onl>
|
||||
Date: Tue, 7 Sep 2021 19:41:52 +0200
|
||||
Subject: No damn avatar background in room list
|
||||
|
||||
---
|
||||
src/components/structures/BackdropPanel.tsx | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/components/structures/BackdropPanel.tsx b/src/components/structures/BackdropPanel.tsx
|
||||
index f3a44521fa..396601ba6e 100644
|
||||
--- a/src/components/structures/BackdropPanel.tsx
|
||||
+++ b/src/components/structures/BackdropPanel.tsx
|
||||
@@ -13,6 +13,9 @@ interface IProps {
|
||||
}
|
||||
|
||||
export const BackdropPanel: React.FC<IProps> = ({ backgroundImage, blurMultiplier }) => {
|
||||
+ // SC: no damn avatar background in room list
|
||||
+ return null;
|
||||
+
|
||||
if (!backgroundImage) return null;
|
||||
|
||||
const styles: CSSProperties = {};
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,29 +0,0 @@
|
||||
From 50e71f22ccf8640b8cef718a3389b878602dd1d4 Mon Sep 17 00:00:00 2001
|
||||
From: su-ex <codeworks@supercable.onl>
|
||||
Date: Tue, 22 Dec 2020 19:16:28 +0100
|
||||
Subject: No red messages in 1:1 chats Close SchildiChat/schildichat-desktop#13
|
||||
|
||||
---
|
||||
src/components/views/rooms/EventTile.tsx | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx
|
||||
index 17d09b661d..214514686f 100644
|
||||
--- a/src/components/views/rooms/EventTile.tsx
|
||||
+++ b/src/components/views/rooms/EventTile.tsx
|
||||
@@ -685,6 +685,12 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
|
||||
return false;
|
||||
}
|
||||
|
||||
+ // don't show highlights in 1:1 rooms
|
||||
+ const room = cli.getRoom(this.props.mxEvent.getRoomId());
|
||||
+ if (room && room.currentState.getJoinedMemberCount() === 2) {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
return !!(actions?.tweaks.highlight || previousActions?.tweaks.highlight);
|
||||
}
|
||||
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,61 +0,0 @@
|
||||
From df6840270f2b8c6c1c1b5aaf430fa78f016b1a56 Mon Sep 17 00:00:00 2001
|
||||
From: SpiritCroc <dev@spiritcroc.de>
|
||||
Date: Sun, 13 Oct 2024 13:26:16 +0200
|
||||
Subject: Always apply corner radius to all edges of the bubble
|
||||
|
||||
---
|
||||
res/css/views/rooms/_EventBubbleTile.pcss | 10 ++++++----
|
||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/res/css/views/rooms/_EventBubbleTile.pcss b/res/css/views/rooms/_EventBubbleTile.pcss
|
||||
index c25cbfcec4..682ea64890 100644
|
||||
--- a/res/css/views/rooms/_EventBubbleTile.pcss
|
||||
+++ b/res/css/views/rooms/_EventBubbleTile.pcss
|
||||
@@ -283,6 +283,8 @@ Please see LICENSE files in the repository root for full details.
|
||||
margin-inline: var(--EventTile_bubble_line-margin-inline-start) var(--EventTile_bubble_line-margin-inline-end);
|
||||
border-top-left-radius: var(--cornerRadius);
|
||||
border-top-right-radius: var(--cornerRadius);
|
||||
+ border-bottom-left-radius: var(--cornerRadius);
|
||||
+ border-bottom-right-radius: var(--cornerRadius);
|
||||
|
||||
/* the selector here is quite weird because timestamps can appear linked & unlinked and in different places */
|
||||
/* in the DOM depending on the specific rendering context */
|
||||
@@ -376,7 +378,7 @@ Please see LICENSE files in the repository root for full details.
|
||||
}
|
||||
|
||||
&.mx_EventTile_continuation[data-self="false"] .mx_EventTile_line {
|
||||
- border-top-left-radius: 0;
|
||||
+ //border-top-left-radius: 0;
|
||||
|
||||
.mx_MImageBody .mx_MImageBody_thumbnail_container,
|
||||
.mx_MVideoBody .mx_MVideoBody_container,
|
||||
@@ -384,7 +386,7 @@ Please see LICENSE files in the repository root for full details.
|
||||
.mx_MediaBody,
|
||||
.mx_MLocationBody_map,
|
||||
.mx_MBeaconBody {
|
||||
- border-top-left-radius: 0;
|
||||
+ //border-top-left-radius: 0;
|
||||
}
|
||||
}
|
||||
&.mx_EventTile_lastInSection[data-self="false"] .mx_EventTile_line {
|
||||
@@ -401,7 +403,7 @@ Please see LICENSE files in the repository root for full details.
|
||||
}
|
||||
|
||||
&.mx_EventTile_continuation[data-self="true"] .mx_EventTile_line {
|
||||
- border-top-right-radius: 0;
|
||||
+ //border-top-right-radius: 0;
|
||||
|
||||
.mx_MImageBody .mx_MImageBody_thumbnail_container,
|
||||
.mx_MVideoBody .mx_MVideoBody_container,
|
||||
@@ -409,7 +411,7 @@ Please see LICENSE files in the repository root for full details.
|
||||
.mx_MediaBody,
|
||||
.mx_MLocationBody_map,
|
||||
.mx_MBeaconBody {
|
||||
- border-top-right-radius: 0;
|
||||
+ //border-top-right-radius: 0;
|
||||
}
|
||||
}
|
||||
&.mx_EventTile_lastInSection[data-self="true"] .mx_EventTile_line {
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 89c6003be2e9510be12640809a316278816f1837 Mon Sep 17 00:00:00 2001
|
||||
From: SpiritCroc <dev@spiritcroc.de>
|
||||
Date: Sun, 13 Oct 2024 13:53:07 +0200
|
||||
Subject: Always show timestamps by default
|
||||
|
||||
---
|
||||
src/settings/Settings.tsx | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
|
||||
index 80ada478ba..e41c19b750 100644
|
||||
--- a/src/settings/Settings.tsx
|
||||
+++ b/src/settings/Settings.tsx
|
||||
@@ -786,7 +786,7 @@ export const SETTINGS: Settings = {
|
||||
"alwaysShowTimestamps": {
|
||||
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
|
||||
displayName: _td("settings|always_show_message_timestamps"),
|
||||
- default: false,
|
||||
+ default: true,
|
||||
},
|
||||
"userTimezone": {
|
||||
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 2f4546aaca472f4ac2304fc5b5bdcb36c9a380c6 Mon Sep 17 00:00:00 2001
|
||||
From: SpiritCroc <dev@spiritcroc.de>
|
||||
Date: Thu, 17 Oct 2024 19:40:51 +0200
|
||||
Subject: Enable custom emote rendering by default
|
||||
|
||||
---
|
||||
src/settings/Settings.tsx | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
|
||||
index e41c19b750..276d72cf23 100644
|
||||
--- a/src/settings/Settings.tsx
|
||||
+++ b/src/settings/Settings.tsx
|
||||
@@ -641,7 +641,7 @@ export const SETTINGS: Settings = {
|
||||
description: _td("labs|render_reaction_images_description"),
|
||||
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED,
|
||||
supportedLevelsAreOrdered: true,
|
||||
- default: false,
|
||||
+ default: true,
|
||||
},
|
||||
"feature_new_room_list": {
|
||||
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED,
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 9b7345671c0910cf9d6ca3710a4cd9f5126fe186 Mon Sep 17 00:00:00 2001
|
||||
From: SpiritCroc <dev@spiritcroc.de>
|
||||
Date: Sun, 27 Oct 2024 19:24:26 +0100
|
||||
Subject: Enable chat previews by default
|
||||
|
||||
---
|
||||
src/stores/room-list/ListLayout.ts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/stores/room-list/ListLayout.ts b/src/stores/room-list/ListLayout.ts
|
||||
index a4ae9bbc1d..227c918457 100644
|
||||
--- a/src/stores/room-list/ListLayout.ts
|
||||
+++ b/src/stores/room-list/ListLayout.ts
|
||||
@@ -18,7 +18,7 @@ interface ISerializedListLayout {
|
||||
|
||||
export class ListLayout {
|
||||
private _n = 0;
|
||||
- private _previews = false;
|
||||
+ private _previews = true;
|
||||
private _collapsed = false;
|
||||
|
||||
public constructor(public readonly tagId: TagID) {
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,39 +0,0 @@
|
||||
From 1d3a914d447e6ccae5ad13ac4438aa979610946e Mon Sep 17 00:00:00 2001
|
||||
From: SpiritCroc <dev@spiritcroc.de>
|
||||
Date: Sat, 30 Nov 2024 19:42:44 +0100
|
||||
Subject: Disable showing people in spaces by default
|
||||
|
||||
---
|
||||
src/settings/Settings.tsx | 2 +-
|
||||
src/stores/room-list/filters/SpaceFilterCondition.ts | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
|
||||
index 276d72cf23..4de889b562 100644
|
||||
--- a/src/settings/Settings.tsx
|
||||
+++ b/src/settings/Settings.tsx
|
||||
@@ -1206,7 +1206,7 @@ export const SETTINGS: Settings = {
|
||||
},
|
||||
"Spaces.showPeopleInSpace": {
|
||||
supportedLevels: [SettingLevel.ROOM_ACCOUNT],
|
||||
- default: true,
|
||||
+ default: false,
|
||||
},
|
||||
"developerMode": {
|
||||
displayName: _td("devtools|developer_mode"),
|
||||
diff --git a/src/stores/room-list/filters/SpaceFilterCondition.ts b/src/stores/room-list/filters/SpaceFilterCondition.ts
|
||||
index 02e20e9103..2b49711c8e 100644
|
||||
--- a/src/stores/room-list/filters/SpaceFilterCondition.ts
|
||||
+++ b/src/stores/room-list/filters/SpaceFilterCondition.ts
|
||||
@@ -25,7 +25,7 @@ import SettingsStore from "../../../settings/SettingsStore";
|
||||
export class SpaceFilterCondition extends EventEmitter implements IFilterCondition, IDestroyable {
|
||||
private roomIds = new Set<string>();
|
||||
private userIds = new Set<string>();
|
||||
- private showPeopleInSpace = true;
|
||||
+ private showPeopleInSpace = false;
|
||||
private space: SpaceKey = MetaSpace.Home;
|
||||
|
||||
public isVisible(room: Room): boolean {
|
||||
--
|
||||
2.48.1
|
||||
|
@ -1,310 +0,0 @@
|
||||
From 1784aaa9b523c5f02b089ed08847bb8d07240570 Mon Sep 17 00:00:00 2001
|
||||
From: Suguru Hirahara <luixxiul@users.noreply.github.com>
|
||||
Date: Thu, 31 Oct 2024 13:44:20 -0400
|
||||
Subject: Improve IRC layout for SchildiChat
|
||||
|
||||
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
|
||||
|
||||
Squashed:
|
||||
|
||||
Author: Suguru Hirahara <luixxiul@users.noreply.github.com>
|
||||
Date: Thu Nov 28 10:01:43 2024 -0500
|
||||
|
||||
Improve IRC layout for SchildiChat: fix placement of capital letters inside read receipts
|
||||
|
||||
This is a follow-up to 18578fe4ac6838b2d70a4efb029a75ab24087dab.
|
||||
|
||||
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
|
||||
---
|
||||
.../elements/_GenericEventListSummary.pcss | 15 ++
|
||||
res/css/views/rooms/_EventTile.pcss | 148 ++++++++++++++++--
|
||||
res/css/views/rooms/_IRCLayout.pcss | 2 +
|
||||
3 files changed, 155 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/res/css/views/elements/_GenericEventListSummary.pcss b/res/css/views/elements/_GenericEventListSummary.pcss
|
||||
index f4aa0e6f0f..88bcb88f14 100644
|
||||
--- a/res/css/views/elements/_GenericEventListSummary.pcss
|
||||
+++ b/res/css/views/elements/_GenericEventListSummary.pcss
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
Copyright 2024 New Vector Ltd.
|
||||
+Copyright 2024 Suguru Hirahara
|
||||
Copyright 2016 OpenMarket Ltd
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
@@ -36,6 +37,20 @@ Please see LICENSE files in the repository root for full details.
|
||||
}
|
||||
}
|
||||
|
||||
+ &[data-layout="irc"] {
|
||||
+ .mx_GenericEventListSummary_avatars {
|
||||
+ vertical-align: text-bottom; /* Align with mx_GenericEventListSummary_summary */
|
||||
+
|
||||
+ > * {
|
||||
+ line-height: inherit; /* Same size as avatar height */
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ .mx_GenericEventListSummary_summary {
|
||||
+ line-height: var(--irc-line-height); /* Override the declaration by mx_TextualEvent */
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
&[data-layout="group"] {
|
||||
margin-top: $spacing-8;
|
||||
}
|
||||
diff --git a/res/css/views/rooms/_EventTile.pcss b/res/css/views/rooms/_EventTile.pcss
|
||||
index 54f91bd5f4..952f267902 100644
|
||||
--- a/res/css/views/rooms/_EventTile.pcss
|
||||
+++ b/res/css/views/rooms/_EventTile.pcss
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
Copyright 2024 New Vector Ltd.
|
||||
+Copyright 2024 Suguru Hirahara
|
||||
Copyright 2020, 2021 The Matrix.org Foundation C.I.C.
|
||||
Copyright 2015, 2016 OpenMarket Ltd
|
||||
|
||||
@@ -273,6 +274,10 @@ $left-gutter: 64px;
|
||||
align-items: flex-start;
|
||||
padding-top: 0;
|
||||
|
||||
+ * {
|
||||
+ line-height: var(--line-height); /* Unify the line-height value for IRC layout. The value is applied by default to everything under data-layout="irc", enabling declarations with more specificity to override the value as this is not enforced with "!important" */
|
||||
+ }
|
||||
+
|
||||
> a {
|
||||
text-decoration: none; /* timestamps are links which shouldn't be underlined */
|
||||
min-width: var(--MessageTimestamp-width); /* ensure space for EventTile without timestamp */
|
||||
@@ -280,6 +285,7 @@ $left-gutter: 64px;
|
||||
|
||||
> * {
|
||||
margin-right: var(--right-padding);
|
||||
+ padding-block: var(--EventTile_irc_line-padding-block); /* Unify block padding value of anything directly under mx_EventTile */
|
||||
}
|
||||
|
||||
.mx_EventTile_avatar,
|
||||
@@ -315,17 +321,46 @@ $left-gutter: 64px;
|
||||
width: var(--name-width);
|
||||
margin-inline-end: 0; /* override mx_EventTile > * */
|
||||
|
||||
+ /* Align elements to the end side */
|
||||
+ display: block;
|
||||
+ text-align: end;
|
||||
+
|
||||
+ --sc-border-radius-8px: 8px; /* TODO: customize the variable per out taste */
|
||||
+ border-start-start-radius: var(--sc-border-radius-8px, 3px);
|
||||
+ border-end-start-radius: var(--sc-border-radius-8px, 3px);
|
||||
+
|
||||
+ /* Set $accent as default color, in order to make ellipsis rendered with the accent color (green, by default) */
|
||||
+ color: $accent;
|
||||
+
|
||||
+ &:hover {
|
||||
+ background-color: $event-selected-color;
|
||||
+
|
||||
+ /* This removes top left and bottom left corders from mx_EventTile_line, if just mx_DisambiguatedProfile is hovered. This enables the highlight line to be rendered straight without being dent by those corners. Please note that they do appear if just mx_EventTile_line is hovered. */
|
||||
+ & ~ .mx_EventTile_line {
|
||||
+ border-start-start-radius: 0;
|
||||
+ border-end-start-radius: 0;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
> .mx_DisambiguatedProfile_displayName {
|
||||
width: 100%;
|
||||
text-align: end;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
+ padding-inline-end: var(--right-padding); /* Add padding between displayName and mx_EventTile_line */
|
||||
}
|
||||
|
||||
> .mx_DisambiguatedProfile_mxid {
|
||||
- visibility: collapse;
|
||||
+ /* On the upstream, appearance of mxid on disambiguatedProfile is managed by
|
||||
+ "visibility" property. Since it renders mxid hiding it and pushes
|
||||
+ displayName to the left side, we need to use display property instead. */
|
||||
+ display: none;
|
||||
+
|
||||
margin-left: 0; /* Override the inherited margin. */
|
||||
padding: 0 5px;
|
||||
+ padding-inline-start: 0; /* Remove the value specified on upstream since var(--right-padding) is specified for mx_DisambiguatedProfile_displayName above */
|
||||
+
|
||||
+ color: $primary-content; /* Override the color specified above to make the mxid rendered as $primary-content (black, by default) */
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@@ -337,17 +372,68 @@ $left-gutter: 64px;
|
||||
display: inline;
|
||||
background-color: $event-selected-color;
|
||||
border-radius: 8px 0 0 8px;
|
||||
- padding-right: $spacing-8;
|
||||
+ padding-inline-end: var(--right-padding);
|
||||
}
|
||||
|
||||
> .mx_DisambiguatedProfile_mxid {
|
||||
- visibility: visible;
|
||||
+ display: inline-block; /* Make var(--irc-line-height) work */
|
||||
+
|
||||
opacity: 1;
|
||||
background-color: $event-selected-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+ /* Need to use important to override the js provided height and width values. */
|
||||
+ .mx_BaseAvatar,
|
||||
+ .mx_BaseAvatar > * {
|
||||
+ height: $font-14px !important;
|
||||
+ width: $font-14px !important;
|
||||
+ line-height: $font-14px; /* override wildcard; fix alignment of capital letter inside read receipts */
|
||||
+ flex-shrink: 0; /* Prevents the avatar from shrinking (when mx_DisambiguatedProfile_displayName is long) */
|
||||
+ }
|
||||
+
|
||||
+ /* Fill the pill with the avatar */
|
||||
+ /* TODO: Adjust the size for IRC layout */
|
||||
+ .mx_Pill {
|
||||
+ .mx_BaseAvatar,
|
||||
+ .mx_BaseAvatar > * {
|
||||
+ height: $font-16px !important; /* override the value specified above */
|
||||
+ width: $font-16px !important; /* override the value specified above */
|
||||
+ line-height: $font-16px; /* override wildcard; fix alignment of capital letter inside read receipts */
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ .mx_EventTile_bigEmoji {
|
||||
+ line-height: initial; /* Reset global line-height value inside IRC EventTile */
|
||||
+
|
||||
+ .mx_Emoji {
|
||||
+ line-height: unset;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ .mx_EventTile_content {
|
||||
+ .markdown-body {
|
||||
+ > * {
|
||||
+ margin-bottom: 4px; /* Unify block end margin for elements like blockquote */
|
||||
+ }
|
||||
+
|
||||
+ > p {
|
||||
+ margin-bottom: 1rem; /* Re-add block end margin to unify the margin for paragraphs with or without annotation */
|
||||
+ }
|
||||
+
|
||||
+ code:not(pre *) {
|
||||
+ padding-block: 0; /* Remove block padding to avoid line height overflow */
|
||||
+ }
|
||||
+
|
||||
+ .mx_EventTile_pre_container {
|
||||
+ pre {
|
||||
+ margin-bottom: 0; /* Remove default block end margin */
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
.mx_EventTile_e2eIcon {
|
||||
padding: 0;
|
||||
flex-grow: 0;
|
||||
@@ -359,9 +445,8 @@ $left-gutter: 64px;
|
||||
.mx_TextualEvent,
|
||||
.mx_ViewSourceEvent,
|
||||
.mx_MTextBody {
|
||||
- /* add a 1px padding top and bottom because our larger
|
||||
- emoji font otherwise gets cropped by anti-zalgo */
|
||||
- padding: var(--EventTile_irc_line-padding-block) 0;
|
||||
+ /* Cancel the padding specified by the upstream as it is taken care of by padding var(--EventTile_irc_line-padding-block) */
|
||||
+ padding: unset;
|
||||
}
|
||||
|
||||
.mx_EventTile_e2eIcon,
|
||||
@@ -399,8 +484,36 @@ $left-gutter: 64px;
|
||||
}
|
||||
}
|
||||
|
||||
- .mx_ReplyChain {
|
||||
- margin: 0;
|
||||
+ .mx_ReplyChain_wrapper {
|
||||
+ .mx_ReplyChain {
|
||||
+ margin: 0;
|
||||
+
|
||||
+ .mx_ReplyTile {
|
||||
+ padding-block: unset; /* Unset the inherited value */
|
||||
+ }
|
||||
+
|
||||
+ .mx_DisambiguatedProfile {
|
||||
+ line-height: var(--irc-line-height);
|
||||
+
|
||||
+ /* Stop mxid from moving avatar up on ReplyChain by resetting display
|
||||
+ value "none" specified above */
|
||||
+ /* Mind the difference of avatar placement between on upstream's
|
||||
+ mx_EventTile and mx_ReplyTile_sender */
|
||||
+ > .mx_DisambiguatedProfile_mxid {
|
||||
+ display: unset;
|
||||
+ }
|
||||
+
|
||||
+ &:hover {
|
||||
+ overflow: hidden; /* Override "overflow: visible" specified by the upstream */
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* Align avatar inside ReplyChain (ReplyTile) */
|
||||
+ /* "In reply to" line */
|
||||
+ div:first-of-type blockquote.mx_ReplyChain {
|
||||
+ padding-bottom: 2px; /* Add padding between "In reply to" line and the replied content */
|
||||
+ }
|
||||
}
|
||||
|
||||
.mx_MessageTimestamp {
|
||||
@@ -453,8 +566,14 @@ $left-gutter: 64px;
|
||||
|
||||
&.mx_EventTile_emote {
|
||||
.mx_EventTile_avatar {
|
||||
- /* add --right-padding value of MessageTimestamp only */
|
||||
- margin-left: calc(var(--name-width) + var(--icon-width) + 1 * var(--right-padding));
|
||||
+ /* Required for the avatar to reserve spacing between timestamp and the avatar */
|
||||
+ margin-left: var(--name-width); /* Align emote with other EventTile */
|
||||
+ }
|
||||
+
|
||||
+ &.mx_EventTile_info {
|
||||
+ .mx_EventTile_avatar {
|
||||
+ margin-left: unset; /* Required for hidden events for emote */
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -636,6 +755,15 @@ $left-gutter: 64px;
|
||||
var(--name-width) + var(--icon-width) + var(--MessageTimestamp-width) + 2 * var(--right-padding)
|
||||
);
|
||||
}
|
||||
+
|
||||
+ .mx_EventTile_line .mx_RedactedBody {
|
||||
+ line-height: var(--line-height); /* Unify the line-height value for IRC layout by overwriting the line-height value specified on upstream _EventTile.pcss */
|
||||
+
|
||||
+ &::before {
|
||||
+ height: var(--line-height); /* Set the line height value to the trash icon */
|
||||
+ top: 0px; /* Remove the value specified by the upstream as this is no longer needed */
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
&[data-layout="group"] {
|
||||
diff --git a/res/css/views/rooms/_IRCLayout.pcss b/res/css/views/rooms/_IRCLayout.pcss
|
||||
index 953a0c941f..3326d0c0ff 100644
|
||||
--- a/res/css/views/rooms/_IRCLayout.pcss
|
||||
+++ b/res/css/views/rooms/_IRCLayout.pcss
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
Copyright 2024 New Vector Ltd.
|
||||
+Copyright 2024 Suguru Hirahara
|
||||
Copyright 2020 The Matrix.org Foundation C.I.C.
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
@@ -15,6 +16,7 @@ Please see LICENSE files in the repository root for full details.
|
||||
--icon-width: 14px;
|
||||
--line-height: var(--irc-line-height);
|
||||
--right-padding: 5px;
|
||||
+ --cpd-font-line-height-regular: var(--irc-line-height); /* Unify the line-height value for IRC layout */
|
||||
|
||||
line-height: var(--line-height) !important;
|
||||
|
||||
--
|
||||
2.48.1
|
||||
|
31
publish_release.sh
Executable file
31
publish_release.sh
Executable file
@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
mydir="$(dirname "$(realpath "$0")")"
|
||||
|
||||
pushd "$mydir" > /dev/null
|
||||
|
||||
source ./merge_helpers.sh
|
||||
|
||||
# Check branch
|
||||
check_branch $branch
|
||||
forall_repos check_branch $branch
|
||||
|
||||
# Ensure clean git state
|
||||
forall_repos check_clean_git
|
||||
|
||||
git fetch origin
|
||||
git branch -D master || true
|
||||
git checkout -b master --track origin/master
|
||||
git merge --ff-only sc
|
||||
git push
|
||||
git checkout sc
|
||||
forall_repos git fetch origin
|
||||
forall_repos git branch -D master || true
|
||||
forall_repos git checkout -b master --track origin/master
|
||||
forall_repos git merge --ff-only sc
|
||||
forall_repos git push
|
||||
forall_repos git checkout sc
|
||||
|
||||
popd > /dev/null
|
@ -1,38 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
mydir="$(dirname "$(realpath "$0")")"
|
||||
pushd "$mydir" > /dev/null
|
||||
|
||||
source ./merge_helpers.sh
|
||||
|
||||
get_branch_of() {
|
||||
local repo="$1"
|
||||
pushd "$repo" > /dev/null
|
||||
local b=`git branch --show-current`
|
||||
if [[ "$b" = sc_v* ]]; then
|
||||
echo "$b"
|
||||
else
|
||||
>&2 echo "Unexpected branch name for $repo: $b"
|
||||
exit 1
|
||||
fi
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
b_js=`get_branch_of matrix-js-sdk`
|
||||
b_web=`get_branch_of element-web`
|
||||
b_desktop=`get_branch_of element-desktop`
|
||||
|
||||
if [ "$b_js" != "$b_web" ] || [ "$b_web" != "$b_desktop" ]; then
|
||||
echo "Detected branch name mismatch!"
|
||||
echo "js-sdk: $b_js"
|
||||
echo "element-web: $b_web"
|
||||
echo "element-desktop: $b_desktop"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
branch="$b_js"
|
||||
|
||||
echo "Pushing to all repos: $branch"
|
||||
for_main_repos git push --set-upstream origin "$branch" "$@"
|
@ -1,176 +0,0 @@
|
||||
/*
|
||||
* Upstream file for reference:
|
||||
* - Dark: https://github.com/element-hq/compound-design-tokens/blob/main/assets/web/css/cpd-theme-dark-base.css
|
||||
* - Light: https://github.com/element-hq/compound-design-tokens/blob/main/assets/web/css/cpd-theme-light-base.css
|
||||
*/
|
||||
|
||||
.cpd-theme-dark.cpd-theme-dark {
|
||||
--cpd-color-text-primary: rgba(255, 255, 255, 0.9);
|
||||
--cpd-color-text-secondary: rgba(255, 255, 255, 0.65);
|
||||
/* TODO?
|
||||
--cpd-color-alpha-green-1400: hsla(152, 88%, 94%, 0.96);
|
||||
--cpd-color-alpha-green-1300: hsla(152, 93%, 88%, 0.91);
|
||||
--cpd-color-alpha-green-1200: hsla(156, 97%, 76%, 0.83);
|
||||
--cpd-color-alpha-green-1100: hsla(162, 98%, 57%, 0.74);
|
||||
--cpd-color-alpha-green-1000: hsla(163, 99%, 55%, 0.65);
|
||||
--cpd-color-alpha-green-900: hsla(164, 98%, 53%, 0.58);
|
||||
--cpd-color-alpha-green-800: hsl(168, 100%, 24%, 1);
|
||||
--cpd-color-alpha-green-700: hsl(165, 100%, 18%, 1);
|
||||
--cpd-color-alpha-green-600: hsl(162, 100%, 14%, 1);
|
||||
--cpd-color-alpha-green-500: hsl(160, 100%, 12%, 1);
|
||||
--cpd-color-alpha-green-400: hsl(155, 100%, 9%, 1);
|
||||
--cpd-color-alpha-green-300: hsl(151, 100%, 7%, 1);
|
||||
--cpd-color-alpha-green-200: hsl(147, 100%, 6%, 1);
|
||||
--cpd-color-alpha-green-100: hsl(144, 100%, 6%, 1);
|
||||
|
||||
--cpd-color-alpha-gray-1400: hsla(214, 78%, 98%, 0.95);
|
||||
--cpd-color-alpha-gray-1300: hsla(213, 73%, 97%, 0.89);
|
||||
--cpd-color-alpha-gray-1200: hsla(215, 74%, 96%, 0.79);
|
||||
--cpd-color-alpha-gray-1100: hsla(215, 92%, 95%, 0.68);
|
||||
--cpd-color-alpha-gray-1000: hsla(213, 93%, 94%, 0.61);
|
||||
--cpd-color-alpha-gray-900: hsla(211, 94%, 94%, 0.54);
|
||||
--cpd-color-alpha-gray-800: hsla(216, 100%, 94%, 0.41);
|
||||
--cpd-color-alpha-gray-700: hsla(213, 85%, 95%, 0.27);
|
||||
--cpd-color-alpha-gray-600: hsla(225, 46%, 95%, 0.2);
|
||||
--cpd-color-alpha-gray-500: hsla(214, 41%, 97%, 0.15);
|
||||
--cpd-color-alpha-gray-400: hsla(270, 37%, 93%, 0.1);
|
||||
--cpd-color-alpha-gray-200: hsla(286, 31%, 82%, 0.04);
|
||||
--cpd-color-alpha-gray-100: hsla(214, 10%, 86%, 0.02);
|
||||
*/
|
||||
/* Hover of room list items, search bar bg, space icon bg */
|
||||
--cpd-color-alpha-gray-300: rgba(255, 255, 255, 0.06);
|
||||
|
||||
/* TODO more accent variants? */
|
||||
--cpd-color-green-1400: #F1F8E9;
|
||||
--cpd-color-green-1300: #DCEDC8;
|
||||
--cpd-color-green-1200: #C5E1A5;
|
||||
--cpd-color-green-1100: #AED581;
|
||||
--cpd-color-green-1000: #9CCC65;
|
||||
--cpd-color-green-900: #8BC34A;
|
||||
--cpd-color-green-800: #8BC34A;
|
||||
--cpd-color-green-700: #8BC34A;
|
||||
--cpd-color-green-600: #8BC34A;
|
||||
--cpd-color-green-500: #8BC34A;
|
||||
--cpd-color-green-400: #689F38;
|
||||
--cpd-color-green-300: #33691E;
|
||||
--cpd-color-green-200: #33691E;
|
||||
--cpd-color-green-100: #33691E;
|
||||
|
||||
/* TODO
|
||||
--cpd-color-red-1400: #ffe9e6;
|
||||
--cpd-color-red-1300: #ffd4cd;
|
||||
--cpd-color-red-1200: #ffaea4;
|
||||
--cpd-color-red-1100: #ff877c;
|
||||
--cpd-color-red-1000: #ff665d;
|
||||
--cpd-color-red-900: #fd3e3c;
|
||||
--cpd-color-red-800: #d1212a;
|
||||
--cpd-color-red-700: #9f0d1e;
|
||||
--cpd-color-red-600: #830009;
|
||||
--cpd-color-red-500: #710000;
|
||||
--cpd-color-red-400: #590000;
|
||||
--cpd-color-red-300: #470000;
|
||||
--cpd-color-red-200: #3e0000;
|
||||
--cpd-color-red-100: #370000;
|
||||
*/
|
||||
|
||||
--cpd-color-gray-1400: #eeeeee;
|
||||
--cpd-color-gray-1300: #e0e0e0;
|
||||
--cpd-color-gray-1200: #b3b3b3;
|
||||
--cpd-color-gray-1100: #aaaaaa;
|
||||
--cpd-color-gray-1000: #9e9e9e;
|
||||
--cpd-color-gray-900: #808080;
|
||||
--cpd-color-gray-800: #757575;
|
||||
--cpd-color-gray-700: #424242;
|
||||
--cpd-color-gray-600: #424242;
|
||||
--cpd-color-gray-500: #424242;
|
||||
--cpd-color-gray-400: #303030;
|
||||
--cpd-color-gray-300: #212121;
|
||||
--cpd-color-gray-200: #212121;
|
||||
--cpd-color-gray-100: #171717;
|
||||
--cpd-color-theme-bg: #171717;
|
||||
--cpd-color-tooltip-bg: #424242;
|
||||
}
|
||||
|
||||
.cpd-theme-light.cpd-theme-light {
|
||||
/* TODO?
|
||||
--cpd-color-alpha-gray-1400: hsla(223, 64%, 2%, 0.9);
|
||||
--cpd-color-alpha-gray-1300: hsla(225, 57%, 3%, 0.84);
|
||||
--cpd-color-alpha-gray-1200: hsla(213, 73%, 3%, 0.77);
|
||||
--cpd-color-alpha-gray-1100: hsla(215, 74%, 5%, 0.71);
|
||||
--cpd-color-alpha-gray-1000: hsla(218, 79%, 6%, 0.66);
|
||||
--cpd-color-alpha-gray-900: hsla(213, 83%, 7%, 0.61);
|
||||
--cpd-color-alpha-gray-800: hsla(213, 87%, 9%, 0.5);
|
||||
--cpd-color-alpha-gray-700: hsla(215, 96%, 10%, 0.35);
|
||||
--cpd-color-alpha-gray-600: hsla(212, 97%, 12%, 0.26);
|
||||
--cpd-color-alpha-gray-500: hsla(212, 87%, 15%, 0.2);
|
||||
--cpd-color-alpha-gray-400: hsla(213, 90%, 20%, 0.12);
|
||||
--cpd-color-alpha-gray-300: hsla(216, 89%, 18%, 0.06);
|
||||
--cpd-color-alpha-gray-200: hsla(200, 41%, 36%, 0.04);
|
||||
--cpd-color-alpha-gray-100: hsla(210, 48%, 41%, 0.02);
|
||||
|
||||
--cpd-color-alpha-green-1400: hsl(149, 100%, 7%, 1);
|
||||
--cpd-color-alpha-green-1300: hsl(157, 100%, 10%, 1);
|
||||
--cpd-color-alpha-green-1200: hsl(162, 100%, 14%, 1);
|
||||
--cpd-color-alpha-green-1100: hsl(165, 100%, 18%, 1);
|
||||
--cpd-color-alpha-green-1000: hsl(166, 100%, 21%, 1);
|
||||
--cpd-color-alpha-green-900: hsl(168, 100%, 24%, 1);
|
||||
--cpd-color-alpha-green-800: hsl(166, 100%, 30%, 1);
|
||||
--cpd-color-alpha-green-700: hsla(163, 99%, 38%, 0.96);
|
||||
--cpd-color-alpha-green-600: hsla(156, 99%, 36%, 0.56);
|
||||
--cpd-color-alpha-green-500: hsla(154, 96%, 37%, 0.41);
|
||||
--cpd-color-alpha-green-400: hsla(151, 93%, 37%, 0.23);
|
||||
--cpd-color-alpha-green-300: hsla(150, 100%, 36%, 0.11);
|
||||
--cpd-color-alpha-green-200: hsla(150, 79%, 41%, 0.06);
|
||||
--cpd-color-alpha-green-100: hsla(156, 79%, 41%, 0.03);
|
||||
*/
|
||||
|
||||
/* TODO accent variants? */
|
||||
--cpd-color-green-1400: #33691E;
|
||||
--cpd-color-green-1300: #33691E;
|
||||
--cpd-color-green-1200: #33691E;
|
||||
--cpd-color-green-1100: #33691E;
|
||||
--cpd-color-green-1000: #33691E;
|
||||
--cpd-color-green-900: #33691E;
|
||||
--cpd-color-green-800: #33691E;
|
||||
--cpd-color-green-700: #8BC34A;
|
||||
--cpd-color-green-600: #8BC34A;
|
||||
--cpd-color-green-500: #8BC34A;
|
||||
--cpd-color-green-400: #8BC34A;
|
||||
--cpd-color-green-300: #C5E1A5;
|
||||
--cpd-color-green-200: #DCEDC8;
|
||||
--cpd-color-green-100: #F1F8E9;
|
||||
|
||||
/* TODO
|
||||
--cpd-color-red-1400: #450000;
|
||||
--cpd-color-red-1300: #620000;
|
||||
--cpd-color-red-1200: #850006;
|
||||
--cpd-color-red-1100: #a4041d;
|
||||
--cpd-color-red-1000: #bc0f22;
|
||||
--cpd-color-red-900: #d51928;
|
||||
--cpd-color-red-800: #ff3d3d;
|
||||
--cpd-color-red-700: #ff8c81;
|
||||
--cpd-color-red-600: #ffafa5;
|
||||
--cpd-color-red-500: #ffc5bc;
|
||||
--cpd-color-red-400: #ffdfda;
|
||||
--cpd-color-red-300: #ffefec;
|
||||
--cpd-color-red-200: #fff7f6;
|
||||
--cpd-color-red-100: #fffaf9;
|
||||
*/
|
||||
|
||||
--cpd-color-gray-1400: #212121;
|
||||
--cpd-color-gray-1300: #212121;
|
||||
--cpd-color-gray-1200: #424242;
|
||||
--cpd-color-gray-1100: #424242;
|
||||
--cpd-color-gray-1000: #616161;
|
||||
--cpd-color-gray-900: #616161;
|
||||
--cpd-color-gray-800: #808080;
|
||||
--cpd-color-gray-700: #b3b3b3;
|
||||
--cpd-color-gray-600: #b3b3b3;
|
||||
--cpd-color-gray-500: #cdd3da;
|
||||
--cpd-color-gray-400: #e0e0e0;
|
||||
--cpd-color-gray-300: #f5f5f5;
|
||||
--cpd-color-gray-200: #f5f5f5;
|
||||
--cpd-color-gray-100: #fafafa;
|
||||
--cpd-color-theme-bg: #ffffff;
|
||||
--cpd-color-tooltip-bg: #f5f5f5;
|
||||
}
|
23
setup.sh
23
setup.sh
@ -10,7 +10,8 @@ $yarn link
|
||||
$yarn install
|
||||
popd
|
||||
|
||||
pushd compound-web
|
||||
pushd matrix-react-sdk
|
||||
$yarn link matrix-js-sdk
|
||||
$yarn unlink &>/dev/null || true
|
||||
$yarn link
|
||||
$yarn install
|
||||
@ -18,31 +19,15 @@ popd
|
||||
|
||||
pushd element-web
|
||||
$yarn link matrix-js-sdk
|
||||
$yarn link @vector-im/compound-web
|
||||
$yarn link matrix-react-sdk
|
||||
$yarn install
|
||||
popd
|
||||
|
||||
pushd element-desktop
|
||||
$yarn install
|
||||
# Seshat: compare https://github.com/element-hq/element-desktop/blob/develop/docs/native-node-modules.md#adding-seshat-for-search-in-e2e-encrypted-rooms
|
||||
$yarn add matrix-seshat
|
||||
#$yarn add electron-build-env
|
||||
#$yarn run electron-build-env -- --electron "$electron_version" -- neon build matrix-seshat --release
|
||||
ln -s ../element-web/webapp ./ || true
|
||||
popd
|
||||
|
||||
pushd i18n-helper
|
||||
$yarn install
|
||||
popd
|
||||
|
||||
# CSS overrides
|
||||
cp res/css/* element-web/res/css/
|
||||
|
||||
# Ensure appropriate .gitignore to avoid unnecessary dirty repos
|
||||
# when re-running setup. merge_upstream.sh will include this into the
|
||||
# "Automatic setup commit".
|
||||
if grep -q res/css/sc- element-web/.gitignore; then
|
||||
echo "Skip updating .gitignore, already looks ok"
|
||||
else
|
||||
echo "Updating .gitignore"
|
||||
echo -e "\nres/css/sc-*.css" >> element-web/.gitignore
|
||||
fi
|
||||
|
189
theme.sh
189
theme.sh
@ -1,189 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
shopt -s globstar
|
||||
|
||||
mydir="$(dirname "$(realpath "$0")")"
|
||||
automatic_commit="$1"
|
||||
|
||||
pushd "$mydir/element-web" > /dev/null
|
||||
|
||||
if [[ "$automatic_commit" == [Yy]* ]]; then
|
||||
# Require clean git state
|
||||
uncommitted=`git status --porcelain`
|
||||
if [ ! -z "$uncommitted" ]; then
|
||||
echo "Uncommitted changes are present, please commit first!"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
M_ACCENT="#8bc34a"
|
||||
M_ACCENT_DEC="139, 195, 74"
|
||||
M_ACCENT_DARK="#33691e"
|
||||
M_ACCENT_LIGHT="#dcedc8"
|
||||
M_ALERT="#e53935"
|
||||
M_LINK="#368bd6"
|
||||
|
||||
replace_colors() {
|
||||
local f="$1"
|
||||
if [[ "$f" =~ "dark" ]]; then
|
||||
echo "Replacing colors (dark) for $f..."
|
||||
BG_ACCENT="$M_ACCENT_DARK"
|
||||
CODEBLOCK_BORDER_COLOR="#121212"
|
||||
CODEBLOCK_BACKGROUND_COLOR="#121212"
|
||||
PILL_COLOR="rgba(255, 255, 255, 0.15)"
|
||||
PILL_HOVER_COLOR="rgba(255, 255, 255, 0.18)"
|
||||
PRESENCE_OFFLINE="#e0e0e0" # not applied because not existing specifically for dark
|
||||
MESSAGE_BUBBLE_BACKGROUND="#424242"
|
||||
MESSAGE_BUBBLE_BACKGROUND_SELF="#303030"
|
||||
MESSAGE_BUBBLE_BACKGROUND_SELECTED="#212121"
|
||||
ROOMLIST_BG_COLOR="#303030"
|
||||
SPACELIST_BG_COLOR="#424242"
|
||||
else
|
||||
echo "Replacing colors (light) for $f..."
|
||||
BG_ACCENT="$M_ACCENT_LIGHT"
|
||||
CODEBLOCK_BORDER_COLOR="#00000010"
|
||||
CODEBLOCK_BACKGROUND_COLOR="#00000010"
|
||||
PILL_COLOR="rgba(0, 0, 0, 0.13)"
|
||||
PILL_HOVER_COLOR="rgba(0, 0, 0, 0.1)"
|
||||
PRESENCE_OFFLINE="#bdbdbd" # for light this should actually be darker
|
||||
MESSAGE_BUBBLE_BACKGROUND="#eeeeee"
|
||||
MESSAGE_BUBBLE_BACKGROUND_SELF="#f1f8e9"
|
||||
MESSAGE_BUBBLE_BACKGROUND_SELECTED="#e0e0e0"
|
||||
ROOMLIST_BG_COLOR="#eeeeee"
|
||||
SPACELIST_BG_COLOR="#fafafa"
|
||||
fi
|
||||
# Neutral colors
|
||||
sed -i 's|#15171b|#212121|gi' "$f"
|
||||
sed -i 's|#15191E|#212121|gi' "$f"
|
||||
sed -i 's|#2e2f32|#212121|gi' "$f"
|
||||
sed -i 's|#232f32|#212121|gi' "$f"
|
||||
sed -i 's|#27303a|#212121|gi' "$f"
|
||||
sed -i 's|#17191C|#212121|gi' "$f"
|
||||
sed -i 's|#181b21|#303030|gi' "$f"
|
||||
sed -i 's|#1A1D23|#303030|gi' "$f"
|
||||
sed -i 's|#20252B|#303030|gi' "$f"
|
||||
sed -i 's|#20252c|#303030|gi' "$f"
|
||||
sed -i 's|#21262c|#383838|gi' "$f" # selection/hover color
|
||||
sed -i 's|#238cf5|#303030|gi' "$f"
|
||||
sed -i 's|#25271F|#303030|gi' "$f"
|
||||
sed -i 's|#272c35|#303030|gi' "$f"
|
||||
sed -i 's|#2a3039|#303030|gi' "$f"
|
||||
sed -i 's|#343a46|#424242|gi' "$f"
|
||||
sed -i 's|#3c4556|#424242|gi' "$f"
|
||||
sed -i 's|#3d3b39|#424242|gi' "$f"
|
||||
sed -i 's|#45474a|#424242|gi' "$f"
|
||||
sed -i 's|#454545|#424242|gi' "$f"
|
||||
sed -i 's|#2e3649|#424242|gi' "$f"
|
||||
sed -i 's|#4e5054|#424242|gi' "$f"
|
||||
sed -i 's|#394049|#424242|gi' "$f"
|
||||
sed -i 's|#3e444c|#424242|gi' "$f"
|
||||
sed -i 's|#61708b|#616161|gi' "$f"
|
||||
sed -i 's|#616b7f|#616161|gi' "$f"
|
||||
sed -i 's|#5c6470|#616161|gi' "$f"
|
||||
sed -i 's|#545a66|#616161|gi' "$f" # pill hover bg color
|
||||
sed -i 's|#737D8C|#757575|gi' "$f"
|
||||
sed -i 's|#6F7882|#757575|gi' "$f"
|
||||
sed -i 's|#91A1C0|#757575|gi' "$f" # icon in button color
|
||||
sed -i 's|#8D99A5|#808080|gi' "$f"
|
||||
sed -i 's|#8E99A4|#808080|gi' "$f" # maybe use #9e9e9e instead
|
||||
sed -i 's|#8D97A5|#808080|gi' "$f"
|
||||
sed -i 's|#a2a2a2|#9e9e9e|gi' "$f"
|
||||
sed -i 's|#9fa9ba|#aaaaaa|gi' "$f" # maybe use #9e9e9e instead
|
||||
sed -i 's|#acacac|#aaaaaa|gi' "$f" # maybe use #9e9e9e instead
|
||||
sed -i 's|#B9BEC6|#b3b3b3|gi' "$f" # maybe use #bdbdbd instead
|
||||
sed -i 's|#a1b2d1|#b3b3b3|gi' "$f"
|
||||
sed -i 's|#A9B2BC|#b3b3b3|gi' "$f"
|
||||
sed -i 's|#C1C6CD|#bdbdbd|gi' "$f"
|
||||
sed -i 's|#c1c9d6|#bdbdbd|gi' "$f"
|
||||
sed -i 's|#c8c8cd|#cccccc|gi' "$f" # maybe use #bdbdbd instead
|
||||
# sed -i 's|#dddddd|#e0e0e0|gi' "$f" # really?
|
||||
sed -i 's|#e7e7e7|#e0e0e0|gi' "$f"
|
||||
sed -i 's|#e3e8f0|#e0e0e0|gi' "$f"
|
||||
sed -i 's|#e9e9e9|#e0e0e0|gi' "$f"
|
||||
sed -i 's|#e9edf1|#e0e0e0|gi' "$f"
|
||||
sed -i 's|#e8eef5|#e0e0e0|gi' "$f"
|
||||
sed -i 's|#deddfd|#e0e0e0|gi' "$f" # $location-live-secondary-color, what to use really?
|
||||
sed -i 's|#edf3ff|#eeeeee|gi' "$f"
|
||||
sed -i 's|#f4f6fa|#f5f5f5|gi' "$f"
|
||||
sed -i 's|#f6f7f8|#f5f5f5|gi' "$f"
|
||||
sed -i 's|#f2f5f8|#f5f5f5|gi' "$f"
|
||||
sed -i 's|#f5f8fa|#f5f5f5|gi' "$f"
|
||||
sed -i 's|#f3f8fd|#fafafa|gi' "$f"
|
||||
sed -i 's|rgba(33, 38, 34,|rgba(48, 48, 48,|gi' "$f"
|
||||
sed -i 's|rgba(33, 38, 44,|rgba(48, 48, 48,|gi' "$f"
|
||||
sed -i 's|rgba(34, 38, 46,|rgba(48, 48, 48,|gi' "$f"
|
||||
sed -i 's|rgba(38, 39, 43,|rgba(48, 48, 48,|gi' "$f"
|
||||
sed -i 's|rgba(38, 40, 45,|rgba(48, 48, 48,|gi' "$f"
|
||||
sed -i 's|rgba(46, 48, 51,|rgba(48, 48, 48,|gi' "$f"
|
||||
sed -i 's|rgba(92, 100, 112,|rgba(97, 97, 97,|gi' "$f"
|
||||
sed -i 's|rgba(141, 151, 165,|rgba(144, 144, 144,|gi' "$f"
|
||||
sed -i 's|rgba(242, 245, 248,|rgba(248, 248, 248,|gi' "$f"
|
||||
|
||||
sed -i "s|\\(\$event-highlight-bg-color: \\).*;|\\1transparent;|gi" "$f"
|
||||
sed -i "s|\\(\$preview-widget-bar-color: \\).*;|\\1#bdbdbd;|gi" "$f"
|
||||
sed -i "s|\\(\$blockquote-bar-color: \\).*;|\\1#bdbdbd;|gi" "$f"
|
||||
sed -i "s|\\(\$pill-bg-color: \\).*;|\\1$PILL_COLOR;|gi" "$f"
|
||||
sed -i "s|\\(\$pill-hover-bg-color: \\).*;|\\1$PILL_HOVER_COLOR;|gi" "$f"
|
||||
|
||||
sed -i "s|\\(\$inlinecode-border-color: \\).*;|\\1$CODEBLOCK_BORDER_COLOR;|gi" "$f"
|
||||
sed -i "s|\\(\$inlinecode-background-color: \\).*;|\\1$CODEBLOCK_BACKGROUND_COLOR;|gi" "$f"
|
||||
sed -i "s|\\(\$codeblock-background-color: \\).*;|\\1$CODEBLOCK_BACKGROUND_COLOR;|gi" "$f"
|
||||
|
||||
sed -i "s|\\(\$presence-offline: \\).*;|\\1$PRESENCE_OFFLINE;|gi" "$f"
|
||||
|
||||
sed -i "s|\\(\$roomlist-bg-color: \\).*;|\\1$ROOMLIST_BG_COLOR;|gi" "$f"
|
||||
sed -i "s|\\(\$spacePanel-bg-color: \\).*;|\\1$SPACELIST_BG_COLOR;|gi" "$f"
|
||||
|
||||
# Accent colors
|
||||
sed -i "s|#368bd6|$M_ACCENT|gi" "$f"
|
||||
sed -i "s|#ac3ba8|$M_ACCENT|gi" "$f"
|
||||
sed -i "s|#0DBD8B|$M_ACCENT|gi" "$f"
|
||||
sed -i "s|#e64f7a|$M_ACCENT|gi" "$f"
|
||||
sed -i "s|#ff812d|$M_ACCENT|gi" "$f"
|
||||
sed -i "s|#2dc2c5|$M_ACCENT|gi" "$f"
|
||||
sed -i "s|#5c56f5|$M_ACCENT|gi" "$f"
|
||||
sed -i "s|#74d12c|$M_ACCENT|gi" "$f"
|
||||
sed -i "s|#76CFA6|$M_ACCENT|gi" "$f"
|
||||
sed -i "s|#03b381|$M_ACCENT|gi" "$f"
|
||||
sed -i "s|rgba(3, 179, 129,|rgba($M_ACCENT_DEC,|gi" "$f"
|
||||
sed -i "s|#03b381|$M_ACCENT|gi" "$f"
|
||||
sed -i "s|#FF5B55|$M_ALERT|gi" "$f"
|
||||
sed -i "s|\\(\$accent-alt: \\).*;|\\1$M_LINK;|gi" "$f"
|
||||
#sed -i "s|\\(\$accent-darker: \\).*;|\\1$M_ACCENT_DARK;|gi" "$f"
|
||||
sed -i "s|\\(\$roomtile-default-badge-bg-color: \\).*;|\\1$M_ACCENT;|gi" "$f"
|
||||
#sed -i "s|\\(\$input-focused-border-color: \\).*;|\\1\$accent;|gi" "$f" # not existing anymore, need replacement?
|
||||
sed -i "s|\\(\$reaction-row-button-selected-bg-color: \\).*;|\\1$BG_ACCENT;|gi" "$f"
|
||||
|
||||
# e2e colors
|
||||
sed -i "s|\\(\$e2e-verified-color: \\).*;|\\1$M_ACCENT;|gi" "$f"
|
||||
sed -i "s|\\(\$e2e-unknown-color: \\).*;|\\1#ffc107;|gi" "$f"
|
||||
sed -i "s|\\(\$e2e-unverified-color: \\).*;|\\1#ffc107;|gi" "$f"
|
||||
sed -i "s|\\(\$e2e-warning-color: \\).*;|\\1$M_ALERT;|gi" "$f"
|
||||
|
||||
# Message bubbles
|
||||
sed -i "s|\\(\$eventbubble-self-bg: \\).*;|\$eventbubble-self-bg: $MESSAGE_BUBBLE_BACKGROUND_SELF;|gi" "$f"
|
||||
sed -i "s|\\(\$eventbubble-others-bg: \\).*;|\$eventbubble-others-bg: $MESSAGE_BUBBLE_BACKGROUND;|gi" "$f"
|
||||
sed -i "s|\\(\$eventbubble-bg-hover: \\).*;|\$eventbubble-bg-hover: $MESSAGE_BUBBLE_BACKGROUND_SELECTED;|gi" "$f"
|
||||
#sed -i "s|\\(\$eventbubble-reply-color: \\).*;$||gi" "$f"
|
||||
}
|
||||
|
||||
replace_colors res/themes/light/css/light.pcss
|
||||
replace_colors res/themes/light/css/_light.pcss
|
||||
replace_colors res/themes/legacy-light/css/legacy-light.pcss
|
||||
replace_colors res/themes/legacy-light/css/_legacy-light.pcss
|
||||
replace_colors res/themes/dark/css/dark.pcss
|
||||
replace_colors res/themes/dark/css/_dark.pcss
|
||||
replace_colors res/themes/legacy-dark/css/legacy-dark.pcss
|
||||
replace_colors res/themes/legacy-dark/css/_legacy-dark.pcss
|
||||
for f in res/**/*.svg; do
|
||||
replace_colors "$f"
|
||||
done
|
||||
|
||||
if [[ "$automatic_commit" == [Yy]* ]]; then
|
||||
# see: https://devops.stackexchange.com/a/5443
|
||||
git add -A
|
||||
git diff-index --quiet HEAD || git commit -m "Automatic theme update"
|
||||
fi
|
||||
|
||||
popd > /dev/null
|
Loading…
x
Reference in New Issue
Block a user