Skip to content

feat: add View Source button for template administrators in workspace creation #18951

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jul 23, 2025

Conversation

blink-so[bot]
Copy link
Contributor

@blink-so blink-so bot commented Jul 21, 2025

Summary

Adds a "View Source" button to the workspace creation page that allows template administrators to quickly navigate to the template editor.
Context: https://codercom.slack.com/archives/C015YDF37AT/p1753109218026359

Changes

  • Added canUpdateTemplate permission check to workspace creation flow
  • Added "View Source" button in the page header next to the Cancel button
  • Button only appears for users with template update permissions
  • Links directly to the template version editor page
  • Uses ExternalLinkIcon for consistency with other source viewing features

Problem Solved

Addresses user friction where template administrators expect to be able to edit templates directly from the workspace creation flow. Previously, admins had to navigate away from the workspace creation page to find the template editor.

Testing

  • Button appears for users with template update permissions
  • Button is hidden for users without template update permissions
  • Link navigates to correct template version editor page
  • UI layout remains consistent with existing design patterns

Screenshots

The View Source button appears in the top-right corner of the workspace creation page, similar to the implementation shown in the original request.

Fixes user feedback about template admin workflow friction.

… creation

Adds a View Source button to the workspace creation page that allows template
administrators to quickly navigate to the template editor. The button:

- Only appears for users with template update permissions
- Links directly to the template version editor
- Uses the ExternalLinkIcon for consistency with other source viewing features
- Is positioned next to the Cancel button in the page header

This addresses user friction where template admins expect to be able to edit
templates directly from the workspace creation flow.

Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
@blink-so blink-so bot requested a review from aslilac as a code owner July 21, 2025 15:16

This comment was marked as spam.

@matifali matifali requested a review from phorcys420 July 21, 2025 15:18
blink-so bot and others added 2 commits July 21, 2025 15:18
Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
Copy link
Member

@aslilac aslilac left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

needs a story added to storybook to exercise this change

Adds two new stories to test the View Source button functionality:
- WithViewSourceButton: Shows the button for template administrators
- WithoutViewSourceButton: Hides the button for regular users

These stories exercise the canUpdateTemplate prop and demonstrate
the conditional rendering of the View Source button.

Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
Copy link
Member

@aslilac aslilac left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you'll also need to add this button to the CreateWorkspacePageViewExperimental component which will soon become the default. make sure to include a story for it as well.

Comment on lines 70 to 76
canUpdateTemplate: {
object: {
resource_type: "template",
resource_id: templateQuery.data?.id ?? "",
},
action: "update",
},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you should just add this inside of the createWorkspaceChecks helper, that's what it is for

Comment on lines 406 to 424
export const WithoutViewSourceButton: Story = {
args: {
canUpdateTemplate: false,
versionId: "template-version-123",
template: {
...MockTemplate,
organization_name: "default",
name: "docker-template",
},
},
parameters: {
docs: {
description: {
story:
"This story shows the workspace creation page for users without template update permissions. The View Source button is hidden for these users.",
},
},
},
};
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you don't need a story for this. the default is false so every other story already verifies this.

<Button size="sm" variant="outline" onClick={onCancel}>
Cancel
</Button>
<Stack direction="row" spacing={2}>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the actions prop is already rendered inside of a flex container that adds spacing. just use a fragment.

@blink-so blink-so bot force-pushed the feat/view-source-button-workspace-creation branch from 4c1cdad to 96f849c Compare July 23, 2025 16:38
…ermissions

Addresses review feedback:
- Added View Source button to CreateWorkspacePageViewExperimental component
- Refactored createWorkspaceChecks helper to include template update permission
- Updated both regular and experimental pages to use the new permissions helper
- Added story for experimental component with View Source button
- Removed unnecessary WithoutViewSourceButton story (default behavior)

The View Source button now appears in both the regular and experimental
workspace creation pages for template administrators.

Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
@blink-so blink-so bot force-pushed the feat/view-source-button-workspace-creation branch from 96f849c to aca0211 Compare July 23, 2025 16:42
@aslilac aslilac merged commit 28789d7 into main Jul 23, 2025
32 checks passed
@aslilac aslilac deleted the feat/view-source-button-workspace-creation branch July 23, 2025 17:16
@github-actions github-actions bot locked and limited conversation to collaborators Jul 23, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant