[{"data":1,"prerenderedAt":887},["ShallowReactive",2],{"navigation_docs":3,"-guide-commits":80,"-guide-commits-surround":882},[4,56],{"title":5,"path":6,"stem":7,"children":8,"icon":55},"Guide","\u002Fguide","1.guide\u002F01.index",[9,11,15,19,23,27,31,35,39,43,47,51],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Authentication","\u002Fguide\u002Fauth","1.guide\u002F02.auth",{"title":16,"path":17,"stem":18},"Repositories","\u002Fguide\u002Frepositories","1.guide\u002F03.repositories",{"title":20,"path":21,"stem":22},"Issues","\u002Fguide\u002Fissues","1.guide\u002F04.issues",{"title":24,"path":25,"stem":26},"Pull requests","\u002Fguide\u002Fpull-requests","1.guide\u002F05.pull-requests",{"title":28,"path":29,"stem":30},"Review threads","\u002Fguide\u002Fthreads","1.guide\u002F06.threads",{"title":32,"path":33,"stem":34},"Commits and CI","\u002Fguide\u002Fcommits","1.guide\u002F07.commits",{"title":36,"path":37,"stem":38},"Contribution templates","\u002Fguide\u002Ftemplates","1.guide\u002F08.templates",{"title":40,"path":41,"stem":42},"Code search","\u002Fguide\u002Fcode-search","1.guide\u002F09.code-search",{"title":44,"path":45,"stem":46},"Agents","\u002Fguide\u002Fagents","1.guide\u002F10.agents",{"title":48,"path":49,"stem":50},"Custom providers","\u002Fguide\u002Fcustom","1.guide\u002F11.custom",{"title":52,"path":53,"stem":54},"Explorer","\u002Fguide\u002Fexplorer","1.guide\u002F12.explorer","i-lucide-book-open",{"title":57,"path":58,"stem":59,"children":60,"icon":79},"Platforms","\u002Fplatforms","2.platforms\u002F0.index",[61,63,67,71,75],{"title":62,"path":58,"stem":59},"Overview",{"title":64,"path":65,"stem":66},"GitHub","\u002Fplatforms\u002Fgithub","2.platforms\u002F01.github",{"title":68,"path":69,"stem":70},"GitLab","\u002Fplatforms\u002Fgitlab","2.platforms\u002F02.gitlab",{"title":72,"path":73,"stem":74},"Gitea","\u002Fplatforms\u002Fgitea","2.platforms\u002F03.gitea",{"title":76,"path":77,"stem":78},"GitBucket","\u002Fplatforms\u002Fgitbucket","2.platforms\u002F04.gitbucket","i-lucide-library",{"id":81,"title":32,"body":82,"description":875,"extension":876,"links":877,"meta":878,"navigation":259,"path":33,"seo":880,"stem":34,"__hash__":881},"docs\u002F1.guide\u002F07.commits.md",{"type":83,"value":84,"toc":870},"minimark",[85,90,330,364,369,489,511,518,522,593,829,851,859,863,866],[86,87,89],"h2",{"id":88},"commits","Commits",[91,92,97],"pre",{"className":93,"code":94,"language":95,"meta":96,"style":96},"language-ts shiki shiki-themes github-light github-light poimandres","const page = await forge.commits.list(\"owner\", \"repo\", {\n  ref: \"main\",\n  path: \"src\u002F\",\n  since: \"2026-08-01T00:00:00Z\",\n  until: \"2026-09-01T00:00:00Z\",\n  perPage: 50,\n});\n\nconst commit = await forge.commits.get(\"owner\", \"repo\", page.items[0]!.sha);\n","ts","",[98,99,100,162,183,200,217,234,248,254,261],"code",{"__ignoreMap":96},[101,102,105,109,113,116,120,124,128,130,132,136,139,143,147,149,152,154,157,159],"span",{"class":103,"line":104},"line",1,[101,106,108],{"class":107},"s1TYA","const",[101,110,112],{"class":111},"saoiD"," page",[101,114,115],{"class":107}," =",[101,117,119],{"class":118},"sZW6a"," await",[101,121,123],{"class":122},"spVlQ"," forge",[101,125,127],{"class":126},"sKlNE",".",[101,129,88],{"class":122},[101,131,127],{"class":126},[101,133,135],{"class":134},"sULi6","list",[101,137,138],{"class":126},"(",[101,140,142],{"class":141},"scVjq","\"",[101,144,146],{"class":145},"sQ7BG","owner",[101,148,142],{"class":141},[101,150,151],{"class":126},", ",[101,153,142],{"class":141},[101,155,156],{"class":145},"repo",[101,158,142],{"class":141},[101,160,161],{"class":126},", {\n",[101,163,165,169,172,175,178,180],{"class":103,"line":164},2,[101,166,168],{"class":167},"snHMy","  ref",[101,170,171],{"class":126},":",[101,173,174],{"class":141}," \"",[101,176,177],{"class":145},"main",[101,179,142],{"class":141},[101,181,182],{"class":126},",\n",[101,184,186,189,191,193,196,198],{"class":103,"line":185},3,[101,187,188],{"class":167},"  path",[101,190,171],{"class":126},[101,192,174],{"class":141},[101,194,195],{"class":145},"src\u002F",[101,197,142],{"class":141},[101,199,182],{"class":126},[101,201,203,206,208,210,213,215],{"class":103,"line":202},4,[101,204,205],{"class":167},"  since",[101,207,171],{"class":126},[101,209,174],{"class":141},[101,211,212],{"class":145},"2026-08-01T00:00:00Z",[101,214,142],{"class":141},[101,216,182],{"class":126},[101,218,220,223,225,227,230,232],{"class":103,"line":219},5,[101,221,222],{"class":167},"  until",[101,224,171],{"class":126},[101,226,174],{"class":141},[101,228,229],{"class":145},"2026-09-01T00:00:00Z",[101,231,142],{"class":141},[101,233,182],{"class":126},[101,235,237,240,242,246],{"class":103,"line":236},6,[101,238,239],{"class":167},"  perPage",[101,241,171],{"class":126},[101,243,245],{"class":244},"siHFe"," 50",[101,247,182],{"class":126},[101,249,251],{"class":103,"line":250},7,[101,252,253],{"class":126},"});\n",[101,255,257],{"class":103,"line":256},8,[101,258,260],{"emptyLinePlaceholder":259},true,"\n",[101,262,264,266,269,271,273,275,277,279,281,284,286,288,290,292,294,296,298,300,302,305,307,310,313,316,319,322,324,327],{"class":103,"line":263},9,[101,265,108],{"class":107},[101,267,268],{"class":111}," commit",[101,270,115],{"class":107},[101,272,119],{"class":118},[101,274,123],{"class":122},[101,276,127],{"class":126},[101,278,88],{"class":122},[101,280,127],{"class":126},[101,282,283],{"class":134},"get",[101,285,138],{"class":126},[101,287,142],{"class":141},[101,289,146],{"class":145},[101,291,142],{"class":141},[101,293,151],{"class":126},[101,295,142],{"class":141},[101,297,156],{"class":145},[101,299,142],{"class":141},[101,301,151],{"class":126},[101,303,304],{"class":122},"page",[101,306,127],{"class":126},[101,308,309],{"class":122},"items",[101,311,312],{"class":126},"[",[101,314,315],{"class":244},"0",[101,317,318],{"class":126},"]",[101,320,321],{"class":107},"!",[101,323,127],{"class":126},[101,325,326],{"class":122},"sha",[101,328,329],{"class":126},");\n",[331,332,333,335,336,339,340,151,342,151,345,348,349,352,353,151,356,359,360,363],"p",{},[98,334,135],{}," returns ",[98,337,338],{},"CommitSummary"," rows: ",[98,341,326],{},[98,343,344],{},"message",[98,346,347],{},"author"," and ",[98,350,351],{},"committer"," as ",[98,354,355],{},"{ name, email, date }",[98,357,358],{},"parents"," as SHAs, and ",[98,361,362],{},"url",". No files.",[331,365,366,368],{},[98,367,283],{}," adds the changed files:",[91,370,372],{"className":93,"code":371,"language":95,"meta":96,"style":96},"interface Commit extends CommitSummary {\n  files: {\n    path: string;\n    status: ChangedFileStatus;\n    additions: number | null;\n    deletions: number | null;\n  }[];\n  filesComplete: boolean | null;\n}\n",[98,373,374,394,404,418,430,448,463,468,484],{"__ignoreMap":96},[101,375,376,379,383,387,391],{"class":103,"line":104},[101,377,378],{"class":107},"interface",[101,380,382],{"class":381},"sCrqT"," Commit",[101,384,386],{"class":385},"sP0CR"," extends",[101,388,390],{"class":389},"scZRh"," CommitSummary",[101,392,393],{"class":126}," {\n",[101,395,396,400,402],{"class":103,"line":164},[101,397,399],{"class":398},"s0VbO","  files",[101,401,171],{"class":107},[101,403,393],{"class":126},[101,405,406,409,411,415],{"class":103,"line":185},[101,407,408],{"class":398},"    path",[101,410,171],{"class":107},[101,412,414],{"class":413},"s8yaW"," string",[101,416,417],{"class":126},";\n",[101,419,420,423,425,428],{"class":103,"line":202},[101,421,422],{"class":398},"    status",[101,424,171],{"class":107},[101,426,427],{"class":381}," ChangedFileStatus",[101,429,417],{"class":126},[101,431,432,435,437,440,443,446],{"class":103,"line":219},[101,433,434],{"class":398},"    additions",[101,436,171],{"class":107},[101,438,439],{"class":413}," number",[101,441,442],{"class":107}," |",[101,444,445],{"class":413}," null",[101,447,417],{"class":126},[101,449,450,453,455,457,459,461],{"class":103,"line":236},[101,451,452],{"class":398},"    deletions",[101,454,171],{"class":107},[101,456,439],{"class":413},[101,458,442],{"class":107},[101,460,445],{"class":413},[101,462,417],{"class":126},[101,464,465],{"class":103,"line":250},[101,466,467],{"class":126},"  }[];\n",[101,469,470,473,475,478,480,482],{"class":103,"line":256},[101,471,472],{"class":398},"  filesComplete",[101,474,171],{"class":107},[101,476,477],{"class":413}," boolean",[101,479,442],{"class":107},[101,481,445],{"class":413},[101,483,417],{"class":126},[101,485,486],{"class":103,"line":263},[101,487,488],{"class":126},"}\n",[331,490,491,492,495,496,499,500,495,502,505,506,508,509,127],{},"Still no patches. GitHub pages are collected up to its cap of 3 000 files and ",[98,493,494],{},"filesComplete"," is ",[98,497,498],{},"true"," when GitHub itself confirms the list is complete. GitLab reads at most 10 000 rows per call. When a provider or a safety limit makes completeness unknowable, ",[98,501,494],{},[98,503,504],{},"null",", not a hopeful ",[98,507,498],{},". Gitea does not report counts per file and GitLab withholds them for collapsed diffs, both come back as ",[98,510,504],{},[331,512,513,514,517],{},"Gitea rejects the ",[98,515,516],{},"path"," filter. Its API ignores pagination limits for it and would answer with the entire history, so the call fails early instead of downloading a repo. The other filters work.",[86,519,521],{"id":520},"ci-runs","CI runs",[91,523,525],{"className":93,"code":524,"language":95,"meta":96,"style":96},"const runs = await forge.ciRuns.list(\"owner\", \"repo\", { branch: \"main\", perPage: 10 });\n",[98,526,527],{"__ignoreMap":96},[101,528,529,531,534,536,538,540,542,545,547,549,551,553,555,557,559,561,563,565,568,571,573,575,577,579,582,585,587,590],{"class":103,"line":104},[101,530,108],{"class":107},[101,532,533],{"class":111}," runs",[101,535,115],{"class":107},[101,537,119],{"class":118},[101,539,123],{"class":122},[101,541,127],{"class":126},[101,543,544],{"class":122},"ciRuns",[101,546,127],{"class":126},[101,548,135],{"class":134},[101,550,138],{"class":126},[101,552,142],{"class":141},[101,554,146],{"class":145},[101,556,142],{"class":141},[101,558,151],{"class":126},[101,560,142],{"class":141},[101,562,156],{"class":145},[101,564,142],{"class":141},[101,566,567],{"class":126},", {",[101,569,570],{"class":167}," branch",[101,572,171],{"class":126},[101,574,174],{"class":141},[101,576,177],{"class":145},[101,578,142],{"class":141},[101,580,581],{"class":126},",",[101,583,584],{"class":167}," perPage",[101,586,171],{"class":126},[101,588,589],{"class":244}," 10",[101,591,592],{"class":126}," });\n",[91,594,596],{"className":93,"code":595,"language":95,"meta":96,"style":96},"interface CiRun {\n  id: string;\n  branch: string;\n  revision: string;\n  status: \"queued\" | \"in_progress\" | \"waiting\" | \"completed\";\n  conclusion:\n    | \"success\"\n    | \"failure\"\n    | \"cancelled\"\n    | \"skipped\"\n    | \"neutral\"\n    | \"timed_out\"\n    | \"action_required\"\n    | \"stale\"\n    | \"startup_failure\"\n    | null; \u002F\u002F no outcome yet\n  url: string;\n}\n",[98,597,598,607,618,629,640,683,691,704,715,726,738,750,762,774,786,798,812,824],{"__ignoreMap":96},[101,599,600,602,605],{"class":103,"line":104},[101,601,378],{"class":107},[101,603,604],{"class":381}," CiRun",[101,606,393],{"class":126},[101,608,609,612,614,616],{"class":103,"line":164},[101,610,611],{"class":398},"  id",[101,613,171],{"class":107},[101,615,414],{"class":413},[101,617,417],{"class":126},[101,619,620,623,625,627],{"class":103,"line":185},[101,621,622],{"class":398},"  branch",[101,624,171],{"class":107},[101,626,414],{"class":413},[101,628,417],{"class":126},[101,630,631,634,636,638],{"class":103,"line":202},[101,632,633],{"class":398},"  revision",[101,635,171],{"class":107},[101,637,414],{"class":413},[101,639,417],{"class":126},[101,641,642,645,647,649,652,654,656,658,661,663,665,667,670,672,674,676,679,681],{"class":103,"line":219},[101,643,644],{"class":398},"  status",[101,646,171],{"class":107},[101,648,174],{"class":141},[101,650,651],{"class":145},"queued",[101,653,142],{"class":141},[101,655,442],{"class":107},[101,657,174],{"class":141},[101,659,660],{"class":145},"in_progress",[101,662,142],{"class":141},[101,664,442],{"class":107},[101,666,174],{"class":141},[101,668,669],{"class":145},"waiting",[101,671,142],{"class":141},[101,673,442],{"class":107},[101,675,174],{"class":141},[101,677,678],{"class":145},"completed",[101,680,142],{"class":141},[101,682,417],{"class":126},[101,684,685,688],{"class":103,"line":236},[101,686,687],{"class":398},"  conclusion",[101,689,690],{"class":107},":\n",[101,692,693,696,698,701],{"class":103,"line":250},[101,694,695],{"class":107},"    |",[101,697,174],{"class":141},[101,699,700],{"class":145},"success",[101,702,703],{"class":141},"\"\n",[101,705,706,708,710,713],{"class":103,"line":256},[101,707,695],{"class":107},[101,709,174],{"class":141},[101,711,712],{"class":145},"failure",[101,714,703],{"class":141},[101,716,717,719,721,724],{"class":103,"line":263},[101,718,695],{"class":107},[101,720,174],{"class":141},[101,722,723],{"class":145},"cancelled",[101,725,703],{"class":141},[101,727,729,731,733,736],{"class":103,"line":728},10,[101,730,695],{"class":107},[101,732,174],{"class":141},[101,734,735],{"class":145},"skipped",[101,737,703],{"class":141},[101,739,741,743,745,748],{"class":103,"line":740},11,[101,742,695],{"class":107},[101,744,174],{"class":141},[101,746,747],{"class":145},"neutral",[101,749,703],{"class":141},[101,751,753,755,757,760],{"class":103,"line":752},12,[101,754,695],{"class":107},[101,756,174],{"class":141},[101,758,759],{"class":145},"timed_out",[101,761,703],{"class":141},[101,763,765,767,769,772],{"class":103,"line":764},13,[101,766,695],{"class":107},[101,768,174],{"class":141},[101,770,771],{"class":145},"action_required",[101,773,703],{"class":141},[101,775,777,779,781,784],{"class":103,"line":776},14,[101,778,695],{"class":107},[101,780,174],{"class":141},[101,782,783],{"class":145},"stale",[101,785,703],{"class":141},[101,787,789,791,793,796],{"class":103,"line":788},15,[101,790,695],{"class":107},[101,792,174],{"class":141},[101,794,795],{"class":145},"startup_failure",[101,797,703],{"class":141},[101,799,801,803,805,808],{"class":103,"line":800},16,[101,802,695],{"class":107},[101,804,445],{"class":413},[101,806,807],{"class":126},"; ",[101,809,811],{"class":810},"sjhu3","\u002F\u002F no outcome yet\n",[101,813,815,818,820,822],{"class":103,"line":814},17,[101,816,817],{"class":398},"  url",[101,819,171],{"class":107},[101,821,414],{"class":413},[101,823,417],{"class":126},[101,825,827],{"class":103,"line":826},18,[101,828,488],{"class":126},[331,830,831,832,835,836,838,839,841,842,844,845,847,848,850],{},"One row is a GitHub Actions run, a GitLab pipeline or a Gitea Actions run. Each platform's vocabulary lands on the two enums: a GitLab ",[98,833,834],{},"running"," pipeline is ",[98,837,660],{}," with a ",[98,840,504],{}," conclusion, a GitHub ",[98,843,678],{}," run carries its conclusion, a Gitea ",[98,846,669],{}," run is ",[98,849,669],{},". Three vocabularies, two fields, done.",[331,852,853,858],{},[854,855,857],"a",{"href":856},"\u002Fguide\u002Fpull-requests#checks","Pull request checks"," use the same two enums for whatever the platform pins to a head SHA.",[86,860,862],{"id":861},"what-is-left-out","What is left out",[331,864,865],{},"Repository content, trees, branches, tags, webhooks and admin. On purpose. The scope is the review workflow: what is proposed, what was said about it, and whether it passed.",[867,868,869],"style",{},"html pre.shiki code .s1TYA, html code.shiki .s1TYA{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#91B4D5}html pre.shiki code .saoiD, html code.shiki .saoiD{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#E4F0FB}html pre.shiki code .sZW6a, html code.shiki .sZW6a{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#5DE4C7C0}html pre.shiki code .spVlQ, html code.shiki .spVlQ{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E4F0FB}html pre.shiki code .sKlNE, html code.shiki .sKlNE{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#A6ACCD}html pre.shiki code .sULi6, html code.shiki .sULi6{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#E4F0FBD0}html pre.shiki code .scVjq, html code.shiki .scVjq{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#A6ACCD}html pre.shiki code .sQ7BG, html code.shiki .sQ7BG{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#5DE4C7}html pre.shiki code .snHMy, html code.shiki .snHMy{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#ADD7FF}html pre.shiki code .siHFe, html code.shiki .siHFe{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#5DE4C7}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sCrqT, html code.shiki .sCrqT{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#A6ACCDC0}html pre.shiki code .sP0CR, html code.shiki .sP0CR{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#5DE4C7}html pre.shiki code .scZRh, html code.shiki .scZRh{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#ADD7FF}html pre.shiki code .s0VbO, html code.shiki .s0VbO{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#A6ACCD}html pre.shiki code .s8yaW, html code.shiki .s8yaW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#A6ACCDC0}html pre.shiki code .sjhu3, html code.shiki .sjhu3{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#767C9DB0;--shiki-dark-font-style:italic}",{"title":96,"searchDepth":164,"depth":164,"links":871},[872,873,874],{"id":88,"depth":164,"text":89},{"id":520,"depth":164,"text":521},{"id":861,"depth":164,"text":862},"Commit history without patches, one commit with its changed files, and CI runs with one status and one conclusion across GitHub Actions, GitLab pipelines and Gitea Actions.","md",null,{"icon":879},"i-lucide-git-commit-horizontal",{"title":32,"description":875},"jWG1DRqf8u-QOpdc11LNswVcXrxH6cXXD40oGSWpWTw",[883,885],{"title":28,"path":29,"stem":30,"description":884,"children":-1},"Inline review conversations as one Thread, with reply, resolve and unresolve that take the same id back.",{"title":36,"path":37,"stem":38,"description":886,"children":-1},"Find the effective issue and pull request templates of a repository, with their scope and source, and read one in full by its key.",1788525966686]