release: account deletion's unlink and report/block/hide on chat lines (v0.7.0) #73

Merged
whitlocktech merged 6 commits from edge into main 2026-10-30 16:45:59 -05:00
Member

Cuts edge over to main so the demo, and every other site, gets the features the app's v0.7.0 (Android-app#65) is built for. The demo installs the newest Module-Rust release with an equal protocol on its next wipe (DM12), so the Play reviewer gets the chat menu and deletion's unlink there too. Only the module changes. The demo's seed, its chat audience and play-review's role stay as they are.

What lands on main

  • #70 feat(links): onUserDeleting unlinks every Steam id before an account is deleted (ACCOUNT_DELETION.md §4.4, MODULE_API 1.20.0).
  • #71 chore: removes the stray empty file #70 committed.
  • #72 feat(safety): the rust.chat report target and the steam game identity. The events feed is filtered per reader through ctx.safety, chat lines carry canBlock, staff get POST /admin/rust/chat/:id/hide|unhide, and the web gets the ⋯ chat menu (USER_SAFETY.md §4.2, MODULE_API 1.21.0).

Release. The commits are feats, so CI releases v0.7.0. coreApi moves from ^1.19.0 to ^1.21.0, pinned to f13b8fe (the website#233 merge), so a site needs website main at or after that merge. The demo pulls website main at each wipe, so it qualifies. The install manifest's protocol stays 14, with no bridge change.

Checked. Server suite locally on 0c29dbf (this head): 750/750. #72's own run went green on client-build and frozen-manifest. Its server-tests failed in checkout with No space left on device on the runner (run 82, job 0), before any test ran. #71's run before it (81) had passed server-tests. This PR's own run gates the merge. If it fails the same way, the runner's disk needs clearing.

  • AI-assisted: Claude Code (Claude Opus 5.5)

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

Cuts `edge` over to `main` so the demo, and every other site, gets the features the app's v0.7.0 (Android-app#65) is built for. The demo installs the newest Module-Rust release with an equal protocol on its next wipe (DM12), so the Play reviewer gets the chat menu and deletion's unlink there too. Only the module changes. The demo's seed, its chat audience and play-review's role stay as they are. **What lands on main** - #70 `feat(links)`: `onUserDeleting` unlinks every Steam id before an account is deleted (`ACCOUNT_DELETION.md` §4.4, MODULE_API 1.20.0). - #71 `chore`: removes the stray empty file #70 committed. - #72 `feat(safety)`: the `rust.chat` report target and the `steam` game identity. The events feed is filtered per reader through `ctx.safety`, chat lines carry `canBlock`, staff get `POST /admin/rust/chat/:id/hide|unhide`, and the web gets the `⋯` chat menu (`USER_SAFETY.md` §4.2, MODULE_API 1.21.0). **Release.** The commits are `feat`s, so CI releases **v0.7.0**. `coreApi` moves from `^1.19.0` to `^1.21.0`, pinned to `f13b8fe` (the website#233 merge), so a site needs website `main` at or after that merge. The demo pulls website `main` at each wipe, so it qualifies. The install manifest's `protocol` stays **14**, with no bridge change. **Checked.** Server suite locally on `0c29dbf` (this head): 750/750. #72's own run went green on client-build and frozen-manifest. Its `server-tests` failed in checkout with `No space left on device` on the runner (run 82, job 0), before any test ran. #71's run before it (81) had passed server-tests. This PR's own run gates the merge. If it fails the same way, the runner's disk needs clearing. - [x] AI-assisted: Claude Code (Claude Opus 5.5) 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 6 commits 2026-10-30 15:28:06 -05:00
feat(links): unlink every Steam id before an account is deleted (MODULE_API 1.20.0)
All checks were successful
PR Checks / server-tests (pull_request) Successful in 1m1s
PR Checks / frozen-manifest (pull_request) Successful in 1m28s
PR Checks / client-build (pull_request) Successful in 43s
b5573d9ae3
ACCOUNT_DELETION.md §4.4 (AD10). api.onUserDeleting calls links.unlinkForDeletion,
which runs the player's own unlinkOwned per link, logs rust.account.unlink with
reason 'account deleted', and marks every server's permission sync dirty so the
withdrawn grants reach the game on the next tick. coreApi ^1.20.0; core-ref pinned
to website#232's merge (7bd93b8); engagement manifest regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
Reviewed-on: #70
chore: remove a stray empty file committed by #70
All checks were successful
PR Checks / client-build (pull_request) Successful in 51s
PR Checks / frozen-manifest (pull_request) Successful in 1m19s
PR Checks / server-tests (pull_request) Successful in 35s
bd13f197c5
`Promise.reject(dup)` is a zero-byte file a tool hook wrote into the working
tree; #70 committed it by accident. Nothing reads it. Found in the account
deletion walk (docs/website/ACCOUNT_DELETION.md step 6, W1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
Reviewed-on: #71
feat(safety): report, block and hide chat lines (MODULE_API 1.21.0)
Some checks failed
PR Checks / client-build (pull_request) Successful in 51s
PR Checks / frozen-manifest (pull_request) Successful in 53s
PR Checks / server-tests (pull_request) Failing after -17s
dd9b8b2711
USER_SAFETY.md step 3, the module half of report, block and hide.

- server/safety.js registers the rust.chat report target (snapshot for one
  reader, null when they could not have seen the line; staff's hide and
  unhide) and the steam game identity (ownersOf from rust_account_links).
- The events feed filters chat per reader, in the query: lines from a
  blocked account's Steam ids, the reader's unlinked Steam-ID blocks and the
  lines they hid. Signed-in readers get canBlock on each chat line (false for
  their own and for staff-linked players). Lines staff hid for everyone are
  left out for everyone but staff, who get them with hidden: true.
- rust_events gains hidden_at and hidden_by (ALTER ... IF NOT EXISTS).
- POST /admin/rust/chat/:id/hide and /unhide (admin, moderator), logged.
- The feed's chat lines get a menu: Report, Hide for me, Block player,
  and for staff Hide for everyone / Show to everyone again.
- coreApi ^1.21.0; ci/core-ref.json pinned to the website#233 merge;
  routes.manifest.json and swagger-fragment.json regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
Merge pull request 'feat(safety): report, block and hide chat lines (MODULE_API 1.21.0)' (#72) from feature/user-safety into edge
Some checks failed
PR Checks / client-build (pull_request) Successful in 49s
PR Checks / frozen-manifest (pull_request) Successful in 1m17s
PR Checks / server-tests (pull_request) Failing after 58s
0c29dbf6eb
Reviewed-on: #72
whitlocktech merged commit 70bafdff63 into main 2026-10-30 16:45:59 -05:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RunicGateway/Module-Rust#73
No description provided.