Skip to content

Commit 3ed721a

Browse files
authored
chore(repo): add contribution and release workflow
* chore(repo): add contribution and release workflow * ci: make advisory lint non-blocking
1 parent fa2c141 commit 3ed721a

21 files changed

Lines changed: 869 additions & 26 deletions

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* @siddsachar
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: Bug report
2+
description: Report something broken in Thoth
3+
title: "bug: "
4+
labels: [bug, needs-triage]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for reporting a bug. Please do not include API keys or private data.
10+
- type: textarea
11+
id: summary
12+
attributes:
13+
label: What happened?
14+
description: Describe the bug and what you expected instead.
15+
validations:
16+
required: true
17+
- type: textarea
18+
id: steps
19+
attributes:
20+
label: Steps to reproduce
21+
placeholder: |
22+
1. Open ...
23+
2. Click ...
24+
3. See ...
25+
validations:
26+
required: true
27+
- type: input
28+
id: version
29+
attributes:
30+
label: Thoth version
31+
placeholder: v3.17.0
32+
- type: dropdown
33+
id: os
34+
attributes:
35+
label: Operating system
36+
options:
37+
- Windows
38+
- macOS Apple Silicon
39+
- macOS Intel
40+
- Linux
41+
- Other
42+
validations:
43+
required: true
44+
- type: textarea
45+
id: logs
46+
attributes:
47+
label: Relevant logs or screenshots
48+
description: Paste only the relevant part. Remove secrets first.
49+
render: text

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Security issue
4+
url: mailto:siddsachar@gmail.com
5+
about: Please report vulnerabilities privately by email.
6+
- name: Questions and ideas
7+
url: https://github.com/siddsachar/Thoth/discussions
8+
about: Use Discussions for open-ended questions, ideas, and help.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Feature request
2+
description: Suggest a feature or improvement
3+
title: "feat: "
4+
labels: [enhancement, needs-triage]
5+
body:
6+
- type: textarea
7+
id: problem
8+
attributes:
9+
label: Problem or use case
10+
description: What are you trying to do, and what is missing today?
11+
validations:
12+
required: true
13+
- type: textarea
14+
id: proposal
15+
attributes:
16+
label: Proposed solution
17+
description: What should Thoth do?
18+
validations:
19+
required: true
20+
- type: dropdown
21+
id: area
22+
attributes:
23+
label: Area
24+
options:
25+
- Agent / tools
26+
- Designer
27+
- Memory / knowledge graph
28+
- Channels
29+
- Installers / auto-update
30+
- UI / workflow
31+
- Documentation
32+
- Other
33+
- type: textarea
34+
id: alternatives
35+
attributes:
36+
label: Alternatives considered
37+
description: Any workaround or different design you considered?

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
## Summary
2+
3+
Describe what changed and why.
4+
5+
## Type of change
6+
7+
- [ ] Bug fix
8+
- [ ] Feature
9+
- [ ] Docs
10+
- [ ] Refactor
11+
- [ ] Test-only change
12+
- [ ] Build / CI / release tooling
13+
14+
## Risk area
15+
16+
- [ ] Agent / prompts / tools
17+
- [ ] Designer
18+
- [ ] Memory / knowledge graph
19+
- [ ] Channels / external integrations
20+
- [ ] Installers / auto-update
21+
- [ ] UI only
22+
- [ ] Other
23+
24+
## Testing
25+
26+
- [ ] I ran `python test_suite.py`
27+
- [ ] I added or updated tests
28+
- [ ] I manually tested the affected user flow
29+
- [ ] Not applicable, docs-only change
30+
31+
## Release notes
32+
33+
- [ ] User-visible change, release notes needed
34+
- [ ] Internal-only change, no release note needed
35+
36+
## Checklist
37+
38+
- [ ] Branch is based on latest `main`
39+
- [ ] No direct secrets, API keys, local paths, or private data included
40+
- [ ] The change is focused and does not include unrelated cleanup
41+
- [ ] Windows/macOS behavior considered where relevant

.github/dependabot.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: pip
4+
directory: /
5+
schedule:
6+
interval: weekly
7+
open-pull-requests-limit: 5
8+
labels:
9+
- dependencies
10+
- python
11+
12+
- package-ecosystem: github-actions
13+
directory: /
14+
schedule:
15+
interval: weekly
16+
open-pull-requests-limit: 5
17+
labels:
18+
- dependencies
19+
- github-actions

.github/labels.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
- name: bug
2+
color: d73a4a
3+
description: Something is not working
4+
- name: enhancement
5+
color: a2eeef
6+
description: New feature or request
7+
- name: feature
8+
color: 0e8a16
9+
description: User-facing feature work
10+
- name: feat
11+
color: 0e8a16
12+
description: Conventional commit alias for feature work
13+
- name: fix
14+
color: d73a4a
15+
description: Bug fix work
16+
- name: docs
17+
color: 0075ca
18+
description: Documentation changes
19+
- name: documentation
20+
color: 0075ca
21+
description: Documentation changes
22+
- name: chore
23+
color: cfd3d7
24+
description: Maintenance work
25+
- name: ci
26+
color: c5def5
27+
description: CI workflow changes
28+
- name: build
29+
color: c5def5
30+
description: Build or packaging changes
31+
- name: dependencies
32+
color: 0366d6
33+
description: Dependency updates
34+
- name: python
35+
color: 3572A5
36+
description: Python dependency or implementation work
37+
- name: github-actions
38+
color: 2088ff
39+
description: GitHub Actions dependency or workflow work
40+
- name: needs-triage
41+
color: ffb347
42+
description: Needs maintainer triage
43+
- name: good first issue
44+
color: 7057ff
45+
description: Good entry point for new contributors
46+
- name: help wanted
47+
color: 008672
48+
description: Maintainer welcomes external help
49+
- name: patch
50+
color: c2e0c6
51+
description: Patch release candidate
52+
- name: minor
53+
color: bfd4f2
54+
description: Minor release candidate
55+
- name: major
56+
color: b60205
57+
description: Major release candidate
58+
- name: breaking
59+
color: b60205
60+
description: Breaking change

.github/release-drafter.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name-template: "v$RESOLVED_VERSION"
2+
tag-template: "v$RESOLVED_VERSION"
3+
categories:
4+
- title: "Features"
5+
labels: [feature, enhancement, feat]
6+
- title: "Bug Fixes"
7+
labels: [bug, fix]
8+
- title: "Documentation"
9+
labels: [documentation, docs]
10+
- title: "Maintenance"
11+
labels: [chore, dependencies, ci, build]
12+
change-template: "- $TITLE @$AUTHOR (#$NUMBER)"
13+
change-title-escapes: "\\<*_&"
14+
version-resolver:
15+
major:
16+
labels: [major, breaking]
17+
minor:
18+
labels: [minor, feature, enhancement]
19+
patch:
20+
labels: [patch, bug, fix, docs, dependencies, chore]
21+
default: patch
22+
template: |
23+
## Changes
24+
25+
$CHANGES
26+
27+
## Installation
28+
29+
Download the Windows installer or macOS DMG from the assets below.
30+
31+
## Verification
32+
33+
Packaged builds are verified by the in-app updater using the SHA256 manifest
34+
embedded in the release body and by OS code-signature checks.

.github/workflows/ci.yml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: CI
2+
3+
on:
4+
pull_request:
5+
branches: [main]
6+
push:
7+
branches: [main]
8+
9+
permissions:
10+
contents: read
11+
12+
concurrency:
13+
group: ci-${{ github.ref }}
14+
cancel-in-progress: true
15+
16+
jobs:
17+
smoke:
18+
name: Smoke (${{ matrix.os }})
19+
runs-on: ${{ matrix.os }}
20+
timeout-minutes: 25
21+
strategy:
22+
fail-fast: false
23+
matrix:
24+
os: [windows-latest, macos-latest, ubuntu-latest]
25+
26+
steps:
27+
- uses: actions/checkout@v4
28+
29+
- uses: actions/setup-python@v5
30+
with:
31+
python-version: "3.12"
32+
cache: pip
33+
34+
- name: Install Python packages
35+
run: python -m pip install -r requirements.txt
36+
37+
- name: Compile Python files
38+
run: python -m compileall -q -x "(\\.git|\\.venv|dist|build|__pycache__)" .
39+
40+
full-test:
41+
name: Full regression suite
42+
runs-on: macos-latest
43+
timeout-minutes: 45
44+
needs: smoke
45+
46+
steps:
47+
- uses: actions/checkout@v4
48+
49+
- uses: actions/setup-python@v5
50+
with:
51+
python-version: "3.12"
52+
cache: pip
53+
54+
- name: Install Ollama
55+
run: |
56+
brew install ollama
57+
ollama serve &
58+
sleep 5
59+
ollama pull qwen3:1.7b
60+
61+
- name: Install Python packages
62+
run: python -m pip install -r requirements.txt
63+
64+
- name: Run test suite
65+
run: python test_suite.py

.github/workflows/labels.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Sync Labels
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches: [main]
7+
paths:
8+
- .github/labels.yml
9+
- .github/workflows/labels.yml
10+
11+
permissions:
12+
contents: read
13+
issues: write
14+
15+
jobs:
16+
sync:
17+
runs-on: ubuntu-latest
18+
steps:
19+
- uses: actions/checkout@v4
20+
- uses: EndBug/label-sync@v2
21+
with:
22+
config-file: .github/labels.yml
23+
delete-other-labels: false
24+
env:
25+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)