Repository navigation
Polish investment overview and unify trade entry - #172
Merged
31b4 merged 21 commits intoOct 20, 2026
Merged
Conversation
14 of 17 tasks
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.
Refs #171
Summary
Make investment figures easier to read and use one Buy/Sell editor for investment transactions. This shared UI/UX polish batch stays open for the user's next small changes and targets
epic/123-investment-rework.Changes
Show asset search/manual selection before category, pricing, trading currency and holding unit when creating investment accounts, so asset selection can populate those fields first. Account-management suite: 45 tests passed; client build/typecheck and lint passed.
Move cross-currency settlement acknowledgement to a highlighted final confirmation card below totals and metrics review, with a clear required-before-saving message. Allow the nonmutating preview before acknowledgement; actual saves still require the confirmed draft and matching preview, and settlement changes reset acknowledgement.
Open holding details from the full row, including price/value/return cells. Preserve keyboard-accessible name/arrow buttons and prevent duplicate opens when their clicks bubble. Overview suite: 17 tests passed; client build/typecheck and lint passed.
Keep the chart return/date caption in a shared, consistently spaced grid slot so hovering does not move the plot, including when the range caption wraps. Focused chart suites: 15 tests passed; client build/typecheck and lint passed.
Show a clearly labeled Gain on net invested ratio when the known gain and positive net invested support it. Preserve currency/privacy and separate chart/Today daily-linked returns.
Use a compact responsive summary strip, full-width portfolio chart and compact allocation grid, with matching skeletons. Remove requested explanatory copy and the duplicate privacy button.
Emphasize selected-day total gain/percentage in portfolio tooltips, with a readable date and secondary value. Preserve unknown amounts and hide unsupported ratios.
Implement the supplied HTML's holding popup 2a: centered 600px single-column panel, instrument avatar/name/metadata, compact position-value/gain summary, chart-first layout, six-cell position grid and readable source footer. Remove gain bars and duplicate cards. Stock/ETF display quantities have full-precision titles; crypto/tiny quantities keep their precision. Category/name/exchange come from saved/source data, not prototype guesses.
Preserve split-adjusted prices and all dated trade markers, average-cost reference, keyboard day selection and review history. Match the chart endpoint to a compatible timed current quote for display only; reject stale/other-currency sources and preserve original observations. Use light buy/red sell markers and compact range buttons.
Expose versioned linked legacy trade review through the canonical editor. Its guarded read supplies verified linked cash for draft prefill without changing stored investment facts or guessing missing execution/fee facts.
New investment buys/sells start on Investments. Dashboard income, expense and transfer creation only offer cash accounts, and saved investment defaults are ignored. Remove the automatic transfer-to-trade creation handoff. Existing linked investment trades still load the canonical pair/version for editing; ordinary cash transfers, splits and MCP review transfers retain their own flows.
Plot retained split-only-adjusted provider closes in holding charts, scaling pre-split execution markers to the same basis. Leave raw accounting/cache contracts and original trade facts unchanged; dividend-adjusted adjclose is not used. Show normal chart prices to cents and retain sub-unit precision.
Verification
Settlement-confirmation follow-up: trade-editor regression covers preview before acknowledgement, blocked saves, confirmation order and reset after settlement edits. All investment component tests, client production build/typecheck and zero-warning lint passed.
Latest cash-only Dashboard follow-up: all 38 transaction-list tests passed, including cash-only selectors, both saved investment default directions, canonical linked edits and failed pair reads. Client production build/typecheck and zero-warning lint passed.
Design 2a final head: all 538 client tests passed across 56 files, plus production build/typecheck and zero-warning lint. Coverage includes actual chart geometry, quote endpoint selection/currency/staleness, immutable history, privacy, trade history and shared modal behavior. Earlier checkpoint counts below are historical. The supplied design prototype was read as a reference; no prototype data or generated price curves were imported.
Latest gain-breakdown follow-up: 120 investment tests, build/typecheck and zero-warning lint passed. Regression coverage checks shared-scale gain/loss direction, separate remaining cost, missing data, known zero and privacy without color/width leaks.
Latest full client suite: 537 passed. Real SVG chart regressions cover both successive splits, reverse splits, invalid factors, dividend exclusion, marker alignment, retained original executions and price precision. Build/typecheck and lint passed. Read-only ten-year NVDA probe: 2,517 points; July 2021 raw ratio 0.2478 becomes display ratio 0.9911, June 2024 raw ratio 0.1007 becomes 1.0075. No financial records mutated. NVIDIA split FAQ, Yahoo adjusted-close distinction. Older counts below describe preceding checkpoints.
Latest holding-summary follow-up: 115 investment component tests, client production build/typecheck and zero-warning lint passed. Checks cover gain percentage eligibility and privacy masking, manual assets, missing prices and existing history/review actions. Full client count below describes the preceding shared-editor checkpoint.
Latest full client suite: 533 tests passed across 56 files. Handoff coverage includes purchases, sales, manual assets, saved defaults, preservation of explicit cash drafts, existing linked edits, failed pair reads, shared refresh and ordinary cash editing. Canonical editor suites retain precision, manual disposal, preview, failed-save/replay and privacy checks; obsolete duplicate transfer-entry tests were replaced by handoff tests.
Client production build/typecheck and lint with zero warnings passed. Existing bundle-size advisory remains.
Earlier linked-cash/read follow-up: 36 real Worker/D1 trade tests passed, including nonmutating read/preview, same-purchase confirmation preserving cash/units/IDs and stale-version rejection. All workspace/integration types passed. The subsequent handoff changes are client-only and reuse that writer.
Local preview serves the updated shared editor with the existing database. No schema migration, financial data reset or automatic confirmation of user facts. Browser visual automation remains unavailable under the existing local-URL policy; desktop/mobile visual review remains with the user.
No merge is requested. Final epic-to-main PR #147 remains separate.