Skip to content

Coop 1.0

Choose a tag to compare

@julietshen julietshen released this 08 Jun 22:27
· 8 commits to main since this release
5e21eb5

We're thrilled to share Coop 1.0! This is our first major release and the one we've been building toward since Coop went open source: ready for self-hosted deployment by platforms of all sizes. Since v0.1, we've focused on three major areas: making it easier to get started, expanding features and capability in response to production usage, and hardening reliability and sustainability for a critical open source project.

Making it easier to get started

Simplification and modernization

Coop 1.0 is dramatically simpler to deploy than earlier versions. We now build and publish Docker images for easier testing and deployment. We migrated from Sequelize to Kysely, making Coop lighter-weight and easier to keep secure with fewer dependencies. We replaced Kafka with BullMQ for item submission processing, removing one of the most operationally demanding deployment dependencies. And we cleaned up a significant amount of SaaS-era code that was never meant for self-hosted deployments, including legacy client marketing and tracking assets, Snowflake, the legacy risk AI model, and other unmaintained remnants.

On the modernization front, we upgraded to Apollo v5, Express 5, and migrated the client build from Create React App to Vite.

Rewritten documentation

Before Coop 1.0, our documentation was a mix of SaaS-oriented content, early architectural notes, and several incomplete attempts to expand coverage. We spent significant time completely reworking it. The README is simpler to skim, and the new docs site structure separates content into four distinct sections: user guide, development and deployment, API reference, and integrations. We also implemented versioning, so docs for main will always live at roostorg.github.io/coop/latest and docs for this release at roostorg.github.io/coop/1.0.

Admin settings

We built out a new granular capability-based permissions system, and moved several features that were previously only togglable via the database directly into the Coop front-end for administrators.

Expanded features and capability

Review and moderation improvements

We had multiple platforms adopt Coop during the 1.0 development cycle, which gave us invaluable real-world feedback. Several significant capabilities shipped as a result:

  • User Strikes are now enabled, giving platforms a native way to track and act on repeat violations directly within Coop
  • Parameterized actions let moderators pass runtime values when making decisions, making enforcement workflows significantly more flexible
  • "Invalidate reports from a reporter" action is now available in the manual review tool, useful for addressing spam reporting
  • The investigation tool now surfaces users even when no submitted item is available
  • Comments from deleted users are now visible on manual review jobs
  • Policy selection and decision reason requirements are now enforced server-side, closing a gap where those constraints were UI-only
  • Recent actions list refreshes automatically after submitting an action
  • Point of Interest (Google Maps) is gracefully disabled when no API key is configured

Additional platform needs

  • Coop now supports OpenAI's omni-moderation-latest model as an image moderation signal source
  • HMA exchanges can now be configured directly from the Coop UI, removing the need to manage that setup separately
  • IP address is now a first-class schema field role for tagging items with source IP data
  • A new MEDIA content type is supported end to end, from submission through the review console
  • A create-org script is now available for provisioning new organizations from the command line

Child safety improvements

  • Built-in NCMEC enqueue actions are now available to all orgs
  • NCMEC and Review Console enqueue actions now work for users with no prior submission record
  • Added additionalInfo to NCMEC reports and fixed XML element ordering
  • Failed NCMEC submissions now persist and surface with a retry option in the Reports dashboard
  • IP address is now automatically added to NCMEC reports when present
  • NCMEC report routing moved from hardcoded values to environment config
  • Reviewer-friendly error messages now surface for failed NCMEC jobs

Reliability and sustainability

Fixes

  • Postgres idle-client errors crashes are fixed
  • ClickHouse outages no longer crash dashboard pages
  • Fixed server crashes from transient ClickHouse errors and capped Scylla memory to prevent OOM
  • Review queues can support large bursts of job creation when backfilling or populating queues
  • GraphQL depth limit set and depth-limit crashes resolved
  • Server now fails fast on Redis outage during async item submission rather than hanging
  • Dashboard routes lazy-loaded to prevent cascading failures
  • Fixed the Submit button being cut off when content overflows in MRT and investigation views
  • Fixed CoopButton links not respecting disabled state

Security and dependencies

When we first released Coop's source code, there was a significant amount of dependency debt to address. Coop 1.0 resolves every known critical and high severity alert through a combination of dependency removal and version updates across the entire project. We also hardened our supply chain practices: GitHub Actions are now SHA-pinned with --ignore-scripts, and the Busybox Docker image is pinned by digest to prevent silent substitution. We added automated license scanning to CI to enforce compatibility with Coop's Apache-2.0 license, which included bumping fuzzball to its newly MIT-licensed v2.2.6.

Other improvements

  • End-to-end integration tests added for item submission, report flow, and rule changes
  • CI checks moved into Docker Compose services for consistency with local development
  • Husky pre-commit hooks wired up with lint-staged
  • AGENTS.md added with Coop-specific guidance for AI coding assistants
  • Issue forms added to guide bug reports and feature requests

Get involved

We're building Coop in the open and this release reflects the work of an incredibly active community of contributors, adopters, and testers. Whether you're deploying Coop, hitting a rough edge, or have ideas to explore, please open an issue or join our Discord. Your feedback directly shapes our roadmap.

Thank you!

A huge thank you to everyone who contributed to this release, and a special welcome to our nine new contributors making their first contributions to Coop: @TomHawk123, @dom-notion, @vinaysrao1, @samuelralak, @ThatKoffe, @haileyok, @davidyshin, @ded-furby, and @JagadeeshChandra12, alongside returning contributors @juanmrad, @julietshen, @pawiecz, @cassidyjames, serendipty01, @wayjaywang , and @calebmcquaid. This release is a testament to what an open, collaborative community can build together. Thank you all. 🎉

Full Changelog: 0.1...1.0