--- menu name: Release Notes — v0.2.7 position: 3


Release Notes — v0.2.7 (June 28, 2026)


1. Approvalstatus Field Rename (Breaking Change)

Status: Uncommitted — feature/app branch
Plan: .kilo/plans/1782637172243-approvalstatus-field-rename.md

Renamed the workflow-eligibility field from status to Approvalstatus across the entire framework and workflow engine. The workflowstatus field is preserved as a legacy fallback.

Model Layer

  • frameworkapp/models.py: Renamed status → Approvalstatus on Frameworktestdocument, updated verbose_name to "Approval Status".
  • Migration: frameworkapp/migrations/0003_remove_frameworktestdocument_status_and_more.py — removes old status column and adds Approvalstatus on both Frameworktestdocument and HistoricalFrameworktestdocument.

Framework Layer

  • enezaframework/views/mixins.py: Updated WorkflowMixin.has_workflow_status_field() and get_document_status() to check Approvalstatus first, then workflowstatus as legacy fallback. Removed status check entirely.

View Layer

  • frameworkapp/views/testviews.py: Updated all field references (disable_fields, Fieldcolumns, disable_if blocks) from 'status' → 'Approvalstatus' across detail, create, and inline views.

Workflow Engine Services (8 services updated)

Service File Change
enezaworkflowengine/services/workflow_submission.py Writes Approvalstatus; added pre-submission validation gate — raises WorkflowSubmissionError if document lacks both Approvalstatus and workflowstatus
enezaworkflowengine/services/step_handlers.py _update_document_status() reads/writes Approvalstatus
enezaworkflowengine/services/workflow_resubmission.py _update_document_status() reads/writes Approvalstatus
enezaworkflowengine/services/workflow_completion.py complete_workflow() and cancel_workflow() read/write Approvalstatus
enezaworkflowengine/services/step_dispatcher.py _finalize_workflow() reads/writes Approvalstatus
enezaworkflowengine/tasks/workflow_tasks.py process_end_step() reads/writes Approvalstatus

Files changed: 9 files (model, views, mixin, 6 workflow services), ~30 locations.


2. Notification Dropdown — Text Truncation with Expand/Collapse

Status: Uncommitted
Plan: .kilo/plans/1782638181299-notification-dropdown-text-truncation.md

Long notification messages in the header dropdowns (envelope and bell icons) are now truncated at 65 characters with a "see more" / "see less" toggle button, preventing text overflow beyond the dropdown container.

Changes

  • enezaframework/templates/components/common/header.html:
  • System notifications (envelope): Replaced class="truncate" with Alpine.js conditional rendering — messages > 65 chars are truncated with ... and a "see more" button.
  • Chat notifications (bell): Same treatment applied to the <h6> element.
  • enezaframework/static/assets/css/tailwind.css: Added .line-clamp-2 CSS utility (-webkit-line-clamp, -webkit-box-orient, overflow: hidden) for 2-line clamping, available for future use.

Files changed: 2 files.


3. Aggregate COUNT on Child Models Without Numeric Fields

Status: Uncommitted
Plan: .kilo/plans/1782639150178-aggregate-count-no-numeric-field.md

Child models that have no integer/real fields were previously excluded from the aggregate dropdown entirely. Now they are available for COUNT aggregation, since counting rows does not require a numeric field.

Changes

  • enezaworkflowengine/views/mixin.py: Removed the if fields: guard in QueryBuilderMixin.get_aggregate_options() — child models with empty field lists now appear in related_models.
  • enezaworkflowengine/utils.py: Relaxed parse_annotations() validation — field is no longer required when function is count. When count is used without a field, generates Count('relation_name') instead of Count('relation_name__field').
  • enezaworkflowengine/templates/saved_query/partials/query_builder_partial.html: Updated addAggregate() alias generation and _updateAnnotationMeta() to handle null fields for count — produces aliases like childmodel_count and labels like "Count of Child Model".
  • enezaworkflowengine/templates/saved_query/partials/edit_query_builder_partial.html: Same frontend updates for edit mode.

Files changed: 4 files.


4. Version Bump

  • setup.py: Version bumped from 0.2.6 → 0.2.7.

Summary

Area Description Files
Workflow Engine status → Approvalstatus field rename across model, views, mixin, and 6 workflow services; added pre-submission validation 9
UI — Notifications Long notification text truncated at 65 chars with expand/collapse toggle; .line-clamp-2 CSS utility added 2
Query Builder COUNT aggregate now available on child models without numeric fields; backend validation relaxed, frontend updated 4
Versioning Version bumped to 0.2.7 1
Migration New migration 0003 — removes status, adds Approvalstatus on Frameworktestdocument + history 1

Total: 16 modified files, 1 new migration file, 104 insertions, 67 deletions.


Migration Notice: The migration frameworkapp/migrations/0003_remove_frameworktestdocument_status_and_more.py is uncommitted and not yet applied. The user is responsible for reviewing, applying (python manage.py migrate frameworkapp), and validating the migration before deployment.