Skip to content

fix(web): tie the privacy copy to who can read each space - #400

Merged
botandbang merged 2 commits into
mainfrom
bnb/privacy-copy
Nov 2, 2026
Merged

botandbang merged 2 commits into
mainfrom
bnb/privacy-copy

Conversation

@botandbang

@botandbang botandbang commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

What and why

A memberspace policy can make a space publicly readable (publicRead), so data isn't private just because it sits in a space. Each space's read policy is what keeps ours private. This changes the web app's copy to say who can read things.

  • Project form: the private booking details hint now reads "Only this project's managers and Local Network staff see these, and people you let into one of your press kits." It used to say only signed-in members saw them, in a private atproto space.
  • Privacy page: each booking thread is now described as a space under Local Network's account whose only members are the promoter and the project's managers, which Local Network indexes to show the thread to them, as the About page already says. That section's heading changes from "Just you and the other party" to "Booking threads and your planner". A new "Acts, parties and venues" section says what those spaces hold, that only their people are members, and that staff see them through the site.
  • About page: the intro says each space's read policy decides who can read it, the moderation space line says only staff can read it, and the Staff space entry says staff read it.
  • "How signing in works" on the sign-in page: says Local Network keeps inquiries, requests, drafts and the planner where only the people involved can read them.
  • Site footer: "private data in spaces only their members can read".
  • apps/web/README.md: the intro uses the same read policy wording, and the act, party and venue rows say staff read those spaces through the app, since staff aren't members. The root README's app row says "member-only spaces".

Part of LOC-157.

How it was tested

  • In apps/web: pnpm verify and pnpm test:coverage (94.25% statements, 84.56% branches, 94.55% functions, 95.7% lines, all above the thresholds).
  • From the root: pnpm exec ast-grep test --skip-snapshot-tests, pnpm exec ast-grep scan and tools/policy.sh.
  • Looked at /privacy, /about, /login, the footer and the new project form on pnpm dev at 390 and 1280 px wide, signed in as neon.test for the form.

No tests added: the change is copy only.

Earlier exposure of private booking details

Until 2026-11-02 02:43 UTC, the root's industry space, which holds projects' private booking details, had a public read policy. Before #329 the app created it that way on purpose. Under the 10-22 spaces alpha that let any signed-in atproto account read it. Under the 10-29 alpha the same policy is publicRead: true, which has the host issue a read credential to anyone who asks. #329 changed the code to staff-only, but the startup bootstrap only created missing spaces and never corrected an existing space's policy. #379 added that correction. Its deploy logged corrected root space policies for the industry space (publicRead from true to false) at 02:43:55 UTC, and the space has been staff-only since.

Checklist

  • Tests cover the change (copy only)
  • For the website: Storybook stories cover any new UI states (no new states)
  • The READMEs, docs/ and --help still say what the code does

A memberspace policy can make a space publicly readable, so data is not
private just because it sits in a space. The booking details hint, the
about and sign-in pages, the footer and the READMEs now say who can read
each kind of data. The privacy page says Local Network hosts and indexes
booking threads, and covers act, party and venue spaces.

Part of LOC-157.
@botandbang
botandbang requested a review from bnb as a code owner November 2, 2026 14:28
@linear-code

linear-code Bot commented Nov 2, 2026

Copy link
Copy Markdown

LOC-157

@github-actions github-actions Bot added documentation Improvements or additions to documentation web The Local Network website (apps/web) web: projects Project profiles, claims, and the DJ stats and sets on them web: accounts Signing in, sessions and the account pages web: ui Shared components, design tokens, layout and the static pages labels Nov 2, 2026
bnb
bnb previously approved these changes Nov 2, 2026
@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Coverage Report for apps/web

Status Category Percentage Covered / Total
🟢 Lines 95.96% (🎯 93%)
🟰 ±0 pp
8840 / 9212
🟢 Statements 94.49% (🎯 91%)
🟰 ±0 pp
13604 / 14397
🟢 Functions 94.72% (🎯 92%)
🟰 ±0 pp
3647 / 3850
🟢 Branches 84.94% (🎯 80%)
🟰 ±0 pp
6251 / 7359
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
apps/web/src/lib/sign-in.ts 100%
🟰 ±0 pp
100%
🟰 ±0 pp
100%
🟰 ±0 pp
100%
🟰 ±0 pp
apps/web/src/lib/components/ProjectForm.svelte 81.57%
🟰 ±0 pp
50%
🟰 ±0 pp
85.36%
🟰 ±0 pp
84%
🟰 ±0 pp
94-112, 118-123, 120, 76-80
Generated in workflow #231 for commit 0a81302 by the Vitest Coverage Report Action

Size

Compared with main. KiB are 1,024 bytes.

This pull request main Change
Client JavaScript 741.4 KiB 740.9 KiB +530 B (+0.1%)
Client JavaScript, brotli 249.7 KiB 249.4 KiB +209 B (+0.1%)
Client CSS 92.7 KiB 92.7 KiB 0 B (0%)
Client CSS, brotli 13.3 KiB 13.3 KiB 0 B (0%)

# Conflicts:
#	apps/web/src/routes/login/+page.svelte
@botandbang
botandbang added this pull request to the merge queue Nov 2, 2026
Merged via the queue into main with commit aea6854 Nov 2, 2026
24 checks passed
@botandbang
botandbang deleted the bnb/privacy-copy branch November 2, 2026 23:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation web: accounts Signing in, sessions and the account pages web: projects Project profiles, claims, and the DJ stats and sets on them web: ui Shared components, design tokens, layout and the static pages web The Local Network website (apps/web)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants