Changelog
Version history and release notes
Release History
Changelog
All notable changes to OmberCHM (CareSpace) will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.2.10] - 2026-07-01
Fixed
- A pressure injury still could not be resolved for a "Pending CQC" record - Follow-up to v1.2.9, which fixed the wrong cause. The real blocker was the pressure injury form's validation: it required a "Date informed CQC" whenever "CQC Informed" was set to Yes, but that date field was never shown on the form. Any record in the normal "Pending CQC" state (
cqc_informed = "Yes"with no date — e.g. resident Patricia Atkinson's) failed validation on every save, silently, sodate_resolvedcould never be saved. - The CQC-date requirement is now only enforced when the user is actually setting CQC Informed to Yes in that submission; editing a pre-existing "Pending CQC" record is no longer blocked.
- The "Date informed CQC", "Date MASH informed" and the CQC/MASH "not informed reason" fields are now rendered on the form so they can be recorded.
- A form-level error summary is now shown at the top of the form, so validation problems are never silent again.
- Editing a pressure injury wiped its "created by" author - A duplicate
Meta.excludeleftcreated_bybound to the form; because it is displayed read-only (never submitted), every save reset it to empty.created_byis now excluded from the form and preserved on update.
[1.2.9] - 2026-06-30
Fixed
- Cannot resolve a pressure injury (or edit other clinical records) once the resident is no longer active - When a resident died, was discharged, or had their room reassigned, adding a
date_resolvedto their pressure injury silently failed to save. Reactivating the resident did not help. - Root cause:
PropertyRestrictedFormMixinrestricted the form'sresidentchoices to residents with statusActiveand a room. On an update form, if the record's existing resident no longer matched, the hiddenresidentfield failed validation ("Select a valid choice") and blocked the entire save — including unrelated fields likedate_resolved. - Fix: when editing an existing record, the mixin now always keeps that record's current resident as a valid choice, even if they are deceased, discharged, or have no room. New residents can still only be selected from active residents.
- Affects all forms using the mixin: Pressure Injury, Incident, Infection, Medication Error, Complaint, and Compliment.
[1.2.8] - 2026-06-18
Fixed
- CQC Notifications: incidents notified via a Notification Event still showed as Pending - Incidents notified to CQC by adding a CQC Notification Event (rather than filling in the incident's own
cqc_notified_datefield) were wrongly listed under "Pending CQC Notification" on the dashboard. - Added
annotate_incident_cqc_status()helper exposing aneffective_cqc_date(the incident'scqc_notified_date, or the earliest CQCNotificationEvent.date_notifiedif blank). CQCNotificationsListViewandget_cqc_notifications_metrics()now treat an incident notified via a CQC Notification Event as notified, not pending.- Added data migration
0061to backfillIncident.cqc_notified_datefrom existing CQC notification events (clears already-affected records, e.g. Oakland Court).
[1.2.7] - 2026-03-25
Fixed
- Complaint creation 500 error - Fixed
ComplaintCreateViewcrashing withImproperlyConfigured: No URL to redirect towhen submitting the complaint form. Added missingsuccess_urland alignedform_valid()with the workingComplimentCreateViewpattern.
[1.2.6] - 2026-02-18
Fixed
- UAT deployment failure - Fixed
NourishDependencyScoreAdminusingtitle(a computed property) inlist_filter, which caused Django system check erroradmin.E116and prevented container startup. Changed to filter byscorefield instead.
[1.2.5] - 2026-02-17
Fixed
- Management Reports property filtering - Reports now correctly segregate data by care property
- Changed analytics service to use direct
care_propertyforeign key path for Incident, MedicationError, and PressureInjury queries - Added Property Scope selection to management report create/edit forms
- Fixed
get_properties_for_filtering()to return None (no filter) when no properties selected, instead of all properties - Room Calculator Nourish dependency scoring - Room calculator now maps raw Nourish scores (1-52) to level-based point values instead of using raw scores directly
- Added
point_valuefield to NourishDependencyScore model with data migration - Score ranges mapped: Low (9pts), Medium Low (10.5pts), Medium (12pts), Medium High (13.5pts), High (16pts), Very High (19pts)
- Registered NourishDependencyScore in Django admin for easy point value management
- CQC Notifications date validation - Added form validation requiring
date_informed_cqcwhencqc_informedis set to "Yes" on pressure injury records
Changed
- Peak Period Analysis labels - Added "(top 3 of 12 two-hour slots)" subtitle to Top Risk Periods heading for clarity in both dashboard and management report views
[1.2.4] - 2026-02-07
Fixed
- Room List 500 Error - Removed orphaned
/rooms/URL that caused 500 error - The RoomListView referenced a missing
room_list.htmltemplate - Removed redundant "Room List" links from property management and property detail pages
- Room browsing is handled by the property management page which displays rooms grouped by property/floor
- Room detail, update, and delete views remain functional
Removed
RoomListViewandRoomCreateView(orphaned code, room creation handled by property management HTMX views)/rooms/and/rooms/create/URLs- "Room List" button from property management page
- "Room List View" button from property detail page
- "All Rooms" quick action from room detail page
[1.2.3] - 2026-01-30
Added
- Incident Form Waterlow Review Question - Added new question "Does the Waterlow need reviewing?"
- New Question 8 appears after "Does the Moving and Handling Assessment need reviewing?"
- Previous Question 8 (Resulted in Complaint) is now Question 9
- Displays in both incident form and detail view with consistent styling
[1.2.2] - 2026-01-27
Fixed
- Management Report Detail 500 Error - Fixed FieldError on report detail view
- Changed
is_deleted=Falsetois_active=TrueinManagementReport.get_properties_for_filtering() - Changed
is_deleted=Falsetois_active=TrueinAnalyticsService.get_property_summary() - CareProperty model uses
is_activefield, notis_deleted
[1.2.1] - 2026-01-27
Fixed
- Management Report 500 Error - Fixed unhandled IntegrityError when creating duplicate reports
- Changed unique constraint from
(year, month)to(year, month, title)allowing multiple reports per month with different titles - Added form validation to show user-friendly error message for duplicate title/month combinations
- Previously caused 500 Internal Server Error when trying to create a report for a month that already had one
Added
- Management Report Delete - Managers can now delete management reports
- New delete button on report detail view (Manager role only)
- Confirmation page with impact assessment showing what will be deleted
- Checkbox confirmation required before delete button is enabled
- Deletes report and all associated graphs; underlying clinical data is preserved
[1.2.0] - 2026-01-27
Added
- CQC Notifications Dashboard Card & List View - New consolidated view for CQC-reportable items
- Dashboard card with teal theme showing pending/notified counts and RAG status
- Full list view aggregating CQC items from: Incidents, Notification Events, Pressure Injuries, DOLS Applications, and Safeguarding Referrals
- Two sections: "Pending CQC Notification" (flagged but not reported) and "CQC Notified" (with dates)
- Filter by record type (All, Incidents, Notification Events, Pressure Injuries, DOLS, Safeguarding)
- Property filtering support consistent with other views
- Configurable RAG thresholds via SystemConfiguration (CQC_PENDING_GREEN_MAX, CQC_PENDING_AMBER_MAX)
- Links to original record detail pages from list view
[1.1.2] - 2026-01-27
Fixed
- Discharged Resident Visibility - Fixed discharged/inactive residents disappearing from views
- Residents were invisible in list and detail views after discharge cleared their room
- Changed
ResidentDetailView.property_fieldfromroom__care_propertytocare_property - Fixed
ResidentListViewto always show both active/inactive sections using base queryset - Changed property dropdown filter to use
care_propertyinstead ofroom__care_property - Now uses the direct
care_propertyFK which is preserved when room is cleared
[1.1.1] - 2026-01-27
Fixed
- Room Calculator Pricing - Fixed square footage to points conversion
- Was using raw sq ft as points (150 sq ft = 150 points = £8,820)
- Now correctly converts using scale: 9 sq ft = 4 points, +0.25 per additional sq ft
- Formula:
points = 1.75 + (sqft × 0.25) - Example: 150 sq ft → 39.25 points → £2,307.90 (at £58.80/point)
- Added
room_size_pointsproperty to Room model for consistent calculation
[1.1.0] - 2026-01-23
Added
- DNACPR/ReSPECT Status Restructure - Replaced boolean DNAR field with comprehensive status tracking
- New
dnacpr_statusdropdown with options: None, DNACPR Only, ReSPECT Only, Both DNACPR & ReSPECT, Undecided - New
respect_activecheckbox for tracking active ReSPECT forms - Review date now conditionally shown (hidden when status is "None")
- Renamed "DNAR" to "DNACPR/ReSPECT" across all user-facing text
-
Legacy fields maintained for backwards compatibility
-
Pressure Injury Photo Upload - Added ability to document pressure injuries with photos
- Multiple photos per injury with date taken and description
- Photo gallery on detail page with upload/delete functionality
-
New notification checkboxes: TVN Informed, DN Informed, GP Informed
-
Day Care Room Support - Added special room type for day care residents
- Day care rooms have unlimited occupancy (excluded from capacity calculations)
- Excluded from occupancy statistics on dashboard and reports
-
Renamed "Admission date" to "Admission/Start Date" on resident forms
-
Room Calculator Access - Opened Room Calculator feature to all authenticated users
- Previously restricted to Manager role only
- Added link to Quick Actions on dashboard
Fixed
- Reports Infection Count Mismatch - Fixed discrepancy between dashboard reports and list views
- Reports now respect property filter context
- Infection counts are now consistent across reports dashboard and infection list
[1.0.15] - 2026-01-20
Fixed
- Resident Update 500 Error - Fixed Internal Server Error when editing residents
- Root cause: Form/view kwarg mismatch after commit 2c40696
- Views passed
requestbutResidentForm.__init__expecteduser - Updated
ResidentFormto accept bothrequestanduserkwargs (matchingPropertyRestrictedFormMixinpattern)
[1.0.14] - 2026-01-17
Security
- Dependency Updates - Patched 21 Dependabot vulnerabilities (1 critical, 7 high, 8 moderate, 5 low)
- Django 5.2.5 → 5.2.10 (SQL injection, DoS fixes)
- urllib3 2.5.0 → 2.6.3 (decompression bomb fixes)
- aiohttp 3.12.15 → 3.13.3 (DoS, zip bomb fixes)
- filelock 3.19.1 → 3.20.3 (TOCTOU symlink fixes)
- fonttools 4.59.2 → 4.61.1 (arbitrary file write fix)
[1.0.13] - 2026-01-17
Added
- Incident Follow-Up Question - Added new Question 2: "Was the relative informed, or was the option offered and declined by the resident?"
- Inserted after hospital admission question
- All subsequent questions renumbered (now 8 total questions)
[1.0.12] - 2026-01-17
Changed
- Residents List Default Filter - Default filter now shows only active residents when first loading the page
- Users can still select "Active & Inactive" to see all residents
- Provides cleaner default view focused on current residents
[1.0.11] - 2026-01-17
Fixed
- Property Filter Not Applied to Form Dropdowns - Fixed global property filter not being respected in resident dropdown lists
- When filtering by property at the top of page (e.g., selecting "Home A"), form dropdowns (e.g., when adding an infection) now only show residents from the selected property instead of all accessible properties
- Updated
PropertyRestrictedFormMixinto use session-based selected properties instead of role-based accessible properties - Affects: Infection, Incident, Pressure Injury, Medication Error, Complaint, Compliment, DNAR, DoLS, Safeguarding, Clinical Care Need forms
[1.0.10] - 2026-01-17
Fixed
- Resident Room Management Bugs - Fixed two related bugs with resident room handling after discharge
- Room is now automatically cleared when a resident's status changes from Active to inactive (Discharged, Deceased, etc.)
- Previously discharged residents can now have their rooms re-allocated to new residents
- Inactive residents no longer "disappear" from the inactive list when their room is manually removed
- Added
care_propertyfield to Resident model for proper property-based filtering even when room is NULL - Residents keep their property association even after room assignment is cleared
[1.0.9] - 2026-01-09
Changed
- MCA Capacity Field UX - Changed resident mental capacity from dropdown to checkbox
- Checked = Resident has capacity
- Unchecked = Resident lacks capacity
- Clearer visual styling with background container and help text
[1.0.8] - 2026-01-09
Fixed
- Clinical Care Need Form Error - Fixed "Cannot resolve keyword 'is_active' into field" error when editing clinical care needs
PropertyRestrictedFormMixinwas still filtering residents by removedis_activefield- Updated to filter by
status__name="Active"instead - Property Filter Room Count - Fixed invalid
rooms__is_activefilter in property filter dropdown - Room model doesn't have
is_activefield; removed erroneous filter
[1.0.7] - 2026-01-08
Changed
- Active/Inactive Status Based on Status Field - Resident active/inactive display now determined by Status dropdown instead of Is Active checkbox
- Status = "Active" → displayed as Active
- Any other status (Discharged, Deceased, etc.) → displayed as Inactive
- Removed
is_activefield from Resident model - Added
is_activeproperty (computed from status) for backward compatibility in templates - Added
ResidentManagerwithactive()andinactive()methods for cleaner queries - Removed Is Active checkbox from resident form (status dropdown now controls this)
- Updated dashboard metrics, views, admin, and management commands to use new logic
[1.0.6] - 2026-01-08
Added
- MCA Capacity and Attachment Fields - Enhanced Clinical Care Need form with additional MCA details
- New "Resident Has Capacity" checkbox (required when MCA is completed)
- New file upload field for MCA document attachments (PDF, DOC, DOCX, JPG, JPEG, PNG - max 10MB)
- Fields only visible when "MCA Completed" is ticked
- Detail view shows capacity status badge and MCA document download link
- List view shows "Has Capacity" column with green tick/red cross/blank indicators
Fixed
- Room Number Display Bug - Fixed room always showing "Unassigned" on Clinical Care Needs and DNAR list/detail views
- Templates incorrectly referenced
room.room_numberinstead ofroom.number - Affected pages: Clinical Care Needs list, DNAR Records list, DNAR Records detail
[1.0.5] - 2026-01-08
Fixed
- Dashboard Clinical Assessments Count - Fixed incorrect assessment count on dashboard
- Dashboard was using
care_propertyfilter path which excluded records with NULL care_property - Changed to use
resident__room__care_propertyto match the list view logic - Now correctly counts all assessments for the selected properties
[1.0.4] - 2026-01-08
Changed
- Improved Resident Delete Confirmation - Enhanced UX for resident deletion to prevent accidental deletions
- Added detailed resident information display (ID, DOB, admission date, room, status)
- Added comprehensive impact assessment showing all records that will be deleted (DOLS, DNAR, incidents, infections, etc.)
- Added mandatory checkbox confirmation before delete button is enabled
- Clear warning about cascade deletion of ALL associated clinical and administrative records
- Matches the same confirmation pattern used for User deletion
[1.0.3] - 2026-01-08
Fixed
- Delete View Context Bug - Fixed critical template context issue in delete confirmation views
- Added missing
context_object_nameto 4 delete views: DOLSApplicationDeleteView, DNARRecordDeleteView, PressureInjuryDeleteView, ClinicalCareNeedDeleteView - Templates expected variable names with underscores (e.g.,
dols_application) but Django was providing lowercase model names without underscores (e.g.,dolsapplication) - This mismatch could cause template rendering issues in delete confirmation pages
- Ensures delete confirmation templates properly display the record being deleted
[1.0.2] - 2026-01-05
Security
- Detail View Property Access Control - All detail views now enforce property-based access control
- Added
PropertyRestrictedDetailMixinto filter records to accessible properties only - Prevents unauthorized access to resident/incident/clinical data from other properties
- 12 detail views updated: Resident, Incident, Infection, PressureInjury, MedicationError, Complaint, Compliment, DNARRecord, DOLSApplication, SafeguardingReferral, ClinicalCareNeed, and IncidentDetailByRef
- Resident Form Property Filtering - Forms now filter properties and rooms to accessible only
ResidentFormfilters property selector and room dropdown to accessible propertiesrooms_by_propertyHTMX endpoint validates user has property access before returning rooms- Server-side validation prevents saving residents to unauthorized properties
[1.0.1] - 2026-01-02
Fixed
- Residents List Global Filter - /residents view now respects the global property filter
- Previously missed when global filter feature was implemented
- Property dropdown only shows when multiple properties are selected in global filter
- Room dropdown filtered to only show rooms from globally selected properties
[1.0.0] - 2025-12-30
Changed
- Production Release - System handed over to customer
[0.14.0] - 2025-12-30
Added
- Data Import Feature - Bulk import for rooms and residents from Excel files
- Two-step import flow: upload file, preview changes, confirm import
- Room Import: Select property, upload Excel with room data
- Columns: Room Number, Description, Double Room (Yes/No), Room Level, Room size (sq ft)
- Idempotent: re-uploading same file skips existing rooms (matched by property + room number)
- Resident Import: Upload Excel with resident data including property column
- Columns: First name, Middle names, Surname, DOB, Admission date, Property, Room number, Care type, Nourish score, Status, POA
- Idempotent: skips existing residents (matched by first name + last name + DOB)
- Auto-creates missing lookup values (Room Levels, Care Types, Statuses, POA Types)
- Preview screen shows: new records count, existing (skip) count, errors, and lookup values to create
- Partial import: valid rows import even if some fail, with downloadable error report
- Downloadable templates for each import type
- Data Import card added to Configuration page
- Test files available in
import/test/folder for UAT testing
[0.13.2] - 2025-12-30
Added
- POA Type Configuration - Dedicated management page for Power of Attorney types in Config
- POA types now appear in the dropdown management list
- Custom form supporting both
nameanddescriptionfields - Delete protection prevents removing POA types assigned to residents
- Enables adding new options like "Yes - Finance & Health"
[0.13.1] - 2025-12-30
Added
- Room Level Configuration - Dedicated management page for room levels in Config
- Room levels now appear in the dropdown management list
- Custom form supporting both
nameandpoint_valuefields - Delete protection prevents removing room levels assigned to rooms
- Point value validation (0-10 range)
[0.13.0] - 2025-12-24
Added
- Property Assignment Admin Interface - Custom admin page for managing user property access
PropertyAssignmentManageViewshowing all users with roles and property assignments- API endpoint
/api/property-assignments/update/for updating user assignments - API endpoint
/api/user-role/update/for updating user roles with self-lockout prevention - Managers/Administrators automatically have access to all properties
- Staff/Nurses can be assigned to specific properties via edit modal
- Last administrator protection prevents accidental lockout
- Auto-assign all properties when demoting Manager/Admin to Staff/Nurse
- Property Assignments card added to Configuration page
[0.12.0] - 2025-12-24
Added
- Management Reports Property Filtering - Reports can now be scoped to specific properties
propertiesM2M field on ManagementReport model for property scope selectionget_property_scope_display(),get_properties_list(),get_properties_for_filtering()helper methods- AnalyticsService refactored from static methods to instance-based with property filtering support
_apply_property_filter()method for filtering querysets by propertyget_property_summary()method for property scope context in reports- All report views, PDF generator, and current metrics service updated for new AnalyticsService API
[0.11.0] - 2025-12-24
Added
- Property Filtering Foundation - Database models and migrations for multi-property filtering system
PropertyAssignmentmodel - Links users to properties they can accessUserPropertyPreferencemodel - Stores user's filter preferences across sessions- CareProperty soft delete support (
is_active,deleted_at,deleted_byfields) - CarePropertyManager with
active()andinactive()methods care_propertyforeign key on all clinical models for historical accuracy:- MedicationError, PressureInjury, ClinicalCareNeed, DNARRecord, DOLSApplication, SafeguardingReferral (required resident)
- Complaint, Compliment (optional resident - nullable FK)
- Auto-population of
care_propertyfrom resident's room on record creation - Data migration to populate
care_propertyon existing records - Django Admin registration for PropertyAssignment and UserPropertyPreference
- CarePropertyAdmin with soft delete actions (soft delete/reactivate), room count, and resident count
[0.10.12] - 2025-12-24
Fixed
- Fixed "Manage Rooms" button overlapping "Property Details" text on Property Management page by replacing absolute positioning with proper flexbox layout
[0.10.11] - 2025-12-24
Added
- Property Detail page with nested Room CRUD - add, edit, and delete rooms directly within property context
- HTMX modal-based room management with inline updates (no page refresh)
- "Manage Rooms" button on Property Management page to access property-specific room management
- Room statistics display (total rooms, occupied, available, occupancy rate)
- Floor-based room organization on property detail page
Changed
- Replaced "Room Management (Coming Soon)" placeholder with working "Room List" link
[0.10.10] - 2025-12-24
Added
- Property filter dropdown on Residents list page - filter residents by care property
- Property CRUD functionality accessible from Property Management page via "Add / Edit Properties" button
Changed
- Residents list filter grid expanded to 6 columns to accommodate new Property filter
[0.10.9] - 2025-12-24
Fixed
- Fixed dashboard Quality Overview showing incorrect RAG status when no data exists in the system
- Medication errors learning completion now shows GREEN (100%) when no errors require lessons
- Compliments metric now shows GREEN when no active residents exist (no expectation of compliments)
- Clinical MCA completion now shows GREEN (100%) when no assessments exist
[0.10.8] - 2025-12-23
Fixed
- Fixed password reset email not sending due to
as_bytes() lineseperror - pinned Django to <6.0 (django-ses incompatible with Django 6) - Fixed password reset email showing raw HTML - added
html_email_template_nameto send proper HTML emails - Enabled SESv2 client (USE_SES_V2=True) for better AWS SES support
[0.10.7] - 2025-12-23
Fixed
- Password reset email now uses custom branded template instead of Django admin default
- Fixed
NoReverseMatcherror for password_reset_confirm by using correctweb:namespace in email template - Fixed
NoReverseMatcherror for login URL in password_reset_done.html and password_reset_complete.html templates - Moved
webapp beforedjango.contrib.adminin INSTALLED_APPS to ensure custom templates take precedence
Changed
- Styled all password reset pages (form, done, confirm, complete) to match login page with background image, card shadow, and polished inputs
[0.10.6] - 2025-12-23
Fixed
- Upgraded django-ses to 4.5.0 to fix email sending
as_bytes() lineseperror - Added better error logging with full traceback for email service failures
Changed
- Added background image to login page matching dashboard style
[0.10.5] - 2025-12-23
Fixed
- Reverted S3 static files to private (querystring_auth enabled) - fixes logo display
- Fixed
initBodyMapModal is not definederror by moving{% load static %}to top of template
[0.10.4] - 2025-12-23
Fixed
- Web manifest icons now accessible on S3 (static files use public-read ACL without signed URLs)
Reverted
- This change broke private S3 bucket access - reverted in 0.10.5
[0.10.3] - 2025-12-23
Fixed
- Body map markers now scale correctly with responsive image display
- Added proper "Back of head" coordinates on back view of body map
- Body map markers now appear at correct positions regardless of viewport size
[0.10.2] - 2025-12-23
Fixed
- Body map markers now appear on image for common location names (e.g., "Back of head" maps to Scalp, "Ankle" maps to Left Ankle)
- Added alias matching and partial matching for injury site locations
[0.10.1] - 2025-12-23
Fixed
- Body map modal not opening due to JavaScript datetime serialization error
- Updated plotly.js CDN from deprecated
plotly-latest.min.jsto explicit version 2.35.2
[0.10.0] - 2025-12-23
Added
- Body map visualization for pressure injuries on injury detail view
- Body map icon on resident Active Alerts tile to view all active pressure injuries
- Interactive body map modal with hover tooltips showing injury stage and date
- Click navigation from body map markers to injury detail pages
- Support for multiple injuries at same body location with count badges
- Sidebar list for injuries at unmapped/custom locations
Fixed
- Corrected
site_of_damagereferences tosite_of_injuryin model str, admin, and templates
[0.9.6] - 2025-12-23
Changed
- Use ECR Public Gallery for Python base images to avoid Docker Hub rate limits
[0.9.5] - 2025-12-23
Fixed
- Version showing "unknown" in footer - pyproject.toml now copied to Docker image
- Changelog page showing "not available" - CHANGELOG.md now copied to Docker image
[0.9.4] - 2025-12-23
Added
- Changelog page accessible at
/changelog - Semantic versioning with single source of truth from pyproject.toml
- Footer version now links to changelog
[0.9.3] - 2025-11-17
Added
- Incident follow-up questions and regulatory notification tracking
- Incident reference number system with auto-generation and UI integration
Changed
- Moved incident reference number to Basic Information section
- Refactored CLAUDE.md into modular documentation structure
[0.9.2] - 2025-09-27
Added
- Property filter specification
- Nourish Dependency Score updates
Changed
- Simplified version configuration
- Updated CareType defaults in migrations
Fixed
- Config save functionality in dropdown management
[0.9.1] - 2025-09-19
Added
- Comprehensive Room Calculator feature
- CareSpace rebrand with new favicon system
- Chart printing system with optimized layouts
Fixed
- Logo URL handling for S3 static files in UAT environment
- Pie chart padding and legend positioning
[0.9.0] - 2025-09-01
Added
- Initial release of care home management system
- Resident management with room allocation
- Incident tracking and management
- Infection control module
- Medication error logging
- Pressure injury tracking
- Complaints and compliments management
- Safeguarding referral system
- DOLS application tracking
- DNAR record management
- Clinical care needs assessment
- Management reports with AI-generated summaries
- Dashboard with RAG status indicators
- User management and role-based access control
- Audit trail for all changes