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:
kingchenc
2026-05-24 02:33:01 +02:00
parent b5afc0a7e7
commit 7fdb132532
9 changed files with 306 additions and 5 deletions
+2 -2
View File
@@ -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. -->
+33
View File
@@ -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 -1
View File
@@ -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. -->
+36
View File
@@ -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`
+2 -2
View File
@@ -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`.
+67
View File
@@ -0,0 +1,67 @@
<!--
Thanks for contributing to Wickra!
Please fill in the sections below. Delete any that don't apply.
-->
## Summary
<!-- 13 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. -->