94cab88278
The repository had no contributor-facing documentation or automation config. Add the standard set: - CHANGELOG.md (Keep a Changelog format, 0.1.0-0.1.4 plus Unreleased) - CONTRIBUTING.md (build/test steps, change standards, PolyForm-NC note) - SECURITY.md (private reporting, supported versions) - CODE_OF_CONDUCT.md (Contributor Covenant 2.1) - .github/ISSUE_TEMPLATE (bug report, feature request, config) - .github/PULL_REQUEST_TEMPLATE.md - .github/dependabot.yml (cargo, npm, pip, github-actions — the last keeps the D1 SHA pins current) - .github/CODEOWNERS
3.6 KiB
3.6 KiB
Changelog
All notable changes to Wickra are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
TickAggregator::with_gap_fill— opt-in mode that emits a flat placeholder candle for every empty bucket between two ticks, keeping the candle series evenly spaced for downstream indicators.- CSV reader: a leading UTF-8 byte-order mark is stripped, fields are trimmed, and the header is validated against the required OHLCV columns.
- CI: an
msrvjob that builds and tests the workspace on Rust 1.75 and the node binding on Rust 1.77. - Community health files:
CONTRIBUTING.md,SECURITY.md,CODE_OF_CONDUCT.md, issue / pull-request templates,CODEOWNERS, and a Dependabot configuration.
Changed
TickAggregator::pushreturnsResult<Vec<Candle>>(wasResult<Option<Candle>>) so a single tick can yield a closed bar plus gap fillers.Resampler::pushreturnsResult<Option<Candle>>: a candle in a bucket earlier than the open bar is now rejected as out of order.- Aggregated candles are finalised through the validating
Candle::new, so a volume that overflows to a non-finite value is surfaced as an error instead of producing a poisoned candle. - All GitHub Actions are pinned to commit SHAs; the four publish jobs run in a
protected
releaseenvironment.
Fixed
Timeframe::floorno longer overflows for timestamps neari64::MIN.- The aggregator rejects same-bucket ticks that arrive out of order instead of silently overwriting the bar's close with a stale price.
- The Binance live stream reconnects with exponential backoff, skips non-kline frames, applies a read timeout and message-size limits, and tracks a closed flag.
- Example scripts:
live_trading.pyskips non-kline frames and validates the symbol/interval;backtest.pyandmulti_timeframe.pyreport clear errors for malformed CSV input.
0.1.4 - 2026-05-21
Added
- GitHub Release runs now attach every built artefact (wheels, sdist, native
Node binaries, npm-pack tarballs, cargo
.cratefiles) to the tag's release page.
0.1.3 - 2026-05-21
Fixed
- npm package ships the napi-generated loader and is built with
--platformso the per-platform binary is resolved correctly.
0.1.2 - 2026-05-21
Fixed
- Release pipeline: per-platform idempotent npm publishing with a spam-filter
retry, and committed
npm/<platform>/package templates.
0.1.1 - 2026-05-21
Fixed
- Node publish step and coordinated version bump across all bindings.
0.1.0 - 2026-05-21
Added
- Initial release: a streaming-first technical-analysis library with 25 indicators (SMA, EMA, WMA, DEMA, TEMA, HMA, KAMA, RSI, MACD, ROC, Stochastic, CCI, Williams %R, ADX, MFI, TRIX, Aroon, Awesome Oscillator, Bollinger Bands, ATR, Keltner Channels, Donchian Channels, Parabolic SAR, OBV, VWAP).
- Rust core (
wickra-core), umbrella crate (wickra), and a data layer (wickra-data) with a CSV reader, tick aggregator, resampler, and an optional Binance live feed. - Bindings for Python, Node.js, and WebAssembly.