From 59d396bff6167cb8f79086c18ebe8c169a9cfc8c Mon Sep 17 00:00:00 2001 From: Don van Gent Date: Fri, 19 Jun 2026 23:43:51 +0200 Subject: [PATCH 1/5] ci: update golangci-lint --- .github/workflows/golangci-lint.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index cfdfbee..e6ad721 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -14,11 +14,11 @@ jobs: name: lint runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 - - uses: actions/setup-go@v5 + - uses: actions/checkout@v6 + - uses: actions/setup-go@v6 with: go-version: stable - name: golangci-lint - uses: golangci/golangci-lint-action@v8 + uses: golangci/golangci-lint-action@v9 with: - version: v2.4 + version: v2.12 From 5b98c06abb3d63adc83036c276d0a827901114ed Mon Sep 17 00:00:00 2001 From: Don van Gent Date: Fri, 19 Jun 2026 23:45:40 +0200 Subject: [PATCH 2/5] docs: remove roadmap and uupdate link to Swimlane docs --- README.md | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/README.md b/README.md index 1a10f23..0fd9cc9 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ With SwimPeek you can browse relationships between resources and answer question go install github.com/just-oblivious/swimpeek@latest ``` -1. Create a Personal Access Token for your Swimlane account ([docs](https://docs.swimlane.com/docs/introduction/customize-your-user-profile.htm)) +1. Create a Personal Access Token for your Swimlane account ([docs](https://docs.swimlane.com/customize-your-user-profile#creating-a-personal-access-token)) 1. Configure SwimPeek: ```sh @@ -62,16 +62,3 @@ Run `swimpeek cmd -help` to learn more about the usage of each subcommand ## Contributing Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. - - -## Roadmap - -Features to be added soon™: - -- Filtering in list views -- Navigation between flow nodes and references -- Support for triggers (view all playbook triggers and track flow events) -- Support for assets (see what assets exists and where they are used) -- SUpport for connector actions (list available connectors and see where they are used) -- Configuration details for individual action nodes (i.e. the input parameters) -- Global search From f691deac9e26a653f954ef08a273c39e78d0f521 Mon Sep 17 00:00:00 2001 From: Don van Gent Date: Fri, 19 Jun 2026 23:50:05 +0200 Subject: [PATCH 3/5] bugfix: return emitEvent node instead of nil value when a sensor is not found. --- internal/graph/actions.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/graph/actions.go b/internal/graph/actions.go index a73c24b..61e8b78 100644 --- a/internal/graph/actions.go +++ b/internal/graph/actions.go @@ -62,7 +62,7 @@ func createActionNode(warns *Warnings, graph *Graph, action laneclient.PlaybookA sensNode, exists := graph.Resources.TriggersById[sensorName] if !exists { warns.Add(fmt.Errorf("emitEvent action %s references unknown sensor %s", actId, sensorName)) - return sensNode, nil + return emitNode, nil } newEdge(sensNode, emitNode, EmittedByEdge, nil) return emitNode, nil From 554e1afde00c84d358d5ff257efe391153ad7823 Mon Sep 17 00:00:00 2001 From: Don van Gent Date: Fri, 19 Jun 2026 23:52:55 +0200 Subject: [PATCH 4/5] feat: add support for Hero AI and CSV Get Rows actions --- internal/graph/actions.go | 6 ++++++ internal/graph/resources.go | 2 ++ internal/tui/app/labels.go | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/internal/graph/actions.go b/internal/graph/actions.go index 61e8b78..6b7094f 100644 --- a/internal/graph/actions.go +++ b/internal/graph/actions.go @@ -133,6 +133,12 @@ func createActionNode(warns *Warnings, graph *Graph, action laneclient.PlaybookA } newEdge(appNode, recNode, AccessedByEdge, nil) return recNode, nil + + case "heroAI": + return newNode(newMeta(actId, HeroAIActionNode, action.Title, action.Description)), nil + + case "fileUtilities": + return newNode(newMeta(actId, CSVGetRowsActionNode, action.Title, action.Description)), nil } return newNode(newMeta(actId, UnknownActionNode, action.Title, action.Description)), fmt.Errorf("unknown action type %s", action.Type) diff --git a/internal/graph/resources.go b/internal/graph/resources.go index 1ebfcd0..2a6bddc 100644 --- a/internal/graph/resources.go +++ b/internal/graph/resources.go @@ -45,6 +45,8 @@ const ( ConditionalActionNode NodeType = "condition_action" HTTPActionNode NodeType = "http_action" NotificationActionNode NodeType = "notification_action" + HeroAIActionNode NodeType = "heroai_action" + CSVGetRowsActionNode NodeType = "csv_get_rows_action" ) type EdgeType string diff --git a/internal/tui/app/labels.go b/internal/tui/app/labels.go index fa878a0..057b3d0 100644 --- a/internal/tui/app/labels.go +++ b/internal/tui/app/labels.go @@ -16,6 +16,9 @@ var NodeIcons map[graph.NodeType]string = map[graph.NodeType]string{ graph.WorkflowNode: "▶", graph.PlaybookNode: "⎔", + graph.HeroAIActionNode: "♾", + graph.CSVGetRowsActionNode: "☷", + graph.RecordCreateActionNode: "✚", graph.RecordUpdateActionNode: "✎", graph.RecordSearchActionNode: "☌", @@ -49,6 +52,9 @@ var NodeLabels map[graph.NodeType]string = map[graph.NodeType]string{ graph.RecordEventNode: "record event", graph.CronEventNode: "cron event", graph.WebhookNode: "incoming webhook", + graph.NotificationActionNode: "notification", + graph.HeroAIActionNode: "hero ai", + graph.CSVGetRowsActionNode: "csv get rows", } // edgeLabels provides human-readable labels for different edge types. From 32ad961fe2b13c5d204f05058da57b61a4fde134 Mon Sep 17 00:00:00 2001 From: Don van Gent Date: Fri, 19 Jun 2026 23:58:45 +0200 Subject: [PATCH 5/5] cmd: set version to 0.3 --- cmd/swimpeek/swimpeek.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/swimpeek/swimpeek.go b/cmd/swimpeek/swimpeek.go index ea53f02..132b718 100644 --- a/cmd/swimpeek/swimpeek.go +++ b/cmd/swimpeek/swimpeek.go @@ -18,7 +18,7 @@ import ( ) var logger *log.Logger = config.GetLogger("swimpeek") -var version string = "0.2" +var version string = "0.3" func printUsage() { fmt.Println("Usage: swimpeek [options]")