diff --git a/backend/app/core/config.py b/backend/app/core/config.py
index 0272bfa..274368b 100644
--- a/backend/app/core/config.py
+++ b/backend/app/core/config.py
@@ -6,7 +6,7 @@ from pydantic_settings import BaseSettings, SettingsConfigDict
# Single source of truth for the running app's version — surfaced in the API
# title and embedded in exported backups so an old file can be told apart
# from a current one.
-APP_VERSION = "0.19.2"
+APP_VERSION = "0.20.0"
class Settings(BaseSettings):
diff --git a/e2e/run.sh b/e2e/run.sh
index 37d7c0d..00f6696 100755
--- a/e2e/run.sh
+++ b/e2e/run.sh
@@ -23,9 +23,13 @@ trap cleanup EXIT
$COMPOSE up -d --build
-echo "waiting for http://localhost:${AURUM_WEB_PORT} ..."
+echo "waiting for http://localhost:${AURUM_WEB_PORT}/api/health ..."
+# /api/health, not just / — nginx (the `web` container) answers the bare root
+# well before the backend has finished running migrations + seeding, and a
+# request racing ahead of that gets nginx's own HTML error page back instead
+# of JSON, which the first test to touch the API then fails to parse.
for _ in $(seq 1 60); do
- if curl -sf "http://localhost:${AURUM_WEB_PORT}" >/dev/null; then
+ if curl -sf "http://localhost:${AURUM_WEB_PORT}/api/health" >/dev/null; then
echo "stack is up"
break
fi
diff --git a/frontend/package.json b/frontend/package.json
index c880cef..03be0e6 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,7 +1,7 @@
{
"name": "aurum-frontend",
"private": true,
- "version": "0.19.2",
+ "version": "0.20.0",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/frontend/src/components/transactions/TransactionFormModal.tsx b/frontend/src/components/transactions/TransactionFormModal.tsx
index 0462c31..04ebade 100644
--- a/frontend/src/components/transactions/TransactionFormModal.tsx
+++ b/frontend/src/components/transactions/TransactionFormModal.tsx
@@ -233,6 +233,15 @@ export function TransactionFormModal({ open, onClose, transaction }: Transaction
/>
+