diff --git a/backend/config/version.py b/backend/config/version.py index 39b95ac..b803605 100644 --- a/backend/config/version.py +++ b/backend/config/version.py @@ -2,7 +2,7 @@ # file: config/version.py import os -BASE_VERSION = "1.0.15" # update manually when releasing features +BASE_VERSION = "1.0.16" # update manually when releasing features def get_full_version() -> str: """ diff --git a/frontend/e2e/.auth/user-cc.json b/frontend/e2e/.auth/user-cc.json index 3b75c0a..caf7f8f 100644 --- a/frontend/e2e/.auth/user-cc.json +++ b/frontend/e2e/.auth/user-cc.json @@ -2,20 +2,20 @@ "cookies": [ { "name": "refresh_token", - "value": "DxpdHN19-u06WvFHt0QDGQ-L8vPbVjFgShFhxKNhBMI", + "value": "reYniSI2OIXUAcXkeBNTaaOD7MJOzNEhwxwSDO42bew", "domain": "localhost", "path": "/api/auth", - "expires": 1787085982.145659, + "expires": 1787504746.987795, "httpOnly": true, "secure": true, "sameSite": "Strict" }, { "name": "access_token", - "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZS1jY0B0ZXN0LmNvbSIsInVzZXJfaWQiOiJkYzkwNjU3Mi02MmNkLTRjM2MtOTFiNy0wZGJjZGVhMjZjZDMiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3NzkzMjA3ODJ9.8tmlxpVR4KL_kclP1Ak1Wdx7_qZtLayb3lrcQHlFdY8", + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZS1jY0B0ZXN0LmNvbSIsInVzZXJfaWQiOiJhNDQyY2E4Ni1lNGIzLTRjZjEtYThmYS0zNWJmYmZhNzk5NjYiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3Nzk3Mzk1NDZ9.3zqjc9RdG9jpr5wbmhbqYUCvzxUl9d8tcc4EY1-BYJc", "domain": "localhost", "path": "/", - "expires": 1779320782.145583, + "expires": 1779739546.987748, "httpOnly": true, "secure": true, "sameSite": "Lax" @@ -27,11 +27,11 @@ "localStorage": [ { "name": "authSyncEvent", - "value": "{\"type\":\"logout\",\"at\":1779309981997}" + "value": "{\"type\":\"logout\",\"at\":1779728746835}" }, { "name": "parentAuth", - "value": "{\"expiresAt\":1779482782305}" + "value": "{\"expiresAt\":1779901547148}" } ] } diff --git a/frontend/e2e/.auth/user-delete.json b/frontend/e2e/.auth/user-delete.json index 817ac1b..dc04d94 100644 --- a/frontend/e2e/.auth/user-delete.json +++ b/frontend/e2e/.auth/user-delete.json @@ -2,20 +2,20 @@ "cookies": [ { "name": "refresh_token", - "value": "fzE1WOI8ku1O7zv_5fFC_eRgk0CmbokqVZk1g_M_V9A", + "value": "DlW9UoiIvVxuPPp3wfo3qsVP5tlO2Iw2e8TZThWeMDw", "domain": "localhost", "path": "/api/auth", - "expires": 1787085982.03234, + "expires": 1787504746.877459, "httpOnly": true, "secure": true, "sameSite": "Strict" }, { "name": "access_token", - "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZS1kZWxldGVAdGVzdC5jb20iLCJ1c2VyX2lkIjoiZjQwZjEzMDgtNmNjNi00NTA4LWE0NmQtODYwMjMzNzhkNDQ4IiwidG9rZW5fdmVyc2lvbiI6MCwiZXhwIjoxNzc5MzIwNzgyfQ.NI2FXDnR2Q7yoKSMjFeElmQNtHDYoXtB8zQ-nPda2NQ", + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZS1kZWxldGVAdGVzdC5jb20iLCJ1c2VyX2lkIjoiM2E3ZDA3NjYtYTQyNy00NTQ5LWE0NGEtMWU0ZjUwOGRhZDBhIiwidG9rZW5fdmVyc2lvbiI6MCwiZXhwIjoxNzc5NzM5NTQ2fQ.jFLpGeJBM7U-x-N1jT-muHjBStXFyeb5oQS0LryWwr0", "domain": "localhost", "path": "/", - "expires": 1779320782.032289, + "expires": 1779739546.877411, "httpOnly": true, "secure": true, "sameSite": "Lax" @@ -27,11 +27,11 @@ "localStorage": [ { "name": "authSyncEvent", - "value": "{\"type\":\"logout\",\"at\":1779309981887}" + "value": "{\"type\":\"logout\",\"at\":1779728746722}" }, { "name": "parentAuth", - "value": "{\"expiresAt\":1779482782189}" + "value": "{\"expiresAt\":1779901547028}" } ] } diff --git a/frontend/e2e/.auth/user.json b/frontend/e2e/.auth/user.json index 9be7ace..ab7a4a7 100644 --- a/frontend/e2e/.auth/user.json +++ b/frontend/e2e/.auth/user.json @@ -2,20 +2,20 @@ "cookies": [ { "name": "refresh_token", - "value": "UEtX_GEYexwXzL3sl4-QgOEsdnqThwUccA82UsoiR2M", + "value": "Xz4WQkQNdryfFsS3GaA09dGDz3yEaRwHxF2VdIh8LwQ", "domain": "localhost", "path": "/api/auth", - "expires": 1787085980.357146, + "expires": 1787504745.201123, "httpOnly": true, "secure": true, "sameSite": "Strict" }, { "name": "access_token", - "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZUB0ZXN0LmNvbSIsInVzZXJfaWQiOiJlNDlkMWU2Mi1kNDFiLTQ2YTEtYTU3ZS1lNmUwMzk0ZmEwYjgiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3NzkzMjA3ODB9.waOPPnZ7gmCgOUxGU9CO7APhdpr78mDJCokRlbfLV3w", + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImUyZUB0ZXN0LmNvbSIsInVzZXJfaWQiOiJhMWVlZGNkOC1hMGE0LTQyYjMtOWU3ZC01MWRmNGM1ZTFiNTUiLCJ0b2tlbl92ZXJzaW9uIjowLCJleHAiOjE3Nzk3Mzk1NDV9.Q2q-xiDjAw8pu3t8ioaawUpGK1__5wBiPZ-vFvXHnmw", "domain": "localhost", "path": "/", - "expires": 1779320780.357103, + "expires": 1779739545.201078, "httpOnly": true, "secure": true, "sameSite": "Lax" @@ -27,11 +27,11 @@ "localStorage": [ { "name": "authSyncEvent", - "value": "{\"type\":\"logout\",\"at\":1779309980235}" + "value": "{\"type\":\"logout\",\"at\":1779728745058}" }, { "name": "parentAuth", - "value": "{\"expiresAt\":1779482780489}" + "value": "{\"expiresAt\":1779901545328}" } ] } diff --git a/frontend/e2e/mode_parent/routines/routine-item-reorder.spec.ts b/frontend/e2e/mode_parent/routines/routine-item-reorder.spec.ts index 3ce7b1c..cf0fe16 100644 --- a/frontend/e2e/mode_parent/routines/routine-item-reorder.spec.ts +++ b/frontend/e2e/mode_parent/routines/routine-item-reorder.spec.ts @@ -47,7 +47,7 @@ test.describe('Routine item drag-to-reorder', () => { await page.goto(`/parent/tasks/routines/${routineId}/edit`) await page.locator('.item-row').first().waitFor({ state: 'visible' }) - await page.locator('.item-row').nth(0).dragTo(page.locator('.item-row').nth(2)) + await page.locator('.item-row').nth(0).locator('.drag-handle').dragTo(page.locator('.item-row').nth(2)) const names = await page.locator('.item-name').allTextContents() expect(names).toEqual([ITEM_B, ITEM_C, ITEM_A]) @@ -58,7 +58,7 @@ test.describe('Routine item drag-to-reorder', () => { await page.locator('.item-row').first().waitFor({ state: 'visible' }) // Drag first to last: [A, B, C] → [B, C, A] - await page.locator('.item-row').nth(0).dragTo(page.locator('.item-row').nth(2)) + await page.locator('.item-row').nth(0).locator('.drag-handle').dragTo(page.locator('.item-row').nth(2)) // Confirm the drag updated the DOM before saving const afterDrag = await page.locator('.item-name').allTextContents()