f126931219
chore: remove dynamic-parameters experiment ( #18290 )
...
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: jaaydenh <1858163+jaaydenh@users.noreply.github.com >
Co-authored-by: Steven Masley <stevenmasley@gmail.com >
2025-06-12 12:15:05 -04:00
Jaayden Halko and blink-so[bot]
508fba83dd
feat: handle update build for dynamic params ( #18226 )
...
resolves coder/preview#110
---------
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
2025-06-05 16:35:23 -04:00
Bruno Quaresma
45d46c8c0a
refactor: minor task page design adjustments ( #18187 )
...
**Before:**
<img width="1624" alt="Screenshot 2025-06-02 at 13 38 45"
src="https://github.com/user-attachments/assets/545400e9-18d6-44a3-9f21-a51ceceedc8e "
/>
**After:**
<img width="1624" alt="Screenshot 2025-06-02 at 13 40 18"
src="https://github.com/user-attachments/assets/1b0b89f0-8cd6-4afd-8800-786e43ae4b52 "
/>
- Show output links
- Move workspace app bar to top of screen
- Remove redundant task status indicators
- Update "building your task" to "Building your workspace" to be more
transparent
- Change “Open IDE” language to “Open Locally”
Closes:
- https://github.com/coder/coder/issues/18181
- https://github.com/coder/coder/issues/18162
2025-06-02 14:52:55 -03:00
Jaayden Halko
87c4948c1d
fix: do not block form control rendering for dynamic parameters on parsing error ( #18185 )
...
Defer to backend diagnostics when the values cannot be parsed and allow
the form control to render so the user can select a different option.
2025-06-02 13:40:06 -04:00
Bruno Quaresma
a19539ce83
refactor: improve app status and statuses ( #18121 )
...
#### 1. Gray out status icons when the workspace is not running.
**Before:**
<img width="1624" alt="Screenshot 2025-05-29 at 21 33 45"
src="https://github.com/user-attachments/assets/7916e707-e5ae-4226-8234-39c42f0ec8c4 "
/>
**After:**
<img width="1624" alt="Screenshot 2025-05-29 at 21 35 07"
src="https://github.com/user-attachments/assets/52fd8553-414d-4c49-a44e-7a530f0d522d "
/>
#### 2. Truncate long messages
**Before**
<img width="1213" alt="Screenshot 2025-05-29 at 21 28 50"
src="https://github.com/user-attachments/assets/b76b7a4d-7ef0-41a0-822c-c32c98f997fc "
/>
**After**
<img width="1206" alt="Screenshot 2025-05-29 at 21 25 42"
src="https://github.com/user-attachments/assets/fb3f3916-a4a4-4697-b7d1-0b4873b6e528 "
/>
#### 3. Disable "show more" button if there is one single status
2025-05-29 22:39:18 -03:00
Bruno Quaresma
d779126ee3
chore: rollback PR #18081 ( #18104 )
...
Rollback https://github.com/coder/coder/pull/18081
2025-05-29 13:12:13 -03:00
Jaayden Halko and Steven Masley
177bda3187
fix: autofill with workspace build parameters from the latest build ( #18091 )
...
Set the form parameters using autofill parameters based on the workspace
build parameters for the latest build
---------
Co-authored-by: Steven Masley <stevenmasley@gmail.com >
2025-05-29 11:24:55 -04:00
Bruno Quaresma
2ec7404197
chore: make owner_name and owner_username consistent ( #18081 )
...
We've been using owner_name inconsistently as username. So this PR fixes
it by making the attribute naming more consistent.
2025-05-28 17:25:32 -03:00
Bruno Quaresma
bc3b8d5a51
feat: add task page ( #18076 )
...
**Demo:**

2025-05-28 15:19:05 -03:00
Jaayden Halko
5b9c40481f
feat: add form_type error ( #18067 )
...
Normally parameters had red text for error diagnostics. The goal here is
to make errors more obvious when the form_type is error meaning the
parameter could not be processed correctly.
<img width="543" alt="Screenshot 2025-05-27 at 18 35 50"
src="https://github.com/user-attachments/assets/2265553e-34a3-4526-8209-6253d541f784 "
/>
2025-05-27 15:35:11 -04:00
Cian Johnston
ce134bc63a
fix: handle invalid provisioning timings in ui ( #18058 )
...
Relates to https://github.com/coder/coder/issues/15432
* Adds a storybook entry for zero values in provisioner timings.
* Coerces a 'zero' start time to an 'instant'.
* Improves timing chart handling for large timeframes. Previously, this
would have caused the tab to run out of memory when encountering a
`time.Time{}`.
* Render 'instants' as 'invalid' in timing chart.
2025-05-27 15:10:57 +01:00
Bruno Quaresma
afaa20e166
chore: add proxy provider decorator for storybook ( #18023 )
2025-05-26 22:39:44 -03:00
Bruno Quaresma
aec64e0c73
chore: remove unused exports ( #18038 )
2025-05-26 16:17:21 -03:00
Bruno Quaresma
f3311400d1
chore: upgrade tanstack/react-query to 5.77.0 ( #18039 )
2025-05-26 16:16:55 -03:00
Bruno Quaresma
5cdda2ea7d
chore: replace date-fns by dayjs ( #18022 )
...
This change replaces date-fns with dayjs throughout the codebase for
more consistent date/time handling and to reduce bundle size. It also
tries to make the formatting and usage consistent.
**Why dayjs over date-fns?**
Just because we were using dayjs more broadly. Its formatting
capabilities, were also easier to extend.
2025-05-25 00:32:36 -03:00
Jaayden Halko
516fb4489e
feat: display required badge instead of diagnostic text when extra code = required ( #18006 )
...
The tooltip hover uses the summary text from the diagnostic
<img width="562" alt="Screenshot 2025-05-23 at 12 51 51"
src="https://github.com/user-attachments/assets/2246abc7-dc1c-4dc2-8303-bee62d152e21 "
/>
2025-05-23 10:43:17 -04:00
Bruno Quaresma
b4daf36d0b
refactor: refactor activity column in the workspaces table ( #17976 )
...
The goal is to better integrate the activity column data with the
existent data:
- Make the message one line, the full message is in the tooltip, and
display the state at the bottom. This way, it is visually consistent
with the other columns like status, name and template.
- Moved the app, and uri, to the actions column, instead of showing them
together with the message in the activity column.
**Previous:**
<img width="1512" alt="Screenshot 2025-05-21 at 17 28 46"
src="https://github.com/user-attachments/assets/ea9188a5-d82e-416c-b961-edf0104f66c6 "
/>
**After:**
<img width="1512" alt="Screenshot 2025-05-21 at 17 28 57"
src="https://github.com/user-attachments/assets/f50dbe82-cd3e-4448-9fa2-bde9193166d6 "
/>
2025-05-22 20:03:13 -04:00
Bruno Quaresma
e1934fe119
chore: replace MUI icons with Lucide icons - update 18 ( #17958 )
...
1. PersonOutline → UserIcon
2. Apps → LayoutGridIcon
3. Delete → TrashIcon
4. InsertDriveFile → FileIcon
2025-05-21 16:11:23 -03:00
Bruno Quaresma
cbfe975cc8
refactor: show unhealthy status on workspace status indicator ( #17956 )
...
Instead of showing a "yellow question icon" on the side of the status,
to let the user aware of unhealthy agents, we could make it yellow and
use a tooltip.
Before:
<img width="1512" alt="Screenshot 2025-05-20 at 18 13 15"
src="https://github.com/user-attachments/assets/afee470e-9dd4-4c32-b2bc-b9f66eac60fa "
/>
After:
<img width="1512" alt="Screenshot 2025-05-20 at 18 13 26"
src="https://github.com/user-attachments/assets/5769828b-f23c-45a5-8017-c4a88f085d0f "
/>
2025-05-21 15:57:32 -03:00
Jaayden Halko
3a6d5f5bba
fix: update textarea to fit content height and set a max height ( #17946 )
2025-05-21 10:56:01 -04:00
Bruno Quaresma
36224f263f
chore: replace MUI icons with Lucide icons - 17 ( #17957 )
...
1. ExpandMoreOutlined → ChevronDownIcon
2. Error/ErrorIcon → CircleAlertIcon
3. CheckCircle → CircleCheckIcon
4. Warning → TriangleAlertIcon
2025-05-20 22:24:17 -03:00
Jaayden Halko
dc21016151
fix: get presets working correctly with dynamic params ( #17923 )
...
This adds a few fixes to get presets working correctly with dynamic
params
1. Changes to preset params need to be rendered and displayed correctly
2. Changes to preset params need to be sent to the websocket
3. Changes to preset params need to be marked as touched so they won't
be automatically changed later because of dynamic defaults. Dynamic
defaults means any default parameter value can be changed by the
websocket response unless edited by the user, set by autofill or set by
a preset.
2025-05-19 18:20:40 -04:00
Jaayden Halko
d6cb9b49b7
feat: setup url autofill for dynamic parameters ( #17739 )
...
resolves coder/preview#80
Parameter autofill allows setting parameters from the url using the
format param.[param name]=["purple","green"]
Example:
http://localhost:8080/templates/coder/scratch/workspace?param.list=%5b%22purple%22%2c%22green%22%5d%0a
The goal is to maintain feature parity of for autofill with dynamic
parameters.
Note: user history autofill is no longer being used and is being
removed.
2025-05-16 18:05:33 -04:00
Bruno Quaresma
3011eca0c5
chore: replace MUI icons with Lucide icons - 16 ( #17862 )
...
Close -> XIcon
WarningOutlined -> TriangleAlertIcon
FileCopyOutlined -> CopyIcon
KeyboardArrowRight -> ChevronRightIcon
Add -> PlusIcon
Send -> SendIcon
ChevronRight -> ChevronRightIcon
MoreHorizOutlined -> EllipsisIcon
2025-05-15 15:42:09 -03:00
Bruno Quaresma
952c254046
fix: fix duplicated agent logs ( #17806 )
...
Fix https://github.com/coder/coder/issues/16355
2025-05-15 15:21:33 -03:00
Bruno Quaresma
6ff6e95417
chore: replace MUI icons with Lucide icons - 13 ( #17831 )
...
OpenInNew -> ExternalLinkIcon
InfoOutlined -> InfoIcon
CloudDownload -> CloudDownloadIcon
CloudUpload -> CloudUploadIcon
Compare -> GitCompareArrowsIcon
SettingsEthernet -> GaugeIcon
WebAsset -> AppWindowIcon
2025-05-15 11:43:35 -03:00
Bruno Quaresma
fcbdd1a28e
refactor: replace badge by status indicator ( #17811 )
...
**Why?**
In the workspaces page, it is using the status indicator, and not the
badge anymore, so to keep the UI consistent, I'm replacing the badge by
the indicator in the workspace page too.
**Before:**
<img width="672" alt="Screenshot 2025-05-13 at 19 14 17"
src="https://github.com/user-attachments/assets/0e8ea4bd-68d1-4d27-b81b-f79f15cabb2c "
/>
**After:**
<img width="672" alt="Screenshot 2025-05-13 at 19 14 21"
src="https://github.com/user-attachments/assets/45719262-011e-4fc8-9ebe-fe9e33d9d572 "
/>
2025-05-14 09:11:25 -03:00
Bruno Quaresma
67e40244a4
feat: add extra workspace actions in the workspaces table ( #17775 )
...
**Demo:**
<img width="1624" alt="Screenshot 2025-05-12 at 16 53 36"
src="https://github.com/user-attachments/assets/7f125b31-5ce8-4c1f-8e26-c3136346cae3 "
/>
2025-05-13 18:53:43 -03:00
Bruno Quaresma
15bd7a3add
chore: replace MUI icons with Lucide icons - 5 ( #17750 )
...
Replacements:
MUI | Lucide
OpenInNewOutlined | ExternalLinkIcon
HelpOutline | CircleHelpIcon
ErrorOutline | CircleAlertIcon
2025-05-12 13:36:51 -03:00
Bruno Quaresma
aa4b764025
chore: replace MUI icons - 3 ( #17733 )
...
1. Replaced TaskAlt with CircleCheckBigIcon in:
- Paywall.tsx
- PopoverPaywall.tsx
2. Replaced InfoOutlined with InfoIcon in:
- ChangeVersionDialog.tsx
- WorkspaceNotifications.tsx
- Pill.stories.tsx
3. Replaced ErrorOutline/ErrorOutlineIcon with CircleAlertIcon in:
- workspace.tsx
- WorkspaceStatusBadge.tsx
- AppLink.tsx
2025-05-09 15:09:03 -03:00
Bruno Quaresma
b0a4ef01a8
chore: replace MUI icons - 2 ( #17732 )
...
Replace icons:
Check | CheckIcon
KeyboardArrowDown | ChevronDownIcon
KeyboardArrowUp | ChevronUpIcon
2025-05-09 14:44:10 -03:00
Bruno Quaresma
0b8fd7e403
chore: fix :first-child warning ( #17727 )
...
Fix the following warning:
```
The pseudo class ":first-child" is potentially unsafe when doing server-side rendering.
```
2025-05-09 11:11:00 -03:00
Bruno Quaresma
f897981e78
chore: extract app access logic for reuse ( #17724 )
...
We are starting to add app links in many places in the UI, and to make
it consistent, this PR extracts the most core logic into the
modules/apps for reuse.
Related to https://github.com/coder/coder/issues/17311
2025-05-09 10:41:52 -03:00
Jaayden Halko
d93a9cfde2
feat: add TagInput component for dynamic parameters ( #17719 )
...
resolves coder/preview#50
This uses the existing MultiTextField component as the tag-select
component for Dynamic parameters.
The intention is not to completely re-write the MultiTextField but to
make some design improvements to match the updated design patterns. This
should still work with the existing non-experimental
CreateWorkspacePage.
Before
<img width="556" alt="Screenshot 2025-05-08 at 12 58 31"
src="https://github.com/user-attachments/assets/9bf5bbf8-e26d-4523-8b5f-e4234e83d192 "
/>
After
<img width="548" alt="Screenshot 2025-05-08 at 12 43 28"
src="https://github.com/user-attachments/assets/9fa90795-b2a9-4c07-b90e-938219202799 "
/>
2025-05-08 12:59:33 -04:00
Jaayden Halko
0b141c47cb
chore: add DynamicParameter stories ( #17710 )
...
resolves coder/preview#112
- Add stories for DynamicParameter component
- fix bug with displaying immutable badge and required asterisk
2025-05-08 10:12:05 -04:00
Bruno Quaresma
4341403346
chore: simplify workspaces data fetching ( #17703 )
...
We've been using an abstraction that was not necessary to fetch
workspaces data. I also took sometime to use the new useWorkspaceUpdate
hook in the update workspace tooltip that was missing some important
steps like confirmation.
2025-05-08 09:42:39 -03:00
Jaayden Halko
c66e80e862
fix: extract checkbox label from dynamic parameter styling prop ( #17651 )
...
resolves #17474
A label will only be shown next to the checkbox If there is a value for
`label` in the styling prop for the dynamic parameter
<img width="457" alt="Screenshot 2025-05-01 at 21 35 32"
src="https://github.com/user-attachments/assets/3b3a8160-65a2-4411-b763-0d07a4eeb699 "
/>
2025-05-08 08:02:27 -04:00
Bruno Quaresma
9fe5b71d31
chore!: fix workspace apps response ( #17700 )
...
Fix WorkspaceApp response type to better reflect the schema from
https://registry.terraform.io/providers/coder/coder/latest/docs/resources/app .
2025-05-07 10:05:07 -03:00
Bruno Quaresma
d9b00e4849
feat: add inline actions into workspaces table ( #17636 )
...
Related to https://github.com/coder/coder/issues/17311
This PR adds inline actions in the workspaces page. It is a bit
different of the [original
design](https://www.figma.com/design/OR75XeUI0Z3ksqt1mHsNQw/Workspace-views?node-id=656-3979&m=dev )
because I'm splitting the work into three phases that I will explain in
more details in the demo.
https://github.com/user-attachments/assets/6383375e-ed10-45d1-b5d5-b4421e86d158
2025-05-06 11:28:14 -03:00
Jaayden Halko
ec003b7cf9
fix: update default value handling for dynamic defaults ( #17609 )
...
resolves coder/preview#102
2025-05-06 06:40:31 -04:00
Jaayden Halko
e37ddd44d2
chore: improve the design of the create workspace page for dynamic parameters ( #17654 )
...
contributes to coder/preview#59
1. Improves the design and layout of the presets dropdown and switch
2. Improves the design for the immutable badge
<img width="537" alt="Screenshot 2025-05-01 at 23 28 11"
src="https://github.com/user-attachments/assets/f0967758-5ea7-4436-b44a-e014c048202c "
/>
<img width="714" alt="Screenshot 2025-05-01 at 23 28 34"
src="https://github.com/user-attachments/assets/0bb091e1-611f-4a58-8f6f-b3bb027c6a10 "
/>
2025-05-02 11:14:32 -04:00
brettkolodny
f108f9d71f
chore: setup knip and remove unused exports, files, and dependencies ( #17608 )
...
Closes [coder/interal#600 ](https://github.com/coder/internal/issues/600 )
2025-04-30 15:08:25 -04:00
Bruno Quaresma
205076e6e7
refactor: change how timings are formatted ( #17623 )
2025-04-30 13:58:12 -03:00
Bruno Quaresma
1da27a1ebc
fix: handle missed actions in workspace timings ( #17593 )
...
Fix https://github.com/coder/coder/issues/16409
Since the provisioner timings action is not strongly typed, but it is
typed as a generic string, and we are not using
`noUncheckedIndexedAccess`, we can miss some of the actions returned
from the API, causing type errors. To avoid that, I changed the code to
be extra safe by adding `undefined` into the return type.
2025-04-28 15:20:07 -03:00
Jaayden Halko
e562e3c882
chore: mark parameters as required ( #17551 )
...
This adds a red asterisk next to a parameter name if it is required and
marks passes the parameter required value to input and textarea form
controls.
The multi-select combobox needs additional work (in a separate PR) so
that it can handle the required prop correctly for form submit.
<img width="544" alt="Screenshot 2025-04-24 at 00 02 10"
src="https://github.com/user-attachments/assets/5c6758d3-41a4-444d-b7e9-e1fe011703d3 "
/>
2025-04-24 17:14:21 -04:00
Jaayden Halko
3306f0f2a2
fix: fix broken img layout ( #17525 )
...
resolves #17507
Before
<img width="629" alt="Screenshot 2025-04-23 at 11 01 55"
src="https://github.com/user-attachments/assets/79e2945b-0301-4cf5-9b25-f112bac9c2ff "
/>
After
<img width="629" alt="Screenshot 2025-04-23 at 11 02 45"
src="https://github.com/user-attachments/assets/c74d3c03-ebee-42e6-bd16-b4610139cb86 "
/>
2025-04-23 13:01:36 -04:00
Bruno Quaresma
88589ef32f
fix: fix build timeline scale for longer builds ( #17514 )
...
Fix https://github.com/coder/coder/issues/15374
2025-04-23 11:34:08 -03:00
Jaayden Halko
56ee5d8f1b
fix: update dynamic params styles ( #17489 )
...
1. increase form width and adjust form field width #17471
2. Move slider value display as its currently broken for long parameter
titles and descriptions
3. increase the height of the slider
4. automatically increase the height of the textarea as the user types
#17472
2025-04-21 17:50:57 -04:00
Jaayden Halko and brettkolodny
ea017a1de8
feat: add textarea component and placeholders for dynamic parameters component ( #17466 )
...
- Hooks up the textarea component
- Adds placeholders for dropdown, input and multi-select combobox
---------
Co-authored-by: brettkolodny <brettkolodny@gmail.com >
2025-04-18 10:51:32 -04:00
Jaayden Halko
8723fe99f5
feat: add slider to dynamic parameters ( #17453 )
...
This adds the slider to the dynamic parameters component and does some
additional styling cleanup for the dynamic parameters form
<img width="630" alt="Screenshot 2025-04-17 at 16 54 05"
src="https://github.com/user-attachments/assets/1640e8df-7483-4275-99ee-682ff6218658 "
/>
2025-04-17 12:40:37 -04:00