diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 19ce069f..501976dc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -45,7 +45,9 @@ codesign-windows:
stage: sign
image: win10-base
tags: [libvirt,powershell]
- resource_group: windows_signingA
+ rules:
+ - if : '$CI_PIPELINE_TRIGGERED == null && $CI_COMMIT_REF_PROTECTED == "true"'
+ resource_group: windows_signing
environment:
name: windows_signing
#variables:
@@ -53,16 +55,58 @@ codesign-windows:
script:
- Get-ChildItem -Path Cert:CurrentUser\My
- ./.ci/windows/sign.bat
+ - mkdir -p artifacts
+ - mv nheko.msix artifacts/nheko.msix
needs:
- job: build-windows
- rules:
- - if : '$CI_COMMIT_REF_PROTECTED == "true"'
artifacts:
paths:
- - nheko.msix
+ - artifacts/nheko.msix
name: nheko-${CI_COMMIT_SHORT_SHA}-windows
expose_as: 'windows-app'
+upload-windows:
+ stage: deploy
+ image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine:latest
+ tags: [docker]
+ rules:
+ - if: '$CI_PIPELINE_TRIGGERED == null && $CI_COMMIT_REF_PROTECTED == "true" && $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/'
+ variables:
+ PACKAGE_NAME: "windows"
+ - if: '$CI_PIPELINE_TRIGGERED == null && $CI_COMMIT_REF_PROTECTED == "true"'
+ variables:
+ GIT_STRATEGY: none
+ PACKAGE_NAME: "windows-nightly"
+ before_script:
+ - apk add curl unzip
+ script:
+ - export VERSION=$(unzip -p artifacts/nheko.msix AppxManifest.xml | sed -n 's/.* Version="\([0-9.]*\)".*/\1/p')
+ - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file artifacts/nheko.msix "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PACKAGE_NAME}/${VERSION}/nheko.msix"'
+ needs:
+ - job: codesign-windows
+
+pages:
+ stage: deploy
+ image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine:latest
+ tags: [docker]
+ rules:
+ - if: '$CI_PIPELINE_TRIGGERED == null && $CI_COMMIT_REF_PROTECTED == "true"'
+ interruptible: true
+ before_script:
+ - apk add curl jq
+ script:
+ - export LATEST_WINDOWS_NIGHTLY=$(curl "https://nheko.im/api/v4/projects/2/packages?package_name=windows-nightly&order_by=version&sort=desc" | jq -r '.[0].version')
+ - sed "s/0.11.3.4/${LATEST_WINDOWS_NIGHTLY}/g" -i resources/NhekoNightly.appinstaller
+ - mkdir public
+ - mv resources/NhekoNightly.appinstaller public
+ needs:
+ - job: upload-windows
+ optional: true
+ artifacts: false
+ artifacts:
+ paths:
+ - public
+
build-clazy:
stage: build
image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine:latest
@@ -375,6 +419,7 @@ github-release:
#- appimage-amd64 <- disabled because of missing packages
- build-flatpak
- codesign-macos
+ - codesign-windows
before_script:
- apk update && apk add jq curl perl
script:
diff --git a/im.nheko.Nheko.yaml b/im.nheko.Nheko.yaml
index 2b315692..f8da2a22 100644
--- a/im.nheko.Nheko.yaml
+++ b/im.nheko.Nheko.yaml
@@ -178,15 +178,17 @@ modules:
- buildsystem: meson
name: gstreamer
sources:
- - commit: ecd471f5ea4645102b206a43d863f0f0fe7d04ec
- tag: 1.22.3
+ - commit: 4d13eddc8b6d3f42ba44682ba42048acf170547f
+ tag: 1.22.7
type: git
url: https://gitlab.freedesktop.org/gstreamer/gstreamer.git
config-opts:
- --auto-features=disabled
- -Dgood=enabled
- -Dgst-plugins-good:qt6=enabled
- #- -Dqt6=enabled <- not available on 1.22
+ - -Dgst-plugins-good:qt-egl=enabled
+ - -Dgst-plugins-good:qt-wayland=enabled
+ - -Dgst-plugins-good:qt-x11=enabled
- -Dbase=enabled
- -Dgst-plugins-base:gl=enabled
- -Dgst-plugins-base:gl_platform=glx,egl
diff --git a/resources/AppxManifest.xml b/resources/AppxManifest.xml
index 417d0229..978fda8c 100644
--- a/resources/AppxManifest.xml
+++ b/resources/AppxManifest.xml
@@ -16,7 +16,7 @@
-
+
diff --git a/resources/NhekoNightly.appinstaller b/resources/NhekoNightly.appinstaller
new file mode 100644
index 00000000..bd94f5d9
--- /dev/null
+++ b/resources/NhekoNightly.appinstaller
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+ true
+
+
+
diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp
index ba1d7880..7d5e8ba3 100644
--- a/src/timeline/InputBar.cpp
+++ b/src/timeline/InputBar.cpp
@@ -464,11 +464,11 @@ InputBar::message(const QString &msg, MarkdownOverride useMarkdown, bool rainbow
text.body = replaceMatrixToMarkdownLink(msg.trimmed()).toStdString();
// Don't send formatted_body, when we don't need to
- // Specifically, if it includes no html tag and no newlines (which behave differently in
- // formatted bodies). Probably we forgot something, so this might need to expand at some
- // point.
+ // Specifically, if it includes no html tag and no newlines or
+ // backslashes (which behave differently in formatted bodies). Probably
+ // we forgot something, so this might need to expand at some point.
if (text.formatted_body.find('<') == std::string::npos &&
- text.body.find('\n') == std::string::npos)
+ text.body.find('\n') == std::string::npos && text.body.find('\\') == std::string::npos)
text.formatted_body = "";
else
text.format = "org.matrix.custom.html";
@@ -883,7 +883,7 @@ InputBar::command(const QString &command, QString args)
err->matrix_error.error);
});
} else if (command == QLatin1String("shrug")) {
- message("¯\\_(ツ)_/¯" + (args.isEmpty() ? QLatin1String("") : " " + args));
+ message("¯\\\\\\_(ツ)\\_/¯" + (args.isEmpty() ? QLatin1String("") : " " + args));
} else if (command == QLatin1String("fliptable")) {
message(QStringLiteral("(╯°□°)╯︵ ┻━┻"));
} else if (command == QLatin1String("unfliptable")) {