plain-flags changelog

0.34.0 (2026-03-12)

What's changed

  • Updated all imports from plain.models to plain.postgres in admin, models, preflight, utils, and migrations.
  • Updated pyproject.toml dev dependency from plain.models to plain.postgres.

Upgrade instructions

  • Update imports: from plain.models to from plain.postgres, from plain import models to from plain import postgres.
  • Update dependency declarations: plain.models to plain.postgres in pyproject.toml.

0.33.4 (2026-02-26)

What's changed

  • Auto-formatted config files with updated linter configuration (028bb95c3ae3)

Upgrade instructions

  • No changes required.

0.33.3 (2026-02-12)

What's changed

  • Fixed missing template_name on FlagResult admin UpdateView (ee27ad10c407)

Upgrade instructions

  • No changes required.

0.33.2 (2026-02-04)

What's changed

  • Added __all__ exports to exceptions and models modules for explicit public API boundaries (f26a63a5c941)

Upgrade instructions

  • No changes required.

0.33.1 (2026-01-28)

What's changed

Upgrade instructions

  • No changes required.

0.33.0 (2026-01-15)

What's changed

  • Admin Card now uses get_metric() instead of get_number() to follow the updated Card API (1a1c622)
  • Added descriptions to admin list views for Flag and FlagResult models (0fc4dd3)
  • Changed FlagResult nav icon from "flag" to "check2-square" (0fc4dd3)

Upgrade instructions

  • If you have custom Card subclasses, rename get_number() to get_metric()

0.32.0 (2026-01-13)

What's changed

  • Improved README documentation with expanded examples, FAQs section, and clearer explanations (da37a78)

Upgrade instructions

  • No changes required

0.31.0 (2025-11-21)

What's changed

  • ForeignKey has been renamed to ForeignKeyField in model definitions and migrations (8010204)

Upgrade instructions

  • No changes required

0.30.1 (2025-11-17)

What's changed

  • Model query attributes no longer use ClassVar type annotations, reverting to standard type annotations for better compatibility (1c624ff)

Upgrade instructions

  • No changes required

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.