Fix workflow start, delete guard, package buttons, export, settings CSS
All checks were successful
CI/CD / e2e-smoke (pull_request) Has been skipped
CI/CD / test-frontend (pull_request) Successful in 5s
CI/CD / test-sqlite (pull_request) Successful in 2m52s
CI/CD / test-go-pg (pull_request) Successful in 2m53s
CI/CD / build-and-deploy (pull_request) Successful in 1m17s
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-runners (pull_request) Has been skipped

- Add StartBySlug handler + /api/v1/workflow-entry/:scope/:slug route
  so landing page Start button resolves scope/slug and creates instance
- Guard admin DELETE /api/v1/workflows/:id to reject team-scoped
  workflows (must use team endpoint) preventing accidental global delete
- Hide Delete button for bundled packages (match Export/Update guards)
- Package export uses fetch() with auth + toast on missing assets
- Settings form padding-bottom increased to --sp-12 for save button
- Admin workflow editor: shared StageForm component, public entry URL

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-02 21:31:30 +00:00
parent e4f0bdbd36
commit 8d765491ed
11 changed files with 456 additions and 198 deletions

View File

@@ -1183,9 +1183,16 @@ func (h *PackageHandler) ExportPackage(c *gin.Context) {
// Walk packagesDir/{id}/ and add all asset files
if h.packagesDir == "" {
log.Printf("[packages] export: packagesDir not set, exporting manifest only for %s", pkgID)
c.Header("X-Export-Warning", "no-assets")
return
}
pkgDir := filepath.Join(h.packagesDir, pkgID)
if _, statErr := os.Stat(pkgDir); os.IsNotExist(statErr) {
log.Printf("[packages] export: asset directory missing for %s, exporting manifest only", pkgID)
c.Header("X-Export-Warning", "no-assets")
return
}
filepath.Walk(pkgDir, func(path string, info os.FileInfo, err error) error {
if err != nil || info.IsDir() {
return nil