SurfSense/surfsense_web
CREDO23 c0a9ea368f feat(web): automations detail page (definition viewer + trigger manager)
Vertical slice at /dashboard/[id]/automations/[automation_id]. Branches
in the orchestrator are: perms loading → skeleton, no-access → access
denied panel, bad id → not-found, fetch loading → skeleton, fetch
error → not-found, loaded → header + definition + triggers.

Route:
- page.tsx — server boundary; extracts both ids.
- automation-detail-content.tsx — client orchestrator.

Header:
- automation-detail-header.tsx — back link, name, status badge,
  description, pause/resume + delete actions. Delete navigates back to
  the list via a new onDeleted hook on DeleteAutomationDialog so the
  list page (where the row just vanishes) stays unaffected.
- automation-not-found.tsx — 404/403/NaN-id panel. We don't
  distinguish missing vs. forbidden in the UI.

Definition (read-only in v1):
- automation-definition-section.tsx — wrapper Card; renders goal +
  tags + execution defaults + inputs schema (if present) + plan.
- plan-step-card.tsx — one step (when, output_as, retries, timeout,
  params JSON).
- execution-summary.tsx — timeout / max_retries / backoff /
  concurrency + on_failure step count.
- inputs-schema-preview.tsx — formatted JSON of inputs.schema; only
  rendered when the definition declares inputs.

Triggers:
- automation-triggers-section.tsx — wrapper Card, "Add via chat" CTA
  (creation is intent-driven, same philosophy as automations).
- trigger-card.tsx — schedule + timezone + cron, last/next fire
  hints, static_inputs JSON, enable Switch and remove button.
- delete-trigger-dialog.tsx — confirm + mutation atom.

Shared:
- lib/describe-cron.ts — moved out of automation-triggers-summary.tsx
  so both list and detail can describe schedules consistently
  (daily/weekdays/weekly/monthly/hourly, raw cron fallback).

Loading:
- automation-detail-loading.tsx — same shell as the loaded view so the
  layout doesn't jump on data arrival.

RBAC: each interactive surface is independently gated
(canUpdate/canDelete/canCreate) so the orchestrator stays thin and the
component tree is self-documenting about what each action requires.

Out of scope (later PRs):
- Editing definition / trigger params (raw-JSON path) — PR5
- Run history — PR6
2026-05-28 01:21:54 +02:00
..
app feat(web): automations detail page (definition viewer + trigger manager) 2026-05-28 01:21:54 +02:00
atoms feat(web): automations contracts, API client, atoms and hooks 2026-05-28 00:55:57 +02:00
blog/content fix: update URLs to use the "www" subdomain across the application 2026-05-15 12:35:15 -07:00
changelog/content chore: added missed changelogs 2026-04-16 22:14:44 -07:00
components feat(web): surface Automations in the sidebar under Inbox 2026-05-28 01:11:20 +02:00
content/docs feat(docs): add observability documentation 2026-05-23 03:18:25 +05:30
contexts feat: fixed vision/image provider specific errors and fixed podcast/video streaming 2026-05-02 19:18:53 -07:00
contracts feat(web): automations contracts, API client, atoms and hooks 2026-05-28 00:55:57 +02:00
features/chat-messages refactor: replace action log sheet with dialog component and update related references 2026-05-18 01:34:41 +05:30
hooks feat(web): automations contracts, API client, atoms and hooks 2026-05-28 00:55:57 +02:00
i18n chore: linting 2026-03-27 03:17:05 -07:00
lib feat(web): automations contracts, API client, atoms and hooks 2026-05-28 00:55:57 +02:00
messages feat: add processing mode support for document uploads and ETL pipeline, improded error handling ux 2026-04-14 21:26:00 -07:00
public feat: added adsense on /free page 2026-05-21 21:01:10 -07:00
tests chore: fix linting 2026-05-12 04:00:04 +05:30
types chore: linting 2026-04-27 14:04:50 -07:00
zero feat: unified credits and its cost calculations 2026-05-02 14:34:23 -07:00
.cursorrules feat: monorepo 2025-04-07 23:47:06 -07:00
.dockerignore chore: ignore Playwright runtime artifacts 2026-05-04 17:48:44 +05:30
.env.example feat: added adsense on /free page 2026-05-21 21:01:10 -07:00
.gitignore chore: update .gitignore and biome.json to include additional test-related directories and files for improved E2E testing 2026-05-12 03:59:52 +05:30
biome.json chore: update .gitignore and biome.json to include additional test-related directories and files for improved E2E testing 2026-05-12 03:59:52 +05:30
components.json chore: ran linting 2026-02-17 12:47:39 +05:30
docker-entrypoint.js format: auto-fix via pnpm format:fix 2026-03-24 16:07:28 +02:00
docker-entrypoint.sh feat: add Docker configuration files and installation script for SurfSense 2026-02-24 22:45:37 +05:30
Dockerfile chore: update Docker configuration to include pnpm workspace and refine dependency management 2026-05-11 15:31:24 +05:30
drizzle.config.ts chore: biome checks 2025-10-15 14:38:26 -07:00
eslint.config.mjs Biome: fixes for eslint config 2025-07-27 11:47:38 -07:00
instrumentation-client.ts feat: implement analytics tracking for desktop app events 2026-04-18 14:35:14 -07:00
instrumentation.ts feat: enhance error handling with PostHog integration 2026-03-12 01:28:39 -07:00
LICENSE feat: monorepo 2025-04-07 23:47:06 -07:00
mdx-components.tsx perf(images): add sizes prop to improve Next.js image loading 2026-04-03 22:11:21 +07:00
next.config.ts feat(next.config): enable remote SVG support with enhanced content security policy 2026-05-05 19:13:38 -07:00
package.json feat: bumped version to 0.0.25 2026-05-21 14:44:33 -07:00
playwright.config.ts chore: fix linting 2026-05-12 04:00:04 +05:30
pnpm-lock.yaml chore: remove caret from @rocicorp/zero dependency version 2026-05-13 03:34:28 +05:30
pnpm-workspace.yaml feat: added blog posts 2026-05-15 11:55:30 -07:00
postcss.config.mjs Initial formatting using biome 2025-07-27 10:05:37 -07:00
source.config.ts feat: added blog posts 2026-05-15 11:55:30 -07:00
svgr.d.ts chore: ran linting 2026-02-10 19:06:21 +05:30
tailwind.config.js feat: enhance UI components with new border radius and tooltip features 2026-01-20 17:35:08 +05:30
tsconfig.json feat: old chat to new-chat with persistance 2025-12-21 16:32:55 -08:00