diff --git a/images-nohash/matrix-badge.svg b/images-nohash/matrix-badge.svg
index 9fd48023..30480364 100644
--- a/images-nohash/matrix-badge.svg
+++ b/images-nohash/matrix-badge.svg
@@ -1,20 +1 @@
-
+
\ No newline at end of file
diff --git a/images/app-store-us-alt.svg b/images/app-store-us-alt.svg
index 83437bad..456551cb 100644
--- a/images/app-store-us-alt.svg
+++ b/images/app-store-us-alt.svg
@@ -1,7 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/images/background.svg b/images/background.svg
index 37c31f0d..76ef29b3 100644
--- a/images/background.svg
+++ b/images/background.svg
@@ -1,226 +1 @@
-
+
\ No newline at end of file
diff --git a/images/chat-icon.svg b/images/chat-icon.svg
index c2b29138..2998f534 100644
--- a/images/chat-icon.svg
+++ b/images/chat-icon.svg
@@ -1,4 +1 @@
-
+
\ No newline at end of file
diff --git a/images/client-icons/cinny.svg b/images/client-icons/cinny.svg
new file mode 100644
index 00000000..8701d67b
--- /dev/null
+++ b/images/client-icons/cinny.svg
@@ -0,0 +1,19 @@
+
+
\ No newline at end of file
diff --git a/images/client-icons/element.svg b/images/client-icons/element.svg
index 5d1f7ba3..c304d374 100644
--- a/images/client-icons/element.svg
+++ b/images/client-icons/element.svg
@@ -1,9 +1 @@
-
+
\ No newline at end of file
diff --git a/images/client-icons/fluffychat.svg b/images/client-icons/fluffychat.svg
index 934ebd90..218da041 100644
--- a/images/client-icons/fluffychat.svg
+++ b/images/client-icons/fluffychat.svg
@@ -1,43 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/images/client-icons/fractal.png b/images/client-icons/fractal.png
index e60c89c9..04a55944 100644
Binary files a/images/client-icons/fractal.png and b/images/client-icons/fractal.png differ
diff --git a/images/client-icons/nheko.svg b/images/client-icons/nheko.svg
index ce3ec406..3d65378b 100644
--- a/images/client-icons/nheko.svg
+++ b/images/client-icons/nheko.svg
@@ -1,155 +1 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/images/client-icons/quaternion.svg b/images/client-icons/quaternion.svg
index e20f3bdd..d8a17368 100644
--- a/images/client-icons/quaternion.svg
+++ b/images/client-icons/quaternion.svg
@@ -1,464 +1 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/images/client-icons/tensor.png b/images/client-icons/tensor.png
index f4437c24..6f231795 100644
Binary files a/images/client-icons/tensor.png and b/images/client-icons/tensor.png differ
diff --git a/images/client-icons/weechat.svg b/images/client-icons/weechat.svg
index 96b92b1c..c76ec479 100644
--- a/images/client-icons/weechat.svg
+++ b/images/client-icons/weechat.svg
@@ -1,170 +1 @@
-
-
+
\ No newline at end of file
diff --git a/images/copy.svg b/images/copy.svg
index 1d60511e..565de01f 100644
--- a/images/copy.svg
+++ b/images/copy.svg
@@ -1,4 +1 @@
-
+
\ No newline at end of file
diff --git a/images/fdroid-badge.png b/images/fdroid-badge.png
index 7c8c3c5e..001477b4 100644
Binary files a/images/fdroid-badge.png and b/images/fdroid-badge.png differ
diff --git a/images/flathub-badge.svg b/images/flathub-badge.svg
index ad3b04ad..f65a4aa3 100644
--- a/images/flathub-badge.svg
+++ b/images/flathub-badge.svg
@@ -1,62 +1 @@
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/images/google-play-us.svg b/images/google-play-us.svg
index 888691ad..a7efe1ef 100644
--- a/images/google-play-us.svg
+++ b/images/google-play-us.svg
@@ -1,41 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/images/link.svg b/images/link.svg
index f41a6737..07b64a68 100644
--- a/images/link.svg
+++ b/images/link.svg
@@ -1,3 +1 @@
-
+
\ No newline at end of file
diff --git a/images/matrix-logo.svg b/images/matrix-logo.svg
index 9f2c322c..9c800b83 100644
--- a/images/matrix-logo.svg
+++ b/images/matrix-logo.svg
@@ -1,10 +1 @@
-
+
\ No newline at end of file
diff --git a/images/member-icon.svg b/images/member-icon.svg
index f969c178..3cca2c35 100644
--- a/images/member-icon.svg
+++ b/images/member-icon.svg
@@ -1,7 +1 @@
-
+
\ No newline at end of file
diff --git a/images/tick-dark.svg b/images/tick-dark.svg
index e19a7b1e..228bc2df 100644
--- a/images/tick-dark.svg
+++ b/images/tick-dark.svg
@@ -1,3 +1 @@
-
+
\ No newline at end of file
diff --git a/images/tick.svg b/images/tick.svg
index b4594909..5f66d62a 100644
--- a/images/tick.svg
+++ b/images/tick.svg
@@ -1,3 +1 @@
-
+
\ No newline at end of file
diff --git a/src/open/clients/Cinny.js b/src/open/clients/Cinny.js
new file mode 100644
index 00000000..4636206e
--- /dev/null
+++ b/src/open/clients/Cinny.js
@@ -0,0 +1,66 @@
+/*
+Copyright 2021 The Matrix.org Foundation C.I.C.
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import { Maturity, Platform, LinkKind, FlathubLink, AppleStoreLink, PlayStoreLink, WebsiteLink } from "../types.js";
+
+/**
+ * Information on how to deep link to a given matrix client.
+ */
+export class Cinny {
+ get id() { return "in.cinny"; }
+ get name() { return "Cinny"; }
+ get icon() { return "images/client-icons/cinny.svg"; }
+ get author() { return "ajbura"; }
+ get homepage() { return "https://cinny.in"; }
+ get platforms() {
+ return [
+ Platform.DesktopWeb,
+ ];
+ }
+ get description() { return "Yet another Matrix client."; }
+ getMaturity(platform) {
+ switch (platform) {
+ case Platform.DesktopWeb: return Maturity.Stable;
+ }
+ }
+
+ getInstallLinks(platform) {
+ switch (platform) {
+ default: return [new WebsiteLink("https://cinny.in")];
+ }
+ }
+
+ getLinkInstructions(platform, link) {
+ if (link.kind === LinkKind.User) {
+ switch (platform) {
+ case Platform.DesktopWeb: return "Open the web app at https://cinny.in and log in to your account. Click on 'Public Rooms' and paste the username.";
+ default: return "Open the app and click on 'Public Rooms' and paste the username.";
+ }
+ }
+ if (link.kind === LinkKind.Room) {
+ switch (platform) {
+ case Platform.DesktopWeb: return "Open the web app at https://cinny.in/ and log in to your account. Click on 'Public Rooms' and paste the room address (name:homeserver).";
+ default: return "Open the app on your device. Click on 'Public Rooms' and paste the room address (name:homeserver).";
+ }
+ }
+ }
+
+ getCopyString(platform, link) {
+ if (link.kind === LinkKind.User || link.kind === LinkKind.Room) {
+ return link.identifier;
+ }
+ }
+
+
+ getPreferredWebInstance(link) {}
+}