diff --git a/tests/ui/app.spec.js b/tests/ui/app.spec.js index 7b4072f..6926410 100644 --- a/tests/ui/app.spec.js +++ b/tests/ui/app.spec.js @@ -2115,3 +2115,15 @@ test('a Signal holds the items Jev says fit its keywords, read where they are re await page.request.delete(`/api/feeds/${encodeURIComponent(feed)}`); await page.request.patch('/api/me', { data: { typesafe_key: null } }); }); + +test('a Signal with no key to judge it links to where one is got and where it goes', async ({ page }) => { + await page.request.patch('/api/me', { data: { typesafe_key: null } }); + const { id } = await (await page.request.post('/api/signals', { data: { name: 'Keyless', keywords: ['x'] } })).json(); + await page.reload(); + await page.evaluate(id => selectFeed(':signal:' + id), id); + await expect(page.locator('#content a[href="https://typesafe.ai"]')).toBeVisible(); + await page.locator('#content [data-keylink]').click(); + await expect(page.locator('#stskey')).toBeFocused(); + await page.keyboard.press('Escape'); + await page.request.delete(`/api/signals/${id}`); +}); diff --git a/web/CHANGELOG.md b/web/CHANGELOG.md index 55500b3..18b40a9 100644 --- a/web/CHANGELOG.md +++ b/web/CHANGELOG.md @@ -13,7 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Signals pick what matters out of the noise of every feed you subscribe to: New signal takes a name, the words to listen for and, if those are not enough, a sentence saying what you mean, and its page lists the items from your feeds that are about it, read and unread as in their own feeds. Settings takes your TypeSafe key, which Signals need (#254). They are kept in a Signals folder first in the feed list, under All Subscriptions, closed or open as an OPML is, with its own page listing them and a + there for a new one (#255, #256, #265). Each can have an icon of its own, searched for among all of Font Awesome Free, in place of its initials (#261), or one picked for it with Auto, which a Signal made without an icon gets by itself; each Signal's row counts its items and unread as a feed's does (#263). +- Signals pick what matters out of the noise of every feed you subscribe to: New signal takes a name, the words to listen for and, if those are not enough, a sentence saying what you mean, and its page lists the items from your feeds that are about it, read and unread as in their own feeds. Settings takes your TypeSafe key, which Signals need, and a Signal without one links to typesafe.ai to get one and to the key's place in Settings (#254, #266). They are kept in a Signals folder first in the feed list, under All Subscriptions, closed or open as an OPML is, with its own page listing them and a + there for a new one (#255, #256, #265). Each can have an icon of its own, searched for among all of Font Awesome Free, in place of its initials (#261), or one picked for it with Auto, which a Signal made without an icon gets by itself; each Signal's row counts its items and unread as a feed's does (#263). - A list opens at once when you have seen it before or the page fetched it ahead: All Subscriptions and the feeds with something unread are fetched when the page loads, and a feed or filter as the pointer or a finger reaches it, then refreshed behind once shown. A list that has to be waited for shows a spinner instead of nothing (#247). Currently Listening and the Directory's front page are fetched ahead the same way and open at once (#248). ### Changed diff --git a/web/src/signals.ts b/web/src/signals.ts index 53519e7..bd12f5b 100644 --- a/web/src/signals.ts +++ b/web/src/signals.ts @@ -109,7 +109,7 @@ function signalHead(sg: Signal){
Add your TypeSafe key in Settings first: without one, nothing is picked out.
':''} + ${nokey?`Without a TypeSafe key, nothing is picked out. ${KEY_LINKS}
`:''}