From bf05b759aa1ecf4e303eab589ba1bfb35ba1ffbf Mon Sep 17 00:00:00 2001
From: Jed Fox <git@jedfox.com>
Date: Sun, 9 Apr 2023 14:21:59 -0400
Subject: [PATCH] Remove duplicate migration and default-db.sqlite files (#870)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

These files will be automatically recreated by `yarn build:api`,
`yarn build:browser`, and `yarn start:browser`, so we don’t need
them in the repo.
---
 packages/api/.gitignore                       |   2 +
 packages/api/default-db.sqlite                | Bin 282624 -> 0 bytes
 packages/api/migrations/.force-copy-windows   |   0
 .../1548957970627_remove-db-version.sql       |   5 -
 .../api/migrations/1550601598648_payees.sql   |  23 ---
 ...786194328_remove_category_group_unique.sql |  25 ----
 .../api/migrations/1561751833510_indexes.sql  |   7 -
 .../api/migrations/1567699552727_budget.sql   |  38 -----
 .../api/migrations/1582384163573_cleared.sql  |   6 -
 .../api/migrations/1597756566448_rules.sql    |  10 --
 .../migrations/1608652596043_parent_field.sql |  13 --
 .../migrations/1608652596044_trans_views.sql  |  56 --------
 .../api/migrations/1612625548236_optimize.sql |   7 -
 .../migrations/1614782639336_trans_views2.sql |  33 -----
 .../api/migrations/1615745967948_meta.sql     |  10 --
 .../1616167010796_accounts_order.sql          |   5 -
 .../migrations/1618975177358_schedules.sql    |  28 ----
 .../migrations/1632571489012_remove_cache.js  | 135 ------------------
 packages/desktop-client/.gitignore            |   2 +
 .../desktop-client/public/data-file-index.txt |  18 ---
 .../public/data/default-db.sqlite             | Bin 282624 -> 0 bytes
 .../data/migrations/.force-copy-windows       |   0
 .../1548957970627_remove-db-version.sql       |   5 -
 .../data/migrations/1550601598648_payees.sql  |  23 ---
 ...786194328_remove_category_group_unique.sql |  25 ----
 .../data/migrations/1561751833510_indexes.sql |   7 -
 .../data/migrations/1567699552727_budget.sql  |  38 -----
 .../data/migrations/1582384163573_cleared.sql |   6 -
 .../data/migrations/1597756566448_rules.sql   |  10 --
 .../migrations/1608652596043_parent_field.sql |  13 --
 .../migrations/1608652596044_trans_views.sql  |  56 --------
 .../migrations/1612625548236_optimize.sql     |   7 -
 .../migrations/1614782639336_trans_views2.sql |  33 -----
 .../data/migrations/1615745967948_meta.sql    |  10 --
 .../1616167010796_accounts_order.sql          |   5 -
 .../migrations/1618975177358_schedules.sql    |  28 ----
 .../migrations/1632571489012_remove_cache.js  | 135 ------------------
 .../1679728867040_rules_conditions.sql        |   5 -
 packages/loot-core/bin/build-browser          |   8 +-
 packages/loot-core/bin/copy-migrations        |  15 +-
 packages/loot-core/package.json               |   2 +-
 upcoming-release-notes/870.md                 |   6 +
 42 files changed, 24 insertions(+), 836 deletions(-)
 delete mode 100644 packages/api/default-db.sqlite
 delete mode 100644 packages/api/migrations/.force-copy-windows
 delete mode 100644 packages/api/migrations/1548957970627_remove-db-version.sql
 delete mode 100644 packages/api/migrations/1550601598648_payees.sql
 delete mode 100644 packages/api/migrations/1555786194328_remove_category_group_unique.sql
 delete mode 100644 packages/api/migrations/1561751833510_indexes.sql
 delete mode 100644 packages/api/migrations/1567699552727_budget.sql
 delete mode 100644 packages/api/migrations/1582384163573_cleared.sql
 delete mode 100644 packages/api/migrations/1597756566448_rules.sql
 delete mode 100644 packages/api/migrations/1608652596043_parent_field.sql
 delete mode 100644 packages/api/migrations/1608652596044_trans_views.sql
 delete mode 100644 packages/api/migrations/1612625548236_optimize.sql
 delete mode 100644 packages/api/migrations/1614782639336_trans_views2.sql
 delete mode 100644 packages/api/migrations/1615745967948_meta.sql
 delete mode 100644 packages/api/migrations/1616167010796_accounts_order.sql
 delete mode 100644 packages/api/migrations/1618975177358_schedules.sql
 delete mode 100644 packages/api/migrations/1632571489012_remove_cache.js
 delete mode 100644 packages/desktop-client/public/data-file-index.txt
 delete mode 100644 packages/desktop-client/public/data/default-db.sqlite
 delete mode 100644 packages/desktop-client/public/data/migrations/.force-copy-windows
 delete mode 100644 packages/desktop-client/public/data/migrations/1548957970627_remove-db-version.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1550601598648_payees.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1555786194328_remove_category_group_unique.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1561751833510_indexes.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1567699552727_budget.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1582384163573_cleared.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1597756566448_rules.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1608652596043_parent_field.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1608652596044_trans_views.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1612625548236_optimize.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1614782639336_trans_views2.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1615745967948_meta.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1616167010796_accounts_order.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1618975177358_schedules.sql
 delete mode 100644 packages/desktop-client/public/data/migrations/1632571489012_remove_cache.js
 delete mode 100644 packages/desktop-client/public/data/migrations/1679728867040_rules_conditions.sql
 create mode 100644 upcoming-release-notes/870.md

diff --git a/packages/api/.gitignore b/packages/api/.gitignore
index f9f389e15..746647b4e 100644
--- a/packages/api/.gitignore
+++ b/packages/api/.gitignore
@@ -1 +1,3 @@
 app/bundle.api.js*
+migrations
+default-db.sqlite
diff --git a/packages/api/default-db.sqlite b/packages/api/default-db.sqlite
deleted file mode 100644
index 5d55b361144e7ea59d64496977edffc50819ebe2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282624
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

diff --git a/packages/api/migrations/.force-copy-windows b/packages/api/migrations/.force-copy-windows
deleted file mode 100644
index e69de29bb..000000000
diff --git a/packages/api/migrations/1548957970627_remove-db-version.sql b/packages/api/migrations/1548957970627_remove-db-version.sql
deleted file mode 100644
index d93af5d93..000000000
--- a/packages/api/migrations/1548957970627_remove-db-version.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-BEGIN TRANSACTION;
-
-DROP TABLE db_version;
-
-COMMIT;
diff --git a/packages/api/migrations/1550601598648_payees.sql b/packages/api/migrations/1550601598648_payees.sql
deleted file mode 100644
index 9cab95047..000000000
--- a/packages/api/migrations/1550601598648_payees.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE TABLE payees
-  (id TEXT PRIMARY KEY,
-   name TEXT,
-   category TEXT,
-   tombstone INTEGER DEFAULT 0,
-   transfer_acct TEXT);
-
-CREATE TABLE payee_rules
-  (id TEXT PRIMARY KEY,
-   payee_id TEXT,
-   type TEXT,
-   value TEXT,
-   tombstone INTEGER DEFAULT 0);
-
-CREATE INDEX payee_rules_lowercase_index ON payee_rules(LOWER(value));
-
-CREATE TABLE payee_mapping
-  (id TEXT PRIMARY KEY,
-   targetId TEXT);
-
-COMMIT;
diff --git a/packages/api/migrations/1555786194328_remove_category_group_unique.sql b/packages/api/migrations/1555786194328_remove_category_group_unique.sql
deleted file mode 100644
index f97e2d741..000000000
--- a/packages/api/migrations/1555786194328_remove_category_group_unique.sql
+++ /dev/null
@@ -1,25 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE TEMPORARY TABLE category_groups_tmp
-   (id TEXT PRIMARY KEY,
-    name TEXT UNIQUE,
-    is_income INTEGER DEFAULT 0,
-    sort_order REAL,
-    tombstone INTEGER DEFAULT 0);
-
-INSERT INTO category_groups_tmp SELECT * FROM category_groups;
-
-DROP TABLE category_groups;
-
-CREATE TABLE category_groups
-   (id TEXT PRIMARY KEY,
-    name TEXT,
-    is_income INTEGER DEFAULT 0,
-    sort_order REAL,
-    tombstone INTEGER DEFAULT 0);
-
-INSERT INTO category_groups SELECT * FROM category_groups_tmp;
-
-DROP TABLE category_groups_tmp;
-
-COMMIT;
diff --git a/packages/api/migrations/1561751833510_indexes.sql b/packages/api/migrations/1561751833510_indexes.sql
deleted file mode 100644
index 733dfa5d2..000000000
--- a/packages/api/migrations/1561751833510_indexes.sql
+++ /dev/null
@@ -1,7 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE INDEX trans_category_date ON transactions(category, date);
-CREATE INDEX trans_category ON transactions(category);
-CREATE INDEX trans_date ON transactions(date);
-
-COMMIT;
diff --git a/packages/api/migrations/1567699552727_budget.sql b/packages/api/migrations/1567699552727_budget.sql
deleted file mode 100644
index 6f0519da6..000000000
--- a/packages/api/migrations/1567699552727_budget.sql
+++ /dev/null
@@ -1,38 +0,0 @@
-BEGIN TRANSACTION;
-
-DELETE FROM spreadsheet_cells WHERE
-  name NOT LIKE '%!budget\_%' ESCAPE '\' AND
-  name NOT LIKE '%!carryover\_%' ESCAPE '\' AND
-  name NOT LIKE '%!buffered';
-
-UPDATE OR REPLACE spreadsheet_cells SET name = REPLACE(name, '_', '-');
-
-UPDATE OR REPLACE spreadsheet_cells SET
-  name =
-    SUBSTR(name, 1, 28) ||
-    '-' ||
-    SUBSTR(name, 29, 4) ||
-    '-' ||
-    SUBSTR(name, 33, 4) ||
-    '-' ||
-    SUBSTR(name, 37, 4) ||
-    '-' ||
-    SUBSTR(name, 41, 12)
-WHERE name LIKE '%!budget-%' AND LENGTH(name) = 52;
-
-UPDATE OR REPLACE spreadsheet_cells SET
-  name =
-    SUBSTR(name, 1, 31) ||
-    '-' ||
-    SUBSTR(name, 32, 4) ||
-    '-' ||
-    SUBSTR(name, 36, 4) ||
-    '-' ||
-    SUBSTR(name, 40, 4) ||
-    '-' ||
-    SUBSTR(name, 44, 12)
-WHERE name LIKE '%!carryover-%' AND LENGTH(name) = 55;
-
-UPDATE spreadsheet_cells SET expr = SUBSTR(expr, 2) WHERE name LIKE '%!carryover-%';
-
-COMMIT;
diff --git a/packages/api/migrations/1582384163573_cleared.sql b/packages/api/migrations/1582384163573_cleared.sql
deleted file mode 100644
index 5d6f8ce66..000000000
--- a/packages/api/migrations/1582384163573_cleared.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-BEGIN TRANSACTION;
-
-ALTER TABLE transactions ADD COLUMN cleared INTEGER DEFAULT 1;
-ALTER TABLE transactions ADD COLUMN pending INTEGER DEFAULT 0;
-
-COMMIT;
diff --git a/packages/api/migrations/1597756566448_rules.sql b/packages/api/migrations/1597756566448_rules.sql
deleted file mode 100644
index 291e2b1be..000000000
--- a/packages/api/migrations/1597756566448_rules.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE TABLE rules
-  (id TEXT PRIMARY KEY,
-   stage TEXT,
-   conditions TEXT,
-   actions TEXT,
-   tombstone INTEGER DEFAULT 0);
-
-COMMIT;
diff --git a/packages/api/migrations/1608652596043_parent_field.sql b/packages/api/migrations/1608652596043_parent_field.sql
deleted file mode 100644
index a5bdf8796..000000000
--- a/packages/api/migrations/1608652596043_parent_field.sql
+++ /dev/null
@@ -1,13 +0,0 @@
-BEGIN TRANSACTION;
-
-ALTER TABLE transactions ADD COLUMN parent_id TEXT;
-
-UPDATE transactions SET
-  parent_id = CASE
-    WHEN isChild THEN SUBSTR(id, 1, INSTR(id, '/') - 1)
-    ELSE NULL
-  END;
-
-CREATE INDEX trans_parent_id ON transactions(parent_id);
-
-COMMIT;
diff --git a/packages/api/migrations/1608652596044_trans_views.sql b/packages/api/migrations/1608652596044_trans_views.sql
deleted file mode 100644
index 345fc234d..000000000
--- a/packages/api/migrations/1608652596044_trans_views.sql
+++ /dev/null
@@ -1,56 +0,0 @@
-BEGIN TRANSACTION;
-
-DROP VIEW IF EXISTS v_transactions_layer2;
-CREATE VIEW v_transactions_layer2 AS
-SELECT
-  t.id AS id,
-  t.isParent AS is_parent,
-  t.isChild AS is_child,
-  t.acct AS account,
-  CASE WHEN t.isChild = 0 THEN NULL ELSE t.parent_id END AS parent_id,
-  CASE WHEN t.isParent = 1 THEN NULL ELSE cm.transferId END AS category,
-  pm.targetId AS payee,
-  t.imported_description AS imported_payee,
-  IFNULL(t.amount, 0) AS amount,
-  t.notes AS notes,
-  t.date AS date,
-  t.financial_id AS imported_id,
-  t.error AS error,
-  t.starting_balance_flag AS starting_balance_flag,
-  t.transferred_id AS transfer_id,
-  t.sort_order AS sort_order,
-  t.cleared AS cleared,
-  t.tombstone AS tombstone
-FROM transactions t
-LEFT JOIN category_mapping cm ON cm.id = t.category
-LEFT JOIN payee_mapping pm ON pm.id = t.description
-WHERE
-  t.date IS NOT NULL AND
-  t.acct IS NOT NULL;
-
-CREATE INDEX trans_sorted ON transactions(date desc, starting_balance_flag, sort_order desc, id);
-
-DROP VIEW IF EXISTS v_transactions_layer1;
-CREATE VIEW v_transactions_layer1 AS
-SELECT t.* FROM v_transactions_layer2 t
-LEFT JOIN transactions t2 ON (t.is_child = 1 AND t2.id = t.parent_id)
-WHERE IFNULL(t.tombstone, 0) = 0 AND IFNULL(t2.tombstone, 0) = 0;
-
-DROP VIEW IF EXISTS v_transactions;
-CREATE VIEW v_transactions AS
-SELECT t.* FROM v_transactions_layer1 t
-ORDER BY t.date desc, t.starting_balance_flag, t.sort_order desc, t.id;
-
-
-DROP VIEW IF EXISTS v_categories;
-CREATE VIEW v_categories AS
-SELECT
-  id,
-  name,
-  is_income,
-  cat_group AS "group",
-  sort_order,
-  tombstone
-FROM categories;
-
-COMMIT;
diff --git a/packages/api/migrations/1612625548236_optimize.sql b/packages/api/migrations/1612625548236_optimize.sql
deleted file mode 100644
index 6e7075ff0..000000000
--- a/packages/api/migrations/1612625548236_optimize.sql
+++ /dev/null
@@ -1,7 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE INDEX messages_crdt_search ON messages_crdt(dataset, row, column, timestamp);
-
-ANALYZE;
-
-COMMIT;
diff --git a/packages/api/migrations/1614782639336_trans_views2.sql b/packages/api/migrations/1614782639336_trans_views2.sql
deleted file mode 100644
index c95a92ca6..000000000
--- a/packages/api/migrations/1614782639336_trans_views2.sql
+++ /dev/null
@@ -1,33 +0,0 @@
-BEGIN TRANSACTION;
-
--- This adds the isChild/parent_id constraint in `where`
-DROP VIEW IF EXISTS v_transactions_layer2;
-CREATE VIEW v_transactions_layer2 AS
-SELECT
-  t.id AS id,
-  t.isParent AS is_parent,
-  t.isChild AS is_child,
-  t.acct AS account,
-  CASE WHEN t.isChild = 0 THEN NULL ELSE t.parent_id END AS parent_id,
-  CASE WHEN t.isParent = 1 THEN NULL ELSE cm.transferId END AS category,
-  pm.targetId AS payee,
-  t.imported_description AS imported_payee,
-  IFNULL(t.amount, 0) AS amount,
-  t.notes AS notes,
-  t.date AS date,
-  t.financial_id AS imported_id,
-  t.error AS error,
-  t.starting_balance_flag AS starting_balance_flag,
-  t.transferred_id AS transfer_id,
-  t.sort_order AS sort_order,
-  t.cleared AS cleared,
-  t.tombstone AS tombstone
-FROM transactions t
-LEFT JOIN category_mapping cm ON cm.id = t.category
-LEFT JOIN payee_mapping pm ON pm.id = t.description
-WHERE
-  t.date IS NOT NULL AND
-  t.acct IS NOT NULL AND
-  (t.isChild = 0 OR t.parent_id IS NOT NULL);
-
-COMMIT;
diff --git a/packages/api/migrations/1615745967948_meta.sql b/packages/api/migrations/1615745967948_meta.sql
deleted file mode 100644
index 6bcb3d76f..000000000
--- a/packages/api/migrations/1615745967948_meta.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE TABLE __meta__ (key TEXT PRIMARY KEY, value TEXT);
-
-DROP VIEW IF EXISTS v_transactions_layer2;
-DROP VIEW IF EXISTS v_transactions_layer1;
-DROP VIEW IF EXISTS v_transactions;
-DROP VIEW IF EXISTS v_categories;
-
-COMMIT;
diff --git a/packages/api/migrations/1616167010796_accounts_order.sql b/packages/api/migrations/1616167010796_accounts_order.sql
deleted file mode 100644
index 6e259794a..000000000
--- a/packages/api/migrations/1616167010796_accounts_order.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-BEGIN TRANSACTION;
-
-ALTER TABLE accounts ADD COLUMN sort_order REAL;
-
-COMMIT;
diff --git a/packages/api/migrations/1618975177358_schedules.sql b/packages/api/migrations/1618975177358_schedules.sql
deleted file mode 100644
index 6c57a5d14..000000000
--- a/packages/api/migrations/1618975177358_schedules.sql
+++ /dev/null
@@ -1,28 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE TABLE schedules
-  (id TEXT PRIMARY KEY,
-   rule TEXT,
-   active INTEGER DEFAULT 0,
-   completed INTEGER DEFAULT 0,
-   posts_transaction INTEGER DEFAULT 0,
-   tombstone INTEGER DEFAULT 0);
-
-CREATE TABLE schedules_next_date
-  (id TEXT PRIMARY KEY,
-   schedule_id TEXT,
-   local_next_date INTEGER,
-   local_next_date_ts INTEGER,
-   base_next_date INTEGER,
-   base_next_date_ts INTEGER);
-
-CREATE TABLE schedules_json_paths
-  (schedule_id TEXT PRIMARY KEY,
-   payee TEXT,
-   account TEXT,
-   amount TEXT,
-   date TEXT);
-
-ALTER TABLE transactions ADD COLUMN schedule TEXT;
-
-COMMIT;
diff --git a/packages/api/migrations/1632571489012_remove_cache.js b/packages/api/migrations/1632571489012_remove_cache.js
deleted file mode 100644
index 2f3764c47..000000000
--- a/packages/api/migrations/1632571489012_remove_cache.js
+++ /dev/null
@@ -1,135 +0,0 @@
-export default async function runMigration(db, uuid) {
-  function getValue(node) {
-    return node.expr != null ? node.expr : node.cachedValue;
-  }
-
-  db.execQuery(`
-CREATE TABLE zero_budget_months
-  (id TEXT PRIMARY KEY,
-   buffered INTEGER DEFAULT 0);
-
-CREATE TABLE zero_budgets
-  (id TEXT PRIMARY KEY,
-   month INTEGER,
-   category TEXT,
-   amount INTEGER DEFAULT 0,
-   carryover INTEGER DEFAULT 0);
-
-CREATE TABLE reflect_budgets
-  (id TEXT PRIMARY KEY,
-   month INTEGER,
-   category TEXT,
-   amount INTEGER DEFAULT 0,
-   carryover INTEGER DEFAULT 0);
-
-CREATE TABLE notes
-  (id TEXT PRIMARY KEY,
-   note TEXT);
-
-CREATE TABLE kvcache (key TEXT PRIMARY KEY, value TEXT);
-CREATE TABLE kvcache_key (id INTEGER PRIMARY KEY, key REAL);
-`);
-
-  // Migrate budget amounts and carryover
-  let budget = db.runQuery(
-    `SELECT * FROM spreadsheet_cells WHERE name LIKE 'budget%!budget-%'`,
-    [],
-    true,
-  );
-  db.transaction(() => {
-    budget.forEach(monthBudget => {
-      let match = monthBudget.name.match(
-        /^(budget-report|budget)(\d+)!budget-(.+)$/,
-      );
-      if (match == null) {
-        console.log('Warning: invalid budget month name', monthBudget.name);
-        return;
-      }
-
-      let type = match[1];
-      let month = match[2].slice(0, 4) + '-' + match[2].slice(4);
-      let dbmonth = parseInt(match[2]);
-      let cat = match[3];
-
-      let amount = parseInt(getValue(monthBudget));
-      if (isNaN(amount)) {
-        amount = 0;
-      }
-
-      let sheetName = monthBudget.name.split('!')[0];
-      let carryover = db.runQuery(
-        'SELECT * FROM spreadsheet_cells WHERE name = ?',
-        [`${sheetName}!carryover-${cat}`],
-        true,
-      );
-
-      let table = type === 'budget-report' ? 'reflect_budgets' : 'zero_budgets';
-      db.runQuery(
-        `INSERT INTO ${table} (id, month, category, amount, carryover) VALUES (?, ?, ?, ?, ?)`,
-        [
-          `${month}-${cat}`,
-          dbmonth,
-          cat,
-          amount,
-          carryover.length > 0 && getValue(carryover[0]) === 'true' ? 1 : 0,
-        ],
-      );
-    });
-  });
-
-  // Migrate buffers
-  let buffers = db.runQuery(
-    `SELECT * FROM spreadsheet_cells WHERE name LIKE 'budget%!buffered'`,
-    [],
-    true,
-  );
-  db.transaction(() => {
-    buffers.forEach(buffer => {
-      let match = buffer.name.match(/^budget(\d+)!buffered$/);
-      if (match) {
-        let month = match[1].slice(0, 4) + '-' + match[1].slice(4);
-        let amount = parseInt(getValue(buffer));
-        if (isNaN(amount)) {
-          amount = 0;
-        }
-
-        db.runQuery(
-          `INSERT INTO zero_budget_months (id, buffered) VALUES (?, ?)`,
-          [month, amount],
-        );
-      }
-    });
-  });
-
-  // Migrate notes
-  let notes = db.runQuery(
-    `SELECT * FROM spreadsheet_cells WHERE name LIKE 'notes!%'`,
-    [],
-    true,
-  );
-
-  let parseNote = str => {
-    try {
-      let value = JSON.parse(str);
-      return value && value !== '' ? value : null;
-    } catch (e) {
-      return null;
-    }
-  };
-
-  db.transaction(() => {
-    notes.forEach(note => {
-      let parsed = parseNote(getValue(note));
-      if (parsed) {
-        let [, id] = note.name.split('!');
-        db.runQuery(`INSERT INTO notes (id, note) VALUES (?, ?)`, [id, parsed]);
-      }
-    });
-  });
-
-  db.execQuery(`
-    DROP TABLE spreadsheet_cells;
-    ANALYZE;
-    VACUUM;
-  `);
-}
diff --git a/packages/desktop-client/.gitignore b/packages/desktop-client/.gitignore
index ddec6994d..652b554f3 100644
--- a/packages/desktop-client/.gitignore
+++ b/packages/desktop-client/.gitignore
@@ -17,3 +17,5 @@ npm-debug.log
 
 *kcab.*
 public/kcab
+public/data
+public/data-file-index.txt
diff --git a/packages/desktop-client/public/data-file-index.txt b/packages/desktop-client/public/data-file-index.txt
deleted file mode 100644
index edb2dce09..000000000
--- a/packages/desktop-client/public/data-file-index.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-default-db.sqlite
-migrations/.force-copy-windows
-migrations/1548957970627_remove-db-version.sql
-migrations/1550601598648_payees.sql
-migrations/1555786194328_remove_category_group_unique.sql
-migrations/1561751833510_indexes.sql
-migrations/1567699552727_budget.sql
-migrations/1582384163573_cleared.sql
-migrations/1597756566448_rules.sql
-migrations/1608652596043_parent_field.sql
-migrations/1608652596044_trans_views.sql
-migrations/1612625548236_optimize.sql
-migrations/1614782639336_trans_views2.sql
-migrations/1615745967948_meta.sql
-migrations/1616167010796_accounts_order.sql
-migrations/1618975177358_schedules.sql
-migrations/1632571489012_remove_cache.js
-migrations/1679728867040_rules_conditions.sql
diff --git a/packages/desktop-client/public/data/default-db.sqlite b/packages/desktop-client/public/data/default-db.sqlite
deleted file mode 100644
index 5d55b361144e7ea59d64496977edffc50819ebe2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 282624
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

diff --git a/packages/desktop-client/public/data/migrations/.force-copy-windows b/packages/desktop-client/public/data/migrations/.force-copy-windows
deleted file mode 100644
index e69de29bb..000000000
diff --git a/packages/desktop-client/public/data/migrations/1548957970627_remove-db-version.sql b/packages/desktop-client/public/data/migrations/1548957970627_remove-db-version.sql
deleted file mode 100644
index d93af5d93..000000000
--- a/packages/desktop-client/public/data/migrations/1548957970627_remove-db-version.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-BEGIN TRANSACTION;
-
-DROP TABLE db_version;
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1550601598648_payees.sql b/packages/desktop-client/public/data/migrations/1550601598648_payees.sql
deleted file mode 100644
index 9cab95047..000000000
--- a/packages/desktop-client/public/data/migrations/1550601598648_payees.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE TABLE payees
-  (id TEXT PRIMARY KEY,
-   name TEXT,
-   category TEXT,
-   tombstone INTEGER DEFAULT 0,
-   transfer_acct TEXT);
-
-CREATE TABLE payee_rules
-  (id TEXT PRIMARY KEY,
-   payee_id TEXT,
-   type TEXT,
-   value TEXT,
-   tombstone INTEGER DEFAULT 0);
-
-CREATE INDEX payee_rules_lowercase_index ON payee_rules(LOWER(value));
-
-CREATE TABLE payee_mapping
-  (id TEXT PRIMARY KEY,
-   targetId TEXT);
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1555786194328_remove_category_group_unique.sql b/packages/desktop-client/public/data/migrations/1555786194328_remove_category_group_unique.sql
deleted file mode 100644
index f97e2d741..000000000
--- a/packages/desktop-client/public/data/migrations/1555786194328_remove_category_group_unique.sql
+++ /dev/null
@@ -1,25 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE TEMPORARY TABLE category_groups_tmp
-   (id TEXT PRIMARY KEY,
-    name TEXT UNIQUE,
-    is_income INTEGER DEFAULT 0,
-    sort_order REAL,
-    tombstone INTEGER DEFAULT 0);
-
-INSERT INTO category_groups_tmp SELECT * FROM category_groups;
-
-DROP TABLE category_groups;
-
-CREATE TABLE category_groups
-   (id TEXT PRIMARY KEY,
-    name TEXT,
-    is_income INTEGER DEFAULT 0,
-    sort_order REAL,
-    tombstone INTEGER DEFAULT 0);
-
-INSERT INTO category_groups SELECT * FROM category_groups_tmp;
-
-DROP TABLE category_groups_tmp;
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1561751833510_indexes.sql b/packages/desktop-client/public/data/migrations/1561751833510_indexes.sql
deleted file mode 100644
index 733dfa5d2..000000000
--- a/packages/desktop-client/public/data/migrations/1561751833510_indexes.sql
+++ /dev/null
@@ -1,7 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE INDEX trans_category_date ON transactions(category, date);
-CREATE INDEX trans_category ON transactions(category);
-CREATE INDEX trans_date ON transactions(date);
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1567699552727_budget.sql b/packages/desktop-client/public/data/migrations/1567699552727_budget.sql
deleted file mode 100644
index 6f0519da6..000000000
--- a/packages/desktop-client/public/data/migrations/1567699552727_budget.sql
+++ /dev/null
@@ -1,38 +0,0 @@
-BEGIN TRANSACTION;
-
-DELETE FROM spreadsheet_cells WHERE
-  name NOT LIKE '%!budget\_%' ESCAPE '\' AND
-  name NOT LIKE '%!carryover\_%' ESCAPE '\' AND
-  name NOT LIKE '%!buffered';
-
-UPDATE OR REPLACE spreadsheet_cells SET name = REPLACE(name, '_', '-');
-
-UPDATE OR REPLACE spreadsheet_cells SET
-  name =
-    SUBSTR(name, 1, 28) ||
-    '-' ||
-    SUBSTR(name, 29, 4) ||
-    '-' ||
-    SUBSTR(name, 33, 4) ||
-    '-' ||
-    SUBSTR(name, 37, 4) ||
-    '-' ||
-    SUBSTR(name, 41, 12)
-WHERE name LIKE '%!budget-%' AND LENGTH(name) = 52;
-
-UPDATE OR REPLACE spreadsheet_cells SET
-  name =
-    SUBSTR(name, 1, 31) ||
-    '-' ||
-    SUBSTR(name, 32, 4) ||
-    '-' ||
-    SUBSTR(name, 36, 4) ||
-    '-' ||
-    SUBSTR(name, 40, 4) ||
-    '-' ||
-    SUBSTR(name, 44, 12)
-WHERE name LIKE '%!carryover-%' AND LENGTH(name) = 55;
-
-UPDATE spreadsheet_cells SET expr = SUBSTR(expr, 2) WHERE name LIKE '%!carryover-%';
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1582384163573_cleared.sql b/packages/desktop-client/public/data/migrations/1582384163573_cleared.sql
deleted file mode 100644
index 5d6f8ce66..000000000
--- a/packages/desktop-client/public/data/migrations/1582384163573_cleared.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-BEGIN TRANSACTION;
-
-ALTER TABLE transactions ADD COLUMN cleared INTEGER DEFAULT 1;
-ALTER TABLE transactions ADD COLUMN pending INTEGER DEFAULT 0;
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1597756566448_rules.sql b/packages/desktop-client/public/data/migrations/1597756566448_rules.sql
deleted file mode 100644
index 291e2b1be..000000000
--- a/packages/desktop-client/public/data/migrations/1597756566448_rules.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE TABLE rules
-  (id TEXT PRIMARY KEY,
-   stage TEXT,
-   conditions TEXT,
-   actions TEXT,
-   tombstone INTEGER DEFAULT 0);
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1608652596043_parent_field.sql b/packages/desktop-client/public/data/migrations/1608652596043_parent_field.sql
deleted file mode 100644
index a5bdf8796..000000000
--- a/packages/desktop-client/public/data/migrations/1608652596043_parent_field.sql
+++ /dev/null
@@ -1,13 +0,0 @@
-BEGIN TRANSACTION;
-
-ALTER TABLE transactions ADD COLUMN parent_id TEXT;
-
-UPDATE transactions SET
-  parent_id = CASE
-    WHEN isChild THEN SUBSTR(id, 1, INSTR(id, '/') - 1)
-    ELSE NULL
-  END;
-
-CREATE INDEX trans_parent_id ON transactions(parent_id);
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1608652596044_trans_views.sql b/packages/desktop-client/public/data/migrations/1608652596044_trans_views.sql
deleted file mode 100644
index 345fc234d..000000000
--- a/packages/desktop-client/public/data/migrations/1608652596044_trans_views.sql
+++ /dev/null
@@ -1,56 +0,0 @@
-BEGIN TRANSACTION;
-
-DROP VIEW IF EXISTS v_transactions_layer2;
-CREATE VIEW v_transactions_layer2 AS
-SELECT
-  t.id AS id,
-  t.isParent AS is_parent,
-  t.isChild AS is_child,
-  t.acct AS account,
-  CASE WHEN t.isChild = 0 THEN NULL ELSE t.parent_id END AS parent_id,
-  CASE WHEN t.isParent = 1 THEN NULL ELSE cm.transferId END AS category,
-  pm.targetId AS payee,
-  t.imported_description AS imported_payee,
-  IFNULL(t.amount, 0) AS amount,
-  t.notes AS notes,
-  t.date AS date,
-  t.financial_id AS imported_id,
-  t.error AS error,
-  t.starting_balance_flag AS starting_balance_flag,
-  t.transferred_id AS transfer_id,
-  t.sort_order AS sort_order,
-  t.cleared AS cleared,
-  t.tombstone AS tombstone
-FROM transactions t
-LEFT JOIN category_mapping cm ON cm.id = t.category
-LEFT JOIN payee_mapping pm ON pm.id = t.description
-WHERE
-  t.date IS NOT NULL AND
-  t.acct IS NOT NULL;
-
-CREATE INDEX trans_sorted ON transactions(date desc, starting_balance_flag, sort_order desc, id);
-
-DROP VIEW IF EXISTS v_transactions_layer1;
-CREATE VIEW v_transactions_layer1 AS
-SELECT t.* FROM v_transactions_layer2 t
-LEFT JOIN transactions t2 ON (t.is_child = 1 AND t2.id = t.parent_id)
-WHERE IFNULL(t.tombstone, 0) = 0 AND IFNULL(t2.tombstone, 0) = 0;
-
-DROP VIEW IF EXISTS v_transactions;
-CREATE VIEW v_transactions AS
-SELECT t.* FROM v_transactions_layer1 t
-ORDER BY t.date desc, t.starting_balance_flag, t.sort_order desc, t.id;
-
-
-DROP VIEW IF EXISTS v_categories;
-CREATE VIEW v_categories AS
-SELECT
-  id,
-  name,
-  is_income,
-  cat_group AS "group",
-  sort_order,
-  tombstone
-FROM categories;
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1612625548236_optimize.sql b/packages/desktop-client/public/data/migrations/1612625548236_optimize.sql
deleted file mode 100644
index 6e7075ff0..000000000
--- a/packages/desktop-client/public/data/migrations/1612625548236_optimize.sql
+++ /dev/null
@@ -1,7 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE INDEX messages_crdt_search ON messages_crdt(dataset, row, column, timestamp);
-
-ANALYZE;
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1614782639336_trans_views2.sql b/packages/desktop-client/public/data/migrations/1614782639336_trans_views2.sql
deleted file mode 100644
index c95a92ca6..000000000
--- a/packages/desktop-client/public/data/migrations/1614782639336_trans_views2.sql
+++ /dev/null
@@ -1,33 +0,0 @@
-BEGIN TRANSACTION;
-
--- This adds the isChild/parent_id constraint in `where`
-DROP VIEW IF EXISTS v_transactions_layer2;
-CREATE VIEW v_transactions_layer2 AS
-SELECT
-  t.id AS id,
-  t.isParent AS is_parent,
-  t.isChild AS is_child,
-  t.acct AS account,
-  CASE WHEN t.isChild = 0 THEN NULL ELSE t.parent_id END AS parent_id,
-  CASE WHEN t.isParent = 1 THEN NULL ELSE cm.transferId END AS category,
-  pm.targetId AS payee,
-  t.imported_description AS imported_payee,
-  IFNULL(t.amount, 0) AS amount,
-  t.notes AS notes,
-  t.date AS date,
-  t.financial_id AS imported_id,
-  t.error AS error,
-  t.starting_balance_flag AS starting_balance_flag,
-  t.transferred_id AS transfer_id,
-  t.sort_order AS sort_order,
-  t.cleared AS cleared,
-  t.tombstone AS tombstone
-FROM transactions t
-LEFT JOIN category_mapping cm ON cm.id = t.category
-LEFT JOIN payee_mapping pm ON pm.id = t.description
-WHERE
-  t.date IS NOT NULL AND
-  t.acct IS NOT NULL AND
-  (t.isChild = 0 OR t.parent_id IS NOT NULL);
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1615745967948_meta.sql b/packages/desktop-client/public/data/migrations/1615745967948_meta.sql
deleted file mode 100644
index 6bcb3d76f..000000000
--- a/packages/desktop-client/public/data/migrations/1615745967948_meta.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE TABLE __meta__ (key TEXT PRIMARY KEY, value TEXT);
-
-DROP VIEW IF EXISTS v_transactions_layer2;
-DROP VIEW IF EXISTS v_transactions_layer1;
-DROP VIEW IF EXISTS v_transactions;
-DROP VIEW IF EXISTS v_categories;
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1616167010796_accounts_order.sql b/packages/desktop-client/public/data/migrations/1616167010796_accounts_order.sql
deleted file mode 100644
index 6e259794a..000000000
--- a/packages/desktop-client/public/data/migrations/1616167010796_accounts_order.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-BEGIN TRANSACTION;
-
-ALTER TABLE accounts ADD COLUMN sort_order REAL;
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1618975177358_schedules.sql b/packages/desktop-client/public/data/migrations/1618975177358_schedules.sql
deleted file mode 100644
index 6c57a5d14..000000000
--- a/packages/desktop-client/public/data/migrations/1618975177358_schedules.sql
+++ /dev/null
@@ -1,28 +0,0 @@
-BEGIN TRANSACTION;
-
-CREATE TABLE schedules
-  (id TEXT PRIMARY KEY,
-   rule TEXT,
-   active INTEGER DEFAULT 0,
-   completed INTEGER DEFAULT 0,
-   posts_transaction INTEGER DEFAULT 0,
-   tombstone INTEGER DEFAULT 0);
-
-CREATE TABLE schedules_next_date
-  (id TEXT PRIMARY KEY,
-   schedule_id TEXT,
-   local_next_date INTEGER,
-   local_next_date_ts INTEGER,
-   base_next_date INTEGER,
-   base_next_date_ts INTEGER);
-
-CREATE TABLE schedules_json_paths
-  (schedule_id TEXT PRIMARY KEY,
-   payee TEXT,
-   account TEXT,
-   amount TEXT,
-   date TEXT);
-
-ALTER TABLE transactions ADD COLUMN schedule TEXT;
-
-COMMIT;
diff --git a/packages/desktop-client/public/data/migrations/1632571489012_remove_cache.js b/packages/desktop-client/public/data/migrations/1632571489012_remove_cache.js
deleted file mode 100644
index 2f3764c47..000000000
--- a/packages/desktop-client/public/data/migrations/1632571489012_remove_cache.js
+++ /dev/null
@@ -1,135 +0,0 @@
-export default async function runMigration(db, uuid) {
-  function getValue(node) {
-    return node.expr != null ? node.expr : node.cachedValue;
-  }
-
-  db.execQuery(`
-CREATE TABLE zero_budget_months
-  (id TEXT PRIMARY KEY,
-   buffered INTEGER DEFAULT 0);
-
-CREATE TABLE zero_budgets
-  (id TEXT PRIMARY KEY,
-   month INTEGER,
-   category TEXT,
-   amount INTEGER DEFAULT 0,
-   carryover INTEGER DEFAULT 0);
-
-CREATE TABLE reflect_budgets
-  (id TEXT PRIMARY KEY,
-   month INTEGER,
-   category TEXT,
-   amount INTEGER DEFAULT 0,
-   carryover INTEGER DEFAULT 0);
-
-CREATE TABLE notes
-  (id TEXT PRIMARY KEY,
-   note TEXT);
-
-CREATE TABLE kvcache (key TEXT PRIMARY KEY, value TEXT);
-CREATE TABLE kvcache_key (id INTEGER PRIMARY KEY, key REAL);
-`);
-
-  // Migrate budget amounts and carryover
-  let budget = db.runQuery(
-    `SELECT * FROM spreadsheet_cells WHERE name LIKE 'budget%!budget-%'`,
-    [],
-    true,
-  );
-  db.transaction(() => {
-    budget.forEach(monthBudget => {
-      let match = monthBudget.name.match(
-        /^(budget-report|budget)(\d+)!budget-(.+)$/,
-      );
-      if (match == null) {
-        console.log('Warning: invalid budget month name', monthBudget.name);
-        return;
-      }
-
-      let type = match[1];
-      let month = match[2].slice(0, 4) + '-' + match[2].slice(4);
-      let dbmonth = parseInt(match[2]);
-      let cat = match[3];
-
-      let amount = parseInt(getValue(monthBudget));
-      if (isNaN(amount)) {
-        amount = 0;
-      }
-
-      let sheetName = monthBudget.name.split('!')[0];
-      let carryover = db.runQuery(
-        'SELECT * FROM spreadsheet_cells WHERE name = ?',
-        [`${sheetName}!carryover-${cat}`],
-        true,
-      );
-
-      let table = type === 'budget-report' ? 'reflect_budgets' : 'zero_budgets';
-      db.runQuery(
-        `INSERT INTO ${table} (id, month, category, amount, carryover) VALUES (?, ?, ?, ?, ?)`,
-        [
-          `${month}-${cat}`,
-          dbmonth,
-          cat,
-          amount,
-          carryover.length > 0 && getValue(carryover[0]) === 'true' ? 1 : 0,
-        ],
-      );
-    });
-  });
-
-  // Migrate buffers
-  let buffers = db.runQuery(
-    `SELECT * FROM spreadsheet_cells WHERE name LIKE 'budget%!buffered'`,
-    [],
-    true,
-  );
-  db.transaction(() => {
-    buffers.forEach(buffer => {
-      let match = buffer.name.match(/^budget(\d+)!buffered$/);
-      if (match) {
-        let month = match[1].slice(0, 4) + '-' + match[1].slice(4);
-        let amount = parseInt(getValue(buffer));
-        if (isNaN(amount)) {
-          amount = 0;
-        }
-
-        db.runQuery(
-          `INSERT INTO zero_budget_months (id, buffered) VALUES (?, ?)`,
-          [month, amount],
-        );
-      }
-    });
-  });
-
-  // Migrate notes
-  let notes = db.runQuery(
-    `SELECT * FROM spreadsheet_cells WHERE name LIKE 'notes!%'`,
-    [],
-    true,
-  );
-
-  let parseNote = str => {
-    try {
-      let value = JSON.parse(str);
-      return value && value !== '' ? value : null;
-    } catch (e) {
-      return null;
-    }
-  };
-
-  db.transaction(() => {
-    notes.forEach(note => {
-      let parsed = parseNote(getValue(note));
-      if (parsed) {
-        let [, id] = note.name.split('!');
-        db.runQuery(`INSERT INTO notes (id, note) VALUES (?, ?)`, [id, parsed]);
-      }
-    });
-  });
-
-  db.execQuery(`
-    DROP TABLE spreadsheet_cells;
-    ANALYZE;
-    VACUUM;
-  `);
-}
diff --git a/packages/desktop-client/public/data/migrations/1679728867040_rules_conditions.sql b/packages/desktop-client/public/data/migrations/1679728867040_rules_conditions.sql
deleted file mode 100644
index 9f12e68f9..000000000
--- a/packages/desktop-client/public/data/migrations/1679728867040_rules_conditions.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-BEGIN TRANSACTION;
-
-ALTER TABLE rules ADD COLUMN conditions_op TEXT DEFAULT 'and';
-
-COMMIT;
diff --git a/packages/loot-core/bin/build-browser b/packages/loot-core/bin/build-browser
index e1da58008..bf7a0b1de 100755
--- a/packages/loot-core/bin/build-browser
+++ b/packages/loot-core/bin/build-browser
@@ -4,7 +4,13 @@ cd `dirname "$0"`
 ROOT=`pwd -P`
 WEBPACK_ARGS=""
 
-"$ROOT"/copy-migrations
+DATA_DIR="$ROOT"/../../desktop-client/public/data
+mkdir -p "$DATA_DIR"
+"$ROOT"/copy-migrations "$DATA_DIR"
+
+cd "$DATA_DIR"
+find * -type f | sort > ../data-file-index.txt
+cd "$ROOT"
 
 OUTPUT_HASH="[hash]"
 if [ $NODE_ENV == 'development' ]; then
diff --git a/packages/loot-core/bin/copy-migrations b/packages/loot-core/bin/copy-migrations
index ebd0d0099..81eef9b31 100755
--- a/packages/loot-core/bin/copy-migrations
+++ b/packages/loot-core/bin/copy-migrations
@@ -1,14 +1,11 @@
 #!/bin/sh -e
 
+dest_dir=$(realpath "$1")
+
 ROOT=`dirname "$0"`
 cd "$ROOT"
 
-# Copy them to the browser version
-$(
-  cd ../../desktop-client/public;
-  rm -rf ./data;
-  mkdir ./data;
-  cp -r ../../loot-core/migrations ./data;
-  cp ../../loot-core/default-db.sqlite ./data;
-  cd data && find * -type f | sort > ../data-file-index.txt;
-)
+rm -rf "$dest_dir"/migrations
+mkdir -p "$dest_dir"/migrations
+cp ../migrations/* "$dest_dir"/migrations/
+cp ../default-db.sqlite "$dest_dir"
diff --git a/packages/loot-core/package.json b/packages/loot-core/package.json
index 611d9118f..0522646f5 100644
--- a/packages/loot-core/package.json
+++ b/packages/loot-core/package.json
@@ -6,7 +6,7 @@
   "scripts": {
     "build:node": "cross-env NODE_ENV=production webpack --config ./webpack/webpack.desktop.config.js",
     "watch:node": "cross-env NODE_ENV=development webpack --config ./webpack/webpack.desktop.config.js --watch",
-    "build:api": "cross-env NODE_ENV=development webpack --config ./webpack/webpack.api.config.js",
+    "build:api": "cross-env NODE_ENV=development webpack --config ./webpack/webpack.api.config.js; ./bin/copy-migrations ../api",
     "build:browser": "cross-env NODE_ENV=production ./bin/build-browser",
     "watch:browser": "cross-env NODE_ENV=development ./bin/build-browser",
     "lint": "eslint .",
diff --git a/upcoming-release-notes/870.md b/upcoming-release-notes/870.md
new file mode 100644
index 000000000..1647bb82e
--- /dev/null
+++ b/upcoming-release-notes/870.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [j-f1]
+---
+
+Remove duplicate migration and default-db.sqlite files
-- 
GitLab