Changelog
Note
This is a mainline Coder release. We advise enterprise customers without a staging environment to install our latest stable release while we refine this version. Learn more about our Release Schedule.
BREAKING CHANGES
- Allow disabling notifications (#15509, 576e1f4) (@DanielleMaywood)
Disables notifications when both $CODER_NOTIFICATIONS_WEBHOOK_ENDPOINT and $CODER_EMAIL_SMARTHOST are unset.
Drops the default value for $CODER_EMAIL_SMARTHOST. - Extract provisioner tags from coder_workspace_tags data source (#15578, 1cdc3e8) (@johnstcn)
As this effectively blocks template creation if
coder_workspace_tags
is malformed or references anything other than a Terraform variable orcoder_parameter
, this is marked as a breaking change.
Features
- Add prometheus metric for tracking user statuses (#15281, 3de98c2) (@coadler)
Adds the ability to track total users in the platform by status; admins can track license consumption over time by scraping this endpoint (
coderd_api_total_user_count
). - Add audit logs for user dormancy events (#15298, 088f219) (@coadler)
- Add user-scoped tailnet API endpoint (
api/v2/tailnet
) with a new RPC stream for receiving updates on workspaces owned by a specific user 0(#14847, b1298a3) (@ethanndickson) - Add Premium features page in deployment settings (#15094, d4131ba) (@jaaydenh)
Adds a page in deployment settings to preview features available under our Premium license. Some features were previously undiscoverable.
- Add support for multiple tunnel destinations in tailnet for CoderVPN (#15409, e5661c2) (@spikecurtis)
- Add workspace updates controller (#15506, 08216aa) (@spikecurtis)
- Set DNS hostnames in workspace updates controller (#15507, 916df4d) (@spikecurtis)
- Add support for WorkspaceUpdates to WebsocketDialer (#15534, 747f7ce) (@spikecurtis)
- Change port-forward to opportunistically listen on IPv6 (#15640, e6506f0) (@spikecurtis)
- Add agent exec pkg to enable later replacement of agent process priority management (#15577, bbc549d) (@sreya)
- CLI: Rotate file logs for coderd (#15438, d6442db) (@defelmnq)
We already rotated agent logs, this uses the same logic for
CODER_LOGGING_HUMAN
. - Server: Update API to allow filtering provisioner daemons by tags (#15448, 814dd6f) (@SasSwart)
Prerequisite for several improvements to the UX when no provisioner is available for a job.
- Server: Add endpoint (
/organizations/{org}/provisionerkeys
) to fetch provisioner key details (#15505, a518017) (@defelmnq) - Examples: Promote module usage in example templates (#15517, f9d6698) (@phorcys420)
- Helm: Support deploying multiple provisioners in same namespace (#15637, 7876dc5) (@johnstcn)
- Provisioner: Add support for
workspace_owner_login_type
(#15499, 4a6b28f) (@johnstcn)Enables
login_type
to be added to thecoder_workspace_owner
data source in the Coder Terraform provider (terraform-provider-coder/#235). - Provisioner: Allow variadic tags in provisionersdk.MutateTags (#15518, aca5be5) (@johnstcn)
- Provisioner: Implement WorkspaceTagDefaultsFromFile (#15236, bebc38e) (@johnstcn)
- Dashboard: Add agent connection timings to workspace build timings UI (#15276, e232aee) (@BrunoQuaresma)
Workspace build timing UI now shows agent connection time in
main
step of startup.
- Dashboard: Warn on provisioner health during builds
Previously, there was no clean method to diagnose template create issues caused by provisioners.
This Adds warning alerts to log drawers for templates and template versions when provisioner health issues are encountered.Updating a template version with no provisioners:
Build Errors for template versions now show tags:
Updating a template version with provisioners that are busy or unresponsive:
Creating a new template with provisioners that are busy or unresponsive:
Creating a new template when there are no provisioners to do the build:
- Dashboard: Add current license consumption to general deplyoment settings
Shows point-in-time license utilization. Later, we will be adding seat utilization over time.
- Networking: Add workspace updates support to Controller (#15529, 16992ee) (@spikecurtis)
- Networking: Add alias with username and short alias to DNS (#15585, 85c3c4c) (@spikecurtis)
Bug fixes
- Show template name on workspace page when template display name is unset (#15262, bbd2dd8) (@aslilac)
- Check correct default during
template push
from stdin (#15293, 371a2e1) (@ethanndickson) - Fix an 500 response when querying workspaces by user name (#15305, 9d03e04) (@Emyrk)
- Fix Listen/Unlisten race on Pubsub (#15315, 005ea53) (@spikecurtis)
- Allow workspace owners to read build timings (#15364, 8024c1d) (@Emyrk)
- Improve password validation flow by reducing complexity (#15132, 4fe2c5f) (@defelmnq)
- Fix broken flow when uploading template zip file in the UI (#15410, 1736309) (@mtojek)
- Fix loss of buffered input on cliui.Prompt (#15421, 71dc91e) (@spikecurtis)
- Set content type when uploading edited template to avoid missing type (#15440, d2e4969) (@ethanndickson)
- Support windows specific zip mime type for template uploads (#15442, f7cbf5d) (@ethanndickson)
- Stop logging error when template schedule query is canceled (#15402, d1305ac) (@spikecurtis)
- Make GetWorkspacesEligibleForTransition return less false-positives to reduce DB load (#15429, f2fe379) (@DanielleMaywood)
- Remove hardcoded built-in image for Docker template (#15504, d3eb896) (@bpmct)
- Use explicit API versions for agent and tailnet (#15508, 4080295) (@spikecurtis)
- Add error that provisionerkeys require the externalprovisioners feature, replacing previously misleading message (#15541, 968c52b) (@aslilac)
- Fix tailnet resume using incorrect DB reference (#15522, 48bb452) (@sreya)
Fixes an issue where failing to instantiate unrelated keycaches does not fatally error out.
- Fix panic while tearing down reconnecting PTY (#15615, 103824f) (@spikecurtis)
- Fix hang in teardown of TestConn_CoordinatorRollingRestart (#15624, b5fbfd7) (@spikecurtis)
- Deduplicate agent script timings (#15631, f3e1dd8) (@BrunoQuaresma)
- Fix external auth provider logos not displaying on light theme by using
ExternalImage
(#15572, 32b4b77) (@aslilac) - Improve log on provisioner daemon started with provisioner key (#15588, a8becfb) (@defelmnq)
- Fix parsing of IPv6 addresses in coder port-forward (#15627, 648cdd0) (@spikecurtis)
- Fix goroutine memory leak in log streaming over websocket (#15709, 148a5a3) (@spikecurtis)
- CLI: Properly handle build log streaming during
coder ping
(#15600, 6e7f65b) (@ethanndickson) - Server: Ensure correct RBAC when enqueueing notifications (#15478, 30e6fbd) (@johnstcn)
- Server: Prevent NPE if no user link exists (#15289, 591cefa) (@johnstcn)
- Server: Ensure that clearing invalid oauth refresh tokens works with dbcrypt (#15721, e744cde) (@johnstcn)
Fixes an issue introduced in PR #15608 which locked users out of their workspaces. This bug was not released into our mainline or stable channels.
- Helm: Prefer provisioner key if both provisioner shared key and key are set (#15417, 6781b0f) (@johnstcn)
- Installer: Fix failing installation script for remote hosts (#15288, df6afd3) (@matifali)
- Dashboard: Show error on duplicate template rename attempt (#15348, 3c60dc3) (@ethanndickson)
- Dashboard: Watch build logs while job is pending or running (#15341, 8b5a18c) (@ethanndickson)
- Dashboard: Show error on template upload failure (#15558, a35c01d) (@ethanndickson)
- Dashboard: Remove hard-coded activity bump label in workspace schedule settings(#15583, 45f7d77) (@ethanndickson)
- Dashboard: Set min and max attributes for workspace number parameters (#15182, e87b0bb) (@toshikish)
- Networking: Prevent redial after Coord graceful restart (#15586, 029cd5d) (@spikecurtis)
Documentation
- Add new best practice doc to speed up templates and workspaces (#15296, 18ef954) (@EdwardAngert)
- Provide example regexes to properly escape . characters in external authentication page (#14983, 040e5cf) (@bcpeinhardt)
- Add deploymetn ID location to licensing page (#15415, e688ff7) (@EdwardAngert)
- Add hidden workplace scheduling page to manifest (#15384, f769456) (@EdwardAngert)
- Fix mention of incorrect env var to enable/disable telemetry (#15467, 78b4967) (@mafredri)
The
CODER_TELEMETRY_ENABLE
flag is used to disable telemetry. The documentation previously showed this as the deprecatedCODER_TELEMETRY
variable. - Update template-from-scratch guide (#15101, 56e219b) (@EdwardAngert)
- Add guide on using Docker host as external authentication provider (#15494, 6ff302b) (@matifali)
- Add crypto_keys to list of dbcrypt fields (#15602, 9e63caf) (@spikecurtis)
- Add guide for CI/CD template testing (#15528, dcbcf67) (@matifali)
- Create a markdown code snippet file to make it easier for contributors (#15611, 684e75e) (@EdwardAngert)
- Add Amazon DCV Windows module to remote desktop guides (#15610, a9195bf) (@matifali)
- Add root-level code of conduct link (#15386, 0961468) (@EdwardAngert)
- API: Correct API reference example for schedule
/extend
endpoint (#15521, f1cb3a5) (@aaronlehmann) - API: Update
/builds
create transition example (#15657, d60b588) (@ericpaulsen) - Document how to correctly override list(string) parameters (#15497, 55dccae) (@johnstcn)
- Update documentation for coder_workspace_tags (#15620, e550365) (@johnstcn)
- Clarify template provisioning speed doc (#15383, 111029e) (@dannykopping)
Code refactoring
- Increase group name character limit to 255 (#15377, 7f51005) (@BrunoQuaresma)
- Server: Use quartz.Clock instead of TimeNowFn (#15642, 0896f33) (@DanielleMaywood)
- Dashboard: Refactor DAU chart to avoid seat consumption focus (#15307, 4849b4d) (@BrunoQuaresma)
Chores
- Record workspace lifecycle duration metric to prometheus (#15279, 144d3f3) (@Emyrk)
- Tweak e2e test timeouts (#15275, 85ff8e0) (@aslilac)
- Fix concurrent
CommitQuota
transactions for unrelated users/orgs (#15261, 854044e) (@Emyrk) - Refactor coordination (#15343, 886dcbe) (@spikecurtis)
Refactors the way clients of the Tailnet API (clients of the API, which include both workspace "agents" and "clients") interact with the API. Introduces the idea of abstract "controllers" for each of the RPCs in the API, and implements a Coordination controller by refactoring from workspacesdk.
- Refactor tailnetAPIConnector to tailnet.Controller (#15361, 718722a) (@spikecurtis)
- Refactor ServerTailnet to use tailnet.Controllers (#15408, 8c00ebc) (@spikecurtis)
- Support adding dns hosts to
tailnet.Conn
(#15419, 5d853fc) (@ethanndickson) - Move organizatinon sync to runtime configuration (#15431, 782214b) (@Emyrk)
- Increase autostop requirement leeway to two hours (#15445, a5d1977) (@ethanndickson)
- Include if direct connection is over private network in ping diagnostics (#15313, 6117f46) (@ethanndickson)
- Add cli command to update organization sync settings (#15459, 99dd13d) (@Emyrk)
- Track terraform modules in telemetry (#15450, aa0dc2d) (@hugodutka)
Compare: v2.17.2...v2.18.0
Container image
docker pull ghcr.io/coder/coder:v2.18.0
Install/upgrade
Refer to our docs to install or upgrade Coder, or use a release asset below.