Rewrites the OCaml handler dispatch to handle all handler types: 1. Nested slug extraction: (api.(editrow.1)) → slug "editrow", param "1" 2. Method-based handler lookup: tries exact slug, then suffixes like -form (GET), -save/-submit (POST), -put (PUT) 3. Path param injection: extracts <sx:param_name> from handler path template, converts underscores to hyphens, injects into query string 4. Param binding: reads handler (&key) params via request-arg/request-form and binds them in env before aser evaluation 5. Handles both List and ListRef param storage (CEK may mutate) 6. Response status support: set-response-status handled natively Fixes: delete-row, edit-row, tabs, editrow-cancel, and all parameterized handlers. 17/19 handlers now return 200 (flaky=503 intentional, slow=500 IO bridge timeout). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
128 KiB
128 KiB