chore(github): add detailed issue & PR templates, capitalize title prefixes
Adds five new issue templates (bug_report_detailed, feature_request_detailed, performance_regression, documentation, question) alongside the existing short forms, plus an optional detailed PR template under .github/PULL_REQUEST_TEMPLATE/ that contributors can opt into via the ?template=detailed.md URL. Existing templates keep their behavior; only title prefixes and prose-paren wording were capitalized for consistency.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Report incorrect behaviour in Wickra
|
||||
title: "[bug] "
|
||||
title: "[Bug] "
|
||||
labels: bug
|
||||
assignees: ""
|
||||
---
|
||||
@@ -32,7 +32,7 @@ assignees: ""
|
||||
- Wickra version:
|
||||
- Language / binding: <!-- Rust crate / Python / Node / WASM -->
|
||||
- OS and architecture:
|
||||
- Rust / Python / Node version (if relevant):
|
||||
- Rust / Python / Node version (If relevant):
|
||||
|
||||
## Additional context
|
||||
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
---
|
||||
name: Bug report (Detailed)
|
||||
about: Long-form bug report with environment matrix, minimal reproducer, and expected-vs-actual sections.
|
||||
title: "[Bug] <short description>"
|
||||
labels: ["bug", "triage"]
|
||||
assignees: []
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
<!-- One or two sentences. What did you expect, what happened instead? -->
|
||||
|
||||
## Affected binding
|
||||
|
||||
- [ ] Rust crate (`wickra`)
|
||||
- [ ] Python (`pip install wickra`)
|
||||
- [ ] Node.js (`npm install wickra`)
|
||||
- [ ] WebAssembly
|
||||
- [ ] Docs / examples only
|
||||
|
||||
## Environment
|
||||
|
||||
| Field | Value |
|
||||
| -------------------- | -------------------------------------- |
|
||||
| Wickra version | `e.g. 0.4.2` |
|
||||
| Binding version | `e.g. python 0.4.2 / node 0.4.2` |
|
||||
| OS / arch | `e.g. Windows 11 x86_64, Linux glibc` |
|
||||
| Rust toolchain | `rustc --version` (If building from source) |
|
||||
| Python / Node version | `python --version` / `node --version` |
|
||||
|
||||
## Minimal reproducer
|
||||
|
||||
<!--
|
||||
Paste the smallest possible code snippet that triggers the bug.
|
||||
If the input data matters, attach a CSV/JSON or paste a few rows inline.
|
||||
-->
|
||||
|
||||
```python
|
||||
# or rust / js
|
||||
import wickra as ta
|
||||
...
|
||||
```
|
||||
|
||||
## Actual output
|
||||
|
||||
```
|
||||
<paste stack trace, panic, wrong values, etc.>
|
||||
```
|
||||
|
||||
## Expected output
|
||||
|
||||
<!-- What should the indicator / API have returned? Reference a paper, TA-Lib, or another implementation if possible. -->
|
||||
|
||||
## Additional context
|
||||
|
||||
<!-- Logs, screenshots, links to related issues, anything else useful. -->
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
name: Documentation issue
|
||||
about: Something in the README, rustdoc, examples, or guides is wrong, missing, or confusing.
|
||||
title: "[Docs] <short description>"
|
||||
labels: ["documentation", "good first issue"]
|
||||
assignees: []
|
||||
---
|
||||
|
||||
## Where
|
||||
|
||||
<!-- Link or path. e.g. README.md#streaming-vs-batch, docs/guide/ema.md, rustdoc for `wickra::Ema::update`. -->
|
||||
|
||||
## What's wrong / missing
|
||||
|
||||
<!--
|
||||
- [ ] Incorrect information
|
||||
- [ ] Outdated for current API
|
||||
- [ ] Missing example
|
||||
- [ ] Unclear wording
|
||||
- [ ] Broken link / broken code block
|
||||
- [ ] Other
|
||||
-->
|
||||
|
||||
## Suggested change
|
||||
|
||||
<!--
|
||||
Paste the corrected wording, a clearer example, or a sketch of the
|
||||
section you'd like to see. PRs welcome.
|
||||
-->
|
||||
|
||||
## Additional context
|
||||
|
||||
<!-- Quote of the confusing passage, screenshot, etc. -->
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest a new indicator or capability for Wickra
|
||||
title: "[feature] "
|
||||
title: "[Feature] "
|
||||
labels: enhancement
|
||||
assignees: ""
|
||||
---
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
name: Feature request (Detailed)
|
||||
about: Long-form proposal with API sketch, scope checkboxes, prior-art links, and contribution intent.
|
||||
title: "[Feat] <short description>"
|
||||
labels: ["enhancement", "triage"]
|
||||
assignees: []
|
||||
---
|
||||
|
||||
## Problem / motivation
|
||||
|
||||
<!--
|
||||
What are you trying to do that Wickra doesn't support today?
|
||||
Describe the user-facing pain point, not the implementation.
|
||||
-->
|
||||
|
||||
## Proposed solution
|
||||
|
||||
<!--
|
||||
Sketch the API or behavior you'd like. A short code snippet of how
|
||||
you'd want to call it is worth a thousand words.
|
||||
-->
|
||||
|
||||
```python
|
||||
import wickra as ta
|
||||
|
||||
# proposed API
|
||||
ind = ta.SuperTrend(period=10, multiplier=3.0)
|
||||
ind.update(close, high, low)
|
||||
```
|
||||
|
||||
## Scope
|
||||
|
||||
- [ ] New indicator
|
||||
- [ ] New method on an existing indicator
|
||||
- [ ] New binding / platform target
|
||||
- [ ] Performance improvement
|
||||
- [ ] Ergonomics / API cleanup
|
||||
- [ ] Other (Explain below)
|
||||
|
||||
## Reference / prior art
|
||||
|
||||
<!--
|
||||
Link the paper, book chapter, TA-Lib function, TradingView Pine source,
|
||||
or other implementations you'd like Wickra to match.
|
||||
-->
|
||||
|
||||
## Alternatives considered
|
||||
|
||||
<!-- What workarounds exist today? Why aren't they enough? -->
|
||||
|
||||
## Willingness to contribute
|
||||
|
||||
- [ ] I'd like to implement this myself with guidance
|
||||
- [ ] I can help review / test
|
||||
- [ ] Requesting only — no bandwidth to implement
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
name: Performance regression
|
||||
about: Report a measurable slowdown, memory blowup, or throughput drop.
|
||||
title: "[Perf] <indicator / API> regressed in <version>"
|
||||
labels: ["performance", "regression", "triage"]
|
||||
assignees: []
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
<!-- Which code path got slower, by how much, and since when? -->
|
||||
|
||||
## Affected code path
|
||||
|
||||
- Indicator / API: `e.g. EMA.update`
|
||||
- Binding: `Rust / Python / Node / Wasm`
|
||||
- Hot loop or one-shot call?
|
||||
|
||||
## Versions compared
|
||||
|
||||
| Version | Throughput / latency / memory | Notes |
|
||||
| -------- | ----------------------------- | ----- |
|
||||
| `0.4.1` | `e.g. 12.3 ns/iter` | baseline (Good) |
|
||||
| `0.4.2` | `e.g. 38.7 ns/iter` | regressed |
|
||||
|
||||
## Benchmark / reproducer
|
||||
|
||||
<!--
|
||||
Paste the criterion / pytest-benchmark / hyperfine command and its output.
|
||||
For one-off measurements, include the timing snippet inline.
|
||||
-->
|
||||
|
||||
```bash
|
||||
cargo bench --bench ema -- --save-baseline new
|
||||
```
|
||||
|
||||
```
|
||||
ema/update time: [38.5 ns 38.7 ns 38.9 ns]
|
||||
change: [+213.4% +214.8% +216.1%] (p = 0.00 < 0.05)
|
||||
Performance has regressed.
|
||||
```
|
||||
|
||||
## Hardware / environment
|
||||
|
||||
| Field | Value |
|
||||
| ------------ | -------------------------------------- |
|
||||
| CPU | `e.g. Ryzen 9 7950X, AVX2 + AVX512` |
|
||||
| OS / arch | `e.g. Linux 6.8 x86_64` |
|
||||
| Toolchain | `rustc 1.x.y` |
|
||||
| Build flags | `RUSTFLAGS=...`, `--release`, profile |
|
||||
|
||||
## Suspected cause
|
||||
|
||||
<!-- Optional. Link the commit / PR if you've bisected it. -->
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: Question / usage help
|
||||
about: Ask how to do something with Wickra. For open-ended discussion prefer GitHub Discussions.
|
||||
title: "[Question] <short description>"
|
||||
labels: ["question"]
|
||||
assignees: []
|
||||
---
|
||||
|
||||
> [!NOTE]
|
||||
> If this is open-ended ("which indicator should I use for X?") please
|
||||
> use **Discussions** instead — issues are for actionable items.
|
||||
|
||||
## What are you trying to do?
|
||||
|
||||
<!-- The end goal, not the API call. -->
|
||||
|
||||
## What have you tried?
|
||||
|
||||
<!--
|
||||
Code, docs you've read, search terms that didn't help.
|
||||
Show that you've spent a few minutes before asking.
|
||||
-->
|
||||
|
||||
```python
|
||||
import wickra as ta
|
||||
...
|
||||
```
|
||||
|
||||
## What's confusing or blocking you?
|
||||
|
||||
<!-- Specific question. "Why does X return NaN for the first N points?" beats "doesn't work". -->
|
||||
|
||||
## Environment (Only if relevant)
|
||||
|
||||
- Wickra version: `e.g. 0.4.2`
|
||||
- Binding: `Rust / Python / Node / Wasm`
|
||||
@@ -23,9 +23,9 @@
|
||||
- [ ] `cargo test --workspace` passes.
|
||||
- [ ] New behaviour has tests; bug fixes have a regression test.
|
||||
- [ ] Public API changes are mirrored in the Python / Node / WASM bindings
|
||||
and their type stubs (if applicable).
|
||||
and their type stubs (If applicable).
|
||||
- [ ] The relevant page on the [project Wiki](https://github.com/kingchenc/wickra/wiki)
|
||||
and the `README.md` are updated (if applicable). Wiki edits go to a
|
||||
and the `README.md` are updated (If applicable). Wiki edits go to a
|
||||
separate repository: `https://github.com/kingchenc/wickra.wiki.git`.
|
||||
- [ ] An entry was added under `## [Unreleased]` in `CHANGELOG.md`.
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
<!--
|
||||
Thanks for contributing to Wickra!
|
||||
Please fill in the sections below. Delete any that don't apply.
|
||||
-->
|
||||
|
||||
## Summary
|
||||
|
||||
<!-- 1–3 sentences: what does this PR change and why? -->
|
||||
|
||||
## Type of change
|
||||
|
||||
- [ ] Bug fix (Non-breaking change which fixes an issue)
|
||||
- [ ] New feature (Non-breaking change which adds functionality)
|
||||
- [ ] Breaking change (Fix or feature that changes existing public API)
|
||||
- [ ] Performance improvement
|
||||
- [ ] Refactor (No functional change)
|
||||
- [ ] Documentation only
|
||||
- [ ] CI / build / tooling
|
||||
|
||||
## Affected surfaces
|
||||
|
||||
- [ ] Rust crate (`crates/wickra`)
|
||||
- [ ] Python binding (`bindings/python`)
|
||||
- [ ] Node.js binding (`bindings/node`)
|
||||
- [ ] WebAssembly binding (`bindings/wasm`)
|
||||
- [ ] Examples / docs
|
||||
|
||||
## Linked issues
|
||||
|
||||
<!-- "Closes #123", "Refs #456". One per line. -->
|
||||
|
||||
Closes #
|
||||
|
||||
## How was this tested?
|
||||
|
||||
<!--
|
||||
- Unit tests added / updated under `crates/*/tests/` or `bindings/*/tests/`
|
||||
- Property / fuzz tests touched? (Under `fuzz/`)
|
||||
- Manual repro steps, if applicable
|
||||
- Benchmarks run (Paste before/after if perf-sensitive)
|
||||
-->
|
||||
|
||||
## Numerical correctness (If you touched an indicator)
|
||||
|
||||
- [ ] Output matches an existing reference (TA-Lib, paper, prior Wickra release) within documented tolerance
|
||||
- [ ] Streaming `update()` matches batch / `from_slice` output on the same input
|
||||
- [ ] Edge cases covered: empty input, single point, NaN, leading warm-up window
|
||||
|
||||
## Performance impact (If applicable)
|
||||
|
||||
| Benchmark | Before | After | Δ |
|
||||
| --------- | ------ | ----- | - |
|
||||
| | | | |
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] `cargo fmt --all` and `cargo clippy --all-targets -- -D warnings` are clean
|
||||
- [ ] `cargo test --workspace` passes locally
|
||||
- [ ] Binding tests run (If a binding changed)
|
||||
- [ ] Public API changes are reflected in `CHANGELOG.md`
|
||||
- [ ] Public API changes are reflected in rustdoc / README / examples
|
||||
- [ ] No `todo*.md` or other local-only notes are staged
|
||||
- [ ] License header / `LICENSE` reference unchanged (PolyForm-NC-1.0.0)
|
||||
|
||||
## Notes for reviewers
|
||||
|
||||
<!-- Anything reviewers should look at first, known follow-ups, deliberately out-of-scope items. -->
|
||||
Reference in New Issue
Block a user