Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
c51c127
docs: add how to for github to coder tasks
david-fraley Oct 31, 2025
a85c5b8
Merge branch 'main' into df/gh-to-tasks-docs
david-fraley Nov 14, 2025
58c73e5
updated background
david-fraley Nov 14, 2025
89f3e7c
finish step1 of setup
david-fraley Nov 14, 2025
c0df3c3
finished first pass
david-fraley Nov 14, 2025
787d3db
i can't spell
david-fraley Nov 14, 2025
ea91365
update page title
david-fraley Nov 14, 2025
f8e85fa
code review updates
david-fraley Nov 18, 2025
02ba719
Merge branch 'main' into df/gh-to-tasks-docs
david-fraley Nov 18, 2025
8251e37
chore: add "positron:" to allowed external app protocols (#20803)
AlexanderSarson Nov 19, 2025
7557cd7
fix: rename `AI Governance` to `AI Bridge` (#20790)
jakehwll Nov 19, 2025
c68fe66
feat: add exp scaletest task-status command (#20761)
spikecurtis Nov 19, 2025
38cd53e
feat: add cleanup to task-status load test runner (#20799)
spikecurtis Nov 19, 2025
fe0574b
fix: wait for build in task status load generator (#20800)
spikecurtis Nov 19, 2025
88d07b4
feat(site): add startup script error alerts to Task Page (#20820)
DanielleMaywood Nov 19, 2025
6ba3f3f
test(coderd/workspaceapps/apptest): fix lastusedat assertion for all …
mafredri Nov 19, 2025
7ce373d
chore: protect build timings insert for invalid enums (#20821)
Emyrk Nov 19, 2025
41ac833
feat: fix build timeline to include entire stage timings (#20805)
Emyrk Nov 19, 2025
091a0fe
chore(docs): document preset description and icon fields (#20705)
johnstcn Nov 19, 2025
fd06530
feat(agent): add agent unit manager (#20715)
SasSwart Nov 19, 2025
401377d
fix(site): fix flaky Chromatic tests (#20808)
ssncferreira Nov 19, 2025
8ef5f4a
chore(site): add storybook stories for task initialization states (#2…
ssncferreira Nov 19, 2025
e2d3ac8
chore: add positron icon (#20780)
DevelopmentCats Nov 19, 2025
8f158e6
chore: enable debug logs over playwright (#20784)
code-asher Nov 20, 2025
48a4373
chore: bump golang.org/x/crypto from 0.44.0 to 0.45.0 (#20838)
dependabot[bot] Nov 20, 2025
7607291
fix: add Windows stub for CacheTFProviders (#20840)
blinkagent[bot] Nov 20, 2025
1a072f2
fix: use API, not request context to insert audit/connection logs (#2…
spikecurtis Nov 20, 2025
eff1144
fix(site/src/modules/apps): distinguish JB Toolbox from Gateway (#20830)
phorcys420 Nov 20, 2025
2a43edc
chore(docs/admin/users): fix typo in headless auth page (#20841)
phorcys420 Nov 20, 2025
7e8ac64
fix: prevent tooltip appearing on dropdown open (#20765)
jaaydenh Nov 20, 2025
28e8bf9
feat: add prebuild invalidation via last_invalidated_at timestamp (#2…
mtojek Nov 20, 2025
477b2be
fix: set a default for presets to match the app default (#20848)
jaaydenh Nov 20, 2025
e25b596
docs: fix ANTHROPIC_BASE_URL example in AI Bridge client docs (#20853)
matifali Nov 21, 2025
62a90ac
fix(site): hide empty tasks list when templates are empty (#20845)
DanielleMaywood Nov 21, 2025
b3d4efe
feat: add configurable retention for aibridge (#20828)
dannykopping Nov 21, 2025
e1d4e5a
feat(agent): add agent socket API (#20717)
SasSwart Nov 21, 2025
84f1638
feat: associate task icon with workspaces (#20834)
ssncferreira Nov 21, 2025
74fb8b4
fix(site): do not render invalid task status URI, fix GitHub new link…
mafredri Nov 21, 2025
380272a
test: add golden file test for ConvertState (#20832)
Emyrk Nov 21, 2025
b9400ce
fix: ensure embedded-postgres state is wiped between retries (#20809)
zedkipp Nov 21, 2025
ff251d0
chore: bump coder/mux/coder from 1.0.0 to 1.0.1 in /dogfood/coder (#2…
dependabot[bot] Nov 24, 2025
0025f7d
chore: bump coder/jetbrains/coder from 1.1.1 to 1.2.0 in /dogfood/cod…
dependabot[bot] Nov 24, 2025
37221ee
chore: bump coder/claude-code/coder from 4.1.0 to 4.2.1 in /dogfood/c…
dependabot[bot] Nov 24, 2025
9d20482
chore: bump coder/code-server/coder from 1.3.1 to 1.4.0 in /dogfood/c…
dependabot[bot] Nov 24, 2025
62733a1
chore: bump coder/code-server/coder from 1.3.1 to 1.4.0 in /dogfood/c…
dependabot[bot] Nov 24, 2025
987501c
chore: update OIDC scopes to include offline_access (#20876)
rowansmithau Nov 24, 2025
8f9d947
chore: upgrade `coder/serpent` to allow more readable durations (#20886)
dannykopping Nov 24, 2025
b013874
chore: update monaco-editor to resolve DOMPurify CVEs (#20861)
jdomeracki-coder Nov 24, 2025
9a47207
chore(examples/templates/tasks-docker): bump coder/claude-code/coder …
dependabot[bot] Nov 24, 2025
5faa61c
chore: bump github.com/coreos/go-oidc/v3 from 3.16.0 to 3.17.0 (#20888)
dependabot[bot] Nov 24, 2025
f00ce50
chore: bump github.com/aws/aws-sdk-go-v2/config from 1.31.3 to 1.32.1…
dependabot[bot] Nov 24, 2025
daf61e0
chore: update github.com/coder/clistat to v1.1.2 (#20894)
DanielleMaywood Nov 24, 2025
5754d8c
chore(docs): standardize "AIBridge" to "AI Bridge" in documentation (…
matifali Nov 24, 2025
8150f92
chore: bump rust from `cef0ec9` to `5218a2b` in /dogfood/coder (#20895)
dependabot[bot] Nov 24, 2025
a7cad36
fix: improve http connection pooling for smtp notifications (#20605)
kacpersaw Nov 24, 2025
875fd04
fix: fix API docs manifest generation (#20897)
matifali Nov 24, 2025
c44dc78
feat: expose `aibridged` metrics (#20865)
dannykopping Nov 24, 2025
b101461
feat: purge expired api keys in dbpurge (#20863)
Emyrk Nov 24, 2025
eda22bd
test: move TestConvertStateGolden to only linux + mac (#20901)
Emyrk Nov 24, 2025
43d78b8
chore: bump github.com/prometheus/common from 0.65.0 to 0.67.4 (#20890)
dependabot[bot] Nov 24, 2025
36a7477
chore: bump google.golang.org/grpc from 1.76.0 to 1.77.0 (#20892)
dependabot[bot] Nov 24, 2025
db798b3
feat(helm): add priorityClassName support (#20678)
leo-wr-ps Nov 24, 2025
fae279e
feat: add documentation check workflow for pull requests (#20907)
DevelopmentCats Nov 24, 2025
b19e6ce
refactor: use a global tooltip provider with a consistent 100 millise…
jaaydenh Nov 24, 2025
5fb52dc
fix: remove inflight interceptions from aibridge returned values (#20…
jakehwll Nov 24, 2025
40dec76
perf: improve performance of metricsAggregator path by reducing memor…
cstyan Nov 24, 2025
46ea50e
fix: allow agents to be created on dormant workspaces (#20909)
DanielleMaywood Nov 25, 2025
3b80b90
chore: document key scopes for OpenAI and Anthropic for `aibridge` (#…
dannykopping Nov 25, 2025
fd85a25
fix: mock Agent querying OS for listening ports in tests (#20842)
spikecurtis Nov 25, 2025
f99e219
feat(coderd): add task prompt modification endpoint (#20811)
DanielleMaywood Nov 25, 2025
f85f51b
docs: update dev containers documentation to reflect GA status (#20847)
DanielleMaywood Nov 25, 2025
d57b7f6
chore: update AI client compatibility table in AI Bridge documentatio…
matifali Nov 25, 2025
9a26a3c
feat: add display name field for tasks (#20856)
ssncferreira Nov 25, 2025
190b896
feat(cli): promote tasks commands from experimental to GA (#20916)
mafredri Nov 25, 2025
ad38636
chore: add @jdomeracki-coder as CODEOWNER of .github dir (#20919)
dannykopping Nov 25, 2025
b4ca87c
chore: update boundary to v0.2.1 (#20920)
evgeniy-scherbina Nov 25, 2025
7c15cc6
perf(coderd/database): limit `GetLatestWorkspaceAppStatusByAppID` to …
mafredri Nov 25, 2025
88ec7ed
chore: promote tasks to stable from experimental (#20921)
DanielleMaywood Nov 25, 2025
7721f6d
feat: promote Tasks to GA (#20923)
mafredri Nov 25, 2025
9bc661a
spelling fixes
david-fraley Nov 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 8 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -756,6 +756,14 @@ jobs:
path: ./site/test-results/**/*.webm
retention-days: 7

- name: Upload debug log
if: always() && github.actor != 'dependabot[bot]' && runner.os == 'Linux' && !github.event.pull_request.head.repo.fork
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: coderd-debug-logs${{ matrix.variant.premium && '-premium' || '' }}
path: ./site/e2e/test-results/debug.log
retention-days: 7

- name: Upload pprof dumps
if: always() && github.actor != 'dependabot[bot]' && runner.os == 'Linux' && !github.event.pull_request.head.repo.fork
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
Expand Down
205 changes: 205 additions & 0 deletions .github/workflows/doc-check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
# This workflow checks if a PR requires documentation updates.
# It creates a Coder Task that uses AI to analyze the PR changes,
# search existing docs, and comment with recommendations.
#
# Triggered by: Adding the "doc-check" label to a PR, or manual dispatch.

name: AI Documentation Check

on:
pull_request:
types:
- labeled
workflow_dispatch:
inputs:
pr_url:
description: "Pull Request URL to check"
required: true
type: string
template_preset:
description: "Template preset to use"
required: false
default: ""
type: string

jobs:
doc-check:
name: Analyze PR for Documentation Updates Needed
runs-on: ubuntu-latest
if: |
(github.event.label.name == 'doc-check' || github.event_name == 'workflow_dispatch') &&
(github.event.pull_request.draft == false || github.event_name == 'workflow_dispatch')
timeout-minutes: 30
env:
CODER_URL: ${{ secrets.DOC_CHECK_CODER_URL }}
CODER_SESSION_TOKEN: ${{ secrets.DOC_CHECK_CODER_SESSION_TOKEN }}
permissions:
contents: read
pull-requests: write
actions: write

steps:
- name: Determine PR Context
id: determine-context
env:
GITHUB_ACTOR: ${{ github.actor }}
GITHUB_EVENT_NAME: ${{ github.event_name }}
GITHUB_EVENT_PR_HTML_URL: ${{ github.event.pull_request.html_url }}
GITHUB_EVENT_PR_NUMBER: ${{ github.event.pull_request.number }}
GITHUB_EVENT_SENDER_ID: ${{ github.event.sender.id }}
GITHUB_EVENT_SENDER_LOGIN: ${{ github.event.sender.login }}
INPUTS_PR_URL: ${{ inputs.pr_url }}
INPUTS_TEMPLATE_PRESET: ${{ inputs.template_preset || '' }}
GH_TOKEN: ${{ github.token }}
run: |
echo "Using template preset: ${INPUTS_TEMPLATE_PRESET}"
echo "template_preset=${INPUTS_TEMPLATE_PRESET}" >> "${GITHUB_OUTPUT}"

# For workflow_dispatch, use the provided PR URL
if [[ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" ]]; then
if ! GITHUB_USER_ID=$(gh api "users/${GITHUB_ACTOR}" --jq '.id'); then
echo "::error::Failed to get GitHub user ID for actor ${GITHUB_ACTOR}"
exit 1
fi
echo "Using workflow_dispatch actor: ${GITHUB_ACTOR} (ID: ${GITHUB_USER_ID})"
echo "github_user_id=${GITHUB_USER_ID}" >> "${GITHUB_OUTPUT}"
echo "github_username=${GITHUB_ACTOR}" >> "${GITHUB_OUTPUT}"

echo "Using PR URL: ${INPUTS_PR_URL}"
# Convert /pull/ to /issues/ for create-task-action compatibility
ISSUE_URL="${INPUTS_PR_URL/\/pull\//\/issues\/}"
echo "pr_url=${ISSUE_URL}" >> "${GITHUB_OUTPUT}"

# Extract PR number from URL for later use
PR_NUMBER=$(echo "${INPUTS_PR_URL}" | grep -oP '(?<=pull/)\d+')
echo "pr_number=${PR_NUMBER}" >> "${GITHUB_OUTPUT}"

elif [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
GITHUB_USER_ID=${GITHUB_EVENT_SENDER_ID}
echo "Using label adder: ${GITHUB_EVENT_SENDER_LOGIN} (ID: ${GITHUB_USER_ID})"
echo "github_user_id=${GITHUB_USER_ID}" >> "${GITHUB_OUTPUT}"
echo "github_username=${GITHUB_EVENT_SENDER_LOGIN}" >> "${GITHUB_OUTPUT}"

echo "Using PR URL: ${GITHUB_EVENT_PR_HTML_URL}"
# Convert /pull/ to /issues/ for create-task-action compatibility
ISSUE_URL="${GITHUB_EVENT_PR_HTML_URL/\/pull\//\/issues\/}"
echo "pr_url=${ISSUE_URL}" >> "${GITHUB_OUTPUT}"
echo "pr_number=${GITHUB_EVENT_PR_NUMBER}" >> "${GITHUB_OUTPUT}"

else
echo "::error::Unsupported event type: ${GITHUB_EVENT_NAME}"
exit 1
fi

- name: Extract changed files and build prompt
id: extract-context
env:
PR_URL: ${{ steps.determine-context.outputs.pr_url }}
PR_NUMBER: ${{ steps.determine-context.outputs.pr_number }}
GH_TOKEN: ${{ github.token }}
run: |
echo "Analyzing PR #${PR_NUMBER}"

# Build task prompt - using unquoted heredoc so variables expand
TASK_PROMPT=$(cat <<EOF
Review PR #${PR_NUMBER} and determine if documentation needs updating or creating.

PR URL: ${PR_URL}

WORKFLOW:
1. Setup (repo is pre-cloned at ~/coder)
cd ~/coder
git fetch origin pull/${PR_NUMBER}/head:pr-${PR_NUMBER}
git checkout pr-${PR_NUMBER}

2. Get PR info
Use GitHub MCP tools to get PR title, body, and diff
Or use: git diff main...pr-${PR_NUMBER}

3. Understand Changes
Read the diff and identify what changed
Ask: Is this user-facing? Does it change behavior? Is it a new feature?

4. Search for Related Docs
cat ~/coder/docs/manifest.json | jq '.routes[] | {title, path}' | head -50
grep -ri "relevant_term" ~/coder/docs/ --include="*.md"

5. Decide
NEEDS DOCS if: New feature, API change, CLI change, behavior change, user-visible
NO DOCS if: Internal refactor, test-only, already documented, non-user-facing, dependency updates
FIRST check: Did this PR already update docs? If yes and complete, say "No Changes Needed"

6. Comment on the PR using this format

COMMENT FORMAT:
## 📚 Documentation Check

### ✅ Updates Needed
- **[docs/path/file.md](github_link)** - Brief what needs changing

### 📝 New Docs Needed
- **docs/suggested/location.md** - What should be documented

### ✨ No Changes Needed
[Reason: Documents already updated in PR | Internal changes only | Test-only | No user-facing impact]

---
*This comment was generated by an AI Agent through [Coder Tasks](https://coder.com/docs/ai-coder/tasks)*

DOCS STRUCTURE:
Read ~/coder/docs/manifest.json for the complete documentation structure.
Common areas include: reference/, admin/, user-guides/, ai-coder/, install/, tutorials/
But check manifest.json - it has everything.

EOF
)

# Output the prompt
{
echo "task_prompt<<EOFOUTPUT"
echo "${TASK_PROMPT}"
echo "EOFOUTPUT"
} >> "${GITHUB_OUTPUT}"

- name: Checkout create-task-action
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 1
path: ./.github/actions/create-task-action
persist-credentials: false
ref: main
repository: coder/create-task-action

- name: Create Coder Task for Documentation Check
id: create_task
uses: ./.github/actions/create-task-action
with:
coder-url: ${{ secrets.DOC_CHECK_CODER_URL }}
coder-token: ${{ secrets.DOC_CHECK_CODER_SESSION_TOKEN }}
coder-organization: "default"
coder-template-name: coder
coder-template-preset: ${{ steps.determine-context.outputs.template_preset }}
coder-task-name-prefix: doc-check
coder-task-prompt: ${{ steps.extract-context.outputs.task_prompt }}
github-user-id: ${{ steps.determine-context.outputs.github_user_id }}
github-token: ${{ github.token }}
github-issue-url: ${{ steps.determine-context.outputs.pr_url }}
comment-on-issue: true

- name: Write outputs
env:
TASK_CREATED: ${{ steps.create_task.outputs.task-created }}
TASK_NAME: ${{ steps.create_task.outputs.task-name }}
TASK_URL: ${{ steps.create_task.outputs.task-url }}
PR_URL: ${{ steps.determine-context.outputs.pr_url }}
run: |
{
echo "## Documentation Check Task"
echo ""
echo "**PR:** ${PR_URL}"
echo "**Task created:** ${TASK_CREATED}"
echo "**Task name:** ${TASK_NAME}"
echo "**Task URL:** ${TASK_URL}"
echo ""
echo "The Coder task is analyzing the PR changes and will comment with documentation recommendations."
} >> "${GITHUB_STEP_SUMMARY}"
1 change: 1 addition & 0 deletions .github/workflows/typos.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ IST = "IST"
MacOS = "macOS"
AKS = "AKS"
O_WRONLY = "O_WRONLY"
AIBridge = "AI Bridge"

[default.extend-words]
AKS = "AKS"
Expand Down
2 changes: 2 additions & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,5 @@ coderd/schedule/autostop.go @deansheather @DanielleMaywood
# well as guidance from revenue.
coderd/usage/ @deansheather @spikecurtis
enterprise/coderd/usage/ @deansheather @spikecurtis

.github/ @jdomeracki-coder
10 changes: 10 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,7 @@ AIBRIDGED_MOCKS := \
GEN_FILES := \
tailnet/proto/tailnet.pb.go \
agent/proto/agent.pb.go \
agent/agentsocket/proto/agentsocket.pb.go \
provisionersdk/proto/provisioner.pb.go \
provisionerd/proto/provisionerd.pb.go \
vpn/vpn.pb.go \
Expand Down Expand Up @@ -696,6 +697,7 @@ gen/mark-fresh:
agent/proto/agent.pb.go \
provisionersdk/proto/provisioner.pb.go \
provisionerd/proto/provisionerd.pb.go \
agent/agentsocket/proto/agentsocket.pb.go \
vpn/vpn.pb.go \
enterprise/aibridged/proto/aibridged.pb.go \
coderd/database/dump.sql \
Expand Down Expand Up @@ -800,6 +802,14 @@ agent/proto/agent.pb.go: agent/proto/agent.proto
--go-drpc_opt=paths=source_relative \
./agent/proto/agent.proto

agent/agentsocket/proto/agentsocket.pb.go: agent/agentsocket/proto/agentsocket.proto
protoc \
--go_out=. \
--go_opt=paths=source_relative \
--go-drpc_out=. \
--go-drpc_opt=paths=source_relative \
./agent/agentsocket/proto/agentsocket.proto

provisionersdk/proto/provisioner.pb.go: provisionersdk/proto/provisioner.proto
protoc \
--go_out=. \
Expand Down
Loading
Loading