CommitService now has ListRepoCommits and GetCommit methods
with full httptest coverage. Tests verify correct paths,
response parsing, and error handling.
Co-Authored-By: Virgil <virgil@lethean.io>
Bug: Resource.Create was POSTing to item path (/issues/{index})
instead of collection path (/issues). Same class as the List fix.
Tests: path validation on all service methods, Update tests for
issues/repos, CreateComment test, ListComments test, PR merge
error case (conflict handling).
227 lines of test coverage added by Codex agent.
Co-Authored-By: Virgil <virgil@lethean.io>
Swagger spec didn't define these properly. StateType is "open"|"closed",
TimeStamp is a date string. Both were generated as struct{} which fails
to unmarshal JSON. Also change from pointer to value type in Issue, PR,
Milestone, Notification structs.
Co-Authored-By: Virgil <virgil@lethean.io>
The Resource path like /repos/{owner}/{repo}/issues/{index} is the
item path. List operations need the collection path (without the
trailing /{placeholder}). Fixed by deriving the collection path at
construction time — only strips the last segment if it's a pure
placeholder like /{index}, not mixed segments like /repos.
Co-Authored-By: Virgil <virgil@lethean.io>
Update Go module path from forge.lthn.ai/core/go-forge to
dappco.re/go/core/forge. Migrate all import paths and dependency
references (go-io → dappco.re/go/core/io, go-log → dappco.re/go/core/log).
Update documentation (CLAUDE.md, README.md, docs/) to reflect new paths.
Co-Authored-By: Virgil <virgil@lethean.io>
Uses dAppCore/build actions for test, auto-fix on CodeRabbit changes,
and auto-merge on CodeRabbit approval.
Co-Authored-By: Virgil <virgil@lethean.io>
- Replace os.ReadFile with coreio.Local.Read in parser.go and generator_test.go
- Replace os.WriteFile with coreio.Local.Write in generator.go
- Replace os.MkdirAll with coreio.Local.EnsureDir in generator.go
- Replace all fmt.Errorf and errors.New with coreerr.E() from go-log
- Add forge.lthn.ai/core/go-io and forge.lthn.ai/core/go-log dependencies
Co-Authored-By: Virgil <virgil@lethean.io>
Add go-devops build system configuration for standardised
build, test, and release workflows across the Go ecosystem.
Co-Authored-By: Virgil <virgil@lethean.io>
Uses reusable workflows from core/go-devops for Go testing
(with race detector and coverage) and security scanning
(govulncheck, gitleaks, trivy).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add three new services completing the final service layer:
- WikiService: CRUD operations for repository wiki pages
- MiscService: markdown rendering, licence/gitignore templates, nodeinfo, version
- CommitService: commit statuses (list, create, combined) and git notes
- PostRaw method on Client for endpoints returning raw text (e.g. /markdown)
- Remove services_stub.go (all stubs now replaced with real implementations)
- Wire Commits field into Forge struct
Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add three new services for the Forgejo API client:
- ActionsService: repo/org secrets, variables, workflow dispatch
- NotificationService: list, mark read, thread operations
- PackageService: list, get, delete packages and files
Wire up real constructors in forge.go and remove stubs from
services_stub.go. All 21 new tests pass.
Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add three new services covering labels, webhooks, and file content
operations. LabelService handles repo and org labels without Resource
embedding due to heterogeneous paths. WebhookService embeds Resource
for standard CRUD on repo hooks plus action methods for test delivery
and org hooks. ContentService provides file CRUD and raw file retrieval.
Adds GetRaw method to Client for non-JSON responses.
Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>