88 Commits

Author SHA1 Message Date
releaser 93bbcada5d chore(release): prepare for v0.3.4 (#146)
Release / release (push) Successful in 51s
presenter / vulnerabilities (push) Successful in 1m36s
presenter / test (push) Successful in 3m25s
pre-commit / pre-commit (push) Successful in 6m5s
## [0.3.4] - 2026-03-24

### 🐛 Bug Fixes

- *(deps)* Update module github.com/99designs/gqlgen to v0.17.88 (#138)
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.89 (#145)

### ⚙️ Miscellaneous Tasks

- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.0 (#132)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.1 (#134)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.2 (#136)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.3 (#139)
- *(deps)* Update pre-commit hook gitleaks/gitleaks to v8.30.1 (#141)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.4 (#143)

<!-- generated by git-cliff -->

---

**Note:** Please use **Squash Merge** when merging this PR.

Reviewed-on: #146
Co-authored-by: Unbound Releaser <releaser@unbound.se>
Co-committed-by: Unbound Releaser <releaser@unbound.se>
2026-04-02 09:14:42 +00:00
renovate 542830fc5d fix(deps): update module github.com/99designs/gqlgen to v0.17.89 (#145)
presenter / test (push) Successful in 2m11s
presenter / vulnerabilities (push) Successful in 1m47s
Release / release (push) Successful in 1m15s
pre-commit / pre-commit (push) Successful in 5m48s
2026-03-24 19:18:59 +00:00
renovate 8065c26baa chore(deps): update pre-commit hook golangci/golangci-lint to v2.11.4 (#143)
presenter / test (push) Successful in 2m12s
presenter / vulnerabilities (push) Successful in 1m37s
Release / release (push) Successful in 58s
pre-commit / pre-commit (push) Successful in 6m15s
2026-03-22 19:27:17 +00:00
renovate 357396a134 chore(deps): update pre-commit hook gitleaks/gitleaks to v8.30.1 (#141)
presenter / vulnerabilities (push) Successful in 1m40s
Release / release (push) Successful in 1m21s
presenter / test (push) Successful in 2m50s
pre-commit / pre-commit (push) Successful in 6m16s
2026-03-12 16:24:51 +00:00
renovate ff13d824a7 chore(deps): update pre-commit hook golangci/golangci-lint to v2.11.3 (#139)
Release / release (push) Successful in 1m1s
presenter / vulnerabilities (push) Successful in 2m34s
presenter / test (push) Successful in 3m4s
pre-commit / pre-commit (push) Successful in 7m25s
2026-03-10 11:28:27 +00:00
renovate 2be6ebe6a5 fix(deps): update module github.com/99designs/gqlgen to v0.17.88 (#138)
Release / release (push) Failing after 1m9s
presenter / vulnerabilities (push) Successful in 1m57s
presenter / test (push) Successful in 2m38s
pre-commit / pre-commit (push) Successful in 4m49s
2026-03-09 01:40:27 +00:00
renovate a3e5a710c2 chore(deps): update pre-commit hook golangci/golangci-lint to v2.11.2 (#136)
Release / release (push) Successful in 1m0s
presenter / vulnerabilities (push) Successful in 1m27s
presenter / test (push) Successful in 2m2s
pre-commit / pre-commit (push) Successful in 6m4s
2026-03-07 22:41:33 +00:00
renovate 9316724b23 chore(deps): update pre-commit hook golangci/golangci-lint to v2.11.1 (#134)
Release / release (push) Successful in 1m5s
presenter / test (push) Successful in 2m26s
presenter / vulnerabilities (push) Successful in 1m50s
pre-commit / pre-commit (push) Successful in 6m27s
2026-03-06 15:43:43 +00:00
renovate 58aa0d583c chore(deps): update pre-commit hook golangci/golangci-lint to v2.11.0 (#132)
presenter / vulnerabilities (push) Successful in 2m18s
Release / release (push) Successful in 1m41s
presenter / test (push) Successful in 3m45s
pre-commit / pre-commit (push) Successful in 6m17s
2026-03-06 14:18:25 +00:00
argoyle ff78b7d6b3 Merge pull request 'chore(release): prepare for v0.3.3' (#130) from next-release into main
presenter / vulnerabilities (push) Successful in 2m36s
presenter / test (push) Successful in 3m27s
Release / release (push) Successful in 45s
pre-commit / pre-commit (push) Successful in 5m28s
Reviewed-on: #130
2026-02-20 15:00:08 +00:00
releaser 5e182c2e80 chore(release): prepare for v0.3.3
presenter / vulnerabilities (pull_request) Successful in 2m36s
presenter / test (pull_request) Successful in 4m1s
pre-commit / pre-commit (pull_request) Successful in 7m13s
2026-02-20 14:50:39 +00:00
releaser 29f9f24c48 chore(release): prepare for v0.3.3 2026-02-20 14:50:36 +00:00
argoyle 1216372365 Merge pull request 'fix(deps): update module github.com/99designs/gqlgen to v0.17.87' (#129) from renovate/github.com-99designs-gqlgen-0.x into main
Release / release (push) Successful in 2m31s
presenter / vulnerabilities (push) Successful in 5m6s
pre-commit / pre-commit (push) Successful in 7m51s
presenter / test (push) Successful in 6m12s
Reviewed-on: #129
2026-02-20 14:48:53 +00:00
renovate 0454c26db9 fix(deps): update module github.com/99designs/gqlgen to v0.17.87
presenter / vulnerabilities (pull_request) Successful in 6m57s
presenter / test (pull_request) Successful in 8m9s
pre-commit / pre-commit (pull_request) Successful in 11m7s
2026-02-19 19:39:17 +01:00
argoyle 9bb5f4f80a Merge pull request 'chore(release): prepare for v0.3.2' (#128) from next-release into main
Release / release (push) Successful in 2m23s
presenter / test (push) Successful in 4m9s
presenter / vulnerabilities (push) Successful in 4m0s
pre-commit / pre-commit (push) Successful in 8m8s
Reviewed-on: #128
2026-02-19 16:42:43 +00:00
releaser 3f86d5c1a0 chore(release): prepare for v0.3.2
presenter / vulnerabilities (pull_request) Successful in 3m55s
presenter / test (pull_request) Successful in 5m2s
pre-commit / pre-commit (pull_request) Successful in 12m27s
2026-02-19 14:16:31 +00:00
releaser 6eff1ee4de chore(release): prepare for v0.3.2 2026-02-19 14:16:17 +00:00
renovate 0fceea7c94 fix(deps): update module github.com/vektah/gqlparser/v2 to v2.5.32 (#127)
Release / release (push) Successful in 1m41s
presenter / test (push) Successful in 3m1s
presenter / vulnerabilities (push) Successful in 4m29s
pre-commit / pre-commit (push) Successful in 10m12s
2026-02-19 14:14:29 +00:00
renovate 003df983a1 chore(deps): update pre-commit hook golangci/golangci-lint to v2.10.1 (#126)
Release / release (push) Failing after 2m0s
presenter / vulnerabilities (push) Successful in 3m41s
presenter / test (push) Successful in 6m32s
pre-commit / pre-commit (push) Successful in 7m31s
2026-02-17 17:35:16 +00:00
renovate 3ff236573e chore(deps): update pre-commit hook golangci/golangci-lint to v2.9.0 (#125)
presenter / vulnerabilities (push) Successful in 1m29s
Release / release (push) Successful in 1m35s
presenter / test (push) Successful in 2m51s
pre-commit / pre-commit (push) Successful in 10m4s
2026-02-11 13:15:07 +00:00
argoyle 8f0e645964 Merge pull request 'ci: add code coverage integration' (#123) from ci-coverage-integration into main
Release / release (push) Failing after 2m58s
presenter / vulnerabilities (push) Successful in 6m12s
presenter / test (push) Successful in 6m17s
pre-commit / pre-commit (push) Successful in 8m40s
Reviewed-on: #123
2026-01-28 12:37:56 +00:00
argoyle 30851a48a6 ci: add code coverage integration
presenter / vulnerabilities (pull_request) Successful in 2m43s
presenter / test (pull_request) Successful in 4m1s
pre-commit / pre-commit (pull_request) Successful in 5m9s
Add go-test-coverage for coverage threshold enforcement. Coverage data
is uploaded as artifacts on main branch and compared against baseline
in PRs using shell script that gracefully handles first run without
baseline. PR comments show coverage percentage.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 13:03:07 +01:00
argoyle ac19c57724 Merge pull request 'chore: remove GitLab CI configuration' (#122) from remove-gitlab-ci into main
Release / release (push) Successful in 1m21s
presenter / test (push) Successful in 1m32s
presenter / vulnerabilities (push) Successful in 5m1s
pre-commit / pre-commit (push) Successful in 16m9s
Reviewed-on: #122
2026-01-19 06:52:41 +00:00
argoyle fb4a1b53c5 chore: remove GitLab CI configuration
presenter / test (pull_request) Successful in 2m26s
pre-commit / pre-commit (pull_request) Successful in 5m5s
presenter / vulnerabilities (pull_request) Successful in 6m27s
2026-01-18 20:36:15 +01:00
renovate f6924a3d10 chore(deps): update golang docker tag to v1.25.6 (#121)
presenter / test (push) Successful in 2m7s
presenter / vulnerabilities (push) Successful in 2m8s
pre-commit / pre-commit (push) Successful in 5m1s
Release / release (push) Successful in 7m13s
2026-01-15 23:44:04 +00:00
renovate 1f6675f619 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.24.0 (#120)
presenter / vulnerabilities (push) Successful in 2m28s
Release / release (push) Successful in 2m3s
presenter / test (push) Successful in 3m22s
pre-commit / pre-commit (push) Successful in 10m33s
2026-01-13 21:30:52 +00:00
renovate d7c9a791d5 chore(deps): update golang:1.25.5 docker digest to 3a01526 (#119)
presenter / test (push) Successful in 3m7s
presenter / vulnerabilities (push) Successful in 3m9s
Release / release (push) Successful in 2m56s
pre-commit / pre-commit (push) Successful in 7m54s
2026-01-13 06:21:47 +00:00
renovate e33987441a fix(deps): update module github.com/99designs/gqlgen to v0.17.86 (#117)
Release / release (push) Successful in 2m2s
presenter / vulnerabilities (push) Successful in 5m26s
presenter / test (push) Successful in 5m8s
pre-commit / pre-commit (push) Successful in 7m19s
2026-01-12 02:20:26 +00:00
argoyle 5b06a5e584 Merge pull request 'chore(release): prepare for v0.3.1' (#115) from next-release into main
Release / release (push) Successful in 29s
presenter / test (push) Successful in 1m38s
presenter / vulnerabilities (push) Successful in 1m38s
pre-commit / pre-commit (push) Successful in 4m32s
Reviewed-on: #115
2026-01-09 14:04:12 +00:00
releaser 728ef4f8ae chore(release): prepare for v0.3.1
presenter / test (pull_request) Successful in 7m5s
presenter / vulnerabilities (pull_request) Successful in 7m25s
pre-commit / pre-commit (pull_request) Successful in 8m31s
2026-01-09 13:52:15 +00:00
releaser ebefb9209e chore(release): prepare for v0.3.1 2026-01-09 13:52:08 +00:00
argoyle 579faa4f12 Merge pull request 'chore: migrate module path to gitea.unbound.se' (#116) from migrate-to-gitea into main
presenter / test (push) Successful in 1m11s
Release / release (push) Successful in 2m20s
presenter / vulnerabilities (push) Successful in 4m14s
pre-commit / pre-commit (push) Successful in 11m40s
Reviewed-on: #116
2026-01-09 13:49:48 +00:00
argoyle fad40030e1 chore: migrate module path to gitea.unbound.se
presenter / test (pull_request) Successful in 2m16s
presenter / vulnerabilities (pull_request) Successful in 3m29s
pre-commit / pre-commit (pull_request) Successful in 6m51s
Update module path from git.unbound.se to gitea.unbound.se for Go module
discovery over HTTPS.
2026-01-09 14:30:56 +01:00
releaser c317235773 chore(release): prepare for v0.3.1
presenter / vulnerabilities (pull_request) Successful in 1m18s
presenter / test (pull_request) Successful in 1m28s
pre-commit / pre-commit (pull_request) Successful in 3m50s
2026-01-09 09:39:08 +00:00
releaser a5b6a3f479 chore(release): prepare for v0.3.1 2026-01-09 09:39:03 +00:00
argoyle 11e134b08f Merge pull request 'chore(deps): update actions/setup-python action to v6' (#114) from renovate/actions-setup-python-6.x into main
presenter / vulnerabilities (push) Successful in 1m4s
presenter / test (push) Successful in 1m46s
Release / release (push) Successful in 1m3s
pre-commit / pre-commit (push) Successful in 4m46s
Reviewed-on: #114
2026-01-09 09:37:28 +00:00
renovate 419a82224d chore(deps): update actions/setup-python action to v6
presenter / vulnerabilities (pull_request) Successful in 1m33s
presenter / test (pull_request) Successful in 4m20s
pre-commit / pre-commit (pull_request) Successful in 6m38s
2026-01-09 09:28:05 +00:00
argoyle ab263ad2be Merge pull request 'chore(release): prepare for v0.3.0' (#99) from next-release into main
Release / release (push) Successful in 1m57s
presenter / test (push) Successful in 5m54s
presenter / vulnerabilities (push) Successful in 6m3s
pre-commit / pre-commit (push) Successful in 9m19s
Reviewed-on: #99
2026-01-09 09:01:56 +00:00
releaser e53a54e58c chore(release): prepare for v0.3.0 2026-01-09 09:00:28 +00:00
releaser 018444c022 chore(release): prepare for v0.3.0 2026-01-09 09:00:20 +00:00
argoyle 4a4fe3d5c8 Merge pull request 'ci: add pre-commit and release workflows' (#112) from add-workflows into main
Release / release (push) Successful in 1m29s
presenter / test (push) Successful in 3m6s
presenter / vulnerabilities (push) Successful in 3m16s
pre-commit / pre-commit (push) Has been cancelled
Reviewed-on: #112
2026-01-09 08:58:03 +00:00
argoyle 65aba3a47c ci: add pre-commit and release workflows
presenter / test (pull_request) Successful in 2m26s
presenter / vulnerabilities (pull_request) Successful in 2m26s
pre-commit / pre-commit (pull_request) Successful in 7m54s
2026-01-09 09:48:25 +01:00
argoyle e565f7b147 Merge pull request 'fix: update module path from gitlab to git.unbound.se' (#113) from update-module-path-git-unbound into main
presenter / vulnerabilities (push) Successful in 3m12s
presenter / test (push) Successful in 3m25s
Reviewed-on: #113
2026-01-09 08:47:37 +00:00
argoyle 44464c0a85 fix: update module path from gitlab to git.unbound.se
presenter / test (pull_request) Successful in 2m3s
presenter / vulnerabilities (pull_request) Successful in 2m28s
Change the module path in various files to reflect the new 
repository location on git.unbound.se. Update imports in 
CLAUDE.md, error_test.go, and presenter_test.go to ensure 
compatibility with the updated module path. Remove outdated 
CI configuration in .pre-commit-config.yaml to streamline 
the setup. This enhances consistency and aligns the project 
with its new hosting platform.
2026-01-09 09:26:03 +01:00
argoyle 45c18ccef6 Merge pull request 'chore(deps): update pre-commit hook golangci/golangci-lint to v2.8.0' (#111) from renovate/golangci-golangci-lint-2.x into main
presenter / test (push) Successful in 1m58s
presenter / vulnerabilities (push) Successful in 2m0s
Reviewed-on: #111
2026-01-09 04:13:14 +00:00
renovate 61f079354d chore(deps): update pre-commit hook golangci/golangci-lint to v2.8.0
presenter / test (pull_request) Successful in 5m26s
presenter / vulnerabilities (pull_request) Successful in 5m55s
2026-01-08 21:23:40 +00:00
argoyle b19d1fa250 Merge pull request 'chore(deps): update actions/setup-go action to v6' (#110) from renovate/actions-setup-go-6.x into main
presenter / vulnerabilities (push) Successful in 3m4s
presenter / test (push) Successful in 3m53s
Reviewed-on: #110
2026-01-08 19:21:41 +00:00
renovate 0f1ee07348 chore(deps): update actions/setup-go action to v6
presenter / test (pull_request) Successful in 3m22s
presenter / vulnerabilities (pull_request) Successful in 3m48s
2026-01-08 19:15:59 +00:00
argoyle 773cf10d05 Merge pull request 'chore(deps): update actions/checkout action to v6' (#109) from renovate/actions-checkout-6.x into main
presenter / test (push) Successful in 3m58s
presenter / vulnerabilities (push) Successful in 3m27s
Reviewed-on: #109
2026-01-08 18:30:26 +00:00
renovate 038ef213bb chore(deps): update actions/checkout action to v6
presenter / test (pull_request) Successful in 6m13s
presenter / vulnerabilities (pull_request) Successful in 6m16s
2026-01-08 18:12:09 +00:00
argoyle c35239b385 Merge pull request 'feat: migrate from GitLab CI to Gitea Actions' (#108) from feat/gitea-actions into main
presenter / vulnerabilities (push) Successful in 1m6s
presenter / test (push) Successful in 1m9s
Reviewed-on: #108
2026-01-08 17:57:29 +00:00
argoyle 7644c6793e feat: migrate from GitLab CI to Gitea Actions
presenter / vulnerabilities (pull_request) Successful in 1m5s
presenter / test (pull_request) Successful in 2m10s
2026-01-08 18:34:23 +01:00
Unbound Release cba9bb814d chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release e998aa8599 chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release a8a7fae14b chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release d092bb4158 chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release e7733a069d chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release 90518df4be chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release d007daed7a chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release a4eb50c45a chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release b309cf5fc7 chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release 824e3703a9 chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release aab014650e chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release 51dc2e8605 chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release b0d63489ea chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release 621e039ccf chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release 1b6d69f5f1 chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release 32887d6002 chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release 044226072b chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
Unbound Release 03b493c2e3 chore(release): prepare for v0.2.3 2025-12-31 21:16:29 +00:00
argoyle 147fb3ab15 Merge branch 'claude-docs' into 'main'
docs: add CLAUDE.md for Claude Code integration

See merge request unboundsoftware/shiny/presenter!106
2025-12-31 22:15:17 +01:00
argoyle ac93eacbbc docs: add CLAUDE.md for Claude Code integration 2025-12-31 22:11:47 +01:00
argoyle e96ce57940 Merge branch 'renovate/golang-1.25.5' into 'main'
chore(deps): update golang:1.25.5 docker digest to ad03ba9

See merge request unboundsoftware/shiny/presenter!105
2025-12-30 15:56:02 +01:00
Renovate 923e6a5585 chore(deps): update golang:1.25.5 docker digest to ad03ba9 2025-12-30 03:56:06 +00:00
argoyle b2617b1eb2 Merge branch 'renovate/github.com-99designs-gqlgen-0.x' into 'main'
fix(deps): update module github.com/99designs/gqlgen to v0.17.85

See merge request unboundsoftware/shiny/presenter!104
2025-12-17 08:27:13 +01:00
Renovate 023d0ed776 fix(deps): update module github.com/99designs/gqlgen to v0.17.85 2025-12-17 03:07:32 +00:00
argoyle f7c85d1e56 Merge branch 'renovate/golang-1.25.5' into 'main'
chore(deps): update golang:1.25.5 docker digest to 0c27bcf

See merge request unboundsoftware/shiny/presenter!103
2025-12-09 09:53:35 +01:00
Renovate f6632726c5 chore(deps): update golang:1.25.5 docker digest to 0c27bcf 2025-12-09 02:09:10 +00:00
argoyle 1d58e4afb1 Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.2

See merge request unboundsoftware/shiny/presenter!102
2025-12-08 09:41:03 +01:00
Renovate 1b7274b421 chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.2 2025-12-07 16:56:33 +00:00
argoyle e7bea420a7 Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.1

See merge request unboundsoftware/shiny/presenter!101
2025-12-04 16:24:20 +01:00
Renovate 14b00f06d3 chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.1 2025-12-04 14:56:55 +00:00
argoyle b286d56403 Merge branch 'renovate/golangci-golangci-lint-2.x' into 'main'
chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.0

See merge request unboundsoftware/shiny/presenter!100
2025-12-04 08:28:03 +01:00
Renovate 5c1b8981d1 chore(deps): update pre-commit hook golangci/golangci-lint to v2.7.0 2025-12-03 19:56:19 +00:00
argoyle 9bb84fb008 Merge branch 'renovate/golang-1.x' into 'main'
chore(deps): update golang docker tag to v1.25.5

See merge request unboundsoftware/shiny/presenter!99
2025-12-02 19:39:54 +01:00
Renovate a3c4bcfe0f chore(deps): update golang docker tag to v1.25.5 2025-12-02 18:08:38 +00:00
argoyle 6deb62064d Merge branch 'renovate/gitleaks-gitleaks-8.x' into 'main'
chore(deps): update pre-commit hook gitleaks/gitleaks to v8.30.0

See merge request unboundsoftware/shiny/presenter!97
2025-11-27 00:03:58 +01:00
Renovate eb8cefdc83 chore(deps): update pre-commit hook gitleaks/gitleaks to v8.30.0 2025-11-26 18:56:37 +00:00
15 changed files with 273 additions and 66 deletions
+85
View File
@@ -0,0 +1,85 @@
name: presenter
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: 'stable'
- name: Run tests
run: go test -race -coverprofile=coverage.txt ./...
- name: Check coverage
uses: vladopajic/go-test-coverage@v2
with:
config: ./.testcoverage.yml
# Download baseline coverage from main branch (for PRs)
- name: Download baseline coverage
if: gitea.event_name == 'pull_request'
uses: actions/download-artifact@v3
with:
name: coverage-baseline
path: ./baseline
continue-on-error: true
# Compare coverage against baseline (for PRs)
- name: Compare coverage
if: gitea.event_name == 'pull_request'
run: |
CURRENT=$(go tool cover -func=coverage.txt | grep "^total:" | awk '{print $NF}' | tr -d '%')
if [ -f ./baseline/coverage.txt ]; then
BASE=$(go tool cover -func=./baseline/coverage.txt | grep "^total:" | awk '{print $NF}' | tr -d '%')
echo "Base coverage: ${BASE}%"
echo "Current coverage: ${CURRENT}%"
if [ "$(echo "$CURRENT < $BASE" | bc -l)" -eq 1 ]; then
echo "::error::Coverage decreased from ${BASE}% to ${CURRENT}%"
exit 1
fi
echo "Coverage maintained or improved: ${BASE}% -> ${CURRENT}%"
else
echo "No baseline coverage found, skipping comparison"
echo "Current coverage: ${CURRENT}%"
fi
# Upload coverage as baseline (only on main)
- name: Upload coverage baseline
if: gitea.ref == 'refs/heads/main'
uses: actions/upload-artifact@v3
with:
name: coverage-baseline
path: coverage.txt
retention-days: 90
# Post coverage to PR comment
- name: Post coverage comment
if: gitea.event_name == 'pull_request'
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
GITEA_URL: ${{ gitea.server_url }}
run: |
COVERAGE=$(go tool cover -func=coverage.txt | grep "^total:" | awk '{print $NF}')
curl -X POST "${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/issues/${{ gitea.event.pull_request.number }}/comments" \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
-d "{\"body\": \"## Coverage Report\n\nTotal coverage: **${COVERAGE}**\"}"
vulnerabilities:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: 'stable'
- name: Check vulnerabilities
run: |
go install golang.org/x/vuln/cmd/govulncheck@latest
govulncheck ./...
+25
View File
@@ -0,0 +1,25 @@
name: pre-commit
permissions: read-all
on:
pull_request:
push:
branches:
- main
jobs:
pre-commit:
runs-on: ubuntu-latest
env:
SKIP: no-commit-to-branch
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: stable
- uses: actions/setup-python@v6
with:
python-version: '3.14'
- name: Install goimports
run: go install golang.org/x/tools/cmd/goimports@latest
- uses: pre-commit/action@v3.0.1
+9
View File
@@ -0,0 +1,9 @@
name: Release
on:
push:
branches: [main]
jobs:
release:
uses: unboundsoftware/shared-workflows/.gitea/workflows/Release.yml@main
+1
View File
@@ -1,2 +1,3 @@
.idea .idea
.claude
/release /release
-38
View File
@@ -1,38 +0,0 @@
include:
- template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'
- project: unboundsoftware/ci-templates
file: Defaults.gitlab-ci.yml
- project: unboundsoftware/ci-templates
file: Release.gitlab-ci.yml
- project: unboundsoftware/ci-templates
file: Pre-Commit-Go.gitlab-ci.yml
image: amd64/golang:1.25.4@sha256:efe81fa41fdf81fb873ab7cd931b9bb29bd10aced6c252cbd91739c34e654f01
stages:
- deps
- test
deps:
stage: deps
script:
- go mod download
test:
stage: test
dependencies:
- deps
script:
- CGO_ENABLED=1 go test -mod=readonly -race -coverprofile=coverage.txt -covermode=atomic -coverpkg=$(go list ./... | tr '\n' , | sed 's/,$//') ./...
- go tool cover -html=coverage.txt -o coverage.html
- go tool cover -func=coverage.txt
- curl -Os https://uploader.codecov.io/latest/linux/codecov
- chmod +x codecov
- ./codecov -t ${CODECOV_TOKEN} -R $CI_PROJECT_DIR -C $CI_COMMIT_SHA -r $CI_PROJECT_PATH
vulnerabilities:
stage: test
image: amd64/golang:1.25.4@sha256:efe81fa41fdf81fb873ab7cd931b9bb29bd10aced6c252cbd91739c34e654f01
script:
- go install golang.org/x/vuln/cmd/govulncheck@latest
- govulncheck ./...
+4 -11
View File
@@ -10,15 +10,8 @@ repos:
args: args:
- --allow-multiple-documents - --allow-multiple-documents
- id: check-added-large-files - id: check-added-large-files
- repo: https://gitlab.com/devopshq/gitlab-ci-linter
rev: v1.0.6
hooks:
- id: gitlab-ci-linter
args:
- --project
- unboundsoftware/shiny/presenter
- repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook
rev: v9.23.0 rev: v9.24.0
hooks: hooks:
- id: commitlint - id: commitlint
stages: [ commit-msg ] stages: [ commit-msg ]
@@ -30,17 +23,17 @@ repos:
- id: go-imports - id: go-imports
args: args:
- -local - -local
- gitlab.com/unboundsoftware/shiny/presenter - gitea.unbound.se/shiny/presenter
- repo: https://github.com/lietu/go-pre-commit - repo: https://github.com/lietu/go-pre-commit
rev: v1.0.0 rev: v1.0.0
hooks: hooks:
- id: go-test - id: go-test
- id: gofumpt - id: gofumpt
- repo: https://github.com/golangci/golangci-lint - repo: https://github.com/golangci/golangci-lint
rev: v2.6.2 rev: v2.11.4
hooks: hooks:
- id: golangci-lint-full - id: golangci-lint-full
- repo: https://github.com/gitleaks/gitleaks - repo: https://github.com/gitleaks/gitleaks
rev: v8.29.1 rev: v8.30.1
hooks: hooks:
- id: gitleaks - id: gitleaks
+13
View File
@@ -0,0 +1,13 @@
# Coverage configuration for go-test-coverage
# https://github.com/vladopajic/go-test-coverage
profile: coverage.txt
threshold:
file: 0
package: 0
total: 0
exclude:
paths:
- _test\.go$
+3 -1
View File
@@ -1 +1,3 @@
{"version":"v0.2.2"} {
"version": "v0.3.4"
}
+75
View File
@@ -2,6 +2,81 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## [0.3.4] - 2026-03-24
### 🐛 Bug Fixes
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.88 (#138)
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.89 (#145)
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.0 (#132)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.1 (#134)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.2 (#136)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.3 (#139)
- *(deps)* Update pre-commit hook gitleaks/gitleaks to v8.30.1 (#141)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.11.4 (#143)
## [0.3.3] - 2026-02-20
### 🐛 Bug Fixes
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.87
## [0.3.2] - 2026-02-19
### 🐛 Bug Fixes
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.86 (#117)
- *(deps)* Update module github.com/vektah/gqlparser/v2 to v2.5.32 (#127)
### ⚙️ Miscellaneous Tasks
- *(deps)* Update golang:1.25.5 docker digest to 3a01526 (#119)
- *(deps)* Update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.24.0 (#120)
- *(deps)* Update golang docker tag to v1.25.6 (#121)
- Remove GitLab CI configuration
- Add code coverage integration
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.9.0 (#125)
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.10.1 (#126)
## [0.3.1] - 2026-01-09
### ⚙️ Miscellaneous Tasks
- *(deps)* Update actions/setup-python action to v6
- Migrate module path to gitea.unbound.se
## [0.3.0] - 2026-01-09
### 🚀 Features
- Migrate from GitLab CI to Gitea Actions
### 🐛 Bug Fixes
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.85
- Update module path from gitlab to git.unbound.se
### 📚 Documentation
- Add CLAUDE.md for Claude Code integration
### ⚙️ Miscellaneous Tasks
- *(deps)* Update pre-commit hook gitleaks/gitleaks to v8.30.0
- *(deps)* Update golang docker tag to v1.25.5
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.7.0
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.7.1
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.7.2
- *(deps)* Update golang:1.25.5 docker digest to 0c27bcf
- *(deps)* Update golang:1.25.5 docker digest to ad03ba9
- *(deps)* Update actions/checkout action to v6
- *(deps)* Update actions/setup-go action to v6
- *(deps)* Update pre-commit hook golangci/golangci-lint to v2.8.0
- Add pre-commit and release workflows
## [0.2.2] - 2025-11-24 ## [0.2.2] - 2025-11-24
### 🐛 Bug Fixes ### 🐛 Bug Fixes
+42
View File
@@ -0,0 +1,42 @@
# presenter
Shared Go library for GraphQL error presentation with coded errors.
## Shared Documentation
@../docs/claude/architecture.md
@../docs/claude/go-services.md
@../docs/claude/graphql.md
@../docs/claude/conventions.md
## Library Information
### Purpose
Provides a standardized GraphQL error presenter that handles coded errors across all microservices. Converts internal error codes to GraphQL error extensions.
### Usage
```go
import "gitea.unbound.se/shiny/presenter"
// Create error presenter with valid codes and entities
errorPresenter := presenter.New(logger, validCodes, validEntities, internalErrorCode)
// Use in gqlgen server config
srv := handler.NewDefaultServer(generated.NewExecutableSchema(cfg))
srv.SetErrorPresenter(errorPresenter)
```
### Key Types
- `CodedError` - Error type with code, entity, and params
- `Code` - Error code type
- `Entity` - Error entity type
### Error Extensions
Errors are presented with extensions:
- `code` - The error code (mapped to valid codes or internal error)
- `errorEntity` - The entity related to the error (optional)
- `params` - Additional error parameters (optional)
-3
View File
@@ -1,6 +1,3 @@
# Shiny global error presenter # Shiny global error presenter
GraphQL global error presenter handling coded errors. GraphQL global error presenter handling coded errors.
[![Build Status](https://gitlab.com/unboundsoftware/shiny/presenter/badges/main/pipeline.svg)](https://gitlab.com/unboundsoftware/shiny/presenter/commits/main)
[![codecov](https://codecov.io/gl/unboundsoftware:shiny/presenter/branch/main/graph/badge.svg?token=8F3HKACF7A)](https://codecov.io/gl/unboundsoftware:shiny/presenter)
+1 -1
View File
@@ -7,7 +7,7 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"gitlab.com/unboundsoftware/shiny/presenter" "gitea.unbound.se/shiny/presenter"
) )
func TestCodedError_ErrorIs(t *testing.T) { func TestCodedError_ErrorIs(t *testing.T) {
+6 -5
View File
@@ -1,17 +1,18 @@
module gitlab.com/unboundsoftware/shiny/presenter module gitea.unbound.se/shiny/presenter
go 1.24.1 go 1.25.0
require ( require (
github.com/99designs/gqlgen v0.17.84 github.com/99designs/gqlgen v0.17.89
github.com/stretchr/testify v1.11.1 github.com/stretchr/testify v1.11.1
github.com/vektah/gqlparser/v2 v2.5.31 github.com/vektah/gqlparser/v2 v2.5.32
) )
require ( require (
github.com/davecgh/go-spew v1.1.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect
github.com/google/uuid v1.6.0 // indirect github.com/google/uuid v1.6.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/sosodev/duration v1.3.1 // indirect github.com/sosodev/duration v1.4.0 // indirect
golang.org/x/sync v0.20.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect
) )
+8 -6
View File
@@ -1,5 +1,5 @@
github.com/99designs/gqlgen v0.17.84 h1:iVMdiStgUVx/BFkMb0J5GAXlqfqtQ7bqMCYK6v52kQ0= github.com/99designs/gqlgen v0.17.89 h1:KzEcxPiMgQoMw3m/E85atUEHyZyt0PbAflMia5Kw8z8=
github.com/99designs/gqlgen v0.17.84/go.mod h1:qjoUqzTeiejdo+bwUg8unqSpeYG42XrcrQboGIezmFA= github.com/99designs/gqlgen v0.17.89/go.mod h1:GFqruTVGB7ZTdrf1uzOagpXbY7DrEt1pIxnTdhIbWvQ=
github.com/agnivade/levenshtein v1.2.1 h1:EHBY3UOn1gwdy/VbFwgo4cxecRznFk7fKWN1KOX7eoM= github.com/agnivade/levenshtein v1.2.1 h1:EHBY3UOn1gwdy/VbFwgo4cxecRznFk7fKWN1KOX7eoM=
github.com/agnivade/levenshtein v1.2.1/go.mod h1:QVVI16kDrtSuwcpd0p1+xMC6Z/VfhtCyDIjcwga4/DU= github.com/agnivade/levenshtein v1.2.1/go.mod h1:QVVI16kDrtSuwcpd0p1+xMC6Z/VfhtCyDIjcwga4/DU=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ=
@@ -12,12 +12,14 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4= github.com/sosodev/duration v1.4.0 h1:35ed0KiVFriGHHzZZJaZLgmTEEICIyt8Sx0RQfj9IjE=
github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= github.com/sosodev/duration v1.4.0/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/vektah/gqlparser/v2 v2.5.31 h1:YhWGA1mfTjID7qJhd1+Vxhpk5HTgydrGU9IgkWBTJ7k= github.com/vektah/gqlparser/v2 v2.5.32 h1:k9QPJd4sEDTL+qB4ncPLflqTJ3MmjB9SrVzJrawpFSc=
github.com/vektah/gqlparser/v2 v2.5.31/go.mod h1:c1I28gSOVNzlfc4WuDlqU7voQnsqI6OG2amkBAFmgts= github.com/vektah/gqlparser/v2 v2.5.32/go.mod h1:c1I28gSOVNzlfc4WuDlqU7voQnsqI6OG2amkBAFmgts=
golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+1 -1
View File
@@ -11,7 +11,7 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/vektah/gqlparser/v2/gqlerror" "github.com/vektah/gqlparser/v2/gqlerror"
"gitlab.com/unboundsoftware/shiny/presenter" "gitea.unbound.se/shiny/presenter"
) )
func Test_globalErrorPresenter(t *testing.T) { func Test_globalErrorPresenter(t *testing.T) {