Skip to content

✨ rates: replace Coinbase with Coin Metrics - #83

Merged
DimaMishchenko merged 18 commits into
mainfrom
feature/optional-coinbase
Oct 15, 2026
Merged

DimaMishchenko merged 18 commits into
mainfrom
feature/optional-coinbase

Conversation

@DimaMishchenko

@DimaMishchenko DimaMishchenko commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

🔗 Related issue

None.

📝 Summary

  • Replace Coinbase with keyless Coin Metrics crypto prices and 24-hour history; retain Fawaz daily fallback. Remove obsolete provider modes, cache migrations and duplicate fixtures.
  • Bundle older Coin Metrics/Frankfurter history plus recent Fawaz monthly samples (~580 KB per resource bundle). Show source dates and approximation notices only when FX conversion requires them.
  • Update privacy, terms, source credits and bundled licences. Frankfurter documentation uses one provider link.
  • Refresh the archive only on the monthly GitHub Actions schedule. Skip unchanged data; otherwise open/update a PR. Never approve or merge automatically.

🧪 Validation

  • App/Watch and all feature harness builds pass. 269 affected native checks pass, with no failures/skips; 6 installed-app journeys pass, including live phone refresh/relaunch, bundled history and independent USD/EUR widgets.
  • All 22 crypto providers and full archive generation were verified with live data. 25 archive/publisher tests, strict Swift lint, localization and navigator checks pass.
  • Cleanup commit CI is queued/running. Old prerelease cache formats are intentionally not migrated.

Remaining gaps: Watch chart interaction, physical-device refresh scheduling, Siri voice and App Store package inspection.

37 screenshots: phone, iPad, widgets, Watch, source notices and live-data validation

New Details labels and full crypto-history hint

New Rates provenance, FX input and Observed timestamp

Actual EUR crypto daily-FX approximation

New source descriptions, attribution and licence links

crypto reference history all reference history

crypto reference history after restart all reference history

crypto reference history after restart

reference history all reference history

reference history

reference history after restart all reference history

reference history after restart

reference rates provenance

reference credits

bitcoin actual bundled all history from 2010

bitcoin actual bundled all history source dates

details three months source expanded

settings legal information

converter preserved amount after details

settings open source url

settings open source browser

widget cash medium czk 100 eur 4

app to widget 42 eur 84 usd 21 chf

home screen widget 42 eur 84 usd

converter shared widget amount

widget board medium eur 1 usd 2

widget history medium eur usd 2 plus 11 11

widget mental small eur multiply 2 usd

widget pocket small eur 5 usd 10

widget board medium eur 42 usd 84

widget live converted bitcoin eur day

widget live coin metrics day app terminated

watch live bitcoin

watch live converter

live phone refreshed coin metrics rates

live phone bitcoin usd complete day

live phone bitcoin all archive from 2010

live phone relaunch preserves day chart

* share the internal provider flag across phone, widgets, Watch and system actions
* use Fawaz daily rates and history with policy-aware cache migration and refresh cadence
* maintain both-mode native journeys and CI coverage
* scroll to exact source explanation text
* verify the details sheet dismisses before checking preserved state
* configure the History pair before checking seeded values
* reveal the installed Board after returning from the app
@DimaMishchenko
DimaMishchenko marked this pull request as ready for review October 9, 2026 21:11
* replace the compiler switch with one shared Boolean
* remove the separate CI configuration and environment mode
* keep provider coverage in existing parameterized tests
* add keyless crypto reference prices and widget history
* bundle licensed monthly history and preserve daily fallbacks
* update source notices, privacy terms and maintained validation
* include current mise and Node setup actions
* guard provider URL and history date construction
* preserve legacy encoding while satisfying strict Swift lint
* label reference observations accurately in every language
* validate visible quote provenance and bundled history navigation
@DimaMishchenko DimaMishchenko changed the title ✨ rates: make Coinbase an optional provider ✨ rates: replace Coinbase with Coin Metrics Oct 15, 2026
* remove the temporary intraday feature flag and its fixture branches
* retain automatic daily fallback across app and extensions
* validate converted crypto history and document visible FX inputs
* exercise the actual non-USD widget entry point
* check fresh historical FX metadata with the app closed
* document the phone USD reference and configured widget pairs
* align cache coverage with the minute-rounded query window
* verify fresh cache reuse and offline fallback after expiry
* align seeded history retrieval with its observation endpoint
* verify plotted day values before and after changing ranges
* give generated reference rows and intermediate values explicit types
* preserve fixture values while allowing every feature harness to build
* show FX approximation only when the selected pair needs it
* propose monthly history updates only for meaningful data changes
* validate real phone refresh, history and relaunch outcomes
* run history-source refresh as a read-only PR dry run
* reserve artifact publication and update PRs for main schedules
* fetch Frankfurter with bounded ordinary curl and preserve archives on errors
* expose history documentation in the generated project and ignore Python caches
* replace institution-specific terms and source directory with the Frankfurter link
* keep bundled notice aligned with repository documentation
* remove pull request and manual workflow triggers
* simplify scheduled job guards and update maintenance documentation
* use Coin Metrics and Fawaz without a provider-mode flag
* remove Coinbase decoding, obsolete observation labels and duplicate fixtures
* preserve fallback, FX normalization and current cache validation
@DimaMishchenko
DimaMishchenko merged commit 159b78e into main Oct 15, 2026
2 checks passed
@DimaMishchenko
DimaMishchenko deleted the feature/optional-coinbase branch October 15, 2026 14:51
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