We are thrilled to release Coder v2.0.0. You can safely upgrade from any
previous [coder/coder](https://github.com/coder/coder) release, but we feel like
we have outgrown development (v0.x) releases:

- 1600+ users develop on Coder every day
- A single 4-core Coder server can
  [happily support](https://coder.com/docs/v2/latest/admin/scale) 1000+ users
  and workspace connections
- We have a full suite of
  [paid features](https://coder.com/docs/v2/latest/enterprise) and enterprise
  customers deployed in production
- Users depend on our CLI to
  [automate Coder](https://coder.com/docs/v2/latest/admin/automation) in Ci/Cd
  pipelines and templates

Why not v1.0? At the time of writing, our legacy product is currently on v1.34.
While Coder v1 is being sunset, we still wanted to avoid versioning conflicts.

What is not changing:

- Our feature roadmap: See what we have planned at https://coder.com/roadmap
- Your upgrade path: You can safely upgrade from previous coder/coder releases
  to v2.x releases!
- Our release cadence: We want features out as quickly as possible and feature
  flag any work that isn’t ready for production yet!

What is changing:

- Our deprecation policy: Major features will be deprecated for at least 1 minor
  release before being removed. Any breaking changes to the REST API and SDK are
  done via minor releases and will be called out in our changelog.
- Regular scale testing: Follow along on our [ Google Sheets or Grafana
  dashboard ]

Questions? Feel free to ask in [our Discord](https://discord.gg/coder) or email
ben@coder.com!

## Changelog

### BREAKING CHANGES

- RBAC: The default [Member role](https://coder.com/docs/v2/latest/admin/users)
  can no longer see a list of all users in a Coder deployment. The Template
  Admin role and above can still use the `Users` page in dashboard and query
  users via the API (#8650) (@Emyrk)
- Kubernetes (Helm): The
  [default ServiceAccount](https://github.com/coder/coder/blob/8d0e8f45e0fb3802d777a396b4c027ab9788e1b8/helm/values.yaml#L67-L82)
  for Coder can provision `Deployments` on the cluster. (#8704) (@ericpaulsen)
  - This can be disabled by a
    [Helm value](https://github.com/coder/coder/blob/8d0e8f45e0fb3802d777a396b4c027ab9788e1b8/helm/values.yaml#L78)
  - Our
    [Kubernetes example template](https://github.com/coder/coder/tree/main/examples/templates/kubernetes)
    uses a `kubernetes_deployment` instead of `kubernetes_pod` since it works
    best with
    [log streaming](https://coder.com/docs/v2/latest/platforms/kubernetes/deployment-logs)
    in Coder.

### Features

- Template insights: Admins can see daily active users, user latency, and
  popular IDEs (#8722) (@BrunoQuaresma)
  ![Template insights](https://user-images.githubusercontent.com/22407953/258239988-69641bd6-28da-4c60-9ae7-c0b1bba53859.png)
- [Kubernetes log streaming](https://coder.com/docs/v2/latest/platforms/kubernetes/deployment-logs):
  Stream Kubernetes event logs to the Coder agent logs to reveal Kuernetes-level
  issues such as ResourceQuota limitations, invalid images, etc.
  ![Kubernetes quota](https://raw.githubusercontent.com/coder/coder/main/docs/platforms/kubernetes/coder-logstream-kube-logs-quota-exceeded.png)
- [OIDC Role Sync](https://coder.com/docs/v2/latest/admin/auth#group-sync-enterprise)
  (Enterprise): Sync roles from your OIDC provider to Coder roles (e.g.
  `Template Admin`) (#8595) (@Emyrk)
- Users can convert their accounts from username/password authentication to SSO
  by linking their account (#8742) (@Emyrk)
  ![Converting OIDC accounts](https://user-images.githubusercontent.com/22407953/257408767-5b136476-99d1-4052-aeec-fe2a42618e04.png)
- CLI: Added `--var` shorthand for `--variable` in
  `coder templates <create/push>` CLI (#8710) (@ammario)
- Accounts are marked as dormant after 90 days of inactivity and do not consume
  a license seat. When the user logs in again, their account status is
  reinstated. (#8644) (@mtojek)
- Groups can have a non-unique display name that takes priority in the dashboard
  (#8740) (@Emyrk)
- Dotfiles: Coder checks if dotfiles install script is executable (#8588)
  (@BRAVO68WEB)
- CLI: Added `--var` shorthand for `--variable` in
  `coder templates <create/push>` CLI (#8710) (@ammario)
- Sever logs: Added fine-grained
  [filtering](https://coder.com/docs/v2/latest/cli/server#-l---log-filter) with
  Regex (#8748) (@ammario)
- d3991fac2 feat(coderd): add parameter insights to template insights (#8656)
  (@mafredri)
- Agent metadata: In cases where Coder does not receive metadata in time, we
  render the previous "stale" value. Stale values are grey versus the typical
  green color. (#8745) (@BrunoQuaresma)
- [Open in Coder](https://coder.com/docs/v2/latest/templates/open-in-coder):
  Generate a link that automatically creates a workspace on behalf of the user,
  skipping the "Create Workspace" form (#8651) (@BrunoQuaresma)
  ![Open in Coder](https://user-images.githubusercontent.com/22407953/257410429-712de64d-ea2c-4520-8abf-0a9ba5a16e7a.png)-
  e85b88ca9 feat(site): add restart button when workspace is unhealthy (#8765)
  (@BrunoQuaresma)

### Bug fixes

- Do not wait for devcontainer template volume claim bound (#8539) (@Tirzono)
- Prevent repetition of template IDs in `template_usage_by_day` (#8693)
  (@mtojek)
- Unify parameter validation errors (#8738) (@mtojek)
- Request trial after password is validated (#8750) (@kylecarbs)
- Fix `coder stat mem` calculation for cgroup v1 workspaces (#8762) (@sreya)
- Intiator user fields are included in the workspace build (#8836) (@Emyrk)
- Fix tailnet netcheck issues (#8802) (@deansheather)
- Avoid infinite loop in agent derp-map (#8848) (@deansheather)
- Avoid agent runLoop exiting due to ws ping (#8852) (@deansheather)
- Add read call to derp-map endpoint to avoid ws ping timeout (#8859)
  (@deansheather)
- Show current DERP name correctly in vscode (#8856) (@deansheather)
- Apply log-filter to debug logs only (#8751) (@ammario)
- Correctly print deprecated warnings (#8771) (@ammario)
- De-duplicate logs (#8686) (@ammario)
- Always dial agents with `WorkspaceAgentIP` (#8760) (@coadler)
- Ensure creating a SCIM user is idempotent (#8730) (@coadler)
- Send build parameters over the confirmation dialog on restart (#8660)
  (@BrunoQuaresma)
- Fix error 'Reduce of empty array with no initial value' (#8700)
  (@BrunoQuaresma)
- Fix latency values (#8749) (@BrunoQuaresma)
- Fix metadata value changing width all the time (#8780) (@BrunoQuaresma)
- Show error when user exists (#8864) (@BrunoQuaresma)
- Fix initial value for update parameters (#8863) (@BrunoQuaresma)
- Track agent names for http debug (#8744) (@coadler)

### Documentation

- Explain JFrog integration 🐸 (#8682) (@ammario)
- Allow multiple Coder deployments to use single GitHub OAuth app (#8786)
  (@matifali)
- Remove Microsoft VS Code Server docs (#8845) (@ericpaulsen)

### Reverts

- Make [pgCoordinator](https://github.com/coder/coder/pull/8044) experimental
  again (#8797) (@coadler)

Compare:
[`v0.27.0...v2.0.0`](https://github.com/coder/coder/compare/v0.27.0...v2.0.0)

## Container image

- `docker pull ghcr.io/coder/coder:v2.0.0`

## Install/upgrade

Refer to our docs to [install](https://coder.com/docs/v2/latest/install) or
[upgrade](https://coder.com/docs/v2/latest/admin/upgrade) Coder, or use a
release asset below.
