From 28e4bc9475e20057dd29d6b96836e6116dff2976 Mon Sep 17 00:00:00 2001 From: bunker-admin Date: Sun, 15 Mar 2026 13:50:09 -0600 Subject: [PATCH] Bunch of updates to scheduling --- .gitignore | 4 + .../console-2026-03-11T04-08-16-370Z.log | 2 + .../console-2026-03-11T04-09-16-650Z.log | 6 + .../console-2026-03-11T04-18-58-612Z.log | 26 + .../console-2026-03-11T04-30-19-709Z.log | 2 + .../console-2026-03-11T04-32-23-770Z.log | 1 + .../console-2026-03-11T04-32-35-003Z.log | 2 + .../console-2026-03-11T04-59-43-597Z.log | 2 + .../console-2026-03-11T05-12-37-187Z.log | 2 + .../console-2026-03-11T05-20-51-100Z.log | 2 + .../console-2026-03-11T05-23-22-971Z.log | 2 + .../console-2026-03-11T19-11-45-992Z.log | 6 + .../console-2026-03-11T21-01-17-074Z.log | 2 + .../console-2026-03-11T21-02-52-102Z.log | 2 + .../console-2026-03-11T21-37-02-291Z.log | 2 + .../console-2026-03-11T21-38-54-104Z.log | 2 + .../console-2026-03-11T21-41-12-923Z.log | 2 + .../console-2026-03-11T21-45-32-431Z.log | 14 + .../console-2026-03-12T04-52-24-612Z.log | 21 + .../console-2026-03-12T04-53-50-505Z.log | 8 + .../console-2026-03-12T05-00-21-925Z.log | 30 + .../console-2026-03-12T13-15-19-805Z.log | 2 + .../console-2026-03-12T13-20-20-354Z.log | 44 + .../console-2026-03-13T00-33-00-576Z.log | 1 + .../console-2026-03-13T00-35-31-307Z.log | 194 +++++ .../page-2026-03-11T05-31-06-498Z.png | Bin 0 -> 133260 bytes admin/src/App.tsx | 18 + admin/src/components/AppLayout.tsx | 2 + .../dashboard/MyActionItemsCard.tsx | 128 +++ admin/src/pages/ActionItemsPage.tsx | 441 ++++++++++ admin/src/pages/DashboardPage.tsx | 6 + admin/src/pages/MeetingAgendaPage.tsx | 817 ++++++++++++++++++ admin/src/pages/MeetingPlannerPage.tsx | 195 +++++ admin/src/pages/UsersPage.tsx | 6 + admin/src/pages/public/SchedulingPollPage.tsx | 155 ++++ admin/src/types/api.ts | 134 +++ .../migration.sql | 12 + .../migration.sql | 160 ++++ api/prisma/schema.prisma | 150 ++++ .../meeting-planner.schemas.ts | 38 + .../meeting-planner.service.ts | 535 +++++++++++- .../modules/meetings/action-items.routes.ts | 77 ++ .../modules/meetings/action-items.schemas.ts | 32 + .../modules/meetings/action-items.service.ts | 140 +++ api/src/modules/meetings/agenda.routes.ts | 98 +++ api/src/modules/meetings/agenda.schemas.ts | 40 + api/src/modules/meetings/agenda.service.ts | 171 ++++ .../people/participant-needs.routes.ts | 107 +++ .../people/participant-needs.schemas.ts | 35 + .../people/participant-needs.service.ts | 129 +++ api/src/modules/users/users.schemas.ts | 2 + api/src/modules/users/users.service.ts | 1 + api/src/server.ts | 8 + .../poll-auto-finalize-queue.service.ts | 132 +++ .../services/scheduled-jobs-queue.service.ts | 11 +- .../social/assets/images/social/test-page.png | Bin 66077 -> 66561 bytes mkdocs/.cache/plugin/social/manifest.json | 2 +- .../assets/images/screenshots/admin/areas.png | Bin 0 -> 79463 bytes .../images/screenshots/admin/campaigns.png | Bin 0 -> 74510 bytes .../images/screenshots/admin/canvassing.png | Bin 0 -> 74957 bytes .../images/screenshots/admin/dashboard.png | Bin 0 -> 445692 bytes .../images/screenshots/admin/data-quality.png | Bin 0 -> 100390 bytes .../screenshots/admin/effectiveness.png | Bin 0 -> 89649 bytes .../images/screenshots/admin/email-queue.png | Bin 0 -> 67228 bytes .../screenshots/admin/email-templates.png | Bin 0 -> 171105 bytes .../screenshots/admin/landing-pages.png | Bin 0 -> 123607 bytes .../images/screenshots/admin/locations.png | Bin 0 -> 139074 bytes .../images/screenshots/admin/map-settings.png | Bin 0 -> 143883 bytes .../screenshots/admin/media-analytics.png | Bin 0 -> 83988 bytes .../screenshots/admin/media-curated.png | Bin 0 -> 74399 bytes .../screenshots/admin/media-library.png | Bin 0 -> 125205 bytes .../images/screenshots/admin/monitoring.png | Bin 0 -> 121960 bytes .../images/screenshots/admin/newsletter.png | Bin 0 -> 112406 bytes .../screenshots/admin/representatives.png | Bin 0 -> 87464 bytes .../images/screenshots/admin/responses.png | Bin 0 -> 75454 bytes .../images/screenshots/admin/settings.png | Bin 0 -> 83928 bytes .../images/screenshots/admin/shifts.png | Bin 0 -> 108512 bytes .../assets/images/screenshots/admin/sms.png | Bin 0 -> 88169 bytes .../images/screenshots/admin/tunnel.png | Bin 0 -> 73914 bytes .../assets/images/screenshots/admin/users.png | Bin 0 -> 93621 bytes .../screenshots/getting-started/campaigns.png | Bin 0 -> 74510 bytes .../screenshots/getting-started/dashboard.png | Bin 0 -> 183024 bytes .../screenshots/getting-started/locations.png | Bin 0 -> 139074 bytes .../screenshots/getting-started/login.png | Bin 0 -> 183023 bytes .../getting-started/settings-organization.png | Bin 0 -> 83928 bytes .../screenshots/getting-started/shifts.png | Bin 0 -> 114444 bytes .../screenshots/getting-started/users.png | Bin 0 -> 93747 bytes .../images/screenshots/public/campaigns.png | Bin 0 -> 119867 bytes .../images/screenshots/public/gallery.png | Bin 0 -> 259479 bytes .../assets/images/screenshots/public/home.png | Bin 0 -> 207665 bytes .../assets/images/screenshots/public/map.png | Bin 0 -> 1016925 bytes .../images/screenshots/public/pricing.png | Bin 0 -> 88564 bytes .../images/screenshots/public/shifts.png | Bin 0 -> 138895 bytes .../assets/images/screenshots/public/shop.png | Bin 0 -> 88762 bytes .../screenshots/public/wall-of-fame.png | Bin 0 -> 70341 bytes .../repo-data/admin-changemaker.lite.json | 4 +- .../repo-data/anthropics-claude-code.json | 10 +- .../assets/repo-data/coder-code-server.json | 10 +- .../repo-data/gethomepage-homepage.json | 8 +- .../docs/assets/repo-data/go-gitea-gitea.json | 10 +- .../docs/assets/repo-data/knadh-listmonk.json | 10 +- .../docs/assets/repo-data/lyqht-mini-qr.json | 8 +- mkdocs/docs/assets/repo-data/n8n-io-n8n.json | 8 +- .../docs/assets/repo-data/nocodb-nocodb.json | 10 +- .../docs/assets/repo-data/ollama-ollama.json | 10 +- .../repo-data/squidfunk-mkdocs-material.json | 8 +- mkdocs/docs/docs/admin/advocacy/campaigns.md | 3 + .../docs/docs/admin/advocacy/email-queue.md | 3 + .../docs/admin/advocacy/representatives.md | 3 + mkdocs/docs/docs/admin/advocacy/responses.md | 3 + .../docs/admin/broadcast/email-templates.md | 3 + .../docs/docs/admin/broadcast/newsletter.md | 3 + mkdocs/docs/docs/admin/broadcast/sms.md | 3 + mkdocs/docs/docs/admin/dashboard.md | 3 + mkdocs/docs/docs/admin/map/areas.md | 3 + mkdocs/docs/docs/admin/map/canvassing.md | 3 + mkdocs/docs/docs/admin/map/data-quality.md | 3 + mkdocs/docs/docs/admin/map/locations.md | 3 + mkdocs/docs/docs/admin/map/settings.md | 3 + mkdocs/docs/docs/admin/map/shifts.md | 3 + mkdocs/docs/docs/admin/media/analytics.md | 3 + mkdocs/docs/docs/admin/media/curated.md | 3 + mkdocs/docs/docs/admin/media/library.md | 3 + mkdocs/docs/docs/admin/people-access.md | 3 + mkdocs/docs/docs/admin/services/monitoring.md | 3 + mkdocs/docs/docs/admin/services/tunnel.md | 3 + mkdocs/docs/docs/admin/settings.md | 3 + mkdocs/docs/docs/admin/web/landing-pages.md | 3 + .../docs/docs/getting-started/first-steps.md | 18 + mkdocs/docs/docs/getting-started/index.md | 7 + .../docs/docs/getting-started/installation.md | 13 +- mkdocs/docs/overrides/lander.html | 64 ++ mkdocs/docs/test-page.md | 9 +- mkdocs/docs/test.md | 7 +- .../assets/images/screenshots/admin/areas.png | Bin 0 -> 79463 bytes .../images/screenshots/admin/campaigns.png | Bin 0 -> 74510 bytes .../images/screenshots/admin/canvassing.png | Bin 0 -> 74957 bytes .../images/screenshots/admin/dashboard.png | Bin 0 -> 445692 bytes .../images/screenshots/admin/data-quality.png | Bin 0 -> 100390 bytes .../screenshots/admin/effectiveness.png | Bin 0 -> 89649 bytes .../images/screenshots/admin/email-queue.png | Bin 0 -> 67228 bytes .../screenshots/admin/email-templates.png | Bin 0 -> 171105 bytes .../screenshots/admin/landing-pages.png | Bin 0 -> 123607 bytes .../images/screenshots/admin/locations.png | Bin 0 -> 139074 bytes .../images/screenshots/admin/map-settings.png | Bin 0 -> 143883 bytes .../screenshots/admin/media-analytics.png | Bin 0 -> 83988 bytes .../screenshots/admin/media-curated.png | Bin 0 -> 74399 bytes .../screenshots/admin/media-library.png | Bin 0 -> 125205 bytes .../images/screenshots/admin/monitoring.png | Bin 0 -> 121960 bytes .../images/screenshots/admin/newsletter.png | Bin 0 -> 112406 bytes .../screenshots/admin/representatives.png | Bin 0 -> 87464 bytes .../images/screenshots/admin/responses.png | Bin 0 -> 75454 bytes .../images/screenshots/admin/settings.png | Bin 0 -> 83928 bytes .../images/screenshots/admin/shifts.png | Bin 0 -> 108512 bytes .../assets/images/screenshots/admin/sms.png | Bin 0 -> 88169 bytes .../images/screenshots/admin/tunnel.png | Bin 0 -> 73914 bytes .../assets/images/screenshots/admin/users.png | Bin 0 -> 93621 bytes .../screenshots/getting-started/campaigns.png | Bin 0 -> 74510 bytes .../screenshots/getting-started/dashboard.png | Bin 0 -> 183024 bytes .../screenshots/getting-started/locations.png | Bin 0 -> 139074 bytes .../screenshots/getting-started/login.png | Bin 0 -> 183023 bytes .../getting-started/settings-organization.png | Bin 0 -> 83928 bytes .../screenshots/getting-started/shifts.png | Bin 0 -> 114444 bytes .../screenshots/getting-started/users.png | Bin 0 -> 93747 bytes .../repo-data/anthropics-claude-code.json | 10 +- .../assets/repo-data/coder-code-server.json | 8 +- .../repo-data/gethomepage-homepage.json | 8 +- .../site/assets/repo-data/go-gitea-gitea.json | 8 +- .../site/assets/repo-data/knadh-listmonk.json | 10 +- .../site/assets/repo-data/lyqht-mini-qr.json | 4 +- mkdocs/site/assets/repo-data/n8n-io-n8n.json | 10 +- .../site/assets/repo-data/nocodb-nocodb.json | 10 +- .../site/assets/repo-data/ollama-ollama.json | 8 +- .../repo-data/squidfunk-mkdocs-material.json | 4 +- .../docs/admin/advocacy/campaigns/index.html | 1 + .../admin/advocacy/email-queue/index.html | 1 + .../admin/advocacy/representatives/index.html | 1 + .../docs/admin/advocacy/responses/index.html | 1 + .../broadcast/email-templates/index.html | 1 + .../admin/broadcast/newsletter/index.html | 1 + .../site/docs/admin/broadcast/sms/index.html | 1 + mkdocs/site/docs/admin/dashboard/index.html | 1 + mkdocs/site/docs/admin/map/areas/index.html | 1 + .../site/docs/admin/map/canvassing/index.html | 1 + .../docs/admin/map/data-quality/index.html | 1 + .../site/docs/admin/map/locations/index.html | 1 + .../site/docs/admin/map/settings/index.html | 1 + mkdocs/site/docs/admin/map/shifts/index.html | 1 + .../docs/admin/media/analytics/index.html | 1 + .../site/docs/admin/media/curated/index.html | 1 + .../site/docs/admin/media/library/index.html | 1 + .../site/docs/admin/people-access/index.html | 1 + .../docs/admin/services/monitoring/index.html | 1 + .../docs/admin/services/tunnel/index.html | 1 + mkdocs/site/docs/admin/settings/index.html | 1 + .../docs/admin/web/landing-pages/index.html | 1 + .../getting-started/first-steps/index.html | 6 + mkdocs/site/docs/getting-started/index.html | 9 +- .../getting-started/installation/index.html | 72 +- mkdocs/site/search/search_index.json | 2 +- mkdocs/site/sitemap.xml | 160 ++-- mkdocs/site/sitemap.xml.gz | Bin 759 -> 759 bytes 202 files changed, 4568 insertions(+), 226 deletions(-) create mode 100644 .playwright-mcp/console-2026-03-11T04-08-16-370Z.log create mode 100644 .playwright-mcp/console-2026-03-11T04-09-16-650Z.log create mode 100644 .playwright-mcp/console-2026-03-11T04-18-58-612Z.log create mode 100644 .playwright-mcp/console-2026-03-11T04-30-19-709Z.log create mode 100644 .playwright-mcp/console-2026-03-11T04-32-23-770Z.log create mode 100644 .playwright-mcp/console-2026-03-11T04-32-35-003Z.log create mode 100644 .playwright-mcp/console-2026-03-11T04-59-43-597Z.log create mode 100644 .playwright-mcp/console-2026-03-11T05-12-37-187Z.log create mode 100644 .playwright-mcp/console-2026-03-11T05-20-51-100Z.log create mode 100644 .playwright-mcp/console-2026-03-11T05-23-22-971Z.log create mode 100644 .playwright-mcp/console-2026-03-11T19-11-45-992Z.log create mode 100644 .playwright-mcp/console-2026-03-11T21-01-17-074Z.log create mode 100644 .playwright-mcp/console-2026-03-11T21-02-52-102Z.log create mode 100644 .playwright-mcp/console-2026-03-11T21-37-02-291Z.log create mode 100644 .playwright-mcp/console-2026-03-11T21-38-54-104Z.log create mode 100644 .playwright-mcp/console-2026-03-11T21-41-12-923Z.log create mode 100644 .playwright-mcp/console-2026-03-11T21-45-32-431Z.log create mode 100644 .playwright-mcp/console-2026-03-12T04-52-24-612Z.log create mode 100644 .playwright-mcp/console-2026-03-12T04-53-50-505Z.log create mode 100644 .playwright-mcp/console-2026-03-12T05-00-21-925Z.log create mode 100644 .playwright-mcp/console-2026-03-12T13-15-19-805Z.log create mode 100644 .playwright-mcp/console-2026-03-12T13-20-20-354Z.log create mode 100644 .playwright-mcp/console-2026-03-13T00-33-00-576Z.log create mode 100644 .playwright-mcp/console-2026-03-13T00-35-31-307Z.log create mode 100644 .playwright-mcp/page-2026-03-11T05-31-06-498Z.png create mode 100644 admin/src/components/dashboard/MyActionItemsCard.tsx create mode 100644 admin/src/pages/ActionItemsPage.tsx create mode 100644 admin/src/pages/MeetingAgendaPage.tsx create mode 100644 api/prisma/migrations/20260311100000_add_poll_auto_finalize/migration.sql create mode 100644 api/prisma/migrations/20260312100000_add_organizing_pipeline/migration.sql create mode 100644 api/src/modules/meetings/action-items.routes.ts create mode 100644 api/src/modules/meetings/action-items.schemas.ts create mode 100644 api/src/modules/meetings/action-items.service.ts create mode 100644 api/src/modules/meetings/agenda.routes.ts create mode 100644 api/src/modules/meetings/agenda.schemas.ts create mode 100644 api/src/modules/meetings/agenda.service.ts create mode 100644 api/src/modules/people/participant-needs.routes.ts create mode 100644 api/src/modules/people/participant-needs.schemas.ts create mode 100644 api/src/modules/people/participant-needs.service.ts create mode 100644 api/src/services/poll-auto-finalize-queue.service.ts create mode 100644 mkdocs/docs/assets/images/screenshots/admin/areas.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/campaigns.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/canvassing.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/dashboard.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/data-quality.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/effectiveness.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/email-queue.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/email-templates.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/landing-pages.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/locations.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/map-settings.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/media-analytics.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/media-curated.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/media-library.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/monitoring.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/newsletter.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/representatives.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/responses.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/settings.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/shifts.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/sms.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/tunnel.png create mode 100644 mkdocs/docs/assets/images/screenshots/admin/users.png create mode 100644 mkdocs/docs/assets/images/screenshots/getting-started/campaigns.png create mode 100644 mkdocs/docs/assets/images/screenshots/getting-started/dashboard.png create mode 100644 mkdocs/docs/assets/images/screenshots/getting-started/locations.png create mode 100644 mkdocs/docs/assets/images/screenshots/getting-started/login.png create mode 100644 mkdocs/docs/assets/images/screenshots/getting-started/settings-organization.png create mode 100644 mkdocs/docs/assets/images/screenshots/getting-started/shifts.png create mode 100644 mkdocs/docs/assets/images/screenshots/getting-started/users.png create mode 100644 mkdocs/docs/assets/images/screenshots/public/campaigns.png create mode 100644 mkdocs/docs/assets/images/screenshots/public/gallery.png create mode 100644 mkdocs/docs/assets/images/screenshots/public/home.png create mode 100644 mkdocs/docs/assets/images/screenshots/public/map.png create mode 100644 mkdocs/docs/assets/images/screenshots/public/pricing.png create mode 100644 mkdocs/docs/assets/images/screenshots/public/shifts.png create mode 100644 mkdocs/docs/assets/images/screenshots/public/shop.png create mode 100644 mkdocs/docs/assets/images/screenshots/public/wall-of-fame.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/areas.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/campaigns.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/canvassing.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/dashboard.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/data-quality.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/effectiveness.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/email-queue.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/email-templates.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/landing-pages.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/locations.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/map-settings.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/media-analytics.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/media-curated.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/media-library.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/monitoring.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/newsletter.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/representatives.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/responses.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/settings.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/shifts.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/sms.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/tunnel.png create mode 100644 mkdocs/site/assets/images/screenshots/admin/users.png create mode 100644 mkdocs/site/assets/images/screenshots/getting-started/campaigns.png create mode 100644 mkdocs/site/assets/images/screenshots/getting-started/dashboard.png create mode 100644 mkdocs/site/assets/images/screenshots/getting-started/locations.png create mode 100644 mkdocs/site/assets/images/screenshots/getting-started/login.png create mode 100644 mkdocs/site/assets/images/screenshots/getting-started/settings-organization.png create mode 100644 mkdocs/site/assets/images/screenshots/getting-started/shifts.png create mode 100644 mkdocs/site/assets/images/screenshots/getting-started/users.png diff --git a/.gitignore b/.gitignore index d73a50c9..f9ed10ba 100644 --- a/.gitignore +++ b/.gitignore @@ -47,6 +47,10 @@ docker-compose.override.yml # Build output /admin/dist/ +# Core dumps +core.* +*/core.* + # MkDocs core binary /mkdocs/core diff --git a/.playwright-mcp/console-2026-03-11T04-08-16-370Z.log b/.playwright-mcp/console-2026-03-11T04-08-16-370Z.log new file mode 100644 index 00000000..ca1af6e1 --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T04-08-16-370Z.log @@ -0,0 +1,2 @@ +[ 288ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/:2287 +[ 288ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T04-09-16-650Z.log b/.playwright-mcp/console-2026-03-11T04-09-16-650Z.log new file mode 100644 index 00000000..a64cf68a --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T04-09-16-650Z.log @@ -0,0 +1,6 @@ +[ 92ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/:0 +[ 92ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 496039ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/:0 +[ 496039ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 498038ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/:0 +[ 498038ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T04-18-58-612Z.log b/.playwright-mcp/console-2026-03-11T04-18-58-612Z.log new file mode 100644 index 00000000..7ddb99e0 --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T04-18-58-612Z.log @@ -0,0 +1,26 @@ +[ 121ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/:885 +[ 121ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 497669ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/#use-the-platform:2201 +[ 497669ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 499981ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/#use-the-platform:2302 +[ 499981ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 503949ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/#use-the-platform:0 +[ 503949ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 506409ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/#use-the-platform:2302 +[ 506409ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 510957ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/#use-the-platform:2302 +[ 510957ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 523501ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/#use-the-platform:2304 +[ 523501ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 534339ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/#use-the-platform:891 +[ 534339ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 536931ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/#use-the-platform:0 +[ 536931ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 543415ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/#use-the-platform:2312 +[ 543415ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 545948ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/#use-the-platform:2209 +[ 545948ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 552080ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/#use-the-platform:0 +[ 552080ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 554689ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/#use-the-platform:2313 +[ 554689ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T04-30-19-709Z.log b/.playwright-mcp/console-2026-03-11T04-30-19-709Z.log new file mode 100644 index 00000000..6e8d9a2a --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T04-30-19-709Z.log @@ -0,0 +1,2 @@ +[ 101ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/:2313 +[ 101ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T04-32-23-770Z.log b/.playwright-mcp/console-2026-03-11T04-32-23-770Z.log new file mode 100644 index 00000000..0def7b62 --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T04-32-23-770Z.log @@ -0,0 +1 @@ +[ 287ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:4004/favicon.ico:0 diff --git a/.playwright-mcp/console-2026-03-11T04-32-35-003Z.log b/.playwright-mcp/console-2026-03-11T04-32-35-003Z.log new file mode 100644 index 00000000..f7c13818 --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T04-32-35-003Z.log @@ -0,0 +1,2 @@ +[ 118ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/:2272 +[ 118ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T04-59-43-597Z.log b/.playwright-mcp/console-2026-03-11T04-59-43-597Z.log new file mode 100644 index 00000000..d29adff8 --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T04-59-43-597Z.log @@ -0,0 +1,2 @@ +[ 49ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/:2101 +[ 49ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T05-12-37-187Z.log b/.playwright-mcp/console-2026-03-11T05-12-37-187Z.log new file mode 100644 index 00000000..6beb9b03 --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T05-12-37-187Z.log @@ -0,0 +1,2 @@ +[ 52ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/getting-started/:2582 +[ 52ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T05-20-51-100Z.log b/.playwright-mcp/console-2026-03-11T05-20-51-100Z.log new file mode 100644 index 00000000..fb10505b --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T05-20-51-100Z.log @@ -0,0 +1,2 @@ +[ 59ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/:2313 +[ 59ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T05-23-22-971Z.log b/.playwright-mcp/console-2026-03-11T05-23-22-971Z.log new file mode 100644 index 00000000..340f3357 --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T05-23-22-971Z.log @@ -0,0 +1,2 @@ +[ 40ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/:2226 +[ 40ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T19-11-45-992Z.log b/.playwright-mcp/console-2026-03-11T19-11-45-992Z.log new file mode 100644 index 00000000..4063d5ed --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T19-11-45-992Z.log @@ -0,0 +1,6 @@ +[ 269ms] ReferenceError: Missing element: expected "[data-md-component=header]" to be present + at j (http://localhost:4000/assets/javascripts/bundle.79ae519e.min.js:14:35799) + at Ce (http://localhost:4000/assets/javascripts/bundle.79ae519e.min.js:14:42721) + at http://localhost:4000/assets/javascripts/bundle.79ae519e.min.js:14:94068 + at http://localhost:4000/assets/javascripts/bundle.79ae519e.min.js:14:95391 +[ 418ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:4000/favicon.ico:0 diff --git a/.playwright-mcp/console-2026-03-11T21-01-17-074Z.log b/.playwright-mcp/console-2026-03-11T21-01-17-074Z.log new file mode 100644 index 00000000..4a264c09 --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T21-01-17-074Z.log @@ -0,0 +1,2 @@ +[ 339ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/:511 +[ 339ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T21-02-52-102Z.log b/.playwright-mcp/console-2026-03-11T21-02-52-102Z.log new file mode 100644 index 00000000..a8312120 --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T21-02-52-102Z.log @@ -0,0 +1,2 @@ +[ 36ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/:2212 +[ 36ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T21-37-02-291Z.log b/.playwright-mcp/console-2026-03-11T21-37-02-291Z.log new file mode 100644 index 00000000..5193407b --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T21-37-02-291Z.log @@ -0,0 +1,2 @@ +[ 64ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/:2315 +[ 64ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T21-38-54-104Z.log b/.playwright-mcp/console-2026-03-11T21-38-54-104Z.log new file mode 100644 index 00000000..d52e12db --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T21-38-54-104Z.log @@ -0,0 +1,2 @@ +[ 189ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/:511 +[ 189ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T21-41-12-923Z.log b/.playwright-mcp/console-2026-03-11T21-41-12-923Z.log new file mode 100644 index 00000000..8e457cdc --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T21-41-12-923Z.log @@ -0,0 +1,2 @@ +[ 150ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/:2315 +[ 151ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-11T21-45-32-431Z.log b/.playwright-mcp/console-2026-03-11T21-45-32-431Z.log new file mode 100644 index 00000000..0dca5648 --- /dev/null +++ b/.playwright-mcp/console-2026-03-11T21-45-32-431Z.log @@ -0,0 +1,14 @@ +[ 64ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/:893 +[ 65ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 926012ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/?_=1773266458361:933 +[ 926012ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 1794181ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/?_=1773267326487:2359 +[ 1794181ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 1857070ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/?v=1773267389387:2391 +[ 1857070ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 2018066ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/?r=1773267550383:2406 +[ 2018066ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 2115925ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/?final=1773267648297:571 +[ 2115925ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 +[ 2810593ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4004' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4004/docs/?ff=1773268342997:961 +[ 2810593ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-12T04-52-24-612Z.log b/.playwright-mcp/console-2026-03-12T04-52-24-612Z.log new file mode 100644 index 00000000..c0ebab24 --- /dev/null +++ b/.playwright-mcp/console-2026-03-12T04-52-24-612Z.log @@ -0,0 +1,21 @@ +[ 1411ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:3002/favicon.ico:0 +[ 11195ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/dashboard/connectivity:0 +[ 11196ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/services/status:0 +[ 11197ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/dashboard/weather:0 +[ 11197ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/docs-analytics/summary?days=30:0 +[ 11198ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/dashboard/chat-summary:0 +[ 11199ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/dashboard/rocketchat-stats:0 +[ 11199ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/dashboard/upcoming-shifts:0 +[ 11200ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/jitsi/meetings:0 +[ 11201ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/influence/effectiveness/overview:0 +[ 11201ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/dashboard/top-videos:0 +[ 11203ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/dashboard/recent-signups:0 +[ 11204ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/dashboard/recent-comments:0 +[ 11205ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/listmonk/stats:0 +[ 11206ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/dashboard/listmonk-campaigns:0 +[ 11206ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/listmonk:0 +[ 11207ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/observability/alerts:0 +[ 11208ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/payments/admin/dashboard:0 +[ 11209ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/dashboard/gitea-activity:0 +[ 11209ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/dashboard/vaultwarden-adoption:0 +[ 11210ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/map/canvass/analytics/cuts:0 diff --git a/.playwright-mcp/console-2026-03-12T04-53-50-505Z.log b/.playwright-mcp/console-2026-03-12T04-53-50-505Z.log new file mode 100644 index 00000000..16933e53 --- /dev/null +++ b/.playwright-mcp/console-2026-03-12T04-53-50-505Z.log @@ -0,0 +1,8 @@ +[ 788ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/auth/me:0 +[ 789ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/settings:0 +[ 791ms] [ERROR] Unexpected auth error: AxiosError: Request failed with status code 500 + at settle (http://localhost:3002/node_modules/.vite/deps/axios.js?v=c83de56d:1281:12) + at XMLHttpRequest.onloadend (http://localhost:3002/node_modules/.vite/deps/axios.js?v=c83de56d:1638:7) + at Axios.request (http://localhost:3002/node_modules/.vite/deps/axios.js?v=c83de56d:2255:41) + at async Object.fetchMe (http://localhost:3002/src/stores/auth.store.ts:101:28) + at async hydrate (http://localhost:3002/src/stores/auth.store.ts:118:11) @ http://localhost:3002/src/stores/auth.store.ts:105 diff --git a/.playwright-mcp/console-2026-03-12T05-00-21-925Z.log b/.playwright-mcp/console-2026-03-12T05-00-21-925Z.log new file mode 100644 index 00000000..c2cc65eb --- /dev/null +++ b/.playwright-mcp/console-2026-03-12T05-00-21-925Z.log @@ -0,0 +1,30 @@ +[ 960624ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 1920622ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 2880624ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 3840624ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 4800623ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 5760623ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 6720616ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 7680622ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 8640625ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 9600615ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[10560615ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[11520625ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[12480623ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[13440615ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[14400616ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[15360616ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[16320615ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[17280618ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[18240616ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[19200622ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[20160621ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[21120618ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[22080623ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[23040622ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[24000616ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[24960616ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[25920615ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[26880613ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[27840614ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[28800615ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 diff --git a/.playwright-mcp/console-2026-03-12T13-15-19-805Z.log b/.playwright-mcp/console-2026-03-12T13-15-19-805Z.log new file mode 100644 index 00000000..a0a05f8f --- /dev/null +++ b/.playwright-mcp/console-2026-03-12T13-15-19-805Z.log @@ -0,0 +1,2 @@ +[ 92ms] [ERROR] Access to resource at 'http://localhost:4002/api/docs-analytics/track' from origin 'http://localhost:4003' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. @ http://localhost:4003/docs/admin/dashboard/:1574 +[ 92ms] [ERROR] Failed to load resource: net::ERR_FAILED @ http://localhost:4002/api/docs-analytics/track:0 diff --git a/.playwright-mcp/console-2026-03-12T13-20-20-354Z.log b/.playwright-mcp/console-2026-03-12T13-20-20-354Z.log new file mode 100644 index 00000000..31622ffa --- /dev/null +++ b/.playwright-mcp/console-2026-03-12T13-20-20-354Z.log @@ -0,0 +1,44 @@ +[ 1044ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:3002/favicon.ico:0 +[ 1045ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/auth/me:0 +[ 957294ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 1915502ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 2875494ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 3835503ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 4795505ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 5755494ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 6715495ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 7675495ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 8635495ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[ 9595539ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[10555496ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[11515504ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[12475494ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[13435504ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[14395501ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[15355503ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[16315505ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[17275496ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[18235494ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[19195496ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[20155502ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[21115501ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[22075494ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[23035502ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[23995496ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[24955494ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[25915495ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[26875500ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[27835504ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[28795505ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[29755503ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[30715505ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[31675500ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[32635503ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[33595504ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[34555501ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[35515495ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[36475494ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[37435493ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[38395495ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[39355494ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 +[40315488ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/dashboard/summary:0 diff --git a/.playwright-mcp/console-2026-03-13T00-33-00-576Z.log b/.playwright-mcp/console-2026-03-13T00-33-00-576Z.log new file mode 100644 index 00000000..45d513d0 --- /dev/null +++ b/.playwright-mcp/console-2026-03-13T00-33-00-576Z.log @@ -0,0 +1 @@ +[ 915ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:3002/favicon.ico:0 diff --git a/.playwright-mcp/console-2026-03-13T00-35-31-307Z.log b/.playwright-mcp/console-2026-03-13T00-35-31-307Z.log new file mode 100644 index 00000000..d1517748 --- /dev/null +++ b/.playwright-mcp/console-2026-03-13T00-35-31-307Z.log @@ -0,0 +1,194 @@ +[ 719376ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://localhost:3002/api/auth/me:0 +[ 949197ms] [ERROR] ReferenceError: MeetingAgendaPage is not defined + at App (http://localhost:3002/src/App.tsx?t=1773363079750:663:127) + at renderWithHooks (http://localhost:3002/node_modules/.vite/deps/chunk-2NI7C5SJ.js?v=c83de56d:3520:25) + at updateFunctionComponent (http://localhost:3002/node_modules/.vite/deps/chunk-2NI7C5SJ.js?v=c83de56d:5151:19) + at beginWork (http://localhost:3002/node_modules/.vite/deps/chunk-2NI7C5SJ.js?v=c83de56d:5762:18) + at performUnitOfWork (http://localhost:3002/node_modules/.vite/deps/chunk-2NI7C5SJ.js?v=c83de56d:8567:18) + at workLoopSync (http://localhost:3002/node_modules/.vite/deps/chunk-2NI7C5SJ.js?v=c83de56d:8465:41) + at renderRootSync (http://localhost:3002/node_modules/.vite/deps/chunk-2NI7C5SJ.js?v=c83de56d:8449:11) + at performWorkOnRoot (http://localhost:3002/node_modules/.vite/deps/chunk-2NI7C5SJ.js?v=c83de56d:8124:44) + at performSyncWorkOnRoot (http://localhost:3002/node_modules/.vite/deps/chunk-2NI7C5SJ.js?v=c83de56d:9134:7) + at flushSyncWorkAcrossRoots_impl (http://localhost:3002/node_modules/.vite/deps/chunk-2NI7C5SJ.js?v=c83de56d:9042:153) @ http://localhost:3002/node_modules/.vite/deps/chunk-2NI7C5SJ.js?v=c83de56d:4778 +[ 953711ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/src/App.tsx?t=1773363084913:0 +[ 1676461ms] [ERROR] WebSocket connection to 'ws://localhost:3002/' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET @ http://localhost:3002/@vite/client:1034 +[ 1677465ms] [ERROR] WebSocket connection to 'ws://localhost:3002/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3002/@vite/client:1034 +[ 1678466ms] [ERROR] WebSocket connection to 'ws://localhost:3002/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3002/@vite/client:1034 +[ 1679810ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/ListmonkPage.tsx:0 +[ 1679810ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/LandingPagesPage.tsx:0 +[ 1679815ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/DocsPage.tsx:0 +[ 1679815ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/MkDocsSettingsPage.tsx:0 +[ 1679815ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/CodeEditorPage.tsx:0 +[ 1679815ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/NocoDBPage.tsx:0 +[ 1679815ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/N8nPage.tsx:0 +[ 1679815ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/GiteaPage.tsx:0 +[ 1679815ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/MailHogPage.tsx:0 +[ 1679815ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/MiniQRPage.tsx:0 +[ 1679815ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/ExcalidrawPage.tsx:0 +[ 1679815ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/VaultwardenPage.tsx:0 +[ 1679815ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/RocketChatPage.tsx:0 +[ 1679815ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/GancioPage.tsx:0 +[ 1679816ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/JitsiMeetPage.tsx:0 +[ 1679816ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/SettingsPage.tsx:0 +[ 1679816ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/NavigationSettingsPage.tsx:0 +[ 1679816ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/PangolinPage.tsx:0 +[ 1679816ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/ObservabilityPage.tsx:0 +[ 1679816ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/DocsAnalyticsPage.tsx:0 +[ 1679816ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/DocsCommentsPage.tsx:0 +[ 1679816ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/payments/PaymentsDashboardPage.tsx:0 +[ 1679816ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/payments/SubscribersPage.tsx:0 +[ 1679816ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/payments/ProductsPage.tsx:0 +[ 1679816ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/payments/DonationsPage.tsx:0 +[ 1679818ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/payments/DonationPagesPage.tsx:0 +[ 1679818ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/payments/PlansPage.tsx:0 +[ 1679818ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/payments/PaymentSettingsPage.tsx:0 +[ 1679818ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/media/LibraryPage.tsx:0 +[ 1679818ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/media/AnalyticsDashboardPage.tsx:0 +[ 1679818ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/media/MediaJobsPage.tsx:0 +[ 1679818ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/media/CommentModerationPage.tsx:0 +[ 1679818ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/media/GalleryAdsPage.tsx:0 +[ 1679819ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/media/AdAnalyticsDashboardPage.tsx:0 +[ 1679819ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/influence/CampaignModerationPage.tsx:0 +[ 1679819ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/influence/CampaignEffectivenessPage.tsx:0 +[ 1679819ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/LandingPage.tsx:0 +[ 1679819ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PagesIndexPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/EventsPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/HomePage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/CampaignsListPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/CampaignPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/CreateCampaignPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MyCampaignsPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/ResponseWallPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MapPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/ShiftsPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MediaGalleryPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/ShortsPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MediaViewerPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PlaylistBrowsePage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PlaylistViewerPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/media/PlaylistManagementPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MyStatsPage.tsx:0 +[ 1679820ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MySettingsPage.tsx:0 +[ 1679821ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/VolunteerChatPage.tsx:0 +[ 1679821ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PricingPage.tsx:0 +[ 1679821ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/ShopPage.tsx:0 +[ 1679821ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/ProductDetailPage.tsx:0 +[ 1679821ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PlanDetailPage.tsx:0 +[ 1679821ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/DonatePage.tsx:0 +[ 1679821ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/DonationPagesListPage.tsx:0 +[ 1679821ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PaymentSuccessPage.tsx:0 +[ 1679824ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/MyActivityPage.tsx:0 +[ 1679824ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/VolunteerShiftsPage.tsx:0 +[ 1679824ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/MyRoutesPage.tsx:0 +[ 1679824ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/VolunteerMapPage.tsx:0 +[ 1679824ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/FriendsPage.tsx:0 +[ 1679824ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/SocialProfilePage.tsx:0 +[ 1679824ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/NotificationsPage.tsx:0 +[ 1679824ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/SocialFeedPage.tsx:0 +[ 1679824ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/DiscoverPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/GroupDetailPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/AchievementsPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/types/api.ts:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/utils/roles.ts:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/QuickJoinPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/VerifyEmailPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/ResetPasswordPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/sms/SmsDashboardPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/sms/SmsContactsPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/sms/SmsCampaignsPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/sms/SmsConversationsPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/sms/SmsTemplatesPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/sms/SmsSetupPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/PeoplePage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/ContactProfilePage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/social/SocialDashboardPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/social/SocialGraphPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/social/SocialModerationPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/social/ReferralAdminPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/social/SpotlightAdminPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/social/ChallengesAdminPage.tsx:0 +[ 1679825ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/influence/ImpactStoriesPage.tsx:0 +[ 1679826ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/ReferralsPage.tsx:0 +[ 1679826ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/ChallengesPage.tsx:0 +[ 1679826ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/ChallengeDetailPage.tsx:0 +[ 1679826ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/WallOfFamePage.tsx:0 +[ 1679827ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MeetingJoinPage.tsx:0 +[ 1679827ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/MeetingPlannerPage.tsx:0 +[ 1679827ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/MeetingAgendaPage.tsx:0 +[ 1679827ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/ActionItemsPage.tsx:0 +[ 1679827ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/SchedulingPollPage.tsx:0 +[ 1679827ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PollsListPage.tsx:0 +[ 1679827ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/JitsiAuthPage.tsx:0 +[ 1679827ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/SchedulingCalendarPage.tsx:0 +[ 1679827ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/AdminCalendarViewPage.tsx:0 +[ 1679827ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/events/TicketedEventsPage.tsx:0 +[ 1679828ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/events/EventDetailPage.tsx:0 +[ 1679828ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/events/CheckInScannerPage.tsx:0 +[ 1679828ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/TicketedEventDetailPage.tsx:0 +[ 1679828ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/TicketConfirmationPage.tsx:0 +[ 1679828ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/MyTicketsPage.tsx:0 +[ 1679828ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/MyCalendarPage.tsx:0 +[ 1679828ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/SharedCalendarsPage.tsx:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/SharedCalendarViewPage.tsx:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/FriendCalendarPage.tsx:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/NotFoundPage.tsx:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/command-palette/CommandPalette.tsx:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/lib/api.ts:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/VolunteerFooterNav.tsx:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/PublicNavBar.tsx:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/hooks/useSSE.ts:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/hooks/useLocalStorage.ts:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/lib/service-url.ts:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/lib/nav-defaults.ts:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/stores/command-palette.store.ts:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/stores/favorites.store.ts:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/utils/menu-items.ts:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/chat/RocketChatWidget.tsx:0 +[ 1679829ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/MediaSidebar.tsx:0 +[ 1679830ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/MediaBottomNav.tsx:0 +[ 1679830ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/ChatNotificationToast.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/chatbar/ChatBarContext.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/chatbar/ChatBar.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/hooks/useChatNotifications.ts:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/utils/color.ts:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/AuthModal.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/public/NewsletterSignup.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/CampaignEmailsDrawer.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/canvass/ExportContactsModal.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/QrCodeModal.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/VideoPickerModal.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/SystemGauges.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/MiniDonutChart.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/RequestTrafficChart.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/LatencyBandsChart.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/ContainerPopover.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/ContainerMemoryChart.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/ActivityFeedCard.tsx:0 +[ 1679831ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/TodayEventsCard.tsx:0 +[ 1679832ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/ChatNotifierCard.tsx:0 +[ 1679832ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/TopVideosCard.tsx:0 +[ 1679832ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/RecentCommentsCard.tsx:0 +[ 1679832ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/DocsAnalyticsCard.tsx:0 +[ 1679832ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/UpcomingShiftsCard.tsx:0 +[ 1679832ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/MyActionItemsCard.tsx:0 +[ 1679832ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/CampaignEffectivenessCard.tsx:0 +[ 1679832ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/RecentSignupsCard.tsx:0 +[ 1679832ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/NewsletterStatsCard.tsx:0 +[ 1679832ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/DonationSummaryCard.tsx:0 +[ 1679833ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/SystemAlertsCard.tsx:0 +[ 1679833ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/GiteaActivityCard.tsx:0 +[ 1679833ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/VaultwardenAdoptionCard.tsx:0 +[ 1679833ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/UpcomingMeetingsCard.tsx:0 +[ 1679833ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/canvass/CutCampaignAnalyticsCard.tsx:0 +[ 1679833ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/email-templates/TestEmailModal.tsx:0 +[ 1679833ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/email-templates/VersionHistoryDrawer.tsx:0 +[ 1679833ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/email-templates/EmailTemplateEditor.tsx:0 +[ 1685249ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/settings:0 +[ 1685251ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/auth/me:0 +[ 1685252ms] [ERROR] Unexpected auth error: AxiosError: Request failed with status code 500 + at settle (http://localhost:3002/node_modules/.vite/deps/axios.js?v=c83de56d:1281:12) + at XMLHttpRequest.onloadend (http://localhost:3002/node_modules/.vite/deps/axios.js?v=c83de56d:1638:7) + at Axios.request (http://localhost:3002/node_modules/.vite/deps/axios.js?v=c83de56d:2255:41) + at async Object.fetchMe (http://localhost:3002/src/stores/auth.store.ts:101:28) + at async hydrate (http://localhost:3002/src/stores/auth.store.ts:118:11) @ http://localhost:3002/src/stores/auth.store.ts:105 +[ 1685344ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/payments/plans:0 diff --git a/.playwright-mcp/page-2026-03-11T05-31-06-498Z.png b/.playwright-mcp/page-2026-03-11T05-31-06-498Z.png new file mode 100644 index 0000000000000000000000000000000000000000..d4371accf90f1bfacf692457c4ffad1d78fee699 GIT binary patch literal 133260 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

EH?t}#_|)VM+p1djkkm*<_=n1%x}!~`Ju(m3 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 literal 0 HcmV?d00001 diff --git a/admin/src/App.tsx b/admin/src/App.tsx index 4b5e9482..4e789157 100644 --- a/admin/src/App.tsx +++ b/admin/src/App.tsx @@ -136,6 +136,8 @@ import ChallengeDetailPage from '@/pages/volunteer/ChallengeDetailPage'; import WallOfFamePage from '@/pages/public/WallOfFamePage'; import MeetingJoinPage from '@/pages/public/MeetingJoinPage'; import MeetingPlannerPage from '@/pages/MeetingPlannerPage'; +import MeetingAgendaPage from '@/pages/MeetingAgendaPage'; +import ActionItemsPage from '@/pages/ActionItemsPage'; import SchedulingPollPage from '@/pages/public/SchedulingPollPage'; import PollsListPage from '@/pages/public/PollsListPage'; import JitsiAuthPage from '@/pages/JitsiAuthPage'; @@ -803,6 +805,22 @@ export default function App() { } /> + + + + } + /> + + + + } + /> , label: 'Meeting Planner' }); + schedulingChildren.push({ key: '/app/meetings/agendas', icon: , label: 'Agendas' }); + schedulingChildren.push({ key: '/app/meetings/action-items', icon: , label: 'Action Items' }); } if (settings?.enableTicketedEvents) { schedulingChildren.push({ key: '/app/events', icon: , label: 'Events' }); diff --git a/admin/src/components/dashboard/MyActionItemsCard.tsx b/admin/src/components/dashboard/MyActionItemsCard.tsx new file mode 100644 index 00000000..d1cfdbd6 --- /dev/null +++ b/admin/src/components/dashboard/MyActionItemsCard.tsx @@ -0,0 +1,128 @@ +import { useState, useEffect, useCallback } from 'react'; +import { Card, Typography, Spin, Flex, Button, Tag, Tooltip } from 'antd'; +import { + OrderedListOutlined, + ReloadOutlined, + ExclamationCircleOutlined, +} from '@ant-design/icons'; +import { useNavigate } from 'react-router-dom'; +import dayjs from 'dayjs'; +import { api } from '@/lib/api'; +import type { ActionItem, ActionItemsListResponse } from '@/types/api'; +import { ACTION_ITEM_STATUS_COLORS, ACTION_ITEM_PRIORITY_COLORS } from '@/types/api'; + +const { Text } = Typography; + +function ActionItemRow({ item }: { item: ActionItem }) { + const navigate = useNavigate(); + const isOverdue = item.dueDate && item.status !== 'done' && dayjs(item.dueDate).isBefore(dayjs(), 'day'); + + return ( + navigate('/app/meetings/action-items')} + style={{ + padding: '5px 0', + borderBottom: '1px solid rgba(255,255,255,0.04)', + lineHeight: 1.4, + cursor: 'pointer', + }} + > + {isOverdue && } + + + {item.title} + + + + {item.status} + + {item.priority !== 'normal' && ( + + {item.priority} + + )} + {item.dueDate && ( + + {dayjs(item.dueDate).format('MMM D')} + + )} + + ); +} + +export default function MyActionItemsCard() { + const navigate = useNavigate(); + const [items, setItems] = useState([]); + const [total, setTotal] = useState(0); + const [loading, setLoading] = useState(true); + + const fetchItems = useCallback(async () => { + setLoading(true); + try { + const res = await api.get('/meetings/action-items/mine'); + setItems(res.data.actionItems.slice(0, 5)); + setTotal(res.data.pagination?.total ?? res.data.actionItems.length); + } catch { + // non-critical widget + } finally { + setLoading(false); + } + }, []); + + useEffect(() => { + fetchItems(); + const interval = setInterval(fetchItems, 5 * 60_000); + return () => clearInterval(interval); + }, [fetchItems]); + + const overdueCount = items.filter(i => i.dueDate && i.status !== 'done' && dayjs(i.dueDate).isBefore(dayjs(), 'day')).length; + + return ( + + + My Action Items + {overdueCount > 0 && ( + {overdueCount} overdue + )} + + } + size="small" + extra={ + + {total > 5 && ( + + )} + + ), + }, + { + title: 'Status', + dataIndex: 'status', + key: 'status', + width: 110, + render: (status: ActionItemStatus) => ( + {ACTION_ITEM_STATUS_LABELS[status]} + ), + }, + { + title: 'Priority', + dataIndex: 'priority', + key: 'priority', + width: 90, + render: (priority: ActionItemPriority) => ( + + {priority.charAt(0).toUpperCase() + priority.slice(1)} + + ), + }, + { + title: 'Assignee', + key: 'assignee', + width: 140, + render: (_, record) => ( + {record.assignee?.name || record.assignee?.email || '—'} + ), + responsive: ['md'], + }, + { + title: 'Due Date', + dataIndex: 'dueDate', + key: 'dueDate', + width: 120, + render: (date: string | null, record) => { + if (!date) return —; + const overdue = isOverdue(record); + return ( + + {dayjs(date).format('MMM D, YYYY')} + + ); + }, + }, + { + title: 'Meeting', + key: 'agenda', + width: 160, + render: (_, record) => ( + record.agenda ? ( + + {record.agenda.title} + + ) : ( + — + ) + ), + responsive: ['lg'], + }, + { + title: 'Actions', + key: 'actions', + width: 100, + render: (_, record) => ( + + + + + + + {/* Filters */} + + + } + value={search} + onChange={(e) => setSearch(e.target.value)} + allowClear + /> + + + searchUsers(v, setUserOptions, setUserSearchLoading)} + loading={userSearchLoading} + options={userOptions} + notFoundContent={userSearchLoading ? 'Searching...' : null} + /> + + + + + + + + + + setPagination((p) => ({ ...p, page })), + }} + size="small" + /> + + + {/* Create / Edit Drawer */} + { setDrawerOpen(false); setEditingItem(null); form.resetFields(); }} + width={isMobile ? '100%' : drawerWidth} + mask={false} + destroyOnHidden + rootStyle={{ position: 'absolute', top: 64, height: 'calc(100vh - 64px)' }} + extra={ + + + + + } + > +
+ + + + + + + + + + {editingItem && ( + + + + )} + +
+ + ); +} diff --git a/admin/src/pages/DashboardPage.tsx b/admin/src/pages/DashboardPage.tsx index 54401acc..a9744061 100644 --- a/admin/src/pages/DashboardPage.tsx +++ b/admin/src/pages/DashboardPage.tsx @@ -61,6 +61,7 @@ import TopVideosCard from '@/components/dashboard/TopVideosCard'; import RecentCommentsCard from '@/components/dashboard/RecentCommentsCard'; import DocsAnalyticsCard from '@/components/dashboard/DocsAnalyticsCard'; import UpcomingShiftsCard from '@/components/dashboard/UpcomingShiftsCard'; +import MyActionItemsCard from '@/components/dashboard/MyActionItemsCard'; import CampaignEffectivenessCard from '@/components/dashboard/CampaignEffectivenessCard'; import RecentSignupsCard from '@/components/dashboard/RecentSignupsCard'; import NewsletterStatsCard from '@/components/dashboard/NewsletterStatsCard'; @@ -686,6 +687,11 @@ export default function DashboardPage() { )} + {settings?.enableMeetingPlanner && ( +
+ +
+ )} {showMeet && (
diff --git a/admin/src/pages/MeetingAgendaPage.tsx b/admin/src/pages/MeetingAgendaPage.tsx new file mode 100644 index 00000000..86db336e --- /dev/null +++ b/admin/src/pages/MeetingAgendaPage.tsx @@ -0,0 +1,817 @@ +import { useState, useEffect, useCallback } from 'react'; +import { + Table, + Button, + Input, + Select, + Tag, + Space, + Form, + Popconfirm, + message, + Typography, + Row, + Col, + Drawer, + Card, + Grid, + InputNumber, + Switch, + List, +} from 'antd'; +import { + PlusOutlined, + DeleteOutlined, + SearchOutlined, + FileTextOutlined, + EditOutlined, + ArrowUpOutlined, + ArrowDownOutlined, + CheckCircleOutlined, +} from '@ant-design/icons'; +import type { ColumnsType } from 'antd/es/table'; +import dayjs from 'dayjs'; +import { api } from '@/lib/api'; +import type { + MeetingAgenda, + ActionItem, + AgendasListResponse, + AgendaStatus, + ActionItemStatus, + AgendaItem, +} from '@/types/api'; +import { + ACTION_ITEM_STATUS_COLORS, + ACTION_ITEM_STATUS_LABELS, + ACTION_ITEM_PRIORITY_COLORS, +} from '@/types/api'; + +const { Text, Title } = Typography; +const { TextArea } = Input; + +const AGENDA_STATUS_COLORS: Record = { + draft: 'default', + active: 'blue', + completed: 'green', +}; + +const AGENDA_STATUS_LABELS: Record = { + draft: 'Draft', + active: 'Active', + completed: 'Completed', +}; + +export default function MeetingAgendaPage() { + const screens = Grid.useBreakpoint(); + const isMobile = !screens.md; + + // Main table state + const [agendas, setAgendas] = useState([]); + const [pagination, setPagination] = useState({ page: 1, limit: 20, total: 0 }); + const [loading, setLoading] = useState(false); + const [search, setSearch] = useState(''); + const [statusFilter, setStatusFilter] = useState(); + + // Create drawer + const [createOpen, setCreateOpen] = useState(false); + const [createForm] = Form.useForm(); + const [creating, setCreating] = useState(false); + + // Detail drawer + const [detailOpen, setDetailOpen] = useState(false); + const [selectedAgenda, setSelectedAgenda] = useState(null); + const [detailLoading, setDetailLoading] = useState(false); + + // Minutes editing state + const [minutesNotes, setMinutesNotes] = useState(''); + const [minutesDecisions, setMinutesDecisions] = useState>([]); + const [minutesAttendees, setMinutesAttendees] = useState>([]); + const [savingMinutes, setSavingMinutes] = useState(false); + const [approvingMinutes, setApprovingMinutes] = useState(false); + + // Agenda items editing in detail drawer + const [editingItems, setEditingItems] = useState([]); + const [savingItems, setSavingItems] = useState(false); + + // New decision / attendee inputs + const [newDecisionText, setNewDecisionText] = useState(''); + const [newAttendeeName, setNewAttendeeName] = useState(''); + + // Polls and shifts for selects + const [pollOptions, setPollOptions] = useState>([]); + const [shiftOptions, setShiftOptions] = useState>([]); + + const fetchAgendas = useCallback(async () => { + setLoading(true); + try { + const params: Record = { page: pagination.page, limit: pagination.limit }; + if (search) params.search = search; + if (statusFilter) params.status = statusFilter; + const { data } = await api.get('/meetings/agendas', { params }); + setAgendas(data.agendas); + setPagination((p) => ({ ...p, total: data.pagination.total })); + } catch { + message.error('Failed to load agendas'); + } finally { + setLoading(false); + } + }, [pagination.page, pagination.limit, search, statusFilter]); + + useEffect(() => { fetchAgendas(); }, [fetchAgendas]); + + // Fetch poll/shift options when create drawer opens + useEffect(() => { + if (!createOpen) return; + const fetchOptions = async () => { + try { + const [pollsRes, shiftsRes] = await Promise.all([ + api.get('/meeting-planner', { params: { limit: 100 } }).catch(() => ({ data: { polls: [] } })), + api.get('/map/shifts', { params: { limit: 100 } }).catch(() => ({ data: { shifts: [] } })), + ]); + setPollOptions( + (pollsRes.data.polls || []).map((p: any) => ({ value: p.id, label: p.title })) + ); + setShiftOptions( + (shiftsRes.data.shifts || []).map((s: any) => ({ + value: s.id, + label: `${s.title} - ${dayjs(s.date).format('MMM D')}`, + })) + ); + } catch { + // Silent — selects will just be empty + } + }; + fetchOptions(); + }, [createOpen]); + + const fetchAgendaDetail = async (id: string) => { + setDetailLoading(true); + try { + const { data } = await api.get(`/meetings/agendas/${id}`); + setSelectedAgenda(data); + setEditingItems(data.items || []); + // Populate minutes state + if (data.minutes) { + setMinutesNotes(data.minutes.notes || ''); + setMinutesDecisions(data.minutes.decisions || []); + setMinutesAttendees(data.minutes.attendees || []); + } else { + setMinutesNotes(''); + setMinutesDecisions([]); + setMinutesAttendees([]); + } + setDetailOpen(true); + } catch { + message.error('Failed to load agenda details'); + } finally { + setDetailLoading(false); + } + }; + + const handleCreate = async (values: any) => { + setCreating(true); + try { + await api.post('/meetings/agendas', { + title: values.title, + pollId: values.pollId || null, + shiftId: values.shiftId || null, + }); + message.success('Agenda created'); + setCreateOpen(false); + createForm.resetFields(); + fetchAgendas(); + } catch { + message.error('Failed to create agenda'); + } finally { + setCreating(false); + } + }; + + const handleDelete = async (id: string) => { + try { + await api.delete(`/meetings/agendas/${id}`); + message.success('Agenda deleted'); + fetchAgendas(); + } catch { + message.error('Failed to delete agenda'); + } + }; + + // Agenda items management + const handleMoveItem = (index: number, direction: 'up' | 'down') => { + const items = [...editingItems]; + const swapIndex = direction === 'up' ? index - 1 : index + 1; + if (swapIndex < 0 || swapIndex >= items.length) return; + [items[index], items[swapIndex]] = [items[swapIndex]!, items[index]!]; + // Recalculate order + items.forEach((item, i) => { item.order = i; }); + setEditingItems(items); + }; + + const handleAddItem = () => { + const newItem: AgendaItem = { + id: `temp-${Date.now()}`, + title: '', + durationMinutes: 5, + order: editingItems.length, + }; + setEditingItems([...editingItems, newItem]); + }; + + const handleRemoveItem = (index: number) => { + const items = editingItems.filter((_, i) => i !== index); + items.forEach((item, i) => { item.order = i; }); + setEditingItems(items); + }; + + const handleUpdateItem = (index: number, field: keyof AgendaItem, value: any) => { + const items = [...editingItems]; + (items[index] as any)[field] = value; + setEditingItems(items); + }; + + const handleSaveItems = async () => { + if (!selectedAgenda) return; + setSavingItems(true); + try { + const items = editingItems.map((item, i) => ({ + id: item.id.startsWith('temp-') ? undefined : item.id, + title: item.title, + durationMinutes: item.durationMinutes, + order: i, + })); + await api.put(`/meetings/agendas/${selectedAgenda.id}`, { items }); + message.success('Agenda items saved'); + fetchAgendaDetail(selectedAgenda.id); + fetchAgendas(); + } catch { + message.error('Failed to save agenda items'); + } finally { + setSavingItems(false); + } + }; + + // Minutes management + const handleSaveMinutes = async () => { + if (!selectedAgenda) return; + setSavingMinutes(true); + try { + const payload = { + notes: minutesNotes, + decisions: minutesDecisions, + attendees: minutesAttendees, + }; + if (selectedAgenda.minutes) { + await api.put(`/meetings/agendas/${selectedAgenda.id}/minutes`, payload); + } else { + await api.post(`/meetings/agendas/${selectedAgenda.id}/minutes`, payload); + } + message.success('Minutes saved'); + fetchAgendaDetail(selectedAgenda.id); + } catch { + message.error('Failed to save minutes'); + } finally { + setSavingMinutes(false); + } + }; + + const handleApproveMinutes = async () => { + if (!selectedAgenda) return; + setApprovingMinutes(true); + try { + await api.post(`/meetings/agendas/${selectedAgenda.id}/minutes/approve`); + message.success('Minutes approved'); + fetchAgendaDetail(selectedAgenda.id); + } catch { + message.error('Failed to approve minutes'); + } finally { + setApprovingMinutes(false); + } + }; + + // Action item inline status change + const handleActionItemStatusChange = async (actionItem: ActionItem, newStatus: ActionItemStatus) => { + try { + await api.put(`/meetings/agendas/${actionItem.agendaId}/action-items/${actionItem.id}`, { + status: newStatus, + }); + message.success('Action item updated'); + if (selectedAgenda) fetchAgendaDetail(selectedAgenda.id); + } catch { + message.error('Failed to update action item'); + } + }; + + // Add decision + const handleAddDecision = () => { + if (!newDecisionText.trim()) return; + setMinutesDecisions([ + ...minutesDecisions, + { id: `d-${Date.now()}`, text: newDecisionText.trim(), passed: false }, + ]); + setNewDecisionText(''); + }; + + const handleRemoveDecision = (index: number) => { + setMinutesDecisions(minutesDecisions.filter((_, i) => i !== index)); + }; + + const handleToggleDecisionPassed = (index: number) => { + const decisions = [...minutesDecisions]; + decisions[index] = { ...decisions[index]!, passed: !decisions[index]!.passed }; + setMinutesDecisions(decisions); + }; + + // Add attendee + const handleAddAttendee = () => { + if (!newAttendeeName.trim()) return; + setMinutesAttendees([...minutesAttendees, { name: newAttendeeName.trim() }]); + setNewAttendeeName(''); + }; + + const handleRemoveAttendee = (index: number) => { + setMinutesAttendees(minutesAttendees.filter((_, i) => i !== index)); + }; + + const getLinkedLabel = (record: MeetingAgenda) => { + if (record.pollId) return Poll; + if (record.shiftId) return Shift; + return None; + }; + + const columns: ColumnsType = [ + { + title: 'Title', + dataIndex: 'title', + key: 'title', + render: (title: string, record) => ( + + ), + }, + { + title: 'Status', + dataIndex: 'status', + key: 'status', + width: 110, + render: (status: AgendaStatus) => ( + {AGENDA_STATUS_LABELS[status]} + ), + }, + { + title: 'Linked To', + key: 'linked', + width: 100, + render: (_, record) => getLinkedLabel(record), + responsive: ['md'], + }, + { + title: 'Items', + key: 'items', + width: 70, + render: (_, record) => record.items?.length ?? 0, + }, + { + title: 'Created', + dataIndex: 'createdAt', + key: 'createdAt', + width: 120, + render: (date: string) => dayjs(date).format('MMM D, YYYY'), + responsive: ['md'], + }, + { + title: 'Actions', + key: 'actions', + width: 100, + render: (_, record) => ( + +
+
setPagination((p) => ({ ...p, page })), + }} + size="small" + /> + + + {/* Create Agenda Drawer */} + { setCreateOpen(false); createForm.resetFields(); }} + width={isMobile ? '100%' : 560} + mask={false} + destroyOnHidden + rootStyle={{ position: 'absolute', top: 64, height: 'calc(100vh - 64px)' }} + extra={ + + + + + } + > +
+ + + + + + + +
+ + {/* Detail Drawer */} + { setDetailOpen(false); setSelectedAgenda(null); }} + width={isMobile ? '100%' : 720} + loading={detailLoading} + mask={false} + destroyOnHidden + rootStyle={{ position: 'absolute', top: 64, height: 'calc(100vh - 64px)' }} + > + {selectedAgenda && ( + <> + {/* Metadata */} + + + + {AGENDA_STATUS_LABELS[selectedAgenda.status]} + + + {getLinkedLabel(selectedAgenda)} + + + Created {dayjs(selectedAgenda.createdAt).format('MMM D, YYYY')} + {selectedAgenda.createdBy?.name ? ` by ${selectedAgenda.createdBy.name}` : ''} + + + + + {/* Agenda Items */} + + + + + } + > + {editingItems.length === 0 ? ( + No agenda items yet. Click Add to get started. + ) : ( + editingItems.map((item, index) => ( + + + + + handleUpdateItem(index, 'title', e.target.value)} + size="small" + /> + + + handleUpdateItem(index, 'durationMinutes', val)} + size="small" + style={{ width: 70 }} + addonAfter="min" + /> + + + + {selectedAgenda.minutes && !selectedAgenda.minutes.approvedAt && ( + + + + )} + {selectedAgenda.minutes?.approvedAt && ( + }> + Approved {dayjs(selectedAgenda.minutes.approvedAt).format('MMM D')} + + )} + + } + > + {/* Notes */} + Notes +