Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
#v0.20.0
#Added
- Add moderation system with labels, reports, and user preferences
- Label definitions with severity levels (takedown, alert, inform)
- Apply/negate labels on records and accounts via admin API
- Automatic takedown filtering from all queries
- Self-labels support (author-applied labels merged with moderator labels)
labelsfield exposed on all record types- User-submitted reports with reason types
- Admin report review and resolution workflow
- Per-user label visibility preferences (ignore, show, warn, hide)
- Connection pagination for admin labels and reports queries
- Add union input type support for GraphQL mutations
- Add moderation documentation guide
#v0.19.0
#Added
- Add viewer state fields that show the authenticated user's relationship to records
viewer{Collection}Via{Field}fields for AT-URI references (favorites, likes)viewer{Collection}Via{Field}fields for DID references (follows)- Server extracts viewer DID from auth token automatically
#v0.18.1
#Fixed
- Fix notification pagination cursor decoding for 2-part rkey|uri format
#v0.18.0
#Added
- Add
notificationsGraphQL query for cross-collection DID mention search - Add
notificationCreatedGraphQL subscription for real-time notifications - Auto-generate
RecordCollectionenum from registered lexicons - Auto-generate
NotificationRecordunion type from record types - Add
rkeygenerated column for TID-based chronological notification sorting - Add User-Agent header to all outbound HTTP requests
#Changed
- Upgrade swell to 2.1.3 (fixes NonNull-wrapped union type resolution)
#v0.17.5
#Fixed
- Publish pubsub events after GraphQL mutations for immediate WebSocket subscription updates
#quickslice-client-js v0.3.0
#Added
- Add storage namespace isolation for multi-app support
- Storage keys prefixed with 8-char SHA-256 hash of clientId
- IndexedDB database name includes namespace
- Lock keys include namespace
#Breaking Changes
- Existing users will need to re-login once after update
#quickslice-client-js v0.2.0
#Added
- Add
scopeparameter toQuicksliceClientOptionsfor setting default OAuth scope - Add
scopeoption tologinWithRedirect()for per-login scope override
#v0.17.4
#Fixed
- Fix "Invalid refresh token" error caused by session iteration drift after ATP token refresh
#v0.17.3
#Fixed
- Add
subclaim to OAuth token response for client SDK user identification
#v0.17.2
#Fixed
- Fix reverse joins not available through forward join *Resolved fields (swell 2.1.2)
#v0.17.1
#Added
- Add ARM64 (linux/arm64) Docker image support
#v0.17.0
#Added
- Add redirectUri option to QuicksliceClient
- Make lexicon import declarative (wipe-and-replace)
- Add multi-database support (PostgreSQL and SQLite)
- Add unified Executor type for database abstraction
- Add SQLite executor with PRAGMA setup
- Add PostgreSQL executor with pog driver
- Add unified connection module with DATABASE_URL detection
- Add dbmate schema migrations for SQLite and PostgreSQL
- Add Makefile for database operations
- Add GIN index on record.json for efficient JSONB queries
- Add dbmate and auto-migrations to Docker build
- Add docker entrypoint script for auto-migrations
#Fixed
- Complete AT Protocol token refresh implementation
- Transform BlobInput to AT Protocol format in create/update mutations
- Use all lexicons for ref validation in create/update mutations
- Fix quickslice client exports
#Changed
- Extract car/ into standalone atproto_car package
- Reorganize lexicon GraphQL into modular structure
- Reorganize admin GraphQL schema into modular structure
- Reorganize database helpers into proper layers
- Move graphql_ws into graphql/ws module
- Split settings page into section modules
- Remove unused dependencies, handlers, and CLI commands
- Update honk to v1.2
- Migrate all repositories to Executor pattern (config, OAuth, records, pagination)
- Update where_clause to support database dialects
- Remove Gleam-based migration system in favor of dbmate
- Update server startup to use Executor
- Cache Gleam build in CI to speed up native dependency compilation
#v0.16.0
#Added
- Add secure public OAuth flow with DPoP and quickslice-client-js SDK
#Fixed
- Pass OAuth scopes through without filtering in client metadata
#Changed
- Update docker-compose
- Add editorconfig and format examples HTML
#v0.15.1
#Fixed
- Pass OAuth scopes through without filtering in client metadata
#v0.15.0
#Added
- Add isNull filter support for ref fields in where clauses
- Improve GraphQL type generation for lexicons
- Add statusphere HTML example and viewer query
- Add OAuth scope validation and client type support
- Add Model Context Protocol (MCP) server
- Refactor admin DID handling and add Settings.adminDids field
- Migrate environment variables to database config table
- Add PLC_DIRECTORY_URL env var override for bootstrap
- Handle OAuth errors with proper redirects
- Sync actor records on first login
#Fixed
- Encode non-UTF-8 binary data as $bytes in JSON
- Resolve strongRef refs in nested object types
- Resolve nested refs within others object types
- Show reset alert in danger zone section of settings
- Correct test expectation for invalid scope error handling
#Changed
- Implement nested forward join resolution for strongRef fields
- Remove /example folder, move docker-compose to root
- Move docs/plans to dev-docs/plans
- Update settings
#Documentation
- Remove deprecated env vars from deployment guide