mirror of
https://github.com/actualbudget/actual.git
synced 2026-11-09 10:45:04 -06:00
* [AI] Show goal funding status and an Assign action in balance menus Use the existing Budget Automation engine to add a panel to category balance menus with the month's recommendation, what is assigned so far, what is still needed, and an Assign action that adds the money still needed (undoable). - budget/category-funding reads the dryRunCategoryTemplate projection without writing goal_def; categories without funding templates get null, and invalid automations fail closed. - budget/fund-category recomputes on the server, assigns the full recommendation and goal in one batch, and is a no-op when already funded. - Funding reads are gated by the goal templates flag, only run for categories with templates, and refresh after data changes and funding. - Covers desktop and mobile envelope and tracking balance menus, including tracking income categories. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XJDNR72i3yEZttwMUuk4cq * [AI] Fold goal funding into the existing goal status and never overbudget Address review feedback on the category funding change: - Replace the separate funding panel with the existing goal status. It now shows at the top of the desktop envelope and tracking balance menus (as it already did on mobile) with a thin progress bar, and the desktop hover tooltip is removed along with its tooltipDisabled workaround. - Replace the Assign button with a "Fund goal from To Budget" balance menu item (envelope only, not for long-term goals) that uses the existing undoable transfer-available action, so it never moves more than To Budget and never lowers a budget. It is hidden when the goal is met or To Budget is empty. - Drop the live dry-run endpoint, the fund-category endpoint, their client queries and refresh wiring, and the tracking income additions. Status, bar, colour and fund amount now all read the stored goal. - Add transferAvailable tests and menu wiring tests, and update the budget automation docs for the moved goal status. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XJDNR72i3yEZttwMUuk4cq * [AI] Show goal status as a colored pill on category balances Draw the balance of a category with a goal as a pill with an icon: yellow with a clock when underfunded, green with a check when funded and red with an exclamation when overspent. Categories without a goal, or with goal templates off, render as before. - The pill, the balance colour and the goal status share one comparison (compareToGoal/getGoalFundingState), made on displayed amounts so they agree when decimals are hidden. - Desktop envelope and tracking tables and the mobile budget table; narrow desktop columns drop the icon to keep the amount readable, and mobile amounts shrink to fit instead of being cut off. - Status is announced to screen readers, not shown by colour alone. - Pill colours get their own theme tokens so the funded pill keeps enough contrast in the midnight theme. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XJDNR72i3yEZttwMUuk4cq * [AI] Move GoalStatus into its own file GoalStatus isn't specific to BalanceWithCarryover, so give it a type-strict module of its own alongside its row helper. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CpAtycTVCRhkLcuD6AJeTM * [AI] Update goal status screenshots to show the balance menu Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CpAtycTVCRhkLcuD6AJeTM * [AI] Clarify how funding a goal affects next month's To Budget Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CpAtycTVCRhkLcuD6AJeTM * [AI] Update docs screenshots to show the goal status pill Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CpAtycTVCRhkLcuD6AJeTM * [AI] Describe the underfunded goal status as yellow in the docs Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CpAtycTVCRhkLcuD6AJeTM * [AI] Update mobile budget template VRT snapshots for the goal status pill Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CpAtycTVCRhkLcuD6AJeTM * [AI] Replace the goal status pill with a goal progress ring Keep category balances in their usual colours and draw a small ring beside balances with a goal instead: a gold arc that fills as the goal is funded, and a green check once it is met. Overspent balances stay red like any other negative amount, without an extra marker. The ring sits beside the amount in the balance cell on desktop, inside the balance pill on mobile, and next to the heading of the goal status in the balance menu, so one shape carries the status everywhere. The pill-only theme tokens are removed, the docs text and screenshots and the mobile VRT snapshots are updated, and the release note is replaced. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B4sNu2G32qCLcAe2YznUCM * [AI] Only mark goals that still need money, with a filling ring Draw the goal ring only beside balances whose goal is not met yet, so a fully funded budget looks like one without goals and the one mark in the table points at rows that still need money. The ring is a single gold pie: a hollow outline when nothing is funded yet, a wedge that grows with the funded share and that never closes, since the ring disappears the moment the goal is met. Funded rows carry no mark and overspent rows stay red like any other negative amount. The glyph shrinks to 10px to sit within the cap height of the figures and draws in one theme token, so it keeps 3:1 contrast on every surface in all three themes. The amount keeps its full width in narrow month columns; the ring is what yields. The balance menu shows the same ring only beside "Underfunded", as its legend. The three-way funding state is replaced by one helper that returns the progress to draw or nothing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B4sNu2G32qCLcAe2YznUCM * [AI] Keep the funded balance green, ring only while the goal is unmet A category whose goal is met keeps the green balance the goal templates feature already gives it, so a met goal still reads differently from no goal. The ring stays the only mark on an unfunded goal; its amount keeps the normal colour instead of upstream's gold text. Docs text and screenshots, the release note and the mobile template VRT snapshots follow. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B4sNu2G32qCLcAe2YznUCM * [AI] Keep funded balances green in the mobile balance sheet and the ring in view - Add an explicit isIncome prop instead of reading isDisabled as "income", so the mobile balance sheet header (which is only disabled because it is not clickable) colours a funded balance green again, and mobile income balances keep their hover style - Let a long amount shrink beside the ring on desktop so the ring is not pushed out of the column - Describe the ring instead of yellow balances in the goal directive docs - Drop a snapshot change that had no visible difference Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CpAtycTVCRhkLcuD6AJeTM * [AI] Drop the ring from the goal status in the balance menu The progress bar right below it already shows the same thing, so the menu keeps its plain status line. Retake the balance menu screenshots in the docs to match. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CpAtycTVCRhkLcuD6AJeTM * [AI] Keep the balance yellow while its goal is unmet Per review, an unmet goal keeps the yellow balance text it has on master and gains the progress ring beside it, so every category with a goal is coloured. The balance colour logic is back to master's; the docs and their screenshots describe and show yellow text with the ring. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CpAtycTVCRhkLcuD6AJeTM * [AI] Show income goals only in tracking budgets Envelope budgets don't apply templates to income categories, so the balance now ignores an income goal only when the budget is not tracking, instead of on every income category. Tracking income pills get their goal colour back and show the ring when underfunded. The envelope income balance sheet no longer shows a goal status, and the mobile income group menu no longer offers "Overwrite with templates" in envelope budgets. The isIncome props on the tracking budget table and balance menu are removed, since those only ever render expense categories. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018MRjoaUi1WAUGsSNp3sb7p * [AI] Keep goals from one budget type out of the other Envelope and tracking budgets share spreadsheet cell names, so a goal from one type could show up after switching to the other: - Switching type (by sync, undo or redo) left the old type's cells in the saved spreadsheet cache, and goals came back from it on the next open. setType now clears the cache and waits for the budget values to reload. - Changes to the inactive type's budget table were still applied to the sheet. Only the active table's rows are applied now. - Applying templates to specific categories wrote amounts and goals for income categories in envelope budgets, and saving automations stored their goals. Envelope budgets now skip income categories in both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018MRjoaUi1WAUGsSNp3sb7p * [AI] Show income goals on the desktop tracking budget Desktop tracking budgets have no balance column for income categories, so their goals showed nowhere, while the mobile income pill already showed them. An income category with a goal now shows the goal colour on its received amount, with the ring while underfunded. Income categories without a goal, and budgets with goal templates off, keep the plain received amount. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018MRjoaUi1WAUGsSNp3sb7p --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: youngcw <calebyoung94@gmail.com>