Skip to content

Maxy PR for release 1.0.0 - #9

Merged
Alfystar merged 6 commits into
mainfrom
dev
Jul 20, 2026
Merged

Maxy PR for release 1.0.0#9
Alfystar merged 6 commits into
mainfrom
dev

Conversation

@Alfystar

Copy link
Copy Markdown
Collaborator

Maxy commt with varius fix to arrive at release 1.0.0

Alfystar added 6 commits July 20, 2026 12:23
- 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.
@Alfystar
Alfystar merged commit d0b4ea1 into main Jul 20, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant