diff --git a/community/phosh/0001-app-list-model-phantom-launcher.patch b/community/phosh/0001-app-list-model-phantom-launcher.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b2aa205d26af23afcfe5bf7efa58b1b23747e245
--- /dev/null
+++ b/community/phosh/0001-app-list-model-phantom-launcher.patch
@@ -0,0 +1,155 @@
+Taken from upstream, fixes an issue where an application launcher would
+in some cases disappear making it impossible to launch that application
+via the GUI.
+
+From 1b642cd8ba63fd10ad40030e1e9c16e04c090e6e Mon Sep 17 00:00:00 2001
+From: Zander Brown <zbrown@gnome.org>
+Date: Fri, 19 Jun 2020 19:49:14 +0100
+Subject: [PATCH] app-list-model: phantom launcher
+
+At last a fix for the missing item problem
+
+tl;dr: we skipped the first entry
+
+The reason it was weirdly deterministic is that we _always_ skipped
+the first item and as long as the entries didn't change the item would
+_always_ be the same
+
+Why was the item seemingly random? Because the list doesn't have any
+sorting at the point we lost an item
+
+So why didn't this effect more people? A system has many, many entries -
+a lot of which aren't actually app launchers. For example my laptop
+currently has 301 entries of which 172 should actually be shown. By pure
+fluke we got lucky most of the time and skipped an unintersting one.
+
+The fix is painfully simple: iterate the GList properly
+---
+ src/app-list-model.c  | 18 +++++++++--------
+ tools/dump-app-list.c | 47 +++++++++++++++++++++++++++++++++++++++++++
+ tools/meson.build     |  3 +++
+ 3 files changed, 60 insertions(+), 8 deletions(-)
+ create mode 100644 tools/dump-app-list.c
+
+diff --git a/src/app-list-model.c b/src/app-list-model.c
+index 648ee00..5281985 100644
+--- a/src/app-list-model.c
++++ b/src/app-list-model.c
+@@ -1,12 +1,14 @@
+ /*
+- * Copyright © 2019 Zander Brown <zbrown@gnome.org>
++ * Copyright © 2019-2020 Zander Brown <zbrown@gnome.org>
+  *
+  * Inspired by gliststore.c:
+  *     Copyright 2015 Lars Uebernickel
+  *     Copyright 2015 Ryan Lortie
+  * https://gitlab.gnome.org/GNOME/glib/blob/713fec9dcb1ee49c4f64bbb6f483a5cd1db9966a/gio/gliststore.c
+  *
+- * SPDX-License-Identifier: GPL-3.0+
++ * SPDX-License-Identifier: GPL-3-or-later
++ *
++ * Author: Zander Brown <zbrown@gnome.org>
+  */
+ 
+ #include "app-list-model.h"
+@@ -116,27 +118,27 @@ items_changed (gpointer data)
+ {
+   PhoshAppListModel *self = PHOSH_APP_LIST_MODEL (data);
+   PhoshAppListModelPrivate *priv = phosh_app_list_model_get_instance_private (self);
+-  GList *new_apps;
++  g_autolist(GAppInfo) new_apps = NULL;
+   int removed;
+   int added = 0;
+ 
+   new_apps = g_app_info_get_all ();
+ 
++  g_return_val_if_fail (new_apps != NULL, G_SOURCE_REMOVE);
++
+   removed = g_sequence_get_length (priv->items);
+ 
+   g_sequence_remove_range (g_sequence_get_begin_iter (priv->items),
+                            g_sequence_get_end_iter (priv->items));
+ 
+-  while ((new_apps = g_list_next (new_apps))) {
+-    if (!g_app_info_should_show (G_APP_INFO (new_apps->data))) {
++  for (GList *l = new_apps; l; l = g_list_next (l)) {
++    if (!g_app_info_should_show (G_APP_INFO (l->data))) {
+       continue;
+     }
+-    g_sequence_append (priv->items, g_object_ref (new_apps->data));
++    g_sequence_append (priv->items, g_object_ref (l->data));
+     added++;
+   }
+ 
+-  g_list_free_full (new_apps, g_object_unref);
+-
+   priv->last.is_valid = FALSE;
+   priv->last.iter = NULL;
+   priv->last.position = 0;
+diff --git a/tools/dump-app-list.c b/tools/dump-app-list.c
+new file mode 100644
+index 0000000..2f7919d
+--- /dev/null
++++ b/tools/dump-app-list.c
+@@ -0,0 +1,47 @@
++/*
++ * Copyright © 2020 Zander Brown <zbrown@gnome.org>
++ *
++ * SPDX-License-Identifier: GPL-3-or-later
++ *
++ * Author: Zander Brown <zbrown@gnome.org>
++ *
++ * Print the contents of PhoshAppListModel
++ */
++
++#include <app-list-model.h>
++
++int
++main (int argc, char **argv)
++{
++  PhoshAppListModel *list = phosh_app_list_model_get_default ();
++  int i = 0;
++  GAppInfo *info;
++  GMainLoop *loop;
++
++  g_print ("Populating...\n");
++
++  /* Let the main loop run a bit for the timeouts/idle callbacks to run */
++  loop = g_main_loop_new (NULL, FALSE);
++  g_timeout_add_seconds (2, G_SOURCE_FUNC (g_main_loop_quit), loop);
++  g_main_loop_run (loop);
++
++  while ((info = g_list_model_get_item (G_LIST_MODEL (list), i))) {
++    if (G_IS_DESKTOP_APP_INFO (info)) {
++      g_print ("%s\n - %s\n",
++               g_app_info_get_id (info),
++               g_desktop_app_info_get_filename (G_DESKTOP_APP_INFO (info)));
++    } else {
++      /* Unlikely but handle it just in case */
++      g_print ("%s\n - %s\n",
++               g_app_info_get_id (info),
++               G_OBJECT_TYPE_NAME (info));
++    }
++
++    i++;
++    g_clear_object (&info);
++  }
++
++  g_print ("=== %i items\n", i);
++
++  return 0;
++}
+diff --git a/tools/meson.build b/tools/meson.build
+index 65a6a6d..d3fdd13 100644
+--- a/tools/meson.build
++++ b/tools/meson.build
+@@ -34,3 +34,6 @@ executable('notify-blocks', ['notify-blocks.c'],
+ 
+ executable('notify-server-standalone', ['notify-server-standalone.c'] + stubs,
+            dependencies: phosh_dep)
++
++executable('dump-app-list', ['dump-app-list.c'],
++           dependencies: phosh_dep)
+-- 
+2.27.0
+
diff --git a/community/phosh/APKBUILD b/community/phosh/APKBUILD
index eff41e031809f2d61e011ac3ad44eb2b00823bd5..85a437d33583703b70f1b80f169f91d14051243e 100644
--- a/community/phosh/APKBUILD
+++ b/community/phosh/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Rasmus Thomsen <oss@cogitri.dev>
 pkgname=phosh
 pkgver=0.3.0
-pkgrel=0
+pkgrel=1
 pkgdesc="Shell PoC for the Librem5"
 # Blocked on mips and s390x by gnome-session, gnome-settings-daemon, squeekboard and libhandy
 # Blocked on ppc64le by gnome-session
@@ -18,6 +18,7 @@ subpackages="$pkgname-lang"
 source="$pkgname-$pkgver.tar.xz::https://repo.pureos.net/pureos/pool/main/p/phosh/phosh_$pkgver.tar.xz
 	phosh.desktop
 	sm.puri.OSK0.desktop
+	0001-app-list-model-phantom-launcher.patch
 	"
 options="!check" # Needs a running Wayland compositor
 
@@ -55,4 +56,5 @@ package() {
 }
 sha512sums="13561a413ab56c678c0550e0fdb7d5cbf739c2b6bab5aec84037903e15a3352539d82fb2a9f5fd7b447378507530e5473e6f1add00c6e5c37f88c26f95caa602  phosh-0.3.0.tar.xz
 6644870edbbbc6b88d6e19f7771d81dba1a11066c2b34e4c22736db73a2dfd0d4909b4967503059c35385c5139a834a5c06a3c56b148ba1275d7f089c0c5f33c  phosh.desktop
-f97019598323276cf97ae62f04b6245983198e04b228ddc605835ee46845d9b88c6890fb86e97e4bb6f1ad73361437d9ed18c91e81fe1284a88cdcb92d3fdc69  sm.puri.OSK0.desktop"
+f97019598323276cf97ae62f04b6245983198e04b228ddc605835ee46845d9b88c6890fb86e97e4bb6f1ad73361437d9ed18c91e81fe1284a88cdcb92d3fdc69  sm.puri.OSK0.desktop
+028ae14f8991b66ee3d9384f3b69a57c7e6a32379d2101bc4c0798de7d247f96af20b7993b4854e717fa5e711ef6ca780b38a4bca06f2d5f465bf677bc57fbd4  0001-app-list-model-phantom-launcher.patch"