Repository navigation
2.0.0-rc.3: security fixes, CI pipeline and docs cleanup - #42
Merged
Merged
Conversation
Replace the Docusaurus placeholders (footer "My Project, Inc.", default README, template comments, tutorial sidebar naming) and the Flyer Chat references copied into CONTRIBUTING and the issue templates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…audit - media cleanup queue only accepts the deleted message's own room attachments; cleanup-media re-checks rows and retries failing ones - httpSupabaseHeadersFor(url) sends the token to this project's Storage only; httpSupabaseHeaders is deprecated - column privileges on rooms, room_members and users; role changes for group admins only (no third member in direct rooms) - unique message ids (chats.message_ids), RPCs bound to the authorized row, server-assigned createdAt, server-owned status/reactions/pin, attested forward origin - Realtime: database-only message channel, separate typing channel, per-user room change channel, private presence, removed members disconnected; rooms/room_members out of the publication - chats_assets overwritten by the uploader, deleted by uploader or admin - partman cron job no longer fails; new partitions secured on creation - example app: safe download names, confirmation before opening files - pgTAP and integration regression tests, docs and migration notes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI runs format, analyze, unit tests and pana on the minimum and latest Flutter, pgTAP and integration tests on a local Supabase stack, and the docs build. Docs deploy through actions/deploy-pages; publishing runs on version tags behind the pub.dev environment approval. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
supabase_flutter >=2.16.0 requires Dart 3.9, so the declared Dart 3.8 / Flutter 3.32 minimum could not resolve (caught by the CI job on the minimum Flutter). pana needs cwebp/gif2webp to check the screenshots. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The example app depends on file_saver 0.4, which needs Dart 3.11: its SDK constraint now says so, and the minimum-version job skips it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does it do?
Third release candidate of 2.0.0 (
2.0.0-rc.3): fixes the findings of a security audit of the package, adds the GitHub Actions pipeline and cleans up template leftovers in the docs.Security fixes (SQL scripts, Edge Function, Dart client, example app):
chats_assetsobject in the deleted message's own room folder, not referenced by another message;cleanup-mediare-checks every row, retries failing objects and leaves aside the ones that keep failing. Before, a messagesourcecould make the function delete any Storage object of the project with the service role.httpSupabaseHeadersFor(url)sends the access token to this project's Storage only;httpSupabaseHeaders(sent to any URL, including avatars and message sources other users choose) is deprecated. Example and docs updated.rooms,room_members,users; role changes for real group admins only. A direct-room member could add third parties to a 1-to-1 conversation.chats.message_ids), RPCs bound to the row they authorized, server-assignedcreatedAt(a far-future value blocked partition maintenance), server-owned status/reactions/pin, edit = content only, forward origin attested by the database.chats:room:<id>(members could forge message events), typing onchats:room:<id>:typing, room/membership changes on a privatechats:user:<uid>channel instead of Postgres Changes (DELETE events leaked memberships), private presence, removed members disconnected.chats_assetsobjects are overwritten by their uploader, deleted by their uploader or a group admin.partman-run-maintenancecron job always failed (shared transaction block): split in two jobs, plus an event trigger securing new partitions.CI: format/analyze/unit tests/pana on Flutter 3.35.0 (the minimum, package only) and stable, pgTAP + integration tests on a local Supabase stack, docs build; Pages via
actions/deploy-pages; publish to pub.dev onv*tags behind thepub.devenvironment approval; Dependabot.SDK: minimum raised to Dart 3.9 / Flutter 3.35 (
supabase_flutter>= 2.16 requires it); the example app requires Dart 3.11 (file_saver0.4).Docs: Realtime, security, usage and triggers guides,
MIGRATION.mdsection for release candidate users, Docusaurus/CONTRIBUTING/issue template placeholders fixed,LICENSEcopyright line for InsideApp.Why is it needed?
The audit found two high-severity issues (arbitrary Storage deletion through
cleanup-media, session token sent to attacker-chosen URLs) and several medium/low ones; they must be fixed before 2.0.0.How to test it?
All of them pass locally; the v1 → v2 migration (
V1_REF=v1.6.2 tool/v1_fixture.sh && tool/local_db.sh --no-reset) andtool/test_storage_migration.shpass too.Upgrade note: the database and the Realtime protocol change together: re-run the SQL scripts and update the package at the same time (see
MIGRATION.md).Repository settings needed after merge:
pub.devwith required reviewers.v{{version}}, environmentpub.dev.Related issues/PRs
Follows #41 (2.0.0-rc.2).
🤖 Generated with Claude Code