* design commit
* add owner_id to templates table
* add owner information in apis and ui
* update minWidth for statItem
* rename owner to created_by
* missing refactor to created_by
* handle errors in fetching created_by names
Summary:
Various time displays weren't quite right.
Details:
- Display date (not just time) of upcoming workspace stop in workspace
page
- Fix ttlShutdownAt for various cases + tests
- manual to non-manual
- unchanged/unmodified
- isBefore --> isSameOrBefore
- use the delta (off by _ error)
- pluralize units in dayjs.add
* update build url to @username/workspace/builds/buildnumber
* update errors thrown from the API
* add unit tests for the new API
* add t.parallel
* get username and workspace name from params
* allow workspace update permissions to access agents
* do not show app links to users without workspace update access
* address CR comments
* initialize machine context in the hook
* revert scoped connected status check
This commit adds the following changes to workspace scheduling behaviour:
* CLI: updating a workspace TTL updates the deadline of the workspace.
* If the TTL is being un-set, the workspace deadline is set to zero.
* If the TTL is being set, the workspace deadline is updated to be the last updated time of the workspace build plus the requested TTL. Additionally, the user is prompted to confirm interactively (can be bypassed with -y).
* UI: updating the workspace schedule behaves similarly to the CLI, showing a message to the user if the updated TTL/time to shutdown would effect changes to the lifetime of the running workspace.
This does not fully resolve all requests in #2141, but just the piece of
when the workspace is actually stopping.
Next, we will adjust the default extension from 90 minutes to 4 hours.
Lastly, we can look at customizing the extension time in the extension
flow or with a pre-emptive prompt next to the stop time.
This does not fully close#2141, but builds upon #2171 to fulfill each
of the UX requests.
A next step (probably as a separate ticket) is to allow customizing
extension time pre-emptively.
This PR adds a CLI command template edit which allows updating the following metadata fields of a template:
- Description
- Max TTL
- Min Autostart Interval
* fix: Update routing for workspace schedule
This was broken as part of #2101. It was a silly mistake,
but unfortunate our tests didn't catch it.
This is a rare change so unlikely to occur again, so I won't
make an issue adding tests.
* Update site/src/pages/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx
Co-authored-by: Presley Pizzo <1290996+presleyp@users.noreply.github.com>
Co-authored-by: Presley Pizzo <1290996+presleyp@users.noreply.github.com>
This PR adds fields to templates that constrain values for workspaces derived from that template.
- Autostop: Adds a field max_ttl on the template which limits the maximum value of ttl on all workspaces derived from that template. Defaulting to 168 hours, enforced on edits to workspace metadata. New workspaces will default to the templates's `max_ttl` if not specified.
- Autostart: Adds a field min_autostart_duration which limits the minimum duration between successive autostarts of a template, measured from a single reference time. Defaulting to 1 hour, enforced on edits to workspace metadata.
* fix: Use proper webpack config for dev mode
This was broken when improving the build times. The typechecker
unfortunately missed it!
* feat: Add links to the resource card for workspace applications
Fixes#1907 and #805.
I'll make this pretty in another PR!
* Improve style
* feat: Add app support
This adds apps as a property to a workspace agent.
The resource is added to the Terraform provider here:
https://github.com/coder/terraform-provider-coder/pull/17
Apps will be opened in the dashboard or via the CLI
with `coder open <name>`. If `command` is specified, a
terminal will appear locally and in the web. If `target`
is specified, the browser will open to an exposed instance
of that target.
* Compare fields in apps test
* Update Terraform provider to use relative path
* Add some basic structure for routing
* chore: Remove interface from coderd and lift API surface
Abstracting coderd into an interface added misdirection because
the interface was never intended to be fulfilled outside of a single
implementation.
This lifts the abstraction, and attaches all handlers to a root struct
named `*coderd.API`.
* Add basic proxy logic
* Add proxying based on path
* Add app proxying for wildcards
* Add wsconncache
* fix: Race when writing to a closed pipe
This is such an intermittent race it's difficult to track,
but regardless this is an improvement to the code.
* fix: Race when writing to a closed pipe
This is such an intermittent race it's difficult to track,
but regardless this is an improvement to the code.
* fix: Race when writing to a closed pipe
This is such an intermittent race it's difficult to track,
but regardless this is an improvement to the code.
* fix: Race when writing to a closed pipe
This is such an intermittent race it's difficult to track,
but regardless this is an improvement to the code.
* Add workspace route proxying endpoint
- Makes the workspace conn cache concurrency-safe
- Reduces unnecessary open checks in `peer.Channel`
- Fixes the use of a temporary context when dialing a workspace agent
* Add embed errors
* chore: Refactor site to improve testing
It was difficult to develop this package due to the
embed build tag being mandatory on the tests. The logic
to test doesn't require any embedded files.
* Add test for error handler
* Remove unused access url
* Add RBAC tests
* Fix dial agent syntax
* Fix linting errors
* Fix gen
* Fix icon required
* Adjust migration number
* Fix proxy error status code
* Fix empty db lookup
* chore: Reduce deployment times by excluding Docker images
Only the Windows and Linux binaries are build during deploy, so we
can save many minutes by excluding Docker images.
* Stop docker image builds on snapshot
* Fix artifact upload
* Skip typecheck for release
* Flag deploy
* fix: Remove unused workspace routes in favor of list with filter
This consolidates the workspace routes into a single place.
It allows users to fetch a workspace by their username and
workspace name, which will be used by the frontend for routing.
* Fix RBAC
* Fix CLI usages
* feat: use ConfirmDialog for ResetPasswordDialog
* fix lint
* make description typography a div
* use paragraph for string description, div otherwise
* fix lint
Resolves: #1959
Summary:
The package tzdata is used to create a meaningful select-list for
timezone in the workspace schedule form.
Impact:
Improved UX. Furthermore, we guess your timezone if the form is being
initialized from scratch.
* feat: update success confirmation dialog and snackbar
* add success variants to confirm dialog and snackbar
* update story name
* use success variant for snackbar