Skip to content

Releases: flowcool/ghostfolio-ibkr-sync

v2.0.3

Choose a tag to compare

@flowcool flowcool released this 01 Oct 09:38
dc920bf

Fixed

  • An unexpected error while processing one IBKR account no longer aborts the remaining accounts (#42): it is logged with its traceback and the account is marked failed, the other accounts are still synced, and the run still exits 1.

Internal

  • 66 more offline tests (orchestration, exit codes, config validation, Flex fetch retry/redaction), 165 in total (#41, #42).

Deployment: the NAS stays on :latest; pull + recreate the stack to pick this up.

v2.0.2

Choose a tag to compare

@flowcool flowcool released this 01 Oct 09:09
f1c463f

Fixed

  • A buy entered by hand in Ghostfolio (no IBKR# comment) is no longer re-imported from IBKR as a duplicate (#39). Same rule as manual sells: same quantity, ±2 days, any symbol sharing the ISIN, split fills matched by daily sum. Every skipped buy is reported as a WARNING with the trade ID and the manual entry; put IBKR#<tradeID> in the manual comment to silence it.

Internal

  • pytest regression suite (96 tests, now 106) run in CI before the image build (#37).

Deployment: the NAS stays on :latest; pull + recreate the stack to pick this up.

v2.0.1

Choose a tag to compare

@flowcool flowcool released this 01 Oct 08:48
97751b0

Fixed

  • Dividends of long-held positions that were partly sold inside the 365-day Flex window are no longer silently dropped (#35). The window-only "orphaned / net-negative" skip sets are removed; dedup is unchanged.

Internal

  • /review-pr now requires an A/B DRY_RUN on the NAS for sync-logic changes (#36).

Deployment: the NAS stays on :latest; pull + recreate the stack to pick this up.

v2.0.0

Choose a tag to compare

@flowcool flowcool released this 30 Sep 17:36
92024b7

⚠️ Breaking changes — act before upgrading

  1. Flex Query: add the Cash Transactions section (types Dividends, Payment In Lieu Of Dividends, Withholding Tax, level Detail; fields in the README). Dividends are now read from actual cash payments. Without the section the run logs an ERROR, imports trades but no dividends, and exits 1. The Change in Dividend Accruals section is no longer used. (#33)
  2. Mapping file is now required. A missing or invalid mapping file (explicit MAPPING_FILE or the default mapping.yaml) stops the run with exit 1 before any IBKR/Ghostfolio call. To run without mappings on purpose, set MAPPING_FILE="". Ticker values must be strings (quote numeric tickers). (#34)

Fixes

  • Phantom and duplicate dividends: IBKR marks accrual corrections, cancellations and payouts all with code Re; importing them created dividends that were never paid. Cash Transactions are used instead, and the withholding tax actually paid is recorded as the activity fee. Existing dividends are recognised by comment or by any dividend of the same symbol in the same account within 3 days. Phantoms imported by older versions are not removed: check your IBKR dividends by hand. (#33)
  • Existing activities read in one request with a count check: the run aborts before any write if the list is incomplete. (#30)
  • Restricted view guard: if Ghostfolio redacts values (Presenter View, or a token without portfolio:read:values), the run aborts instead of proposing a full re-import. (#31)
  • README: stale 365-day rationale fixed, troubleshooting for the new aborts. (#32)

Full diff: v1.2.0...v2.0.0

🤖 Generated with Claude Code

v1.2.0

Choose a tag to compare

@flowcool flowcool released this 30 Sep 14:40
f3d5abe

Version shown in logs (#28)

The image now carries its version (git describe --tags) and logs it:

ghostfolio-ibkr-sync version v1.2.0
... [INFO] Starting IBKR to Ghostfolio sync (version v1.2.0)

:latest (built from main) reports vX.Y.Z-N-g<sha> — the exact commit.

Image: ghcr.io/flowcool/ghostfolio-ibkr-sync:1.2.0

v1.1.0

Choose a tag to compare

@flowcool flowcool released this 30 Sep 14:36
f3a3801

Sells of positions held > 365 days are now synced (#27)

The IBKR Flex Query covers at most 365 days. Previously a sell whose buy predated the window was always dropped, even when Ghostfolio already held the buy — those sells had to be entered by hand.

Now, per security, the sync imports when Ghostfolio holding + not-yet-imported IBKR trades >= 0, and:

  • recognises sells already entered manually (same quantity, ±2 days, closest date; split fills matched by daily sum) — no duplicates;
  • does not guess when the position is held under another symbol with the same ISIN (WARNING with the mapping line to add);
  • logs a real quantity mismatch as ERROR.

Log levels

  • FX conversions (CASH) and window-only diagnostics: DEBUG.
  • Sells not imported because already reconciled: one INFO summary line.
  • A normal run emits no WARNING.

Dividend behaviour unchanged.

Image: ghcr.io/flowcool/ghostfolio-ibkr-sync:1.1.0 (also :latest)

v1.0.0

Choose a tag to compare

@flowcool flowcool released this 30 Sep 14:36
ceab54a

First tagged release of the flowcool fork. Baseline: Ghostfolio 3.x compatible sync (PRs #1–#26).

Latest changes:

  • #25 IBKR Flex token redacted from request errors and urllib3 DEBUG lines; transient network/DNS errors retried (10s, 30s).
  • #26 Unmapped ISIN logged on one self-contained, accurate line.

Image: ghcr.io/flowcool/ghostfolio-ibkr-sync:1.0.0