Skip to content

perf: event-script form opens instantly (services_only path + release sync)#485

Open
nicdavidson wants to merge 10 commits intomainfrom
develop
Open

perf: event-script form opens instantly (services_only path + release sync)#485
nicdavidson wants to merge 10 commits intomainfrom
develop

Conversation

@nicdavidson
Copy link
Copy Markdown
Contributor

Summary

Release sync of develop into main. Headline change: the Event Script create form no longer hangs on a spinning cog while waiting for the entire event catalog.

perf: scoped event fetch on the Event Script create form

Problem. The event-script create form's resolver was calling GET /api/v2/system/event?scriptable=true — which on the backend enumerates every active service's tables/procedures/functions into one big map. For customers like Triskele (~11+ services, several DB-backed), the form sat on a loading spinner long enough to look broken.

Change.

  • events.resolver now fetches only the list of service names via the new ?services_only=true backend fast path (~80 bytes, ~30 ms).
  • df-script-details.component fetches the scoped event map for the chosen service on selection (?service=X&scriptable=true), populating the script-type / method / name cascade from that single-service response.

The cascade UX (Service → Script Type → Method → Name) is unchanged — just the shape of the requests. One extra network round-trip when the user picks a service, in exchange for the form opening immediately.

Requires the matching df-system PR that introduces services_only=true: dreamfactorysoftware/df-system#57.

Also in this batch (already merged to develop via prior PRs)

Test plan

  • Production build (ng build) succeeds; dist/ rebuilt at the tip.
  • Verified services_only=true path returns only service names.
  • Verified the form opens instantly instead of hanging on the spinner.
  • Verified selecting a service triggers one scoped /system/event?service=X&scriptable=true call that populates the cascade.
  • Verified existing eventScripts.spec.ts unit tests still pass.
  • CI on main sync.

codyllord and others added 10 commits April 10, 2026 20:58
…or notification to json element for custom tool static headers
…-lookup-picker

add UI elements needed for lookup picker in custom mcp tools, add err…
… saved with contextual popup to give user options isntead of deleting changes
…-unsaved-guard

add guard to interrupt saving mcp service if custom mcp tools are not…
The bundled JSHint fork in ace-builds 1.24.2 (still present
unchanged in 1.43.6) never plumbs state.option.module into the
prefix("await", ...) handler, so a /* jshint module: true */
directive is silently ignored for top-level await expressions in
the MCP custom tool function body editor. The handler falls into
its "treat await as identifier" branch and produces a misleading
"Missing ';' before statement." error on otherwise valid code.

Patch the minified worker so the handler takes a module-mode
path that parses the await operand as an expression without
requiring a surrounding async function. Async-function behavior
is unchanged.

Customers can now write:

    /* jshint esversion: 11, module: true */
    const res = await fetch(...);

in the custom tool function body editor and get clean linting.
Runtime was already fine — the daemon wraps the body in an
async IIFE at custom-tools.service.ts, so this was purely a
cosmetic editor warning, but a disruptive one.

A marker comment is prepended to worker-javascript.js so future
ace-builds upgrades know to re-audit this patch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…integration-mcp

Feature/add GitHub integration mcp
The event-script create form was fetching the entire event catalog up
front (GET /system/event?scriptable=true), which enumerates every
service's tables/procedures/functions. On instances with many services
the form would hang on "loading" with a spinning cog.

- events.resolver now fetches only the list of services via the new
  ?services_only=true backend fast path (~80 bytes, ~30ms).
- df-script-details.component fetches the scoped event map for the
  chosen service on selection (?service=X&scriptable=true), populating
  the script-type / method / name cascade from the single-service
  response.

Requires the matching df-system change (services_only fast path on
/system/event).
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.

2 participants