From 27fa25c35cd168027cc5ff896b855621c4d018d3 Mon Sep 17 00:00:00 2001
From: Coracle-Bot
Date: Wed, 9 Sep 2026 00:35:47 +0000
Subject: [PATCH] Load the home network feed with the app feed helpers
---
e2e/USER_STORIES.md | 11 +++
e2e/specs/notifications.spec.ts | 29 ++++++-
src/app/components/HomeNetwork.svelte | 113 ++++++++++++--------------
3 files changed, 92 insertions(+), 61 deletions(-)
diff --git a/e2e/USER_STORIES.md b/e2e/USER_STORIES.md
index d7bfc83b..596d69f9 100644
--- a/e2e/USER_STORIES.md
+++ b/e2e/USER_STORIES.md
@@ -1576,6 +1576,17 @@ Acceptance:
- Hosting is offered whether or not she hosts a space: a shortcut to the hosting
panel when she has one, an invitation to start one when she doesn't.
+### US-117 — See notes from the people I follow
+
+As alice, I want the home page to show what the people I follow have posted, so
+that home is worth opening when nothing is waiting for me.
+
+Acceptance:
+
+- The Network section lists notes from her follows, resolved through the relays
+ those people publish to.
+- Scrolling to the end of the feed loads more rather than asking her to.
+
### US-106 — Share text into the app
As alice, I want to hand text to Flotilla and choose where it lands, so that I
diff --git a/e2e/specs/notifications.spec.ts b/e2e/specs/notifications.spec.ts
index 8a14ad8c..3f2ffe9a 100644
--- a/e2e/specs/notifications.spec.ts
+++ b/e2e/specs/notifications.spec.ts
@@ -1,7 +1,7 @@
import {neventEncode, npubEncode} from "nostr-tools/nip19"
import {HOUR, MINUTE} from "@welshman/lib"
import {displayRelayUrl} from "@welshman/util"
-import {Classified, MessagingRelayList, RelayList, Thread} from "@welshman/domain"
+import {Classified, FollowList, MessagingRelayList, Note, RelayList, Thread} from "@welshman/domain"
import type {Locator, Page} from "@playwright/test"
import {expect, roomPath, spacePath, test, users} from "../harness"
import type {SeededSpace, TestUser} from "../harness"
@@ -415,6 +415,33 @@ test("US-116 read the home dashboard", async ({seed, as}) => {
await expect(page.getByText("You're all caught up")).toBeVisible()
})
+test("US-117 read the network feed on home", async ({seed, as}) => {
+ const note = "the tide charts are wrong again"
+
+ await seed(({relay, user}) => {
+ const space = relay("space")
+
+ space.room("general", {name: "General"})
+ space.join(user.alice, "general")
+ space.join(user.bob, "general")
+
+ // The feed asks each follow's write relays for their notes, so a note is only reachable
+ // through a relay list naming one.
+ seedRelays(space, user.alice)
+ seedRelays(space, user.bob)
+
+ space.event(user.alice, () =>
+ space.kind(FollowList).writer().follow(user.bob.pubkey).renderTemplate(),
+ )
+ space.event(user.bob, () => space.kind(Note).writer().setContent(note).renderTemplate())
+ })
+
+ const page = await as(users.alice, "/home")
+
+ await expect(page.getByRole("heading", {name: "Network"})).toBeVisible()
+ await expect(page.getByText(note)).toBeVisible()
+})
+
test("US-106 share text into the app", async ({seed, as}) => {
const shared = "the offsite is moving to the 14th"
diff --git a/src/app/components/HomeNetwork.svelte b/src/app/components/HomeNetwork.svelte
index 9524b242..6ac0466a 100644
--- a/src/app/components/HomeNetwork.svelte
+++ b/src/app/components/HomeNetwork.svelte
@@ -1,83 +1,76 @@
@@ -91,12 +84,12 @@
Browse spaces
- {:else if events.length === 0}
+ {:else if notes.length === 0}