Closed
Conversation
Add a GitHub pull request template with checklists for type, docs, validation, and notes; introduce Features.md as a user-facing overview of Paycheck Planner capabilities. Overhaul README: reorganize and condense content, update development/build/typecheck instructions, clarify storage/encryption behavior and architecture, refresh project structure and troubleshooting guidance, and link related docs and app update guidance. These changes improve onboarding for contributors and provide a clearer, user-focused feature summary.
Introduce a tab management feature and bill enable/disable flow. Added PlanTabs and TabManagementModal components (with CSS) and a tabManagement util, integrated into PlanDashboard to allow showing/hiding, reordering, drag/drop and a modal for managing tabs (prevents hiding the last visible tab). BillsManager now supports enabling/disabling bills (toggle button, visual disabled state, filtering/sorting of disabled bills) and related CSS updates. PayBreakdown received UX and numeric fixes: stable display-mode conversions, local inputValue state to avoid conversion flicker, sorting of categories, less aggressive rounding, and exclusion of disabled bills from totals. Also consolidated and updated shared input and toast styles and small PlanDashboard refactors to use the new tab components.
Intercept window close to run an unsaved-changes flow and avoid recursive close handlers (approvedToClose WeakSet). Main now asks renderer to save via a new window.__requestSaveBeforeClose hook (exposed in App) and only closes after save or explicit discard; dialog options changed to Save / Don't Save / Cancel. Persist window session state when a budget is loaded and attach proper close/closed handlers for plan windows. Add IPC handler (reveal-in-folder) and preload/type bindings so the UI can reveal saved files in the system file browser. In the UI: PlanDashboard can temporarily reveal hidden tabs opened via links, adds a footer file-link button to show the saved file location and styles for it, and shows lastSavedAt. BudgetContext: treat new unsaved plans (no filePath) as having unsaved changes, set and persist lastSavedAt on successful saves, and migrate older budgets to populate lastSavedAt from updatedAt when missing. Update electron types to include the new APIs and the renderer hook.
Save and restore window bounds and active tab state across app windows and plan saves. Adds IPC handlers and preload APIs (getWindowBounds, setWindowSize, budgetLoaded(windowSize?)), plus types for these. Main process: track quitting to avoid reopening welcome window, optionally open DevTools via OPEN_DEVTOOLS, persist window state on close, and restore window bounds on load. Renderer: expose __saveWindowState in App, BudgetContext.saveBudget now records windowSize/activeTab and a new saveWindowState helper to save only window state; PlanDashboard gets a loading screen, remembers/restores active tab, and adds name/year editing UI; SetupWizard and WelcomeScreen include robustness fixes for file handling. FileStorage: maintain file-to-plan mappings, dedupe/merge recent entries when files are renamed/moved, and use plan IDs when updating recents. Adds npm script dev:inspector to launch with DevTools enabled.
Add a full PDF export flow: new ExportModal component and CSS, a pdfExport service, Electron IPC handlers (save-pdf-dialog, export-pdf) in main.ts and corresponding preload bridge methods. Add jspdf, jspdf-autotable and pdf-lib to package.json and update lockfile. Include implementation notes (app_updates/Implementations.md) and update APP_UPDATES.md. Also add a LoansManager component and related UI/context/type tweaks across PlanDashboard, PaySettingsModal, BudgetContext, fileStorage, demo data and tab management to support the new features.
Add optional loan insurance (PMI/GAP) with monthly amount and cutoff (amount or %), support loan term input in months or years, and persist insurance fields. Implement payment-split calculation (principal/interest/insurance), include insurance in monthly totals, and add an amortization schedule modal that builds a forward-looking payment schedule. Introduce a reusable ProgressBar component (with CSS and index export) and use it in LoansManager and SetupWizard; replace custom wizard progress bar. Update InputWithPrefix to support suffixes (and corresponding CSS). Large UI/styling refactor for LoansManager (layout, empty state, cards, responsive behavior, tables, icons/actions) and small fixes in BenefitsManager (prefix/suffix handling) and WelcomeScreen copy. Add helper functions/types (roundToCent, amortization row type, insurance eligibility) and validation for new fields. Misc: adjust setup wizard step/encryption flow and wire up new UI behaviors.
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.
No description provided.