Add community scaffolding: CONTRIBUTING, SECURITY, issue templates, PR template
- CONTRIBUTING.md: dev-branch workflow, uv setup, test/lint commands - SECURITY.md: private disclosure to holden@arch.fyi - .github/ISSUE_TEMPLATE/bug_report.yml: structured form with image tag, versions, logs - .github/ISSUE_TEMPLATE/feature_request.yml: problem/solution/alternatives form - .github/PULL_REQUEST_TEMPLATE.md: checklist enforcing dev branch + passing CI - pyproject.toml: add Changelog and Documentation URLs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,81 @@
|
|||||||
|
name: Bug Report
|
||||||
|
description: Something isn't working as expected
|
||||||
|
title: "[Bug]: "
|
||||||
|
labels: ["bug"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Before filing, check the [Troubleshooting wiki](https://github.com/sudolulo/winnow/wiki/Troubleshooting) and [existing issues](https://github.com/sudolulo/winnow/issues).
|
||||||
|
|
||||||
|
- type: dropdown
|
||||||
|
id: image-tag
|
||||||
|
attributes:
|
||||||
|
label: Image tag
|
||||||
|
description: Which winnow image are you running?
|
||||||
|
options:
|
||||||
|
- ":latest (NVIDIA CUDA)"
|
||||||
|
- ":rocm (AMD)"
|
||||||
|
- ":intel (Intel Arc / iGPU)"
|
||||||
|
- ":cpu (CPU only)"
|
||||||
|
- "Local install (uv)"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: version
|
||||||
|
attributes:
|
||||||
|
label: winnow version
|
||||||
|
description: Output of `docker inspect ghcr.io/sudolulo/winnow:<tag> | grep org.opencontainers.image.version` or the version in `pyproject.toml`.
|
||||||
|
placeholder: "0.2.13"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: immich-version
|
||||||
|
attributes:
|
||||||
|
label: Immich version
|
||||||
|
placeholder: "v1.110.0"
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: frigate-version
|
||||||
|
attributes:
|
||||||
|
label: Frigate version
|
||||||
|
placeholder: "0.16.0"
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: What happened?
|
||||||
|
description: A clear description of the bug.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: expected
|
||||||
|
attributes:
|
||||||
|
label: What did you expect to happen?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: Relevant log output
|
||||||
|
description: Paste logs from `docker logs winnow` or `winnow.log`. Set `VERBOSE=true` for more detail.
|
||||||
|
render: text
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: compose
|
||||||
|
attributes:
|
||||||
|
label: Relevant compose / env config
|
||||||
|
description: Paste your `services.winnow` block. Redact your API key.
|
||||||
|
render: yaml
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
name: Feature Request
|
||||||
|
description: Suggest an improvement or new capability
|
||||||
|
title: "[Feature]: "
|
||||||
|
labels: ["enhancement"]
|
||||||
|
body:
|
||||||
|
- type: textarea
|
||||||
|
id: problem
|
||||||
|
attributes:
|
||||||
|
label: What problem does this solve?
|
||||||
|
description: Describe the use case or limitation you're running into.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: solution
|
||||||
|
attributes:
|
||||||
|
label: Proposed solution
|
||||||
|
description: What would you like winnow to do? New env var, different behaviour, etc.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: alternatives
|
||||||
|
attributes:
|
||||||
|
label: Alternatives considered
|
||||||
|
description: Any workarounds you've tried or other approaches you considered.
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: Checklist
|
||||||
|
options:
|
||||||
|
- label: I checked existing issues and this hasn't been requested before.
|
||||||
|
required: true
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
## What does this PR do?
|
||||||
|
|
||||||
|
<!-- One or two sentences. -->
|
||||||
|
|
||||||
|
## Why?
|
||||||
|
|
||||||
|
<!-- Link to the issue this addresses, or explain the motivation if there isn't one. -->
|
||||||
|
|
||||||
|
Closes #
|
||||||
|
|
||||||
|
## Changes
|
||||||
|
|
||||||
|
<!-- Bullet list of the meaningful changes. -->
|
||||||
|
|
||||||
|
-
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
<!-- How did you verify this works? New tests added? Manual test steps? -->
|
||||||
|
|
||||||
|
## Checklist
|
||||||
|
|
||||||
|
- [ ] Targets the `dev` branch (not `main`)
|
||||||
|
- [ ] `uv run pytest` passes
|
||||||
|
- [ ] `uv run ruff check` passes
|
||||||
|
- [ ] `CHANGELOG.md` `[Unreleased]` section updated
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
# Contributing to winnow
|
||||||
|
|
||||||
|
Bug reports, feature requests, and pull requests are all welcome.
|
||||||
|
|
||||||
|
## Before You Start
|
||||||
|
|
||||||
|
- Check [existing issues](https://github.com/sudolulo/winnow/issues) to avoid duplicates.
|
||||||
|
- For large changes, open an issue first to discuss the approach.
|
||||||
|
- All PRs target the `dev` branch — never `main` directly.
|
||||||
|
|
||||||
|
## Development Setup
|
||||||
|
|
||||||
|
Requires Python 3.13+ and [uv](https://astral.sh/uv).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/sudolulo/winnow.git
|
||||||
|
cd winnow
|
||||||
|
git checkout dev
|
||||||
|
uv sync
|
||||||
|
```
|
||||||
|
|
||||||
|
## Running Tests and Lint
|
||||||
|
|
||||||
|
```bash
|
||||||
|
uv run pytest # run the test suite
|
||||||
|
uv run ruff check # lint
|
||||||
|
uv run ruff check --fix # auto-fix lint issues
|
||||||
|
```
|
||||||
|
|
||||||
|
CI runs both on every push and PR to `main` and `dev`. PRs must pass before merging.
|
||||||
|
|
||||||
|
## Pull Request Guidelines
|
||||||
|
|
||||||
|
- One logical change per PR.
|
||||||
|
- If you add behaviour, add a test for it.
|
||||||
|
- Keep the `CHANGELOG.md` entry in the `[Unreleased]` section updated.
|
||||||
|
- Commit messages should be plain English describing what changed and why.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
By submitting a contribution you agree that your work will be released under the project's [AGPLv3+ license](LICENSE).
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Supported Versions
|
||||||
|
|
||||||
|
Only the latest release is supported with security fixes.
|
||||||
|
|
||||||
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
|
Please do **not** open a public GitHub issue for security vulnerabilities.
|
||||||
|
|
||||||
|
Email **holden@arch.fyi** with:
|
||||||
|
|
||||||
|
- A description of the vulnerability and its potential impact
|
||||||
|
- Steps to reproduce or a proof of concept
|
||||||
|
- Any suggested fix, if you have one
|
||||||
|
|
||||||
|
You will receive an acknowledgement within 48 hours. If the vulnerability is confirmed, a fix will be released as soon as possible and you will be credited in the changelog unless you prefer otherwise.
|
||||||
@@ -37,6 +37,8 @@ winnow = "winnow.cli:main"
|
|||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
Repository = "https://github.com/sudolulo/winnow"
|
Repository = "https://github.com/sudolulo/winnow"
|
||||||
|
Changelog = "https://github.com/sudolulo/winnow/blob/main/CHANGELOG.md"
|
||||||
|
Documentation = "https://github.com/sudolulo/winnow/wiki"
|
||||||
|
|
||||||
[tool.uv]
|
[tool.uv]
|
||||||
conflicts = [
|
conflicts = [
|
||||||
|
|||||||
Reference in New Issue
Block a user