@supersuit/artifacts 0.58.0 → 0.58.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,19 @@
3
3
  `@supersuit/artifacts`. One entry per version, newest first. Each entry says what changed, how a
4
4
  host can tell whether it is affected (DETECTOR), what a host does about it (REMEDY), and the tests.
5
5
 
6
+ ## 0.58.1 (2026-10-27)
7
+
8
+ **The no-link door on a per-reader page offers sign-in.** A signed-in owner or hub admin already got
9
+ through a `links: per-reader` page without a link, but a signed-out one met "This page opens from the
10
+ link it was sent with." and nothing else, so a co-founder opening a company page's bare address had
11
+ no way in (2026-10-27).
12
+
13
+ - DETECTOR: open a per-reader page's bare address signed out; the door has no sign-in link.
14
+ - REMEDY: none for the host beyond taking this version. The door now carries "Sign in" (only with
15
+ `signInOrigin` set, only to a visitor not signed in); a signed-in reader who is not owner or admin
16
+ still sees the plain door, and nothing of the page is shown before the gate.
17
+ - Tests: `src/routes/per-reader.test.tsx` (sign-in offered when signed out, not offered when signed in).
18
+
6
19
  ## 0.58.0 (2026-10-27)
7
20
 
8
21
  **A link's provenance can name its reader by an opaque person id.** Superlinks step 6: a funnel
@@ -353,7 +353,9 @@ export function createArtifactRoutes(config) {
353
353
  const secret = usableSecret(config.recipientSecret?.());
354
354
  const g = await perReaderGate({ id, param, cookie: await readCookie(ridCookieName(id)).catch(() => undefined), secret, recipients: config.recipients });
355
355
  if (g.state === 'shut') {
356
- return (_jsx(BrandGround, { pack: pack, mode: a.theme, children: _jsx("p", { "data-per-reader-shut": true, className: "mx-auto max-w-xl px-6 pt-32 text-center text-lg opacity-80", children: g.why === 'no-link' ? NO_LINK : UNAVAILABLE }) }));
356
+ return (_jsxs(BrandGround, { pack: pack, mode: a.theme, children: [_jsx("p", { "data-per-reader-shut": true, className: "mx-auto max-w-xl px-6 pt-32 text-center text-lg opacity-80", children: g.why === 'no-link' ? NO_LINK : UNAVAILABLE }), g.why === 'no-link' && !me && signInOrigin
357
+ ? _jsxs("p", { "data-per-reader-sign-in": true, className: "mx-auto max-w-xl px-6 pt-4 text-center text-base opacity-70", children: ["Published this page or help run this site? ", _jsx("a", { className: "underline", href: signInUrl(signInOrigin, pageUrl(id)), children: "Sign in" })] })
358
+ : null] }));
357
359
  }
358
360
  // A fetcher is not the reader: it sets no cookie, carries no render token and sees no note.
359
361
  const remember = g.fromLink && !bot
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@supersuit/artifacts",
3
- "version": "0.58.0",
3
+ "version": "0.58.1",
4
4
  "description": "Publish markdown as branded, read-aloud pages from a Next.js app: the artifacts store, the route factory, the read-along reader, brand packs, password and confidential pages, and share cards.",
5
5
  "license": "MIT",
6
6
  "type": "module",