Skip to content

feat--frontend-overhaul #1537

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

Draft
wants to merge 47 commits into
base: main
Choose a base branch
from
Draft

feat--frontend-overhaul #1537

wants to merge 47 commits into from

Conversation

grutt
Copy link
Contributor

@grutt grutt commented Apr 11, 2025

Description

A complete rework of the Hatchet frontend UI/UX to support a more consistent, scalable, and navigable developer experience.

Fixes # (issue)

Type of change

  • 🚨 Refactor (major structural/UI overhaul)

Goals

This PR addresses core UX and structural issues that have grown with the platform:

  • Establish consistent layout and component structure across pages
  • Improve clarity and traceability of parent-child workflow runs
  • Simplify navigation across services and settings
  • Enhance maintainability for contributors by reducing ad-hoc patterns

Structural Changes

  • Feature hooks
    • use-alerter.ts notification component (top right) -- right now only invites
    • use-api-meta.ts api metadata for capabilities -- bundles cloud and oss calls
    • use-api-tokens.ts api token crud
    • use-billing.ts cloud only billing state
    • use-breadcrumbs.tsx breadcrumb state for navigation
    • use-can.ts permission based on user and tenant state
    • use-cloud-feature-flags.ts cloud feature flags
    • use-crons.ts cron run crud
    • use-definitions.ts definition crud
    • use-docs-sheet.ts doc sidebar state
    • use-filters.tsx sharable filter state
    • use-managed-compute.ts cloud managed compute state
    • use-members.tsx tenant member state and invite crud
    • use-mobile.tsx is mobile
    • use-pagination.tsx sharable page state
    • use-ratelimits.ts ratelimit crud
    • use-run-detail.tsx detailed view for workflow and task runs
    • use-runs.tsx run list and actions for runs
    • use-schedules.ts schedules crud
    • use-support-chat.ts cloud chat helpers
    • use-tenant.ts tenant crud
    • use-timeline-context.tsx state for the waterfall
    • use-user.ts user crud
    • use-workers.ts worker crud
  • Initial sharable filter and pagination hooks and components
  • Replace all routes and links with route builder utility
  • Replace doc links with exported doc link generation
  • Add can package for consistent authorization checks
  • Introduce breadcrumbs across relevant pages
  • Consistent layout structure and ShadCN UI usage
  • Add /next routing namespace for new UI shell
  • Add CodeBlock component for docs-like code consistency
  • Standardized filter component design
  • Error boundaries on hook mutation failure
  • Initial loading state ... cmd + f loading...

Pages Ready to Rock ✅

As we burn page design and layout ✅ when it is confirmed to be feature complete and responsive

Auth

  • /next/auth/login
  • /next/auth/register
  • /next/auth/verify-email

Onboarding

  • /next/onboarding/new
  • /next/onboarding/invites

Runs

  • /next/runs
  • /next/runs/:runId
  • /next/runs/:runId/:taskId

Scheduled

  • /next/scheduled

Crons

  • /next/crons

Tasks

  • /next/tasks

Services

  • /next/services
  • /next/services/:serviceName
  • /next/services/:serviceName/:workerName

Rate Limits

  • /next/rate-limits

Settings

  • /next/settings/api-tokens
  • /next/settings/team
  • /next/settings/overview
  • /next/settings/github
  • /next/settings/resource-limits
  • /next/settings/alerting
  • /next/settings/ingestors

Copy link

vercel bot commented Apr 11, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
hatchet-docs ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 30, 2025 9:35pm
hatchet-v0-docs ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 30, 2025 9:35pm

@grutt grutt requested a review from Copilot April 11, 2025 19:42
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot reviewed 221 out of 222 changed files in this pull request and generated 2 comments.

Files not reviewed (1)
  • frontend/app/package.json: Language not supported
Comments suppressed due to low confidence (1)

frontend/app/src/next/components/runs/runs-histogram.tsx:18

  • The useQuery hook is used but not imported. Ensure you import useQuery from the appropriate library (e.g., react-query) to avoid runtime errors.
const workflowRunEventsMetricsQuery = useQuery({

@grutt
Copy link
Contributor Author

grutt commented Apr 11, 2025

Copilot reviewed 221 out of 222 changed files in this pull request and generated 2 comments.

Files not reviewed (1)
Comments suppressed due to low confidence (1)

wow im not sure if the rewrite is not bad or if copilot is bad....

Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot reviewed 220 out of 221 changed files in this pull request and generated no comments.

Files not reviewed (1)
  • frontend/app/package.json: Language not supported
Comments suppressed due to low confidence (2)

frontend/app/src/next/components/runs/run-output-card.tsx:77

  • Wrap the JSON.parse(error) call in a try/catch block to prevent the component from throwing an exception if the error string is not valid JSON. For example, default to displaying the raw error string if parsing fails.
error ? JSON.stringify(JSON.parse(error), null, 2) : JSON.stringify(output, null, 2)

frontend/app/src/next/components/providers/support-chat.provider.tsx:58

  • Check if the script element is still present in the DOM before calling removeChild in the cleanup function to avoid possible errors.
document.body.removeChild(script);

* feat: config

* fix: rm schedule timeout
* feat: rq devtools

* fix: badge hover

* feat: improve sidebar

* refactor: hook

* fix: input undefined
* merge

* merge

* fix merge issue

* rm debug lines

* case on count

* fix: display names

* colors and handle on click

---------

Co-authored-by: mrkaye97 <[email protected]>
* fix tab state on state changes

* fix collapsed children

* setup

* layout

* layout

* move feature

* wip

* chore(deps): bump k8s.io/client-go from 0.32.3 to 0.33.0 (#1608)

Bumps [k8s.io/client-go](https://github.com/kubernetes/client-go) from 0.32.3 to 0.33.0.
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](kubernetes/client-go@v0.32.3...v0.33.0)

---
updated-dependencies:
- dependency-name: k8s.io/client-go
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* wip

* universal install

* initial migration guide

* fakefake tokens

* fake secret

* fixes

* lint

* lint

* lint

* tidy

* chore: expose clean docs on top level

* drop reo

* wip

* static

* functional

* bump go 1.23 -> 1.24

* fix: whitespace lint

* bump golangci-lint version

* wip

* try to set up go before pre commit runs

* lint

* names

* lint

* fix: session store

* wip

* normalized snips

* fix links

* blog: mergent migration (#1611)

* universal install

* initial migration guide

* fakefake tokens

* fake secret

* fixes

* lint

* lint

* lint

* tidy

* bump go 1.23 -> 1.24

* fix: whitespace lint

* bump golangci-lint version

* try to set up go before pre commit runs

* lint

* names

* lint

* fix: session store

* fix links

---------

Co-authored-by: Alexander Belanger <[email protected]>

* reusable state

* fix: rm unimplemented pages for now (#1615)

* feature dir

* fixes (#1616)

* with public auth

* completed typescript flow

* go blocks

* wip

* layout

* wip

* feat: read replica support and docs (#1617)

* feat: read replica support and docs

* fix: load logic

* wip

* wip

* remove provider

* migrate to static

* fix block

* lint

* fix: loadtest

* add task for linting

* cleanup

* fix meta sync

* clean examples with highlights

* get snips into app

* sync

* remove fake highlights

* always gen before build

* ignore generated

* ignore

* ignore generated

* cleanup

* always start the dev server

* examples dependabot

* app examples built off sdk examples

* auto sync on main changes

* sync the quickstarts with updating dependencies

* examples and quickstart dependabots

* only examples

* functional onboarding

* fix worker detail page

* fix detail page

* lint

* init

* tested structure copy

* prepend

* ❓to >, ‼️ to !!

* normalize

* separate example source

* multi source

* with index

* wip

* clean generation

* migrated

* cleanup

* should build

* sync before build

* fix steps

* inline

* mkdirs

* revert build

* gen docs

* static

* rm

* update examples

* lint

* fix: ts

* fix remove lines on match

* fix: client

* add snips

* dont lint examples

* fix source

* dont test examples

* exclude quickstart

* lint

* dont break examples

* cleanup

* cleanup

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Belanger <[email protected]>
Co-authored-by: Matt Kaye <[email protected]>
Co-authored-by: abelanger5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants