VERSIONS
Changelog
See what was added and fixed in every application version.
What's new?
No new features in this release.
What's fixed?
- Application URLs now use canonical lowercase English paths independently of the selected interface language. Existing Lithuanian links remain usable through permanent GET redirects, while mutating requests continue to reach the same views without losing their method or body.
- Push notifications, feedback flows, network restrictions, and the Service Worker now use named canonical routes, keeping URL changes consistent across the application.
- Pull requests now run locked Python dependency, Ruff, Django, deployment, migration, dependency, and test checks, with strict documentation checks for docs-only changes.
- Legacy redirects now preserve only valid changelog pagination and safe internal login destinations; unknown, malformed, or unsafe query values are discarded.
- Git and Docker build contexts now exclude environment files, databases, uploads, backups, secrets, caches, and other local runtime artifacts.
What's new?
- Parent and child pages now detect relevant family-state changes automatically, with visibility-aware polling, request backoff, and optional Web Push signals.
What's fixed?
- The Service Worker now handles Web Push and lightweight state-change signals without intercepting document navigation or maintaining an offline HTML fallback.
- The language menu now remains above public welcome and sign-in page content, so its English and Lithuanian flag buttons receive clicks and switch language through the native Django POST and redirect flow.
- Parent pending requests now refresh as one revisioned fragment without interrupting an active dialog or focused control, and newly inserted evidence photos continue to open in the lightbox.
- Parent polling is limited to the Parent dashboard, while child polling remains limited to an active child session; both stop safely when authorization is no longer valid.
- The production dependency lock now pins cryptography 50.0.0.
- Backup configuration, status, and KinKudos database-copy paths now enforce owner-only permissions and reject unsafe directory symlinks.
- The release workflow now installs the locked Python 3.12 dependencies and rejects unexpected Django deployment-check warnings before image publication.
What's new?
No new features in this release.
What's fixed?
- Parent cards, collapsed sections, History filters, dark-mode controls, and device-pairing actions now use tighter spacing, clearer alignment, and safer numeric input limits.
- Manage's collapsed catalog sections now match the compact Settings section height, Settings actions align to the right, and child point balances align to the left with the card content.
- The public changelog now shows five releases per page with navigation.
- Email settings actions keep clear separation from their status badge, and backup administrators can open backup settings even when the backup service is unavailable.
- Settings checkboxes now keep their labels inline, the child scratch-ticket label is shorter, and account accordions match the compact collapsed panel height used elsewhere.
- Checkbox help text now aligns with the form's left edge instead of being indented under the control.
What's new?
- Savings goals now support two methods: live **Current goal** progress from available points, or points saved separately for one specific goal.
- Approved savings goals now expose the saving-method choice on the child goal card.
- Separately saved points support atomic transfers and returns, parent-approved completion, goal history, and child/parent management UI.
- History now covers savings-method selection, goal transfers and returns, Current goal changes, goal completion, and goal deletion events.
- Dedicated goal management and History filters are available in the parent workspace.
What's fixed?
- Activity History no longer shows an event-count badge, and empty-state text now uses the same secondary typography as Credit summaries.
- Informational dialogs rely on their consistent close control instead of duplicate **Got it** buttons, with unified secondary body typography.
- The parent workspace now uses the Home, Manage, Settings, and History navigation, with Manage sections for Tasks, Penalties, Rewards, and Goals.
- Parent Home now has a compact pending-request empty state, clearer child cards, spendable/saved summaries, goal summaries, and named quick actions.
- Settings are organised into responsive Family, Points and tasks, Scratch tickets, Data and retention, access, service, account, and feedback groups.
- Child goal cards use a responsive two-column desktop layout where space allows, while keeping the childโs themed presentation.
- Parent and child controls use consistent local SVG icons and accessible action names while preserving goal emoji personalization.
- Manage section links now keep the parent dashboard open and expand the selected Tasks, Penalties, Rewards, or Goals section.
- The saved-goal **After** preview and its label/unit stay aligned while the amount updates as the child chooses a value.
- Saving-method dialog actions no longer overlap, and catalogue Show/Hide controls keep their matching icons and accessible labels.
- Goal management rows keep progress and saving-mode columns aligned even when rows have different action counts; goal cards no longer touch or overlap.
- Savings-goal proposals match task and reward request spacing and keep the suggested amount neutral.
- Parent catalogue edit actions use the official regular pen-to-square icon, and expanded goal editors expose a text-only **Delete** action with explicit confirmation.
- History child selection now applies immediately while preserving the other active query filters.
- Add-points preview limits the **All** choice by both available points and the remaining goal target.
- Activity-history rows no longer show misleading calendar icons and use a neutral **Informational** badge with the activity icon in the result area.
- Deleting a goal atomically returns saved points, cancels pending completion requests, and keeps goal event history through soft deletion.
- Parent dashboard quick-action icons and compact Credit/Tickets rows keep consistent sizing, and backup warnings remain separated.
- The flag-only language menu now stays centred directly below its trigger on narrow and wide layouts without overlapping neighbouring header actions.
- Parent history now limits each activity source before merging the latest 50 entries, avoiding unbounded in-memory history loading for โAny timeโ. Existing children with exactly one active goal retain available-points progress after migration. Children with multiple active goals choose a saving method instead of having a goal selected by guesswork.
- Child avatars now require a signed-in parent or a valid paired device when device pairing is enabled, preventing anonymous profile-image enumeration.
- Goal completion request races now return a controlled validation error, and the patched cryptography dependency is pinned to 50.0.0.
What's new?
No new features in this release.
What's fixed?
- Signed-in parent and child pages now use a seamless, inset product header matching the welcome page instead of a separate full-width menu bar.
- Initial setup now uses installation-neutral setup-code guidance, refers to preparing the system, and keeps the optional email checkbox after its inline label. Its desktop form also uses a comfortable two-column layout with consistently sized controls and clear text spacing while remaining single-column on phones. SMTP fields stay visibly disabled until email setup is selected.
- The first child sign-in now presents every world as a full theme preview with a clear, accessible selected state on desktop and mobile.
- The child PIN dialog now labels its submit action โLoginโ instead of showing unrelated status text.
- Sign-in and other session-sensitive pages now prevent stale browser/PWA caching, refresh safely after Back/Forward Cache restoration, and guard the parent sign-in form against duplicate submission.
- The service worker now bypasses authentication routes, is always revalidated, and continues to cache only the versioned offline fallback.