feat(planka): add Planka kanban to docker-compose + wire UI
- docker-compose: add planka + planka-db services (port 1337, isolated volume) - apache.conf: add ProxyPass /board/ → localhost:1337 - .env.example: add PLANKA_SECRET_KEY + PLANKA_BASE_URL - Sidebar: rename Planner → Tasks, open /board in new tab via <a> - Router: remove /planner route - Delete PlannerView.vue, TaskList.vue, TaskCard.vue (Calendar keeps TaskForm) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
@ -7,7 +7,41 @@
|
|||
"Bash(CC_API_KEY=cc_YcRD4q8NqZanghwFA9z7b-ZgXf57vgBcKpjhlOM_Jd0 CC_SERVER=https://optical-dev.oliver.solutions/cc-dashboard CC_ROOT_PATH=/Volumes/SSD/Projects/Oliver python3 /Users/aimpress/.claude/cc-collector.py 2>&1)",
|
||||
"Bash(bash deploy.sh)",
|
||||
"Bash(rm -f ~/.claude/.cc-collector-state.json)",
|
||||
"Bash(CC_API_KEY=cc_YcRD4q8NqZanghwFA9z7b-ZgXf57vgBcKpjhlOM_Jd0 CC_SERVER=https://optical-dev.oliver.solutions/cc-dashboard CC_ROOT_PATH=/Volumes/SSD/Projects/Oliver CC_LOOKBACK=8760 python3 /Users/aimpress/.claude/cc-collector.py)"
|
||||
"Bash(CC_API_KEY=cc_YcRD4q8NqZanghwFA9z7b-ZgXf57vgBcKpjhlOM_Jd0 CC_SERVER=https://optical-dev.oliver.solutions/cc-dashboard CC_ROOT_PATH=/Volumes/SSD/Projects/Oliver CC_LOOKBACK=8760 python3 /Users/aimpress/.claude/cc-collector.py)",
|
||||
"Bash(git -C /Users/ai_leed/Documents/Projects/Oliver/cc-dashboard remote -v)",
|
||||
"Bash(git -C /Users/ai_leed/Documents/Projects/Oliver/cc-dashboard log --oneline main -5)",
|
||||
"Bash(git -C /Users/ai_leed/Documents/Projects/Oliver/cc-dashboard log --oneline main..feat/planning-hub)",
|
||||
"Bash(git checkout *)",
|
||||
"Bash(git merge --no-ff feat/planning-hub -m ' *)",
|
||||
"Bash(git -C /Users/ai_leed/Documents/Projects/Oliver/cc-dashboard add alembic/versions/0005_session_category.py)",
|
||||
"Bash(git -C /Users/ai_leed/Documents/Projects/Oliver/cc-dashboard commit -m ' *)",
|
||||
"Bash(git -C /Users/ai_leed/Documents/Projects/Oliver/cc-dashboard push origin main)",
|
||||
"Bash(git -C /Users/ai_leed/Documents/Projects/Oliver/cc-dashboard add src/main.py)",
|
||||
"Bash(git -C /Users/ai_leed/Documents/Projects/Oliver/cc-dashboard commit -m 'fix: remove add_logger_name from structlog — incompatible with PrintLoggerFactory *)",
|
||||
"mcp__playwright__browser_navigate",
|
||||
"Bash(ssh -f -N -L 18800:127.0.0.1:8800 optical-dev -o ExitOnForwardFailure=yes)",
|
||||
"Bash(npx -y @21st-dev/magic@latest --help)",
|
||||
"Bash(npm run *)",
|
||||
"mcp__magic__21st_magic_component_refiner",
|
||||
"mcp__magic__21st_magic_component_inspiration",
|
||||
"mcp__playwright__browser_take_screenshot",
|
||||
"mcp__playwright__browser_fill_form",
|
||||
"mcp__playwright__browser_click",
|
||||
"mcp__playwright__browser_snapshot",
|
||||
"Read(//Users/ai_leed/.claude/skills/**)",
|
||||
"Read(//Users/ai_leed/.claude/plugins/**)",
|
||||
"Bash(git -C /Users/ai_leed/Documents/Projects/Oliver/cc-dashboard/.claude/worktrees/agent-abaceb40848f4ed6e diff HEAD --stat)",
|
||||
"Bash(git -C /Users/ai_leed/Documents/Projects/Oliver/cc-dashboard add web/src/components/tasks/TaskForm.vue web/src/views/PlannerView.vue web/src/components/calendar/CalendarBlock.vue web/src/components/calendar/CalendarGrid.vue web/src/composables/useCalendarDnD.ts src/static/)",
|
||||
"Bash(git -C /Users/ai_leed/Documents/Projects/Oliver/cc-dashboard status --short)",
|
||||
"Bash(git *)",
|
||||
"mcp__playwright__browser_console_messages",
|
||||
"mcp__playwright__browser_network_request",
|
||||
"mcp__playwright__browser_evaluate",
|
||||
"Bash(obsidian vault=VadymSamoilenko *)",
|
||||
"Bash(obsidian vault=\"VadymSamoilenko\" read path=\"01 Projects/cc-dashboard/CC Dashboard.md\")",
|
||||
"Bash(obsidian vault=\"VadymSamoilenko\" search query=\"cc-dashboard\" limit=5)",
|
||||
"Bash(ssh -o ConnectTimeout=10 optical-dev \"echo ok\")",
|
||||
"Read(//Users/ai_leed/.ssh/**)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
.claude/worktrees/agent-aab0fb6a76e128c66
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 9d9e8e82d46674d0a59359a8b510cd4ad703ba76
|
||||
1
.claude/worktrees/agent-abaceb40848f4ed6e
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 2b4fd5dee8d496fc67e5dd8f6f6826cacad63d5e
|
||||
|
|
@ -37,3 +37,7 @@ REPORT_EMAIL=you@example.com
|
|||
DAILY_REPORT_HOUR=20
|
||||
WEEKLY_REPORT_DAY=6
|
||||
WEEKLY_REPORT_HOUR=21
|
||||
|
||||
# Planka kanban board (run: openssl rand -hex 64)
|
||||
PLANKA_SECRET_KEY=changeme-use-openssl-rand-hex-64
|
||||
PLANKA_BASE_URL=https://optical-dev.oliver.solutions/board
|
||||
|
|
|
|||
18
.playwright-mcp/page-2026-05-06T18-48-08-741Z.yml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e4]:
|
||||
- generic [ref=e5]:
|
||||
- img [ref=e7]
|
||||
- heading "CC Dashboard" [level=1] [ref=e9]
|
||||
- paragraph [ref=e10]: Corporate Planning Hub
|
||||
- generic [ref=e13]:
|
||||
- generic [ref=e14]:
|
||||
- text: Email
|
||||
- textbox "Email" [ref=e15]:
|
||||
- /placeholder: you@company.com
|
||||
- generic [ref=e16]:
|
||||
- text: Password
|
||||
- textbox "Password" [ref=e17]:
|
||||
- /placeholder: ••••••••
|
||||
- button "Sign in" [ref=e18] [cursor=pointer]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T18-48-22-296Z.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
21
.playwright-mcp/page-2026-05-06T18-48-35-489Z.yml
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e4]:
|
||||
- generic [ref=e5]:
|
||||
- img [ref=e7]
|
||||
- heading "CC Dashboard" [level=1] [ref=e9]
|
||||
- paragraph [ref=e10]: Corporate Planning Hub
|
||||
- generic [ref=e13]:
|
||||
- generic [ref=e19]: "[ { \"type\": \"model_attributes_type\", \"loc\": [ \"body\" ], \"msg\": \"Input should be a valid dictionary or object to extract fields from\", \"input\": \"username=vadymsamoilenko%40oliver.agency&password=Ukraine123%21\" } ]"
|
||||
- generic [ref=e14]:
|
||||
- text: Email
|
||||
- textbox "Email" [ref=e15]:
|
||||
- /placeholder: you@company.com
|
||||
- text: vadymsamoilenko@oliver.agency
|
||||
- generic [ref=e16]:
|
||||
- text: Password
|
||||
- textbox "Password" [ref=e17]:
|
||||
- /placeholder: ••••••••
|
||||
- text: Ukraine123!
|
||||
- button "Sign in" [ref=e18] [cursor=pointer]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T18-48-40-810Z.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
18
.playwright-mcp/page-2026-05-06T18-50-31-776Z.yml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e4]:
|
||||
- generic [ref=e5]:
|
||||
- img [ref=e7]
|
||||
- heading "CC Dashboard" [level=1] [ref=e9]
|
||||
- paragraph [ref=e10]: Corporate Planning Hub
|
||||
- generic [ref=e13]:
|
||||
- generic [ref=e14]:
|
||||
- text: Email
|
||||
- textbox "Email" [ref=e15]:
|
||||
- /placeholder: you@company.com
|
||||
- generic [ref=e16]:
|
||||
- text: Password
|
||||
- textbox "Password" [ref=e17]:
|
||||
- /placeholder: ••••••••
|
||||
- button "Sign in" [ref=e18] [cursor=pointer]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
166
.playwright-mcp/page-2026-05-06T18-50-39-446Z.yml
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e19]:
|
||||
- complementary [ref=e21]:
|
||||
- generic [ref=e23]:
|
||||
- img [ref=e25]
|
||||
- generic [ref=e27]:
|
||||
- paragraph [ref=e28]: CC Dashboard
|
||||
- paragraph [ref=e29]: Oliver Agency
|
||||
- navigation [ref=e30]:
|
||||
- link "Dashboard" [ref=e31] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e33]
|
||||
- generic [ref=e35]: Dashboard
|
||||
- link "Calendar" [ref=e36] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e37]
|
||||
- generic [ref=e39]: Calendar
|
||||
- link "Planner" [ref=e40] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e41]
|
||||
- generic [ref=e43]: Planner
|
||||
- link "Projects" [ref=e44] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e45]
|
||||
- generic [ref=e47]: Projects
|
||||
- link "Live Feed" [ref=e48] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e49]
|
||||
- generic [ref=e51]: Live Feed
|
||||
- link "Reports" [ref=e52] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e53]
|
||||
- generic [ref=e55]: Reports
|
||||
- link "Keys" [ref=e56] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e57]
|
||||
- generic [ref=e59]: Keys
|
||||
- link "Settings" [ref=e60] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e61]
|
||||
- generic [ref=e64]: Settings
|
||||
- link "Admin" [ref=e65] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e66]
|
||||
- generic [ref=e68]: Admin
|
||||
- generic [ref=e70]:
|
||||
- generic [ref=e71]: VA
|
||||
- generic [ref=e72]:
|
||||
- paragraph [ref=e73]: vadymsamoilenko
|
||||
- generic [ref=e76]: Online
|
||||
- generic [ref=e77]:
|
||||
- banner [ref=e78]:
|
||||
- heading "Dashboard" [level=1] [ref=e80]
|
||||
- button "Toggle dark mode" [ref=e81] [cursor=pointer]:
|
||||
- img [ref=e82]
|
||||
- generic [ref=e85]:
|
||||
- generic [ref=e86]: VA
|
||||
- generic [ref=e87]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e88] [cursor=pointer]:
|
||||
- img [ref=e89]
|
||||
- text: Sign out
|
||||
- main [ref=e91]:
|
||||
- generic [ref=e92]:
|
||||
- generic [ref=e93]:
|
||||
- heading "Overview" [level=2] [ref=e94]
|
||||
- generic [ref=e95]:
|
||||
- button "Today" [ref=e96] [cursor=pointer]
|
||||
- button "7 days" [ref=e97] [cursor=pointer]
|
||||
- button "30 days" [ref=e98] [cursor=pointer]
|
||||
- button "Custom" [ref=e99] [cursor=pointer]
|
||||
- generic [ref=e100]:
|
||||
- generic [ref=e103]:
|
||||
- generic [ref=e104]:
|
||||
- paragraph [ref=e105]: Total Hours
|
||||
- paragraph [ref=e107]: 103h 40m
|
||||
- img [ref=e109]
|
||||
- generic [ref=e114]:
|
||||
- generic [ref=e115]:
|
||||
- paragraph [ref=e116]: Working Days
|
||||
- paragraph [ref=e118]: "14"
|
||||
- img [ref=e120]
|
||||
- generic [ref=e125]:
|
||||
- generic [ref=e126]:
|
||||
- paragraph [ref=e127]: Projects
|
||||
- paragraph [ref=e129]: "22"
|
||||
- img [ref=e131]
|
||||
- generic [ref=e136]:
|
||||
- generic [ref=e137]:
|
||||
- paragraph [ref=e138]: Avg / Day
|
||||
- paragraph [ref=e140]: 7h 24m
|
||||
- img [ref=e142]
|
||||
- generic [ref=e147]:
|
||||
- generic [ref=e148]:
|
||||
- paragraph [ref=e149]: Top Project
|
||||
- paragraph [ref=e151]: Video Accessibility
|
||||
- img [ref=e153]
|
||||
- generic [ref=e158]:
|
||||
- generic [ref=e159]:
|
||||
- paragraph [ref=e160]: Commits
|
||||
- paragraph [ref=e162]: "286"
|
||||
- img [ref=e164]
|
||||
- generic [ref=e167]:
|
||||
- generic [ref=e168]:
|
||||
- heading "Hours by Day" [level=3] [ref=e170]
|
||||
- generic [ref=e172]:
|
||||
- 'generic "undefined: 39h 17m"'
|
||||
- 'generic "undefined: 162h 50m"'
|
||||
- 'generic "undefined: 87h 19m"'
|
||||
- 'generic "undefined: 23h 37m"'
|
||||
- generic [ref=e173]:
|
||||
- heading "Hours by Day of Week" [level=3] [ref=e175]
|
||||
- generic [ref=e177]:
|
||||
- generic [ref=e178]:
|
||||
- generic "47h 40m"
|
||||
- generic [ref=e179]: Mo
|
||||
- generic [ref=e180]:
|
||||
- generic "45h 33m"
|
||||
- generic [ref=e181]: Tu
|
||||
- generic [ref=e182]:
|
||||
- generic "65h 32m"
|
||||
- generic [ref=e183]: We
|
||||
- generic [ref=e184]:
|
||||
- generic "71h 55m"
|
||||
- generic [ref=e185]: Th
|
||||
- generic [ref=e186]:
|
||||
- generic "61h 25m"
|
||||
- generic [ref=e187]: Fr
|
||||
- generic [ref=e188]:
|
||||
- generic "10h 32m"
|
||||
- generic [ref=e189]: Sa
|
||||
- generic [ref=e190]:
|
||||
- generic "10h 28m"
|
||||
- generic [ref=e191]: Su
|
||||
- generic [ref=e192]:
|
||||
- heading "Tool Usage" [level=3] [ref=e195]
|
||||
- generic [ref=e196]:
|
||||
- heading "Projects" [level=3] [ref=e198]
|
||||
- generic [ref=e200]:
|
||||
- generic [ref=e202]:
|
||||
- generic [ref=e203]: Video Accessibility
|
||||
- generic [ref=e204]: 33h 51m
|
||||
- generic [ref=e208]:
|
||||
- generic [ref=e209]: General
|
||||
- generic [ref=e210]: 9h 22m
|
||||
- generic [ref=e214]:
|
||||
- generic [ref=e215]: Cinema Studio Pro Kling
|
||||
- generic [ref=e216]: 6h 59m
|
||||
- generic [ref=e220]:
|
||||
- generic [ref=e221]: Ai Cost Tracker
|
||||
- generic [ref=e222]: 5h 48m
|
||||
- generic [ref=e226]:
|
||||
- generic [ref=e227]: Sandbox Notebookllamalm Nextjs
|
||||
- generic [ref=e228]: 4h 37m
|
||||
- generic [ref=e232]:
|
||||
- generic [ref=e233]: Barclays Banner Builder
|
||||
- generic [ref=e234]: 4h 15m
|
||||
- generic [ref=e238]:
|
||||
- generic [ref=e239]: Ford Qc
|
||||
- generic [ref=e240]: 3h 19m
|
||||
- generic [ref=e244]:
|
||||
- generic [ref=e245]: 3M Portal
|
||||
- generic [ref=e246]: 2h 56m
|
||||
- button "Open AI Assistant" [ref=e249] [cursor=pointer]:
|
||||
- img [ref=e250]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T18-50-41-307Z.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
4
.playwright-mcp/page-2026-05-06T18-51-46-444Z.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
- generic [active]:
|
||||
- generic:
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T18-51-50-026Z.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
192
.playwright-mcp/page-2026-05-06T18-51-58-708Z.yml
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e19]:
|
||||
- complementary [ref=e21]:
|
||||
- generic [ref=e23]:
|
||||
- img [ref=e25]
|
||||
- generic [ref=e27]:
|
||||
- paragraph [ref=e28]: CC Dashboard
|
||||
- paragraph [ref=e29]: Oliver Agency
|
||||
- navigation [ref=e30]:
|
||||
- link "Dashboard" [ref=e31] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e33]
|
||||
- generic [ref=e35]: Dashboard
|
||||
- link "Calendar" [ref=e36] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e37]
|
||||
- generic [ref=e39]: Calendar
|
||||
- link "Planner" [ref=e40] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e41]
|
||||
- generic [ref=e43]: Planner
|
||||
- link "Projects" [ref=e44] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e45]
|
||||
- generic [ref=e47]: Projects
|
||||
- link "Live Feed" [ref=e48] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e49]
|
||||
- generic [ref=e51]: Live Feed
|
||||
- link "Reports" [ref=e52] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e53]
|
||||
- generic [ref=e55]: Reports
|
||||
- link "Keys" [ref=e56] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e57]
|
||||
- generic [ref=e59]: Keys
|
||||
- link "Settings" [ref=e60] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e61]
|
||||
- generic [ref=e64]: Settings
|
||||
- link "Admin" [ref=e65] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e66]
|
||||
- generic [ref=e68]: Admin
|
||||
- generic [ref=e70]:
|
||||
- generic [ref=e71]: VA
|
||||
- generic [ref=e72]:
|
||||
- paragraph [ref=e73]: vadymsamoilenko
|
||||
- generic [ref=e76]: Online
|
||||
- generic [ref=e77]:
|
||||
- banner [ref=e78]:
|
||||
- heading "Dashboard" [level=1] [ref=e80]
|
||||
- button "Toggle dark mode" [ref=e81] [cursor=pointer]:
|
||||
- img [ref=e82]
|
||||
- generic [ref=e85]:
|
||||
- generic [ref=e86]: VA
|
||||
- generic [ref=e87]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e88] [cursor=pointer]:
|
||||
- img [ref=e89]
|
||||
- text: Sign out
|
||||
- main [ref=e91]:
|
||||
- generic [ref=e92]:
|
||||
- generic [ref=e93]:
|
||||
- heading "Overview" [level=2] [ref=e94]
|
||||
- generic [ref=e95]:
|
||||
- button "Today" [ref=e96] [cursor=pointer]
|
||||
- button "7 days" [ref=e97] [cursor=pointer]
|
||||
- button "30 days" [ref=e98] [cursor=pointer]
|
||||
- button "Custom" [ref=e99] [cursor=pointer]
|
||||
- generic [ref=e100]:
|
||||
- generic [ref=e103]:
|
||||
- generic [ref=e104]:
|
||||
- paragraph [ref=e105]: Total Hours
|
||||
- paragraph [ref=e107]: 103h 40m
|
||||
- img [ref=e109]
|
||||
- generic [ref=e114]:
|
||||
- generic [ref=e115]:
|
||||
- paragraph [ref=e116]: Working Days
|
||||
- paragraph [ref=e118]: "14"
|
||||
- img [ref=e120]
|
||||
- generic [ref=e125]:
|
||||
- generic [ref=e126]:
|
||||
- paragraph [ref=e127]: Projects
|
||||
- paragraph [ref=e129]: "22"
|
||||
- img [ref=e131]
|
||||
- generic [ref=e136]:
|
||||
- generic [ref=e137]:
|
||||
- paragraph [ref=e138]: Avg / Day
|
||||
- paragraph [ref=e140]: 7h 24m
|
||||
- img [ref=e142]
|
||||
- generic [ref=e147]:
|
||||
- generic [ref=e148]:
|
||||
- paragraph [ref=e149]: Top Project
|
||||
- paragraph [ref=e151]: Video Accessibility
|
||||
- img [ref=e153]
|
||||
- generic [ref=e158]:
|
||||
- generic [ref=e159]:
|
||||
- paragraph [ref=e160]: Commits
|
||||
- paragraph [ref=e162]: "286"
|
||||
- img [ref=e164]
|
||||
- generic [ref=e167]:
|
||||
- generic [ref=e168]:
|
||||
- heading "Hours by Day" [level=3] [ref=e170]
|
||||
- generic [ref=e172]:
|
||||
- 'generic "undefined: 39h 17m"'
|
||||
- 'generic "undefined: 162h 50m"'
|
||||
- 'generic "undefined: 87h 19m"'
|
||||
- 'generic "undefined: 23h 37m"'
|
||||
- generic [ref=e173]:
|
||||
- heading "Hours by Day of Week" [level=3] [ref=e175]
|
||||
- generic [ref=e177]:
|
||||
- generic [ref=e178]:
|
||||
- generic "47h 40m"
|
||||
- generic [ref=e179]: Mo
|
||||
- generic [ref=e180]:
|
||||
- generic "45h 33m"
|
||||
- generic [ref=e181]: Tu
|
||||
- generic [ref=e182]:
|
||||
- generic "65h 32m"
|
||||
- generic [ref=e183]: We
|
||||
- generic [ref=e184]:
|
||||
- generic "71h 55m"
|
||||
- generic [ref=e185]: Th
|
||||
- generic [ref=e186]:
|
||||
- generic "61h 25m"
|
||||
- generic [ref=e187]: Fr
|
||||
- generic [ref=e188]:
|
||||
- generic "10h 32m"
|
||||
- generic [ref=e189]: Sa
|
||||
- generic [ref=e190]:
|
||||
- generic "10h 28m"
|
||||
- generic [ref=e191]: Su
|
||||
- generic [ref=e192]:
|
||||
- generic [ref=e193]:
|
||||
- heading "Tool Usage" [level=3] [ref=e195]
|
||||
- generic [ref=e197]:
|
||||
- generic [ref=e198]:
|
||||
- generic [ref=e199]: Bash
|
||||
- generic [ref=e202]: 0%
|
||||
- generic [ref=e203]:
|
||||
- generic [ref=e204]: Read
|
||||
- generic [ref=e207]: 0%
|
||||
- generic [ref=e208]:
|
||||
- generic [ref=e209]: Edit
|
||||
- generic [ref=e212]: 0%
|
||||
- generic [ref=e213]:
|
||||
- generic [ref=e214]: Write
|
||||
- generic [ref=e217]: 0%
|
||||
- generic [ref=e218]:
|
||||
- generic [ref=e219]: Agent
|
||||
- generic [ref=e222]: 0%
|
||||
- generic [ref=e223]:
|
||||
- generic [ref=e224]: ToolSearch
|
||||
- generic [ref=e227]: 0%
|
||||
- generic [ref=e228]:
|
||||
- generic [ref=e229]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e232]: 0%
|
||||
- generic [ref=e233]:
|
||||
- generic [ref=e234]: WebFetch
|
||||
- generic [ref=e237]: 0%
|
||||
- generic [ref=e238]:
|
||||
- heading "Projects" [level=3] [ref=e240]
|
||||
- generic [ref=e242]:
|
||||
- generic [ref=e244]:
|
||||
- generic [ref=e245]: Video Accessibility
|
||||
- generic [ref=e246]: 33h 51m
|
||||
- generic [ref=e250]:
|
||||
- generic [ref=e251]: General
|
||||
- generic [ref=e252]: 9h 22m
|
||||
- generic [ref=e256]:
|
||||
- generic [ref=e257]: Cinema Studio Pro Kling
|
||||
- generic [ref=e258]: 6h 59m
|
||||
- generic [ref=e262]:
|
||||
- generic [ref=e263]: Ai Cost Tracker
|
||||
- generic [ref=e264]: 5h 48m
|
||||
- generic [ref=e268]:
|
||||
- generic [ref=e269]: Sandbox Notebookllamalm Nextjs
|
||||
- generic [ref=e270]: 4h 37m
|
||||
- generic [ref=e274]:
|
||||
- generic [ref=e275]: Barclays Banner Builder
|
||||
- generic [ref=e276]: 4h 15m
|
||||
- generic [ref=e280]:
|
||||
- generic [ref=e281]: Ford Qc
|
||||
- generic [ref=e282]: 3h 19m
|
||||
- generic [ref=e286]:
|
||||
- generic [ref=e287]: 3M Portal
|
||||
- generic [ref=e288]: 2h 56m
|
||||
- button "Open AI Assistant" [ref=e291] [cursor=pointer]:
|
||||
- img [ref=e292]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T18-52-01-155Z.png
Normal file
|
After Width: | Height: | Size: 106 KiB |
18
.playwright-mcp/page-2026-05-06T20-22-29-037Z.yml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e4]:
|
||||
- generic [ref=e5]:
|
||||
- img [ref=e7]
|
||||
- heading "CC Dashboard" [level=1] [ref=e9]
|
||||
- paragraph [ref=e10]: Corporate Planning Hub
|
||||
- generic [ref=e13]:
|
||||
- generic [ref=e14]:
|
||||
- text: Email
|
||||
- textbox "Email" [ref=e15]:
|
||||
- /placeholder: you@company.com
|
||||
- generic [ref=e16]:
|
||||
- text: Password
|
||||
- textbox "Password" [ref=e17]:
|
||||
- /placeholder: ••••••••
|
||||
- button "Sign in" [ref=e18] [cursor=pointer]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
21
.playwright-mcp/page-2026-05-06T20-22-38-913Z.yml
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e4]:
|
||||
- generic [ref=e5]:
|
||||
- img [ref=e7]
|
||||
- heading "CC Dashboard" [level=1] [ref=e9]
|
||||
- paragraph [ref=e10]: Corporate Planning Hub
|
||||
- generic [ref=e13]:
|
||||
- generic [ref=e19]: Invalid credentials
|
||||
- generic [ref=e14]:
|
||||
- text: Email
|
||||
- textbox "Email" [ref=e15]:
|
||||
- /placeholder: you@company.com
|
||||
- text: vadymsamoilenko@oliver.agency
|
||||
- generic [ref=e16]:
|
||||
- text: Password
|
||||
- textbox "Password" [ref=e17]:
|
||||
- /placeholder: ••••••••
|
||||
- text: admin
|
||||
- button "Sign in" [ref=e18] [cursor=pointer]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
177
.playwright-mcp/page-2026-05-06T20-23-19-265Z.yml
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e20]:
|
||||
- complementary [ref=e22]:
|
||||
- generic [ref=e24]:
|
||||
- img [ref=e26]
|
||||
- generic [ref=e28]:
|
||||
- paragraph [ref=e29]: CC Dashboard
|
||||
- paragraph [ref=e30]: Oliver Agency
|
||||
- navigation [ref=e31]:
|
||||
- link "Dashboard" [ref=e32] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e34]
|
||||
- generic [ref=e36]: Dashboard
|
||||
- link "Calendar" [ref=e37] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e38]
|
||||
- generic [ref=e40]: Calendar
|
||||
- link "Planner" [ref=e41] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e42]
|
||||
- generic [ref=e44]: Planner
|
||||
- link "Projects" [ref=e45] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e46]
|
||||
- generic [ref=e48]: Projects
|
||||
- link "Live Feed" [ref=e49] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e50]
|
||||
- generic [ref=e52]: Live Feed
|
||||
- link "Reports" [ref=e53] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e54]
|
||||
- generic [ref=e56]: Reports
|
||||
- link "Keys" [ref=e57] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e58]
|
||||
- generic [ref=e60]: Keys
|
||||
- link "DevOps" [ref=e61] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/devops
|
||||
- img [ref=e62]
|
||||
- generic [ref=e64]: DevOps
|
||||
- link "Settings" [ref=e65] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e66]
|
||||
- generic [ref=e69]: Settings
|
||||
- link "Admin" [ref=e70] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e71]
|
||||
- generic [ref=e73]: Admin
|
||||
- generic [ref=e75]:
|
||||
- generic [ref=e76]: VA
|
||||
- generic [ref=e77]:
|
||||
- paragraph [ref=e78]: vadymsamoilenko
|
||||
- generic [ref=e81]: Online
|
||||
- generic [ref=e82]:
|
||||
- banner [ref=e83]:
|
||||
- heading "Dashboard" [level=1] [ref=e85]
|
||||
- button "Toggle dark mode" [ref=e86] [cursor=pointer]:
|
||||
- img [ref=e87]
|
||||
- generic [ref=e90]:
|
||||
- generic [ref=e91]: VA
|
||||
- generic [ref=e92]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e93] [cursor=pointer]:
|
||||
- img [ref=e94]
|
||||
- text: Sign out
|
||||
- main [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- generic [ref=e98]:
|
||||
- heading "Overview" [level=2] [ref=e99]
|
||||
- generic [ref=e100]:
|
||||
- button "Today" [ref=e101] [cursor=pointer]
|
||||
- button "7 days" [ref=e102] [cursor=pointer]
|
||||
- button "30 days" [ref=e103] [cursor=pointer]
|
||||
- button "Custom" [ref=e104] [cursor=pointer]
|
||||
- generic [ref=e105]:
|
||||
- generic [ref=e108]:
|
||||
- generic [ref=e109]:
|
||||
- paragraph [ref=e110]: Total Hours
|
||||
- paragraph [ref=e112]: 9h 5m
|
||||
- img [ref=e114]
|
||||
- generic [ref=e119]:
|
||||
- generic [ref=e120]:
|
||||
- paragraph [ref=e121]: Working Days
|
||||
- paragraph [ref=e123]: "1"
|
||||
- img [ref=e125]
|
||||
- generic [ref=e130]:
|
||||
- generic [ref=e131]:
|
||||
- paragraph [ref=e132]: Projects
|
||||
- paragraph [ref=e134]: "3"
|
||||
- img [ref=e136]
|
||||
- generic [ref=e141]:
|
||||
- generic [ref=e142]:
|
||||
- paragraph [ref=e143]: Avg / Day
|
||||
- paragraph [ref=e145]: 9h 5m
|
||||
- img [ref=e147]
|
||||
- generic [ref=e152]:
|
||||
- generic [ref=e153]:
|
||||
- paragraph [ref=e154]: Top Project
|
||||
- paragraph [ref=e156]: Cc Dashboard
|
||||
- img [ref=e158]
|
||||
- generic [ref=e163]:
|
||||
- generic [ref=e164]:
|
||||
- paragraph [ref=e165]: Commits
|
||||
- paragraph [ref=e167]: "18"
|
||||
- img [ref=e169]
|
||||
- generic [ref=e172]:
|
||||
- generic [ref=e173]:
|
||||
- heading "Hours by Day" [level=3] [ref=e175]
|
||||
- 'generic "2026-05-06: 9h 5m" [ref=e178]'
|
||||
- generic [ref=e180]:
|
||||
- heading "By Day of Week" [level=3] [ref=e182]
|
||||
- generic [ref=e184]:
|
||||
- generic [ref=e185]:
|
||||
- 'generic "Mon: 0m"'
|
||||
- generic [ref=e186]: Mo
|
||||
- generic [ref=e187]:
|
||||
- 'generic "Tue: 0m"'
|
||||
- generic [ref=e188]: Tu
|
||||
- generic [ref=e189]:
|
||||
- 'generic "Wed: 9h 5m"'
|
||||
- generic [ref=e190]: We
|
||||
- generic [ref=e191]:
|
||||
- 'generic "Thu: 0m"'
|
||||
- generic [ref=e192]: Th
|
||||
- generic [ref=e193]:
|
||||
- 'generic "Fri: 0m"'
|
||||
- generic [ref=e194]: Fr
|
||||
- generic [ref=e195]:
|
||||
- 'generic "Sat: 0m"'
|
||||
- generic [ref=e196]: Sa
|
||||
- generic [ref=e197]:
|
||||
- 'generic "Sun: 0m"'
|
||||
- generic [ref=e198]: Su
|
||||
- generic [ref=e199]:
|
||||
- generic [ref=e200]:
|
||||
- heading "Tool Usage" [level=3] [ref=e202]
|
||||
- generic [ref=e204]:
|
||||
- generic [ref=e205]:
|
||||
- generic [ref=e206]: Bash
|
||||
- generic [ref=e208]: 0%
|
||||
- generic [ref=e209]:
|
||||
- generic [ref=e210]: Read
|
||||
- generic [ref=e212]: 0%
|
||||
- generic [ref=e213]:
|
||||
- generic [ref=e214]: Edit
|
||||
- generic [ref=e216]: 0%
|
||||
- generic [ref=e217]:
|
||||
- generic [ref=e218]: mcp__playwright__browser_click
|
||||
- generic [ref=e220]: 0%
|
||||
- generic [ref=e221]:
|
||||
- generic [ref=e222]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e224]: 0%
|
||||
- generic [ref=e225]:
|
||||
- generic [ref=e226]: Write
|
||||
- generic [ref=e228]: 0%
|
||||
- generic [ref=e229]:
|
||||
- generic [ref=e230]: Agent
|
||||
- generic [ref=e232]: 0%
|
||||
- generic [ref=e233]:
|
||||
- generic [ref=e234]: ToolSearch
|
||||
- generic [ref=e236]: 0%
|
||||
- generic [ref=e237]:
|
||||
- heading "Projects" [level=3] [ref=e239]
|
||||
- generic [ref=e241]:
|
||||
- generic [ref=e243]:
|
||||
- generic [ref=e244]: Cc Dashboard
|
||||
- generic [ref=e245]: 3h 24m
|
||||
- generic [ref=e247]:
|
||||
- generic [ref=e248]: Video Accessibility
|
||||
- generic [ref=e249]: 1h 22m
|
||||
- generic [ref=e251]:
|
||||
- generic [ref=e252]: Baic Dashboard
|
||||
- generic [ref=e253]: 31m
|
||||
- button "Open AI Assistant" [ref=e254] [cursor=pointer]:
|
||||
- img [ref=e255]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T20-23-21-339Z.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
200
.playwright-mcp/page-2026-05-06T20-23-35-053Z.yml
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e20]:
|
||||
- complementary [ref=e22]:
|
||||
- generic [ref=e24]:
|
||||
- img [ref=e26]
|
||||
- generic [ref=e28]:
|
||||
- paragraph [ref=e29]: CC Dashboard
|
||||
- paragraph [ref=e30]: Oliver Agency
|
||||
- navigation [ref=e31]:
|
||||
- link "Dashboard" [ref=e32] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e34]
|
||||
- generic [ref=e36]: Dashboard
|
||||
- link "Calendar" [ref=e37] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e38]
|
||||
- generic [ref=e40]: Calendar
|
||||
- link "Planner" [ref=e41] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e42]
|
||||
- generic [ref=e44]: Planner
|
||||
- link "Projects" [ref=e45] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e46]
|
||||
- generic [ref=e48]: Projects
|
||||
- link "Live Feed" [ref=e49] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e50]
|
||||
- generic [ref=e52]: Live Feed
|
||||
- link "Reports" [ref=e53] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e54]
|
||||
- generic [ref=e56]: Reports
|
||||
- link "Keys" [ref=e57] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e58]
|
||||
- generic [ref=e60]: Keys
|
||||
- link "DevOps" [ref=e61] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/devops
|
||||
- img [ref=e62]
|
||||
- generic [ref=e64]: DevOps
|
||||
- link "Settings" [ref=e65] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e66]
|
||||
- generic [ref=e69]: Settings
|
||||
- link "Admin" [ref=e70] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e71]
|
||||
- generic [ref=e73]: Admin
|
||||
- generic [ref=e75]:
|
||||
- generic [ref=e76]: VA
|
||||
- generic [ref=e77]:
|
||||
- paragraph [ref=e78]: vadymsamoilenko
|
||||
- generic [ref=e81]: Online
|
||||
- generic [ref=e82]:
|
||||
- banner [ref=e83]:
|
||||
- heading "Dashboard" [level=1] [ref=e85]
|
||||
- button "Toggle dark mode" [ref=e86] [cursor=pointer]:
|
||||
- img [ref=e87]
|
||||
- generic [ref=e90]:
|
||||
- generic [ref=e91]: VA
|
||||
- generic [ref=e92]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e93] [cursor=pointer]:
|
||||
- img [ref=e94]
|
||||
- text: Sign out
|
||||
- main [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- generic [ref=e98]:
|
||||
- heading "Overview" [level=2] [ref=e99]
|
||||
- generic [ref=e100]:
|
||||
- button "Today" [ref=e101] [cursor=pointer]
|
||||
- button "7 days" [active] [ref=e102] [cursor=pointer]
|
||||
- button "30 days" [ref=e103] [cursor=pointer]
|
||||
- button "Custom" [ref=e104] [cursor=pointer]
|
||||
- generic [ref=e105]:
|
||||
- generic [ref=e108]:
|
||||
- generic [ref=e109]:
|
||||
- paragraph [ref=e110]: Total Hours
|
||||
- paragraph [ref=e257]: 53h 1m
|
||||
- img [ref=e114]
|
||||
- generic [ref=e119]:
|
||||
- generic [ref=e120]:
|
||||
- paragraph [ref=e121]: Working Days
|
||||
- paragraph [ref=e258]: "5"
|
||||
- img [ref=e125]
|
||||
- generic [ref=e130]:
|
||||
- generic [ref=e131]:
|
||||
- paragraph [ref=e132]: Projects
|
||||
- paragraph [ref=e259]: "12"
|
||||
- img [ref=e136]
|
||||
- generic [ref=e141]:
|
||||
- generic [ref=e142]:
|
||||
- paragraph [ref=e143]: Avg / Day
|
||||
- paragraph [ref=e260]: 10h 36m
|
||||
- img [ref=e147]
|
||||
- generic [ref=e152]:
|
||||
- generic [ref=e153]:
|
||||
- paragraph [ref=e154]: Top Project
|
||||
- paragraph [ref=e261]: Video Accessibility
|
||||
- img [ref=e158]
|
||||
- generic [ref=e163]:
|
||||
- generic [ref=e164]:
|
||||
- paragraph [ref=e165]: Commits
|
||||
- paragraph [ref=e262]: "156"
|
||||
- img [ref=e169]
|
||||
- generic [ref=e172]:
|
||||
- generic [ref=e173]:
|
||||
- heading "Hours by Day" [level=3] [ref=e175]
|
||||
- generic [ref=e263]:
|
||||
- 'generic "2026-04-29: 14h 20m" [ref=e264]'
|
||||
- 'generic "2026-04-30: 13h 26m" [ref=e266]'
|
||||
- 'generic "2026-05-01: 10h 56m" [ref=e268]'
|
||||
- 'generic "2026-05-02: 0m" [ref=e270]'
|
||||
- 'generic "2026-05-03: 0m" [ref=e272]'
|
||||
- 'generic "2026-05-04: 0m" [ref=e274]'
|
||||
- 'generic "2026-05-05: 5h 13m" [ref=e276]'
|
||||
- 'generic "2026-05-06: 9h 5m" [ref=e278]'
|
||||
- generic [ref=e180]:
|
||||
- heading "By Day of Week" [level=3] [ref=e182]
|
||||
- generic [ref=e280]:
|
||||
- generic [ref=e281]:
|
||||
- 'generic "Mon: 0m"'
|
||||
- generic [ref=e282]: Mo
|
||||
- generic [ref=e283]:
|
||||
- 'generic "Tue: 5h 13m"'
|
||||
- generic [ref=e284]: Tu
|
||||
- generic [ref=e285]:
|
||||
- 'generic "Wed: 23h 26m"'
|
||||
- generic [ref=e286]: We
|
||||
- generic [ref=e287]:
|
||||
- 'generic "Thu: 13h 26m"'
|
||||
- generic [ref=e288]: Th
|
||||
- generic [ref=e289]:
|
||||
- 'generic "Fri: 10h 56m"'
|
||||
- generic [ref=e290]: Fr
|
||||
- generic [ref=e291]:
|
||||
- 'generic "Sat: 0m"'
|
||||
- generic [ref=e292]: Sa
|
||||
- generic [ref=e293]:
|
||||
- 'generic "Sun: 0m"'
|
||||
- generic [ref=e294]: Su
|
||||
- generic [ref=e199]:
|
||||
- generic [ref=e200]:
|
||||
- heading "Tool Usage" [level=3] [ref=e202]
|
||||
- generic [ref=e295]:
|
||||
- generic [ref=e296]:
|
||||
- generic [ref=e297]: Bash
|
||||
- generic [ref=e299]: 0%
|
||||
- generic [ref=e300]:
|
||||
- generic [ref=e301]: Read
|
||||
- generic [ref=e303]: 0%
|
||||
- generic [ref=e304]:
|
||||
- generic [ref=e305]: Edit
|
||||
- generic [ref=e307]: 0%
|
||||
- generic [ref=e308]:
|
||||
- generic [ref=e309]: Write
|
||||
- generic [ref=e311]: 0%
|
||||
- generic [ref=e312]:
|
||||
- generic [ref=e313]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e315]: 0%
|
||||
- generic [ref=e316]:
|
||||
- generic [ref=e317]: Agent
|
||||
- generic [ref=e319]: 0%
|
||||
- generic [ref=e320]:
|
||||
- generic [ref=e321]: mcp__playwright__browser_click
|
||||
- generic [ref=e323]: 0%
|
||||
- generic [ref=e324]:
|
||||
- generic [ref=e325]: ToolSearch
|
||||
- generic [ref=e327]: 0%
|
||||
- generic [ref=e237]:
|
||||
- heading "Projects" [level=3] [ref=e239]
|
||||
- generic [ref=e328]:
|
||||
- generic [ref=e330]:
|
||||
- generic [ref=e331]: Video Accessibility
|
||||
- generic [ref=e332]: 25h 41m
|
||||
- generic [ref=e334]:
|
||||
- generic [ref=e335]: General
|
||||
- generic [ref=e336]: 3h 44m
|
||||
- generic [ref=e338]:
|
||||
- generic [ref=e339]: Cc Dashboard
|
||||
- generic [ref=e340]: 3h 24m
|
||||
- generic [ref=e342]:
|
||||
- generic [ref=e343]: 3M Portal
|
||||
- generic [ref=e344]: 2h 56m
|
||||
- generic [ref=e346]:
|
||||
- generic [ref=e347]: Cinema Studio Pro Kling
|
||||
- generic [ref=e348]: 2h 2m
|
||||
- generic [ref=e350]:
|
||||
- generic [ref=e351]: Ford Qc
|
||||
- generic [ref=e352]: 1h 55m
|
||||
- generic [ref=e354]:
|
||||
- generic [ref=e355]: Video Accessibility Old
|
||||
- generic [ref=e356]: 1h 41m
|
||||
- generic [ref=e358]:
|
||||
- generic [ref=e359]: Oliver Sales Ops Platform
|
||||
- generic [ref=e360]: 59m
|
||||
- button "Open AI Assistant" [ref=e254] [cursor=pointer]:
|
||||
- img [ref=e255]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T20-23-37-792Z.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
4
.playwright-mcp/page-2026-05-06T20-28-08-999Z.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
- generic [active]:
|
||||
- generic:
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T20-28-12-616Z.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
177
.playwright-mcp/page-2026-05-06T20-28-28-481Z.yml
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e19]:
|
||||
- complementary [ref=e21]:
|
||||
- generic [ref=e23]:
|
||||
- img [ref=e25]
|
||||
- generic [ref=e27]:
|
||||
- paragraph [ref=e28]: CC Dashboard
|
||||
- paragraph [ref=e29]: Oliver Agency
|
||||
- navigation [ref=e30]:
|
||||
- link "Dashboard" [ref=e31] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e33]
|
||||
- generic [ref=e35]: Dashboard
|
||||
- link "Calendar" [ref=e36] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e37]
|
||||
- generic [ref=e39]: Calendar
|
||||
- link "Planner" [ref=e40] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e41]
|
||||
- generic [ref=e43]: Planner
|
||||
- link "Projects" [ref=e44] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e45]
|
||||
- generic [ref=e47]: Projects
|
||||
- link "Live Feed" [ref=e48] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e49]
|
||||
- generic [ref=e51]: Live Feed
|
||||
- link "Reports" [ref=e52] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e53]
|
||||
- generic [ref=e55]: Reports
|
||||
- link "Keys" [ref=e56] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e57]
|
||||
- generic [ref=e59]: Keys
|
||||
- link "DevOps" [ref=e60] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/devops
|
||||
- img [ref=e61]
|
||||
- generic [ref=e63]: DevOps
|
||||
- link "Settings" [ref=e64] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e65]
|
||||
- generic [ref=e68]: Settings
|
||||
- link "Admin" [ref=e69] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e70]
|
||||
- generic [ref=e72]: Admin
|
||||
- generic [ref=e74]:
|
||||
- generic [ref=e75]: VA
|
||||
- generic [ref=e76]:
|
||||
- paragraph [ref=e77]: vadymsamoilenko
|
||||
- generic [ref=e80]: Online
|
||||
- generic [ref=e81]:
|
||||
- banner [ref=e82]:
|
||||
- heading "Dashboard" [level=1] [ref=e84]
|
||||
- button "Toggle dark mode" [ref=e85] [cursor=pointer]:
|
||||
- img [ref=e86]
|
||||
- generic [ref=e89]:
|
||||
- generic [ref=e90]: VA
|
||||
- generic [ref=e91]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e92] [cursor=pointer]:
|
||||
- img [ref=e93]
|
||||
- text: Sign out
|
||||
- main [ref=e95]:
|
||||
- generic [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- heading "Overview" [level=2] [ref=e98]
|
||||
- generic [ref=e99]:
|
||||
- button "Today" [ref=e100] [cursor=pointer]
|
||||
- button "7 days" [ref=e101] [cursor=pointer]
|
||||
- button "30 days" [ref=e102] [cursor=pointer]
|
||||
- button "Custom" [ref=e103] [cursor=pointer]
|
||||
- generic [ref=e104]:
|
||||
- generic [ref=e107]:
|
||||
- generic [ref=e108]:
|
||||
- paragraph [ref=e109]: Total Hours
|
||||
- paragraph [ref=e111]: 9h 11m
|
||||
- img [ref=e113]
|
||||
- generic [ref=e118]:
|
||||
- generic [ref=e119]:
|
||||
- paragraph [ref=e120]: Working Days
|
||||
- paragraph [ref=e122]: "1"
|
||||
- img [ref=e124]
|
||||
- generic [ref=e129]:
|
||||
- generic [ref=e130]:
|
||||
- paragraph [ref=e131]: Projects
|
||||
- paragraph [ref=e133]: "3"
|
||||
- img [ref=e135]
|
||||
- generic [ref=e140]:
|
||||
- generic [ref=e141]:
|
||||
- paragraph [ref=e142]: Avg / Day
|
||||
- paragraph [ref=e144]: 9h 11m
|
||||
- img [ref=e146]
|
||||
- generic [ref=e151]:
|
||||
- generic [ref=e152]:
|
||||
- paragraph [ref=e153]: Top Project
|
||||
- paragraph [ref=e155]: Cc Dashboard
|
||||
- img [ref=e157]
|
||||
- generic [ref=e162]:
|
||||
- generic [ref=e163]:
|
||||
- paragraph [ref=e164]: Commits
|
||||
- paragraph [ref=e166]: "18"
|
||||
- img [ref=e168]
|
||||
- generic [ref=e171]:
|
||||
- generic [ref=e172]:
|
||||
- heading "Hours by Day" [level=3] [ref=e174]
|
||||
- 'generic "2026-05-06: 9h 11m" [ref=e177]'
|
||||
- generic [ref=e179]:
|
||||
- heading "By Day of Week" [level=3] [ref=e181]
|
||||
- generic [ref=e183]:
|
||||
- generic [ref=e184]:
|
||||
- 'generic "Mon: 0m"'
|
||||
- generic [ref=e185]: Mo
|
||||
- generic [ref=e186]:
|
||||
- 'generic "Tue: 0m"'
|
||||
- generic [ref=e187]: Tu
|
||||
- generic [ref=e188]:
|
||||
- 'generic "Wed: 9h 11m"'
|
||||
- generic [ref=e189]: We
|
||||
- generic [ref=e190]:
|
||||
- 'generic "Thu: 0m"'
|
||||
- generic [ref=e191]: Th
|
||||
- generic [ref=e192]:
|
||||
- 'generic "Fri: 0m"'
|
||||
- generic [ref=e193]: Fr
|
||||
- generic [ref=e194]:
|
||||
- 'generic "Sat: 0m"'
|
||||
- generic [ref=e195]: Sa
|
||||
- generic [ref=e196]:
|
||||
- 'generic "Sun: 0m"'
|
||||
- generic [ref=e197]: Su
|
||||
- generic [ref=e198]:
|
||||
- generic [ref=e199]:
|
||||
- heading "Tool Usage" [level=3] [ref=e201]
|
||||
- generic [ref=e203]:
|
||||
- generic [ref=e204]:
|
||||
- generic [ref=e205]: Bash
|
||||
- generic [ref=e207]: 0%
|
||||
- generic [ref=e208]:
|
||||
- generic [ref=e209]: Read
|
||||
- generic [ref=e211]: 0%
|
||||
- generic [ref=e212]:
|
||||
- generic [ref=e213]: Edit
|
||||
- generic [ref=e215]: 0%
|
||||
- generic [ref=e216]:
|
||||
- generic [ref=e217]: mcp__playwright__browser_click
|
||||
- generic [ref=e219]: 0%
|
||||
- generic [ref=e220]:
|
||||
- generic [ref=e221]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e223]: 0%
|
||||
- generic [ref=e224]:
|
||||
- generic [ref=e225]: Write
|
||||
- generic [ref=e227]: 0%
|
||||
- generic [ref=e228]:
|
||||
- generic [ref=e229]: Agent
|
||||
- generic [ref=e231]: 0%
|
||||
- generic [ref=e232]:
|
||||
- generic [ref=e233]: ToolSearch
|
||||
- generic [ref=e235]: 0%
|
||||
- generic [ref=e236]:
|
||||
- heading "Projects" [level=3] [ref=e238]
|
||||
- generic [ref=e240]:
|
||||
- generic [ref=e242]:
|
||||
- generic [ref=e243]: Cc Dashboard
|
||||
- generic [ref=e244]: 3h 29m
|
||||
- generic [ref=e246]:
|
||||
- generic [ref=e247]: Video Accessibility
|
||||
- generic [ref=e248]: 1h 22m
|
||||
- generic [ref=e250]:
|
||||
- generic [ref=e251]: Baic Dashboard
|
||||
- generic [ref=e252]: 31m
|
||||
- button "Open AI Assistant" [ref=e253] [cursor=pointer]:
|
||||
- img [ref=e254]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T20-28-30-998Z.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
200
.playwright-mcp/page-2026-05-06T20-28-41-503Z.yml
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e19]:
|
||||
- complementary [ref=e21]:
|
||||
- generic [ref=e23]:
|
||||
- img [ref=e25]
|
||||
- generic [ref=e27]:
|
||||
- paragraph [ref=e28]: CC Dashboard
|
||||
- paragraph [ref=e29]: Oliver Agency
|
||||
- navigation [ref=e30]:
|
||||
- link "Dashboard" [ref=e31] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e33]
|
||||
- generic [ref=e35]: Dashboard
|
||||
- link "Calendar" [ref=e36] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e37]
|
||||
- generic [ref=e39]: Calendar
|
||||
- link "Planner" [ref=e40] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e41]
|
||||
- generic [ref=e43]: Planner
|
||||
- link "Projects" [ref=e44] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e45]
|
||||
- generic [ref=e47]: Projects
|
||||
- link "Live Feed" [ref=e48] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e49]
|
||||
- generic [ref=e51]: Live Feed
|
||||
- link "Reports" [ref=e52] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e53]
|
||||
- generic [ref=e55]: Reports
|
||||
- link "Keys" [ref=e56] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e57]
|
||||
- generic [ref=e59]: Keys
|
||||
- link "DevOps" [ref=e60] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/devops
|
||||
- img [ref=e61]
|
||||
- generic [ref=e63]: DevOps
|
||||
- link "Settings" [ref=e64] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e65]
|
||||
- generic [ref=e68]: Settings
|
||||
- link "Admin" [ref=e69] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e70]
|
||||
- generic [ref=e72]: Admin
|
||||
- generic [ref=e74]:
|
||||
- generic [ref=e75]: VA
|
||||
- generic [ref=e76]:
|
||||
- paragraph [ref=e77]: vadymsamoilenko
|
||||
- generic [ref=e80]: Online
|
||||
- generic [ref=e81]:
|
||||
- banner [ref=e82]:
|
||||
- heading "Dashboard" [level=1] [ref=e84]
|
||||
- button "Toggle dark mode" [ref=e85] [cursor=pointer]:
|
||||
- img [ref=e86]
|
||||
- generic [ref=e89]:
|
||||
- generic [ref=e90]: VA
|
||||
- generic [ref=e91]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e92] [cursor=pointer]:
|
||||
- img [ref=e93]
|
||||
- text: Sign out
|
||||
- main [ref=e95]:
|
||||
- generic [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- heading "Overview" [level=2] [ref=e98]
|
||||
- generic [ref=e99]:
|
||||
- button "Today" [ref=e100] [cursor=pointer]
|
||||
- button "7 days" [active] [ref=e101] [cursor=pointer]
|
||||
- button "30 days" [ref=e102] [cursor=pointer]
|
||||
- button "Custom" [ref=e103] [cursor=pointer]
|
||||
- generic [ref=e104]:
|
||||
- generic [ref=e107]:
|
||||
- generic [ref=e108]:
|
||||
- paragraph [ref=e109]: Total Hours
|
||||
- paragraph [ref=e256]: 53h 6m
|
||||
- img [ref=e113]
|
||||
- generic [ref=e118]:
|
||||
- generic [ref=e119]:
|
||||
- paragraph [ref=e120]: Working Days
|
||||
- paragraph [ref=e257]: "5"
|
||||
- img [ref=e124]
|
||||
- generic [ref=e129]:
|
||||
- generic [ref=e130]:
|
||||
- paragraph [ref=e131]: Projects
|
||||
- paragraph [ref=e258]: "12"
|
||||
- img [ref=e135]
|
||||
- generic [ref=e140]:
|
||||
- generic [ref=e141]:
|
||||
- paragraph [ref=e142]: Avg / Day
|
||||
- paragraph [ref=e259]: 10h 37m
|
||||
- img [ref=e146]
|
||||
- generic [ref=e151]:
|
||||
- generic [ref=e152]:
|
||||
- paragraph [ref=e153]: Top Project
|
||||
- paragraph [ref=e260]: Video Accessibility
|
||||
- img [ref=e157]
|
||||
- generic [ref=e162]:
|
||||
- generic [ref=e163]:
|
||||
- paragraph [ref=e164]: Commits
|
||||
- paragraph [ref=e261]: "156"
|
||||
- img [ref=e168]
|
||||
- generic [ref=e171]:
|
||||
- generic [ref=e172]:
|
||||
- heading "Hours by Day" [level=3] [ref=e174]
|
||||
- generic [ref=e262]:
|
||||
- 'generic "2026-04-29: 14h 20m" [ref=e263]'
|
||||
- 'generic "2026-04-30: 13h 26m" [ref=e265]'
|
||||
- 'generic "2026-05-01: 10h 56m" [ref=e267]'
|
||||
- 'generic "2026-05-02: 0m" [ref=e269]'
|
||||
- 'generic "2026-05-03: 0m" [ref=e271]'
|
||||
- 'generic "2026-05-04: 0m" [ref=e273]'
|
||||
- 'generic "2026-05-05: 5h 13m" [ref=e275]'
|
||||
- 'generic "2026-05-06: 9h 11m" [ref=e277]'
|
||||
- generic [ref=e179]:
|
||||
- heading "By Day of Week" [level=3] [ref=e181]
|
||||
- generic [ref=e279]:
|
||||
- generic [ref=e280]:
|
||||
- 'generic "Mon: 0m"'
|
||||
- generic [ref=e281]: Mo
|
||||
- generic [ref=e282]:
|
||||
- 'generic "Tue: 5h 13m"'
|
||||
- generic [ref=e283]: Tu
|
||||
- generic [ref=e284]:
|
||||
- 'generic "Wed: 23h 31m"'
|
||||
- generic [ref=e285]: We
|
||||
- generic [ref=e286]:
|
||||
- 'generic "Thu: 13h 26m"'
|
||||
- generic [ref=e287]: Th
|
||||
- generic [ref=e288]:
|
||||
- 'generic "Fri: 10h 56m"'
|
||||
- generic [ref=e289]: Fr
|
||||
- generic [ref=e290]:
|
||||
- 'generic "Sat: 0m"'
|
||||
- generic [ref=e291]: Sa
|
||||
- generic [ref=e292]:
|
||||
- 'generic "Sun: 0m"'
|
||||
- generic [ref=e293]: Su
|
||||
- generic [ref=e198]:
|
||||
- generic [ref=e199]:
|
||||
- heading "Tool Usage" [level=3] [ref=e201]
|
||||
- generic [ref=e294]:
|
||||
- generic [ref=e295]:
|
||||
- generic [ref=e296]: Bash
|
||||
- generic [ref=e298]: 0%
|
||||
- generic [ref=e299]:
|
||||
- generic [ref=e300]: Read
|
||||
- generic [ref=e302]: 0%
|
||||
- generic [ref=e303]:
|
||||
- generic [ref=e304]: Edit
|
||||
- generic [ref=e306]: 0%
|
||||
- generic [ref=e307]:
|
||||
- generic [ref=e308]: Write
|
||||
- generic [ref=e310]: 0%
|
||||
- generic [ref=e311]:
|
||||
- generic [ref=e312]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e314]: 0%
|
||||
- generic [ref=e315]:
|
||||
- generic [ref=e316]: Agent
|
||||
- generic [ref=e318]: 0%
|
||||
- generic [ref=e319]:
|
||||
- generic [ref=e320]: mcp__playwright__browser_click
|
||||
- generic [ref=e322]: 0%
|
||||
- generic [ref=e323]:
|
||||
- generic [ref=e324]: ToolSearch
|
||||
- generic [ref=e326]: 0%
|
||||
- generic [ref=e236]:
|
||||
- heading "Projects" [level=3] [ref=e238]
|
||||
- generic [ref=e327]:
|
||||
- generic [ref=e329]:
|
||||
- generic [ref=e330]: Video Accessibility
|
||||
- generic [ref=e331]: 25h 41m
|
||||
- generic [ref=e333]:
|
||||
- generic [ref=e334]: General
|
||||
- generic [ref=e335]: 3h 44m
|
||||
- generic [ref=e337]:
|
||||
- generic [ref=e338]: Cc Dashboard
|
||||
- generic [ref=e339]: 3h 29m
|
||||
- generic [ref=e341]:
|
||||
- generic [ref=e342]: 3M Portal
|
||||
- generic [ref=e343]: 2h 56m
|
||||
- generic [ref=e345]:
|
||||
- generic [ref=e346]: Cinema Studio Pro Kling
|
||||
- generic [ref=e347]: 2h 2m
|
||||
- generic [ref=e349]:
|
||||
- generic [ref=e350]: Ford Qc
|
||||
- generic [ref=e351]: 1h 55m
|
||||
- generic [ref=e353]:
|
||||
- generic [ref=e354]: Video Accessibility Old
|
||||
- generic [ref=e355]: 1h 41m
|
||||
- generic [ref=e357]:
|
||||
- generic [ref=e358]: Oliver Sales Ops Platform
|
||||
- generic [ref=e359]: 59m
|
||||
- button "Open AI Assistant" [ref=e253] [cursor=pointer]:
|
||||
- img [ref=e254]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T20-28-43-510Z.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
4
.playwright-mcp/page-2026-05-06T20-29-41-004Z.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
- generic [active]:
|
||||
- generic:
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T20-29-46-384Z.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
177
.playwright-mcp/page-2026-05-06T20-29-56-638Z.yml
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e19]:
|
||||
- complementary [ref=e21]:
|
||||
- generic [ref=e23]:
|
||||
- img [ref=e25]
|
||||
- generic [ref=e27]:
|
||||
- paragraph [ref=e28]: CC Dashboard
|
||||
- paragraph [ref=e29]: Oliver Agency
|
||||
- navigation [ref=e30]:
|
||||
- link "Dashboard" [ref=e31] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e33]
|
||||
- generic [ref=e35]: Dashboard
|
||||
- link "Calendar" [ref=e36] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e37]
|
||||
- generic [ref=e39]: Calendar
|
||||
- link "Planner" [ref=e40] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e41]
|
||||
- generic [ref=e43]: Planner
|
||||
- link "Projects" [ref=e44] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e45]
|
||||
- generic [ref=e47]: Projects
|
||||
- link "Live Feed" [ref=e48] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e49]
|
||||
- generic [ref=e51]: Live Feed
|
||||
- link "Reports" [ref=e52] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e53]
|
||||
- generic [ref=e55]: Reports
|
||||
- link "Keys" [ref=e56] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e57]
|
||||
- generic [ref=e59]: Keys
|
||||
- link "DevOps" [ref=e60] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/devops
|
||||
- img [ref=e61]
|
||||
- generic [ref=e63]: DevOps
|
||||
- link "Settings" [ref=e64] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e65]
|
||||
- generic [ref=e68]: Settings
|
||||
- link "Admin" [ref=e69] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e70]
|
||||
- generic [ref=e72]: Admin
|
||||
- generic [ref=e74]:
|
||||
- generic [ref=e75]: VA
|
||||
- generic [ref=e76]:
|
||||
- paragraph [ref=e77]: vadymsamoilenko
|
||||
- generic [ref=e80]: Online
|
||||
- generic [ref=e81]:
|
||||
- banner [ref=e82]:
|
||||
- heading "Dashboard" [level=1] [ref=e84]
|
||||
- button "Toggle dark mode" [ref=e85] [cursor=pointer]:
|
||||
- img [ref=e86]
|
||||
- generic [ref=e89]:
|
||||
- generic [ref=e90]: VA
|
||||
- generic [ref=e91]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e92] [cursor=pointer]:
|
||||
- img [ref=e93]
|
||||
- text: Sign out
|
||||
- main [ref=e95]:
|
||||
- generic [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- heading "Overview" [level=2] [ref=e98]
|
||||
- generic [ref=e99]:
|
||||
- button "Today" [ref=e100] [cursor=pointer]
|
||||
- button "7 days" [ref=e101] [cursor=pointer]
|
||||
- button "30 days" [ref=e102] [cursor=pointer]
|
||||
- button "Custom" [ref=e103] [cursor=pointer]
|
||||
- generic [ref=e104]:
|
||||
- generic [ref=e107]:
|
||||
- generic [ref=e108]:
|
||||
- paragraph [ref=e109]: Total Hours
|
||||
- paragraph [ref=e111]: 9h 14m
|
||||
- img [ref=e113]
|
||||
- generic [ref=e118]:
|
||||
- generic [ref=e119]:
|
||||
- paragraph [ref=e120]: Working Days
|
||||
- paragraph [ref=e122]: "1"
|
||||
- img [ref=e124]
|
||||
- generic [ref=e129]:
|
||||
- generic [ref=e130]:
|
||||
- paragraph [ref=e131]: Projects
|
||||
- paragraph [ref=e133]: "3"
|
||||
- img [ref=e135]
|
||||
- generic [ref=e140]:
|
||||
- generic [ref=e141]:
|
||||
- paragraph [ref=e142]: Avg / Day
|
||||
- paragraph [ref=e144]: 9h 14m
|
||||
- img [ref=e146]
|
||||
- generic [ref=e151]:
|
||||
- generic [ref=e152]:
|
||||
- paragraph [ref=e153]: Top Project
|
||||
- paragraph [ref=e155]: Cc Dashboard
|
||||
- img [ref=e157]
|
||||
- generic [ref=e162]:
|
||||
- generic [ref=e163]:
|
||||
- paragraph [ref=e164]: Commits
|
||||
- paragraph [ref=e166]: "19"
|
||||
- img [ref=e168]
|
||||
- generic [ref=e171]:
|
||||
- generic [ref=e172]:
|
||||
- heading "Hours by Day" [level=3] [ref=e174]
|
||||
- 'generic "2026-05-06: 9h 14m" [ref=e177]'
|
||||
- generic [ref=e179]:
|
||||
- heading "By Day of Week" [level=3] [ref=e181]
|
||||
- generic [ref=e183]:
|
||||
- generic [ref=e184]:
|
||||
- 'generic "Mon: 0m"'
|
||||
- generic [ref=e185]: Mo
|
||||
- generic [ref=e186]:
|
||||
- 'generic "Tue: 0m"'
|
||||
- generic [ref=e187]: Tu
|
||||
- generic [ref=e188]:
|
||||
- 'generic "Wed: 9h 14m"'
|
||||
- generic [ref=e189]: We
|
||||
- generic [ref=e190]:
|
||||
- 'generic "Thu: 0m"'
|
||||
- generic [ref=e191]: Th
|
||||
- generic [ref=e192]:
|
||||
- 'generic "Fri: 0m"'
|
||||
- generic [ref=e193]: Fr
|
||||
- generic [ref=e194]:
|
||||
- 'generic "Sat: 0m"'
|
||||
- generic [ref=e195]: Sa
|
||||
- generic [ref=e196]:
|
||||
- 'generic "Sun: 0m"'
|
||||
- generic [ref=e197]: Su
|
||||
- generic [ref=e198]:
|
||||
- generic [ref=e199]:
|
||||
- heading "Tool Usage" [level=3] [ref=e201]
|
||||
- generic [ref=e203]:
|
||||
- generic [ref=e204]:
|
||||
- generic [ref=e205]: Bash
|
||||
- generic [ref=e208]: 49%
|
||||
- generic [ref=e209]:
|
||||
- generic [ref=e210]: Read
|
||||
- generic [ref=e213]: 19%
|
||||
- generic [ref=e214]:
|
||||
- generic [ref=e215]: Edit
|
||||
- generic [ref=e218]: 13%
|
||||
- generic [ref=e219]:
|
||||
- generic [ref=e220]: mcp__playwright__browser_click
|
||||
- generic [ref=e223]: 4%
|
||||
- generic [ref=e224]:
|
||||
- generic [ref=e225]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e228]: 3%
|
||||
- generic [ref=e229]:
|
||||
- generic [ref=e230]: Write
|
||||
- generic [ref=e233]: 2%
|
||||
- generic [ref=e234]:
|
||||
- generic [ref=e235]: ToolSearch
|
||||
- generic [ref=e238]: 2%
|
||||
- generic [ref=e239]:
|
||||
- generic [ref=e240]: Agent
|
||||
- generic [ref=e243]: 2%
|
||||
- generic [ref=e244]:
|
||||
- heading "Projects" [level=3] [ref=e246]
|
||||
- generic [ref=e248]:
|
||||
- generic [ref=e250]:
|
||||
- generic [ref=e251]: Cc Dashboard
|
||||
- generic [ref=e252]: 3h 33m
|
||||
- generic [ref=e254]:
|
||||
- generic [ref=e255]: Video Accessibility
|
||||
- generic [ref=e256]: 1h 22m
|
||||
- generic [ref=e258]:
|
||||
- generic [ref=e259]: Baic Dashboard
|
||||
- generic [ref=e260]: 31m
|
||||
- button "Open AI Assistant" [ref=e261] [cursor=pointer]:
|
||||
- img [ref=e262]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
200
.playwright-mcp/page-2026-05-06T20-30-01-553Z.yml
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e19]:
|
||||
- complementary [ref=e21]:
|
||||
- generic [ref=e23]:
|
||||
- img [ref=e25]
|
||||
- generic [ref=e27]:
|
||||
- paragraph [ref=e28]: CC Dashboard
|
||||
- paragraph [ref=e29]: Oliver Agency
|
||||
- navigation [ref=e30]:
|
||||
- link "Dashboard" [ref=e31] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e33]
|
||||
- generic [ref=e35]: Dashboard
|
||||
- link "Calendar" [ref=e36] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e37]
|
||||
- generic [ref=e39]: Calendar
|
||||
- link "Planner" [ref=e40] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e41]
|
||||
- generic [ref=e43]: Planner
|
||||
- link "Projects" [ref=e44] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e45]
|
||||
- generic [ref=e47]: Projects
|
||||
- link "Live Feed" [ref=e48] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e49]
|
||||
- generic [ref=e51]: Live Feed
|
||||
- link "Reports" [ref=e52] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e53]
|
||||
- generic [ref=e55]: Reports
|
||||
- link "Keys" [ref=e56] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e57]
|
||||
- generic [ref=e59]: Keys
|
||||
- link "DevOps" [ref=e60] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/devops
|
||||
- img [ref=e61]
|
||||
- generic [ref=e63]: DevOps
|
||||
- link "Settings" [ref=e64] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e65]
|
||||
- generic [ref=e68]: Settings
|
||||
- link "Admin" [ref=e69] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e70]
|
||||
- generic [ref=e72]: Admin
|
||||
- generic [ref=e74]:
|
||||
- generic [ref=e75]: VA
|
||||
- generic [ref=e76]:
|
||||
- paragraph [ref=e77]: vadymsamoilenko
|
||||
- generic [ref=e80]: Online
|
||||
- generic [ref=e81]:
|
||||
- banner [ref=e82]:
|
||||
- heading "Dashboard" [level=1] [ref=e84]
|
||||
- button "Toggle dark mode" [ref=e85] [cursor=pointer]:
|
||||
- img [ref=e86]
|
||||
- generic [ref=e89]:
|
||||
- generic [ref=e90]: VA
|
||||
- generic [ref=e91]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e92] [cursor=pointer]:
|
||||
- img [ref=e93]
|
||||
- text: Sign out
|
||||
- main [ref=e95]:
|
||||
- generic [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- heading "Overview" [level=2] [ref=e98]
|
||||
- generic [ref=e99]:
|
||||
- button "Today" [ref=e100] [cursor=pointer]
|
||||
- button "7 days" [active] [ref=e101] [cursor=pointer]
|
||||
- button "30 days" [ref=e102] [cursor=pointer]
|
||||
- button "Custom" [ref=e103] [cursor=pointer]
|
||||
- generic [ref=e104]:
|
||||
- generic [ref=e107]:
|
||||
- generic [ref=e108]:
|
||||
- paragraph [ref=e109]: Total Hours
|
||||
- paragraph [ref=e264]: 53h 10m
|
||||
- img [ref=e113]
|
||||
- generic [ref=e118]:
|
||||
- generic [ref=e119]:
|
||||
- paragraph [ref=e120]: Working Days
|
||||
- paragraph [ref=e265]: "5"
|
||||
- img [ref=e124]
|
||||
- generic [ref=e129]:
|
||||
- generic [ref=e130]:
|
||||
- paragraph [ref=e131]: Projects
|
||||
- paragraph [ref=e266]: "12"
|
||||
- img [ref=e135]
|
||||
- generic [ref=e140]:
|
||||
- generic [ref=e141]:
|
||||
- paragraph [ref=e142]: Avg / Day
|
||||
- paragraph [ref=e267]: 10h 38m
|
||||
- img [ref=e146]
|
||||
- generic [ref=e151]:
|
||||
- generic [ref=e152]:
|
||||
- paragraph [ref=e153]: Top Project
|
||||
- paragraph [ref=e268]: Video Accessibility
|
||||
- img [ref=e157]
|
||||
- generic [ref=e162]:
|
||||
- generic [ref=e163]:
|
||||
- paragraph [ref=e164]: Commits
|
||||
- paragraph [ref=e269]: "157"
|
||||
- img [ref=e168]
|
||||
- generic [ref=e171]:
|
||||
- generic [ref=e172]:
|
||||
- heading "Hours by Day" [level=3] [ref=e174]
|
||||
- generic [ref=e270]:
|
||||
- 'generic "2026-04-29: 14h 20m" [ref=e271]'
|
||||
- 'generic "2026-04-30: 13h 26m" [ref=e273]'
|
||||
- 'generic "2026-05-01: 10h 56m" [ref=e275]'
|
||||
- 'generic "2026-05-02: 0m" [ref=e277]'
|
||||
- 'generic "2026-05-03: 0m" [ref=e279]'
|
||||
- 'generic "2026-05-04: 0m" [ref=e281]'
|
||||
- 'generic "2026-05-05: 5h 13m" [ref=e283]'
|
||||
- 'generic "2026-05-06: 9h 14m" [ref=e285]'
|
||||
- generic [ref=e179]:
|
||||
- heading "By Day of Week" [level=3] [ref=e181]
|
||||
- generic [ref=e287]:
|
||||
- generic [ref=e288]:
|
||||
- 'generic "Mon: 0m"'
|
||||
- generic [ref=e289]: Mo
|
||||
- generic [ref=e290]:
|
||||
- 'generic "Tue: 5h 13m"'
|
||||
- generic [ref=e291]: Tu
|
||||
- generic [ref=e292]:
|
||||
- 'generic "Wed: 23h 35m"'
|
||||
- generic [ref=e293]: We
|
||||
- generic [ref=e294]:
|
||||
- 'generic "Thu: 13h 26m"'
|
||||
- generic [ref=e295]: Th
|
||||
- generic [ref=e296]:
|
||||
- 'generic "Fri: 10h 56m"'
|
||||
- generic [ref=e297]: Fr
|
||||
- generic [ref=e298]:
|
||||
- 'generic "Sat: 0m"'
|
||||
- generic [ref=e299]: Sa
|
||||
- generic [ref=e300]:
|
||||
- 'generic "Sun: 0m"'
|
||||
- generic [ref=e301]: Su
|
||||
- generic [ref=e198]:
|
||||
- generic [ref=e199]:
|
||||
- heading "Tool Usage" [level=3] [ref=e201]
|
||||
- generic [ref=e302]:
|
||||
- generic [ref=e303]:
|
||||
- generic [ref=e304]: Bash
|
||||
- generic [ref=e307]: 51%
|
||||
- generic [ref=e308]:
|
||||
- generic [ref=e309]: Read
|
||||
- generic [ref=e312]: 21%
|
||||
- generic [ref=e313]:
|
||||
- generic [ref=e314]: Edit
|
||||
- generic [ref=e317]: 17%
|
||||
- generic [ref=e318]:
|
||||
- generic [ref=e319]: Write
|
||||
- generic [ref=e322]: 3%
|
||||
- generic [ref=e323]:
|
||||
- generic [ref=e324]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e327]: 2%
|
||||
- generic [ref=e328]:
|
||||
- generic [ref=e329]: Agent
|
||||
- generic [ref=e332]: 1%
|
||||
- generic [ref=e333]:
|
||||
- generic [ref=e334]: mcp__playwright__browser_click
|
||||
- generic [ref=e337]: 1%
|
||||
- generic [ref=e338]:
|
||||
- generic [ref=e339]: ToolSearch
|
||||
- generic [ref=e342]: 1%
|
||||
- generic [ref=e244]:
|
||||
- heading "Projects" [level=3] [ref=e246]
|
||||
- generic [ref=e343]:
|
||||
- generic [ref=e345]:
|
||||
- generic [ref=e346]: Video Accessibility
|
||||
- generic [ref=e347]: 25h 41m
|
||||
- generic [ref=e349]:
|
||||
- generic [ref=e350]: General
|
||||
- generic [ref=e351]: 3h 44m
|
||||
- generic [ref=e353]:
|
||||
- generic [ref=e354]: Cc Dashboard
|
||||
- generic [ref=e355]: 3h 33m
|
||||
- generic [ref=e357]:
|
||||
- generic [ref=e358]: 3M Portal
|
||||
- generic [ref=e359]: 2h 56m
|
||||
- generic [ref=e361]:
|
||||
- generic [ref=e362]: Cinema Studio Pro Kling
|
||||
- generic [ref=e363]: 2h 2m
|
||||
- generic [ref=e365]:
|
||||
- generic [ref=e366]: Ford Qc
|
||||
- generic [ref=e367]: 1h 55m
|
||||
- generic [ref=e369]:
|
||||
- generic [ref=e370]: Video Accessibility Old
|
||||
- generic [ref=e371]: 1h 41m
|
||||
- generic [ref=e373]:
|
||||
- generic [ref=e374]: Oliver Sales Ops Platform
|
||||
- generic [ref=e375]: 59m
|
||||
- button "Open AI Assistant" [ref=e261] [cursor=pointer]:
|
||||
- img [ref=e262]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T20-30-04-936Z.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
18
.playwright-mcp/page-2026-05-06T20-32-46-225Z.yml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e4]:
|
||||
- generic [ref=e5]:
|
||||
- img [ref=e7]
|
||||
- heading "CC Dashboard" [level=1] [ref=e9]
|
||||
- paragraph [ref=e10]: Corporate Planning Hub
|
||||
- generic [ref=e13]:
|
||||
- generic [ref=e14]:
|
||||
- text: Email
|
||||
- textbox "Email" [ref=e15]:
|
||||
- /placeholder: you@company.com
|
||||
- generic [ref=e16]:
|
||||
- text: Password
|
||||
- textbox "Password" [ref=e17]:
|
||||
- /placeholder: ••••••••
|
||||
- button "Sign in" [ref=e18] [cursor=pointer]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
177
.playwright-mcp/page-2026-05-06T20-32-54-583Z.yml
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e19]:
|
||||
- complementary [ref=e21]:
|
||||
- generic [ref=e23]:
|
||||
- img [ref=e25]
|
||||
- generic [ref=e27]:
|
||||
- paragraph [ref=e28]: CC Dashboard
|
||||
- paragraph [ref=e29]: Oliver Agency
|
||||
- navigation [ref=e30]:
|
||||
- link "Dashboard" [ref=e31] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e33]
|
||||
- generic [ref=e35]: Dashboard
|
||||
- link "Calendar" [ref=e36] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e37]
|
||||
- generic [ref=e39]: Calendar
|
||||
- link "Planner" [ref=e40] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e41]
|
||||
- generic [ref=e43]: Planner
|
||||
- link "Projects" [ref=e44] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e45]
|
||||
- generic [ref=e47]: Projects
|
||||
- link "Live Feed" [ref=e48] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e49]
|
||||
- generic [ref=e51]: Live Feed
|
||||
- link "Reports" [ref=e52] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e53]
|
||||
- generic [ref=e55]: Reports
|
||||
- link "Keys" [ref=e56] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e57]
|
||||
- generic [ref=e59]: Keys
|
||||
- link "DevOps" [ref=e60] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/devops
|
||||
- img [ref=e61]
|
||||
- generic [ref=e63]: DevOps
|
||||
- link "Settings" [ref=e64] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e65]
|
||||
- generic [ref=e68]: Settings
|
||||
- link "Admin" [ref=e69] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e70]
|
||||
- generic [ref=e72]: Admin
|
||||
- generic [ref=e74]:
|
||||
- generic [ref=e75]: VA
|
||||
- generic [ref=e76]:
|
||||
- paragraph [ref=e77]: vadymsamoilenko
|
||||
- generic [ref=e80]: Online
|
||||
- generic [ref=e81]:
|
||||
- banner [ref=e82]:
|
||||
- heading "Dashboard" [level=1] [ref=e84]
|
||||
- button "Toggle dark mode" [ref=e85] [cursor=pointer]:
|
||||
- img [ref=e86]
|
||||
- generic [ref=e89]:
|
||||
- generic [ref=e90]: VA
|
||||
- generic [ref=e91]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e92] [cursor=pointer]:
|
||||
- img [ref=e93]
|
||||
- text: Sign out
|
||||
- main [ref=e95]:
|
||||
- generic [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- heading "Overview" [level=2] [ref=e98]
|
||||
- generic [ref=e99]:
|
||||
- button "Today" [ref=e100] [cursor=pointer]
|
||||
- button "7 days" [ref=e101] [cursor=pointer]
|
||||
- button "30 days" [ref=e102] [cursor=pointer]
|
||||
- button "Custom" [ref=e103] [cursor=pointer]
|
||||
- generic [ref=e104]:
|
||||
- generic [ref=e107]:
|
||||
- generic [ref=e108]:
|
||||
- paragraph [ref=e109]: Total Hours
|
||||
- paragraph [ref=e111]: 9h 14m
|
||||
- img [ref=e113]
|
||||
- generic [ref=e118]:
|
||||
- generic [ref=e119]:
|
||||
- paragraph [ref=e120]: Working Days
|
||||
- paragraph [ref=e122]: "1"
|
||||
- img [ref=e124]
|
||||
- generic [ref=e129]:
|
||||
- generic [ref=e130]:
|
||||
- paragraph [ref=e131]: Projects
|
||||
- paragraph [ref=e133]: "3"
|
||||
- img [ref=e135]
|
||||
- generic [ref=e140]:
|
||||
- generic [ref=e141]:
|
||||
- paragraph [ref=e142]: Avg / Day
|
||||
- paragraph [ref=e144]: 9h 14m
|
||||
- img [ref=e146]
|
||||
- generic [ref=e151]:
|
||||
- generic [ref=e152]:
|
||||
- paragraph [ref=e153]: Top Project
|
||||
- paragraph [ref=e155]: Cc Dashboard
|
||||
- img [ref=e157]
|
||||
- generic [ref=e162]:
|
||||
- generic [ref=e163]:
|
||||
- paragraph [ref=e164]: Commits
|
||||
- paragraph [ref=e166]: "19"
|
||||
- img [ref=e168]
|
||||
- generic [ref=e171]:
|
||||
- generic [ref=e172]:
|
||||
- heading "Hours by Day" [level=3] [ref=e174]
|
||||
- 'generic "2026-05-06: 9h 14m" [ref=e177]'
|
||||
- generic [ref=e179]:
|
||||
- heading "By Day of Week" [level=3] [ref=e181]
|
||||
- generic [ref=e183]:
|
||||
- generic [ref=e184]:
|
||||
- 'generic "Mon: 0m"'
|
||||
- generic [ref=e185]: Mo
|
||||
- generic [ref=e186]:
|
||||
- 'generic "Tue: 0m"'
|
||||
- generic [ref=e187]: Tu
|
||||
- generic [ref=e188]:
|
||||
- 'generic "Wed: 9h 14m"'
|
||||
- generic [ref=e189]: We
|
||||
- generic [ref=e190]:
|
||||
- 'generic "Thu: 0m"'
|
||||
- generic [ref=e191]: Th
|
||||
- generic [ref=e192]:
|
||||
- 'generic "Fri: 0m"'
|
||||
- generic [ref=e193]: Fr
|
||||
- generic [ref=e194]:
|
||||
- 'generic "Sat: 0m"'
|
||||
- generic [ref=e195]: Sa
|
||||
- generic [ref=e196]:
|
||||
- 'generic "Sun: 0m"'
|
||||
- generic [ref=e197]: Su
|
||||
- generic [ref=e198]:
|
||||
- generic [ref=e199]:
|
||||
- heading "Tool Usage" [level=3] [ref=e201]
|
||||
- generic [ref=e203]:
|
||||
- generic [ref=e204]:
|
||||
- generic [ref=e205]: Bash
|
||||
- generic [ref=e208]: 49%
|
||||
- generic [ref=e209]:
|
||||
- generic [ref=e210]: Read
|
||||
- generic [ref=e213]: 19%
|
||||
- generic [ref=e214]:
|
||||
- generic [ref=e215]: Edit
|
||||
- generic [ref=e218]: 13%
|
||||
- generic [ref=e219]:
|
||||
- generic [ref=e220]: mcp__playwright__browser_click
|
||||
- generic [ref=e223]: 4%
|
||||
- generic [ref=e224]:
|
||||
- generic [ref=e225]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e228]: 3%
|
||||
- generic [ref=e229]:
|
||||
- generic [ref=e230]: Write
|
||||
- generic [ref=e233]: 2%
|
||||
- generic [ref=e234]:
|
||||
- generic [ref=e235]: ToolSearch
|
||||
- generic [ref=e238]: 2%
|
||||
- generic [ref=e239]:
|
||||
- generic [ref=e240]: Agent
|
||||
- generic [ref=e243]: 2%
|
||||
- generic [ref=e244]:
|
||||
- heading "Projects" [level=3] [ref=e246]
|
||||
- generic [ref=e248]:
|
||||
- generic [ref=e250]:
|
||||
- generic [ref=e251]: Cc Dashboard
|
||||
- generic [ref=e252]: 3h 33m
|
||||
- generic [ref=e254]:
|
||||
- generic [ref=e255]: Video Accessibility
|
||||
- generic [ref=e256]: 1h 22m
|
||||
- generic [ref=e258]:
|
||||
- generic [ref=e259]: Baic Dashboard
|
||||
- generic [ref=e260]: 31m
|
||||
- button "Open AI Assistant" [ref=e261] [cursor=pointer]:
|
||||
- img [ref=e262]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
200
.playwright-mcp/page-2026-05-06T20-32-58-674Z.yml
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e19]:
|
||||
- complementary [ref=e21]:
|
||||
- generic [ref=e23]:
|
||||
- img [ref=e25]
|
||||
- generic [ref=e27]:
|
||||
- paragraph [ref=e28]: CC Dashboard
|
||||
- paragraph [ref=e29]: Oliver Agency
|
||||
- navigation [ref=e30]:
|
||||
- link "Dashboard" [ref=e31] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e33]
|
||||
- generic [ref=e35]: Dashboard
|
||||
- link "Calendar" [ref=e36] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e37]
|
||||
- generic [ref=e39]: Calendar
|
||||
- link "Planner" [ref=e40] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e41]
|
||||
- generic [ref=e43]: Planner
|
||||
- link "Projects" [ref=e44] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e45]
|
||||
- generic [ref=e47]: Projects
|
||||
- link "Live Feed" [ref=e48] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e49]
|
||||
- generic [ref=e51]: Live Feed
|
||||
- link "Reports" [ref=e52] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e53]
|
||||
- generic [ref=e55]: Reports
|
||||
- link "Keys" [ref=e56] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e57]
|
||||
- generic [ref=e59]: Keys
|
||||
- link "DevOps" [ref=e60] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/devops
|
||||
- img [ref=e61]
|
||||
- generic [ref=e63]: DevOps
|
||||
- link "Settings" [ref=e64] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e65]
|
||||
- generic [ref=e68]: Settings
|
||||
- link "Admin" [ref=e69] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e70]
|
||||
- generic [ref=e72]: Admin
|
||||
- generic [ref=e74]:
|
||||
- generic [ref=e75]: VA
|
||||
- generic [ref=e76]:
|
||||
- paragraph [ref=e77]: vadymsamoilenko
|
||||
- generic [ref=e80]: Online
|
||||
- generic [ref=e81]:
|
||||
- banner [ref=e82]:
|
||||
- heading "Dashboard" [level=1] [ref=e84]
|
||||
- button "Toggle dark mode" [ref=e85] [cursor=pointer]:
|
||||
- img [ref=e86]
|
||||
- generic [ref=e89]:
|
||||
- generic [ref=e90]: VA
|
||||
- generic [ref=e91]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e92] [cursor=pointer]:
|
||||
- img [ref=e93]
|
||||
- text: Sign out
|
||||
- main [ref=e95]:
|
||||
- generic [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- heading "Overview" [level=2] [ref=e98]
|
||||
- generic [ref=e99]:
|
||||
- button "Today" [ref=e100] [cursor=pointer]
|
||||
- button "7 days" [active] [ref=e101] [cursor=pointer]
|
||||
- button "30 days" [ref=e102] [cursor=pointer]
|
||||
- button "Custom" [ref=e103] [cursor=pointer]
|
||||
- generic [ref=e104]:
|
||||
- generic [ref=e107]:
|
||||
- generic [ref=e108]:
|
||||
- paragraph [ref=e109]: Total Hours
|
||||
- paragraph [ref=e264]: 53h 10m
|
||||
- img [ref=e113]
|
||||
- generic [ref=e118]:
|
||||
- generic [ref=e119]:
|
||||
- paragraph [ref=e120]: Working Days
|
||||
- paragraph [ref=e265]: "5"
|
||||
- img [ref=e124]
|
||||
- generic [ref=e129]:
|
||||
- generic [ref=e130]:
|
||||
- paragraph [ref=e131]: Projects
|
||||
- paragraph [ref=e266]: "12"
|
||||
- img [ref=e135]
|
||||
- generic [ref=e140]:
|
||||
- generic [ref=e141]:
|
||||
- paragraph [ref=e142]: Avg / Day
|
||||
- paragraph [ref=e267]: 10h 38m
|
||||
- img [ref=e146]
|
||||
- generic [ref=e151]:
|
||||
- generic [ref=e152]:
|
||||
- paragraph [ref=e153]: Top Project
|
||||
- paragraph [ref=e268]: Video Accessibility
|
||||
- img [ref=e157]
|
||||
- generic [ref=e162]:
|
||||
- generic [ref=e163]:
|
||||
- paragraph [ref=e164]: Commits
|
||||
- paragraph [ref=e269]: "157"
|
||||
- img [ref=e168]
|
||||
- generic [ref=e171]:
|
||||
- generic [ref=e172]:
|
||||
- heading "Hours by Day" [level=3] [ref=e174]
|
||||
- generic [ref=e270]:
|
||||
- 'generic "2026-04-29: 14h 20m" [ref=e271]'
|
||||
- 'generic "2026-04-30: 13h 26m" [ref=e273]'
|
||||
- 'generic "2026-05-01: 10h 56m" [ref=e275]'
|
||||
- 'generic "2026-05-02: 0m" [ref=e277]'
|
||||
- 'generic "2026-05-03: 0m" [ref=e279]'
|
||||
- 'generic "2026-05-04: 0m" [ref=e281]'
|
||||
- 'generic "2026-05-05: 5h 13m" [ref=e283]'
|
||||
- 'generic "2026-05-06: 9h 14m" [ref=e285]'
|
||||
- generic [ref=e179]:
|
||||
- heading "By Day of Week" [level=3] [ref=e181]
|
||||
- generic [ref=e287]:
|
||||
- generic [ref=e288]:
|
||||
- 'generic "Mon: 0m"'
|
||||
- generic [ref=e289]: Mo
|
||||
- generic [ref=e290]:
|
||||
- 'generic "Tue: 5h 13m"'
|
||||
- generic [ref=e291]: Tu
|
||||
- generic [ref=e292]:
|
||||
- 'generic "Wed: 23h 35m"'
|
||||
- generic [ref=e293]: We
|
||||
- generic [ref=e294]:
|
||||
- 'generic "Thu: 13h 26m"'
|
||||
- generic [ref=e295]: Th
|
||||
- generic [ref=e296]:
|
||||
- 'generic "Fri: 10h 56m"'
|
||||
- generic [ref=e297]: Fr
|
||||
- generic [ref=e298]:
|
||||
- 'generic "Sat: 0m"'
|
||||
- generic [ref=e299]: Sa
|
||||
- generic [ref=e300]:
|
||||
- 'generic "Sun: 0m"'
|
||||
- generic [ref=e301]: Su
|
||||
- generic [ref=e198]:
|
||||
- generic [ref=e199]:
|
||||
- heading "Tool Usage" [level=3] [ref=e201]
|
||||
- generic [ref=e302]:
|
||||
- generic [ref=e303]:
|
||||
- generic [ref=e304]: Bash
|
||||
- generic [ref=e307]: 51%
|
||||
- generic [ref=e308]:
|
||||
- generic [ref=e309]: Read
|
||||
- generic [ref=e312]: 21%
|
||||
- generic [ref=e313]:
|
||||
- generic [ref=e314]: Edit
|
||||
- generic [ref=e317]: 17%
|
||||
- generic [ref=e318]:
|
||||
- generic [ref=e319]: Write
|
||||
- generic [ref=e322]: 3%
|
||||
- generic [ref=e323]:
|
||||
- generic [ref=e324]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e327]: 2%
|
||||
- generic [ref=e328]:
|
||||
- generic [ref=e329]: Agent
|
||||
- generic [ref=e332]: 1%
|
||||
- generic [ref=e333]:
|
||||
- generic [ref=e334]: mcp__playwright__browser_click
|
||||
- generic [ref=e337]: 1%
|
||||
- generic [ref=e338]:
|
||||
- generic [ref=e339]: ToolSearch
|
||||
- generic [ref=e342]: 1%
|
||||
- generic [ref=e244]:
|
||||
- heading "Projects" [level=3] [ref=e246]
|
||||
- generic [ref=e343]:
|
||||
- generic [ref=e345]:
|
||||
- generic [ref=e346]: Video Accessibility
|
||||
- generic [ref=e347]: 25h 41m
|
||||
- generic [ref=e349]:
|
||||
- generic [ref=e350]: General
|
||||
- generic [ref=e351]: 3h 44m
|
||||
- generic [ref=e353]:
|
||||
- generic [ref=e354]: Cc Dashboard
|
||||
- generic [ref=e355]: 3h 33m
|
||||
- generic [ref=e357]:
|
||||
- generic [ref=e358]: 3M Portal
|
||||
- generic [ref=e359]: 2h 56m
|
||||
- generic [ref=e361]:
|
||||
- generic [ref=e362]: Cinema Studio Pro Kling
|
||||
- generic [ref=e363]: 2h 2m
|
||||
- generic [ref=e365]:
|
||||
- generic [ref=e366]: Ford Qc
|
||||
- generic [ref=e367]: 1h 55m
|
||||
- generic [ref=e369]:
|
||||
- generic [ref=e370]: Video Accessibility Old
|
||||
- generic [ref=e371]: 1h 41m
|
||||
- generic [ref=e373]:
|
||||
- generic [ref=e374]: Oliver Sales Ops Platform
|
||||
- generic [ref=e375]: 59m
|
||||
- button "Open AI Assistant" [ref=e261] [cursor=pointer]:
|
||||
- img [ref=e262]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T20-33-02-890Z.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
18
.playwright-mcp/page-2026-05-06T20-35-21-214Z.yml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e4]:
|
||||
- generic [ref=e5]:
|
||||
- img [ref=e7]
|
||||
- heading "CC Dashboard" [level=1] [ref=e9]
|
||||
- paragraph [ref=e10]: Corporate Planning Hub
|
||||
- generic [ref=e13]:
|
||||
- generic [ref=e14]:
|
||||
- text: Email
|
||||
- textbox "Email" [ref=e15]:
|
||||
- /placeholder: you@company.com
|
||||
- generic [ref=e16]:
|
||||
- text: Password
|
||||
- textbox "Password" [ref=e17]:
|
||||
- /placeholder: ••••••••
|
||||
- button "Sign in" [ref=e18] [cursor=pointer]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
177
.playwright-mcp/page-2026-05-06T20-35-27-934Z.yml
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e19]:
|
||||
- complementary [ref=e21]:
|
||||
- generic [ref=e23]:
|
||||
- img [ref=e25]
|
||||
- generic [ref=e27]:
|
||||
- paragraph [ref=e28]: CC Dashboard
|
||||
- paragraph [ref=e29]: Oliver Agency
|
||||
- navigation [ref=e30]:
|
||||
- link "Dashboard" [ref=e31] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e33]
|
||||
- generic [ref=e35]: Dashboard
|
||||
- link "Calendar" [ref=e36] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e37]
|
||||
- generic [ref=e39]: Calendar
|
||||
- link "Planner" [ref=e40] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e41]
|
||||
- generic [ref=e43]: Planner
|
||||
- link "Projects" [ref=e44] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e45]
|
||||
- generic [ref=e47]: Projects
|
||||
- link "Live Feed" [ref=e48] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e49]
|
||||
- generic [ref=e51]: Live Feed
|
||||
- link "Reports" [ref=e52] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e53]
|
||||
- generic [ref=e55]: Reports
|
||||
- link "Keys" [ref=e56] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e57]
|
||||
- generic [ref=e59]: Keys
|
||||
- link "DevOps" [ref=e60] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/devops
|
||||
- img [ref=e61]
|
||||
- generic [ref=e63]: DevOps
|
||||
- link "Settings" [ref=e64] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e65]
|
||||
- generic [ref=e68]: Settings
|
||||
- link "Admin" [ref=e69] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e70]
|
||||
- generic [ref=e72]: Admin
|
||||
- generic [ref=e74]:
|
||||
- generic [ref=e75]: VA
|
||||
- generic [ref=e76]:
|
||||
- paragraph [ref=e77]: vadymsamoilenko
|
||||
- generic [ref=e80]: Online
|
||||
- generic [ref=e81]:
|
||||
- banner [ref=e82]:
|
||||
- heading "Dashboard" [level=1] [ref=e84]
|
||||
- button "Toggle dark mode" [ref=e85] [cursor=pointer]:
|
||||
- img [ref=e86]
|
||||
- generic [ref=e89]:
|
||||
- generic [ref=e90]: VA
|
||||
- generic [ref=e91]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e92] [cursor=pointer]:
|
||||
- img [ref=e93]
|
||||
- text: Sign out
|
||||
- main [ref=e95]:
|
||||
- generic [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- heading "Overview" [level=2] [ref=e98]
|
||||
- generic [ref=e99]:
|
||||
- button "Today" [ref=e100] [cursor=pointer]
|
||||
- button "7 days" [ref=e101] [cursor=pointer]
|
||||
- button "30 days" [ref=e102] [cursor=pointer]
|
||||
- button "Custom" [ref=e103] [cursor=pointer]
|
||||
- generic [ref=e104]:
|
||||
- generic [ref=e107]:
|
||||
- generic [ref=e108]:
|
||||
- paragraph [ref=e109]: Total Hours
|
||||
- paragraph [ref=e111]: 9h 14m
|
||||
- img [ref=e113]
|
||||
- generic [ref=e118]:
|
||||
- generic [ref=e119]:
|
||||
- paragraph [ref=e120]: Working Days
|
||||
- paragraph [ref=e122]: "1"
|
||||
- img [ref=e124]
|
||||
- generic [ref=e129]:
|
||||
- generic [ref=e130]:
|
||||
- paragraph [ref=e131]: Projects
|
||||
- paragraph [ref=e133]: "3"
|
||||
- img [ref=e135]
|
||||
- generic [ref=e140]:
|
||||
- generic [ref=e141]:
|
||||
- paragraph [ref=e142]: Avg / Day
|
||||
- paragraph [ref=e144]: 9h 14m
|
||||
- img [ref=e146]
|
||||
- generic [ref=e151]:
|
||||
- generic [ref=e152]:
|
||||
- paragraph [ref=e153]: Top Project
|
||||
- paragraph [ref=e155]: Cc Dashboard
|
||||
- img [ref=e157]
|
||||
- generic [ref=e162]:
|
||||
- generic [ref=e163]:
|
||||
- paragraph [ref=e164]: Commits
|
||||
- paragraph [ref=e166]: "19"
|
||||
- img [ref=e168]
|
||||
- generic [ref=e171]:
|
||||
- generic [ref=e172]:
|
||||
- heading "Hours by Day" [level=3] [ref=e174]
|
||||
- 'generic "2026-05-06: 9h 14m" [ref=e177]'
|
||||
- generic [ref=e179]:
|
||||
- heading "By Day of Week" [level=3] [ref=e181]
|
||||
- generic [ref=e183]:
|
||||
- generic [ref=e184]:
|
||||
- 'generic "Mon: 0m"'
|
||||
- generic [ref=e185]: Mo
|
||||
- generic [ref=e186]:
|
||||
- 'generic "Tue: 0m"'
|
||||
- generic [ref=e187]: Tu
|
||||
- generic [ref=e188]:
|
||||
- 'generic "Wed: 9h 14m"'
|
||||
- generic [ref=e189]: We
|
||||
- generic [ref=e190]:
|
||||
- 'generic "Thu: 0m"'
|
||||
- generic [ref=e191]: Th
|
||||
- generic [ref=e192]:
|
||||
- 'generic "Fri: 0m"'
|
||||
- generic [ref=e193]: Fr
|
||||
- generic [ref=e194]:
|
||||
- 'generic "Sat: 0m"'
|
||||
- generic [ref=e195]: Sa
|
||||
- generic [ref=e196]:
|
||||
- 'generic "Sun: 0m"'
|
||||
- generic [ref=e197]: Su
|
||||
- generic [ref=e198]:
|
||||
- generic [ref=e199]:
|
||||
- heading "Tool Usage" [level=3] [ref=e201]
|
||||
- generic [ref=e203]:
|
||||
- generic [ref=e204]:
|
||||
- generic [ref=e205]: Bash
|
||||
- generic [ref=e208]: 49%
|
||||
- generic [ref=e209]:
|
||||
- generic [ref=e210]: Read
|
||||
- generic [ref=e213]: 19%
|
||||
- generic [ref=e214]:
|
||||
- generic [ref=e215]: Edit
|
||||
- generic [ref=e218]: 13%
|
||||
- generic [ref=e219]:
|
||||
- generic [ref=e220]: mcp__playwright__browser_click
|
||||
- generic [ref=e223]: 4%
|
||||
- generic [ref=e224]:
|
||||
- generic [ref=e225]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e228]: 3%
|
||||
- generic [ref=e229]:
|
||||
- generic [ref=e230]: Write
|
||||
- generic [ref=e233]: 2%
|
||||
- generic [ref=e234]:
|
||||
- generic [ref=e235]: ToolSearch
|
||||
- generic [ref=e238]: 2%
|
||||
- generic [ref=e239]:
|
||||
- generic [ref=e240]: Agent
|
||||
- generic [ref=e243]: 2%
|
||||
- generic [ref=e244]:
|
||||
- heading "Projects" [level=3] [ref=e246]
|
||||
- generic [ref=e248]:
|
||||
- generic [ref=e250]:
|
||||
- generic [ref=e251]: Cc Dashboard
|
||||
- generic [ref=e252]: 3h 33m
|
||||
- generic [ref=e254]:
|
||||
- generic [ref=e255]: Video Accessibility
|
||||
- generic [ref=e256]: 1h 22m
|
||||
- generic [ref=e258]:
|
||||
- generic [ref=e259]: Baic Dashboard
|
||||
- generic [ref=e260]: 31m
|
||||
- button "Open AI Assistant" [ref=e261] [cursor=pointer]:
|
||||
- img [ref=e262]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
200
.playwright-mcp/page-2026-05-06T20-35-32-311Z.yml
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e19]:
|
||||
- complementary [ref=e21]:
|
||||
- generic [ref=e23]:
|
||||
- img [ref=e25]
|
||||
- generic [ref=e27]:
|
||||
- paragraph [ref=e28]: CC Dashboard
|
||||
- paragraph [ref=e29]: Oliver Agency
|
||||
- navigation [ref=e30]:
|
||||
- link "Dashboard" [ref=e31] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e33]
|
||||
- generic [ref=e35]: Dashboard
|
||||
- link "Calendar" [ref=e36] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e37]
|
||||
- generic [ref=e39]: Calendar
|
||||
- link "Planner" [ref=e40] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e41]
|
||||
- generic [ref=e43]: Planner
|
||||
- link "Projects" [ref=e44] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e45]
|
||||
- generic [ref=e47]: Projects
|
||||
- link "Live Feed" [ref=e48] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e49]
|
||||
- generic [ref=e51]: Live Feed
|
||||
- link "Reports" [ref=e52] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e53]
|
||||
- generic [ref=e55]: Reports
|
||||
- link "Keys" [ref=e56] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e57]
|
||||
- generic [ref=e59]: Keys
|
||||
- link "DevOps" [ref=e60] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/devops
|
||||
- img [ref=e61]
|
||||
- generic [ref=e63]: DevOps
|
||||
- link "Settings" [ref=e64] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e65]
|
||||
- generic [ref=e68]: Settings
|
||||
- link "Admin" [ref=e69] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e70]
|
||||
- generic [ref=e72]: Admin
|
||||
- generic [ref=e74]:
|
||||
- generic [ref=e75]: VA
|
||||
- generic [ref=e76]:
|
||||
- paragraph [ref=e77]: vadymsamoilenko
|
||||
- generic [ref=e80]: Online
|
||||
- generic [ref=e81]:
|
||||
- banner [ref=e82]:
|
||||
- heading "Dashboard" [level=1] [ref=e84]
|
||||
- button "Toggle dark mode" [ref=e85] [cursor=pointer]:
|
||||
- img [ref=e86]
|
||||
- generic [ref=e89]:
|
||||
- generic [ref=e90]: VA
|
||||
- generic [ref=e91]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e92] [cursor=pointer]:
|
||||
- img [ref=e93]
|
||||
- text: Sign out
|
||||
- main [ref=e95]:
|
||||
- generic [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- heading "Overview" [level=2] [ref=e98]
|
||||
- generic [ref=e99]:
|
||||
- button "Today" [ref=e100] [cursor=pointer]
|
||||
- button "7 days" [active] [ref=e101] [cursor=pointer]
|
||||
- button "30 days" [ref=e102] [cursor=pointer]
|
||||
- button "Custom" [ref=e103] [cursor=pointer]
|
||||
- generic [ref=e104]:
|
||||
- generic [ref=e107]:
|
||||
- generic [ref=e108]:
|
||||
- paragraph [ref=e109]: Total Hours
|
||||
- paragraph [ref=e264]: 53h 10m
|
||||
- img [ref=e113]
|
||||
- generic [ref=e118]:
|
||||
- generic [ref=e119]:
|
||||
- paragraph [ref=e120]: Working Days
|
||||
- paragraph [ref=e265]: "5"
|
||||
- img [ref=e124]
|
||||
- generic [ref=e129]:
|
||||
- generic [ref=e130]:
|
||||
- paragraph [ref=e131]: Projects
|
||||
- paragraph [ref=e266]: "12"
|
||||
- img [ref=e135]
|
||||
- generic [ref=e140]:
|
||||
- generic [ref=e141]:
|
||||
- paragraph [ref=e142]: Avg / Day
|
||||
- paragraph [ref=e267]: 10h 38m
|
||||
- img [ref=e146]
|
||||
- generic [ref=e151]:
|
||||
- generic [ref=e152]:
|
||||
- paragraph [ref=e153]: Top Project
|
||||
- paragraph [ref=e268]: Video Accessibility
|
||||
- img [ref=e157]
|
||||
- generic [ref=e162]:
|
||||
- generic [ref=e163]:
|
||||
- paragraph [ref=e164]: Commits
|
||||
- paragraph [ref=e269]: "157"
|
||||
- img [ref=e168]
|
||||
- generic [ref=e171]:
|
||||
- generic [ref=e172]:
|
||||
- heading "Hours by Day" [level=3] [ref=e174]
|
||||
- generic [ref=e270]:
|
||||
- 'generic "2026-04-29: 14h 20m" [ref=e271]'
|
||||
- 'generic "2026-04-30: 13h 26m" [ref=e273]'
|
||||
- 'generic "2026-05-01: 10h 56m" [ref=e275]'
|
||||
- 'generic "2026-05-02: 0m" [ref=e277]'
|
||||
- 'generic "2026-05-03: 0m" [ref=e279]'
|
||||
- 'generic "2026-05-04: 0m" [ref=e281]'
|
||||
- 'generic "2026-05-05: 5h 13m" [ref=e283]'
|
||||
- 'generic "2026-05-06: 9h 14m" [ref=e285]'
|
||||
- generic [ref=e179]:
|
||||
- heading "By Day of Week" [level=3] [ref=e181]
|
||||
- generic [ref=e287]:
|
||||
- generic [ref=e288]:
|
||||
- 'generic "Mon: 0m"'
|
||||
- generic [ref=e289]: Mo
|
||||
- generic [ref=e290]:
|
||||
- 'generic "Tue: 5h 13m"'
|
||||
- generic [ref=e291]: Tu
|
||||
- generic [ref=e292]:
|
||||
- 'generic "Wed: 23h 35m"'
|
||||
- generic [ref=e293]: We
|
||||
- generic [ref=e294]:
|
||||
- 'generic "Thu: 13h 26m"'
|
||||
- generic [ref=e295]: Th
|
||||
- generic [ref=e296]:
|
||||
- 'generic "Fri: 10h 56m"'
|
||||
- generic [ref=e297]: Fr
|
||||
- generic [ref=e298]:
|
||||
- 'generic "Sat: 0m"'
|
||||
- generic [ref=e299]: Sa
|
||||
- generic [ref=e300]:
|
||||
- 'generic "Sun: 0m"'
|
||||
- generic [ref=e301]: Su
|
||||
- generic [ref=e198]:
|
||||
- generic [ref=e199]:
|
||||
- heading "Tool Usage" [level=3] [ref=e201]
|
||||
- generic [ref=e302]:
|
||||
- generic [ref=e303]:
|
||||
- generic [ref=e304]: Bash
|
||||
- generic [ref=e307]: 51%
|
||||
- generic [ref=e308]:
|
||||
- generic [ref=e309]: Read
|
||||
- generic [ref=e312]: 21%
|
||||
- generic [ref=e313]:
|
||||
- generic [ref=e314]: Edit
|
||||
- generic [ref=e317]: 17%
|
||||
- generic [ref=e318]:
|
||||
- generic [ref=e319]: Write
|
||||
- generic [ref=e322]: 3%
|
||||
- generic [ref=e323]:
|
||||
- generic [ref=e324]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e327]: 2%
|
||||
- generic [ref=e328]:
|
||||
- generic [ref=e329]: Agent
|
||||
- generic [ref=e332]: 1%
|
||||
- generic [ref=e333]:
|
||||
- generic [ref=e334]: mcp__playwright__browser_click
|
||||
- generic [ref=e337]: 1%
|
||||
- generic [ref=e338]:
|
||||
- generic [ref=e339]: ToolSearch
|
||||
- generic [ref=e342]: 1%
|
||||
- generic [ref=e244]:
|
||||
- heading "Projects" [level=3] [ref=e246]
|
||||
- generic [ref=e343]:
|
||||
- generic [ref=e345]:
|
||||
- generic [ref=e346]: Video Accessibility
|
||||
- generic [ref=e347]: 25h 41m
|
||||
- generic [ref=e349]:
|
||||
- generic [ref=e350]: General
|
||||
- generic [ref=e351]: 3h 44m
|
||||
- generic [ref=e353]:
|
||||
- generic [ref=e354]: Cc Dashboard
|
||||
- generic [ref=e355]: 3h 33m
|
||||
- generic [ref=e357]:
|
||||
- generic [ref=e358]: 3M Portal
|
||||
- generic [ref=e359]: 2h 56m
|
||||
- generic [ref=e361]:
|
||||
- generic [ref=e362]: Cinema Studio Pro Kling
|
||||
- generic [ref=e363]: 2h 2m
|
||||
- generic [ref=e365]:
|
||||
- generic [ref=e366]: Ford Qc
|
||||
- generic [ref=e367]: 1h 55m
|
||||
- generic [ref=e369]:
|
||||
- generic [ref=e370]: Video Accessibility Old
|
||||
- generic [ref=e371]: 1h 41m
|
||||
- generic [ref=e373]:
|
||||
- generic [ref=e374]: Oliver Sales Ops Platform
|
||||
- generic [ref=e375]: 59m
|
||||
- button "Open AI Assistant" [ref=e261] [cursor=pointer]:
|
||||
- img [ref=e262]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T20-35-38-619Z.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
4
.playwright-mcp/page-2026-05-06T20-39-56-336Z.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
- generic [active]:
|
||||
- generic:
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
177
.playwright-mcp/page-2026-05-06T20-40-04-492Z.yml
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e19]:
|
||||
- complementary [ref=e21]:
|
||||
- generic [ref=e23]:
|
||||
- img [ref=e25]
|
||||
- generic [ref=e27]:
|
||||
- paragraph [ref=e28]: CC Dashboard
|
||||
- paragraph [ref=e29]: Oliver Agency
|
||||
- navigation [ref=e30]:
|
||||
- link "Dashboard" [ref=e31] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e33]
|
||||
- generic [ref=e35]: Dashboard
|
||||
- link "Calendar" [ref=e36] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e37]
|
||||
- generic [ref=e39]: Calendar
|
||||
- link "Planner" [ref=e40] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e41]
|
||||
- generic [ref=e43]: Planner
|
||||
- link "Projects" [ref=e44] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e45]
|
||||
- generic [ref=e47]: Projects
|
||||
- link "Live Feed" [ref=e48] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e49]
|
||||
- generic [ref=e51]: Live Feed
|
||||
- link "Reports" [ref=e52] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e53]
|
||||
- generic [ref=e55]: Reports
|
||||
- link "Keys" [ref=e56] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e57]
|
||||
- generic [ref=e59]: Keys
|
||||
- link "DevOps" [ref=e60] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/devops
|
||||
- img [ref=e61]
|
||||
- generic [ref=e63]: DevOps
|
||||
- link "Settings" [ref=e64] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e65]
|
||||
- generic [ref=e68]: Settings
|
||||
- link "Admin" [ref=e69] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e70]
|
||||
- generic [ref=e72]: Admin
|
||||
- generic [ref=e74]:
|
||||
- generic [ref=e75]: VA
|
||||
- generic [ref=e76]:
|
||||
- paragraph [ref=e77]: vadymsamoilenko
|
||||
- generic [ref=e80]: Online
|
||||
- generic [ref=e81]:
|
||||
- banner [ref=e82]:
|
||||
- heading "Dashboard" [level=1] [ref=e84]
|
||||
- button "Toggle dark mode" [ref=e85] [cursor=pointer]:
|
||||
- img [ref=e86]
|
||||
- generic [ref=e89]:
|
||||
- generic [ref=e90]: VA
|
||||
- generic [ref=e91]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e92] [cursor=pointer]:
|
||||
- img [ref=e93]
|
||||
- text: Sign out
|
||||
- main [ref=e95]:
|
||||
- generic [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- heading "Overview" [level=2] [ref=e98]
|
||||
- generic [ref=e99]:
|
||||
- button "Today" [ref=e100] [cursor=pointer]
|
||||
- button "7 days" [ref=e101] [cursor=pointer]
|
||||
- button "30 days" [ref=e102] [cursor=pointer]
|
||||
- button "Custom" [ref=e103] [cursor=pointer]
|
||||
- generic [ref=e104]:
|
||||
- generic [ref=e107]:
|
||||
- generic [ref=e108]:
|
||||
- paragraph [ref=e109]: Total Hours
|
||||
- paragraph [ref=e111]: 9h 14m
|
||||
- img [ref=e113]
|
||||
- generic [ref=e118]:
|
||||
- generic [ref=e119]:
|
||||
- paragraph [ref=e120]: Working Days
|
||||
- paragraph [ref=e122]: "1"
|
||||
- img [ref=e124]
|
||||
- generic [ref=e129]:
|
||||
- generic [ref=e130]:
|
||||
- paragraph [ref=e131]: Projects
|
||||
- paragraph [ref=e133]: "3"
|
||||
- img [ref=e135]
|
||||
- generic [ref=e140]:
|
||||
- generic [ref=e141]:
|
||||
- paragraph [ref=e142]: Avg / Day
|
||||
- paragraph [ref=e144]: 9h 14m
|
||||
- img [ref=e146]
|
||||
- generic [ref=e151]:
|
||||
- generic [ref=e152]:
|
||||
- paragraph [ref=e153]: Top Project
|
||||
- paragraph [ref=e155]: Cc Dashboard
|
||||
- img [ref=e157]
|
||||
- generic [ref=e162]:
|
||||
- generic [ref=e163]:
|
||||
- paragraph [ref=e164]: Commits
|
||||
- paragraph [ref=e166]: "19"
|
||||
- img [ref=e168]
|
||||
- generic [ref=e171]:
|
||||
- generic [ref=e172]:
|
||||
- heading "Hours by Day" [level=3] [ref=e174]
|
||||
- 'generic "2026-05-06: 9h 14m" [ref=e177]'
|
||||
- generic [ref=e178]:
|
||||
- heading "By Day of Week" [level=3] [ref=e180]
|
||||
- generic [ref=e182]:
|
||||
- generic [ref=e183]:
|
||||
- 'generic "Mon: 0m" [ref=e184]'
|
||||
- generic [ref=e185]: Mo
|
||||
- generic [ref=e186]:
|
||||
- 'generic "Tue: 0m" [ref=e187]'
|
||||
- generic [ref=e188]: Tu
|
||||
- generic [ref=e189]:
|
||||
- 'generic "Wed: 9h 14m" [ref=e190]'
|
||||
- generic [ref=e191]: We
|
||||
- generic [ref=e192]:
|
||||
- 'generic "Thu: 0m" [ref=e193]'
|
||||
- generic [ref=e194]: Th
|
||||
- generic [ref=e195]:
|
||||
- 'generic "Fri: 0m" [ref=e196]'
|
||||
- generic [ref=e197]: Fr
|
||||
- generic [ref=e198]:
|
||||
- 'generic "Sat: 0m" [ref=e199]'
|
||||
- generic [ref=e200]: Sa
|
||||
- generic [ref=e201]:
|
||||
- 'generic "Sun: 0m" [ref=e202]'
|
||||
- generic [ref=e203]: Su
|
||||
- generic [ref=e204]:
|
||||
- generic [ref=e205]:
|
||||
- heading "Tool Usage" [level=3] [ref=e207]
|
||||
- generic [ref=e209]:
|
||||
- generic [ref=e210]:
|
||||
- generic [ref=e211]: Bash
|
||||
- generic [ref=e214]: 49%
|
||||
- generic [ref=e215]:
|
||||
- generic [ref=e216]: Read
|
||||
- generic [ref=e219]: 19%
|
||||
- generic [ref=e220]:
|
||||
- generic [ref=e221]: Edit
|
||||
- generic [ref=e224]: 13%
|
||||
- generic [ref=e225]:
|
||||
- generic [ref=e226]: mcp__playwright__browser_click
|
||||
- generic [ref=e229]: 4%
|
||||
- generic [ref=e230]:
|
||||
- generic [ref=e231]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e234]: 3%
|
||||
- generic [ref=e235]:
|
||||
- generic [ref=e236]: Write
|
||||
- generic [ref=e239]: 2%
|
||||
- generic [ref=e240]:
|
||||
- generic [ref=e241]: ToolSearch
|
||||
- generic [ref=e244]: 2%
|
||||
- generic [ref=e245]:
|
||||
- generic [ref=e246]: Agent
|
||||
- generic [ref=e249]: 2%
|
||||
- generic [ref=e250]:
|
||||
- heading "Projects" [level=3] [ref=e252]
|
||||
- generic [ref=e254]:
|
||||
- generic [ref=e256]:
|
||||
- generic [ref=e257]: Cc Dashboard
|
||||
- generic [ref=e258]: 3h 33m
|
||||
- generic [ref=e260]:
|
||||
- generic [ref=e261]: Video Accessibility
|
||||
- generic [ref=e262]: 1h 22m
|
||||
- generic [ref=e264]:
|
||||
- generic [ref=e265]: Baic Dashboard
|
||||
- generic [ref=e266]: 31m
|
||||
- button "Open AI Assistant" [ref=e267] [cursor=pointer]:
|
||||
- img [ref=e268]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
200
.playwright-mcp/page-2026-05-06T20-40-09-094Z.yml
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
- generic [ref=e2]:
|
||||
- generic [ref=e19]:
|
||||
- complementary [ref=e21]:
|
||||
- generic [ref=e23]:
|
||||
- img [ref=e25]
|
||||
- generic [ref=e27]:
|
||||
- paragraph [ref=e28]: CC Dashboard
|
||||
- paragraph [ref=e29]: Oliver Agency
|
||||
- navigation [ref=e30]:
|
||||
- link "Dashboard" [ref=e31] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/
|
||||
- img [ref=e33]
|
||||
- generic [ref=e35]: Dashboard
|
||||
- link "Calendar" [ref=e36] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/calendar
|
||||
- img [ref=e37]
|
||||
- generic [ref=e39]: Calendar
|
||||
- link "Planner" [ref=e40] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/planner
|
||||
- img [ref=e41]
|
||||
- generic [ref=e43]: Planner
|
||||
- link "Projects" [ref=e44] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/projects
|
||||
- img [ref=e45]
|
||||
- generic [ref=e47]: Projects
|
||||
- link "Live Feed" [ref=e48] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/live
|
||||
- img [ref=e49]
|
||||
- generic [ref=e51]: Live Feed
|
||||
- link "Reports" [ref=e52] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/reports
|
||||
- img [ref=e53]
|
||||
- generic [ref=e55]: Reports
|
||||
- link "Keys" [ref=e56] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/keys
|
||||
- img [ref=e57]
|
||||
- generic [ref=e59]: Keys
|
||||
- link "DevOps" [ref=e60] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/devops
|
||||
- img [ref=e61]
|
||||
- generic [ref=e63]: DevOps
|
||||
- link "Settings" [ref=e64] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/settings
|
||||
- img [ref=e65]
|
||||
- generic [ref=e68]: Settings
|
||||
- link "Admin" [ref=e69] [cursor=pointer]:
|
||||
- /url: /cc-dashboard/admin
|
||||
- img [ref=e70]
|
||||
- generic [ref=e72]: Admin
|
||||
- generic [ref=e74]:
|
||||
- generic [ref=e75]: VA
|
||||
- generic [ref=e76]:
|
||||
- paragraph [ref=e77]: vadymsamoilenko
|
||||
- generic [ref=e80]: Online
|
||||
- generic [ref=e81]:
|
||||
- banner [ref=e82]:
|
||||
- heading "Dashboard" [level=1] [ref=e84]
|
||||
- button "Toggle dark mode" [ref=e85] [cursor=pointer]:
|
||||
- img [ref=e86]
|
||||
- generic [ref=e89]:
|
||||
- generic [ref=e90]: VA
|
||||
- generic [ref=e91]: vadymsamoilenko
|
||||
- button "Sign out" [ref=e92] [cursor=pointer]:
|
||||
- img [ref=e93]
|
||||
- text: Sign out
|
||||
- main [ref=e95]:
|
||||
- generic [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- heading "Overview" [level=2] [ref=e98]
|
||||
- generic [ref=e99]:
|
||||
- button "Today" [ref=e100] [cursor=pointer]
|
||||
- button "7 days" [active] [ref=e101] [cursor=pointer]
|
||||
- button "30 days" [ref=e102] [cursor=pointer]
|
||||
- button "Custom" [ref=e103] [cursor=pointer]
|
||||
- generic [ref=e104]:
|
||||
- generic [ref=e107]:
|
||||
- generic [ref=e108]:
|
||||
- paragraph [ref=e109]: Total Hours
|
||||
- paragraph [ref=e270]: 53h 10m
|
||||
- img [ref=e113]
|
||||
- generic [ref=e118]:
|
||||
- generic [ref=e119]:
|
||||
- paragraph [ref=e120]: Working Days
|
||||
- paragraph [ref=e271]: "5"
|
||||
- img [ref=e124]
|
||||
- generic [ref=e129]:
|
||||
- generic [ref=e130]:
|
||||
- paragraph [ref=e131]: Projects
|
||||
- paragraph [ref=e272]: "12"
|
||||
- img [ref=e135]
|
||||
- generic [ref=e140]:
|
||||
- generic [ref=e141]:
|
||||
- paragraph [ref=e142]: Avg / Day
|
||||
- paragraph [ref=e273]: 10h 38m
|
||||
- img [ref=e146]
|
||||
- generic [ref=e151]:
|
||||
- generic [ref=e152]:
|
||||
- paragraph [ref=e153]: Top Project
|
||||
- paragraph [ref=e274]: Video Accessibility
|
||||
- img [ref=e157]
|
||||
- generic [ref=e162]:
|
||||
- generic [ref=e163]:
|
||||
- paragraph [ref=e164]: Commits
|
||||
- paragraph [ref=e275]: "157"
|
||||
- img [ref=e168]
|
||||
- generic [ref=e171]:
|
||||
- generic [ref=e172]:
|
||||
- heading "Hours by Day" [level=3] [ref=e174]
|
||||
- generic [ref=e276]:
|
||||
- 'generic "2026-04-29: 14h 20m" [ref=e277]'
|
||||
- 'generic "2026-04-30: 13h 26m" [ref=e278]'
|
||||
- 'generic "2026-05-01: 10h 56m" [ref=e279]'
|
||||
- 'generic "2026-05-02: 0m" [ref=e280]'
|
||||
- 'generic "2026-05-03: 0m" [ref=e281]'
|
||||
- 'generic "2026-05-04: 0m" [ref=e282]'
|
||||
- 'generic "2026-05-05: 5h 13m" [ref=e283]'
|
||||
- 'generic "2026-05-06: 9h 14m" [ref=e284]'
|
||||
- generic [ref=e178]:
|
||||
- heading "By Day of Week" [level=3] [ref=e180]
|
||||
- generic [ref=e285]:
|
||||
- generic [ref=e286]:
|
||||
- 'generic "Mon: 0m" [ref=e287]'
|
||||
- generic [ref=e288]: Mo
|
||||
- generic [ref=e289]:
|
||||
- 'generic "Tue: 5h 13m" [ref=e290]'
|
||||
- generic [ref=e291]: Tu
|
||||
- generic [ref=e292]:
|
||||
- 'generic "Wed: 23h 35m" [ref=e293]'
|
||||
- generic [ref=e294]: We
|
||||
- generic [ref=e295]:
|
||||
- 'generic "Thu: 13h 26m" [ref=e296]'
|
||||
- generic [ref=e297]: Th
|
||||
- generic [ref=e298]:
|
||||
- 'generic "Fri: 10h 56m" [ref=e299]'
|
||||
- generic [ref=e300]: Fr
|
||||
- generic [ref=e301]:
|
||||
- 'generic "Sat: 0m" [ref=e302]'
|
||||
- generic [ref=e303]: Sa
|
||||
- generic [ref=e304]:
|
||||
- 'generic "Sun: 0m" [ref=e305]'
|
||||
- generic [ref=e306]: Su
|
||||
- generic [ref=e204]:
|
||||
- generic [ref=e205]:
|
||||
- heading "Tool Usage" [level=3] [ref=e207]
|
||||
- generic [ref=e307]:
|
||||
- generic [ref=e308]:
|
||||
- generic [ref=e309]: Bash
|
||||
- generic [ref=e312]: 51%
|
||||
- generic [ref=e313]:
|
||||
- generic [ref=e314]: Read
|
||||
- generic [ref=e317]: 21%
|
||||
- generic [ref=e318]:
|
||||
- generic [ref=e319]: Edit
|
||||
- generic [ref=e322]: 17%
|
||||
- generic [ref=e323]:
|
||||
- generic [ref=e324]: Write
|
||||
- generic [ref=e327]: 3%
|
||||
- generic [ref=e328]:
|
||||
- generic [ref=e329]: mcp__playwright__browser_take_screenshot
|
||||
- generic [ref=e332]: 2%
|
||||
- generic [ref=e333]:
|
||||
- generic [ref=e334]: Agent
|
||||
- generic [ref=e337]: 1%
|
||||
- generic [ref=e338]:
|
||||
- generic [ref=e339]: mcp__playwright__browser_click
|
||||
- generic [ref=e342]: 1%
|
||||
- generic [ref=e343]:
|
||||
- generic [ref=e344]: ToolSearch
|
||||
- generic [ref=e347]: 1%
|
||||
- generic [ref=e250]:
|
||||
- heading "Projects" [level=3] [ref=e252]
|
||||
- generic [ref=e348]:
|
||||
- generic [ref=e350]:
|
||||
- generic [ref=e351]: Video Accessibility
|
||||
- generic [ref=e352]: 25h 41m
|
||||
- generic [ref=e354]:
|
||||
- generic [ref=e355]: General
|
||||
- generic [ref=e356]: 3h 44m
|
||||
- generic [ref=e358]:
|
||||
- generic [ref=e359]: Cc Dashboard
|
||||
- generic [ref=e360]: 3h 33m
|
||||
- generic [ref=e362]:
|
||||
- generic [ref=e363]: 3M Portal
|
||||
- generic [ref=e364]: 2h 56m
|
||||
- generic [ref=e366]:
|
||||
- generic [ref=e367]: Cinema Studio Pro Kling
|
||||
- generic [ref=e368]: 2h 2m
|
||||
- generic [ref=e370]:
|
||||
- generic [ref=e371]: Ford Qc
|
||||
- generic [ref=e372]: 1h 55m
|
||||
- generic [ref=e374]:
|
||||
- generic [ref=e375]: Video Accessibility Old
|
||||
- generic [ref=e376]: 1h 41m
|
||||
- generic [ref=e378]:
|
||||
- generic [ref=e379]: Oliver Sales Ops Platform
|
||||
- generic [ref=e380]: 59m
|
||||
- button "Open AI Assistant" [ref=e267] [cursor=pointer]:
|
||||
- img [ref=e268]
|
||||
- region "Notifications alt+T":
|
||||
- list
|
||||
BIN
.playwright-mcp/page-2026-05-06T20-40-11-219Z.png
Normal file
|
After Width: | Height: | Size: 108 KiB |
|
|
@ -22,3 +22,12 @@
|
|||
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
</Location>
|
||||
|
||||
# Planka kanban board
|
||||
<Location /board/>
|
||||
ProxyPreserveHost On
|
||||
ProxyPass http://127.0.0.1:1337/
|
||||
ProxyPassReverse http://127.0.0.1:1337/
|
||||
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
</Location>
|
||||
|
|
|
|||
|
|
@ -26,5 +26,42 @@ services:
|
|||
retries: 10
|
||||
restart: unless-stopped
|
||||
|
||||
planka:
|
||||
image: ghcr.io/plankanban/planka:latest
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "1337:1337"
|
||||
environment:
|
||||
BASE_URL: ${PLANKA_BASE_URL:-https://optical-dev.oliver.solutions/board}
|
||||
DATABASE_URL: postgresql://planka:planka@planka-db:5432/planka
|
||||
SECRET_KEY: ${PLANKA_SECRET_KEY}
|
||||
TRUST_PROXY: "1"
|
||||
volumes:
|
||||
- planka-avatars:/app/public/user-avatars
|
||||
- planka-backgrounds:/app/public/project-background-images
|
||||
- planka-attachments:/app/private/attachments
|
||||
depends_on:
|
||||
planka-db:
|
||||
condition: service_healthy
|
||||
|
||||
planka-db:
|
||||
image: postgres:16-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: planka
|
||||
POSTGRES_USER: planka
|
||||
POSTGRES_PASSWORD: planka
|
||||
volumes:
|
||||
- planka-db-data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U planka -d planka"]
|
||||
interval: 5s
|
||||
timeout: 3s
|
||||
retries: 10
|
||||
|
||||
volumes:
|
||||
pgdata:
|
||||
planka-db-data:
|
||||
planka-avatars:
|
||||
planka-backgrounds:
|
||||
planka-attachments:
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
import{d as _,u as y,x as h,c as r,a as t,e as n,k as v,w as d,f as b,q as m,o as s,F as g,r as k,t as a,p as u,h as A}from"./index-Coy22yOp.js";import{a as w}from"./admin-p6BxWcDa.js";import{_ as B,a as S}from"./CardContent.vue_vue_type_script_setup_true_lang-DUVu0jq9.js";import{_ as f}from"./Badge.vue_vue_type_script_setup_true_lang-CLRDsB_H.js";import{_ as V}from"./Spinner.vue_vue_type_script_setup_true_lang-B7DG-xnx.js";import{a as $}from"./utils-7WVCegLb.js";const N={class:"p-6"},C={key:0,class:"flex items-center justify-center h-20"},D={class:"w-full"},E={class:"px-4 py-3"},F={class:"text-sm font-medium text-foreground"},R={class:"px-4 py-3 text-sm text-muted-foreground"},U={class:"px-4 py-3"},j={class:"px-4 py-3"},q={class:"px-4 py-3 text-xs text-muted-foreground"},H=_({__name:"AdminView",setup(I){const x=y(),p=b(),i=m([]),l=m(!1);return h(async()=>{if(!x.isAdmin){p.push("/");return}l.value=!0;try{const c=await w.users();i.value=c.data}finally{l.value=!1}}),(c,o)=>(s(),r("div",N,[o[1]||(o[1]=t("h2",{class:"text-lg font-semibold text-foreground mb-6"},"Admin — Users",-1)),l.value?(s(),r("div",C,[n(V,{class:"text-primary"})])):(s(),v(B,{key:1},{default:d(()=>[n(S,{class:"p-0"},{default:d(()=>[t("table",D,[o[0]||(o[0]=t("thead",null,[t("tr",{class:"border-b border-border"},[t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"User"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Email"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Role"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Status"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Joined")])],-1)),t("tbody",null,[(s(!0),r(g,null,k(i.value,e=>(s(),r("tr",{key:e.id,class:"border-b border-border last:border-0 hover:bg-muted/30"},[t("td",E,[t("p",F,a(e.username),1)]),t("td",R,a(e.email),1),t("td",U,[n(f,{variant:e.role==="admin"?"default":"secondary",class:"text-xs"},{default:d(()=>[u(a(e.role),1)]),_:2},1032,["variant"])]),t("td",j,[n(f,{variant:e.is_active?"success":"outline",class:"text-xs"},{default:d(()=>[u(a(e.is_active?"Active":"Inactive"),1)]),_:2},1032,["variant"])]),t("td",q,a(A($)(e.created_at)),1)]))),128))])])]),_:1})]),_:1}))]))}});export{H as default};
|
||||
import{d as p,u as y,y as h,c as r,a as t,e as n,k as v,w as d,f as b,s as m,o as s,F as g,r as k,t as a,q as u,h as A}from"./index-BP_aNEdP.js";import{a as w}from"./admin-C27haAMd.js";import{_ as B,a as S}from"./CardContent.vue_vue_type_script_setup_true_lang-B8VjSxLa.js";import{_ as f}from"./Badge.vue_vue_type_script_setup_true_lang-B2H6z2RD.js";import{_ as V}from"./Spinner.vue_vue_type_script_setup_true_lang-Cu49-Cc4.js";import{a as $}from"./utils-7WVCegLb.js";const N={class:"p-6"},C={key:0,class:"flex items-center justify-center h-20"},D={class:"w-full"},E={class:"px-4 py-3"},F={class:"text-sm font-medium text-foreground"},R={class:"px-4 py-3 text-sm text-muted-foreground"},U={class:"px-4 py-3"},j={class:"px-4 py-3"},q={class:"px-4 py-3 text-xs text-muted-foreground"},H=p({__name:"AdminView",setup(I){const x=y(),_=b(),i=m([]),l=m(!1);return h(async()=>{if(!x.isAdmin){_.push("/");return}l.value=!0;try{const c=await w.users();i.value=c.data}finally{l.value=!1}}),(c,o)=>(s(),r("div",N,[o[1]||(o[1]=t("h2",{class:"text-lg font-semibold text-foreground mb-6"},"Admin — Users",-1)),l.value?(s(),r("div",C,[n(V,{class:"text-primary"})])):(s(),v(B,{key:1},{default:d(()=>[n(S,{class:"p-0"},{default:d(()=>[t("table",D,[o[0]||(o[0]=t("thead",null,[t("tr",{class:"border-b border-border"},[t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"User"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Email"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Role"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Status"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Joined")])],-1)),t("tbody",null,[(s(!0),r(g,null,k(i.value,e=>(s(),r("tr",{key:e.id,class:"border-b border-border last:border-0 hover:bg-muted/30"},[t("td",E,[t("p",F,a(e.username),1)]),t("td",R,a(e.email),1),t("td",U,[n(f,{variant:e.role==="admin"?"default":"secondary",class:"text-xs"},{default:d(()=>[u(a(e.role),1)]),_:2},1032,["variant"])]),t("td",j,[n(f,{variant:e.is_active?"success":"outline",class:"text-xs"},{default:d(()=>[u(a(e.is_active?"Active":"Inactive"),1)]),_:2},1032,["variant"])]),t("td",q,a(A($)(e.created_at)),1)]))),128))])])]),_:1})]),_:1}))]))}});export{H as default};
|
||||
1
src/static/assets/AppLayout-CpcGPOud.js
Normal file
|
|
@ -1 +1 @@
|
|||
import{c as a}from"./utils-7WVCegLb.js";import{d as n,o,c as s,n as d,h as i,m as c}from"./index-Coy22yOp.js";const f=n({__name:"Badge",props:{variant:{default:"default"},class:{}},setup(r){const e=r;return(t,l)=>(o(),s("span",{class:d(i(a)("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-semibold transition-colors",{"bg-primary text-primary-foreground":e.variant==="default","bg-secondary text-secondary-foreground":e.variant==="secondary","bg-destructive text-destructive-foreground":e.variant==="destructive","border border-border text-foreground":e.variant==="outline","bg-emerald-500/20 text-emerald-400":e.variant==="success","bg-amber-500/20 text-amber-400":e.variant==="warning"},e.class))},[c(t.$slots,"default")],2))}});export{f as _};
|
||||
import{c as a}from"./utils-7WVCegLb.js";import{d as n,o,c as s,n as d,h as i,p as c}from"./index-BP_aNEdP.js";const f=n({__name:"Badge",props:{variant:{default:"default"},class:{}},setup(r){const e=r;return(t,l)=>(o(),s("span",{class:d(i(a)("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-semibold transition-colors",{"bg-primary text-primary-foreground":e.variant==="default","bg-secondary text-secondary-foreground":e.variant==="secondary","bg-destructive text-destructive-foreground":e.variant==="destructive","border border-border text-foreground":e.variant==="outline","bg-emerald-500/20 text-emerald-400":e.variant==="success","bg-amber-500/20 text-amber-400":e.variant==="warning"},e.class))},[c(t.$slots,"default")],2))}});export{f as _};
|
||||
|
|
@ -1 +1 @@
|
|||
import{_ as c}from"./Spinner.vue_vue_type_script_setup_true_lang-B7DG-xnx.js";import{c as l}from"./utils-7WVCegLb.js";import{d as u,c as m,n as f,k as b,i as v,m as g,j as p,o as n}from"./index-Coy22yOp.js";const y=["type","disabled"],z=u({__name:"Button",props:{variant:{default:"default"},size:{default:"md"},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},type:{default:"button"},class:{}},emits:["click"],setup(t,{emit:s}){const e=t,a=s,r=p(()=>l("inline-flex items-center justify-center rounded-md font-medium transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2","disabled:pointer-events-none disabled:opacity-50",{"bg-primary text-primary-foreground hover:bg-primary/90":e.variant==="default","border border-input bg-background hover:bg-accent hover:text-accent-foreground":e.variant==="outline","hover:bg-accent hover:text-accent-foreground":e.variant==="ghost","bg-destructive text-destructive-foreground hover:bg-destructive/90":e.variant==="destructive","bg-secondary text-secondary-foreground hover:bg-secondary/80":e.variant==="secondary","underline-offset-4 hover:underline text-primary":e.variant==="link","h-8 px-3 text-xs":e.size==="sm","h-10 px-4 py-2 text-sm":e.size==="md","h-11 px-8 text-base":e.size==="lg","h-9 w-9 p-0":e.size==="icon"},e.class));return(i,o)=>(n(),m("button",{class:f(r.value),type:t.type,disabled:t.disabled||t.loading,onClick:o[0]||(o[0]=d=>a("click",d))},[t.loading?(n(),b(c,{key:0,size:"sm",class:"mr-2"})):v("",!0),g(i.$slots,"default")],10,y))}});export{z as _};
|
||||
import{_ as c}from"./Spinner.vue_vue_type_script_setup_true_lang-Cu49-Cc4.js";import{c as l}from"./utils-7WVCegLb.js";import{d as u,c as f,n as m,k as b,i as v,p as g,j as p,o as n}from"./index-BP_aNEdP.js";const y=["type","disabled"],z=u({__name:"Button",props:{variant:{default:"default"},size:{default:"md"},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},type:{default:"button"},class:{}},emits:["click"],setup(t,{emit:s}){const e=t,a=s,r=p(()=>l("inline-flex items-center justify-center rounded-md font-medium transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2","disabled:pointer-events-none disabled:opacity-50",{"bg-primary text-primary-foreground hover:bg-primary/90":e.variant==="default","border border-input bg-background hover:bg-accent hover:text-accent-foreground":e.variant==="outline","hover:bg-accent hover:text-accent-foreground":e.variant==="ghost","bg-destructive text-destructive-foreground hover:bg-destructive/90":e.variant==="destructive","bg-secondary text-secondary-foreground hover:bg-secondary/80":e.variant==="secondary","underline-offset-4 hover:underline text-primary":e.variant==="link","h-8 px-3 text-xs":e.size==="sm","h-10 px-4 py-2 text-sm":e.size==="md","h-11 px-8 text-base":e.size==="lg","h-9 w-9 p-0":e.size==="icon"},e.class));return(i,o)=>(n(),f("button",{class:m(r.value),type:t.type,disabled:t.disabled||t.loading,onClick:o[0]||(o[0]=d=>a("click",d))},[t.loading?(n(),b(c,{key:0,size:"sm",class:"mr-2"})):v("",!0),g(i.$slots,"default")],10,y))}});export{z as _};
|
||||
2
src/static/assets/CalendarView-njGDFx7r.js
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{c as e}from"./utils-7WVCegLb.js";import{d as o,c as n,n as t,h as c,p,o as l}from"./index-BP_aNEdP.js";const _=o({__name:"Card",props:{class:{}},setup(s){const a=s;return(r,d)=>(l(),n("div",{class:t(c(e)("rounded-lg border bg-card text-card-foreground shadow-sm",a.class))},[p(r.$slots,"default")],2))}}),f=o({__name:"CardContent",props:{class:{}},setup(s){const a=s;return(r,d)=>(l(),n("div",{class:t(c(e)("p-6 pt-0",a.class))},[p(r.$slots,"default")],2))}});export{_,f as a};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{c as e}from"./utils-7WVCegLb.js";import{d as o,c as n,n as t,h as c,m as l,o as p}from"./index-Coy22yOp.js";const _=o({__name:"Card",props:{class:{}},setup(s){const a=s;return(r,d)=>(p(),n("div",{class:t(c(e)("rounded-lg border bg-card text-card-foreground shadow-sm",a.class))},[l(r.$slots,"default")],2))}}),f=o({__name:"CardContent",props:{class:{}},setup(s){const a=s;return(r,d)=>(p(),n("div",{class:t(c(e)("p-6 pt-0",a.class))},[l(r.$slots,"default")],2))}});export{_,f as a};
|
||||
|
|
@ -0,0 +1 @@
|
|||
import{c as t}from"./utils-7WVCegLb.js";import{d as n,o,c as r,n as c,h as l,p}from"./index-BP_aNEdP.js";const f=n({__name:"CardHeader",props:{class:{}},setup(s){const e=s;return(a,i)=>(o(),r("div",{class:c(l(t)("flex flex-col space-y-1.5 p-6",e.class))},[p(a.$slots,"default")],2))}}),_=n({__name:"CardTitle",props:{class:{}},setup(s){const e=s;return(a,i)=>(o(),r("h3",{class:c(l(t)("text-lg font-semibold leading-none tracking-tight",e.class))},[p(a.$slots,"default")],2))}});export{f as _,_ as a};
|
||||
|
|
@ -1 +0,0 @@
|
|||
import{c as t}from"./utils-7WVCegLb.js";import{d as n,o,c as r,n as c,h as l,m as p}from"./index-Coy22yOp.js";const f=n({__name:"CardHeader",props:{class:{}},setup(s){const e=s;return(a,m)=>(o(),r("div",{class:c(l(t)("flex flex-col space-y-1.5 p-6",e.class))},[p(a.$slots,"default")],2))}}),_=n({__name:"CardTitle",props:{class:{}},setup(s){const e=s;return(a,m)=>(o(),r("h3",{class:c(l(t)("text-lg font-semibold leading-none tracking-tight",e.class))},[p(a.$slots,"default")],2))}});export{f as _,_ as a};
|
||||
1
src/static/assets/DashboardView-CEeTSEhN.js
Normal file
|
|
@ -1 +1 @@
|
|||
import{u as D}from"./devops-CA4DvhgQ.js";import{_}from"./Input.vue_vue_type_script_setup_true_lang-BI-qyrUT.js";import{_ as V}from"./Button.vue_vue_type_script_setup_true_lang-B1z2uxja.js";import{d as j,q as c,o as i,c as m,h as a,a as o,p as g,t as d,i as p,e as v,w as k,k as z,K as u}from"./index-Coy22yOp.js";const B={class:"space-y-4"},I={key:0,class:"text-xs text-muted-foreground space-y-1"},N={class:"text-foreground"},P={class:"text-foreground"},S={key:0},U={key:1,class:"text-red-400"},b={class:"grid grid-cols-2 gap-3"},A={class:"space-y-1.5"},F={class:"space-y-1.5"},O={class:"space-y-1.5"},q={class:"flex items-center gap-2"},G=j({__name:"DevopsConnectForm",setup(E){var y,x;const t=D(),n=c(((y=t.integration)==null?void 0:y.organization)??""),r=c(((x=t.integration)==null?void 0:x.project)??""),s=c(""),f=c(!1);async function w(){if(!n.value||!r.value||!s.value){u.error("All fields are required");return}f.value=!0;try{await t.saveIntegration({organization:n.value,project:r.value,pat:s.value}),s.value="",u.success("Integration saved")}catch{u.error("Failed to save integration")}finally{f.value=!1}}async function C(){if(confirm("Delete ADO integration?"))try{await t.deleteIntegration(),n.value="",r.value="",s.value="",u.success("Integration deleted")}catch{u.error("Failed to delete integration")}}return(K,e)=>(i(),m("div",B,[a(t).integration?(i(),m("div",I,[o("p",null,[e[3]||(e[3]=g(" Connected to ",-1)),o("strong",N,d(a(t).integration.organization),1),e[4]||(e[4]=g(" / ",-1)),o("strong",P,d(a(t).integration.project),1)]),a(t).integration.last_synced_at?(i(),m("p",S," Last synced: "+d(new Date(a(t).integration.last_synced_at).toLocaleString()),1)):p("",!0),a(t).integration.last_sync_error?(i(),m("p",U," Error: "+d(a(t).integration.last_sync_error),1)):p("",!0)])):p("",!0),o("div",b,[o("div",A,[e[5]||(e[5]=o("label",{class:"text-sm font-medium text-foreground"},"Organization",-1)),v(_,{modelValue:n.value,"onUpdate:modelValue":e[0]||(e[0]=l=>n.value=l),placeholder:"myorg"},null,8,["modelValue"])]),o("div",F,[e[6]||(e[6]=o("label",{class:"text-sm font-medium text-foreground"},"Project",-1)),v(_,{modelValue:r.value,"onUpdate:modelValue":e[1]||(e[1]=l=>r.value=l),placeholder:"myproject"},null,8,["modelValue"])])]),o("div",O,[e[7]||(e[7]=o("label",{class:"text-sm font-medium text-foreground"}," Personal Access Token ",-1)),v(_,{modelValue:s.value,"onUpdate:modelValue":e[2]||(e[2]=l=>s.value=l),type:"password",placeholder:"••••••••",autocomplete:"new-password"},null,8,["modelValue"])]),o("div",q,[v(V,{loading:f.value,onClick:w},{default:k(()=>[g(d(a(t).integration?"Update":"Connect"),1)]),_:1},8,["loading"]),a(t).integration?(i(),z(V,{key:0,variant:"destructive",size:"sm",onClick:C},{default:k(()=>[...e[8]||(e[8]=[g(" Disconnect ",-1)])]),_:1})):p("",!0)])]))}});export{G as _};
|
||||
import{u as D}from"./devops-DxRDHPW5.js";import{_}from"./Input.vue_vue_type_script_setup_true_lang-SeygKlpx.js";import{_ as V}from"./Button.vue_vue_type_script_setup_true_lang-B_YE_XNW.js";import{d as j,s as c,o as i,c as m,h as a,a as o,q as g,t as d,i as p,e as v,w as k,k as z,K as u}from"./index-BP_aNEdP.js";const B={class:"space-y-4"},I={key:0,class:"text-xs text-muted-foreground space-y-1"},N={class:"text-foreground"},P={class:"text-foreground"},S={key:0},U={key:1,class:"text-red-400"},b={class:"grid grid-cols-2 gap-3"},A={class:"space-y-1.5"},F={class:"space-y-1.5"},O={class:"space-y-1.5"},q={class:"flex items-center gap-2"},G=j({__name:"DevopsConnectForm",setup(E){var y,x;const t=D(),n=c(((y=t.integration)==null?void 0:y.organization)??""),r=c(((x=t.integration)==null?void 0:x.project)??""),s=c(""),f=c(!1);async function w(){if(!n.value||!r.value||!s.value){u.error("All fields are required");return}f.value=!0;try{await t.saveIntegration({organization:n.value,project:r.value,pat:s.value}),s.value="",u.success("Integration saved")}catch{u.error("Failed to save integration")}finally{f.value=!1}}async function C(){if(confirm("Delete ADO integration?"))try{await t.deleteIntegration(),n.value="",r.value="",s.value="",u.success("Integration deleted")}catch{u.error("Failed to delete integration")}}return(K,e)=>(i(),m("div",B,[a(t).integration?(i(),m("div",I,[o("p",null,[e[3]||(e[3]=g(" Connected to ",-1)),o("strong",N,d(a(t).integration.organization),1),e[4]||(e[4]=g(" / ",-1)),o("strong",P,d(a(t).integration.project),1)]),a(t).integration.last_synced_at?(i(),m("p",S," Last synced: "+d(new Date(a(t).integration.last_synced_at).toLocaleString()),1)):p("",!0),a(t).integration.last_sync_error?(i(),m("p",U," Error: "+d(a(t).integration.last_sync_error),1)):p("",!0)])):p("",!0),o("div",b,[o("div",A,[e[5]||(e[5]=o("label",{class:"text-sm font-medium text-foreground"},"Organization",-1)),v(_,{modelValue:n.value,"onUpdate:modelValue":e[0]||(e[0]=l=>n.value=l),placeholder:"myorg"},null,8,["modelValue"])]),o("div",F,[e[6]||(e[6]=o("label",{class:"text-sm font-medium text-foreground"},"Project",-1)),v(_,{modelValue:r.value,"onUpdate:modelValue":e[1]||(e[1]=l=>r.value=l),placeholder:"myproject"},null,8,["modelValue"])])]),o("div",O,[e[7]||(e[7]=o("label",{class:"text-sm font-medium text-foreground"}," Personal Access Token ",-1)),v(_,{modelValue:s.value,"onUpdate:modelValue":e[2]||(e[2]=l=>s.value=l),type:"password",placeholder:"••••••••",autocomplete:"new-password"},null,8,["modelValue"])]),o("div",q,[v(V,{loading:f.value,onClick:w},{default:k(()=>[g(d(a(t).integration?"Update":"Connect"),1)]),_:1},8,["loading"]),a(t).integration?(i(),z(V,{key:0,variant:"destructive",size:"sm",onClick:C},{default:k(()=>[...e[8]||(e[8]=[g(" Disconnect ",-1)])]),_:1})):p("",!0)])]))}});export{G as _};
|
||||
|
|
@ -1 +1 @@
|
|||
import{d as k,x as y,G as b,k as h,H as x,e as c,T as g,w as m,o as a,c as n,a as o,m as r,t as u,i,n as w}from"./index-Coy22yOp.js";import{_ as $}from"./Button.vue_vue_type_script_setup_true_lang-B1z2uxja.js";const C={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4"},B=["aria-label"],j={key:0,class:"flex items-center justify-between p-6 pb-4"},z={class:"text-lg font-semibold text-foreground"},E={key:0,class:"text-sm text-muted-foreground mt-1"},L={class:"px-6 pb-4"},M={key:1,class:"flex justify-end gap-2 px-6 pb-6"},V=k({__name:"Dialog",props:{open:{type:Boolean},title:{},description:{},maxWidth:{default:"max-w-lg"}},emits:["close"],setup(e,{emit:f}){const p=e,l=f;function d(t){t.key==="Escape"&&p.open&&l("close")}return y(()=>document.addEventListener("keydown",d)),b(()=>document.removeEventListener("keydown",d)),(t,s)=>(a(),h(x,{to:"body"},[c(g,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:m(()=>[e.open?(a(),n("div",C,[o("div",{class:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:s[0]||(s[0]=v=>l("close"))}),o("div",{class:w(["relative w-full bg-card border border-border rounded-lg shadow-xl z-10",e.maxWidth]),role:"dialog","aria-modal":!0,"aria-label":e.title},[e.title||t.$slots.header?(a(),n("div",j,[o("div",null,[r(t.$slots,"header",{},()=>[o("h2",z,u(e.title),1),e.description?(a(),n("p",E,u(e.description),1)):i("",!0)])]),c($,{variant:"ghost",size:"icon",class:"shrink-0",onClick:s[1]||(s[1]=v=>l("close"))},{default:m(()=>[...s[2]||(s[2]=[o("svg",{class:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])]),_:1})])):i("",!0),o("div",L,[r(t.$slots,"default")]),t.$slots.footer?(a(),n("div",M,[r(t.$slots,"footer")])):i("",!0)],10,B)])):i("",!0)]),_:3})]))}});export{V as _};
|
||||
import{d as y,y as k,G as b,k as h,H as g,e as c,T as x,w as u,o as a,c as n,a as o,p as r,t as m,i,n as w}from"./index-BP_aNEdP.js";import{_ as $}from"./Button.vue_vue_type_script_setup_true_lang-B_YE_XNW.js";const C={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4"},B=["aria-label"],j={key:0,class:"flex items-center justify-between p-6 pb-4"},z={class:"text-lg font-semibold text-foreground"},E={key:0,class:"text-sm text-muted-foreground mt-1"},L={class:"px-6 pb-4"},M={key:1,class:"flex justify-end gap-2 px-6 pb-6"},V=y({__name:"Dialog",props:{open:{type:Boolean},title:{},description:{},maxWidth:{default:"max-w-lg"}},emits:["close"],setup(e,{emit:f}){const p=e,l=f;function d(t){t.key==="Escape"&&p.open&&l("close")}return k(()=>document.addEventListener("keydown",d)),b(()=>document.removeEventListener("keydown",d)),(t,s)=>(a(),h(g,{to:"body"},[c(x,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:u(()=>[e.open?(a(),n("div",C,[o("div",{class:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:s[0]||(s[0]=v=>l("close"))}),o("div",{class:w(["relative w-full bg-card border border-border rounded-lg shadow-xl z-10",e.maxWidth]),role:"dialog","aria-modal":!0,"aria-label":e.title},[e.title||t.$slots.header?(a(),n("div",j,[o("div",null,[r(t.$slots,"header",{},()=>[o("h2",z,m(e.title),1),e.description?(a(),n("p",E,m(e.description),1)):i("",!0)])]),c($,{variant:"ghost",size:"icon",class:"shrink-0",onClick:s[1]||(s[1]=v=>l("close"))},{default:u(()=>[...s[2]||(s[2]=[o("svg",{class:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])]),_:1})])):i("",!0),o("div",L,[r(t.$slots,"default")]),t.$slots.footer?(a(),n("div",M,[r(t.$slots,"footer")])):i("",!0)],10,B)])):i("",!0)]),_:3})]))}});export{V as _};
|
||||
|
|
@ -1 +1 @@
|
|||
import{c as i}from"./utils-7WVCegLb.js";import{d,c as s,n as u,h as m,o as r}from"./index-Coy22yOp.js";const c=["id","name","type","value","placeholder","disabled","autocomplete","min","max","step"],g=d({__name:"Input",props:{modelValue:{},type:{},placeholder:{},disabled:{type:Boolean},class:{},id:{},name:{},autocomplete:{},min:{},max:{},step:{}},emits:["update:modelValue","change","blur","focus"],setup(e,{emit:n}){const a=e,o=n;return(f,t)=>(r(),s("input",{id:e.id,name:e.name,type:e.type??"text",value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,autocomplete:e.autocomplete,min:e.min,max:e.max,step:e.step,class:u(m(i)("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm","ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium","placeholder:text-muted-foreground","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2","disabled:cursor-not-allowed disabled:opacity-50",a.class)),onInput:t[0]||(t[0]=l=>o("update:modelValue",l.target.value)),onChange:t[1]||(t[1]=l=>o("change",l.target.value)),onBlur:t[2]||(t[2]=l=>o("blur",l)),onFocus:t[3]||(t[3]=l=>o("focus",l))},null,42,c))}});export{g as _};
|
||||
import{c as i}from"./utils-7WVCegLb.js";import{d,o as s,c as u,n as m,h as r}from"./index-BP_aNEdP.js";const c=["id","name","type","value","placeholder","disabled","autocomplete","min","max","step"],g=d({__name:"Input",props:{modelValue:{},type:{},placeholder:{},disabled:{type:Boolean},class:{},id:{},name:{},autocomplete:{},min:{},max:{},step:{}},emits:["update:modelValue","change","blur","focus"],setup(e,{emit:n}){const a=e,o=n;return(f,t)=>(s(),u("input",{id:e.id,name:e.name,type:e.type??"text",value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,autocomplete:e.autocomplete,min:e.min,max:e.max,step:e.step,class:m(r(i)("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm","ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium","placeholder:text-muted-foreground","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2","disabled:cursor-not-allowed disabled:opacity-50",a.class)),onInput:t[0]||(t[0]=l=>o("update:modelValue",l.target.value)),onChange:t[1]||(t[1]=l=>o("change",l.target.value)),onBlur:t[2]||(t[2]=l=>o("blur",l)),onFocus:t[3]||(t[3]=l=>o("focus",l))},null,42,c))}});export{g as _};
|
||||
|
|
@ -1 +1 @@
|
|||
import{a as b}from"./admin-p6BxWcDa.js";import{_ as K,a as $}from"./CardContent.vue_vue_type_script_setup_true_lang-DUVu0jq9.js";import{_ as p}from"./Button.vue_vue_type_script_setup_true_lang-B1z2uxja.js";import{_ as V}from"./Dialog.vue_vue_type_script_setup_true_lang-DdEHw_yS.js";import{_ as N}from"./Input.vue_vue_type_script_setup_true_lang-BI-qyrUT.js";import{_ as A}from"./Spinner.vue_vue_type_script_setup_true_lang-B7DG-xnx.js";import{d as B,x as L,c as l,a as t,e as r,w as n,q as i,o as a,p as v,F as P,r as F,t as u,h as k,k as I,i as j,K as y}from"./index-Coy22yOp.js";import{a as h}from"./utils-7WVCegLb.js";const D={class:"p-6"},R={class:"flex items-center justify-between mb-6"},z={key:0,class:"flex items-center justify-center h-20"},M={key:1,class:"text-center text-muted-foreground py-8 text-sm"},T={key:2,class:"w-full"},U={class:"px-4 py-3 text-sm text-foreground"},q={class:"px-4 py-3 text-sm font-mono text-muted-foreground"},E={class:"px-4 py-3 text-xs text-muted-foreground"},H={class:"px-4 py-3 text-xs text-muted-foreground"},S={class:"px-4 py-3 text-right"},G={class:"space-y-4"},J={key:0,class:"rounded-md bg-emerald-500/10 border border-emerald-500/30 p-3"},O={class:"text-xs font-mono text-foreground break-all"},Q={key:1,class:"space-y-1.5"},re=B({__name:"KeysView",setup(W){const f=i([]),_=i(!1),c=i(!1),m=i(""),x=i(!1),d=i(null);L(()=>g());async function g(){_.value=!0;try{const o=await b.keys();f.value=o.data}finally{_.value=!1}}async function w(){if(m.value.trim()){x.value=!0;try{const o=await b.createKey({label:m.value});d.value=o.data.key,y.success("API key created"),await g(),m.value=""}catch{y.error("Failed to create key")}finally{x.value=!1}}}async function C(o){if(confirm(`Revoke key "${o.label}"? This cannot be undone.`))try{await b.revokeKey(o.id),y.success("Key revoked"),f.value=f.value.filter(e=>e.id!==o.id)}catch{y.error("Failed to revoke key")}}return(o,e)=>(a(),l("div",D,[t("div",R,[e[5]||(e[5]=t("h2",{class:"text-lg font-semibold text-foreground"},"API Keys",-1)),r(p,{size:"sm",onClick:e[0]||(e[0]=s=>{c.value=!0,d.value=null})},{default:n(()=>[...e[4]||(e[4]=[t("svg",{class:"h-4 w-4 mr-1.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),v(" New Key ",-1)])]),_:1})]),r(K,null,{default:n(()=>[r($,{class:"p-0"},{default:n(()=>[_.value?(a(),l("div",z,[r(A,{class:"text-primary"})])):f.value.length===0?(a(),l("div",M," No API keys ")):(a(),l("table",T,[e[7]||(e[7]=t("thead",null,[t("tr",{class:"border-b border-border"},[t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Label"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Prefix"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Created"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Last Used"),t("th",{class:"px-4 py-3"})])],-1)),t("tbody",null,[(a(!0),l(P,null,F(f.value,s=>(a(),l("tr",{key:s.id,class:"border-b border-border last:border-0 hover:bg-muted/30"},[t("td",U,u(s.label),1),t("td",q,u(s.prefix)+"...",1),t("td",E,u(k(h)(s.created_at)),1),t("td",H,u(s.last_used?k(h)(s.last_used):"Never"),1),t("td",S,[r(p,{variant:"ghost",size:"sm",class:"text-destructive",onClick:X=>C(s)},{default:n(()=>[...e[6]||(e[6]=[v(" Revoke ",-1)])]),_:1},8,["onClick"])])]))),128))])]))]),_:1})]),_:1}),r(V,{open:c.value,title:"Create API Key",onClose:e[3]||(e[3]=s=>c.value=!1)},{footer:n(()=>[r(p,{variant:"outline",onClick:e[2]||(e[2]=s=>c.value=!1)},{default:n(()=>[v(u(d.value?"Done":"Cancel"),1)]),_:1}),d.value?j("",!0):(a(),I(p,{key:0,loading:x.value,onClick:w},{default:n(()=>[...e[10]||(e[10]=[v(" Create ",-1)])]),_:1},8,["loading"]))]),default:n(()=>[t("div",G,[d.value?(a(),l("div",J,[e[8]||(e[8]=t("p",{class:"text-xs text-emerald-400 font-medium mb-1"},"Key created — save it now!",-1)),t("p",O,u(d.value),1)])):(a(),l("div",Q,[e[9]||(e[9]=t("label",{class:"text-sm font-medium text-foreground"},"Label",-1)),r(N,{modelValue:m.value,"onUpdate:modelValue":e[1]||(e[1]=s=>m.value=s),placeholder:"e.g. claude-collector",disabled:x.value},null,8,["modelValue","disabled"])]))])]),_:1},8,["open"])]))}});export{re as default};
|
||||
import{a as b}from"./admin-C27haAMd.js";import{_ as K,a as $}from"./CardContent.vue_vue_type_script_setup_true_lang-B8VjSxLa.js";import{_ as v}from"./Button.vue_vue_type_script_setup_true_lang-B_YE_XNW.js";import{_ as V}from"./Dialog.vue_vue_type_script_setup_true_lang-v8iqnRk8.js";import{_ as N}from"./Input.vue_vue_type_script_setup_true_lang-SeygKlpx.js";import{_ as A}from"./Spinner.vue_vue_type_script_setup_true_lang-Cu49-Cc4.js";import{d as B,y as L,c as l,a as t,e as r,w as n,s as i,o as a,q as p,F as P,r as F,t as u,h as k,k as I,i as j,K as y}from"./index-BP_aNEdP.js";import{a as h}from"./utils-7WVCegLb.js";const D={class:"p-6"},R={class:"flex items-center justify-between mb-6"},z={key:0,class:"flex items-center justify-center h-20"},M={key:1,class:"text-center text-muted-foreground py-8 text-sm"},T={key:2,class:"w-full"},U={class:"px-4 py-3 text-sm text-foreground"},q={class:"px-4 py-3 text-sm font-mono text-muted-foreground"},E={class:"px-4 py-3 text-xs text-muted-foreground"},H={class:"px-4 py-3 text-xs text-muted-foreground"},S={class:"px-4 py-3 text-right"},G={class:"space-y-4"},J={key:0,class:"rounded-md bg-emerald-500/10 border border-emerald-500/30 p-3"},O={class:"text-xs font-mono text-foreground break-all"},Q={key:1,class:"space-y-1.5"},re=B({__name:"KeysView",setup(W){const f=i([]),_=i(!1),c=i(!1),m=i(""),x=i(!1),d=i(null);L(()=>g());async function g(){_.value=!0;try{const o=await b.keys();f.value=o.data}finally{_.value=!1}}async function w(){if(m.value.trim()){x.value=!0;try{const o=await b.createKey({label:m.value});d.value=o.data.key,y.success("API key created"),await g(),m.value=""}catch{y.error("Failed to create key")}finally{x.value=!1}}}async function C(o){if(confirm(`Revoke key "${o.label}"? This cannot be undone.`))try{await b.revokeKey(o.id),y.success("Key revoked"),f.value=f.value.filter(e=>e.id!==o.id)}catch{y.error("Failed to revoke key")}}return(o,e)=>(a(),l("div",D,[t("div",R,[e[5]||(e[5]=t("h2",{class:"text-lg font-semibold text-foreground"},"API Keys",-1)),r(v,{size:"sm",onClick:e[0]||(e[0]=s=>{c.value=!0,d.value=null})},{default:n(()=>[...e[4]||(e[4]=[t("svg",{class:"h-4 w-4 mr-1.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),p(" New Key ",-1)])]),_:1})]),r(K,null,{default:n(()=>[r($,{class:"p-0"},{default:n(()=>[_.value?(a(),l("div",z,[r(A,{class:"text-primary"})])):f.value.length===0?(a(),l("div",M," No API keys ")):(a(),l("table",T,[e[7]||(e[7]=t("thead",null,[t("tr",{class:"border-b border-border"},[t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Label"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Prefix"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Created"),t("th",{class:"text-left text-xs font-medium text-muted-foreground px-4 py-3"},"Last Used"),t("th",{class:"px-4 py-3"})])],-1)),t("tbody",null,[(a(!0),l(P,null,F(f.value,s=>(a(),l("tr",{key:s.id,class:"border-b border-border last:border-0 hover:bg-muted/30"},[t("td",U,u(s.label),1),t("td",q,u(s.prefix)+"...",1),t("td",E,u(k(h)(s.created_at)),1),t("td",H,u(s.last_used?k(h)(s.last_used):"Never"),1),t("td",S,[r(v,{variant:"ghost",size:"sm",class:"text-destructive",onClick:X=>C(s)},{default:n(()=>[...e[6]||(e[6]=[p(" Revoke ",-1)])]),_:1},8,["onClick"])])]))),128))])]))]),_:1})]),_:1}),r(V,{open:c.value,title:"Create API Key",onClose:e[3]||(e[3]=s=>c.value=!1)},{footer:n(()=>[r(v,{variant:"outline",onClick:e[2]||(e[2]=s=>c.value=!1)},{default:n(()=>[p(u(d.value?"Done":"Cancel"),1)]),_:1}),d.value?j("",!0):(a(),I(v,{key:0,loading:x.value,onClick:w},{default:n(()=>[...e[10]||(e[10]=[p(" Create ",-1)])]),_:1},8,["loading"]))]),default:n(()=>[t("div",G,[d.value?(a(),l("div",J,[e[8]||(e[8]=t("p",{class:"text-xs text-emerald-400 font-medium mb-1"},"Key created — save it now!",-1)),t("p",O,u(d.value),1)])):(a(),l("div",Q,[e[9]||(e[9]=t("label",{class:"text-sm font-medium text-foreground"},"Label",-1)),r(N,{modelValue:m.value,"onUpdate:modelValue":e[1]||(e[1]=s=>m.value=s),placeholder:"e.g. claude-collector",disabled:x.value},null,8,["modelValue","disabled"])]))])]),_:1},8,["open"])]))}});export{re as default};
|
||||
|
|
@ -1 +1 @@
|
|||
import{G as T,q as y,d as J,u as O,x as V,c as f,a as o,n as b,h as l,t as v,k as $,w as x,i as k,e as C,o as c,p as w,F as B,r as F,j as z}from"./index-Coy22yOp.js";import{_ as A,a as D}from"./CardContent.vue_vue_type_script_setup_true_lang-DUVu0jq9.js";import{_ as N}from"./Button.vue_vue_type_script_setup_true_lang-B1z2uxja.js";import"./utils-7WVCegLb.js";import"./Spinner.vue_vue_type_script_setup_true_lang-B7DG-xnx.js";function U(E){const e=y([]),i=y(!1),m=y(null);let s=null,r=null,u=!1;function p(){if(!u)try{s=new EventSource(E),s.onopen=()=>{i.value=!0,m.value=null},s.onmessage=n=>{try{const g=JSON.parse(n.data);e.value.push({type:"message",data:g}),e.value.length>200&&e.value.shift()}catch{e.value.push({type:"message",data:n.data})}},s.addEventListener("session_start",n=>{try{e.value.push({type:"session_start",data:JSON.parse(n.data)})}catch{e.value.push({type:"session_start",data:n.data})}e.value.length>200&&e.value.shift()}),s.addEventListener("session_end",n=>{try{e.value.push({type:"session_end",data:JSON.parse(n.data)})}catch{e.value.push({type:"session_end",data:n.data})}e.value.length>200&&e.value.shift()}),s.addEventListener("activity",n=>{try{e.value.push({type:"activity",data:JSON.parse(n.data)})}catch{e.value.push({type:"activity",data:n.data})}e.value.length>200&&e.value.shift()}),s.onerror=()=>{i.value=!1,m.value="Connection lost, reconnecting...",s==null||s.close(),s=null,u||(r=setTimeout(()=>p(),5e3))}}catch{m.value="Failed to connect to event stream",u||(r=setTimeout(()=>p(),5e3))}}function _(){u=!0,r&&clearTimeout(r),s==null||s.close(),s=null,i.value=!1}function h(){e.value=[]}return T(()=>{_()}),{events:e,connected:i,error:m,connect:p,disconnect:_,clearEvents:h}}const I={class:"p-6 h-full flex flex-col"},R={class:"flex items-center gap-3 mb-4"},q={class:"flex items-center gap-2"},G={class:"text-xs text-muted-foreground"},M={key:0,class:"mb-4 text-xs text-amber-400 bg-amber-500/10 border border-amber-500/30 rounded px-3 py-2"},P={key:0,class:"flex items-center justify-center h-full text-sm text-muted-foreground"},W={key:1,class:"overflow-y-auto h-full font-mono text-xs"},H={class:"flex-1 min-w-0"},K={class:"flex items-center gap-2 flex-wrap"},Q={key:0,class:"text-muted-foreground"},X={class:"text-muted-foreground truncate mt-0.5"},ne=J({__name:"LiveView",setup(E){const e=O(),i=e.getToken(),m=`/cc-dashboard/api/events${i?`?token=${encodeURIComponent(i)}`:""}`,{events:s,connected:r,error:u,connect:p,clearEvents:_}=U(m);V(()=>{e.isAuthenticated&&i&&p()});const h=z(()=>[...s.value].reverse().slice(0,100));function n(t){return t==="session_start"?"text-emerald-400":t==="session_end"?"text-amber-400":t==="activity"?"text-blue-400":"text-muted-foreground"}function g(t){return t==="session_start"?"▶":t==="session_end"?"■":t==="activity"?"●":"○"}function j(t){if(typeof t=="string")return t;if(t&&typeof t=="object"){const a=t;return a.message||a.summary||JSON.stringify(t)}return String(t)}function S(t){if(t&&typeof t=="object"){const a=t;return a.display_name||a.project_id||""}return""}return(t,a)=>(c(),f("div",I,[o("div",R,[a[2]||(a[2]=o("h2",{class:"text-lg font-semibold text-foreground flex-1"},"Live Feed",-1)),o("div",q,[o("div",{class:b(["h-2 w-2 rounded-full",l(r)?"bg-emerald-500 animate-pulse":"bg-red-500"])},null,2),o("span",G,v(l(r)?"Connected":"Disconnected"),1)]),l(r)?k("",!0):(c(),$(N,{key:0,variant:"outline",size:"sm",onClick:l(p)},{default:x(()=>[...a[0]||(a[0]=[w(" Reconnect ",-1)])]),_:1},8,["onClick"])),C(N,{variant:"ghost",size:"sm",onClick:l(_)},{default:x(()=>[...a[1]||(a[1]=[w(" Clear ",-1)])]),_:1},8,["onClick"])]),l(u)&&!l(r)?(c(),f("div",M,v(l(u)),1)):k("",!0),C(A,{class:"flex-1 overflow-hidden"},{default:x(()=>[C(D,{class:"p-0 h-full"},{default:x(()=>[h.value.length===0?(c(),f("div",P,[...a[3]||(a[3]=[o("div",{class:"text-center"},[o("div",{class:"text-2xl mb-2"},"📡"),o("p",null,"Waiting for events..."),o("p",{class:"text-xs mt-1"},"Activity will appear here in real-time")],-1)])])):(c(),f("div",W,[(c(!0),f(B,null,F(h.value,(d,L)=>(c(),f("div",{key:L,class:"flex items-start gap-2 px-4 py-1.5 hover:bg-muted/50 border-b border-border/30"},[o("span",{class:b([n(d.type),"shrink-0 mt-0.5"])},v(g(d.type)),3),o("div",H,[o("div",K,[o("span",{class:b([n(d.type),"font-medium"])},v(d.type),3),S(d.data)?(c(),f("span",Q,v(S(d.data)),1)):k("",!0)]),o("p",X,v(j(d.data)),1)])]))),128))]))]),_:1})]),_:1})]))}});export{ne as default};
|
||||
import{G as T,s as g,d as J,u as O,y as V,c as f,a as o,n as b,h as l,t as v,k as $,w as x,i as k,e as C,o as c,q as w,F as B,r as F,j as z}from"./index-BP_aNEdP.js";import{_ as A,a as D}from"./CardContent.vue_vue_type_script_setup_true_lang-B8VjSxLa.js";import{_ as N}from"./Button.vue_vue_type_script_setup_true_lang-B_YE_XNW.js";import"./utils-7WVCegLb.js";import"./Spinner.vue_vue_type_script_setup_true_lang-Cu49-Cc4.js";function U(E){const e=g([]),i=g(!1),m=g(null);let s=null,r=null,u=!1;function p(){if(!u)try{s=new EventSource(E),s.onopen=()=>{i.value=!0,m.value=null},s.onmessage=n=>{try{const y=JSON.parse(n.data);e.value.push({type:"message",data:y}),e.value.length>200&&e.value.shift()}catch{e.value.push({type:"message",data:n.data})}},s.addEventListener("session_start",n=>{try{e.value.push({type:"session_start",data:JSON.parse(n.data)})}catch{e.value.push({type:"session_start",data:n.data})}e.value.length>200&&e.value.shift()}),s.addEventListener("session_end",n=>{try{e.value.push({type:"session_end",data:JSON.parse(n.data)})}catch{e.value.push({type:"session_end",data:n.data})}e.value.length>200&&e.value.shift()}),s.addEventListener("activity",n=>{try{e.value.push({type:"activity",data:JSON.parse(n.data)})}catch{e.value.push({type:"activity",data:n.data})}e.value.length>200&&e.value.shift()}),s.onerror=()=>{i.value=!1,m.value="Connection lost, reconnecting...",s==null||s.close(),s=null,u||(r=setTimeout(()=>p(),5e3))}}catch{m.value="Failed to connect to event stream",u||(r=setTimeout(()=>p(),5e3))}}function _(){u=!0,r&&clearTimeout(r),s==null||s.close(),s=null,i.value=!1}function h(){e.value=[]}return T(()=>{_()}),{events:e,connected:i,error:m,connect:p,disconnect:_,clearEvents:h}}const I={class:"p-6 h-full flex flex-col"},R={class:"flex items-center gap-3 mb-4"},q={class:"flex items-center gap-2"},G={class:"text-xs text-muted-foreground"},M={key:0,class:"mb-4 text-xs text-amber-400 bg-amber-500/10 border border-amber-500/30 rounded px-3 py-2"},P={key:0,class:"flex items-center justify-center h-full text-sm text-muted-foreground"},W={key:1,class:"overflow-y-auto h-full font-mono text-xs"},H={class:"flex-1 min-w-0"},K={class:"flex items-center gap-2 flex-wrap"},Q={key:0,class:"text-muted-foreground"},X={class:"text-muted-foreground truncate mt-0.5"},ne=J({__name:"LiveView",setup(E){const e=O(),i=e.getToken(),m=`/cc-dashboard/api/events${i?`?token=${encodeURIComponent(i)}`:""}`,{events:s,connected:r,error:u,connect:p,clearEvents:_}=U(m);V(()=>{e.isAuthenticated&&i&&p()});const h=z(()=>[...s.value].reverse().slice(0,100));function n(t){return t==="session_start"?"text-emerald-400":t==="session_end"?"text-amber-400":t==="activity"?"text-blue-400":"text-muted-foreground"}function y(t){return t==="session_start"?"▶":t==="session_end"?"■":t==="activity"?"●":"○"}function j(t){if(typeof t=="string")return t;if(t&&typeof t=="object"){const a=t;return a.message||a.summary||JSON.stringify(t)}return String(t)}function S(t){if(t&&typeof t=="object"){const a=t;return a.display_name||a.project_id||""}return""}return(t,a)=>(c(),f("div",I,[o("div",R,[a[2]||(a[2]=o("h2",{class:"text-lg font-semibold text-foreground flex-1"},"Live Feed",-1)),o("div",q,[o("div",{class:b(["h-2 w-2 rounded-full",l(r)?"bg-emerald-500 animate-pulse":"bg-red-500"])},null,2),o("span",G,v(l(r)?"Connected":"Disconnected"),1)]),l(r)?k("",!0):(c(),$(N,{key:0,variant:"outline",size:"sm",onClick:l(p)},{default:x(()=>[...a[0]||(a[0]=[w(" Reconnect ",-1)])]),_:1},8,["onClick"])),C(N,{variant:"ghost",size:"sm",onClick:l(_)},{default:x(()=>[...a[1]||(a[1]=[w(" Clear ",-1)])]),_:1},8,["onClick"])]),l(u)&&!l(r)?(c(),f("div",M,v(l(u)),1)):k("",!0),C(A,{class:"flex-1 overflow-hidden"},{default:x(()=>[C(D,{class:"p-0 h-full"},{default:x(()=>[h.value.length===0?(c(),f("div",P,[...a[3]||(a[3]=[o("div",{class:"text-center"},[o("div",{class:"text-2xl mb-2"},"📡"),o("p",null,"Waiting for events..."),o("p",{class:"text-xs mt-1"},"Activity will appear here in real-time")],-1)])])):(c(),f("div",W,[(c(!0),f(B,null,F(h.value,(d,L)=>(c(),f("div",{key:L,class:"flex items-start gap-2 px-4 py-1.5 hover:bg-muted/50 border-b border-border/30"},[o("span",{class:b([n(d.type),"shrink-0 mt-0.5"])},v(y(d.type)),3),o("div",H,[o("div",K,[o("span",{class:b([n(d.type),"font-medium"])},v(d.type),3),S(d.data)?(c(),f("span",Q,v(S(d.data)),1)):k("",!0)]),o("p",X,v(j(d.data)),1)])]))),128))]))]),_:1})]),_:1})]))}});export{ne as default};
|
||||
|
|
@ -1 +1 @@
|
|||
import{d as h,u as f,c as o,a as t,b as m,e as a,w as d,o as r,f as g,g as p,h as i,t as x,i as w}from"./index-Coy22yOp.js";import{_ as y,a as b}from"./CardContent.vue_vue_type_script_setup_true_lang-DUVu0jq9.js";import"./utils-7WVCegLb.js";const v={class:"min-h-screen flex items-center justify-center bg-background p-4"},_={class:"w-full max-w-sm"},k={class:"space-y-4"},C={key:0,class:"rounded-md bg-destructive/10 border border-destructive/30 px-3 py-2 text-sm text-destructive"},B=["disabled"],V={key:0},S={key:1},M=h({__name:"LoginView",setup(F){const c=g(),l=p(),s=f();async function u(){try{await s.loginWithMicrosoft();const n=l.query.redirect;c.push(n??"/")}catch{}}return(n,e)=>(r(),o("div",v,[t("div",_,[e[2]||(e[2]=m('<div class="text-center mb-8"><div class="inline-flex h-12 w-12 items-center justify-center rounded-xl bg-primary mb-3"><svg class="h-7 w-7 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"></path></svg></div><h1 class="text-2xl font-bold text-foreground">CC Dashboard</h1><p class="text-sm text-muted-foreground mt-1">Corporate Planning Hub</p></div>',1)),a(y,null,{default:d(()=>[a(b,{class:"pt-6"},{default:d(()=>[t("div",k,[i(s).error?(r(),o("div",C,x(i(s).error),1)):w("",!0),t("button",{type:"button",disabled:i(s).loading,class:"w-full flex items-center justify-center gap-3 rounded-md border border-border bg-white px-4 py-2.5 text-sm font-medium text-gray-700 shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",onClick:u},[e[0]||(e[0]=t("svg",{class:"h-5 w-5 shrink-0",viewBox:"0 0 21 21",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[t("rect",{x:"1",y:"1",width:"9",height:"9",fill:"#F25022"}),t("rect",{x:"11",y:"1",width:"9",height:"9",fill:"#7FBA00"}),t("rect",{x:"1",y:"11",width:"9",height:"9",fill:"#00A4EF"}),t("rect",{x:"11",y:"11",width:"9",height:"9",fill:"#FFB900"})],-1)),i(s).loading?(r(),o("span",V,"Signing in…")):(r(),o("span",S,"Sign in with Microsoft"))],8,B),e[1]||(e[1]=t("p",{class:"text-center text-xs text-muted-foreground"}," Use your @oliver.agency account ",-1))])]),_:1})]),_:1})])]))}});export{M as default};
|
||||
import{d as h,u as f,c as o,a as t,b as m,e as a,w as d,o as r,f as g,g as p,h as i,t as x,i as w}from"./index-BP_aNEdP.js";import{_ as y,a as b}from"./CardContent.vue_vue_type_script_setup_true_lang-B8VjSxLa.js";import"./utils-7WVCegLb.js";const v={class:"min-h-screen flex items-center justify-center bg-background p-4"},_={class:"w-full max-w-sm"},k={class:"space-y-4"},C={key:0,class:"rounded-md bg-destructive/10 border border-destructive/30 px-3 py-2 text-sm text-destructive"},B=["disabled"],V={key:0},S={key:1},M=h({__name:"LoginView",setup(F){const c=g(),l=p(),s=f();async function u(){try{await s.loginWithMicrosoft();const n=l.query.redirect;c.push(n??"/")}catch{}}return(n,e)=>(r(),o("div",v,[t("div",_,[e[2]||(e[2]=m('<div class="text-center mb-8"><div class="inline-flex h-12 w-12 items-center justify-center rounded-xl bg-primary mb-3"><svg class="h-7 w-7 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"></path></svg></div><h1 class="text-2xl font-bold text-foreground">CC Dashboard</h1><p class="text-sm text-muted-foreground mt-1">Corporate Planning Hub</p></div>',1)),a(y,null,{default:d(()=>[a(b,{class:"pt-6"},{default:d(()=>[t("div",k,[i(s).error?(r(),o("div",C,x(i(s).error),1)):w("",!0),t("button",{type:"button",disabled:i(s).loading,class:"w-full flex items-center justify-center gap-3 rounded-md border border-border bg-white px-4 py-2.5 text-sm font-medium text-gray-700 shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",onClick:u},[e[0]||(e[0]=t("svg",{class:"h-5 w-5 shrink-0",viewBox:"0 0 21 21",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[t("rect",{x:"1",y:"1",width:"9",height:"9",fill:"#F25022"}),t("rect",{x:"11",y:"1",width:"9",height:"9",fill:"#7FBA00"}),t("rect",{x:"1",y:"11",width:"9",height:"9",fill:"#00A4EF"}),t("rect",{x:"11",y:"11",width:"9",height:"9",fill:"#FFB900"})],-1)),i(s).loading?(r(),o("span",V,"Signing in…")):(r(),o("span",S,"Sign in with Microsoft"))],8,B),e[1]||(e[1]=t("p",{class:"text-center text-xs text-muted-foreground"}," Use your @oliver.agency account ",-1))])]),_:1})]),_:1})])]))}});export{M as default};
|
||||
|
|
@ -1 +1 @@
|
|||
import{c as r}from"./utils-7WVCegLb.js";import{d as s,o as n,c as t,n as l,h as c,a as d,A as u}from"./index-Coy22yOp.js";const h=s({__name:"Progress",props:{value:{},max:{default:100},class:{},color:{default:"default"}},setup(a){const e=a,o=()=>Math.min(100,Math.max(0,e.value/e.max*100));return(i,m)=>(n(),t("div",{class:l(c(r)("relative h-2 w-full overflow-hidden rounded-full bg-secondary",e.class))},[d("div",{class:l(["h-full rounded-full transition-all duration-300",{"bg-primary":a.color==="default","bg-emerald-500":a.color==="success","bg-amber-500":a.color==="warning","bg-red-500":a.color==="danger"}]),style:u({width:`${o()}%`})},null,6)],2))}});export{h as _};
|
||||
import{c as r}from"./utils-7WVCegLb.js";import{d as s,o as n,c as t,n as l,h as c,a as d,B as u}from"./index-BP_aNEdP.js";const h=s({__name:"Progress",props:{value:{},max:{default:100},class:{},color:{default:"default"}},setup(a){const e=a,o=()=>Math.min(100,Math.max(0,e.value/e.max*100));return(i,m)=>(n(),t("div",{class:l(c(r)("relative h-2 w-full overflow-hidden rounded-full bg-secondary",e.class))},[d("div",{class:l(["h-full rounded-full transition-all duration-300",{"bg-primary":a.color==="default","bg-emerald-500":a.color==="success","bg-amber-500":a.color==="warning","bg-red-500":a.color==="danger"}]),style:u({width:`${o()}%`})},null,6)],2))}});export{h as _};
|
||||
1
src/static/assets/ProjectDetailView-9CL5OHue.js
Normal file
|
|
@ -1,4 +1,4 @@
|
|||
var Ce=Object.defineProperty;var ae=a=>{throw TypeError(a)};var Ee=(a,t,e)=>t in a?Ce(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e;var k=(a,t,e)=>Ee(a,typeof t!="symbol"?t+"":t,e),Le=(a,t,e)=>t.has(a)||ae("Cannot "+e);var ce=(a,t,e)=>t.has(a)?ae("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(a):t.set(a,e);var Z=(a,t,e)=>(Le(a,t,"access private method"),e);import{E as V,d as Be,x as qe,c as z,a as x,n as U,e as P,w as I,F as Ze,r as Pe,q as A,o as _,p as G,k as pe,t as W,h as Me,i as he,K as ue}from"./index-Coy22yOp.js";import{a as De,_ as Qe}from"./CardContent.vue_vue_type_script_setup_true_lang-DUVu0jq9.js";import{_ as fe}from"./Badge.vue_vue_type_script_setup_true_lang-CLRDsB_H.js";import{_ as Ne}from"./Button.vue_vue_type_script_setup_true_lang-B1z2uxja.js";import{_ as je}from"./Spinner.vue_vue_type_script_setup_true_lang-B7DG-xnx.js";import{a as Oe,i as He}from"./utils-7WVCegLb.js";import{_ as Fe}from"./_plugin-vue_export-helper-DlAUqK2U.js";const de={list:()=>V.get("/api/reports"),get:a=>V.get(`/api/reports/${a}`),generate:a=>V.post("/api/reports/generate",a)};function J(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}let S=J();function we(a){S=a}const ye=/[&<>"']/,Ve=new RegExp(ye.source,"g"),_e=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,Ue=new RegExp(_e.source,"g"),Ge={"&":"&","<":"<",">":">",'"':""","'":"'"},ge=a=>Ge[a];function m(a,t){if(t){if(ye.test(a))return a.replace(Ve,ge)}else if(_e.test(a))return a.replace(Ue,ge);return a}const We=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function Xe(a){return a.replace(We,(t,e)=>(e=e.toLowerCase(),e==="colon"?":":e.charAt(0)==="#"?e.charAt(1)==="x"?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):""))}const Ke=/(^|[^\[])\^/g;function g(a,t){let e=typeof a=="string"?a:a.source;t=t||"";const n={replace:(i,r)=>{let s=typeof r=="string"?r:r.source;return s=s.replace(Ke,"$1"),e=e.replace(i,s),n},getRegex:()=>new RegExp(e,t)};return n}function ke(a){try{a=encodeURI(a).replace(/%25/g,"%")}catch{return null}return a}const E={exec:()=>null};function xe(a,t){const e=a.replace(/\|/g,(r,s,o)=>{let l=!1,u=s;for(;--u>=0&&o[u]==="\\";)l=!l;return l?"|":" |"}),n=e.split(/ \|/);let i=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;i<n.length;i++)n[i]=n[i].trim().replace(/\\\|/g,"|");return n}function M(a,t,e){const n=a.length;if(n===0)return"";let i=0;for(;i<n&&a.charAt(n-i-1)===t;)i++;return a.slice(0,n-i)}function Je(a,t){if(a.indexOf(t[1])===-1)return-1;let e=0;for(let n=0;n<a.length;n++)if(a[n]==="\\")n++;else if(a[n]===t[0])e++;else if(a[n]===t[1]&&(e--,e<0))return n;return-1}function me(a,t,e,n){const i=t.href,r=t.title?m(t.title):null,s=a[1].replace(/\\([\[\]])/g,"$1");if(a[0].charAt(0)!=="!"){n.state.inLink=!0;const o={type:"link",raw:e,href:i,title:r,text:s,tokens:n.inlineTokens(s)};return n.state.inLink=!1,o}return{type:"image",raw:e,href:i,title:r,text:m(s)}}function Ye(a,t){const e=a.match(/^(\s+)(?:```)/);if(e===null)return t;const n=e[1];return t.split(`
|
||||
var Ce=Object.defineProperty;var ae=a=>{throw TypeError(a)};var Ee=(a,t,e)=>t in a?Ce(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e;var k=(a,t,e)=>Ee(a,typeof t!="symbol"?t+"":t,e),Le=(a,t,e)=>t.has(a)||ae("Cannot "+e);var ce=(a,t,e)=>t.has(a)?ae("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(a):t.set(a,e);var Z=(a,t,e)=>(Le(a,t,"access private method"),e);import{E as V,d as Be,y as qe,c as z,a as x,n as U,e as P,w as I,F as Ze,r as Pe,s as A,o as _,q as G,k as pe,t as W,h as Me,i as he,K as ue}from"./index-BP_aNEdP.js";import{a as De,_ as Qe}from"./CardContent.vue_vue_type_script_setup_true_lang-B8VjSxLa.js";import{_ as fe}from"./Badge.vue_vue_type_script_setup_true_lang-B2H6z2RD.js";import{_ as Ne}from"./Button.vue_vue_type_script_setup_true_lang-B_YE_XNW.js";import{_ as je}from"./Spinner.vue_vue_type_script_setup_true_lang-Cu49-Cc4.js";import{a as Oe,i as He}from"./utils-7WVCegLb.js";import{_ as Fe}from"./_plugin-vue_export-helper-DlAUqK2U.js";const de={list:()=>V.get("/api/reports"),get:a=>V.get(`/api/reports/${a}`),generate:a=>V.post("/api/reports/generate",a)};function J(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}let S=J();function we(a){S=a}const ye=/[&<>"']/,Ve=new RegExp(ye.source,"g"),_e=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,Ue=new RegExp(_e.source,"g"),Ge={"&":"&","<":"<",">":">",'"':""","'":"'"},ge=a=>Ge[a];function m(a,t){if(t){if(ye.test(a))return a.replace(Ve,ge)}else if(_e.test(a))return a.replace(Ue,ge);return a}const We=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function Xe(a){return a.replace(We,(t,e)=>(e=e.toLowerCase(),e==="colon"?":":e.charAt(0)==="#"?e.charAt(1)==="x"?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):""))}const Ke=/(^|[^\[])\^/g;function g(a,t){let e=typeof a=="string"?a:a.source;t=t||"";const n={replace:(i,r)=>{let s=typeof r=="string"?r:r.source;return s=s.replace(Ke,"$1"),e=e.replace(i,s),n},getRegex:()=>new RegExp(e,t)};return n}function ke(a){try{a=encodeURI(a).replace(/%25/g,"%")}catch{return null}return a}const E={exec:()=>null};function xe(a,t){const e=a.replace(/\|/g,(r,s,o)=>{let l=!1,u=s;for(;--u>=0&&o[u]==="\\";)l=!l;return l?"|":" |"}),n=e.split(/ \|/);let i=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;i<n.length;i++)n[i]=n[i].trim().replace(/\\\|/g,"|");return n}function M(a,t,e){const n=a.length;if(n===0)return"";let i=0;for(;i<n&&a.charAt(n-i-1)===t;)i++;return a.slice(0,n-i)}function Je(a,t){if(a.indexOf(t[1])===-1)return-1;let e=0;for(let n=0;n<a.length;n++)if(a[n]==="\\")n++;else if(a[n]===t[0])e++;else if(a[n]===t[1]&&(e--,e<0))return n;return-1}function me(a,t,e,n){const i=t.href,r=t.title?m(t.title):null,s=a[1].replace(/\\([\[\]])/g,"$1");if(a[0].charAt(0)!=="!"){n.state.inLink=!0;const o={type:"link",raw:e,href:i,title:r,text:s,tokens:n.inlineTokens(s)};return n.state.inLink=!1,o}return{type:"image",raw:e,href:i,title:r,text:m(s)}}function Ye(a,t){const e=a.match(/^(\s+)(?:```)/);if(e===null)return t;const n=e[1];return t.split(`
|
||||
`).map(i=>{const r=i.match(/^\s+/);if(r===null)return i;const[s]=r;return s.length>=n.length?i.slice(n.length):i}).join(`
|
||||
`)}class Q{constructor(t){k(this,"options");k(this,"rules");k(this,"lexer");this.options=t||S}space(t){const e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){const e=this.rules.block.code.exec(t);if(e){const n=e[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?n:M(n,`
|
||||
`)}}}fences(t){const e=this.rules.block.fences.exec(t);if(e){const n=e[0],i=Ye(n,e[3]||"");return{type:"code",raw:n,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:i}}}heading(t){const e=this.rules.block.heading.exec(t);if(e){let n=e[2].trim();if(/#$/.test(n)){const i=M(n,"#");(this.options.pedantic||!i||/ $/.test(i))&&(n=i.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(t){const e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:e[0]}}blockquote(t){const e=this.rules.block.blockquote.exec(t);if(e){let n=e[0].replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,`
|
||||
|
|
@ -1 +1 @@
|
|||
import{d as N,u as E,x as P,c as U,a,e as t,w as s,q as f,o as k,p as u,h as c,k as z,i as B,E as I,K as x}from"./index-Coy22yOp.js";import{u as F}from"./devops-CA4DvhgQ.js";import{_ as w,a as V}from"./CardContent.vue_vue_type_script_setup_true_lang-DUVu0jq9.js";import{_ as $,a as S}from"./CardTitle.vue_vue_type_script_setup_true_lang-oG7GV-Yg.js";import{_ as y}from"./Input.vue_vue_type_script_setup_true_lang-BI-qyrUT.js";import{_}from"./Button.vue_vue_type_script_setup_true_lang-B1z2uxja.js";import{_ as O}from"./DevopsConnectForm.vue_vue_type_script_setup_true_lang-MckPP1w4.js";import{i as C}from"./utils-7WVCegLb.js";import"./Spinner.vue_vue_type_script_setup_true_lang-B7DG-xnx.js";function T(i,l){const n=`/cc-dashboard/api/export/timesheet.csv?from=${i}&to=${l}`,o=document.createElement("a");o.href=n,o.download=`timesheet-${i}-${l}.csv`,o.click()}function A(i,l){const n=`/cc-dashboard/api/export/timesheet.ics?from=${i}&to=${l}`,o=document.createElement("a");o.href=n,o.download=`timesheet-${i}-${l}.ics`,o.click()}const H={class:"p-6 space-y-6 max-w-2xl"},K={class:"space-y-1.5"},M={class:"space-y-1.5"},j={class:"flex items-center justify-between"},q={class:"flex items-center gap-3 flex-wrap"},h={class:"space-y-1.5"},G={class:"space-y-1.5"},J={class:"flex items-center gap-2"},se=N({__name:"SettingsView",setup(i){const l=E(),n=F(),o=f(""),p=f(0),g=f(!1),d=f(""),m=f("");P(()=>{l.user&&(o.value=l.user.username,p.value=l.user.daily_overhead_hours??0),n.fetchIntegration();const v=new Date;m.value=C(v);const e=new Date(v);e.setDate(v.getDate()-30),d.value=C(e)});async function D(){g.value=!0;try{await I.patch("/api/auth/me",{username:o.value,daily_overhead_hours:p.value}),await l.fetchMe(),x.success("Profile saved")}catch{x.error("Failed to save profile")}finally{g.value=!1}}async function b(){try{await n.sync(),x.success("Sync complete")}catch{x.error(n.error??"Sync failed")}}return(v,e)=>(k(),U("div",H,[e[18]||(e[18]=a("h2",{class:"text-lg font-semibold text-foreground"},"Settings",-1)),t(w,null,{default:s(()=>[t($,null,{default:s(()=>[t(S,{class:"text-sm"},{default:s(()=>[...e[6]||(e[6]=[u("Profile",-1)])]),_:1})]),_:1}),t(V,{class:"space-y-4"},{default:s(()=>[a("div",K,[e[7]||(e[7]=a("label",{class:"text-sm font-medium text-foreground"},"Username",-1)),t(y,{modelValue:o.value,"onUpdate:modelValue":e[0]||(e[0]=r=>o.value=r),placeholder:"username"},null,8,["modelValue"])]),a("div",M,[e[8]||(e[8]=a("label",{class:"text-sm font-medium text-foreground"},"Daily Overhead Hours",-1)),t(y,{modelValue:p.value,"onUpdate:modelValue":e[1]||(e[1]=r=>p.value=r),type:"number",min:"0",max:"8",step:"0.25",class:"w-32"},null,8,["modelValue"]),e[9]||(e[9]=a("p",{class:"text-xs text-muted-foreground"}," Hours per day to add for overhead / meetings ",-1))]),t(_,{loading:g.value,onClick:D},{default:s(()=>[...e[10]||(e[10]=[u("Save Profile",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),t(w,null,{default:s(()=>[t($,null,{default:s(()=>[a("div",j,[t(S,{class:"text-sm"},{default:s(()=>[...e[11]||(e[11]=[u("Azure DevOps Integration",-1)])]),_:1}),c(n).integration?(k(),z(_,{key:0,variant:"outline",size:"sm",loading:c(n).syncing,onClick:b},{default:s(()=>[...e[12]||(e[12]=[u(" Sync Now ",-1)])]),_:1},8,["loading"])):B("",!0)])]),_:1}),t(V,null,{default:s(()=>[t(O)]),_:1})]),_:1}),t(w,null,{default:s(()=>[t($,null,{default:s(()=>[t(S,{class:"text-sm"},{default:s(()=>[...e[13]||(e[13]=[u("Export",-1)])]),_:1})]),_:1}),t(V,{class:"space-y-4"},{default:s(()=>[a("div",q,[a("div",h,[e[14]||(e[14]=a("label",{class:"text-xs text-muted-foreground"},"From",-1)),t(y,{modelValue:d.value,"onUpdate:modelValue":e[2]||(e[2]=r=>d.value=r),type:"date",class:"h-8 text-xs"},null,8,["modelValue"])]),a("div",G,[e[15]||(e[15]=a("label",{class:"text-xs text-muted-foreground"},"To",-1)),t(y,{modelValue:m.value,"onUpdate:modelValue":e[3]||(e[3]=r=>m.value=r),type:"date",class:"h-8 text-xs"},null,8,["modelValue"])])]),a("div",J,[t(_,{variant:"outline",size:"sm",onClick:e[4]||(e[4]=r=>c(T)(d.value,m.value))},{default:s(()=>[...e[16]||(e[16]=[u(" Download CSV ",-1)])]),_:1}),t(_,{variant:"outline",size:"sm",onClick:e[5]||(e[5]=r=>c(A)(d.value,m.value))},{default:s(()=>[...e[17]||(e[17]=[u(" Download ICS ",-1)])]),_:1})])]),_:1})]),_:1})]))}});export{se as default};
|
||||
import{d as N,u as E,y as P,c as U,a,e as t,w as s,s as f,o as k,q as u,h as c,k as z,i as B,E as I,K as x}from"./index-BP_aNEdP.js";import{u as F}from"./devops-DxRDHPW5.js";import{_ as w,a as V}from"./CardContent.vue_vue_type_script_setup_true_lang-B8VjSxLa.js";import{_ as $,a as S}from"./CardTitle.vue_vue_type_script_setup_true_lang-KH4UhlTi.js";import{_ as y}from"./Input.vue_vue_type_script_setup_true_lang-SeygKlpx.js";import{_}from"./Button.vue_vue_type_script_setup_true_lang-B_YE_XNW.js";import{_ as O}from"./DevopsConnectForm.vue_vue_type_script_setup_true_lang-DQc_dk7n.js";import{i as C}from"./utils-7WVCegLb.js";import"./Spinner.vue_vue_type_script_setup_true_lang-Cu49-Cc4.js";function T(i,l){const n=`/cc-dashboard/api/export/timesheet.csv?from=${i}&to=${l}`,o=document.createElement("a");o.href=n,o.download=`timesheet-${i}-${l}.csv`,o.click()}function A(i,l){const n=`/cc-dashboard/api/export/timesheet.ics?from=${i}&to=${l}`,o=document.createElement("a");o.href=n,o.download=`timesheet-${i}-${l}.ics`,o.click()}const H={class:"p-6 space-y-6 max-w-2xl"},K={class:"space-y-1.5"},M={class:"space-y-1.5"},j={class:"flex items-center justify-between"},q={class:"flex items-center gap-3 flex-wrap"},h={class:"space-y-1.5"},G={class:"space-y-1.5"},J={class:"flex items-center gap-2"},se=N({__name:"SettingsView",setup(i){const l=E(),n=F(),o=f(""),p=f(0),g=f(!1),d=f(""),m=f("");P(()=>{l.user&&(o.value=l.user.username,p.value=l.user.daily_overhead_hours??0),n.fetchIntegration();const v=new Date;m.value=C(v);const e=new Date(v);e.setDate(v.getDate()-30),d.value=C(e)});async function D(){g.value=!0;try{await I.patch("/api/auth/me",{username:o.value,daily_overhead_hours:p.value}),await l.fetchMe(),x.success("Profile saved")}catch{x.error("Failed to save profile")}finally{g.value=!1}}async function b(){try{await n.sync(),x.success("Sync complete")}catch{x.error(n.error??"Sync failed")}}return(v,e)=>(k(),U("div",H,[e[18]||(e[18]=a("h2",{class:"text-lg font-semibold text-foreground"},"Settings",-1)),t(w,null,{default:s(()=>[t($,null,{default:s(()=>[t(S,{class:"text-sm"},{default:s(()=>[...e[6]||(e[6]=[u("Profile",-1)])]),_:1})]),_:1}),t(V,{class:"space-y-4"},{default:s(()=>[a("div",K,[e[7]||(e[7]=a("label",{class:"text-sm font-medium text-foreground"},"Username",-1)),t(y,{modelValue:o.value,"onUpdate:modelValue":e[0]||(e[0]=r=>o.value=r),placeholder:"username"},null,8,["modelValue"])]),a("div",M,[e[8]||(e[8]=a("label",{class:"text-sm font-medium text-foreground"},"Daily Overhead Hours",-1)),t(y,{modelValue:p.value,"onUpdate:modelValue":e[1]||(e[1]=r=>p.value=r),type:"number",min:"0",max:"8",step:"0.25",class:"w-32"},null,8,["modelValue"]),e[9]||(e[9]=a("p",{class:"text-xs text-muted-foreground"}," Hours per day to add for overhead / meetings ",-1))]),t(_,{loading:g.value,onClick:D},{default:s(()=>[...e[10]||(e[10]=[u("Save Profile",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),t(w,null,{default:s(()=>[t($,null,{default:s(()=>[a("div",j,[t(S,{class:"text-sm"},{default:s(()=>[...e[11]||(e[11]=[u("Azure DevOps Integration",-1)])]),_:1}),c(n).integration?(k(),z(_,{key:0,variant:"outline",size:"sm",loading:c(n).syncing,onClick:b},{default:s(()=>[...e[12]||(e[12]=[u(" Sync Now ",-1)])]),_:1},8,["loading"])):B("",!0)])]),_:1}),t(V,null,{default:s(()=>[t(O)]),_:1})]),_:1}),t(w,null,{default:s(()=>[t($,null,{default:s(()=>[t(S,{class:"text-sm"},{default:s(()=>[...e[13]||(e[13]=[u("Export",-1)])]),_:1})]),_:1}),t(V,{class:"space-y-4"},{default:s(()=>[a("div",q,[a("div",h,[e[14]||(e[14]=a("label",{class:"text-xs text-muted-foreground"},"From",-1)),t(y,{modelValue:d.value,"onUpdate:modelValue":e[2]||(e[2]=r=>d.value=r),type:"date",class:"h-8 text-xs"},null,8,["modelValue"])]),a("div",G,[e[15]||(e[15]=a("label",{class:"text-xs text-muted-foreground"},"To",-1)),t(y,{modelValue:m.value,"onUpdate:modelValue":e[3]||(e[3]=r=>m.value=r),type:"date",class:"h-8 text-xs"},null,8,["modelValue"])])]),a("div",J,[t(_,{variant:"outline",size:"sm",onClick:e[4]||(e[4]=r=>c(T)(d.value,m.value))},{default:s(()=>[...e[16]||(e[16]=[u(" Download CSV ",-1)])]),_:1}),t(_,{variant:"outline",size:"sm",onClick:e[5]||(e[5]=r=>c(A)(d.value,m.value))},{default:s(()=>[...e[17]||(e[17]=[u(" Download ICS ",-1)])]),_:1})])]),_:1})]),_:1})]))}});export{se as default};
|
||||
|
|
@ -1 +1 @@
|
|||
import{d as l,o as n,c as o,n as t,a as r}from"./index-Coy22yOp.js";const i=l({__name:"Spinner",props:{size:{},class:{}},setup(s){return(a,e)=>(n(),o("svg",{class:t(["animate-spin text-current",s.size==="sm"?"h-3 w-3":s.size==="lg"?"h-6 w-6":"h-4 w-4",a.$props.class]),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[...e[0]||(e[0]=[r("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),r("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1)])],2))}});export{i as _};
|
||||
import{d as l,o as n,c as o,n as t,a as r}from"./index-BP_aNEdP.js";const i=l({__name:"Spinner",props:{size:{},class:{}},setup(s){return(a,e)=>(n(),o("svg",{class:t(["animate-spin text-current",s.size==="sm"?"h-3 w-3":s.size==="lg"?"h-6 w-6":"h-4 w-4",a.$props.class]),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[...e[0]||(e[0]=[r("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),r("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1)])],2))}});export{i as _};
|
||||
|
|
@ -1 +1 @@
|
|||
import{E as e}from"./index-Coy22yOp.js";const i={users:()=>e.get("/api/admin/users"),keys:()=>e.get("/api/keys"),createKey:s=>e.post("/api/keys",s),revokeKey:s=>e.delete(`/api/keys/${s}`)};export{i as a};
|
||||
import{E as e}from"./index-BP_aNEdP.js";const i={users:()=>e.get("/api/admin/users"),keys:()=>e.get("/api/keys"),createKey:s=>e.post("/api/keys",s),revokeKey:s=>e.delete(`/api/keys/${s}`)};export{i as a};
|
||||
|
|
@ -1 +1 @@
|
|||
import{E as t}from"./index-Coy22yOp.js";const e={summary:a=>t.get("/api/dashboard/summary",{params:a}),projects:a=>t.get("/api/dashboard/projects",{params:a}),timeline:a=>t.get("/api/dashboard/timeline",{params:a}),monthly:a=>t.get("/api/dashboard/monthly",{params:a}),dow:a=>t.get("/api/dashboard/dow",{params:a}),tools:a=>t.get("/api/dashboard/tools",{params:a}),activity:a=>t.get("/api/dashboard/activity",{params:a}),calendar:a=>t.get("/api/dashboard/calendar",{params:a}),project:(a,o)=>t.get("/api/dashboard/project/"+a,{params:o})};export{e as d};
|
||||
import{E as t}from"./index-BP_aNEdP.js";const e={summary:a=>t.get("/api/dashboard/summary",{params:a}),projects:a=>t.get("/api/dashboard/projects",{params:a}),timeline:a=>t.get("/api/dashboard/timeline",{params:a}),monthly:a=>t.get("/api/dashboard/monthly",{params:a}),dow:a=>t.get("/api/dashboard/dow",{params:a}),tools:a=>t.get("/api/dashboard/tools",{params:a}),activity:a=>t.get("/api/dashboard/activity",{params:a}),calendar:a=>t.get("/api/dashboard/calendar",{params:a}),project:(a,o)=>t.get("/api/dashboard/project/"+a,{params:o})};export{e as d};
|
||||
|
|
@ -1 +1 @@
|
|||
import{E as s,B as I,q as o}from"./index-Coy22yOp.js";const i={getIntegration:()=>s.get("/api/devops/integration"),saveIntegration:e=>s.put("/api/devops/integration",e),deleteIntegration:()=>s.delete("/api/devops/integration"),sync:()=>s.post("/api/devops/sync"),workItems:e=>s.get("/api/devops/work-items",{params:e?{state:e}:void 0})},m=I("devops",()=>{const e=o(null),l=o([]),r=o(!1),n=o(!1),c=o(null);async function u(){n.value=!0;try{const t=await i.getIntegration();e.value=t.data}catch{e.value=null}finally{n.value=!1}}async function d(t){const a=await i.saveIntegration(t);e.value=a.data}async function g(){await i.deleteIntegration(),e.value=null}async function f(){var t,a;r.value=!0,c.value=null;try{await i.sync(),await u()}catch(v){const p=v;throw c.value=((a=(t=p.response)==null?void 0:t.data)==null?void 0:a.detail)??p.message??"Sync failed",v}finally{r.value=!1}}async function y(t){n.value=!0;try{const a=await i.workItems(t);l.value=a.data}catch{l.value=[]}finally{n.value=!1}}return{integration:e,workItems:l,syncing:r,loading:n,error:c,fetchIntegration:u,saveIntegration:d,deleteIntegration:g,sync:f,fetchWorkItems:y}});export{m as u};
|
||||
import{E as s,C as I,s as o}from"./index-BP_aNEdP.js";const i={getIntegration:()=>s.get("/api/devops/integration"),saveIntegration:e=>s.put("/api/devops/integration",e),deleteIntegration:()=>s.delete("/api/devops/integration"),sync:()=>s.post("/api/devops/sync"),workItems:e=>s.get("/api/devops/work-items",{params:e?{state:e}:void 0})},m=I("devops",()=>{const e=o(null),l=o([]),r=o(!1),n=o(!1),c=o(null);async function u(){n.value=!0;try{const t=await i.getIntegration();e.value=t.data}catch{e.value=null}finally{n.value=!1}}async function d(t){const a=await i.saveIntegration(t);e.value=a.data}async function g(){await i.deleteIntegration(),e.value=null}async function f(){var t,a;r.value=!0,c.value=null;try{await i.sync(),await u()}catch(v){const p=v;throw c.value=((a=(t=p.response)==null?void 0:t.data)==null?void 0:a.detail)??p.message??"Sync failed",v}finally{r.value=!1}}async function y(t){n.value=!0;try{const a=await i.workItems(t);l.value=a.data}catch{l.value=[]}finally{n.value=!1}}return{integration:e,workItems:l,syncing:r,loading:n,error:c,fetchIntegration:u,saveIntegration:d,deleteIntegration:g,sync:f,fetchWorkItems:y}});export{m as u};
|
||||
1
src/static/assets/index-Bq2H3vqg.css
Normal file
1
src/static/assets/tasks-OhvhAG_3.js
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{E as l,C as w,s as i}from"./index-BP_aNEdP.js";const o={list:a=>l.get("/api/tasks",{params:a}),get:a=>l.get(`/api/tasks/${a}`),create:a=>l.post("/api/tasks",a),update:(a,s)=>l.patch(`/api/tasks/${a}`,s),remove:a=>l.delete(`/api/tasks/${a}`),complete:a=>l.post(`/api/tasks/${a}/complete`),blocks:a=>l.get(`/api/tasks/${a}/blocks`),createBlock:(a,s)=>l.post(`/api/tasks/${a}/blocks`,s),updateBlock:(a,s)=>l.patch(`/api/tasks/blocks/${a}`,s),deleteBlock:a=>l.delete(`/api/tasks/blocks/${a}`)},b=Object.freeze(Object.defineProperty({__proto__:null,tasksApi:o},Symbol.toStringTag,{value:"Module"})),$=w("tasks",()=>{const a=i([]),s=i(!1),n=i(null);async function u(t){s.value=!0,n.value=null;try{const e=await o.list({date:t});a.value=e.data}catch(e){const c=e;n.value=c.message??"Failed to fetch tasks"}finally{s.value=!1}}async function d(t){s.value=!0,n.value=null;try{const e=await o.list(t?{project_id:t}:void 0);a.value=e.data}catch(e){const c=e;n.value=c.message??"Failed to fetch tasks"}finally{s.value=!1}}async function p(t){const e=await o.create(t);return a.value.push(e.data),e.data}async function k(t,e){const c=await o.update(t,e),r=a.value.findIndex(h=>h.id===t);return r!==-1&&(a.value[r]=c.data),c.data}async function f(t){await o.remove(t),a.value=a.value.filter(e=>e.id!==t)}async function v(t){const e=await o.complete(t),c=a.value.findIndex(r=>r.id===t);return c!==-1&&(a.value[c]=e.data),e.data}async function y(t,e){return(await o.createBlock(t,e)).data}async function m(t,e){return(await o.updateBlock(t,e)).data}async function g(t){await o.deleteBlock(t)}return{tasks:a,loading:s,error:n,fetchForDate:u,fetchAll:d,create:p,update:k,remove:f,complete:v,createBlock:y,updateBlock:m,deleteBlock:g}});export{b as t,$ as u};
|
||||
|
|
@ -14,8 +14,8 @@
|
|||
else { document.documentElement.classList.remove('dark'); }
|
||||
})();
|
||||
</script>
|
||||
<script type="module" crossorigin src="/cc-dashboard/static/assets/index-Coy22yOp.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/cc-dashboard/static/assets/index-CYkXL5qI.css">
|
||||
<script type="module" crossorigin src="/cc-dashboard/static/assets/index-BP_aNEdP.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/cc-dashboard/static/assets/index-Bq2H3vqg.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { useRoute, RouterLink } from 'vue-router'
|
||||
import { useAuthStore } from '@/stores/auth'
|
||||
|
||||
const route = useRoute()
|
||||
|
|
@ -13,12 +13,13 @@ interface NavItem {
|
|||
path: string
|
||||
icon: string
|
||||
adminOnly?: boolean
|
||||
external?: boolean
|
||||
}
|
||||
|
||||
const navItems: NavItem[] = [
|
||||
{ name: 'Dashboard', path: '/', icon: 'grid' },
|
||||
{ name: 'Calendar', path: '/calendar', icon: 'calendar' },
|
||||
{ name: 'Planner', path: '/planner', icon: 'check-square' },
|
||||
{ name: 'Tasks', path: '/board', icon: 'check-square', external: true },
|
||||
{ name: 'Projects', path: '/projects', icon: 'folder' },
|
||||
{ name: 'Live Feed', path: '/live', icon: 'activity' },
|
||||
{ name: 'Reports', path: '/reports', icon: 'file-text' },
|
||||
|
|
@ -63,10 +64,11 @@ const userInitials = computed(() => {
|
|||
|
||||
<!-- Navigation -->
|
||||
<nav class="flex-1 px-2 py-3 space-y-0.5 overflow-y-auto">
|
||||
<RouterLink
|
||||
<component
|
||||
:is="item.external ? 'a' : RouterLink"
|
||||
v-for="item in visibleItems"
|
||||
:key="item.path"
|
||||
:to="item.path"
|
||||
v-bind="item.external ? { href: item.path, target: '_blank', rel: 'noopener' } : { to: item.path }"
|
||||
:class="[
|
||||
'relative flex items-center gap-3 px-3 h-10 rounded-lg text-sm font-medium transition-all duration-150 group',
|
||||
isActive(item.path)
|
||||
|
|
@ -120,7 +122,7 @@ const userInitials = computed(() => {
|
|||
</svg>
|
||||
|
||||
<span class="text-sm">{{ item.name }}</span>
|
||||
</RouterLink>
|
||||
</component>
|
||||
</nav>
|
||||
|
||||
<!-- User info at bottom -->
|
||||
|
|
|
|||
|
|
@ -1,113 +0,0 @@
|
|||
<script setup lang="ts">
|
||||
import type { Task } from '@/types'
|
||||
import Badge from '@/components/ui/Badge.vue'
|
||||
import { formatDuration } from '@/lib/utils'
|
||||
|
||||
const props = defineProps<{
|
||||
task: Task
|
||||
draggable?: boolean
|
||||
}>()
|
||||
|
||||
const emit = defineEmits<{
|
||||
edit: [task: Task]
|
||||
complete: [task: Task]
|
||||
delete: [task: Task]
|
||||
}>()
|
||||
|
||||
const statusVariant = (status: Task['status']) => {
|
||||
const map: Record<Task['status'], 'default' | 'secondary' | 'success' | 'warning' | 'outline'> = {
|
||||
todo: 'outline',
|
||||
doing: 'default',
|
||||
done: 'success',
|
||||
cancelled: 'secondary',
|
||||
}
|
||||
return map[status]
|
||||
}
|
||||
|
||||
const priorityLabel = (p: number): string => {
|
||||
const labels = ['', 'Low', 'Medium', 'High', 'Critical', 'Blocker']
|
||||
return labels[p] ?? 'Unknown'
|
||||
}
|
||||
|
||||
const priorityColor = (p: number) => {
|
||||
if (p >= 4) return 'bg-red-500'
|
||||
if (p === 3) return 'bg-amber-500'
|
||||
return 'bg-emerald-500'
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
:draggable="draggable"
|
||||
class="rounded-lg border border-border bg-card p-3 hover:border-primary/50 transition-colors cursor-pointer group"
|
||||
@click="emit('edit', task)"
|
||||
>
|
||||
<div class="flex items-start gap-2">
|
||||
<!-- Priority dot -->
|
||||
<div
|
||||
:class="['h-2 w-2 rounded-full mt-1.5 shrink-0', priorityColor(task.priority)]"
|
||||
:title="priorityLabel(task.priority)"
|
||||
/>
|
||||
|
||||
<div class="flex-1 min-w-0">
|
||||
<!-- Title -->
|
||||
<p class="text-sm font-medium text-foreground leading-tight truncate">{{ task.title }}</p>
|
||||
|
||||
<!-- Tags -->
|
||||
<div v-if="task.tags?.length" class="flex items-center gap-1 mt-1 flex-wrap">
|
||||
<span
|
||||
v-for="tag in task.tags"
|
||||
:key="tag.id"
|
||||
class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium"
|
||||
:style="{ background: `${tag.color_hex}22`, color: tag.color_hex }"
|
||||
>
|
||||
{{ tag.name }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- Meta row -->
|
||||
<div class="flex items-center gap-2 mt-1.5 flex-wrap">
|
||||
<Badge :variant="statusVariant(task.status)" class="text-xs py-0">
|
||||
{{ task.status }}
|
||||
</Badge>
|
||||
<span v-if="task.estimate_hours" class="text-xs text-muted-foreground">
|
||||
~{{ formatDuration(task.estimate_hours) }}
|
||||
</span>
|
||||
<span v-if="task.actual_hours" class="text-xs text-emerald-400">
|
||||
{{ formatDuration(task.actual_hours) }} actual
|
||||
</span>
|
||||
<span
|
||||
v-if="task.azure_work_item_id"
|
||||
class="text-xs text-blue-400 ml-auto"
|
||||
title="Azure DevOps"
|
||||
>
|
||||
#{{ task.azure_work_item_id }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Actions -->
|
||||
<div class="flex items-center gap-1 opacity-0 group-hover:opacity-100 shrink-0">
|
||||
<button
|
||||
v-if="task.status !== 'done'"
|
||||
class="p-1 rounded hover:bg-emerald-500/20 text-emerald-400"
|
||||
title="Mark done"
|
||||
@click.stop="emit('complete', task)"
|
||||
>
|
||||
<svg class="h-3.5 w-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
|
||||
</svg>
|
||||
</button>
|
||||
<button
|
||||
class="p-1 rounded hover:bg-red-500/20 text-red-400"
|
||||
title="Delete"
|
||||
@click.stop="emit('delete', task)"
|
||||
>
|
||||
<svg class="h-3.5 w-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
import type { Task } from '@/types'
|
||||
import TaskCard from './TaskCard.vue'
|
||||
|
||||
const props = defineProps<{
|
||||
tasks: Task[]
|
||||
loading?: boolean
|
||||
}>()
|
||||
|
||||
const emit = defineEmits<{
|
||||
edit: [task: Task]
|
||||
complete: [task: Task]
|
||||
delete: [task: Task]
|
||||
}>()
|
||||
|
||||
const grouped = computed(() => {
|
||||
const groups: Record<string, Task[]> = {
|
||||
doing: [],
|
||||
todo: [],
|
||||
done: [],
|
||||
cancelled: [],
|
||||
}
|
||||
for (const task of props.tasks) {
|
||||
groups[task.status]?.push(task)
|
||||
}
|
||||
return groups
|
||||
})
|
||||
|
||||
const statusLabels: Record<string, string> = {
|
||||
doing: 'In Progress',
|
||||
todo: 'To Do',
|
||||
done: 'Done',
|
||||
cancelled: 'Cancelled',
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="space-y-6">
|
||||
<div v-if="loading" class="text-sm text-muted-foreground py-4 text-center">Loading tasks...</div>
|
||||
<template v-else>
|
||||
<div
|
||||
v-for="(group, status) in grouped"
|
||||
:key="status"
|
||||
v-show="group.length > 0"
|
||||
>
|
||||
<div class="flex items-center gap-2 mb-2">
|
||||
<h3 class="text-xs font-semibold uppercase tracking-wide text-muted-foreground">
|
||||
{{ statusLabels[status] }}
|
||||
</h3>
|
||||
<span class="text-xs text-muted-foreground bg-muted px-1.5 py-0.5 rounded-full">
|
||||
{{ group.length }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="space-y-2">
|
||||
<TaskCard
|
||||
v-for="task in group"
|
||||
:key="task.id"
|
||||
:task="task"
|
||||
draggable
|
||||
@edit="emit('edit', task)"
|
||||
@complete="emit('complete', task)"
|
||||
@delete="emit('delete', task)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-if="!props.tasks.length"
|
||||
class="text-sm text-muted-foreground text-center py-8"
|
||||
>
|
||||
No tasks found
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -22,11 +22,6 @@ const routes = [
|
|||
name: 'calendar',
|
||||
component: () => import('@/views/CalendarView.vue'),
|
||||
},
|
||||
{
|
||||
path: 'planner',
|
||||
name: 'planner',
|
||||
component: () => import('@/views/PlannerView.vue'),
|
||||
},
|
||||
{
|
||||
path: 'projects',
|
||||
name: 'projects',
|
||||
|
|
|
|||
|
|
@ -1,156 +0,0 @@
|
|||
<script setup lang="ts">
|
||||
import { ref, watch, computed, onMounted } from 'vue'
|
||||
import { useTasksStore } from '@/stores/tasks'
|
||||
import TaskList from '@/components/tasks/TaskList.vue'
|
||||
import TaskForm from '@/components/tasks/TaskForm.vue'
|
||||
import Button from '@/components/ui/Button.vue'
|
||||
import Input from '@/components/ui/Input.vue'
|
||||
import { toast } from 'vue-sonner'
|
||||
import { isoDateStr } from '@/lib/utils'
|
||||
import type { Task } from '@/types'
|
||||
import type { TaskCreatePayload, TaskUpdatePayload } from '@/api/endpoints/tasks'
|
||||
|
||||
const tasksStore = useTasksStore()
|
||||
|
||||
const selectedDate = ref(isoDateStr(new Date()))
|
||||
const showForm = ref(false)
|
||||
const editingTask = ref<Task | null>(null)
|
||||
const filterProject = ref('')
|
||||
|
||||
onMounted(() => {
|
||||
tasksStore.fetchForDate(selectedDate.value)
|
||||
})
|
||||
|
||||
watch(selectedDate, () => {
|
||||
tasksStore.fetchForDate(selectedDate.value)
|
||||
})
|
||||
|
||||
const filteredTasks = computed(() => {
|
||||
if (!filterProject.value) return tasksStore.tasks
|
||||
return tasksStore.tasks.filter(
|
||||
(t) =>
|
||||
t.project_id?.toLowerCase().includes(filterProject.value.toLowerCase()) ||
|
||||
t.title.toLowerCase().includes(filterProject.value.toLowerCase())
|
||||
)
|
||||
})
|
||||
|
||||
function openCreate() {
|
||||
editingTask.value = null
|
||||
showForm.value = true
|
||||
}
|
||||
|
||||
function openEdit(task: Task) {
|
||||
editingTask.value = task
|
||||
showForm.value = true
|
||||
}
|
||||
|
||||
async function handleSave(payload: TaskCreatePayload | TaskUpdatePayload, block?: { start_at: string; end_at: string }) {
|
||||
try {
|
||||
if (editingTask.value) {
|
||||
await tasksStore.update(editingTask.value.id, payload as TaskUpdatePayload)
|
||||
toast.success('Task updated')
|
||||
} else {
|
||||
const newTask = await tasksStore.create(payload as TaskCreatePayload)
|
||||
if (block && newTask?.id) {
|
||||
await tasksStore.createBlock(newTask.id, block)
|
||||
}
|
||||
toast.success('Task created')
|
||||
}
|
||||
showForm.value = false
|
||||
tasksStore.fetchForDate(selectedDate.value)
|
||||
} catch {
|
||||
toast.error('Failed to save task')
|
||||
}
|
||||
}
|
||||
|
||||
async function handleComplete(task: Task) {
|
||||
try {
|
||||
await tasksStore.complete(task.id)
|
||||
toast.success('Task completed')
|
||||
} catch {
|
||||
toast.error('Failed to complete task')
|
||||
}
|
||||
}
|
||||
|
||||
async function handleDelete(task: Task) {
|
||||
if (!confirm(`Delete "${task.title}"?`)) return
|
||||
try {
|
||||
await tasksStore.remove(task.id)
|
||||
toast.success('Task deleted')
|
||||
} catch {
|
||||
toast.error('Failed to delete task')
|
||||
}
|
||||
}
|
||||
|
||||
function navigateDate(dir: -1 | 1) {
|
||||
const d = new Date(selectedDate.value)
|
||||
d.setDate(d.getDate() + dir)
|
||||
selectedDate.value = isoDateStr(d)
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="p-6">
|
||||
<!-- Header -->
|
||||
<div class="flex items-center gap-3 mb-6 flex-wrap">
|
||||
<h2 class="text-lg font-semibold text-foreground flex-1">Planner</h2>
|
||||
|
||||
<!-- Date navigation -->
|
||||
<div class="flex items-center gap-1">
|
||||
<Button variant="outline" size="sm" @click="navigateDate(-1)">
|
||||
<svg class="h-4 w-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7" />
|
||||
</svg>
|
||||
</Button>
|
||||
<Input
|
||||
v-model="selectedDate"
|
||||
type="date"
|
||||
class="h-8 w-36 text-xs"
|
||||
/>
|
||||
<Button variant="outline" size="sm" @click="navigateDate(1)">
|
||||
<svg class="h-4 w-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
|
||||
</svg>
|
||||
</Button>
|
||||
<Button
|
||||
variant="outline"
|
||||
size="sm"
|
||||
@click="selectedDate = isoDateStr(new Date())"
|
||||
>Today</Button>
|
||||
</div>
|
||||
|
||||
<!-- Filter -->
|
||||
<Input
|
||||
v-model="filterProject"
|
||||
placeholder="Search tasks..."
|
||||
class="h-8 w-40 text-xs"
|
||||
/>
|
||||
|
||||
<!-- New task -->
|
||||
<Button size="sm" @click="openCreate">
|
||||
<svg class="h-4 w-4 mr-1.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4" />
|
||||
</svg>
|
||||
New Task
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<!-- Task list -->
|
||||
<TaskList
|
||||
:tasks="filteredTasks"
|
||||
:loading="tasksStore.loading"
|
||||
@edit="openEdit"
|
||||
@complete="handleComplete"
|
||||
@delete="handleDelete"
|
||||
/>
|
||||
|
||||
<!-- Form dialog -->
|
||||
<TaskForm
|
||||
:open="showForm"
|
||||
:task="editingTask"
|
||||
:default-date="selectedDate"
|
||||
@close="showForm = false"
|
||||
@save="handleSave"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||