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 29 commits into
base: main
Choose a base branch
from
Draft

feat--frontend-overhaul #1537

wants to merge 29 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 21, 2025 8:44pm
hatchet-v0-docs 🛑 Canceled (Inspect) Apr 21, 2025 8:44pm

@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);

* simple trigger

* populated

* feat:trigger modal

* clear

* Update frontend/app/src/next/hooks/use-runs.tsx

Co-authored-by: Copilot <[email protected]>

---------

Co-authored-by: Copilot <[email protected]>
* simple trigger

* populated

* feat:trigger modal

* clear

* Update frontend/app/src/next/hooks/use-runs.tsx

Co-authored-by: Copilot <[email protected]>

* wip activity log

* merged logs

* wip

* wip

* search box

* fudge sort

* wip improved worker sheet

* wip

* chore: improve error on dispatcher (#1538)

* fix: empty billing context (#1553)

* fix: empty

* precommit

* hotfix: priority nil pointer (#1555)

* hotfix: priority on schedule workflow (#1556)

* hotfix: priority on schedule workflow

* fix: build

* build

* lint

* build

---------

Co-authored-by: Copilot <[email protected]>
Co-authored-by: abelanger5 <[email protected]>
* chore: improve error on dispatcher (#1538)

* fix: empty billing context (#1553)

* fix: empty

* precommit

* hotfix: priority nil pointer (#1555)

* hotfix: priority on schedule workflow (#1556)

* hotfix: priority on schedule workflow

* fix: build

* Hotfix: Handle EOF Properly (#1557)

* fix: handle EOF properly

* chore: version

* fix: debug logs

* fix: rm eof type

* hotfix: priority on cron workflow for v0 (#1558)

* fix: one more possible null deref (#1560)

* Hatchet Python Blog Post (#1526)

* feat: initial pass at first parts of blog post

* feat: initial mkdocs setup

* feat: first pass at embedding mkdocs

* fix: config

* debug: paths

* fix: unwind docs hack

* feat: start working on mkdocs theme

* fix: paths

* feat: wrap up post

* fix: proof

* fix: doc links

* fix: rm docs

* fix: lint

* fix: lint

* fix: typos + tweak

* fix: tweaks

* fix: typo

* fix: cleanup

* fix: go signature and docs (#1561)

* fix: go signature and docs

* Update examples/v1/workflows/concurrency-rr.go

Co-authored-by: Copilot <[email protected]>

---------

Co-authored-by: Copilot <[email protected]>

* feat: toggle doc sheet

* docs: concurrency cleanup (#1562)

* feat: storage adapter

* docs--worker-config-options (#1535)

* docs--worker-config-options

* Update frontend/docs/pages/home/workers.mdx

Co-authored-by: abelanger5 <[email protected]>

* Update worker-configuration-options.mdx

* lint

---------

Co-authored-by: abelanger5 <[email protected]>

---------

Co-authored-by: abelanger5 <[email protected]>
Co-authored-by: Matt Kaye <[email protected]>
Co-authored-by: Copilot <[email protected]>
abelanger5 and others added 2 commits April 21, 2025 11:05
* feat: simple workflows list page

* feat: refactor + add route for individual workflow

* feat: start wiring up workflow detail page

---------

Co-authored-by: Gabe Ruttner <[email protected]>
Comment on lines +466 to +467
]?.primary || 'text-gray-500',
'bg-transparent',
Copy link
Contributor

Choose a reason for hiding this comment

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

I know we do this a lot - I think it's more Tailwind-y to use data attribute variants for this sort of thing. It's not blocking or anything, but I think at some point we should do this

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