Plain is headed towards 1.0! Subscribe for development updates →

plain-flags changelog

0.30.0 (2025-11-13)

What's changed

  • Model query attributes now use ClassVar type annotations for better type checker support (c3b00a6)

Upgrade instructions

  • No changes required

0.29.0 (2025-11-13)

What's changed

  • Model field definitions now use type stubs with types.Field syntax instead of direct models.Field assignment for better type checker support (c8f40fc)

Upgrade instructions

  • No changes required

0.28.0 (2025-11-12)

What's changed

  • The Flag class is now an abstract base class with get_key() and get_value() marked as abstract methods (24fe1f3)

Upgrade instructions

  • No changes required

0.27.3 (2025-11-11)

What's changed

  • Internal import path updated for database exceptions to use plain.models.db (e9edf61)

Upgrade instructions

  • No changes required

0.27.2 (2025-10-31)

What's changed

  • Package metadata now includes explicit BSD-3-Clause license field (8477355)

Upgrade instructions

  • No changes required

0.27.1 (2025-10-20)

What's changed

  • Build configuration updated to use standardized [dependency-groups] instead of [tool.uv] for dev dependencies (1b43a3a)

Upgrade instructions

  • No changes required

0.27.0 (2025-10-12)

What's changed

  • The unused flags preflight check has been refactored from a model method into an independent PreflightCheck class registered with @register_check (38b43f3)

Upgrade instructions

  • No changes required

0.26.0 (2025-10-07)

What's changed

  • Model definitions now use model_options = models.Options() instead of class Meta: (17a378d, 73ba469)
  • Internal model metadata access updated to use model_options and _model_meta properties (73ba469)

Upgrade instructions

  • No changes required

0.25.3 (2025-10-06)

What's changed

  • Added comprehensive type annotations throughout the package to improve IDE and type checker support (f05463f)

Upgrade instructions

  • No changes required

0.25.2 (2025-10-02)

What's changed

  • Updated README documentation to use get_current_user() instead of request.user in template examples (f6278d9)

Upgrade instructions

  • No changes required

0.25.1 (2025-09-29)

What's changed

  • Fixed the admin interface for unused flags to display the fix field instead of message field in PreflightResult (b75a38d)

Upgrade instructions

  • No changes required

0.25.0 (2025-09-26)

What's changed

  • Removed unused uuid fields from Flag and FlagResult models along with their associated unique constraints (331ce37)

Upgrade instructions

  • No changes required

0.24.0 (2025-09-25)

What's changed

  • The Flag.check() method has been renamed to Flag.preflight() to align with the new preflight system (b0b610d)
  • Preflight results now use the new PreflightResult class instead of Info (b0b610d)
  • Database connection errors are now handled more gracefully during preflight checks by catching both ProgrammingError and OperationalError (b0b610d)
  • Preflight result messages and hints have been unified into a single fix field (c7cde12)

Upgrade instructions

  • No changes required

0.23.0 (2025-09-12)

What's changed

  • Updated model API to use .query instead of .objects for database operations (037a239)
  • Minimum Python version requirement increased to 3.13 (d86e307)
  • Admin navigation icon updated from "flag-fill" to "flag" (2aac07d)

Upgrade instructions

  • No changes required (the .objects to .query change is handled internally by the framework)

0.22.0 (2025-08-19)

What's changed

  • Removed manual CSRF token from admin flag result form template, now handled automatically by Sec-Fetch-Site headers (9551508)
  • Updated README with better structure, table of contents, and improved installation instructions (4ebecd1)

Upgrade instructions

  • No changes required

0.21.1 (2025-07-23)

What's changed

  • Admin navigation now includes Bootstrap icons for Flag and FlagResult sections (9e9f8b0)

Upgrade instructions

  • No changes required

0.21.0 (2025-07-22)

What's changed

  • Updated model migrations to use PrimaryKeyField() instead of BigAutoField(auto_created=True, primary_key=True) (4b8fa6a)
  • Model key coercion now uses id instead of deprecated pk alias when generating flag keys (4b8fa6a)

Upgrade instructions

  • No changes required

0.20.0 (2025-07-18)

What's changed

  • Added OpenTelemetry tracing support to flag evaluation with detailed spans and attributes (b0224d0)

Upgrade instructions

  • No changes required

0.19.0 (2025-07-18)

What's changed

  • Migrations have been restarted and consolidated into a single initial migration (484f1b6)

Upgrade instructions

  • Run plain migrate --prune plainflags to clean up old migrations when upgrading from a previous version

0.18.0 (2025-06-23)

What's changed

  • Dropped multi-database support: Flag.check() now follows updated standard system-check signature that receives a single database keyword argument instead of databases. Internally the check no longer loops over multiple connections (d346d81).
  • Updated the admin “Unused flags” card to use the new database keyword (d346d81).

Upgrade instructions

  • No changes required.