| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(actions): add gc actions artifact list for repository artifacts Add read-only support for the GitCode Actions v8 endpoint GET /api/v8/repos/{owner}/{repo}/actions/artifacts (issue #439, M2 first). - api: new ListActionsArtifacts query via RawREST (v8 path preserved); Artifact/ArtifactsResponse/ActionsListArtifactsOptions types. Query params (name/sort/direction/page/per_page) via url.Values; access_token query intentionally omitted (Bearer auth). - cmd: new gc actions artifact parent group + gc actions artifact list command (mirrors #445 run list). --json/--format, pagination (--limit/--page/--paginate/--per-page), --name filter, --sort/--direction enum metadata. - output: ArtifactListPrinter with human-readable size (B/KiB/MiB/GiB) + string-ms-timestamp time formatting (created/expires). - tests: v8 path+query, parse, empty/null, 404, command param validation + JSON + table + error + format resolution. - docs: COMMANDS.md gains an actions artifact list section; README entry. Real-data confirmation: infra-test/gctest1 (200 empty) + gctest2 (404 exit 3); wangjing_127/MindIE-SD (200 empty, no artifacts produced by its runs). Populated-parse path covered by unit tests (no repo with artifacts available). Closes #439 Co-Authored-By: opencode (glm-5.2) <noreply@anthropic.com> | 3 个月前 | |
test+docs: address round-1 changes-requested on #439 - list_test.go: add TestListRunPaginatesUntilLimit + TestListRunPaginateDefaultPerPage (paginate path, was 0% covered), TestListRunInvalidLimit + TestListRunPaginateWithPage (param validation via listRun asserting usage error), TestListRunTrimsToLimit (trim branch); strengthen TestListRunTable to assert "1.0 MiB" + "2026-" rendering. Coverage 68.1% -> 86.8% (>=70%). - pkg/output/artifacts_test.go (new): TestSizeLabel (B/KiB/MiB/GiB boundaries) + TestFormatMsTimeString (empty/0/negative/invalid/sec/ms + ms==sec equivalence). - docs/COMMANDS.md: fix exit-1 self-contradiction (404 maps to exit 3 not 1; align with #445 wording "其它 API 错误"). Round-1 P1 blockers from PR #384 review. No production code change. Refs #439 Co-Authored-By: opencode (glm-5.2) <noreply@anthropic.com> | 3 个月前 | |
| 6 个月前 | ||
| 6 个月前 | ||
fix(release): download clobber/skip, named-asset strictness, streaming upload, view/delete polish download: an existing file was silently overwritten (temp+rename with no existence check), and a mistyped asset name exited 0 with "No assets to download" — scripts could not tell a typo from an empty release. Existing files now refuse by default with --clobber to overwrite and --skip-existing to skip (mutually exclusive, gh-aligned). Named downloads are strict: any miss is an error listing the available asset names, and the named set bypasses the source-archive filter — naming an archive explicitly is intent and must download it even without --all. upload: the whole file was buffered in memory (io.ReadAll then a []byte PUT — double the asset size, OOM territory for large binaries); UploadToURL and UploadReleaseAssetByTag now take an io.Reader with an explicit ContentLength (presigned URLs reject chunked PUTs) and uploadFile streams from the file handle with a 512-byte sniff-and-rewind for content type. The platform's overwrite behavior for duplicate asset names is undefined, so a GetRelease precheck refuses the whole batch (zero PUTs) when any name collides, pointing at delete-asset or a rename. A mid-batch failure now names what already landed. The --label example that errors when copied is gone (the flag stays, with its explicit rejection). delete: the confirmation prompt showed the release Name but expected the tag — when they differ, typing what the screen says was rejected. confirmTitle shows "Name (tag: tag)" so the expected input is always visible; Expected stays the tag (the API key). view: gained its first run-level tests (web/TTY/non-TTY browser fallback via an injected opener matching the pr create seam, JSON, human render, not-found wrapping). list: the body-first-line truncate was byte-based and corrupted CJK text at the 60-byte boundary; a shared rune-aware output.Truncate now serves release list, issue templates (same latent bug), and the plugin list (which had its own correct copy). COMMANDS.md documents the new download/upload semantics and fixes the extension-name wording for source archives (detection is by URL, not extension). Co-Authored-By: Claude Code <noreply@anthropic.com> | 1 个月前 | |
fix: deliver milestone 374842 issue batch | 6 个月前 | |
fix(actions): show job ID in job list text output The printSimple and printTable functions in pkg/output/jobs.go did not display the job ID field, making it impossible for users to obtain the job ID needed for job view and job log commands from the text output. Add the ID column to both simple and table formats. Fixes #471 Co-Authored-By: opencode (glm-5.2) <noreply@anthropic.com> | 3 个月前 | |
fix(actions): show job ID in job list text output The printSimple and printTable functions in pkg/output/jobs.go did not display the job ID field, making it impossible for users to obtain the job ID needed for job view and job log commands from the text output. Add the ID column to both simple and table formats. Fixes #471 Co-Authored-By: opencode (glm-5.2) <noreply@anthropic.com> | 3 个月前 | |
fix(pr): normalize merged state in JSON output GitCode may return merged as null for merged pull requests. Decoding that value into a Go bool produced false even when state was merged and merged_at was populated, giving agents contradictory JSON. Normalize PullRequest.Merged from the explicit flag, merged state, or a non-empty merged_at value at API boundaries. Keep the public field a bool so the JSON schema remains stable, and use the shared IsMerged predicate for text rendering. Apply the same normalization to merge responses. Add API and command regression coverage for pr view, pr list, and pr merge, and document the normalized JSON contract. Refs #484 | 3 个月前 | |
fix: deliver milestone 374842 issue batch | 6 个月前 | |
fix: deliver milestone 374842 issue batch | 6 个月前 | |
fix: deliver milestone 374842 issue batch | 6 个月前 | |
feat(actions): add gc actions run list for pipeline run records Add read-only support for the GitCode Actions v8 API endpoint GET /api/v8/repos/{owner}/{repo}/actions/runs (issue #445). - api: new ListActionsRuns query via RawREST (v8 path preserved verbatim, not the default v5 prefix); full filter option set mirroring the API. - cmd: new gc actions / gc actions run / gc actions run list command tree mirroring the pr structure; agent-friendly --json, table/simple formats, pagination (--limit/--page/--paginate/--per-page), and enum metadata for --status/--event. - output: WorkflowRunListPrinter with status coloring. - auth reuses the standard Bearer header; access_token query is never exposed (asserted by tests). - docs: COMMANDS.md gains an Actions section; README adds an entry. Refs #445 Co-Authored-By: opencode (glm-5.2) <noreply@anthropic.com> | 3 个月前 | |
| 6 个月前 | ||
fix(release): download clobber/skip, named-asset strictness, streaming upload, view/delete polish download: an existing file was silently overwritten (temp+rename with no existence check), and a mistyped asset name exited 0 with "No assets to download" — scripts could not tell a typo from an empty release. Existing files now refuse by default with --clobber to overwrite and --skip-existing to skip (mutually exclusive, gh-aligned). Named downloads are strict: any miss is an error listing the available asset names, and the named set bypasses the source-archive filter — naming an archive explicitly is intent and must download it even without --all. upload: the whole file was buffered in memory (io.ReadAll then a []byte PUT — double the asset size, OOM territory for large binaries); UploadToURL and UploadReleaseAssetByTag now take an io.Reader with an explicit ContentLength (presigned URLs reject chunked PUTs) and uploadFile streams from the file handle with a 512-byte sniff-and-rewind for content type. The platform's overwrite behavior for duplicate asset names is undefined, so a GetRelease precheck refuses the whole batch (zero PUTs) when any name collides, pointing at delete-asset or a rename. A mid-batch failure now names what already landed. The --label example that errors when copied is gone (the flag stays, with its explicit rejection). delete: the confirmation prompt showed the release Name but expected the tag — when they differ, typing what the screen says was rejected. confirmTitle shows "Name (tag: tag)" so the expected input is always visible; Expected stays the tag (the API key). view: gained its first run-level tests (web/TTY/non-TTY browser fallback via an injected opener matching the pr create seam, JSON, human render, not-found wrapping). list: the body-first-line truncate was byte-based and corrupted CJK text at the 60-byte boundary; a shared rune-aware output.Truncate now serves release list, issue templates (same latent bug), and the plugin list (which had its own correct copy). COMMANDS.md documents the new download/upload semantics and fixes the extension-name wording for source archives (detection is by URL, not extension). Co-Authored-By: Claude Code <noreply@anthropic.com> | 1 个月前 | |
fix(release): download clobber/skip, named-asset strictness, streaming upload, view/delete polish download: an existing file was silently overwritten (temp+rename with no existence check), and a mistyped asset name exited 0 with "No assets to download" — scripts could not tell a typo from an empty release. Existing files now refuse by default with --clobber to overwrite and --skip-existing to skip (mutually exclusive, gh-aligned). Named downloads are strict: any miss is an error listing the available asset names, and the named set bypasses the source-archive filter — naming an archive explicitly is intent and must download it even without --all. upload: the whole file was buffered in memory (io.ReadAll then a []byte PUT — double the asset size, OOM territory for large binaries); UploadToURL and UploadReleaseAssetByTag now take an io.Reader with an explicit ContentLength (presigned URLs reject chunked PUTs) and uploadFile streams from the file handle with a 512-byte sniff-and-rewind for content type. The platform's overwrite behavior for duplicate asset names is undefined, so a GetRelease precheck refuses the whole batch (zero PUTs) when any name collides, pointing at delete-asset or a rename. A mid-batch failure now names what already landed. The --label example that errors when copied is gone (the flag stays, with its explicit rejection). delete: the confirmation prompt showed the release Name but expected the tag — when they differ, typing what the screen says was rejected. confirmTitle shows "Name (tag: tag)" so the expected input is always visible; Expected stays the tag (the API key). view: gained its first run-level tests (web/TTY/non-TTY browser fallback via an injected opener matching the pr create seam, JSON, human render, not-found wrapping). list: the body-first-line truncate was byte-based and corrupted CJK text at the 60-byte boundary; a shared rune-aware output.Truncate now serves release list, issue templates (same latent bug), and the plugin list (which had its own correct copy). COMMANDS.md documents the new download/upload semantics and fixes the extension-name wording for source archives (detection is by URL, not extension). Co-Authored-By: Claude Code <noreply@anthropic.com> | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 个月前 | ||
| 3 个月前 | ||
| 6 个月前 | ||
| 6 个月前 | ||
| 1 个月前 | ||
| 6 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 6 个月前 | ||
| 6 个月前 | ||
| 6 个月前 | ||
| 3 个月前 | ||
| 6 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |