diff --git a/fusion_plating/fusion_plating/__manifest__.py b/fusion_plating/fusion_plating/__manifest__.py
index 08c84a66..9af0a456 100644
--- a/fusion_plating/fusion_plating/__manifest__.py
+++ b/fusion_plating/fusion_plating/__manifest__.py
@@ -5,7 +5,7 @@
{
'name': 'Fusion Plating',
- 'version': '19.0.18.8.0',
+ 'version': '19.0.18.11.0',
'category': 'Manufacturing/Plating',
'summary': 'Core plating / metal finishing ERP: facilities, processes, tanks, baths, jobs, operators.',
'description': """
diff --git a/fusion_plating/fusion_plating/static/src/js/recipe_tree_editor.js b/fusion_plating/fusion_plating/static/src/js/recipe_tree_editor.js
index bd5e81af..5a63f01e 100644
--- a/fusion_plating/fusion_plating/static/src/js/recipe_tree_editor.js
+++ b/fusion_plating/fusion_plating/static/src/js/recipe_tree_editor.js
@@ -546,15 +546,23 @@ export class RecipeTreeEditor extends Component {
// ---- Navigation ---------------------------------------------------------
onBackToList() {
- // If the editor was opened from the part-scoped Process Composer
- // (context carried part_id), return to that part's form instead
- // of the generic Recipes list.
+ // Pop this editor off the action stack and restore the
+ // previous controller — which is whatever opened the editor:
+ // * Recipes list → recipe form → editor ⇒ back to recipe form
+ // * Part form → composer → editor ⇒ back to composer
+ // * Part form → editor (direct link) ⇒ back to part form
//
- // clearBreadcrumbs: this is a semantic RETURN, not a forward
- // navigation. Without it, every round-trip (part → composer →
- // editor → back) leaves its intermediate pages on the breadcrumb
- // stack, so a second visit shows "…/Process Composer/Process
- // Editor/Process Composer/Process Editor/Part" nonsense.
+ // restore() preserves the full breadcrumb trail.
+ // clearBreadcrumbs: true (the old behaviour) would wipe parent
+ // crumbs and isolate the user on a single-crumb page.
+ try {
+ this.action.restore();
+ return;
+ } catch (e) {
+ // No prior controller — fall through to a sensible default.
+ }
+ // Fallback: when opened directly via URL with no prior crumb,
+ // pick the most contextual landing page we have.
if (this._partId) {
this.action.doAction({
type: "ir.actions.act_window",
diff --git a/fusion_plating/fusion_plating/static/src/js/simple_recipe_editor.js b/fusion_plating/fusion_plating/static/src/js/simple_recipe_editor.js
index 49bac759..45dd1805 100644
--- a/fusion_plating/fusion_plating/static/src/js/simple_recipe_editor.js
+++ b/fusion_plating/fusion_plating/static/src/js/simple_recipe_editor.js
@@ -196,6 +196,17 @@ export class FpSimpleRecipeEditor extends Component {
* breadcrumb stack so a second visit shows nonsense.
*/
onBackToList() {
+ // Pop this editor off the action stack and restore the
+ // previous controller — preserves the full breadcrumb trail
+ // (Recipes > LGPS1104 > Editor → back keeps "Recipes"
+ // visible; Part > Composer > Editor → back returns to the
+ // Composer with crumbs intact).
+ try {
+ this.action.restore();
+ return;
+ } catch (e) {
+ // No prior controller — fall through to a sensible default.
+ }
if (this._partId) {
this.action.doAction(
{
diff --git a/fusion_plating/fusion_plating/views/fp_process_node_views.xml b/fusion_plating/fusion_plating/views/fp_process_node_views.xml
index 5bd4014e..f18c6a91 100644
--- a/fusion_plating/fusion_plating/views/fp_process_node_views.xml
+++ b/fusion_plating/fusion_plating/views/fp_process_node_views.xml
@@ -51,7 +51,15 @@
class="oe_stat_button" icon="fa-sitemap"
invisible="node_type != 'recipe'">
+ string="Tree Editor"/>
+
+
2144A6201-105").
+ // Falls back to the part form only when restore() throws (e.g.
+ // composer opened directly via URL with no prior crumb).
+ try {
+ this.action.restore();
+ return;
+ } catch (e) {
+ // No prior controller — fall through to the part form.
+ }
this.action.doAction({
type: "ir.actions.act_window",
res_model: "fp.part.catalog",
diff --git a/fusion_plating/fusion_plating_configurator/views/fp_process_node_part_scoped_views.xml b/fusion_plating/fusion_plating_configurator/views/fp_process_node_part_scoped_views.xml
index 9e55200a..4f24728d 100644
--- a/fusion_plating/fusion_plating_configurator/views/fp_process_node_part_scoped_views.xml
+++ b/fusion_plating/fusion_plating_configurator/views/fp_process_node_part_scoped_views.xml
@@ -42,6 +42,28 @@
+
+
+
+ fusion.plating.process.node.form.linked.parts
+ fusion.plating.process.node
+
+
+
+
+
+
+
+