Summary

Description

This website release contains the frontend prep for the new moderation stack, moves message translation behind a secure server-side proxy, and includes a number of bug fixes, dependency security updates and build system improvements.

Moderation

  • Render the new ModerationReport message type and let platform moderators resolve escalated reports (uphold or dismiss) directly from the internal moderation channel (#9095, #9092)
  • Plumb through the new per-message and per-group/community moderation flags (#9088, #9089, #9090) - these have no visible effect on the website; they support content filtering in the upcoming app store builds (#9094)

Translation

  • Message translation now goes through a server-gated proxy using an access token issued by the LocalUserIndex, replacing the previous client-side Google Translate integration whose API key was exposed in the browser. Translation is available to diamond members and platform moderators (#9100)

Fixes

  • Purge uninstalled token ledgers client-side and stop the error noise from calls to dead ledger canisters (#9105)
  • Stop one-line message sanitisation throwing on <br> (#9103)
  • Drop empty text nodes when parsing markdown, fixing a message editing crash (#9084)

Build & dependencies

  • Remove turbo and consolidate the frontend into a single build, with runtime platform detection shared between the website and the native apps (#9063, #9109)
  • Resolve outstanding dependency security advisories (#9086) and bump axios, @coinbase/cdp-sdk, dompurify, svgo and immutable (#9108, #9110, #9111, #9112)

Notes

The moderation UI is only reachable by platform moderators and stays inert until the moderation pipeline is switched on by a platform operator. Message translation requires the LocalUserIndex release (2.0.2000) which precedes this one.

Payload

Proposal to execute nervous system function:

Nervous system function:

NervousSystemFunction { id: 10000, name: "Update OpenChat frontend assets", description: Some( "This will commit a newly prepared batch of assets which have been uploaded to the asset canister by a principal which has been granted the "Prepare" permission.", ), function_type: Some( GenericNervousSystemFunction( GenericNervousSystemFunction { target_canister_id: Some( 6hsbt-vqaaa-aaaaf-aaafq-cai, ), target_method_name: Some( "commit_proposed_batch", ), validator_canister_id: Some( 6hsbt-vqaaa-aaaaf-aaafq-cai, ), validator_method_name: Some( "validate_commit_proposed_batch", ), topic: Some( DappCanisterManagement, ), }, ), ), }

Payload sha256:

1a2b5a93b2dd86d01d5e2c2522cb4cad0e5d18b474a7361e2a51701f1a5375c8

Payload:

commit proposed batch 248 with evidence f6b2d04376d25c545a2b63671cead82e98d5d2f51105fc4f17d688277b263bd0

Overview