diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 257a04ad..b144b94b 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -38,6 +38,10 @@
+
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/drawable/shortcut_messages.xml b/android/app/src/main/res/drawable/shortcut_messages.xml
new file mode 100644
index 00000000..2655acb6
--- /dev/null
+++ b/android/app/src/main/res/drawable/shortcut_messages.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/drawable/shortcut_search.xml b/android/app/src/main/res/drawable/shortcut_search.xml
new file mode 100644
index 00000000..8a38b863
--- /dev/null
+++ b/android/app/src/main/res/drawable/shortcut_search.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/drawable/shortcut_spaces.xml b/android/app/src/main/res/drawable/shortcut_spaces.xml
new file mode 100644
index 00000000..04cad331
--- /dev/null
+++ b/android/app/src/main/res/drawable/shortcut_spaces.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 088e07bf..0e50ef1d 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -5,4 +5,8 @@
social.flotilla
social.flotilla
flotilla_push
+ Messages
+ Search
+ Spaces
+ Inbox
diff --git a/android/app/src/main/res/xml/shortcuts.xml b/android/app/src/main/res/xml/shortcuts.xml
new file mode 100644
index 00000000..a32c9b6a
--- /dev/null
+++ b/android/app/src/main/res/xml/shortcuts.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fdroid/prepare.mjs b/fdroid/prepare.mjs
index e0258530..b6985d2b 100644
--- a/fdroid/prepare.mjs
+++ b/fdroid/prepare.mjs
@@ -1,9 +1,9 @@
import assert from "node:assert/strict"
import {appendFile, cp, readFile, rm, writeFile} from "node:fs/promises"
-const replace = async (file, pattern, replacement) => {
+const replace = async (file, pattern, replacement, count = 1) => {
const source = await readFile(file, "utf8")
- assert.equal([...source.matchAll(pattern)].length, 1, `Expected one match in ${file}`)
+ assert.equal([...source.matchAll(pattern)].length, count, `Expected ${count} matches in ${file}`)
await writeFile(file, source.replace(pattern, replacement))
}
@@ -59,6 +59,12 @@ await replace(
/\n {8}