Commit graph

62 commits

Author SHA1 Message Date
1895ee9bbd Merge pull request 'dev' (#16) from dev into main
All checks were successful
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 41s
Reviewed-on: #16
2026-03-23 20:39:49 +00:00
35792507ad Merge branch 'main' into dev
All checks were successful
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 42s
Security Scan / security (pull_request) Successful in 9s
Test / test (pull_request) Successful in 47s
2026-03-23 20:39:35 +00:00
f99a00c243 Delete docs/convention-drift-2026-03-23.md
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Security Scan / security (pull_request) Successful in 8s
Test / test (pull_request) Successful in 47s
2026-03-23 20:39:15 +00:00
aa839b07b0 Delete docs/security-attack-vector-mapping.md
Some checks failed
Security Scan / security (push) Has been cancelled
Test / test (push) Has been cancelled
Security Scan / security (pull_request) Successful in 9s
Test / test (pull_request) Successful in 44s
2026-03-23 20:39:09 +00:00
ca986fa374 Merge pull request '[agent/codex] API contract extraction. For every exported type, function, ...' (#15) from agent/api-contract-extraction--for-every-expor into dev
All checks were successful
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 43s
Security Scan / security (pull_request) Successful in 9s
Test / test (pull_request) Successful in 44s
2026-03-23 14:35:16 +00:00
Virgil
ce3108b01e docs: add API contract inventory
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-23 14:35:01 +00:00
ec04941cf1 Merge pull request '[agent/codex] Convention drift check. Read CLAUDE.md. stdlib→core.*, UK ...' (#14) from agent/convention-drift-check--read-claude-md into dev
All checks were successful
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 46s
2026-03-23 14:29:48 +00:00
Virgil
55c5aa46c7 docs: add convention drift audit
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-23 14:29:24 +00:00
103e1742df Merge pull request '[agent/codex] Security attack vector mapping. Read CLAUDE.md. Map every ex...' (#11) from agent/security-attack-vector-mapping--read-cla into dev
All checks were successful
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 47s
2026-03-23 13:23:16 +00:00
Virgil
1cee642101 docs: add security attack vector mapping
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-23 13:22:56 +00:00
Snider
ecad738da9 feat(forge): add MilestoneService, fix comment creation
- Add MilestoneService with ListAll, Get, Create
- Fix CreateIssueCommentOption Updated field to *time.Time (was serialising zero value)
- Register Milestones in Forge client

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-23 12:53:10 +00:00
Snider
244ff651c3 feat(commits): add List/Get methods + tests (Codex)
All checks were successful
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 47s
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>
2026-03-22 14:53:03 +00:00
fdb6372f9e Merge pull request 'fix: Create collection path + Codex road-test suite' (#7) from dev into main
All checks were successful
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 41s
2026-03-22 14:19:59 +00:00
Snider
206749eb8a fix: Create uses collection path + road-test suite (Codex)
All checks were successful
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 47s
Security Scan / security (pull_request) Successful in 9s
Test / test (pull_request) Successful in 45s
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>
2026-03-22 14:19:28 +00:00
71cce73239 Merge pull request '[agent/codex] Road-test the go-forge library. Read CODEX.md and CLAUDE.md ...' (#6) from agent/road-test-the-go-forge-library--read-cod into main
All checks were successful
Security Scan / security (push) Successful in 12s
Test / test (push) Successful in 45s
2026-03-22 14:14:17 +00:00
Snider
107c78dc07 test(services): road-test resource CRUD paths
All checks were successful
Security Scan / security (pull_request) Successful in 8s
Test / test (pull_request) Successful in 49s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-22 14:13:40 +00:00
Snider
33eb5bc91a fix: StateType and TimeStamp are strings, not empty structs
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>
2026-03-22 14:07:10 +00:00
1f4c5c607e Merge pull request 'fix: Resource collection path for List/ListAll/Iter' (#5) from dev into main
All checks were successful
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 36s
2026-03-22 14:01:40 +00:00
Snider
c7c279fc17 fix: Resource.List/ListAll/Iter use collection path, not item path
All checks were successful
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 44s
Security Scan / security (pull_request) Successful in 8s
Test / test (pull_request) Successful in 46s
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>
2026-03-22 14:01:14 +00:00
de9db03047 Merge pull request '[agent/claude] Migrate module path to dappco.re/go/core/forge. Update go.mo...' (#4) from agent/migrate-module-path-to-dappco-re-go-core into main
All checks were successful
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 35s
2026-03-22 01:51:40 +00:00
Snider
0a9564274d refactor(module): migrate module path to dappco.re/go/core/forge
All checks were successful
Security Scan / security (pull_request) Successful in 9s
Test / test (pull_request) Successful in 1m20s
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>
2026-03-22 01:51:29 +00:00
Snider
83b4f9da90 Merge remote-tracking branch 'github/dev'
All checks were successful
Security Scan / security (push) Successful in 10s
Test / test (push) Successful in 40s
2026-03-22 00:57:31 +00:00
Snider
74a7661ec3 chore: sync dependencies for v0.1.9
Some checks failed
Test / test (push) Successful in 41s
Security Scan / security (push) Failing after 11m16s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 17:54:20 +00:00
Snider
aadc2fa399 ci: add Core ecosystem CI workflow with CodeRabbit auto-fix
Uses dAppCore/build actions for test, auto-fix on CodeRabbit changes,
and auto-merge on CodeRabbit approval.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 14:05:38 +00:00
bb506863d1 Merge pull request '[agent/claude:opus] DX audit and fix. 1) Review CLAUDE.md — update any outdate...' (#2) from agent/dx-audit-and-fix--1--review-claude-md into main
Some checks failed
Test / test (push) Successful in 41s
Security Scan / security (push) Failing after 10m40s
2026-03-17 08:11:54 +00:00
Snider
c354c11652 fix(dx): update CLAUDE.md and add tests for untested critical paths
Some checks failed
Security Scan / security (pull_request) Successful in 9s
Test / test (pull_request) Failing after 11m24s
- Fix CLAUDE.md: "zero dependencies" → documents go-io/go-log deps
- Add coding standards for coreerr.E() and go-io usage
- Add tests for APIError.Error(), IsConflict, IsForbidden, WithHTTPClient,
  RateLimit, Forge.Client(), Resource.Iter() (happy, error, early-break)
- Coverage: 64.5% → 66.8% (+2.3%)
- No fmt.Errorf, errors.New, or os.ReadFile/WriteFile violations found

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 08:11:30 +00:00
Snider
4e92c467eb chore: sync dependencies for v0.1.7
All checks were successful
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 1m23s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 22:19:21 +00:00
Snider
7d23663efb chore: sync dependencies for v0.1.6
All checks were successful
Security Scan / security (push) Successful in 7s
Test / test (push) Successful in 1m15s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 22:12:59 +00:00
Snider
f84643140e refactor: replace os.ReadFile/WriteFile/MkdirAll and fmt.Errorf/errors.New with go-io/go-log
All checks were successful
Security Scan / security (push) Successful in 7s
Test / test (push) Successful in 1m18s
- 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>
2026-03-16 19:06:48 +00:00
Snider
30c57a5a51 chore: add .core/ and .idea/ to .gitignore
All checks were successful
Security Scan / security (push) Successful in 10s
Test / test (push) Successful in 1m18s
2026-03-15 10:17:49 +00:00
Snider
b50e8bab3b docs: add CLAUDE.md project instructions
All checks were successful
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 1m9s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:38:01 +00:00
Snider
761493c7f5 docs: add human-friendly documentation
All checks were successful
Security Scan / security (push) Successful in 6s
Test / test (push) Successful in 1m8s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:02:40 +00:00
Snider
72fb4e3b8e fix: improve API client error handling and pagination
All checks were successful
Security Scan / security (push) Successful in 10s
Test / test (push) Successful in 1m12s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 08:31:16 +00:00
Snider
f59ec29e1f chore: add .core/ build and release configs
All checks were successful
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 1m11s
Add go-devops build system configuration for standardised
build, test, and release workflows across the Go ecosystem.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 18:52:36 +00:00
Snider
d50175a8b0 chore: remove boilerplate Taskfile
All checks were successful
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 1m12s
All tasks (test, build, lint, fmt, vet, cov) are handled natively
by `core go` commands. Taskfile was redundant wrapper.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 14:45:49 +00:00
12c2ad8c61 Merge pull request 'chore: Go 1.26 modernization' (#1) from chore/go-1.26-modernization into main
All checks were successful
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 1m16s
2026-02-24 18:01:49 +00:00
Claude
56dc67a8df
chore: fmt.Errorf(static) → errors.New
All checks were successful
Security Scan / security (pull_request) Successful in 10s
Test / test (pull_request) Successful in 1m10s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:28:47 +00:00
Snider
e75ceb2e00 chore: add Go repo norms (badges, contributing, lint, taskfile, editorconfig)
All checks were successful
Security Scan / security (push) Successful in 10s
Test / test (push) Successful in 1m44s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:45:34 +00:00
Snider
57d8af13ad feat: modernise to Go 1.26 iterators and stdlib helpers
All checks were successful
Security Scan / security (push) Successful in 14s
Test / test (push) Successful in 2m1s
Add ListIter in pagination + generic Resource.Iter for streaming
paginated results as iter.Seq2[T, error]. Add Iter* methods across
all service files (actions, admin, branches, issues, labels, notifs,
orgs, packages, pulls, releases, repos, teams, users, webhooks).
Modernise cmd/forgegen with slices.Sort, maps.Keys, strings.FieldsFuncSeq.

Co-Authored-By: Gemini <noreply@google.com>
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 05:39:13 +00:00
Claude
5ac4fc75ef
ci: add Forgejo Actions test and security scan workflows
All checks were successful
Security Scan / security (push) Successful in 12s
Test / test (push) Successful in 1m49s
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>
2026-02-23 03:28:02 +00:00
Snider
c95c4614aa chore: bump go directive to 1.26.0
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-22 20:33:49 +00:00
Snider
c59309d15a chore: remove design and plan docs — implementation complete
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 17:16:53 +00:00
Snider
12525932ae chore: remove docs/wiki — content now on Forge wiki
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 17:16:03 +00:00
Snider
f5f796cd16 docs: wiki documentation for go-forge
Seven pages covering Home, Architecture, Services, Code Generation,
Configuration, Error Handling, and Development.

Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 17:14:01 +00:00
Snider
33319590d4 feat: WikiService, MiscService, CommitService
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>
2026-02-21 17:14:01 +00:00
Snider
9e3d15da68 feat: ActionsService, NotificationService, PackageService
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>
2026-02-21 17:14:01 +00:00
Snider
de76399608 feat: LabelService, WebhookService, ContentService
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>
2026-02-21 17:14:01 +00:00
Snider
fd0343e47e feat: BranchService and ReleaseService with protections and assets
Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 17:14:01 +00:00
Snider
c6e9d83b08 feat: AdminService with user, org, cron, runner operations
Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 17:14:01 +00:00
Snider
df75d3281d feat: OrgService, TeamService, UserService
Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 17:14:01 +00:00