perf: event-script form opens instantly (services_only path + release sync)#485
Open
nicdavidson wants to merge 10 commits intomainfrom
Open
perf: event-script form opens instantly (services_only path + release sync)#485nicdavidson wants to merge 10 commits intomainfrom
nicdavidson wants to merge 10 commits intomainfrom
Conversation
…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).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Release sync of
developintomain. 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.resolvernow fetches only the list of service names via the new?services_only=truebackend fast path (~80 bytes, ~30 ms).df-script-details.componentfetches 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
ng build) succeeds;dist/rebuilt at the tip.services_only=truepath returns only service names./system/event?service=X&scriptable=truecall that populates the cascade.eventScripts.spec.tsunit tests still pass.