release: promote beta to main#1392
Merged
steilerDev merged 12 commits intomainfrom May 3, 2026
Merged
Conversation
The work-items and household-items links need to point to the index pages, not a non-existent /overview sub-path. Co-authored-by: Frank Steiler <frank@steiler.de> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…s pricing modes (#1385) * feat(budget): enforce includes_vat NOT NULL, align VAT behavior across pricing modes - Add migration 0031 to backfill NULL includes_vat → true and enforce NOT NULL at DB level - Update Drizzle schema: includesVat is now .notNull().default(true) on both budget tables - Change shared types: BaseBudgetLine.includesVat is now boolean (not boolean | null) - Update JSON schemas in workItemBudgets and householdItemBudgets routes - Fix service converters to use ?? true fallback instead of ?? null - Align direct pricing mode with unit pricing: both modes now apply the VAT multiplier (1 or 1.19) before storing plannedAmount, so the stored value is always gross (VAT-inclusive) - Default includesVat form state to true in both WorkItemDetailPage and HouseholdItemDetailPage - Update all test fixtures to use includesVat: true (was null) Fixes: direct pricing VAT behavior was inconsistent with unit pricing mode. Co-Authored-By: Claude backend-developer (claude-haiku-4-5-20251001) <noreply@anthropic.com> Co-Authored-By: Claude frontend-developer (claude-haiku-4-5-20251001) <noreply@anthropic.com> Co-Authored-By: Claude qa-integration-tester (claude-sonnet-4-6) <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(budget): restore CHECK constraints in migration 0031 table recreation Migration 0031 recreated work_item_budgets and household_item_budgets without the original CHECK(planned_amount >= 0) and CHECK(confidence IN (...)) constraints, causing tests that expect these constraints to be enforced to fail. Also switch to explicit column lists in INSERT...SELECT to be safe for existing databases where column order differs from the new table definition. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Frank Steiler <frank@steiler.de> Co-authored-by: Claude backend-developer (claude-haiku-4-5-20251001) <noreply@anthropic.com>
Documents the built-in backup feature: what gets archived, Docker volume mount setup, scheduled backups via BACKUP_CADENCE, retention policy, and restore steps. Also adds BACKUP_* env vars to the configuration reference with a cross-link to the new guide. Co-authored-by: Frank Steiler <frank@steiler.de> Co-authored-by: Claude <docs-writer> <noreply@anthropic.com>
…1390) (#1391) * test(e2e): add smoke tests for budget overview cleanup (#1389/#1390) Add budget-overview-no-hero-card.spec.ts verifying that the hero card (<section aria-label="Budget overview">) and its CSS class are absent after removal in #1389, the Add button and Cost Breakdown Table are still rendered, and the source-badge label is present in the DOM for budget lines with a source assignment (#1390). Update BudgetOverviewPage POM's waitForLoaded() to race on costBreakdownCard instead of heroCard, which no longer exists. Remove heroCard assertions from budget-overview.spec.ts, budget-overview- print.spec.ts, and budget-source-filter.spec.ts that would fail after the hero card removal. Fixes #1389 Fixes #1390 Co-Authored-By: Claude e2e-test-engineer (Sonnet 4.6) <noreply@anthropic.com> * test(budget): prune hero-card tests and add print-badge DOM test (#1389/#1390) Remove 27 test cases that covered the removed hero card section (BudgetBar, key metrics row, remaining detail panel, currency formatting, Expected Payback metric, payback-adjusted remaining, subsidy payback detail panel, mobile bar detail, and hero card footer cleanup describe blocks). Keep the one hero-card it case in the empty state block. Add describe('source badge print visibility (#1390)') to CostBreakdownTable.test.tsx: expands a work item to budget-line level and asserts both .sourceBadgeDot (aria-hidden="true") and .sourceBadgeLabel (containing a child with aria-label) are present in the DOM — the exact structure that the new @media print CSS rules in CostBreakdownTable.module.css depend on. Fixes #1389 Fixes #1390 Co-Authored-By: Claude qa-integration-tester (Sonnet 4.5) <noreply@anthropic.com> * fix(budget): remove hero card and fix printout source badge (#1389/#1390) Remove the Budget Health hero card from the Budget Overview page, including all helpers, state, computed values, CSS classes, unused imports, and i18n keys that were exclusively used by it. The page now goes from PageLayout straight into the empty-state and Cost Breakdown Table without the metrics row, stacked bar, hover tooltip, and remaining detail panel. Fix the Budget Overview printout: print viewports map to ~600-720px, which triggers the mobile breakpoint and hides the source badge label in CostBreakdownTable, leaving only an invisible colored dot. Add print-mode rules that force the source-badge label visible and the dot hidden, with a border-based legibility treatment so the label prints without depending on background colors. Fixes #1389 Fixes #1390 Co-Authored-By: Claude dev-team-lead (Sonnet 4.6) <noreply@anthropic.com> Co-Authored-By: Claude frontend-developer (Haiku 4.5) <noreply@anthropic.com> Co-Authored-By: Claude translator (Sonnet 4.6) <noreply@anthropic.com> Co-Authored-By: Claude e2e-test-engineer (Sonnet 4.6) <noreply@anthropic.com> --------- Co-authored-by: Frank Steiler <frank@steiler.de> Co-authored-by: Claude e2e-test-engineer (Sonnet 4.6) <noreply@anthropic.com>
* chore: retrigger promotion CI The auto-fix bot's [skip ci] commit on top of beta blocked all pull_request workflows for promotion PR #1392. This empty no-op commit advances the beta head SHA so Quality Gates and E2E Gates can run on the promotion PR. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * chore: append newline to test pull_request event trigger Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Frank Steiler <frank@steiler.de> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add a trailing newline to README to advance the beta SHA via a clean synchronize event. The previous trigger commit accidentally included the directive that suppresses CI in its body, which suppressed all workflow runs for the squash-merged commit on beta. Co-authored-by: Frank Steiler <frank@steiler.de> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Contributor
|
🎉 This PR is included in version 2.5.0-beta.5 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Append a trailing newline to docs/src/intro.md to advance the beta SHA via a clean synchronize event for the promotion PR. The docs directory is ignored by Prettier and ESLint, so the auto-fix bot will not produce a follow-up commit on top. Co-authored-by: Frank Steiler <frank@steiler.de> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Contributor
|
🎉 This PR is included in version 2.5.0-beta.6 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Sync the docs site, README, and release summary with what's actually shipping on beta. - Rewrite Budget Overview guide to match the post-hero-card layout: the page now goes straight from the title bar into the Cost Breakdown Table. Removes the stale Summary Tiles and Remaining Budget Perspectives sections; the Min / Avg / Max perspective toggle and Available Funds row are now described in their actual location (inside the breakdown table). Add a print-mode note about the source-name border treatment landing on printouts. - Add a VAT Handling section to Work Item Budgets covering the always-gross-stored semantics and the unified behavior across direct and unit pricing modes. - Add the missing PAPERLESS_FILTER_TAG row to the Configuration reference table. - Update README Quick Start to mount a backup volume and point at the new Backups guide. - Replace RELEASE_SUMMARY.md with v2.5.0 content covering Backup & Restore (#1386), VAT alignment (#1385), the Budget Overview hero removal (#1389), the printout source-name fix (#1390), and the related-pages link fix (#1384). Co-authored-by: Frank Steiler <frank@steiler.de> Co-authored-by: Claude <docs-writer> <noreply@anthropic.com>
Contributor
|
🎉 This PR is included in version 2.5.0-beta.7 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Contributor
|
🎉 This PR is included in version 2.5.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release Summary
Budget data integrity, UX cleanup, and a new backup feature guide. This release tightens VAT semantics in the budget engine, removes the redundant Budget Health hero card, fixes printed Budget Overview output, and ships user documentation for the built-in backup feature.
Changes
Features
includes_vatis nowNOT NULL(defaults totrue) at both the schema and shared-types level. Direct pricing mode now applies the VAT multiplier (1 or 1.19) before storingplannedAmountconsistently with unit pricing — stored values are always gross.Fixes
/overviewsub-paths and now point to the correct index pages.Docs
BACKUP_CADENCE, retention policy, and restore steps.BACKUP_*env vars added to the configuration reference.Chores / Refactoring
includes_vat->true, recreates the budget tables withNOT NULLand the originalCHECK(planned_amount >= 0)andCHECK(confidence IN (...))constraints, and uses explicit column lists inINSERT...SELECTfor safety.Change Inventory
Backend (
server/,shared/)server/src/db/migrations/0031_includes_vat_not_null.sql— new migrationserver/src/db/schema.ts—includesVat.notNull().default(true)on both budget tablesserver/src/routes/workItemBudgets.ts,householdItemBudgets.ts— JSON schema updatesserver/src/services/budgetOverviewService.ts,householdItemBudgetService.ts,workItemBudgetService.ts,shared/budgetServiceFactory.ts— service converter updates (?? truefallback) and aligned VAT multiplier for direct pricingshared/src/types/budget.ts—includesVatis nowboolean(notboolean | null)Frontend (
client/)client/src/pages/BudgetOverviewPage/— hero card removed; page, tests, and CSS prunedclient/src/components/CostBreakdownTable/CostBreakdownTable.module.css— print-mode rules for source badge label/dotclient/src/components/budget/BudgetSection.tsx,useBudgetSection.ts— VAT default state changesclient/src/i18n/{en,de}/budget.json— removed hero-card-only keysE2E Tests (
e2e/)e2e/tests/budget/budget-overview-no-hero-card.spec.ts— new smoke test for hero card removal and printout source badge presencee2e/tests/budget/budget-overview.spec.ts,budget-overview-print.spec.ts,budget-source-filter.spec.ts— hero card assertions removede2e/pages/BudgetOverviewPage.ts—waitForLoaded()now races oncostBreakdownCardDocs / Config
docs/src/guides/backup/index.md— new backup guidedocs/src/getting-started/configuration.md—BACKUP_*env vars addeddocs/src/guides/budget/budget-overview.md— broken links fixeddocs/docusaurus.config.js,docs/sidebars.js— sidebar updates for the new guideManual Validation Checklist
/budget. Confirm there is no hero card / metrics row / stacked bar at the top; the page jumps directly into the Cost Breakdown Table (or empty state if no data)./budget, expand at least one work item to a budget-line level, then File -> Print (or Cmd/Ctrl-P). In the print preview, confirm the source-badge label is clearly visible next to each budget line that has a source (no invisible colored dots).Includes VAT = true) and a known net amount. Save and verify the stored / displayed gross amount equals net × 1.19.Includes VAT = false. Verify the stored amount equals the entered amount (no multiplier applied).includes_vatare backfilled totrue, and inserting a new budget line without specifyingincludes_vatdefaults totrue.BACKUP_DIR,BACKUP_CADENCE,BACKUP_RETENTIONare present in the configuration reference.Testing