- Python 51.3%
- HTML 41.5%
- Shell 4.3%
- JavaScript 2.7%
- CSS 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
Build Holland Apps Suite Image / build-image (push) Successful in 37s
Reviewed-on: #143 |
||
| .forgejo | ||
| app | ||
| data-template | ||
| docs | ||
| tests | ||
| tools | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| Holland_App_Icon_1024.png | ||
| install.sh | ||
| PACKAGE_CONTENTS.txt | ||
| README.md | ||
| release-scope-allowlist.txt | ||
| truenas-custom-app.yaml | ||
| verify-package.sh | ||
| VERSION | ||
Holland Apps Suite for TrueNAS SCALE — v1.9.7
A standalone TrueNAS container suite with Kids Points Tracker, Family Meal Planner, Meal Points Tracker, Holland Local Conditions, Floorplan Tool, Holland Home Maintenance, Holland Library, Computer Skills, and Road Trip Bingo behind one login, dashboard, domain, and public port.
Persistent datasets
/mnt/Holland Fast/holland-app/data
/mnt/Holland Fast/holland-app/backups
Do not delete or replace these folders during an update.
Included applications
- Kids Points Tracker v1.15.14-holland.1
- Family Meal Planner v2.0.3-holland.1
- Meal Points Tracker v1.1.3-holland.1
- Holland Local Conditions v1.2.3-holland.1
- Floorplan Tool v1.0.1-holland.1
- Holland Home Maintenance v1.0.17-holland.1
- Holland Library v0.2.1-holland.1
- Computer Skills v1.0.24-holland.1
- Road Trip Bingo v1.0.3-holland.1
All applications launch through the Suite on port 8095. Internal application ports are not published.
v1.9.7: Road Trip Bingo voting, Test Mode, and mobile chat
- Advances Road Trip Bingo to v1.0.3-holland.1.
- Voting now shows all categories enabled in Admin instead of a random four-category subset.
- Adds short explanations to all Game Mode choices and hides vote-count badges until at least one vote has been cast.
- Adds a Suite Admin-only Test Mode that is isolated from real rounds, scores, leaderboard/history, chat, anomaly review, and child presence. Admins can test Voting or jump directly to a generated Bingo board.
- Test Voting supports 1–6 additional simulated players, a Vote As selector for casting/changing each simulated player's Category, Difficulty, and Game Mode votes, and Finish Voting Now using the same production tie-resolution helper as real rounds.
- Test Boards use the production server-side object recipes and production win-detection helper while keeping every test mark in browser-only sandbox state.
- Makes the collapsed mobile Chat tab vertically draggable while remaining locked to the right edge. Tap still opens Chat, drag moves only up/down, and the chosen position is remembered on that device.
- Keeps the v1.9.6 two-player completion, Leave Game, Dashboard navigation, approved icon, and hidden-UI fixes.
- No Baserow schema, SQLite schema, Dockerfile, or persistent-data migration changes are required. Forgejo full-suite validation remains manual-only.
v1.9.6: Road Trip Bingo round completion and navigation
- Advances Road Trip Bingo to v1.0.2-holland.1.
- Fixes two-player rounds so Results opens immediately after first and second place instead of waiting for an impossible third-place finisher.
- Makes required placements dynamic using the eligible round population, while temporary disconnects remain part of the round and do not shorten it.
- Adds Leave Game for children. Voluntary leavers return to the Lobby, cannot resume that round, and are removed from the remaining placement pool; already-earned placements and points are preserved.
- Adds a Dashboard button to the Lobby for direct navigation back to the Holland Apps Suite main page.
- Keeps the v1.9.5 approved Road Trip Bingo icon and fixed hidden-UI behavior unchanged.
- No Baserow schema, SQLite schema, Forgejo workflow, Dockerfile, or persistent-data migration changes are required.
v1.9.5: Road Trip Bingo icon + hidden UI fix
- Advances Road Trip Bingo to v1.0.1-holland.1.
- Replaces the prototype-style Bingo launcher icon with the approved glossy Holland H + Bingo/travel badge design and normalizes it to the Suite Home Maintenance-derived transparent padding standard.
- Re-exports matching 180 / 192 / 512 / 1024 icons for both the Suite dashboard and Road Trip Bingo PWA.
- Fixes the initial blurred Lobby/empty modal overlay by making the HTML
hiddenattribute authoritative across Road Trip Bingo UI components. - Advances Road Trip Bingo browser/PWA cache generation and Suite icon cache tokens so the corrected UI and approved icon refresh after deployment.
- No Baserow schema, SQLite schema, Forgejo workflow, Dockerfile, or persistent-data migration changes are required.
v1.9.4: Road Trip Bingo
- Adds Road Trip Bingo v1.0.0-holland.1 as a standalone Holland Apps multiplayer road-trip game.
- Uses the approved 265-object library with approved Easy / Medium / Hard ratings and Easy/Medium/Hard board recipes.
- Supports Lobby → Voting → Game → Results flow, four random category choices, difficulty and game-mode voting, shared-object boards with randomized positions, and Classic / Four Corners / Blackout / X Bingo modes.
- Adds 5 / 3 / 2 all-time leaderboard scoring for first / second / third place, frozen winner boards, spectator mode for first and second place, and clickable winning-board snapshots on Results.
- Adds live shared text chat with replies/reactions, child self-delete, Suite Admin delete/history, configurable inappropriate-language blocking/review, and private single-player mark anomaly review.
- Uses real-time-style long polling plus heartbeat presence, a configurable presence grace period, local mark-event queueing, idempotent timestamp reconciliation, and offline recovery.
- Keeps the active game screen fixed to the viewport on desktop, iPhone, and iPad; only the live chat history scrolls inside its panel.
- Stores all Road Trip Bingo data in local SQLite under
/data/apps/road_trip_bingo/road_trip_bingo.db; no Baserow schema changes are required. - Uses the existing Suite Admin → App Access controls. Road Trip Bingo access defaults to Suite Administrators only until users are explicitly enabled.
v1.9.3: Computer Skills STAAR Prep Lab
- Adds STAAR Prep Lab v0.2.0-holland.1 as the tenth production Computer Skills module with 15 stable grade/subject assessment lessons across Grades 3–8 and 578 supplied source questions.
- Preserves randomized 10-question Quick Tests, 20-question Practice Tests, and Full Tests, along with embedded source assessment pages where supplied and official-live TEA source pages for the provided Grade 7–8 catalog.
- Uses stable
staar-g3-maththroughstaar-g8-social-studieslesson IDs. A score of 75%+ on at least 10 questions passes; 90% / 75% / 60% produce 3 / 2 / 1 stars. - Automatically scorable items determine the automatic percentage; constructed-response and graphical/manual items are explicitly excluded from that percentage and remain review items.
- Integrates STAAR Prep with authenticated Attempts, Progress, Activity, Analytics, Manage rewards, Reset Learning Progress, and the durable SQLite
sync_jobsoutbox. - Seeds 15 reward rules inactive by default. Kids Points Tracker remains authoritative for actual point transactions.
- Removes standalone development badges, adds Computer Skills navigation, and preserves the complete supplied assessment/question payload inside the production module page.
- Relaxes the older local-first Math enqueue CI timing assertion from 1.0s to 2.0s to retain the non-blocking performance guard while avoiding transient shared-runner false failures.
- Uses the existing six Computer Skills Baserow tables. No Baserow schema changes are required.
v1.9.2: Computer Skills Spelling Quest
- Adds Holland Spelling Quest v1.2.0-holland.1 as the ninth production Computer Skills module with all 16 supplied progressive spelling levels.
- Uses stable
spelling-quest-level-01throughspelling-quest-level-16lesson IDs and preserves 5 / 8 / 10 sessions, speech/listening controls, correction practice, randomized/adaptive word selection, hints, and 90% / 75% / 60% star thresholds; 2+ stars pass/unlock. - Makes authenticated Computer Skills Attempts/Progress authoritative for completion while keeping recent-word rotation, word mastery, pattern mastery, and speech/settings state device-local for adaptive gameplay.
- Uses the durable SQLite
sync_jobsoutbox for local-first completion and background synchronization; Quest Score, retries, hints, per-skill results, word/pattern session summaries, and weak-word summaries are stored in existing AttemptsMetrics JSON. - Adds Spelling Quest to Dashboard, Activity, Analytics, Manage rewards, and Reset Learning Progress. A server reset marker clears local adaptive mastery/history on the next Spelling Quest load.
- Seeds 16 Spelling Quest reward rules inactive by default. Kids Points Tracker remains authoritative for actual point transactions.
- Removes the standalone child-facing Reset Progress control and development version badge, and labels the internal game total Quest Score.
- Uses the existing six Computer Skills Baserow tables. No Baserow schema changes are required.
v1.9.1: Computer Skills Finance Lab
- Adds Holland Finance Lab v1.1.1-holland.1 as the eighth production Computer Skills module with all 16 supplied progressive personal-finance levels.
- Uses stable
finance-lab-level-01throughfinance-lab-level-16lesson IDs and preserves teaching-first instruction, randomized practice, hints, 5 / 8 / 10 sessions, and 90% / 75% / 60% star thresholds; 2+ stars pass/unlock. - Keeps Wallet, Savings, Interest Earned, and Savings Goal as simulated practice money while authenticated Computer Skills Attempts/Progress remain authoritative for completion.
- Uses the durable SQLite
sync_jobsoutbox for local-first completion and background synchronization; module-specific finance results are stored in existing AttemptsMetrics JSON. - Labels the internal score Lab Score, adds Finance Lab to Activity/Analytics/Manage/Reset Learning Progress, and seeds 16 reward rules inactive by default.
- Kids Points Tracker remains authoritative for actual point transactions.
- Uses the existing six Computer Skills Baserow tables. No Baserow schema changes are required.
v1.9.0: Computer Skills Fractions Lab
- Adds Holland Fractions Lab v1.1.2-holland.1 as the seventh production Computer Skills module with eight progressive written-fraction levels.
- Uses stable
fractions-lab-level-01throughfractions-lab-level-08lesson IDs for reading fractions, naming fractions, building fractions, equivalent fractions, simplifying, comparing, ordering, and Fraction Mix. - Preserves the supplied 5 / 8 / 10 challenge session sizes, optional visual helper, sound feedback, randomized challenge pools, and 90% / 75% / 60% star thresholds. 2+ stars (75%+) are required to pass and unlock the next level.
- Integrates Fractions Lab with authenticated Computer Skills Attempts, Progress, Activity, Analytics, Manage rewards, Reset Learning Progress, and the durable SQLite
sync_jobsoutbox. - Stores Quest Score, first-try accuracy, second-try results, hints, retries, challenge count, stars, and per-skill fraction results in the existing Attempts
Metrics JSON. - Fractions Lab point rewards are disabled by default. Eight Daily 1-point reward rules are seeded inactive and can be enabled/configured later in Computer Skills Manage.
- Keeps device-local visual-helper/sound/session settings and recent-challenge rotation while Computer Skills Progress is authoritative when configured.
- Removes the standalone child-facing progress reset and distinguishes the standalone game score as Quest Score.
- No Baserow schema changes are required.
v1.8.52: Computer Skills Measurement Lab
- Adds Holland Measurement Lab v1.1.6-holland.1 as the sixth production Computer Skills module with 16 progressive levels from length basics through adaptive Measurement Master practice.
- Uses stable
measurement-lab-level-01throughmeasurement-lab-level-16lesson IDs and preserves the supplied interactive rulers, scales, pouring tools, thermometers, conversions, estimation, and real-world measurement activities. - Preserves 5 / 8 / 10 challenge session sizes and the supplied star thresholds: 3 stars at 90%+, 2 stars at 75%+, and 1 star at 60%; 2+ stars are required to pass and unlock the next level.
- Integrates Measurement Lab with authenticated Computer Skills Attempts, Progress, Activity, Analytics, Manage rewards, Reset Learning Progress, and the durable SQLite
sync_jobsoutbox. - Stores Quest Score, first-try accuracy, hints, retries, estimate error, challenge count, stars, and per-skill measurement results in existing Attempts
Metrics JSON. - Measurement Lab point rewards are disabled by default. Sixteen Daily 1-point reward rules are seeded inactive and can be enabled/configured later in Computer Skills Manage.
- Keeps device-local settings and recent-challenge rotation while making Computer Skills Progress authoritative when configured.
- Removes the standalone child-facing progress reset and distinguishes the game score as Quest Score.
- No Baserow schema changes are required.
v1.8.51: Computer Skills Mouse Skills
- Replaces the Computer Skills Mouse Skills placeholder with Holland Mouse Skills v1.1.1-holland.1 as the fifth production learning module.
- Adds 12 progressive mouse/trackpad levels covering pointer movement, paths, single-click, ordered clicking, precision clicking, double-click, click-and-hold, right-click, drag-and-drop, drag sorting, scrolling, and Mouse Master.
- Uses stable
mouse-skills-level-01throughmouse-skills-level-12lesson IDs and preserves the supplied per-level goals and accuracy-focused star thresholds. - Requires 2+ stars (88%+ accuracy) to pass and unlock the next level; three stars requires 96%+ accuracy with no more than one mistake.
- Integrates Mouse Skills with authenticated Computer Skills Attempts, Progress, Activity, Analytics, Manage rewards, Reset Learning Progress, and the durable SQLite
sync_jobsoutbox. - Stores accuracy, successes, attempts, mistakes, Quest Score, duration, stars, level goal, and mouse skill in the existing Attempts
Metrics JSON. - Mouse Skills point rewards are disabled by default. Twelve Daily 1-point reward rules are seeded inactive and can be enabled/configured later in Computer Skills Manage.
- Preserves device-local sound and target-label settings plus the mouse/trackpad recommendation on coarse-pointer-only devices.
- Removes the standalone child-facing progress reset and renames the standalone game-score
pointswording to Quest Score so it cannot be confused with Kids Points. - No Baserow schema changes are required.
v1.8.50: Computer Skills Grammar Quest
- Adds Holland Grammar Quest v1.2.0-holland.1 as the fourth production Computer Skills module with 16 progressive grammar levels from nouns and verbs through sentence structure and adaptive Grammar Master practice.
- Uses stable
grammar-quest-level-01throughgrammar-quest-level-16lesson IDs and preserves the standalone 5 / 8 / 10 challenge session choices, shuffled no-repeat challenge decks, touch-friendly interactions, hints, and 90% / 75% / 60% star thresholds. - Requires 2+ stars (75%+) to pass and unlock the next Grammar Quest level.
- Integrates Grammar Quest with authenticated Computer Skills Attempts, Progress, Analytics, Manage rewards, Reset Learning Progress, and the existing durable SQLite
sync_jobsoutbox. - Stores first-try accuracy, second-try results, Quest Score, hints, challenge count, and per-skill grammar results in existing Attempts
Metrics JSON; Grammar Master continues to emphasize weaker skills. - Grammar Quest does not award Kids Points by default. Its 16 reward rules are seeded inactive and can be enabled/configured later in Computer Skills Manage.
- Removes the standalone child-facing progress reset and renames the standalone game-score
pointswording to Quest Score to distinguish it from Kids Points. - No Baserow schema changes are required.
v1.8.49: Computer Skills Reading Quest
- Adds Holland Reading Quest v1.2.0-holland.1 as the third production Computer Skills module with 8 progressive levels and the supplied 64-passage adaptive reading library.
- Integrates Reading Quest with authenticated Computer Skills Attempts, Progress, Analytics, Manage rewards, Reset Learning Progress, and the existing durable SQLite sync outbox.
- Preserves Reading Quest's existing star thresholds: 3 stars at 90%+, 2 stars at 75%+, 1 star at 60%+; 2+ stars are required to pass and unlock the next level.
- Seeds stable
reading-quest-level-01throughreading-quest-level-08lessons into the existing Computer Skills tables. - Reading Quest does not award Kids Points by default. Its reward rules are seeded inactive and can be enabled/configured later by a parent in Computer Skills Manage.
- Stores passage, quest score, first-try accuracy, hints, and per-skill results in existing Attempts
Metrics JSONfor analytics without adding Baserow fields. - No Baserow schema changes are required.
v1.8.48: Normalized Holland app icons
- Standardizes the visible footprint, transparent outer padding, and canvas treatment for all eight Suite application icons using Home Maintenance as the visual reference.
- Re-exports matching 180, 192, 512, and 1024 PNG assets for the Suite dashboard and app-local PWA/static icon sets where applicable.
- Preserves each app's existing Holland H artwork and lower-right identifying symbol; this release changes layout/padding only, not app identity.
- Adds a Suite-level
suite_icon=1.8.48cache token so the dashboard fetches the refreshed icon assets even when an app manifest still carries an older cache query. - Advances the Family Meal Planner PWA static cache generation so installed Meal Planner PWAs can refresh the normalized icon set.
- No Baserow schema changes and no application data-model changes.
v1.8.47: Meal Points PWA + Computer Skills Dashboard control
- Advances Meal Points Tracker to v1.1.3-holland.1 and makes it a dedicated installable PWA with a scoped manifest, iPhone/iPad Apple touch icon, 180/192/512/1024 local icons, and a network-only service worker.
- Uses the existing approved Holland Meal Points icon artwork so Add to Home Screen no longer falls back to a generic generated M icon.
- Advances Computer Skills to v1.0.16-holland.1 and changes its shared header action from Suite Dashboard to ⌂ Dashboard, matching the Kids Points Tracker control wording and compact rounded navy styling.
- Retains v1.8.46 Points Tracker Savings-state behavior, Computer Skills Analytics/local-first Math performance, Meal Points Baserow/SQLite behavior, and all existing privacy boundaries.
- No Baserow schema changes are required.
v1.8.46: Points Tracker Activity → Bank Savings state fix
- Fixes a browser-state regression where visiting Activity and then returning to Bank could temporarily make Savings points appear in the normal Available balance.
- The Activity tab continues to load its paginated transaction ledger, but its ledger-only state snapshot is no longer merged over the Savings-decorated Bank bootstrap state.
- Bank Available, Savings, family totals, and per-child totals therefore remain stable across Bank → Activity → Bank navigation.
- A normal full refresh remains authoritative and unchanged. Existing v1.7.4 stale-background-snapshot protections remain intact.
- Kids Points Tracker remains v1.15.14-holland.1 because this is a narrow Suite browser-state hotfix; no Points API, ledger, Baserow schema, Savings schema, or cache format changes are required.
v1.8.45: Computer Skills Analytics
- Advances Computer Skills to v1.0.15-holland.1 while retaining Holland Math Quest v1.0.4-holland.1, Math content version 1.0.0, Holland Typing Quest v1.2.2, and all stable lesson IDs.
- Adds a shared Analytics tab for parents/admins and children with overview metrics, skill-group progress, performance and practice-time trends, lesson performance, strongest skills, skills to practice, and improvement highlights.
- Parent/admin accounts can select a child within the current family. Child accounts are server-locked to their own linked child ID and cannot request or receive sibling analytics.
- Analytics reads Attempts, Progress, Awards, Lessons, and Modules through the existing persistent SQLite cache, so the page does not add Baserow round trips to the normal UI path. Baserow remains authoritative and Kids Points Tracker remains authoritative for points.
- Supports All Computer Skills / Typing / Math Quest filters and 7-day / 30-day / 90-day / This Year / All Time date ranges.
- Adds deterministic Strong Skills, Skills to Practice, and Improvement summaries without adding an AI service or a new analytics database table.
- No Baserow schema changes are required.
v1.8.44: Computer Skills Manage rewards/retry hotfix
- Advances Computer Skills to v1.0.14-holland.1 while retaining Holland Math Quest v1.0.4-holland.1, Math content version 1.0.0, Holland Typing Quest v1.2.2, and all stable lesson IDs.
- Fixes the Computer Skills Manage → Lesson Rewards 500 error introduced in v1.8.43. The reward catalog no longer references the Math sync request
bodyoutside a request handler. - Moves retry-only Baserow refresh logic into the background Math attempt replay path, where
_sync_retry_countis actually available. - Preserves the v1.8.43 local-first completion screen, durable SQLite sync queue, retry/backoff behavior, reward handling, and fast v1.8.42 cache reads.
- Baserow and Kids Points Tracker remain authoritative. No Baserow schema changes are required.
v1.8.43: Computer Skills local-first Math completion
- Advances Computer Skills to v1.0.13-holland.1 and Holland Math Quest to v1.0.4-holland.1 while keeping Math content version 1.0.0, Holland Typing Quest v1.2.2, and all stable lesson IDs unchanged.
- Math Quest now renders the Level Complete screen immediately from the locally recomputed result instead of waiting for Baserow, Progress rebuilding, reward evaluation, or Kids Points Tracker posting.
- Adds a durable SQLite
sync_jobsoutbox inside the existing/data/apps/computer_skills/computer_skills_cache.db. The level-completion request is committed locally first, then Baserow Attempts/Progress/Awards and the Kids Points reward are synchronized by a background worker. - Uses the existing Math
Client Session IDas a local deduplication key and assigns a stable Attempt ID before background synchronization so retries do not intentionally create a second attempt. - Interrupted worker jobs are automatically returned to
pendingafter an app/container restart. Temporary Baserow or Points Tracker failures retry with bounded backoff while the child can continue using Math Quest. - The completion screen shows a pending save/reward state, polls the local sync-job status, and updates to the final earned/already-earned/not-qualified result when background synchronization finishes.
- Existing Baserow remains authoritative for Computer Skills records and Kids Points Tracker remains authoritative for points. No Baserow schema changes are required.
v1.8.42: Computer Skills persistent DB cache
- Advances Computer Skills to v1.0.12-holland.1 while keeping Holland Math Quest v1.0.3-holland.1, Math content version 1.0.0, Holland Typing Quest v1.2.2, and all stable lesson IDs unchanged.
- Adds persistent SQLite cache storage at
/data/apps/computer_skills/computer_skills_cache.dbfor all six Computer Skills Baserow tables and their field metadata. - Reads use a 60-second local cache, successful Baserow writes patch the local cache immediately, and stale cached data can be served when Baserow is temporarily unavailable.
- Adds a 60-second background refresh so lesson, progress, reward-rule, attempt, and award data are normally warm before a child finishes a lesson.
- Adds manager-only cache diagnostics plus Sync and Rebuild API endpoints for maintenance.
- Keeps Baserow authoritative: attempts, awards, progress, catalog configuration, and Kids Points rewards still write through to their existing authoritative stores.
- No Baserow schema changes are required.
v1.8.40: Math Quest navigation, hydration & reward clarity
- Advances Computer Skills to v1.0.10-holland.1 and Holland Math Quest to v1.0.2-holland.1 while keeping Math curriculum content version 1.0.0 unchanged.
- Adds a persistent ← Computer Skills button in the Math Quest header so children can return directly to the Computer Skills dashboard.
- Fixes the intermittent mid-level kickback by allowing delayed Baserow progress hydration to refresh state/UI data without ever forcing Math Quest back to the level-select screen after the child has started or completed a session.
- Changes Math Quest Accuracy to first-try accuracy (
first_try_correct / total problems) on both client and server, so a level no longer reports 100% accuracy merely because every problem was eventually solved after retries. - Verifies the configured Daily reward path with regression coverage that posts 1 point through the real Computer Skills → Kids Points Tracker award bridge for a first qualifying completion. Same-day repeats are explicitly reported as already earned and do not post again.
- Adds a persistent completion-screen reward status for earned, already-earned/limited, not-qualified, and point-posting-failure outcomes instead of relying only on a short toast.
- Math Quest Activity details now report score, first-try accuracy, first-try correct count, hints, and duration in the existing compact Computer Skills Activity summary.
- Preserves the 2+ star pass/unlock threshold, Daily 1-point defaults, Manage/Reset/Activity integration, stable lesson IDs, historical Attempts/Awards/Points, and the existing six-table Baserow schema.
- Requires no Baserow schema changes.
v1.8.39: Math Quest sidebar initialization & Practice removal
- Advances Computer Skills to v1.0.9-holland.1 and Holland Math Quest to v1.0.1-holland.1 while keeping Math curriculum content version 1.0.0 unchanged.
- Fixes the Math Quest startup path so the four lesson cards and the selected lesson's Level 1–10 buttons render immediately instead of waiting for the remote Computer Skills/Baserow bootstrap response. Saved progress still hydrates afterward and refreshes the same UI.
- Removes the child-facing Practice Mode control and its browser state. Every Math Quest session now follows the normal authenticated Attempts/Progress/reward flow.
- Ignores legacy
practice_mode=trueMath attempt payloads server-side so they cannot bypass tracked progression or reward rules. - Preserves the 2+ star pass/unlock threshold, Daily 1-point defaults, Manage/Reset/Activity integration, existing Math Quest lesson IDs, historical Attempts/Awards/Points, and the existing six-table Baserow schema.
- Requires no Baserow schema changes.
v1.8.38: Computer Skills Math Quest
- Advances Computer Skills to v1.0.8-holland.1 while keeping Holland Typing Quest v1.2.2 and the Typing curriculum content version 1.2.0 unchanged.
- Adds Math Quest as the second production Computer Skills learning module with 40 independently tracked activities: 10 Addition, 10 Subtraction, 10 Multiplication, and 10 Division levels.
- Integrates Math Quest with authenticated Computer Skills Attempts, Progress, Reward Rules, Awards, Reset Learning Progress, and the existing Kids Points Tracker award bridge instead of standalone browser progress.
- Requires 2+ stars to pass a Math Quest level, unlock the next level in that operation, and qualify for its configured reward. One star records the attempt but does not advance progression.
- Uses the existing default reward policy of 1 point, Daily, maximum once per lesson per family-local day; Math Quest rewards can be changed individually or in bulk from Manage. Practice Mode never changes progression or awards points.
- Extends Manage and Reset Learning Progress across Typing and Math Quest, including module-wide and per-operation scopes while preserving historical Attempts, Awards, and Kids Points.
- Extends the shared Computer Skills Activity feed with an All / Typing / Math Quest filter. Activity rows now hide internal
[KPT_META]data and show compact human-readable attempt-stat bullets; the read-only explanatory banner is removed. - Makes the supplied Math Quest interface responsive for phone, tablet, and desktop while preserving its randomized problems, hints, visual models, scoring, settings, and operation-specific level content.
- Requires no Baserow schema changes; Math Quest seeds one Module, 40 Lessons, and 40 Reward Rules into the existing six Computer Skills tables.
v1.8.37: Computer Skills Activity mirror
- Advances Computer Skills to v1.0.7-holland.1 while keeping Holland Typing Quest v1.2.2 and Typing curriculum content version 1.2.0 unchanged.
- Adds an Activity tab directly inside Computer Skills so children can confirm awarded lesson points without switching back and forth to Kids Points Tracker.
- Uses the existing Kids Points Tracker Activity ledger as the source of truth; Computer Skills does not create or maintain a second transaction ledger.
- Shows only successfully posted
source_type=computer_skillsPoints transactions, newest first, including lesson name, accuracy/WPM detail, child/account, awarded points, and ledger status. - Child-linked accounts are scoped to their own Computer Skills awards. Parent/admin accounts can review family Computer Skills award activity and filter the loaded feed by child.
- Adds Activity search, Refresh, and Load More controls and matches the Points Tracker Activity row/card visual language while remaining read-only inside Computer Skills.
- Activity refreshes from Points Tracker each time the tab is opened, so a visible
+1confirms the point actually reached the Points Tracker ledger. - Keeps v1.8.36 Reset Learning Progress relocking, v1.8.35 reward management/Daily 1-point defaults, independent Typing progression, and all existing Baserow data unchanged.
- No Baserow table or field changes are required.
v1.8.36: Computer Skills reset relock & asset refresh reliability
- Advances Computer Skills to v1.0.6-holland.1 and Holland Typing Quest to v1.2.2 while keeping Typing curriculum content version 1.2.0 unchanged.
- Makes Reset Learning Progress explicitly authoritative across devices: the server publishes per-child/per-activity reset markers and Typing Quest discards any pre-reset browser unlock/stars before applying current post-reset Baserow Progress. A reset activity therefore returns to Level 1 unlocked / Levels 2–10 locked until the child progresses again.
- Keeps reset scope isolation intact: resetting Word Builder does not relock Learn Keys, Sentences, or Typing Trail, and resetting All Typing relocks all four activities.
- Adds release-version query strings to Computer Skills CSS, JavaScript, manifest, icons, Typing launch URL, and service-worker registration so a Suite upgrade immediately requests the new assets.
- Changes Computer Skills CSS/JS HTTP caching to revalidate on every load as a second guard against stale unversioned browser assets.
- Preserves the v1.8.35 Kids Points Tracker-style appearance, reward management, 1-point Daily defaults, Attempts, Awards, and Kids Points history.
- No Baserow table or field changes are required.
v1.8.35: Computer Skills management, daily rewards & Points-style UI
- Advances Computer Skills to v1.0.5-holland.1 and Holland Typing Quest to v1.2.1 while keeping Typing curriculum content version 1.2.0 so existing lesson/progress identity remains stable.
- Adds a parent/admin-only Manage section for the two routine controls requested: lesson point awards and how often a qualifying lesson can earn points again.
- Changes untouched default Typing reward rules from 3 points / first completion to 1 point / Daily, with a maximum of one award per lesson per family-local calendar day. Existing historical awards and Points Tracker transactions are preserved.
- Supports per-lesson and bulk reward changes across all Typing, Learn Keys, Word Builder, Sentences, or Typing Trail, including Award Points on/off, point amount, and First / Daily / Weekly / Every qualifying completion eligibility.
- Adds Reset Learning Progress for a child across all Typing or one activity. Attempts and Awards stay as history and Kids Points are never changed; a persistent reset cutoff prevents pre-reset attempts from rebuilding current progress/unlocks.
- Uses the Suite family timezone for Daily/Weekly reward periods and deterministic award keys.
- Restyles the Computer Skills dashboard and Typing Quest to closely match Kids Points Tracker's navy/blue cards, controls, navigation, dialogs, and progress accents while keeping the kid-focused Typing content.
- Fixes the dashboard activity breakdown spacing by right-aligning each
X / 10count separately from its lesson/activity label. - No Baserow table or field changes are required.
v1.8.34: Computer Skills Typing curriculum & dashboard
- Advances Computer Skills to v1.0.4-holland.1 and Holland Typing Quest to v1.2.0.
- Replaces the simple two-key Learn Keys progression with a structured 10-level touch-typing curriculum covering home row foundations, full home row, upper-left and upper-right reaches, two-row fluency, lower-row reaches, Shift/capitals, numbers/symbols, and full-keyboard mastery.
- Learn Keys now uses 20 progressive prompts per level that move from new-key drills into combinations, useful words/patterns, and mixed retention.
- Gives Learn Keys, Word Builder, Sentences, and Typing Trail distinct activity-specific level titles, descriptions, and prompt pools. Typing Trail is no longer just a timed copy of Word Builder.
- Adds actual Shift/capital and shifted-symbol practice with opposite-hand Shift guidance and virtual Shift-key highlighting.
- Updates existing Baserow Typing lesson rows in place to content version 1.2.0 while preserving stable lesson IDs, historical Attempts/Progress/Awards, and first-completion duplicate protection. No Baserow schema change is required.
- Revises the Computer Skills dashboard to show Typing Activities Passed X / 40, removes the Available Modules and Computer Skills Points summary cards, and adds Learn Keys / Word Builder / Sentences / Typing Trail X/10 breakdowns.
- Keeps the v1.8.33 independent per-activity unlock chains and the existing 3-second
+# Points Earnednotification.
v1.8.33: Computer Skills independent Typing progression
- Advances Computer Skills to v1.0.3-holland.1.
- Fixes Typing level unlocks being shared across Learn Keys, Word Builder, Sentences, and Typing Trail.
- Each activity now has its own Level 1–10 unlock chain; passing Learn Keys Level 5 does not unlock Word Builder, Sentences, or Typing Trail Level 5.
- Persisted Computer Skills Progress is the authoritative cross-device unlock source when Baserow is configured.
- Unlock calculation requires contiguous passed levels within the same activity, so a historical later-level test result remains valid history without skipping missing prerequisites.
- Legacy shared browser progress migrates only to Learn Keys; the other activities begin at Level 1 unless their own server progress has unlocked more.
- No Baserow table or field changes are required, and existing Attempts, Progress, Awards, and Points Tracker transactions remain intact.
v1.8.32: Computer Skills Typing activity rewards
- Advances Computer Skills to v1.0.2-holland.1.
- Splits Typing reward/progress identity by activity + level so Learn Keys, Word Builder, Sentences, and Typing Trail can each independently earn the configured reward at the same level.
- Preserves the existing
typing-level-01throughtyping-level-10lesson IDs as the Learn Keys records, keeping v1.8.30/v1.8.31 Attempts, Progress, Awards, and Points Tracker transactions intact. - Automatically seeds 30 additional Typing lesson rows and 30 matching default reward-rule rows on the next Computer Skills bootstrap. No Baserow table or field changes are required.
- Keeps the dashboard level bar based on unique Typing level numbers while Computer Skills points include awards from every Typing activity.
- Cross-device progress can recognize successful attempts from any of the four Typing activities when restoring the next unlocked level.
- Changes the point-award toast to
+# Points Earnedand keeps that notification visible for 3 seconds. - Existing attempts that were recorded under the old shared level ID are preserved as historical data and are not retroactively reclassified or awarded.
v1.8.31: Computer Skills progress hotfix
- Advances Computer Skills to v1.0.1-holland.1.
- Fixes completed failed Typing attempts creating the Attempt row but failing to create/update the Progress row because empty strings were sent to optional Baserow Date fields.
- Progress is now rebuilt from durable Attempts and Awards history, so retry-safe point awards, pass state, best metrics, and earned Computer Skills points remain consistent.
- A later failed practice run no longer downgrades a previously Passed or Mastered level.
- On child bootstrap, missing Progress rows from the v1.8.30 issue are automatically backfilled from existing Attempts and Awards.
- No Baserow schema changes and no Kids Points Tracker behavior changes are required.
v1.8.30: Computer Skills
- Adds Computer Skills v1.0.0-holland.1 as a separate Holland Apps Suite application using the approved dark Holland H + mouse icon.
- Integrates the existing Holland Typing Quest v1.1.0 as the first Computer Skills learning module, including its 10 typing levels, Word Builder, Sentences, and Typing Trail modes.
- Adds the six-table Computer Skills Baserow model for Modules, Lessons, Reward Rules, Attempts, Progress, and Awards.
- Seeds the Typing module, 10 levels, and default first-completion reward rules after the six Baserow table IDs are configured.
- Default Typing rewards award 3 Kids Points Tracker points for the first qualifying completion of each level at 90% or higher accuracy with at least 20 completed prompts.
- Advances Kids Points Tracker to v1.15.14-holland.1 with a private server-to-server Computer Skills award bridge. Computer Skills awards use the existing Points Tracker ledger, balances, activity history, family isolation, child identity, and point-earning pause protections.
- The browser cannot select an arbitrary child or directly issue Points Tracker points; the server recomputes Typing accuracy/WPM from raw attempt counts and uses deterministic award keys to prevent duplicate awards.
Family IDandChild IDremain plain cross-database identifiers in the separate Computer Skills database. No existing Kids Points Tracker Baserow fields or tables are changed.
v1.8.29: Home Maintenance Outlook MSG email preview
- Advances Holland Home Maintenance to v1.0.17-holland.1.
- Adds Microsoft Outlook
.msgsupport alongside the existing.emlemail viewer. - Existing
.msgrecords are recognized as email by filename or Outlook MIME type and open in the same sanitized in-app preview. - Shows Subject, From/To/CC, Date, message body, and embedded attachments without first saving the raw Outlook item to the device.
- The raw
.msgor.emlremains available only through the explicit Download Original action. - Adds the pinned
extract-msgparser dependency for server-side Outlook Compound File parsing. - No Baserow schema changes are required.
v1.8.28: Home Maintenance in-app email preview fix
- Advances Holland Home Maintenance to v1.0.16-holland.1.
- Email cards, titles, and the View Email action now open the sanitized Home Maintenance preview instead of navigating to the raw
.emlfile. - The raw message is available only from explicitly labeled Download Original actions.
- Adds a dedicated authenticated
/email/previewJSON route with no-store/nosniff response headers while keeping the v1.8.27 endpoint compatible.
v1.8.27: Home Maintenance email records and UI polish
- Advances Holland Home Maintenance to v1.0.15-holland.1, Kids Points Tracker to v1.15.13-holland.1, and Holland Library to v0.2.1-holland.1.
- Home Maintenance accepts
.emlemail files in Home Documents, Asset attachments, and Maintenance/History attachments. - Adds an authenticated in-app email viewer for Subject, From/To/CC, Date, sanitized message content, and attachments contained inside the email.
- Email HTML is isolated in a sandboxed viewer; scripts, forms, embedded objects, CSS, and automatic image loading are blocked.
- Preserves the original
.emlfile so it can be opened/downloaded with the device's associated mail application. - Normalizes uploaded
.emlMIME type tomessage/rfc822; no Baserow schema changes are required. - Normalizes Holland Library icon artwork so the visible icon fills the same card footprint as the other Suite apps.
- Adds clear spacing between Cancel and Save Bonus in the Kids Points Tracker bonus editor.
v1.8.26: All Chores Except bonus rules
- Advances Kids Points Tracker to v1.15.12-holland.1.
- Replaces the parent-facing Any Selected Chore requirement with All Chores Except.
- Every active chore counts automatically except the chores checked in the exclusion list, so newly added active chores count without revisiting the rule.
- Existing Any Selected Chore rules migrate automatically by inverting their current active-chore selection, preserving which active chores count at migration time.
- The Bonus Details popup no longer duplicates Completed Chores; card-click Current Progress remains the place to review completed qualifying chores by child.
- All Chores Except details show only Chores that do not count toward this bonus.
- Any Active Chore and Every Selected Chore remain unchanged.
- Requires the already-added
All Chores Exceptoption in Bonus Rules → Requirement Type; no new tables or fields are required.
v1.8.25: Asset Move action and Any Selected Chore bonus details
- Advances Holland Home Maintenance to v1.0.14-holland.1 and Kids Points Tracker to v1.15.11-holland.1.
- Moves Move Home out of Edit Asset and into the Asset detail modal footer beside the other top-level Asset actions.
- The existing family-only destination validation, dependency audit, and move operation are unchanged.
- Kids Points Tracker no longer labels an Any Selected Chore bonus as having Required Chores.
- The bonus card now labels that rule type with its number of qualifying chores.
- Its details popup is titled Bonus Details, explains that any selected chore counts, lists completed qualifying chores grouped by child, and lists active chores that do not count toward the bonus.
- Every Selected Chore bonuses retain the existing Required Chores terminology.
- No Baserow schema changes are required.
v1.8.24: Home Maintenance inactive Assets and unique Photos
- Advances Holland Home Maintenance to v1.0.13-holland.1.
- Assets with Status
Replaced,Removed, orArchivedare hidden from the main Assets grid by default. - Adds a compact Show inactive assets (N) / Hide inactive assets control beside Add Asset.
- When shown, inactive Asset cards are visually muted and carry a clear status badge while remaining fully accessible.
- Historical maintenance, photos, documents, and records remain unchanged.
- The Photos library now consolidates duplicate gallery tiles that reference the same underlying Baserow file.
- A single unique image can retain Home, Asset, and Maintenance associations and still appear under each matching filter without duplicating under All.
- Photo details show all associations for the unique image, including shortcuts back to related Assets and History entries.
- Gallery counts now represent unique images rather than attachment/association rows.
- The Asset Photo Library picker uses the same unique-image consolidation.
- No Baserow schema changes are required.
v1.8.23: Home Maintenance Photos performance
- Advances Holland Home Maintenance to v1.0.12-holland.1.
- The Photos tab now uses small 480px WebP thumbnails instead of downloading full-resolution originals for gallery tiles.
- Reuses Baserow thumbnail derivatives when available; otherwise Home Maintenance generates the thumbnail from the original once.
- Generated thumbnails are stored in a disposable Home Maintenance thumbnail cache under
/data/apps/home_maintenance/thumbnail_cache. - Thumbnail responses use a long private browser cache so revisiting the Photos tab avoids repeated downloads.
- Newly uploaded image attachments warm the thumbnail cache during upload, avoiding a first-view conversion delay.
- The Photos tab renders 24 photos at a time and automatically loads the next batch as the user scrolls; a Load More button remains as a fallback.
- Gallery images continue to use native lazy loading and asynchronous decoding. Full-resolution originals are loaded only when a photo is opened.
- The Asset Photo Library picker and library-selected previews also use the faster thumbnails.
- No Baserow schema changes are required.
v1.8.22: Home Maintenance vendor cleanup and photo upload progress
- Advances Holland Home Maintenance to v1.0.12-holland.1.
- Removes contact-status text and displayed phone numbers from Vendor cards; the Call action alone indicates that a primary phone number is available.
- Keeps Vendor cards focused on trade/category, vendor name, Preferred status, and available actions.
- Makes Select from Photo Library a persistent, prominent Asset Photos control in both Add Asset and Edit Asset.
- Adds visible upload progress to Asset photo uploads, Home Photos uploads, new Maintenance-entry attachments, and Asset/History attachment uploads.
- Progress shows the current file number, total file count, filename, and overall percentage.
- The initiating Save/Upload button is disabled while bytes are being transferred.
- Existing Photo Library selections reuse stored Baserow files and therefore do not show upload progress.
- No Baserow schema changes are required.
v1.8.21: Home Maintenance vendor cards and Asset Photo Library picker
- Advances Holland Home Maintenance to v1.0.12-holland.1.
- Removes Hire Again, job-count, and lifetime-spend badges from Vendor cards.
- Removes the + Contact action from Vendor cards while keeping contact creation available inside Edit Vendor.
- Adds Select from Photo Library to both Add Asset and Edit Asset. The picker is scoped to the currently selected Home and includes All / Home / Assets / Maintenance filters.
- Shows newly uploaded files and library-selected photos together in the Asset form preview before saving.
- Marks photos already attached to an existing Asset so they cannot be duplicated accidentally.
- Reuses the existing Baserow user-file reference when a library photo is linked to an Asset, avoiding a second binary upload or duplicate stored image.
- Enforces same-Home selection server-side; photos from another Home cannot be linked through the API.
- No Baserow table or field migration is required.
v1.8.20: Home Maintenance asset moves and Photos library
- Advances Holland Home Maintenance to v1.0.9-holland.1.
- Adds Move Home to Edit Asset, restricted to other homes owned by the active Suite family. The asset moves with its specifications, asset attachments, asset-specific maintenance tasks, related history, and history attachments.
- Validates the complete move before applying it and attempts rollback if a Baserow update fails partway through. Family vendors are preserved and automatically extended to serve the destination home when required by a moved relationship.
- Adds a Photos tab immediately after Documents. It automatically aggregates image attachments from Assets and Maintenance History for the selected home.
- Adds optional direct Home-level photo uploads through a new Home Photos Baserow table. Existing 11-table installations remain usable while the table is added; only direct Home uploads are disabled until its table ID is configured.
- Adds Home / Assets / Maintenance photo filters, thumbnail library cards, and an expanded photo viewer with source context.
v1.8.19: Home Maintenance asset and history UI polish
- Advances Holland Home Maintenance to v1.0.8-holland.1.
- Renames the Asset form label Asset Type to Equipment Type while keeping the existing Baserow
Asset Typefield unchanged. - Removes Expected Service Life and Replacement Cost Estimate from Add/Edit Asset and stops writing those unused fields, preserving any existing Baserow values.
- Adds Power Tool to the Asset category picker with a dedicated tool icon.
- Declutters Asset summary cards by removing Warranty, Condition, and Location badges; cards now focus on category, name, and manufacturer/model or equipment type.
- Adds explicit spacing between Maintenance card actions and Document Open/Remove actions.
- Right-aligns History work-type badges to the same edge as the displayed cost.
- Retains v1.8.18 family ownership and equal-size Asset/Vendor desktop card grids.
v1.8.18: Home Maintenance family ownership and card consistency
- Advances Holland Home Maintenance to v1.0.7-holland.1.
- Home Locations and Vendors are now owned by the active Holland Apps Suite family through Baserow
Family IDfields. - Authorized family members share the same homes, assets, maintenance schedules, history, vendors, documents, and attachments.
- The legacy Location Access table is retained only for safe one-time migration and deletion cleanup; it is no longer the normal authorization boundary.
- Existing blank Family ID rows are claimed only when their legacy access belongs entirely to members of the active family; existing nonblank family assignments are never overwritten.
- Cross-family home/vendor relationships are rejected server-side.
- Asset and Vendor card grids use equal-height desktop rows with actions aligned consistently; mobile cards keep natural height.
v1.8.17: Home Maintenance mobile continuity and asset-photo polish
- Advances Holland Home Maintenance to v1.0.6-holland.1.
- Preserves the horizontal mobile tab position and keeps the selected tab visible after navigation.
- Locks background page scrolling while Home Maintenance modals/details are open, restoring the original page position on close.
- Adds multi-photo selection and preview directly to Add/Edit Asset, uploading selected images after the asset record is saved.
- Adds a Website button to Vendor cards when a valid website is stored.
- Hides zero-value Labor, Parts, and Other cost boxes from History details.
- Aligns Asset card internal content and badge rows and increases spacing between adjacent card actions.
- No Baserow schema migration is required.
v1.8.16: Home Maintenance record deletion and vendor dropdown
- Advances Holland Home Maintenance to v1.0.5-holland.1.
- Converts Vendor Trade Categories from the large checkbox grid to a compact Baserow-backed multi-select dropdown.
- Adds relationship-aware Delete Asset, Delete Task, Delete Entry, and Delete Vendor flows with impact review and exact-name confirmation.
- Asset deletion removes its specifications, attachments, asset-specific schedules, service/history, and attached history files.
- Maintenance Task deletion preserves service/history entries and only clears their task link.
- History Entry deletion removes its attachments and recalculates Last Completed / Next Due for any linked maintenance schedule.
- Vendor deletion preserves assets, tasks, history, and home documents while clearing vendor links; vendor contacts are deleted with the vendor.
- No Baserow table or column migration is required.
v1.8.15: Home Maintenance file/vendor/mobile repairs
- Advances Holland Home Maintenance to v1.0.4-holland.1.
- Fixes authenticated maintenance, asset, and home-document links so they stay under the
/apps/home-maintenance/proxy route. - Replaces free-text vendor trade categories with Baserow-aware multi-select checkboxes and improves validation/error detail.
- Defaults the currently selected home when adding a vendor.
- Standardizes mobile page headers so actions render below the subheading on every Home Maintenance tab, with paired actions side by side.
- Carries forward the v1.8.14 Suite Admin permanent Home/Location deletion controls.
v1.8.14: Home Maintenance Admin home deletion
- Advances Holland Home Maintenance to v1.0.3-holland.1.
- Adds Suite Admin → Database → Holland Home Maintenance controls to review and delete a selected Home / Location.
- Shows a live deletion audit before removal, including assets, maintenance tasks, service entries, attachments, documents, Location Access records, and vendor-location links.
- Requires the exact Home / Location name plus a second final confirmation before deletion.
- Deletes location-scoped records in dependency-safe order and deletes the Home Location row last so an interrupted operation can be retried from Suite Admin.
- Preserves account-wide Vendor and Vendor Contact records; only the deleted home's
Locations Servedlinks are removed. - Baserow row deletion behavior is surfaced in the Admin UI: deleted rows move to Workspace Trash until its retention period expires or the Trash is emptied.
- No Baserow schema migration is required.
v1.8.13: Home Maintenance Add Home end-to-end hotfix
- Advances Holland Home Maintenance to v1.0.2-holland.1.
- Cache-busts the Home Maintenance app shell and serves HTML/JS/CSS/manifest responses with no-store revalidation so an older modal handler cannot survive an upgrade.
- Moves delegated Home Maintenance click handling to capture phase and gives Add Home immediate
Adding…feedback while the request is running. - Makes Home Location
Created At/Updated Atwrites date-only to match the currently deployed Baserow Home Locations fields. - Adds an executable regression of the real
location_payloadandcreate_locationfunctions, confirming the Home row is created first and an Owner Location Access row follows. - No Home Maintenance Baserow schema migration is required.
v1.8.12: Home Maintenance modal action hotfix
- Fixes Home Maintenance modal buttons such as Add Home, Save, Cancel, upload, and edit actions that could appear clickable but never reach the delegated action handler.
- Removes modal-level click propagation blocking and switches backdrop dismissal to an explicit backdrop-only click check.
- Preserves click-to-close on the dark backdrop while clicks inside the dialog continue to work normally.
- Adds dedicated regression coverage for Home Maintenance modal actions and the Add Home submission path.
- Advances Holland Home Maintenance to v1.0.1-holland.1.
- Preserves the optimized Forgejo CI/build files and
app/Dockerfilebyte-for-byte.
v1.8.11: Holland Library Baserow foundation and cover photos
- Advances Holland Library to v0.2.0-holland.1 and makes the four-table Holland Library Baserow database the permanent source of truth.
- Converts
/data/apps/library/library_cache.dbinto a disposable local read cache with Baserow sync, stale-cache fallback, diagnostics, Sync Now, and Rebuild Cache support. - Intentionally clears the v0.1 prototype SQLite catalog on first v0.2 startup. Existing prototype books are not migrated;
library.db,library.db-wal, andlibrary.db-shmare removed once and a migration marker prevents repeat cleanup. - Adds Take Photo and Choose Photo cover actions when metadata does not provide a usable cover, plus replace/remove actions later from Book Details.
- Normalizes phone photos for orientation, resizes them to a bounded JPEG, stores the user cover in Baserow's
Cover Photofile field, and prefers that image over the external Open Library cover. - Adds Suite Admin → Connections configuration for the Library Baserow URL, token, and Books/Copies/Loans/Activity table IDs.
- Ships the complete Library Baserow schema CSV pack under
docs/library_baserow/. - Uses separate Books and Copies records so the current one-copy-per-ISBN workflow can grow into multiple physical copies without another database redesign.
- Retains ISBN scanning, price-supplement rejection, Rapid Add, family isolation, checkout, return, Open Library metadata lookup, and the v1.8.10 Forgejo test-isolation fix.
- Preserves the optimized Forgejo CI/build files and
app/Dockerfilebyte-for-byte.
v1.8.10: Forgejo validation test-isolation hotfix
- Fixes a test-only module leak introduced by the Holland Library validation harness.
- Library tests previously replaced
flask,werkzeug, andwerkzeug.exceptionsinsys.moduleswith lightweight stubs and left those stubs installed for later tests. - In Forgejo, Local Conditions therefore imported against Library's
DummyFlask, causing its real endpoint test to fail becauseDummyFlaskhas notest_client(). - Library validation now uses
mock.patch.dictwith automatic class cleanup so the original modules are restored before later test classes execute. - Adds a dedicated CI-isolation regression test. No application behavior, Home Assistant integration, or protected Forgejo CI/build workflow is changed.
v1.8.9: Restore Home Maintenance baseline
- Repairs the release-basis mismatch discovered after v1.8.8 was merged from a
mainbranch that had not yet received the v1.8.7 Home Maintenance payload. - Restores the complete Holland Home Maintenance v1.0.0-holland.1 application, icon assets, data template, v1.8.7 release docs, and Home Maintenance Baserow schema/setup pack that v1.8.8 expected but did not carry in its sparse overlay.
- Retains Holland Library v0.1.0-holland.1 unchanged as the SQLite-only viability prototype; no Baserow setup is required for Holland Library.
- Keeps the optimized Forgejo CI/build files and
app/Dockerfileuntouched. - v1.8.8 should not be deployed; v1.8.9 supersedes it.
v1.8.8: Holland Library viability prototype
- Adds Holland Library v0.1.0-holland.1 at
/apps/library/using the approved dark Holland script-H + open-book icon. - Uses a persistent SQLite source-of-truth database at
/data/apps/library/library.db; no Baserow tables, token, or setup are required for this prototype. - Adds phone-camera ISBN scanning for standard ISBN-13/EAN-13 book barcodes, with ISBN-10 manual-entry normalization and explicit rejection of non-book EAN codes.
- Ignores the common 5-digit price supplement printed beside many ISBN barcodes and keeps manual ISBN entry available as a fallback.
- Looks up title, author, publisher, year, page count, and cover metadata through Open Library; if lookup is unavailable or no match is found, the book can still be entered manually.
- Adds Rapid Add mode for scanning a stack of books continuously, automatically adding successful metadata matches and flagging duplicates or books needing manual details.
- Adds family-scoped catalog isolation, Library/Activity views, search, Available/Checked Out filters, duplicate ISBN detection, checkout to active Suite family members, and scan-to-return workflow.
- Adds an installable network-only Library PWA and 180/192/512/1024 icon assets.
- v0.1 intentionally treats one ISBN as one physical copy; multiple identical copies, custom Holland labels, shelves, reading goals, and permanent Baserow architecture remain deferred until viability is proven.
- Preserves the optimized Forgejo CI/build configuration and does not replace
.forgejo/ci/Dockerfile, Forgejo workflow files, orapp/Dockerfile.
v1.8.7: Holland Home Maintenance
- Adds Holland Home Maintenance v1.0.0-holland.1 at
/apps/home-maintenance/using the approved dark Holland script-H + wrench icon. - Adds first-class multi-home/location isolation. Every asset, maintenance task, service entry, attachment, and home document is explicitly scoped to one home, and users switch homes instead of mixing records.
- Adds an Asset Registry for HVAC, water heaters, appliances, electrical, plumbing, structural, exterior, safety, pool/spa, landscaping, and custom assets, including manufacturer, model, serial number, install/purchase dates, warranties, condition, lifecycle estimates, and flexible specifications.
- Adds recurring preventive maintenance with due-soon/overdue status, preferred vendor, instructions, estimated cost, automatic next-due scheduling, and one-time work support.
- Adds permanent maintenance/service/repair history with vendor, technician, labor/parts/other costs, parts/materials, repair warranty, next recommended service, and completion details.
- Adds multi-file photos and documents for maintenance entries plus asset-level attachments. Large selections are automatically uploaded in bounded batches while each file remains individually linked and categorized.
- Adds an account-wide Vendor directory with trades, preferred-vendor status, contact details, multiple technicians/contacts, multiple homes served, and vendor-linked service/cost history.
- Adds property-level Home Documents for permits, inspections, warranties, plans, insurance, HOA, utilities, finishes, and other records.
- Uses Baserow as the source of truth with a persistent disposable SQLite read cache at
/data/apps/home_maintenance/home_maintenance_cache.dband centralized Suite Admin connection/cache controls. - Adds the 11-table Home Maintenance Baserow schema and setup guides under
docs/home_maintenance_baserow/. - Adds opt-in Admin → App Access for standard users; Location Access remains a separate second privacy boundary inside the Home Maintenance database.
- Preserves the optimized Forgejo CI/build configuration and does not replace
.forgejo/ci/Dockerfile, Forgejo workflow files, orapp/Dockerfile.
v1.8.6: Local Conditions info-icon alignment cleanup
- Fixes the small circular
icue so the information glyph is optically centered inside its badge. - Uses one shared CSS-drawn glyph treatment instead of relying on font baseline positioning.
- Applies across Local Conditions Water, Rivers, Edwards Aquifer, Weather, and other metric/stat cards that expose measurement help.
- Preserves the v1.8.5 full-card tap/click help behavior, keyboard activation, and independent embedded controls.
- Advances Holland Local Conditions to v1.2.3-holland.1. Kids Points Tracker remains v1.15.10-holland.1.
- No Baserow schema, Home Assistant, TrueNAS storage, Forgejo workflow, or Docker build changes are required.
v1.8.5: Mobile card cues and Local Conditions interaction polish
- Makes Balance History series lines thinner for a cleaner mobile Analytics chart without changing data or scaling.
- Keeps tap-anywhere mobile Chore/Reward details and restores a subtle non-button
icue in the top-right when card details are available. - Centers stacked/mobile Local Water Picture card content in Holland Local Conditions.
- Aligns the live Canyon Lake water-level line to the exact same horizontal plotting track used by the flood/conservation reference lines.
- Makes Local Conditions metric/stat cards with an
icue tappable/clickable across the full card to open measurement help, with Enter/Space keyboard support and independent action controls preserved. - Advances Kids Points Tracker to v1.15.10-holland.1 and Holland Local Conditions to v1.2.2-holland.1.
- No Baserow schema, Home Assistant, TrueNAS storage, Forgejo workflow, or Docker build changes are required.
v1.8.4: Kid-friendly Bank wording and mobile Points UI polish
- Makes child-facing point-pause resume messages use Today, Tomorrow, or the weekday instead of month/day dates. Midnight resumes display as Morning (for example,
Resumes Tomorrow Morning). - Simplifies the Savings interest strip to show the upcoming day without the ambiguous word Next, and changes
est.to Interest (for example,5% weekly · Savings · Sunday · Interest +5). - On mobile, removes the small chore/reward notes icon and makes the non-action area of each Chore or Reward card tappable to open its description. Hold-to-Complete / Submit-for-Approval / Hold-to-Redeem and timer buttons remain independent actions.
- Improves mobile Analytics chart readability by giving charts the full card width, moving legends below charts, using phone-sized SVG view boxes, larger/higher-contrast axis text, a wider Y-axis gutter, shorter weekday labels, and fewer crowded X-axis labels when needed.
- Removes the Individual vs. Shared Activity Analytics card while retaining the underlying transaction data.
- Preserves the existing Needs Changes → replace/keep/remove photo → Resubmit for Approval chore workflow unchanged.
- Advances Kids Points Tracker to v1.15.9-holland.1.
- No Baserow schema, Home Assistant, TrueNAS storage, Forgejo workflow, or Docker build changes are required.
v1.8.3: Points admin consolidation and compact Database layout
- Moves Manual Point Adjustment to the bottom of Manage → Children while preserving its reason requirement, before/after preview, Baserow transaction logging, Activity audit, and existing permissions.
- Removes the visible Setup tab from Kids Points Tracker. The internal diagnostics permission remains available only for Suite Admin maintenance calls.
- Moves the former Points Tracker Baserow Connection and Points Tracker Cache & Sync diagnostics into Holland Apps Admin → Database → Kids Points Tracker, alongside the existing connection configuration and Hard Rebuild controls.
- Preserves Test Connection, Reload Data, Cache Status, Sync Now, Verify Balances, Rebuild Cache, and Hard Rebuild functionality from the centralized Admin page.
- Keeps Admin App Access focused on user-facing Points Tracker tabs by hiding the internal diagnostics permission from the App Access permission editor.
- Compacts all Admin → Database connection cards: table/configuration fields use a three-column desktop grid, two columns on tablet, and one column on phone; field spacing, input padding, notes, section spacing, and card padding are reduced.
- Advances Kids Points Tracker to v1.15.8-holland.1.
- Preserves Floorplan project isolation/autosave, Suite Account routing, v1.8.2 bonus-rule corrections, and optimized Forgejo CI/build configuration.
- No Baserow schema, Home Assistant, or TrueNAS storage migration is required.
v1.8.2: Bonus active-chore rule cleanup and progress correction
- Fixes Bonus Rules changed from Any Selected Chore / Every Selected Chore to Any Active Chore retaining stale Baserow
Qualifying Choreslinks. - Clears selected chore links client-side and server-side whenever Any Active Chore is saved, and treats legacy stale links as empty when rules are read/evaluated.
- Prevents stale selected chores from appearing as a misleading X required chores link on Any Active Chore Bonus Progress cards.
- Any Active Chore cards now show the configured requirement as X active-chore completions while the clickable card continues to show the actual qualifying chore names completed in the current period.
- Preserves per-child progress, repeat-counting rules, award evaluation, current-period contributor details, and completed historical awards.
- Advances Kids Points Tracker to v1.15.7-holland.1.
- Preserves Floorplan Tool v1.0.1-holland.1 and all v1.8.1 save/autosave, Account, navigation, and routing fixes.
- No Baserow schema changes, Home Assistant changes, or TrueNAS storage migrations are required.
v1.8.1: Floorplan save routing and Suite account navigation
- Fixes existing Floorplan project Save/Autosave requests through the Suite mount by forwarding
PUTrequests under/apps/<app>/...to the app upstream instead of returning HTTP 501. - Retains and regression-tests the existing mounted
DELETEforwarding used by Floorplan project deletion. - Changes the Floorplan Users action to open
Admin → Usersat/admin#users. - Adds a Suite-native
/accountpage for every signed-in user with username/display-name details and secure self-service password changes. - Password changes require the current password, enforce the existing 8-character minimum, revoke other active sessions, and keep the current browser signed in.
- Adds a styled Suite 404 page for browser navigation instead of exposing raw JSON for unknown HTML routes.
- Advances Floorplan Tool to v1.0.1-holland.1.
- Preserves the v1.8.0 private per-user Floorplan project storage, autosave behavior, App Access controls, drawing features, and optimized Forgejo CI/build configuration.
- No Baserow, Home Assistant, or TrueNAS dataset changes are required.
v1.8.0: Floorplan Tool Suite integration
- Adds Floorplan Tool v1.0.0-holland.1 at
/apps/floorplan/. - Adds Admin → App Access permission Access Floorplan. Standard users are opt-in; Suite Owner/admin access remains role-derived.
- Stores projects privately by immutable Suite User ID under
/data/apps/floorplan/users/. Every project operation is server-side owner-scoped. - Makes server projects the normal source of truth and removes the old browser-local Save/Load buttons.
- Adds 8-second debounced autosave while retaining the 45-second fallback timer; autosaves do not flood version history.
- Preserves project packages, manual save, version restore, JSON/SVG/PDF export, 2D/3D/walk-through drawing capabilities, and Save-before-leaving protection.
- Adds tightly framed Holland Floorplan icons at 180/192/512/1024 with no excessive launcher padding.
- Preserves the optimized Forgejo CI workflows and immutable image-tag protection.
app/Dockerfileremains on the optimizedCOPY --chownmodel and is changed only to validate/enable the new Floorplan entry point. - No Baserow or Home Assistant changes are required.
v1.7.7: Local Conditions mobile navigation, chart readability, and icon polish
- Advances Holland Local Conditions to v1.2.1-holland.1.
- Makes the mobile/PWA Local Conditions tab bar reliably sticky while scrolling and gives the outer navigation container rounded corners, a subtle border, blur, and shadow consistent with the rest of the app.
- Keeps the selected tab visible inside the horizontally scrollable mobile tab strip.
- Improves mobile chart readability by sizing SVG charts to their rendered width, increasing Y/X-axis label size and contrast, and reserving wider left gutters for labels such as Canyon Lake two-decimal elevations.
- Applies the chart typography improvement to Water Trends, River Flow History, Temperature History, and Conditions History through the shared chart renderer.
- Reframes the Local Conditions icon artwork to remove excess black padding and re-exports 180/192/512/1024 assets for both the Suite launcher and installable PWA/home-screen icon.
- No Baserow or Home Assistant changes are required.
v1.7.6: Local Conditions mobile/PWA polish and Bonus Progress details
- Removes the Available label from child Point Bank cards while preserving the same spendable-balance calculation.
- Makes Bonus Progress cards clickable/tappable. A Heat Map-style modal lists only the qualifying chore names that contributed during the current bonus period and groups them by child when more than one child contributes.
- Advances Kids Points Tracker to v1.15.6-holland.1.
- Advances Holland Local Conditions to v1.2.0-holland.1.
- Fixes Local Conditions mobile/PWA page-level horizontal overflow so the viewport stays locked like Points Tracker while tabs, hourly weather, and forecast rows can still scroll internally.
- Adds mobile/PWA pull-down-to-refresh and hides the visible Refresh button on mobile/standalone PWA.
- Makes Current Weather, Hourly, forecast, Local Water Picture, chart, and other cards honor the mobile viewport width consistently.
- Corrects the Canyon Lake visual so Flood Pool, Conservation Pool, and the current lake level all use the same elevation scale.
- Tightens Canyon Lake history auto-scaling and shows Y-axis plus Latest/Low/High values with two decimal places.
- Adds small plain-English metric info buttons across Local Conditions cards, with a centered desktop dialog and mobile bottom sheet.
- Themes internal scrollbars to match the Local Conditions dark UI.
- Removes the two user-facing Data Health cards while retaining Admin/source diagnostics.
- Gives the four Local Water Picture nodes equal sizing and additional internal room so wrapped values/trends remain inside their cards.
- No Baserow or Home Assistant schema/configuration changes are required.
v1.7.5: Child chore availability status fix
- Fixes child-facing approval-required chore buttons so an approved completion that has consumed a Daily/Weekly chore limit displays Limit Reached instead of the ambiguous Already Pending / Limit Reached label.
- Preserves Waiting for Approval / Changes Requested for the child's own open submission.
- Distinguishes a household chore reserved by another open submission as Already Pending without confusing it with a completed limit.
- Adds separate base-limit and submission-reservation state to the chore bootstrap payload so the browser can display the real reason a chore is unavailable.
- Retains the v1.7.4 Savings cache consistency protections and Timed Reward Hours/Minutes spinner cleanup.
- Advances Kids Points Tracker to v1.15.5-holland.1. No Baserow or Home Assistant changes are required.
v1.7.4: Savings cache consistency fix
- Fixes the observed Savings balance race where an older 60-second background cache snapshot could temporarily overwrite a newer Savings Deposit/Withdrawal in SQLite and make saved points appear Available until refresh.
- Adds per-dataset mutation generations so stale in-flight Baserow snapshots are rejected whenever a newer write/delete completes while the snapshot is downloading.
- Preserves the newer write-through cache row, requests another sync, and applies the ordering protection to all Points Tracker cached datasets.
- Adds deterministic regression coverage for sync starts → Savings Deposit writes → stale sync finishes, including deletion/resurrection protection.
- Removes native number spinner arrows from Timed Reward Hours and Minutes fields while retaining the existing numeric validation.
- Advances Kids Points Tracker to v1.15.4-holland.1. No Baserow or Home Assistant changes are required.
v1.7.3: Savings calculator, Interest, Activity, and Analytics polish
- Cleans up the Savings Growth Calculator by removing native number spinners, quick-start amount buttons, and the redundant Rule card.
- Defaults Starting Savings to the greater of 100 points or the child’s current Savings balance.
- Adds a per-cycle contribution input: Weekly Contribution for weekly rules and Monthly Contribution for monthly rules. Each contribution is added before that cycle’s interest calculation.
- Upgrades the growth chart with dated x-axis labels and point values on the y-axis; 20-cycle projections show only the start/end date labels to avoid clutter.
- Changes the child Savings call-to-action to See Your Points Grow.
- Adds safe permanent deletion for Interest Rules that have never produced an Interest Award. Rules with historical awards must be disabled instead.
- Restyles Child Profile Photo actions to match the Holland Apps visual system, including a red-outline destructive Remove action.
- Adds Interest Earned to Analytics using authoritative awarded Interest records, excluding reversed awards and respecting the selected date range/account.
- Adds Savings to the Activity transaction-type filter while keeping non-Savings Transfers separate.
- Removes native number spinners from Savings Deposit/Withdraw point-entry fields.
- Advances Kids Points Tracker to v1.15.3-holland.1. No Baserow or Home Assistant changes are required.
v1.7.2: Savings Growth Calculator
- Hides the Bank-tab Savings interest strip whenever a Savings-based interest rule has no current Savings balance to grow.
- Makes the child Savings amount a calculator entry point when an active Savings-based Interest Rule applies.
- Adds a read-only Savings Growth Calculator with an editable hypothetical starting balance, 5 / 10 / 20 period projections, a growth chart, projected interest earned, and a period-by-period table.
- Defaults to the child's real Savings balance; when Savings is zero, the calculator starts at a clearly hypothetical 100 points and offers 10 / 25 / 50 / 100 point quick starts.
- Projection math uses the Interest Rule's exact rate, cadence, minimum eligible balance, award cap, and rounding method. The calculator never changes real points.
- Advances Kids Points Tracker to v1.15.2-holland.1. No Baserow or Home Assistant changes are required.
v1.7.1: Points Tracker Savings UI polish
- Simplifies the family Point Bank summary to show only Family Available, Accrued, and Spent; the family Savings and Total boxes are removed.
- Removes the visible Total balance from child Bank cards so Available and Savings are presented as separate point buckets.
- Adds comfortable spacing, padding, and a footer divider to the Savings Deposit/Withdraw modal actions.
- Adds a pending-withdrawal count badge beside Manage → Savings for adult/admin reviewers. The badge is family-scoped, hidden when zero, and refreshes after request actions.
- Keeps all Savings ledger, Baserow, Interest, withdrawal approval, Activity, Undo, and cache behavior unchanged from v1.7.0.
- Advances Kids Points Tracker to v1.15.1-holland.1. No Baserow or Home Assistant changes are required.
v1.7.0: Points Tracker Savings
- Adds first-class Available, Savings, and Total balances to Kids Points Tracker without changing the existing authoritative Points ledger total.
- Adds Bank-tab Deposit and Withdraw controls. Transfers move points between Available and Savings without creating or destroying Total points.
- Protects Savings from reward redemption, family spending, Custom Spend transactions, and negative Manual Adjustments. Rewards never automatically pull from Savings.
- Adds Manage → Savings with per-child minimum deposits and two withdrawal policies: Instant and Parent Approval Required. Child-requested approval withdrawals can be approved or denied by adults/admins and cancelled while pending.
- Adds Baserow Savings Accounts and Savings Transactions tables, including immutable child/actor snapshots, approval/reversal auditing, SQLite cache support, family migration/deletion integration, and setup diagnostics.
- Adds zero-net Savings Transfer entries to normal Activity, with safe Undo that reverses the linked Savings transaction without changing Total points.
- Activates Interest → Balance Basis = Savings Balance. Savings-based interest reconstructs the eligible Savings balance at the completed period boundary and credits the award directly into Savings while retaining the normal Interest Earn transaction in the Points ledger.
- Adds reset and generic-undo safeguards so Total points can never fall below points currently held in Savings.
- Includes importable Baserow CSVs and setup instructions under
docs/points_savings_baserow/. The optional existing Transactions fieldSavings Transaction IDis supported but not required. - Advances Kids Points Tracker to v1.15.0-holland.1. Savings Goals and more advanced withdrawal restrictions remain intentionally deferred until this core Savings ledger is proven in deployment.
v1.6.1: Points Tracker interest bootstrap serialization hotfix
- Fixes
/api/bootstrapand Manage payload failures when Interest diagnostics are included. - Converts Interest Rules/Awards diagnostic field-name sets to JSON-safe sorted lists before returning them to the browser.
- Preserves internal schema enforcement by converting those lists back to sets only where set operations are required.
- Adds regression coverage for both configured and unconfigured Interest diagnostics JSON serialization.
- Advances Kids Points Tracker to v1.14.1-holland.1.
- No Baserow schema, table-ID, cache, or Home Assistant changes are required from v1.6.0.
v1.6.0: Points Tracker interest accumulation
- Adds configurable automatic interest accumulation to Kids Points Tracker using the child's positive point balance at each completed interest-period boundary.
- Adds Manage → Interest with create/edit/enable/disable controls, weekly or monthly cadence, selected/all children, minimum balance, optional award cap, rounding behavior, date limits, optional Home Assistant notifications, and manual recalculation.
- Adds an interest status line to child Bank cards with rate, cadence, next payment date, estimated next award, and lifetime interest earned.
- Interest awards are normal authoritative Points Tracker ledger transactions (
Earn/Interest), so balances, Activity, analytics, SQLite cache rebuilds, and undo remain consistent. - Adds deterministic
Award Keyduplicate prevention. Server restarts, manual recalculation, and background worker repeats cannot award the same family + rule + child + period twice. - New or edited interest terms apply prospectively; changing/enabling a rule after a completed boundary cannot back-pay that already-completed period under the new terms.
- Undoing an interest transaction marks its Interest Award audit row Reversed and preserves the period key so a manual undo is not automatically re-awarded.
- Adds optional Baserow Interest Rules and Interest Awards tables to Admin connection testing, cache datasets, family migration/deletion support, and setup diagnostics.
- Includes importable starter CSVs and Baserow setup guidance under
docs/points_interest_baserow/. If Transactions → Category is a Single select, add exact optionInterest; the optionalInterest Award IDtext column is supported but not required. - Extends the existing Home Assistant Points webhook automation with
points_interest_awardedfor Interest Rule notifications. - v1.6.0 supports Entire Positive Balance interest. The schema reserves
Savings Balancefor a future release, but v1.6.0 will not calculate or award Savings-based interest. - Advances Kids Points Tracker to v1.14.0-holland.1. Existing Points Tracker tables do not require destructive schema changes; connect the two new optional tables to enable interest.
v1.5.0: Local Conditions PWA + visual polish
- Adds a dedicated installable Holland Local Conditions PWA that launches directly at
/apps/local-conditions/with the approved Local Conditions icon. - Adds Local Conditions manifest metadata, 180/192/512/1024 PWA icon declarations, standalone display mode, iPhone safe-area handling, and an update-safe network-only service worker so authenticated live data is never served from a stale app-shell cache.
- Cleans up the Canyon Lake visual using a fixed left label gutter. Flood/conservation labels stay in the gutter while reference and current-level lines begin to the right, preventing lines from crossing label text.
- Makes the four Local Water Picture cards equal width/height and aligns their internal content consistently.
- Shortens the Rain supporting copy to
Next 24h: …/Next 24h: little/no rain. - Advances Holland Local Conditions to v1.1.0-holland.1.
- No Baserow schema/table-ID changes are required.
v1.4.13: Local Conditions EAA source + retry fix
- Updates the Edwards Aquifer Authority collector for the current combined readings table used on EAA's official Display Our Readings page.
- Restores J-17 current/yesterday/10-day values, Comal Springs current/10-day flow, EAA source date, and San Antonio Pool stage/reduction parsing.
- Failed source attempts now respect their configured poll interval instead of retrying every 60-second collector loop.
- History cards distinguish a single collected sample from an empty history set so a newly deployed collector is easier to understand.
- Advances Holland Local Conditions to v1.0.3-holland.1.
- No Baserow schema or table-ID changes are required.
v1.4.12: Local Conditions navigation runtime fix
- Fixes the deployed Local Conditions startup error
allowed.includes is not a function. - Corrects navigation permission filtering to use JavaScript
Set.has()instead of the nonexistentSet.includes(). - Adds a Node-based browser runtime smoke test that executes the real Local Conditions frontend bundle with a representative bootstrap payload and confirms all six navigation tabs render without falling into the unavailable screen.
- Advances Holland Local Conditions to v1.0.2-holland.1.
- No Baserow schema or table-ID changes are required.
v1.4.11: Local Conditions mounted-path routing fix
- Fixes Holland Local Conditions browser API requests when served under
/apps/local-conditions/. - Changes Local Conditions bootstrap/history requests from root-relative
/api/...URLs to app-relative./api/...URLs so the Suite proxy forwards them to the Local Conditions upstream. - Preserves Suite authentication and App Access enforcement; no Local Conditions API endpoint is made public.
- Advances Holland Local Conditions to v1.0.1-holland.1.
- No Baserow schema changes are required.
v1.4.9: Holland Local Conditions v1.0.0
- Adds Holland Local Conditions as a fourth first-class Suite app with the new weather/water Holland icon.
- Adds responsive Overview, Water, Rivers, Rain, Weather, and History views for New Braunfels local conditions.
- Collects weather and rainfall from Open-Meteo, lake/river data from USGS, and J-17/Comal Springs data from the Edwards Aquifer Authority public conditions page.
- Uses Baserow as permanent long-term storage with a disposable SQLite read cache at
/data/apps/local_conditions/local_conditions_cache.db. - Protects unsynchronized observations in a separate durable queue at
/data/apps/local_conditions/local_conditions_queue.db; cache rebuilds never discard that queue. - Retains distinct forecast runs in Baserow for future forecast-change and accuracy analysis instead of overwriting every forecast refresh.
- Adds Admin → Database → Holland Local Conditions setup for all 12 Baserow tables, source polling, source enable/disable controls, thresholds, connection testing, collection, sync, cache rebuild, and Suite Owner hard rebuild.
- Includes the Local Conditions Baserow CSV starter tables and schema workbook under
docs/. - Existing Points Tracker, Meal Planner, and Meal Points behavior remains unchanged.
v1.4.8: Hard Rebuild dataset progress and empty-family reliability
- Points Tracker Hard Rebuild Cache now reports the individual Baserow dataset currently being downloaded for each family, including row counts as each dataset completes.
- Empty datasets are explicitly treated as successful synchronized datasets and are shown as Ready · 0 rows instead of appearing stalled.
- Families with active children but zero Transactions, zero Transaction Child Entries, and zero rows in optional Points datasets are explicitly supported and regression-tested.
- Zero-transaction families now materialize a valid empty transaction ledger and verify child accrued, spent, and balance values at zero.
- Hard Rebuild balance verification now uses only the freshly built SQLite cache/ledger snapshot instead of starting a second domain/Baserow read pass.
- The Hard Rebuild dialog displays per-dataset progress beneath the family progress bar so a slow or failing table can be identified immediately.
- Kids Points Tracker advances to v1.13.24-holland.1.
- No Baserow schema changes are required for v1.4.8.
v1.4.7: Hard Rebuild progress and Chore UI cleanup
- Points Tracker Hard Rebuild Cache now starts a server-side background maintenance job instead of holding one long browser request open.
- Admin polls a short status endpoint for live phase, percentage, active-family progress, success, or failure, avoiding proxy/browser 504 timeouts during long rebuilds.
- Closing the Hard Rebuild dialog does not interrupt the server-side job, and a second Hard Rebuild request will attach to the already-running job instead of starting another.
- The Hard Rebuild dialog now shows a progress bar, current phase, family progress, and final success/failure details. The Points cache panel also shows the current or last Hard Rebuild status.
- The adult Chores Approved subtab no longer shows a historical count badge. Pending remains the actionable-count location.
- Kids Points Tracker advances to v1.13.23-holland.1.
- No Baserow schema changes are required for v1.4.7.
v1.4.6: Reward frequency and approved chore history
- Adds adult Chores subtabs Chores | Pending | Approved. The former Pending Approval label is shortened to Pending.
- Adds an adult Approved history view for approved child chore submissions, including child, points, submitted/reviewed timestamps, approving adult, notes, workflow history, and photo proof when present. Child accounts retain their existing My Submissions history view.
- Adds per-reward Redemption Frequency with
None,Daily,Weekly,Every 2 Weeks,Monthly, andEvery 2 Months.Nonepreserves the existing unlimited behavior. - Redemption frequency is enforced per child on the server. Family redemptions require every participating child to be eligible. Undoing a reward redemption restores eligibility because Undone transactions are excluded.
- Daily, Weekly, and Monthly limits use calendar periods in the family timezone; Weekly follows the family's configured week start. Every 2 Weeks is a rolling 14-day interval, and Every 2 Months is a rolling two-calendar-month interval from the last successful redemption.
- Reward cards show a frequency badge. The redemption picker disables ineligible child/family choices and shows the next available date.
- New reward transactions store Reward Row ID Snapshot so frequency history remains reliable when a reward is renamed. Legacy transactions fall back to reward-name matching.
- Kids Points Tracker advances to v1.13.22-holland.1.
- Baserow schema additions are required: Rewards →
Redemption Frequency(Single select) and Transactions →Reward Row ID Snapshot(Number, 0 decimals).
v1.4.5: Points Activity safety and Special Event refinements
- Allows child accounts to be granted Activity access without exposing transaction reversal. Undo controls are hidden from child UI and Undo requests are rejected server-side. Child Activity is scoped to transactions involving that child.
- Cleans up the Analytics calendar-day details modal with a proper top-right close control, dedicated scroll area, and separated footer.
- Formats Analytics whole-number totals with thousands separators, including balances, earned/spent totals, counts, comparisons, workload, pause metrics, and bonus metrics.
- Changes Rewards Redeem buttons to teal
#2bb5b5, reserving red styling for destructive actions. - Adds an Upcoming Special Event notice to Bank during the rolling 120 hours before a scheduled event starts, with family-timezone-aware countdown wording.
- Adds permanent Delete for Special Events that have never affected Points activity. Events referenced by transaction history are protected and must be retained/cancelled for audit integrity.
- Aligns the Baserow Workspace Backup email/username field with the other backup inputs.
- Shortens the Kids Points Tracker dashboard description.
- Kids Points Tracker advances to v1.13.21-holland.1.
- No Baserow schema changes are required.
v1.4.4: Admin child preview and Backup UI refinements
- Adds Suite Owner-only View Points Tracker as Child from Admin → Users for child accounts.
- Child preview is server-side and read-only: the administrator remains authenticated, the target child's real family/Points permissions are used, and non-GET/HEAD Points Tracker requests are rejected at the Suite proxy.
- Adds a persistent Admin Preview banner with the child being viewed, the actual administrator, and Exit Preview. No child password or child login session is created.
- Replaces Backup automatic Hour / Minute fields with a single Backup time dropdown in 30-minute increments while preserving existing custom-minute schedules.
- Adds more vertical spacing between major Backup panels.
- Moves both Admin → Users and Backup History ••• menus to a shared page-level fixed overlay so table/panel overflow cannot clip them.
- Kids Points Tracker advances to v1.13.20-holland.1.
- No Baserow schema changes are required.
v1.4.3: Backup workflow and Admin cleanup
- Renames Admin → Migration & Backup to Backup and removes the legacy Import Existing Points State, Meal Planner Local Files, old Backups, and Dataset Paths panels.
- Adds managed Suite Backup archives containing Suite-local persistent data while excluding disposable SQLite read caches and backup credentials.
- Adds Full Backup, which combines the Suite-local backup with a Baserow export of the dedicated Holland Apps Suite workspace.
- Adds Backup Status, manual creation, daily scheduling, retention, Baserow workspace connection testing, backup history, SHA-256 integrity verification, download, and deletion controls.
- Full Backup credentials are kept server-side in a permissions-restricted settings file and are never returned to the browser or included in Suite backup archives.
- Keeps restore deliberately validation-first: Full Backup stores the Baserow workspace export for import into a separate recovery workspace before production is changed.
- Consolidates every Admin → Users row action into one context-aware ••• menu.
- Removes the redundant Apps button from Meal Points; the header now keeps only Dashboard and Refresh.
- Updates Meal Points Tracker to v1.1.2-holland.1.
- No new Baserow tables or fields are required.
v1.4.2: QR account setup and family starter content
- New child and family-adult accounts use one-time QR setup so each user creates their own username/password without the administrator knowing the password.
- Setup/reset QR links are generated locally, expire after 24 hours, work once, store only hashed tokens, and invalidate prior links when regenerated.
- Configured accounts gain QR-based password reset while preserving the existing username.
- New-family creation includes a checked-by-default Add starter chores and rewards option.
- Starter chores: Clean Room (5), Feed Dog (3), and Clean Bathroom (8).
- Starter rewards: 2 Hour Screen Time (20) with a 120-minute auto-start timer, Pick Dessert (10), and Stay Up 30 Minutes Later (15).
- Starter seeding is family-scoped and idempotent; existing families are unchanged and all generated starter rows remain ordinary editable Points Tracker records.
- No new Baserow tables or fields are required. The Suite creates its local account-setup-token table automatically.
v1.4.1: Faster Meal Points, cache maintenance, and icon correction
- Adds a persistent Meal Points SQLite read cache at
/data/apps/meal_points/meal_points_cache.db; Baserow remains authoritative. - Caches Food Items, Daily Food Log, Weight Log, and Meal Points Profiles with Suite User ID indexes for private reads.
- Writes continue to Baserow first and update SQLite only after Baserow succeeds.
- Adds a 60-second background synchronization worker with stale-cache fallback when Baserow reads fail.
- Adds Admin → Database → Meal Points Tracker cache diagnostics, Sync Now, Rebuild Cache, and Suite Owner-only Hard Rebuild Cache.
- Hard rebuild stages and validates a complete replacement cache before atomically replacing the healthy live cache.
- Propagates the approved Holland H Meal Points icon to 180, 192, 512, and 1024 sizes and cache-busts dashboard/header icon references.
- No new Baserow fields or tables are required beyond the v1.4.0 Meal Points profile/owner schema.
v1.4.0: Private Meal Points profiles and Suite-user enrollment
- Removes the Meal Points person selector. The authenticated Holland Apps Suite account is now the only identity source.
- Enforces Meal Points ownership server-side on food-log reads/writes, weight reads/writes, deletes/undo, personal settings, and profile access. Client-supplied person names cannot select another user.
- Makes Meal Points opt-in through Admin → App Access. Creating a Suite account alone does not enroll it; granting Meal Points permissions does. Revoking all Meal Points permissions blocks access without deleting history.
- Adds the new Meal Points Profiles Baserow table keyed by immutable
Suite User ID, plusSuite User IDownership fields on Daily Food Log and Weight Log. Food Items remains shared. - On an enrolled user's first launch, creates/updates that user's profile and claims only blank-owner legacy rows whose
Personvalue matches that authenticated user's legacy Matt/Kayci identity. Existing local daily/weekly budgets and goal weight are migrated into the profile when available. - Moves daily budget, weekly bank, and goal weight to each user's Baserow profile. Browser tab visibility is stored separately per Suite user/device.
- Adds Dashboard, Apps, and Refresh controls in one horizontal top-right row on desktop/tablet and removes the person dropdown.
- Replaces the temporary Meal Points apple icon with the approved Holland icon family treatment: metallic
Hbase with the small bottom-right dashboard-grid badge. - Existing Kids Points Tracker and Family Meal Planner behavior is retained.
v1.3.21: Meal Points Tracker migration
- Adds Meal Points Tracker as the third Suite application at
/apps/meal-points/. - Migrates the working Home Assistant Meal Points Tracker v1.0.4 feature set into the Holland Apps Suite.
- Reuses existing Baserow Food Items
822, Daily Food Log823, and Weight Log829; no Meal Points data migration or new Baserow schema is required. - Adds Suite login context, per-user App Access permissions, Admin → Database connection configuration/testing, and Suite backups for local Meal Points settings.
- Preserves daily/weekly point tracking, food lookup, manual food entry, undo, weight logging/history/charting, goal weights, and per-device tab visibility.
- Keeps child accounts out of Meal Points by default; Suite Owners and adult accounts receive the normal Meal Points permissions.
- Leaves the Home Assistant 5:00 AM weigh-in automation untouched so it can be retained independently of the old add-on.
v1.3.20: Required chore photo proof
- Adds a Photo Required Boolean setting to Add Chore / Edit Chore for approval-required chores.
- Required-photo chores show a camera indicator on child chore cards and change the submission sheet to Photo Proof — Required.
- The child cannot submit or resubmit without a proof photo when the chore requires one; the requirement is also enforced server-side.
- Returned submissions can keep their existing proof photo; removing it makes a replacement photo mandatory.
- Removes the photo resize/storage helper sentence from the selected-photo preview.
- Shifts the mobile submission action buttons slightly right and increases the gap between Cancel and Submit for Approval.
- Adds one Baserow field:
Photo Requiredas a Boolean field on Chores. No new Baserow table is required.
v1.3.19: Chore submission photo proof
- Adds optional Photo Proof when a child submits an approval-required chore.
- Children can use Take Photo or Choose Photo on phone, tablet, or desktop.
- Photos are resized before upload, validated and re-encoded server-side, then stored on the Baserow Chore Submissions row.
- Parent approval cards show a photo preview with a larger tap/click viewer.
- Resubmissions can keep, replace, or remove the previous proof photo.
- Adds one optional Baserow field:
Proof Photoas a File field on Chore Submissions. - Keeps v1.3.18 Hard Rebuild Cache and active Special Event Bank styling unchanged.
v1.3.18: Hard cache rebuild and active-event Bank treatment
- Adds a Suite Owner-only Hard Rebuild Cache action under Admin → Database → Kids Points Tracker.
- Hard rebuild discards only the disposable Points Tracker SQLite cache, clears cached Baserow schemas, reloads every active family from Baserow, rebuilds materialized ledgers, and reports verification results.
- Leaves authoritative Baserow rows, reward timers, settings, profile photos, and other persistent local state untouched.
- Dresses up the Bank tab while a Special Event is active with an event badge, compact event banner, temporary balance-card treatment, event details, and automatic removal when the event expires.
- Special Event Bank visuals are presentation-only and do not alter balances, multipliers, or existing base-only bonus calculations.
v1.3.17: Special Events and point multipliers
- Adds Manage → Special Events for temporary family-wide chore point promotions such as 1.5× or 2× points.
- Supports Today Only or explicit start/end dates, with one Scheduled/Active event per family at a time.
- Chore cards preserve the normal base value while clearly showing the temporary boosted award.
- Approval-required chores snapshot the active event when submitted so later approval preserves the original promotion.
- Point pauses suppress the full promoted award, while automatic bonus qualification and awards continue to use only base chore values.
- Adds the optional Baserow Point Events table and Admin → Database configuration.
v1.3.16: Parent and child deletion reliability
- Validates other-family child memberships against actual Baserow child/family links before blocking permanent deletion.
- Cleans stale child membership rows that do not resolve to a real child in another family and names genuine blocking families.
- Adds Suite Owner-only permanent parent deletion for dedicated parent accounts under Families → Parents & Permissions.
- Tightens iPhone/mobile header top spacing while preserving the iOS safe-area/Dynamic Island inset.
v1.3.15: Activity and membership reliability
- Prevents non-undoable Activity rows from sliding into an empty Undo area on mobile.
- Moves initiator audit metadata into Activity Details and shows the affected child directly on Activity cards.
- Adds label/value separators to Activity Details.
- Converts the legacy Holland Family membership conversion to a true one-time migration.
- Reconciles legacy synthetic Holland Family child memberships and strengthens archived-child deletion safeguards.
v1.3.14: Admin child cleanup and mobile UI polish
- Permanently delete archived children and their exclusive child login from Holland App Admin while retaining historical Baserow audit rows.
- Tightens mobile Activity swipe geometry so Details and Undo cues fully reveal and Undo locks open reliably.
- Hides empty child reward-request history, streamlines Bonus Progress, and relocates mobile Manage add actions below filters.
- Renames Admin Connections to Database, compacts App Access, and gives newly created parent/child users no Meal Planner access by default.
v1.3.13: Activity swipe polish and child-response filtering
- Child reward-request bootstrap now hides Approved/Denied responses after the child has viewed them.
- Mobile Activity swipe-right reveals a Details cue and opens Details directly after the threshold.
- Mobile Activity swipe-left reveals an Undo cue, then locks the card open until Undo is tapped or the row is dismissed.
- Activity Details no longer exposes raw transaction Notes /
[KPT_META]metadata.
v1.3.12: Activity swipe and reward-request cache reliability
- Fixes mobile Activity rows so swipe controls stay hidden until a gesture begins.
- Swipe right opens Activity Details directly; swipe left reveals Undo only when available.
- Refreshes the local Reward Requests cache immediately after request mutations so viewed responses stay hidden after an immediate reload.
- Hides the Manage Library descriptive subtitle on mobile while preserving the desktop header.
No new Baserow tables or fields are required.
v1.3.11: Reward response read-state and mobile interaction polish
- Adds child viewed/read state for resolved reward requests so responses disappear on the next app open after the child intentionally reads them.
- Refines parent Reward Request cards for clearer review.
- Adds mobile pull-to-refresh while preserving explicit desktop refresh controls and specialized cache actions.
- Adds mobile Activity swipe actions and reward-card long-press notes/timer previews.
- Fixes Setup accordion visual coupling and retries live Baserow schemas during startup validation.
- Adds locale thousands separators to user-facing point/count values.
v1.3.10: Child reward requests
- Adds Request a Reward for child accounts with a required title and description plus an optional suggested point cost.
- Shows each child only their own Pending, Approved, Denied, and Cancelled request history.
- Places Pending requests under Manage → Requests with count badges for authorized parents.
- Lets a parent open the normal reward editor with the request title, description, and suggested cost prefilled.
- Marks the request Approved and links the created reward only after the Rewards row is saved successfully.
- Requires a parent response for denials and records submission/review audit snapshots.
- Enforces child ownership, family isolation, Pending-only transitions, and adult review permissions server-side.
- Includes Reward Requests in connection testing, schema refresh, health reporting, backups, and permanent family deletion.
This release requires one new Baserow Reward Requests table. Follow docs/BASEROW_REWARD_REQUEST_FIELDS.md and enter the table ID under Holland Apps Admin before enabling the workflow. Existing Points Tracker features remain available while the table is unconfigured.
v1.3.9: Mobile layouts and collapsible Setup panels
- Refines the Analytics month calendar for mobile with one three-button navigation row, compact count labels, clipped cell contents, and quieter outside-month dates.
- Flattens and compacts the mobile Manage list, reduces icon and action-button size, protects long labels, and makes the Manage selector swipeable without a visible scrollbar.
- Hides the mobile top-navigation scrollbar while retaining horizontal swipe access to every tab.
- Makes Baserow Connection and Points Tracker Cache & Sync collapsible and closed by default on mobile and desktop.
- Keeps Manual Point Adjustment permanently expanded.
- Remembers Setup panel state for the current browser session without resetting unsaved values or action results.
- Keeps connection and cache health summaries visible while their panels are collapsed.
No new Baserow tables or fields are required.
v1.3.8: Analytics calendar and profile photo reliability
- Replaces the contribution-style chore heatmap with a standard Sunday-through-Saturday monthly calendar.
- Adds Previous Month, Next Month, and Today navigation plus day-level chore drill-down with child, points, suppression, approval, and completion-time details.
- Adds This Week, Last Week, This Month, and Last Month Analytics date presets. Week presets use the family’s configured week-start day.
- Fixes All-time Bonus Effectiveness percentages by deriving the denominator from the rule’s active/created date or the earliest available award/history date.
- Includes the family-scoped child profile image URL in every server-generated state payload instead of bootstrap only.
- Routes every browser state refresh through one merge path so balance, chore, reward, approval, Analytics, undo, and adjustment responses cannot discard profile photos.
- Restores profile images after browser tab suspension and back/forward-cache recovery without clearing image sources during ordinary page hiding.
- Retries a failed profile image once before showing the generic fallback avatar, while retaining explicit image cleanup during family switching.
No new Baserow tables or fields are required.
v1.3.7: Pause enforcement and family analytics
- Blocks positive Custom Transactions and positive Manual Point Adjustments while the selected child’s point earning is paused.
- Allows deductions and point spending corrections while paused, but rejects zero-change exact-total adjustments.
- Blocks individual reward redemption for paused children. Family reward redemptions remain available to eligible children, while paused children are excluded from the payment split.
- Excludes paused children from automatic individual and family bonus awards until point earning is resumed.
- Adds previous-period comparisons for earned points, spending, chore completions, reward redemptions, and suppressed points.
- Adds a chore completion calendar/heatmap with completion totals and streaks.
- Adds point-pause analytics for pause periods, paused time, chores completed while paused, suppressed base points, resume type, and reasons.
- Adds household workload distribution by child, including shared completion credits, base points, and suppressed points.
- Adds bonus effectiveness cards with awarded points, achieved periods, achievement rate, and current-period near-miss progress.
No new Baserow tables or fields are required. Historical award totals use stored Bonus Award snapshots. Historical near-miss calculations use the current bonus-rule configuration and are labeled accordingly.
v1.3.6: Points Tracker schema-cache and reward reliability
- Makes persisted Baserow field-schema cache entries honor the 15-minute schema TTL instead of remaining authoritative indefinitely.
- Retains stale schemas only as an offline read fallback when Baserow cannot be reached.
- Makes Rebuild Cache clear and freshly download all configured Baserow field schemas before rebuilding row data.
- Makes Test Connection bypass cached field definitions and include the Point Earning Pause Events table.
- Preserves existing healthy row-cache data when a schema refresh fails, so a failed rebuild cannot erase a usable local snapshot.
- Reapplies local reward-mode and timed-reward fallbacks in the lazy-loaded Manage view when optional Baserow fields are absent.
- Keeps Baserow authoritative when reward mode and timer fields are present, preventing stale local fallback values from overriding Baserow changes.
- Updates the Manage list immediately from successful chore or reward save responses while the background refresh completes.
No new Baserow tables or fields are required for v1.3.6. Existing v1.3.5 point-pause fields and timed-reward fields remain supported.
v1.3.5: Scheduled child point earning pauses
- Adds Manage → Children controls for an authorized parent to pause one child’s point earning while chores, submissions, approvals, completion limits, history, rewards, and login access remain available.
- Supports manual resume, a number of calendar days, or a selected last paused date in the family timezone.
- Runs automatic resume server-side and records Paused, Schedule Changed, Reason Updated, Resumed Manually, and Resumed Automatically audit events.
- Captures eligibility at submission/resubmission so approval timing cannot change a paused chore’s result.
- Records paused chores as zero-point completion transactions with the normal chore value stored as suppressed points.
- Keeps paused completions out of automatic bonus qualification while preserving daily/weekly completion limits.
- Calculates shared chore allocations normally, suppresses the paused child’s share, and never redistributes it.
- Shows pause, reason, resume timing, zero-point approval wording, and suppression details throughout the parent, child, and Activity interfaces.
This update requires additive Baserow fields and the new Point Earning Pause Events table. Follow docs/BASEROW_POINT_EARNING_PAUSE_FIELDS.md before enabling the feature. Existing blank fields are treated as enabled/eligible and historical balances are not recalculated.
v1.3.4: Faster Meal Planner loading
- Adds a persistent Meal Planner SQLite read cache at
/data/apps/meal_planner/meal_planner_cache.db. - Loads the weekly plan, recipe pages, favorites, and shopping list from indexed local data while Baserow synchronizes every 60 seconds.
- Keeps Baserow authoritative: writes go to Baserow first and update SQLite only after Baserow confirms them.
- Uses real local
LIMIT/OFFSETpagination and indexed week filtering instead of downloading complete tables for each page. - Removes the forced fresh Baserow read from normal Shopping-tab loads.
- Generates smaller WebP recipe thumbnails and serves immutable local images with browser caching.
- Combines initial settings and image-crop settings into one bootstrap request.
- Adds Meal Planner Sync Now, Rebuild Cache, and expanded diagnostics.
- Preserves cached read-only page viewing when Baserow is temporarily unavailable; edits still require Baserow.
No Baserow schema, Home Assistant, or TrueNAS mount changes are required. The first launch can take longer while the cache and thumbnails are created.
v1.3.3: Pending Approval visibility
- Fixes pending chore submissions being counted but hidden when the recipient uses a generic multi-family Child ID or Baserow child-row link.
- Keeps badge counts and rendered approval cards in exact agreement.
- Preserves legacy Kace/Kenna/Both submissions and adds a visible diagnostic for unresolved recipient links.
v1.3.2: Family lifecycle, multi-family access, and cache integrity
- Adds archived-child restoration and a protected Suite Owner-only permanent family deletion workflow with Baserow audit counts, timestamped backups, dependency-safe cleanup, verification, and deletion logging.
- Adds family selectors to the Suite dashboard and Kids Points Tracker for multi-family users, with dark app-matched styling and safe family-state cleanup.
- Fixes self-membership removal for non-active families and ensures only the true active family displays CURRENT FAMILY.
- Removes the 5,000-row Baserow pagination ceiling, verifies complete downloads, preserves healthy cache data after incomplete retrieval, and exposes cache integrity warnings.
- Rebuilds the materialized ledger once for a transaction and its child entries instead of rebuilding after every related row.
- Retains archived-child restoration, reliable App Access overrides, the simplified Connected status, profile-photo modal, duplicate Add-button cleanup, and child/children wording fixes.
No Baserow schema, Home Assistant, or TrueNAS storage changes are required.
v1.3.0: SQLite cache, lazy tabs, and paginated activity
- Adds a persistent family-scoped SQLite read cache at
/data/apps/points_tracker/points_tracker_cache.db. - Keeps Baserow authoritative and writes every change to Baserow before updating the cache.
- Builds and refreshes the cache automatically; no new TrueNAS dataset, Baserow table, or Home Assistant change is required.
- Materializes current balances and a normalized, indexed Activity ledger after Baserow synchronization and after successful app writes.
- Loads balances from the materialized snapshot instead of recalculating lifetime totals during every initial page load.
- Loads balances and the initial app shell first, then loads approvals, bonuses, management data, Activity, and Analytics only when those sections are opened.
- Loads Activity 50 rows at a time from the indexed SQLite read model with Load More Activity instead of including up to 500 transactions in every bootstrap.
- Adds Sync Now, Verify Balances, and Rebuild Cache under Points Tracker Setup.
- Preserves cached read-only viewing during a temporary Baserow outage while keeping all points-changing actions dependent on a successful Baserow write.
- Stores Baserow schemas and the active family directory locally so cached startup continues after a container restart.
- Remains rollback-safe: v1.2.3 ignores the cache and continues reading directly from Baserow.
The first launch after updating can take longer while the cache is created. Later loads use the local read model and background synchronization.
v1.2.3: Approval and family-switch reliability
- Fixes approval-required child chore submissions that could fail when Baserow link fields were filtered as hashable values.
- Preserves Chore, Recipient Children, and Family links in submitted approval rows.
- Handles cancelled browser and PWA requests without reporting a false Points Tracker outage or writing a second response to a closed connection.
- Clears profile images from the previous family when the active family changes or a browser restores a page from its back/forward cache.
- Makes the Points Tracker manifest, service worker, and install icons available before login while keeping app data and APIs private.
- Adds a root favicon response to remove the harmless browser 404.
v1.2.2: Faster family loading and child login linking
- Caches Baserow table schemas for 15 minutes instead of reloading every schema during every refresh.
- Requests active-family rows from Baserow before applying the existing server-side authorization check.
- Caches the background worker family list and trusts the Suite-provided active-family context during normal requests.
- Handles Points Tracker requests concurrently and prevents duplicate browser bootstrap requests.
- Proxies and caches Material Design icons locally after first use.
- Adds detailed bootstrap timing logs and timing metadata for diagnosing future slowdowns.
- Lets an existing configured Suite login be linked directly to a child while preserving its credentials, history, and app access.
- Removes the unused pending placeholder after an existing child login is linked.
v1.2.1: PWA reliability and family administration
The installed Kids Points Tracker PWA now uses a network-only service worker. Authenticated HTML, API responses, family context, and login redirects are never stored in an offline app-shell cache. Activation removes every older kids-points-* cache and performs one controlled refresh so an installed iPhone PWA can recover from the stale-shell black-screen condition.
If startup fails, the PWA shows a visible session or connection error with Try Again and Open Dashboard actions instead of an empty dark screen.
Admin improvements include:
- Collapsible family panels that start closed whenever the Families tab opens.
- Collapsible Children, Parents & Permissions, Family Settings, Notifications, Migration & Data Verification, and Archive & Data Management sections.
- Automatic Baserow initialization when a family is created.
- Immediate family-panel refresh after adding, editing, or archiving a child.
- Automatic pending Suite accounts for new children and family adults.
- Automatic child-login binding without copying a Linked Child ID.
- Collapsible user panels under App Access.
- Collapsible connection panels under Connections.
Pending accounts have no usable credentials until a permitted administrator configures a username and password. Family Admins may manage accounts that belong only to families they administer; Suite Owner and shared multi-family accounts remain Suite Owner-managed.
Private multi-family Points Tracker
One Points Tracker installation can serve multiple separate families. Each signed-in user is assigned a Suite-managed family role, and every Points Tracker read or write is restricted to the active family on the server.
Roles include:
- Suite Owner: manages all families, global connections, and migrations.
- Family Admin: manages their own family’s users, children, chores, rewards, bonuses, approvals, points, and settings.
- Family Adult: uses approvals, chores, rewards, activity, and analytics for their own family.
- Child: uses the child workflow for the linked child inside their own family.
Family memberships and permissions are stored in the Suite SQLite authentication database. They are not stored in Baserow.
Generic children and ledger
Points Tracker does not assume exactly two children. Stable Child IDs and the Transaction Child Entries table support any number of children while preserving the existing Kace and Kenna history as legacy compatibility snapshots.
Family chores, rewards, submissions, transactions, bonus rules, bonus awards, timers, profile images, analytics, and notifications are isolated from every other family.
Baserow preparation
The v1.2.x multi-family model requires three additional tables and additive fields on the existing Points Tracker tables:
docs/BASEROW_MULTI_FAMILY_FIELDS.md
docs/BASEROW_MULTI_FAMILY_FIELDS.csv
v1.3.10 adds one separate table for child reward requests:
docs/BASEROW_REWARD_REQUEST_FIELDS.md
docs/BASEROW_REWARD_REQUEST_FIELDS.csv
Do not manually populate Transaction Child Entries. Existing v1.2.x, v1.3.0, and v1.3.1 installations require no additional Baserow fields for v1.3.2.
Holland Family retains its Verify Family Data migration and reconciliation tools. New families are initialized in Baserow automatically when they are created. If setup fails, the Suite does not leave a partially configured family active.
Home Assistant
Notification Profiles are family-specific. They contain routing keys only; webhook secrets and Home Assistant tokens remain outside Baserow. Each family can independently disable Home Assistant notifications.
The existing webhook automation remains compatible:
docs/home_assistant_reward_timer_automation.yaml
Backups
Daily and manual Suite backups include:
- Suite authentication database and family memberships
- Family-scoped Points Tracker state and timers
- Family profile images
- Points Tracker, Meal Planner, and Meal Points options/local settings and media
The SQLite read cache is disposable and may be rebuilt from Baserow; it is not the authoritative backup source.
Normal family and child deletion is archival so historical transactions and awards remain valid.
Production image
The Forgejo main workflow publishes:
github.hollandayinn.com/testing/holland-apps-suite:latest
The included truenas-custom-app.yaml uses the latest image with pull_policy: always; the Forgejo workflow also publishes the immutable 1.4.13 tag.
Verify package contents
cd /home/coder/Holland_Apps_Suite
chmod +x verify-package.sh
./verify-package.sh
When python3 or node is unavailable in Code-server, structural checks still run and the Forgejo validation runner performs the omitted runtime checks.
The source package contains no live runtime data, Baserow credentials, webhook secrets, passwords, profile photos, recipe images, or backups.