Skip to content

Commit 6f7c1ab

Browse files
doc-hanmidigofrank
andauthored
fix: unable to clear runs from history & url params rewrite (#4423)
* fix: url paths for runs * tests: update * feat: convert params between legacy & collab editor * fix: remove ?a support * tests: update * chore: update changelog --------- Co-authored-by: Frank Midigo <midigofrank@gmail.com>
1 parent c3dc643 commit 6f7c1ab

8 files changed

Lines changed: 52 additions & 19 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ and this project adheres to
2828
- Enforce `external_id` uniqueness on credentials per user and per project to
2929
prevent ambiguous keychain resolution
3030
[#4170](https://github.com/OpenFn/lightning/issues/4170)
31+
- unable to clear runs from history & url params rewrite
32+
[#4397](https://github.com/OpenFn/lightning/issues/4397)
3133

3234
## [2.15.14] - 2026-02-13
3335

assets/js/collaborative-editor/components/ide/FullScreenIDE.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,7 @@ export function FullScreenIDE({
124124
}: FullScreenIDEProps) {
125125
const { params, updateSearchParams } = useURLState();
126126
const jobIdFromURL = params.job ?? null;
127-
// Support both 'run' (collaborative) and 'a' (classical) parameter for run ID
128-
const runIdFromURL = params.run ?? params.a ?? null;
127+
const runIdFromURL = params.run ?? null;
129128
const stepIdFromURL = params.step ?? null;
130129
const { selectJob, saveWorkflow } = useWorkflowActions();
131130
const { selectStep } = useHistoryCommands();
@@ -338,7 +337,7 @@ export function FullScreenIDE({
338337
return;
339338
}
340339

341-
const runId = params.run ?? params.a ?? null;
340+
const runId = params.run ?? null;
342341
if (!runId) {
343342
return;
344343
}

lib/lightning_web/live/run_live/show.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,9 @@ defmodule LightningWeb.RunLive.Show do
107107
navigate={
108108
# Only include version param if snapshot differs from current workflow version
109109
if run.snapshot.lock_version == @workflow.lock_version do
110-
~p"/projects/#{@project}/w/#{@workflow.id}?a=#{run.id}"
110+
~p"/projects/#{@project}/w/#{@workflow.id}?run=#{run.id}"
111111
else
112-
~p"/projects/#{@project}/w/#{@workflow.id}?a=#{run.id}&v=#{run.snapshot.lock_version}"
112+
~p"/projects/#{@project}/w/#{@workflow.id}?run=#{run.id}&v=#{run.snapshot.lock_version}"
113113
end
114114
}
115115
class="link text-ellipsis"

lib/lightning_web/live/run_live/workorder_component.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,9 +183,9 @@ defmodule LightningWeb.RunLive.WorkOrderComponent do
183183
# Only include version param if snapshot differs from current workflow version
184184
if @work_order.workflow.lock_version ==
185185
@work_order.snapshot.lock_version do
186-
~p"/projects/#{@project}/w/#{@work_order.workflow.id}?a=#{@last_run.id}"
186+
~p"/projects/#{@project}/w/#{@work_order.workflow.id}?run=#{@last_run.id}"
187187
else
188-
~p"/projects/#{@project}/w/#{@work_order.workflow.id}?a=#{@last_run.id}&v=#{@work_order.snapshot.lock_version}"
188+
~p"/projects/#{@project}/w/#{@work_order.workflow.id}?run=#{@last_run.id}&v=#{@work_order.snapshot.lock_version}"
189189
end
190190
}
191191
class="inline-block"

lib/lightning_web/live/workflow_live/helpers.ex

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -326,12 +326,15 @@ defmodule LightningWeb.WorkflowLive.Helpers do
326326

327327
@param_mappings %{
328328
direct: %{
329-
"a" => "run"
329+
"a" => "run",
330+
"run" => "a"
330331
},
331332
mode_to_panel: %{
332333
"expand" => "editor",
333334
"workflow_input" => "run",
334-
"settings" => "settings"
335+
"settings" => "settings",
336+
"editor" => "expand",
337+
"run" => "workflow_input"
335338
},
336339
preserved: ["v", "method", "w-chat", "j-chat", "code"],
337340
collaborative_only: ["panel"]
@@ -340,9 +343,14 @@ defmodule LightningWeb.WorkflowLive.Helpers do
340343
def legacy_editor_url(params, live_action) do
341344
base_url = legacy_base_url(params, live_action)
342345

343-
query_params = Map.drop(params, ["id", "project_id"])
346+
final_params =
347+
params
348+
|> Map.drop(["id", "project_id"])
349+
|> Enum.reduce(%{}, fn {key, value}, acc ->
350+
convert_param(key, value, acc, params)
351+
end)
344352

345-
build_url_with_params(base_url, query_params)
353+
build_url_with_params(base_url, final_params)
346354
end
347355

348356
defp legacy_base_url(%{"project_id" => project_id}, :new) do
@@ -428,18 +436,41 @@ defmodule LightningWeb.WorkflowLive.Helpers do
428436
Map.put(acc, @param_mappings.direct["a"], value)
429437
end
430438

439+
defp convert_param("run", value, acc, _assigns) do
440+
Map.put(acc, @param_mappings.direct["run"], value)
441+
end
442+
431443
defp convert_param("s", value, acc, assigns) do
432444
selection_type = determine_selection_type(value, assigns)
433445
Map.put(acc, selection_type, value)
434446
end
435447

448+
defp convert_param("job", value, acc, _assigns) do
449+
Map.put(acc, "s", value)
450+
end
451+
452+
defp convert_param("trigger", value, acc, _assigns) do
453+
Map.put(acc, "s", value)
454+
end
455+
456+
defp convert_param("edge", value, acc, _assigns) do
457+
Map.put(acc, "s", value)
458+
end
459+
436460
defp convert_param("m", value, acc, _assigns) do
437461
case Map.get(@param_mappings.mode_to_panel, value) do
438462
nil -> acc
439463
panel -> Map.put(acc, "panel", panel)
440464
end
441465
end
442466

467+
defp convert_param("panel", value, acc, _assigns) do
468+
case Map.get(@param_mappings.mode_to_panel, value) do
469+
nil -> acc
470+
panel -> Map.put(acc, "m", panel)
471+
end
472+
end
473+
443474
defp convert_param(key, value, acc, _assigns) do
444475
cond do
445476
key in @param_mappings.collaborative_only ->

test/lightning_web/live/run_live/show_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ defmodule LightningWeb.RunLive.ShowTest do
256256

257257
# Find the workflow link - should NOT include version param
258258
assert html =~
259-
~r/href="\/projects\/#{project.id}\/w\/#{workflow.id}\?a=#{run_id}"/
259+
~r/href="\/projects\/#{project.id}\/w\/#{workflow.id}\?run=#{run_id}"/
260260

261261
refute html =~ ~r/&v=/
262262
end
@@ -292,7 +292,7 @@ defmodule LightningWeb.RunLive.ShowTest do
292292
# Find the workflow link - should include version param
293293
# Note: & is HTML-escaped as &amp; in rendered output
294294
assert html =~
295-
~r/href="\/projects\/#{project.id}\/w\/#{workflow.id}\?a=#{run_id}&amp;v=#{snapshot.lock_version}"/
295+
~r/href="\/projects\/#{project.id}\/w\/#{workflow.id}\?run=#{run_id}&amp;v=#{snapshot.lock_version}"/
296296
end
297297
end
298298

test/lightning_web/live/workflow_live/collaborate_test.exs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2260,7 +2260,9 @@ defmodule LightningWeb.WorkflowLive.CollaborateTest do
22602260
"/projects/#{project.id}/w/new/legacy?method=template"
22612261
end
22622262

2263-
test "redirects to legacy editor with query params preserved", %{conn: conn} do
2263+
test "redirects to legacy editor with query params transformed", %{
2264+
conn: conn
2265+
} do
22642266
user = insert(:user)
22652267

22662268
project =
@@ -2272,7 +2274,6 @@ defmodule LightningWeb.WorkflowLive.CollaborateTest do
22722274
workflow = workflow_fixture(project_id: project.id)
22732275
job = insert(:job, workflow: workflow)
22742276

2275-
# Set user preference to prefer legacy editor
22762277
user_with_prefs =
22772278
user
22782279
|> Ecto.Changeset.change(%{
@@ -2290,14 +2291,14 @@ defmodule LightningWeb.WorkflowLive.CollaborateTest do
22902291
~p"/projects/#{project.id}/w/#{workflow.id}?job=#{job.id}&panel=editor"
22912292
)
22922293

2293-
# Should redirect to legacy editor with query params preserved
2294+
# Should redirect to legacy editor with query params transformed
22942295
assert String.starts_with?(
22952296
redirect_path,
22962297
"/projects/#{project.id}/w/#{workflow.id}/legacy"
22972298
)
22982299

2299-
assert redirect_path =~ "job=#{job.id}"
2300-
assert redirect_path =~ "panel=editor"
2300+
assert redirect_path =~ "s=#{job.id}"
2301+
assert redirect_path =~ "m=expand"
23012302
end
23022303

23032304
test "does not redirect when user does not prefer legacy editor", %{

test/lightning_web/live/workflow_live/helpers_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ defmodule LightningWeb.WorkflowLive.HelpersTest do
174174
}
175175

176176
result = Helpers.collaborative_editor_url(params, :edit)
177-
assert result == "/projects/proj-1/w/wf-1"
177+
assert result == "/projects/proj-1/w/wf-1?m=workflow_input"
178178
end
179179

180180
test "preserves unknown parameters for future compatibility" do

0 commit comments

Comments
 (0)