From 4b4c1d38fd3a69fe2d3fb8116c6456c198574013 Mon Sep 17 00:00:00 2001 From: ivarsbariss Date: Mon, 16 Mar 2026 11:28:15 +0100 Subject: [PATCH] Prepare for launch --- .cursor/skills/prepare-for-launch/SKILL.md | 53 +++++++++++++++++++ .../queries/engineering_holds/metadata.json | 4 +- .../queries/job_drawing_status/metadata.json | 4 +- .../queries/pending_pos_all/metadata.json | 4 +- .../pending_pos_alx_pending/metadata.json | 4 +- .../pending_pos_ml_pending/metadata.json | 4 +- .../pending_pos_slx_pending/metadata.json | 4 +- .../pending_pos_sr_pending/metadata.json | 4 +- .../pending_revisions_all/metadata.json | 4 +- .../pending_revisions_alx/metadata.json | 4 +- .../pending_revisions_ml/metadata.json | 4 +- .../pending_revisions_slx/metadata.json | 4 +- .../pending_revisions_sr/metadata.json | 4 +- .../metadata.json | 4 +- .../units_ordered_by_series/metadata.json | 4 +- .../xGen/queries/xgen_buildinfo/metadata.json | 4 +- .../xgen_compatibility_items/metadata.json | 4 +- .../xgen_firmware_shipped/metadata.json | 4 +- .../xgen_forward_compat_break/metadata.json | 4 +- .../metadata.json | 4 +- pages/xGen/queries/xgen_pairs/metadata.json | 4 +- .../xgen_snapshot_prodmap/metadata.json | 4 +- .../xgen_test_cal_measurements/metadata.json | 4 +- 23 files changed, 97 insertions(+), 44 deletions(-) create mode 100644 .cursor/skills/prepare-for-launch/SKILL.md diff --git a/.cursor/skills/prepare-for-launch/SKILL.md b/.cursor/skills/prepare-for-launch/SKILL.md new file mode 100644 index 0000000..db2cba3 --- /dev/null +++ b/.cursor/skills/prepare-for-launch/SKILL.md @@ -0,0 +1,53 @@ +--- +name: prepare-for-launch +description: Prepares the app for production launch by moving from sandbox to production (GoLive) database and related steps. Use when the user asks to prepare for launch, move to production, switch to GoLive, or launch the app. +--- + +# Prepare for Launch + +Use this skill when preparing to launch the app: moving all data sources from sandbox to the production (xTuple_GoLive) database and performing launch checklist steps. + +## Launch checklist (run in order) + +1. **Switch all queries to xTuple_GoLive** (see below). +2. Add or run any other launch steps you need (e.g. env/config, final checks). + +--- + +## Step 1: Move every query to xTuple_GoLive + +Ensure every DB query in the app uses the production datasource `xTuple_GoLive` instead of `xTuple_Sandbox`. + +### How to do it + +1. **Find all query metadata files** + Under `pages/`, each query has a `metadata.json` in `pages//queries//metadata.json`. + +2. **In each `metadata.json`**, locate the datasource block inside `unpublishedAction`: + ```json + "datasource": { + "id": "xTuple_Sandbox", + "isAutoGenerated": false, + "name": "xTuple_Sandbox", + "pluginId": "postgres-plugin" + } + ``` + +3. **Replace** both `"id"` and `"name"` from `xTuple_Sandbox` to `xTuple_GoLive`: + ```json + "datasource": { + "id": "xTuple_GoLive", + "isAutoGenerated": false, + "name": "xTuple_GoLive", + "pluginId": "postgres-plugin" + } + ``` + +4. **Verify** + - No query under `pages/**/queries/**/metadata.json` should reference `xTuple_Sandbox`. + - Search the repo for `xTuple_Sandbox`; the only remaining references should be the datasource definition (e.g. `datasources/xTuple_Sandbox.json`) and any docs/skills that describe sandbox as the default (e.g. add-query skill). + +### Scope + +- Update **every** query that currently uses `xTuple_Sandbox`. Queries already using `xTuple_GoLive` can be left unchanged. +- Do not change the add-query (or other) skills that say to use Sandbox by default; those are for day-to-day development. This skill is only for the one-time (or repeated) launch prep. diff --git a/pages/Operations - Engineering Holds/queries/engineering_holds/metadata.json b/pages/Operations - Engineering Holds/queries/engineering_holds/metadata.json index b9eac7a..b158cda 100644 --- a/pages/Operations - Engineering Holds/queries/engineering_holds/metadata.json +++ b/pages/Operations - Engineering Holds/queries/engineering_holds/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/Operations - Job Drawing Status/queries/job_drawing_status/metadata.json b/pages/Operations - Job Drawing Status/queries/job_drawing_status/metadata.json index bc2c90b..ca79492 100644 --- a/pages/Operations - Job Drawing Status/queries/job_drawing_status/metadata.json +++ b/pages/Operations - Job Drawing Status/queries/job_drawing_status/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/Pending POs/queries/pending_pos_all/metadata.json b/pages/Pending POs/queries/pending_pos_all/metadata.json index f7cb1a3..38b9294 100644 --- a/pages/Pending POs/queries/pending_pos_all/metadata.json +++ b/pages/Pending POs/queries/pending_pos_all/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/Pending POs/queries/pending_pos_alx_pending/metadata.json b/pages/Pending POs/queries/pending_pos_alx_pending/metadata.json index 5dfcf61..db0dfd8 100644 --- a/pages/Pending POs/queries/pending_pos_alx_pending/metadata.json +++ b/pages/Pending POs/queries/pending_pos_alx_pending/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/Pending POs/queries/pending_pos_ml_pending/metadata.json b/pages/Pending POs/queries/pending_pos_ml_pending/metadata.json index 37e8148..153b12c 100644 --- a/pages/Pending POs/queries/pending_pos_ml_pending/metadata.json +++ b/pages/Pending POs/queries/pending_pos_ml_pending/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/Pending POs/queries/pending_pos_slx_pending/metadata.json b/pages/Pending POs/queries/pending_pos_slx_pending/metadata.json index 97b5e91..f2bfda3 100644 --- a/pages/Pending POs/queries/pending_pos_slx_pending/metadata.json +++ b/pages/Pending POs/queries/pending_pos_slx_pending/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/Pending POs/queries/pending_pos_sr_pending/metadata.json b/pages/Pending POs/queries/pending_pos_sr_pending/metadata.json index 598faa7..ac09973 100644 --- a/pages/Pending POs/queries/pending_pos_sr_pending/metadata.json +++ b/pages/Pending POs/queries/pending_pos_sr_pending/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/Pending Revisions/queries/pending_revisions_all/metadata.json b/pages/Pending Revisions/queries/pending_revisions_all/metadata.json index ed6a334..4008aec 100644 --- a/pages/Pending Revisions/queries/pending_revisions_all/metadata.json +++ b/pages/Pending Revisions/queries/pending_revisions_all/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/Pending Revisions/queries/pending_revisions_alx/metadata.json b/pages/Pending Revisions/queries/pending_revisions_alx/metadata.json index 07680ce..58d203a 100644 --- a/pages/Pending Revisions/queries/pending_revisions_alx/metadata.json +++ b/pages/Pending Revisions/queries/pending_revisions_alx/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/Pending Revisions/queries/pending_revisions_ml/metadata.json b/pages/Pending Revisions/queries/pending_revisions_ml/metadata.json index 7bdab73..f1129b2 100644 --- a/pages/Pending Revisions/queries/pending_revisions_ml/metadata.json +++ b/pages/Pending Revisions/queries/pending_revisions_ml/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/Pending Revisions/queries/pending_revisions_slx/metadata.json b/pages/Pending Revisions/queries/pending_revisions_slx/metadata.json index ecb47c2..d9747b8 100644 --- a/pages/Pending Revisions/queries/pending_revisions_slx/metadata.json +++ b/pages/Pending Revisions/queries/pending_revisions_slx/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/Pending Revisions/queries/pending_revisions_sr/metadata.json b/pages/Pending Revisions/queries/pending_revisions_sr/metadata.json index 1dcbadf..60521d1 100644 --- a/pages/Pending Revisions/queries/pending_revisions_sr/metadata.json +++ b/pages/Pending Revisions/queries/pending_revisions_sr/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/Sales - Units Ordered/queries/units_ordered_by_power_input/metadata.json b/pages/Sales - Units Ordered/queries/units_ordered_by_power_input/metadata.json index 4a93bae..23d86f5 100644 --- a/pages/Sales - Units Ordered/queries/units_ordered_by_power_input/metadata.json +++ b/pages/Sales - Units Ordered/queries/units_ordered_by_power_input/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [ diff --git a/pages/Sales - Units Ordered/queries/units_ordered_by_series/metadata.json b/pages/Sales - Units Ordered/queries/units_ordered_by_series/metadata.json index 084a828..9565e94 100644 --- a/pages/Sales - Units Ordered/queries/units_ordered_by_series/metadata.json +++ b/pages/Sales - Units Ordered/queries/units_ordered_by_series/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [ diff --git a/pages/xGen/queries/xgen_buildinfo/metadata.json b/pages/xGen/queries/xgen_buildinfo/metadata.json index 45aac46..c0d79b1 100644 --- a/pages/xGen/queries/xgen_buildinfo/metadata.json +++ b/pages/xGen/queries/xgen_buildinfo/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/xGen/queries/xgen_compatibility_items/metadata.json b/pages/xGen/queries/xgen_compatibility_items/metadata.json index dac0087..c664d33 100644 --- a/pages/xGen/queries/xgen_compatibility_items/metadata.json +++ b/pages/xGen/queries/xgen_compatibility_items/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/xGen/queries/xgen_firmware_shipped/metadata.json b/pages/xGen/queries/xgen_firmware_shipped/metadata.json index f9ab600..2eea1a7 100644 --- a/pages/xGen/queries/xgen_firmware_shipped/metadata.json +++ b/pages/xGen/queries/xgen_firmware_shipped/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/xGen/queries/xgen_forward_compat_break/metadata.json b/pages/xGen/queries/xgen_forward_compat_break/metadata.json index d5e4734..6e2165b 100644 --- a/pages/xGen/queries/xgen_forward_compat_break/metadata.json +++ b/pages/xGen/queries/xgen_forward_compat_break/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/xGen/queries/xgen_hw_compatibility_summary/metadata.json b/pages/xGen/queries/xgen_hw_compatibility_summary/metadata.json index 90799c1..09eb98f 100644 --- a/pages/xGen/queries/xgen_hw_compatibility_summary/metadata.json +++ b/pages/xGen/queries/xgen_hw_compatibility_summary/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/xGen/queries/xgen_pairs/metadata.json b/pages/xGen/queries/xgen_pairs/metadata.json index 233106f..f7534df 100644 --- a/pages/xGen/queries/xgen_pairs/metadata.json +++ b/pages/xGen/queries/xgen_pairs/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/xGen/queries/xgen_snapshot_prodmap/metadata.json b/pages/xGen/queries/xgen_snapshot_prodmap/metadata.json index a527442..6a8b208 100644 --- a/pages/xGen/queries/xgen_snapshot_prodmap/metadata.json +++ b/pages/xGen/queries/xgen_snapshot_prodmap/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [], diff --git a/pages/xGen/queries/xgen_test_cal_measurements/metadata.json b/pages/xGen/queries/xgen_test_cal_measurements/metadata.json index c548041..7c1e7b6 100644 --- a/pages/xGen/queries/xgen_test_cal_measurements/metadata.json +++ b/pages/xGen/queries/xgen_test_cal_measurements/metadata.json @@ -17,9 +17,9 @@ }, "confirmBeforeExecute": false, "datasource": { - "id": "xTuple_Sandbox", + "id": "xTuple_GoLive", "isAutoGenerated": false, - "name": "xTuple_Sandbox", + "name": "xTuple_GoLive", "pluginId": "postgres-plugin" }, "dynamicBindingPathList": [],