Jaayden Halko
58123e17ca
fix: fix to display tooltip on hover ( #19058 )
2025-07-28 10:00:41 -04:00
ケイラ
52c4b61391
feat: add search to parameter dropdowns ( #18729 )
2025-07-15 11:23:49 -06:00
Ethan
b5260d5699
feat(site): add connection log page ( #18708 )
...
This is the fourth PR for moving connection events out of the audit log.
This PR adds `/connectionlog` to the frontend. This page is identical in structure to the audit log, but with different filters and contents.
The connection log lists sessions, and the time they start. If we support tracking the end time of a session, and we've received a disconnect event for that session, the end timestamp is also included.
Demo:
https://github.com/user-attachments/assets/e0fff799-0ed6-45f7-a8c0-237839659ef9
<img width="346" alt="image" src="https://github.com/user-attachments/assets/6de29945-55c2-4fe5-9a4f-d42e476ded25 " />
<img width="184" alt="image" src="https://github.com/user-attachments/assets/e83234bc-4d9d-4f71-b668-9256a600659c " />
Since the styling is identical to that of the audit log, I've continued to use MUI table components. When the audit log is migrated off MUI/restyled, this table can be too, relatively easily.
Future PRs:
- Write a query to delete old events from the audit log, call it from dbpurge.
- Write documentation for the endpoint / feature
2025-07-15 15:11:31 +10:00
Jaayden Halko
61b6562f9a
feat: display descriptions in multi-select component ( #18730 )
...
<img width="528" alt="Screenshot 2025-07-02 at 23 06 51"
src="https://github.com/user-attachments/assets/d6223d99-bc1b-4325-8eb6-d87a687bcec8 "
/>
2025-07-03 05:55:20 -04:00
ケイラ
d4208d23aa
refactor: show icons for multi-select parameter options ( #18594 )
2025-06-27 10:54:47 -06:00
Michael Smith
a8e2c75239
chore: update Coder icons to reflect new branding ( #18517 )
...
Addresses part of the frontend changes needed for
https://github.com/coder/coder/issues/18516
2025-06-24 17:15:05 -04:00
Bruno Quaresma
cd484db872
fix: only override img size for direct button children ( #18540 )
...
The issue was causing the select menu, that uses an avatar inside of the
button, to have a wrong size.
Before:
<img width="191" alt="Screenshot 2025-06-24 at 13 18 51"
src="https://github.com/user-attachments/assets/4cc20bbc-daa6-44b0-802c-a1846740beb5 "
/>
After:
<img width="191" alt="Screenshot 2025-06-24 at 13 18 41"
src="https://github.com/user-attachments/assets/107083f9-ef51-4d7d-84c3-c5d3e82307c8 "
/>
2025-06-24 13:28:58 -03:00
Jaayden Halko
31d0c6fb33
feat: add better error display for workspace builds ( #18518 )
...
Classic parameters templates
<img width="548" alt="Screenshot 2025-06-23 at 23 27 46"
src="https://github.com/user-attachments/assets/e8e774bf-e201-4a80-a90c-3d6cc3658c20 "
/>
Dynamic parameters templates
<img width="541" alt="Screenshot 2025-06-23 at 23 52 05"
src="https://github.com/user-attachments/assets/6a40f144-c0b2-4e16-8137-d31a52b71460 "
/>
2025-06-24 09:03:40 -04:00
Jaayden Halko
6877142a0e
feat: create experimental template embed page for dynamic params ( #17999 )
...
resolves coder/preview#58
2025-06-23 15:47:30 -04:00
4fe0a4bca2
feat: add ephemeral parameter dialog for workspace start/restart ( #18413 )
...
resolves #17709
FYI, blink created a first draft which was heavily modified.
## Summary
This PR implements ephemeral parameter handling for workspace
start/restart operations when templates use dynamic parameters
(`use_classic_parameter_flow = false`).
<img width="522" alt="Screenshot 2025-06-18 at 14 35 54"
src="https://github.com/user-attachments/assets/450527c0-cc88-4fc3-b0fa-170bdeb5ea51 "
/>
<img width="327" alt="Screenshot 2025-06-18 at 14 35 43"
src="https://github.com/user-attachments/assets/ea74bf8e-d127-489d-b406-edfc5ec1e9a8 "
/>

## Changes
### 1. EphemeralParametersDialog Component
- **New**: `site/src/components/EphemeralParametersDialog/`
- Shows a dialog when starting/restarting workspaces with ephemeral
parameters
- Lists ephemeral parameters with names and descriptions
- Provides options to continue without setting values or navigate to
parameters page
### 2. WorkspaceReadyPage Updates
- Added `checkEphemeralParameters()` function using
`API.getDynamicParameters`
- Modified `handleStart` and `handleRestart` to check for ephemeral
parameters
- Only triggers for templates with `use_classic_parameter_flow = false`
- Shows dialog if ephemeral parameters exist, otherwise proceeds
normally
### 3. BuildParametersPopover Updates
- Added special UI for non-classic parameter flow templates with
ephemeral parameters
- Lists ephemeral parameters with descriptions
- Explains that users must use the workspace parameters page
- Provides direct link to `WorkspaceParametersPageExperimental`
---------
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: Jaayden Halko <jaayden@coder.com >
2025-06-20 15:04:36 -04:00
ケイラ
5df70a613d
feat: add organization scope for shared ports ( #18314 )
2025-06-16 16:15:59 -06:00
ケイラ
eff2174198
fix: prevent badge text wrapping ( #18396 )
...
Closes https://github.com/coder/coder/issues/17927
2025-06-16 14:19:58 -06: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
Jaayden Halko
9b53e69e32
feat: add early access badges for dynamic parameters ( #18114 )
...
Workspace creation page
<img width="1438" alt="Screenshot 2025-05-30 at 13 38 22"
src="https://github.com/user-attachments/assets/bac94f3a-b695-4662-9a89-7777d03d8f74 "
/>
Workspace parameter settings
<img width="1432" alt="Screenshot 2025-05-30 at 13 37 19"
src="https://github.com/user-attachments/assets/f1f803a6-b99a-416c-a085-38bafc2ef4e4 "
/>
<img width="1429" alt="Screenshot 2025-05-30 at 13 43 27"
src="https://github.com/user-attachments/assets/cb1d37a4-8b79-4858-846e-3b1deb0a63cf "
/>
2025-05-30 13:17:17 -04:00
ケイラ
232c72ffd6
feat: group apps together on workspace page ( #18018 )
2025-05-29 12:01:51 -06:00
Bruno Quaresma
e0718a600e
feat: group external apps on task page ( #18107 )
...
https://github.com/user-attachments/assets/ac03f9ad-9b89-400b-aabe-fade2997319b
2025-05-29 14:10:27 -03:00
Steven Masley
8387dd27ab
chore: add form_type parameter argument to db ( #17920 )
...
`form_type` is a new parameter field in the terraform provider. Bring
that field into coder/coder.
Validation for `multi-select` has also been added.
2025-05-29 08:55:19 -05:00
Bruno Quaresma
5f34d01906
refactor: replace MUI components and refactor styles ( #18082 )
...
**Before:**
<img width="1196" alt="Screenshot 2025-05-28 at 13 26 03"
src="https://github.com/user-attachments/assets/86c2830e-6777-441c-aedc-64fef472e369 "
/>
**After:**
<img width="1197" alt="Screenshot 2025-05-28 at 13 24 19"
src="https://github.com/user-attachments/assets/08e2dc4e-424a-43d8-a343-0ac8e03c9948 "
/>
2025-05-29 08:27:52 -03:00
Bruno Quaresma
bc3b8d5a51
feat: add task page ( #18076 )
...
**Demo:**

2025-05-28 15:19:05 -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
Bruno Quaresma
70edc2403a
chore: remove chartjs ( #18016 )
...
- Remove ChartJS in favor of Recharts
- Migrate ActiveUserChart to use the new chart design
<img width="1624" alt="Screenshot 2025-05-23 at 15 00 03"
src="https://github.com/user-attachments/assets/5f451a88-f2ef-4139-a888-c0358eb8cf17 "
/>
2025-05-24 11:33:16 -03:00
Jaayden Halko
196eccb457
feat: add beta labels for dynamic params ( #17985 )
...
<img width="820" alt="Screenshot 2025-05-23 at 18 48 56"
src="https://github.com/user-attachments/assets/5b781501-3817-4be1-8143-f03f8cb88901 "
/>
<img width="790" alt="Screenshot 2025-05-23 at 18 48 32"
src="https://github.com/user-attachments/assets/541ad77e-fd37-4f52-ae2c-7b1f698c23fc "
/>
2025-05-23 15:51:31 -04:00
Bruno Quaresma
30a910ba32
chore: replace MUI Button - 2 ( #17953 )
...
1. IconField.tsx
2. SelectMenu.tsx
3. RichParameterInput.tsx
4. MissingTemplateVariablesDialog.tsx
5. LoginPageView.tsx
2025-05-23 11:39:56 -03:00
Bruno Quaresma
94c129c03d
fix!: omit name, avatar_url and last_seen_at from responses when empty ( #18005 )
...
User name, avatar URL, and last seen at, are not required fields so they
can be empty. Instead of returning the 0 values from Go, we want to make
it more agnostic, and omit them when they are empty. This make the docs
and usage way clearer for consumers.
2025-05-23 11:35:05 -03:00
Bruno Quaresma
f35a1bc448
chore: replace MUI Button - 3 ( #17955 )
...
Replaced MUI Button with custom Button in 5 components:
- Filter.tsx - Changed import and updated Button props
(variant="outline", size="sm")
- ChatLayout.tsx - Changed import and updated Button
props for the "New Chat" button
- StarterTemplatePageView.tsx - Changed import and
implemented asChild pattern for links
- Notifications.tsx - Changed import and updated
NotificationActionButton to use variant="subtle"
- DateRange.tsx - Changed import and updated Button
styling
2025-05-21 15:58:38 -03:00
Ethan
e5758a12c7
fix(site): center /cli-auth on firefox ( #17929 )
...
`-webkit-fill-available` is not available in Firefox: https://caniuse.com/mdn-css_properties_height_stretch
`-moz-available` doesn't work on `height`, so we have to use `100vh`.
Before:
<img width="1405" alt="image" src="https://github.com/user-attachments/assets/bd0f4390-50e9-47fa-8501-f3e3483d3c0d " />
After:
<img width="1329" alt="image" src="https://github.com/user-attachments/assets/f19f4b2a-3398-4d64-8e12-5cfcb84106a9 " />
The existing CSS is retained in browsers that support `-webkit-fill-available`, i.e. chrome:
<img width="253" alt="image" src="https://github.com/user-attachments/assets/c1b356b4-c228-4580-a4c3-cddc2e0327b4 " />
2025-05-20 14:25:13 +10:00
Cian Johnston and BrunoQuaresma
ac7961a5b0
feat: add Organization Provisioner Keys view ( #17889 )
...
Fixes https://github.com/coder/coder/issues/17698
**Demo:**
https://github.com/user-attachments/assets/ba92693f-29b7-43ee-8d69-3d77214f3230
---------
Co-authored-by: BrunoQuaresma <bruno_nonato_quaresma@hotmail.com >
2025-05-19 16:58:12 +01: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
87a1ebc460
chore: replace MUI Button - 1 ( #17865 )
2025-05-16 12:31:32 -07:00
Bruno Quaresma
4ac41375a0
chore: replace MUI icons with Lucide icons - 15 ( #17861 )
...
AccountCircleOutlined -> CircleUserIcon
BugReportOutlined -> BugIcon
ChatOutlined -> MessageSquareIcon
ExitToAppOutlined -> LogOutIcon
LaunchOutlined -> SquareArrowOutUpRightIcon
MenuBook -> BookOpenTextIcon
OpenInNew -> EternalLinkIcon
EmailOutlined -> MailIcon
WebhookOutlined -> WebhookIcon
Business -> Building2Icon
Person -> UserIcon
2025-05-15 22:32:50 -03:00
Bruno Quaresma
ea63d27e45
chore: migrate spinner components ( #17866 )
2025-05-15 22:29:58 -03:00
M Atif Ali and BrunoQuaresma
2c49fd9e96
feat: add copy button for workspace name in breadcrumb ( #17822 )
...
Co-authored-by: BrunoQuaresma <bruno_nonato_quaresma@hotmail.com >
2025-05-15 22:41:01 +05: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
709445e6fb
chore: replace MUI icons with Lucide icons - 9 ( #17796 )
...
OpenInNew -> ExternalLinkIcon
KeyboardArrowLeft -> ChevronLeftIcon
KeyboardArrowRight -> ChevronRightIcon
Settings -> SettingsIcon
2025-05-13 13:53:06 -04:00
Bruno Quaresma
86da21c491
chore: replace MUI icons with Lucide icons - 10 ( #17797 )
...
CloseOutlined -> XIcon
SearchOutlined -> SearchIcon
Refresh -> RotateCwIcon
Build -> WrenchIcon
2025-05-13 12:31:36 -03:00
Bruno Quaresma
eb9a651acd
chore: replace MUI icons with Lucide icons - 8 ( #17778 )
...
1. Replaced CheckOutlined with CheckIcon in:
- TemplateVersionStatusBadge.tsx
- TemplateEmbedPage.tsx
- IntervalMenu.tsx
- WeekPicker.tsx
- SelectMenu.tsx
2. Replaced EditCalendarOutlined with CalendarCogIcon in:
- UserSettingsPage/Sidebar.tsx
- Sidebar.stories.tsx
3. Replaced LockOutlined with LockIcon in:
- UserSettingsPage/Sidebar.tsx
- TemplateSettingsPage/Sidebar.tsx
- Sidebar.stories.tsx
4. Replaced Person with UserIcon in:
- UserSettingsPage/Sidebar.tsx
- Sidebar.stories.tsx
5. Replaced VpnKeyOutlined with KeyIcon in:
- UserSettingsPage/Sidebar.tsx
- Sidebar.stories.tsx
6. Replaced FingerprintOutlined with FingerprintIcon in:
- UserSettingsPage/Sidebar.tsx
- Sidebar.stories.tsx
2025-05-13 10:09:45 -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
842bb1f014
chore: replace MUI icons - 6 ( #17751 )
...
1. Replaced CheckCircleOutlined with CircleCheckIcon (Lucide)
2. Replaced Close/CloseIcon with XIcon (Lucide)
3. Replaced DoNotDisturbOnOutlined with CircleMinusIcon (Lucide)
4. Replaced Sell with TagIcon (Lucide)
2025-05-09 17:07:57 -03:00
Bruno Quaresma
4970fb9bfa
chore: replace MUI icons - 4 ( #17748 )
...
1. Replaced CloudUploadOutlined with CloudUploadIcon in FileUpload.tsx
2. Replaced DeleteOutline with TrashIcon in:
- WorkspaceTopbar.tsx
- TokensPageView.tsx
- GroupPage.tsx
3. Replaced FolderOutlined with FolderIcon in FileUpload.tsx
2025-05-09 15:57:28 -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
9d7630bf4b
chore: replace MUI icons - 1 ( #17731 )
...
1. Replaced MUI StopOutlined with Lucide SquareIcon in:
- workspace.tsx
- WorkspacesPageView.tsx
- BuildIcon.tsx
2. Replaced MUI PlayArrowOutlined with Lucide PlayIcon in:
- workspace.tsx
- WorkspacesPageView.tsx
- BuildIcon.tsx
3. Replaced MUI DeleteOutlined with Lucide TrashIcon in:
- WorkspacesPageView.tsx
- WorkspaceActions.tsx
- TemplatePageHeader.tsx
- BuildIcon.tsx
2025-05-09 11:16:46 -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
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
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
Bruno Quaresma
2695f4e950
chore: improve variable names of mocked users ( #17701 )
...
Many times I got confused when using MockUser and MockUser2 so I just
decided to better naming them to MockUserOwner and MockUserMember.
2025-05-08 09:32:32 -03:00
Bruno Quaresma
4fa9d30bf4
refactor: update app buttons to use the new button component ( #17684 )
...
Related to https://github.com/coder/coder/issues/17311
- Replaces the MUI Buttons by the new shadcn/ui buttons. This change
allows the reuse of app links, and terminal buttons using the `asChild`
capability from the Radix components
- Uses the new [proposed
design](https://www.figma.com/design/OR75XeUI0Z3ksqt1mHsNQw/Workspace-views?node-id=1014-8242&t=wtUXJRN1SfyZiFKn-0 )
- Updates the button styles to support image tags as icons
- Uses the new Tooltip component for the app buttons
**Before:**
<img width="1243" alt="Screenshot 2025-05-05 at 17 55 49"
src="https://github.com/user-attachments/assets/e689e9dc-d8e1-4c9d-ba09-ef1479a501f1 "
/>
**After:**
<img width="1264" alt="Screenshot 2025-05-05 at 18 05 38"
src="https://github.com/user-attachments/assets/8fafbe20-f063-46ab-86cf-2e0381bba889 "
/>
2025-05-06 13:26:37 -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