Merged
Conversation
Restructure the ViewModeSelector markup and styles: remove the extra wrapper, move the settings button out of the option loop, ensure buttons use proper keys and className logic, and adjust CSS (selector height, reduced padding, font-size tweaks, and settings icon styling). Improve copy and formatting in ViewModeSettingsModal and tidy the checkbox disable expression. Increase MAX_VISIBLE_FAVORITE_VIEW_MODES from 3 to 6 to allow pinning more view modes.
Adjust header layout and button sizing: align items in .header-btn-group, set .header-btn-secondary to height: fit-content, and remove redundant .view-mode-selector-wrap rules. Add a null/undefined guard in PlanDashboard.tsx so sanitizeFavoriteViewModes is only called when viewModeFavorites is present (pass undefined otherwise) to avoid potential runtime errors.
Remove supplemental quarterly insertion and refactor syncFavoritesForCadence to accept an optional previousCadenceMode. The new logic removes a prior non-default cadence (so stale cadence tabs don't linger), preserves permanent defaults (monthly/yearly), and inserts the new cadence in canonical order while respecting MAX_VISIBLE_FAVORITE_VIEW_MODES. Also update buildViewModeSelectorOptions to stop auto-adding supplemental modes and expand unit tests to cover the new behaviors.
Change default payCadenceLabel from 'Your Pay Frequency' to 'Pay Frequency' to simplify the displayed label. Add padding to .view-mode-settings-button for improved spacing/alignment. Update unit test to look up the cadence button with a case-insensitive regex (/Weekly\s*Pay Frequency/i) so it matches the adjusted label and tolerant spacing/casing.
Introduce a Pay Settings modal and UI flow, plus cadence-aware initialization for view-mode favorites. Changes include: - Import new icons and PaySettingsModal component; add Banknote header button to open pay details and simplify "Copy Plan" label to "Copy". - Add showPaySettingsModal state and wire menu events (openPayOptions) and app actions to open the modal. Subscribe/unsubscribe to a new copy menu event. - Remove the old paySettingsSearchRequestKey prop/flow and instead show the PaySettingsModal directly; clear pending field highlights when opening/closing. - When a plan has no stored viewModeFavorites, pick the pay-frequency cadence as the initial displayMode and persist initial favorites (using syncFavoritesForCadence and DEFAULT_FAVORITE_VIEW_MODES) via updateBudgetSettings so the favorites modal reflects the cadence. - Guard favorites-change effect to no-op when favorites aren't stored yet to avoid clobbering the cadence initializer. - Update effect dependencies and minor wiring changes to ensure displayMode stays valid and integration with existing tab logic. This consolidates pay settings UX into a modal and ensures new plans get a sensible initial tab based on the user's chosen pay frequency.
Introduce a new TransientStatusIndicator component for transient, accessible status messages. Adds component implementation (props: message, variant, topRem, rightRem, zoomFactor), corresponding CSS for positioning, visual variants and responsive behavior, and an index export. Also updates the shared components barrel to export the new component.
Implement save-before-close behavior and refine UI/UX across the dashboard and app. - electron/main.ts: Replace async message box with a modal save prompt (showMessageBoxSync) that offers Save / Don't Save / Cancel; attempt a programmatic save via webContents before closing, show an error box if the save fails, and preserve window state. Improves protection against data loss when closing windows with unsaved changes. - src/App.tsx: Replace two ad-hoc zoom/undo status divs with the new TransientStatusIndicator component to centralize transient status rendering and account for zoom factor and variants. - src/components/PlanDashboard/PlanDashboard.css: Tighten header action spacing (gap adjustments), align items center, and tweak responsive layout/order for header button groups to improve compactness and alignment. - src/components/PlanDashboard/PlanDashboard.tsx: Refactor save logic into performSave() returning a boolean so callers (including the close handler) can detect success; provide handleSave wrapper for explicit save actions. Remove duplicated Save/Copy buttons from the header and adjust the Settings button disabled condition to not depend on loading. Update imports accordingly. These changes aim to prevent accidental data loss, simplify transient status handling, and tighten the dashboard header layout and save flow for programmatic use.
Introduce a previewable view mode selector and wire it into several tab views. Replaced the CompactViewModeSelector with a new ViewModeButton, added previewDisplayMode state and handleDisplayModePreview to allow temporary previewing of modes (effectiveDisplayMode used when rendering). Passed a viewModeControl prop into PayBreakdown, BillsManager, LoansManager, TaxBreakdown and SavingsManager so the selector can be rendered in each tab header. Also updated multiple tabs to use effectiveDisplayMode instead of the persistent displayMode, adjusted a header label in PayBreakdown (After-Tax -> Take Home Pay), and made a small CSS whitespace tweak.
v0.4.2 pre-release
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.
Features
Improvements
Bug Fixes