Conversation
- Split performance-metrics into portfolio-engine/ and fifo-engine/ groups; move existing pages (book-value, deposited-capital, mwrr, etc.) into their matching group - Add financial-theory pages detailing the FIFO lot engine: lot lifecycle, custody transfers, matching order, data quality (best-effort, not all-or-nothing), income allocation across lots - Add gallery screenshots to FIFO lot analysis docs (lot lifecycle, WAC/market price, return comparisons, income allocation, per-lot table) in user manual and financial theory - Update e2e gallery spec: FIFO screenshots use "all" time range to auto-center on lot history; dashboard/assets/forex keep 1 year - Re-run translation pipeline (it/fr/es) across new and moved pages; fix structural issues found (stray bold markers, mistranslated anchor fragments, missing stable heading ids for cross-file links) - Normalize LONG/SHORT lot-direction terminology across languages to match the untranslated backend enum and UI badge - Fix translate_docs.py run_check() crash on Doubleword backend (UnboundLocalError on API connectivity test)
Test suite (CI "Full Test Suite" workflow + local dev.py test): - deps: add missing xlrd (needed for legacy .xls preview; masked locally by a manually-installed copy, broke a clean CI venv) - ci(test-runner): copy the resume-cache to a non-dotfile path before upload-artifact (its glob was missing the dotfile) - fix(assets): disable the 4 edit-entry buttons in assets/[id] until assetInfo has loaded — buildEditData() raced ahead of the fetch, leaving the edit modal's display-name blank - test(e2e): update 12 transaction/asset specs for the DataTable row-actions kebab-menu refactor (0571284 replaced inline action-btn/data-action-id buttons with a kebab + ContextMenu); also fixes 3 specs that were vacuously passing against selectors that no longer exist in the DOM at all Docker System Info (Settings > About > Copy for Issue): - fix(system): populate app_version and backend/frontend deps when running from the Docker image — .git/, Pipfile, and frontend/package.json were never copied in, so each read failed silently via try/except - dev.py/Dockerfile: write and copy a frozen VERSION file at build/rebuild time, mirroring the existing requirements.txt generated-artifact pattern - system.py: parse_pipfile() regex now matches quoted package names ("borsa-italiana-scraping " was invisible in both environments); add deployment_mode ("docker"/"local") via /.dockerenv - About tab: add viewport, device pixel ratio, browser, theme, language and deployment mode (on-screen grid + copied text), full i18n (en/it/fr/es) - devWiki: file both this fix and the still-open, unrelated macOS entrypoint chown/GID-20 bug found while verifying (flagged, not fixed) About tab polish: - Platform/Browser: replace hard truncation with the same auto-scroll marquee used for asset/broker names; the wrapping flex item was missing `flex-1 min-w-0`, so it grew to fit the full un-wrapped text instead of ever overflowing - add an info tooltip explaining Device Pixel Ratio - fix websiteUrl to https://librefolio.github.io/LibreFolio/ Restores 21 unrelated i18n keys (assets/brokers/common/date/files/ settings/transactions/uploads namespaces) that a `git checkout` on the shared en/it/fr/es.json files accidentally discarded along with the About-tab keys while undoing an unrelated prettier reformat; cross-checked so every $_()/$t() call site in frontend/src resolves in all 4 languages.
Frontend refinements from manual mobile/desktop review of the FIFO lots panel and the dashboard performance chart, a seeded split transaction so the ◆ split marker is exercisable, and two test-infra fixes that unblock the full suite. PerformanceChart: - Sign-colored tooltip numbers (green >0 / red <0 / neutral =0) on period P&L and the 4 component rows, value and percentage sharing the same tint. - Mobile axis label: truncate long asset names and append the ticker/isin. - P&L column: append "(±pct)" next to the absolute net value only when it fits (accurate canvas measureText + wider desktop grid gutter), else abs-only. LotWacPriceChart (PMC / market price): - Legend shows only event types present in the analysis period; distinct split symbol; transfer marker recolored to a saturated blue so its double-arrow shape is visible. - Explicit mirrored buy/sell triangle symbols (up = buy, down = sell) so legend icons match the series (ECharts legend ignores symbolRotate). - Legend-only entries for lot states (open / partial / closed). - Auto y-axis (abs) ignores zero/null points to zoom on real movement. LotComparisonChart (selected-lots value/return): - Auto y-axis ignores zero/null points (value + return, abs/pct); "From 0" unchanged. - Mobile toggle layout: value/return on row 1, abs/% + auto/from-0 on row 2, right-aligned, so shared buttons don't shift between pages. LotGanttChart + echartsTooltipHelpers: - Custody tooltip can rise above the chart top (optional clampTop flag, default true) so the first lot's tooltip is no longer clipped/covering rows. Test data (populate_mock_data.py): - Inject a 2:1 forward SPLIT on the isolated eToro AAPL lot (AssetEvent type=SPLIT value=2 + linked ADJUSTMENT qty=+open_qty, cost_basis_override=0). Keeps FIFO ratio-rescale and portfolio increment consistent; open qty 5→10, cost preserved. Visible in Apple → Analizza Lotti → PMC as a ◆ marker. Test infrastructure: - test_version.py: isolate the pre-generated VERSION file (Docker build artifact) in the git-describe tests via a no_version_file fixture, and add coverage for the VERSION-file-takes-precedence branch. Tests no longer break when a VERSION file is present locally. - e2e/global-setup.ts: populate with --with-reports so sample BRIM import files are seeded; the brokers-detail "import files modal" test needs them and was failing on a clean checkout (empty modal). Validation: front check 0/0, i18n audit 1753/1753, front build ✓, and the full `./dev.py test all` suite green (14/14 categories); a targeted lots-analysis check confirms the doubled lot and the SPLIT event.
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.
Maxy commt with varius fix to arrive at release 1.0.0