claude-mpm 4.25.10__py3-none-any.whl → 5.1.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_PM.md +12 -0
- claude_mpm/agents/PM_INSTRUCTIONS.md +1055 -2230
- claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
- claude_mpm/agents/WORKFLOW.md +4 -4
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +1 -4
- claude_mpm/agents/base_agent_loader.py +10 -35
- claude_mpm/agents/templates/{circuit_breakers.md → circuit-breakers.md} +576 -66
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
- claude_mpm/agents/templates/research-gate-examples.md +669 -0
- claude_mpm/agents/templates/structured-questions-examples.md +615 -0
- claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
- claude_mpm/agents/templates/ticketing-examples.md +277 -0
- claude_mpm/cli/__init__.py +28 -3
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +188 -30
- claude_mpm/cli/commands/agents.py +959 -36
- claude_mpm/cli/commands/agents_cleanup.py +210 -0
- claude_mpm/cli/commands/agents_discover.py +338 -0
- claude_mpm/cli/commands/auto_configure.py +537 -239
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +924 -45
- claude_mpm/cli/commands/configure_navigation.py +63 -46
- claude_mpm/cli/commands/doctor.py +10 -2
- claude_mpm/cli/commands/local_deploy.py +1 -4
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +1 -39
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +322 -19
- claude_mpm/cli/executor.py +22 -3
- claude_mpm/cli/interactive/agent_wizard.py +1028 -43
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +256 -4
- claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
- claude_mpm/cli/parsers/base_parser.py +25 -0
- claude_mpm/cli/parsers/config_parser.py +96 -43
- claude_mpm/cli/parsers/skill_source_parser.py +169 -0
- claude_mpm/cli/parsers/skills_parser.py +7 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/startup.py +456 -103
- claude_mpm/cli/startup_display.py +4 -4
- claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
- claude_mpm/commands/mpm-agents-detect.md +9 -0
- claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
- claude_mpm/commands/mpm-agents-recommend.md +9 -0
- claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
- claude_mpm/commands/mpm-doctor.md +9 -0
- claude_mpm/commands/mpm-help.md +14 -2
- claude_mpm/commands/mpm-init.md +9 -0
- claude_mpm/commands/mpm-monitor.md +9 -0
- claude_mpm/commands/mpm-postmortem.md +123 -0
- claude_mpm/commands/{mpm-resume.md → mpm-session-resume.md} +9 -0
- claude_mpm/commands/mpm-status.md +9 -0
- claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
- claude_mpm/commands/mpm-ticket-view.md +552 -0
- claude_mpm/commands/mpm-version.md +9 -0
- claude_mpm/commands/mpm.md +10 -0
- claude_mpm/config/agent_presets.py +488 -0
- claude_mpm/config/agent_sources.py +325 -0
- claude_mpm/config/skill_presets.py +392 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/constants.py +1 -0
- claude_mpm/core/claude_runner.py +5 -34
- claude_mpm/core/config.py +16 -0
- claude_mpm/core/framework/__init__.py +3 -16
- claude_mpm/core/framework/loaders/file_loader.py +54 -101
- claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
- claude_mpm/core/interactive_session.py +83 -7
- claude_mpm/core/oneshot_session.py +71 -8
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/core/unified_config.py +22 -0
- claude_mpm/experimental/cli_enhancements.py +1 -5
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/memory_integration.py +12 -1
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
- claude_mpm/hooks/failure_learning/__init__.py +2 -8
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
- claude_mpm/hooks/kuzu_response_hook.py +1 -5
- claude_mpm/models/git_repository.py +198 -0
- claude_mpm/services/agents/agent_builder.py +45 -9
- claude_mpm/services/agents/agent_preset_service.py +238 -0
- claude_mpm/services/agents/agent_selection_service.py +484 -0
- claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
- claude_mpm/services/agents/cache_git_manager.py +621 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
- claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
- claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
- claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
- claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
- claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
- claude_mpm/services/agents/git_source_manager.py +629 -0
- claude_mpm/services/agents/loading/framework_agent_loader.py +1 -4
- claude_mpm/services/agents/local_template_manager.py +47 -9
- claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
- claude_mpm/services/agents/sources/__init__.py +13 -0
- claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
- claude_mpm/services/agents/startup_sync.py +239 -0
- claude_mpm/services/agents/toolchain_detector.py +474 -0
- claude_mpm/services/analysis/__init__.py +25 -0
- claude_mpm/services/analysis/postmortem_reporter.py +474 -0
- claude_mpm/services/analysis/postmortem_service.py +765 -0
- claude_mpm/services/command_deployment_service.py +200 -6
- claude_mpm/services/core/base.py +7 -2
- claude_mpm/services/core/interfaces/__init__.py +1 -3
- claude_mpm/services/core/interfaces/health.py +1 -4
- claude_mpm/services/core/models/__init__.py +2 -11
- claude_mpm/services/diagnostics/checks/__init__.py +4 -0
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
- claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
- claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
- claude_mpm/services/diagnostics/doctor_reporter.py +34 -6
- claude_mpm/services/git/__init__.py +21 -0
- claude_mpm/services/git/git_operations_service.py +494 -0
- claude_mpm/services/github/__init__.py +21 -0
- claude_mpm/services/github/github_cli_service.py +397 -0
- claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
- claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
- claude_mpm/services/instructions/__init__.py +9 -0
- claude_mpm/services/instructions/instruction_cache_service.py +374 -0
- claude_mpm/services/local_ops/__init__.py +3 -13
- claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
- claude_mpm/services/local_ops/health_manager.py +1 -4
- claude_mpm/services/mcp_config_manager.py +75 -145
- claude_mpm/services/mcp_gateway/core/process_pool.py +22 -16
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
- claude_mpm/services/mcp_service_verifier.py +6 -3
- claude_mpm/services/monitor/daemon.py +28 -8
- claude_mpm/services/monitor/daemon_manager.py +96 -19
- claude_mpm/services/pr/__init__.py +14 -0
- claude_mpm/services/pr/pr_template_service.py +329 -0
- claude_mpm/services/project/project_organizer.py +4 -0
- claude_mpm/services/runner_configuration_service.py +16 -3
- claude_mpm/services/session_management_service.py +16 -4
- claude_mpm/services/skills/__init__.py +18 -0
- claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
- claude_mpm/services/skills/skill_discovery_service.py +568 -0
- claude_mpm/services/socketio/server/core.py +1 -4
- claude_mpm/services/socketio/server/main.py +1 -3
- claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
- claude_mpm/services/unified/unified_deployment.py +1 -5
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/templates/questions/__init__.py +2 -7
- claude_mpm/templates/questions/pr_strategy.py +1 -4
- claude_mpm/templates/questions/project_init.py +1 -4
- claude_mpm/templates/questions/ticket_mgmt.py +1 -4
- claude_mpm/utils/agent_dependency_loader.py +77 -10
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/gitignore.py +3 -0
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +387 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/METADATA +356 -112
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/RECORD +188 -439
- claude_mpm/agents/templates/agent-manager.json +0 -273
- claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
- claude_mpm/agents/templates/api_qa.json +0 -183
- claude_mpm/agents/templates/clerk-ops.json +0 -235
- claude_mpm/agents/templates/code_analyzer.json +0 -101
- claude_mpm/agents/templates/content-agent.json +0 -358
- claude_mpm/agents/templates/dart_engineer.json +0 -307
- claude_mpm/agents/templates/data_engineer.json +0 -225
- claude_mpm/agents/templates/documentation.json +0 -238
- claude_mpm/agents/templates/engineer.json +0 -210
- claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
- claude_mpm/agents/templates/golang_engineer.json +0 -270
- claude_mpm/agents/templates/imagemagick.json +0 -264
- claude_mpm/agents/templates/java_engineer.json +0 -346
- claude_mpm/agents/templates/javascript_engineer_agent.json +0 -380
- claude_mpm/agents/templates/local_ops_agent.json +0 -1840
- claude_mpm/agents/templates/memory_manager.json +0 -158
- claude_mpm/agents/templates/nextjs_engineer.json +0 -285
- claude_mpm/agents/templates/ops.json +0 -185
- claude_mpm/agents/templates/php-engineer.json +0 -287
- claude_mpm/agents/templates/product_owner.json +0 -338
- claude_mpm/agents/templates/project_organizer.json +0 -144
- claude_mpm/agents/templates/prompt-engineer.json +0 -737
- claude_mpm/agents/templates/python_engineer.json +0 -387
- claude_mpm/agents/templates/qa.json +0 -243
- claude_mpm/agents/templates/react_engineer.json +0 -239
- claude_mpm/agents/templates/refactoring_engineer.json +0 -276
- claude_mpm/agents/templates/research.json +0 -258
- claude_mpm/agents/templates/ruby-engineer.json +0 -280
- claude_mpm/agents/templates/rust_engineer.json +0 -275
- claude_mpm/agents/templates/security.json +0 -202
- claude_mpm/agents/templates/svelte-engineer.json +0 -225
- claude_mpm/agents/templates/tauri_engineer.json +0 -274
- claude_mpm/agents/templates/ticketing.json +0 -181
- claude_mpm/agents/templates/typescript_engineer.json +0 -285
- claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
- claude_mpm/agents/templates/version_control.json +0 -159
- claude_mpm/agents/templates/web_qa.json +0 -400
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/cli/README.md +0 -253
- claude_mpm/cli/commands/mcp_install_commands.py.backup +0 -284
- claude_mpm/cli/commands/mpm_init/README.md +0 -365
- claude_mpm/cli_module/refactoring_guide.md +0 -253
- claude_mpm/commands/mpm-tickets.md +0 -151
- claude_mpm/config/agent_capabilities.yaml +0 -658
- claude_mpm/config/async_logging_config.yaml +0 -145
- claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +0 -34
- claude_mpm/d2/.gitignore +0 -22
- claude_mpm/d2/ARCHITECTURE_COMPARISON.md +0 -273
- claude_mpm/d2/FLASK_INTEGRATION.md +0 -156
- claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +0 -452
- claude_mpm/d2/QUICKSTART.md +0 -186
- claude_mpm/d2/README.md +0 -232
- claude_mpm/d2/STORE_FIX_SUMMARY.md +0 -167
- claude_mpm/d2/SVELTE5_STORES_GUIDE.md +0 -180
- claude_mpm/d2/TESTING.md +0 -288
- claude_mpm/d2/index.html +0 -118
- claude_mpm/d2/package.json +0 -19
- claude_mpm/d2/src/App.svelte +0 -110
- claude_mpm/d2/src/components/Header.svelte +0 -153
- claude_mpm/d2/src/components/MainContent.svelte +0 -74
- claude_mpm/d2/src/components/Sidebar.svelte +0 -85
- claude_mpm/d2/src/components/tabs/EventsTab.svelte +0 -326
- claude_mpm/d2/src/lib/socketio.js +0 -144
- claude_mpm/d2/src/main.js +0 -7
- claude_mpm/d2/src/stores/events.js +0 -114
- claude_mpm/d2/src/stores/socket.js +0 -108
- claude_mpm/d2/src/stores/theme.js +0 -65
- claude_mpm/d2/svelte.config.js +0 -12
- claude_mpm/d2/vite.config.js +0 -15
- claude_mpm/dashboard/.claude-mpm/memories/README.md +0 -36
- claude_mpm/dashboard/BUILD_NUMBER +0 -1
- claude_mpm/dashboard/README.md +0 -121
- claude_mpm/dashboard/VERSION +0 -1
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +0 -273
- claude_mpm/dashboard/react/components/ErrorBoundary.tsx +0 -75
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +0 -141
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +0 -36
- claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
- claude_mpm/dashboard/react/components/shared/FilterBar.tsx +0 -89
- claude_mpm/dashboard/react/contexts/DashboardContext.tsx +0 -215
- claude_mpm/dashboard/react/entries/events.tsx +0 -165
- claude_mpm/dashboard/react/hooks/useEvents.ts +0 -191
- claude_mpm/dashboard/react/hooks/useSocket.ts +0 -225
- claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
- claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +0 -170
- claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/activity-tree.js.map +0 -1
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
- claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/built/components/agent-inference.js.map +0 -1
- claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
- claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
- claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/code-tree.js.map +0 -1
- claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/code-viewer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
- claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
- claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/built/components/event-processor.js.map +0 -1
- claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/event-viewer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/export-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js.map +0 -1
- claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/file-viewer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +0 -1
- claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/module-viewer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
- claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
- claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/session-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/socket-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +0 -1
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +0 -1
- claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/built/components/working-directory.js.map +0 -1
- claude_mpm/dashboard/static/built/connection-manager.js +0 -536
- claude_mpm/dashboard/static/built/dashboard.js +0 -2
- claude_mpm/dashboard/static/built/dashboard.js.map +0 -1
- claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
- claude_mpm/dashboard/static/built/react/events.js +0 -30
- claude_mpm/dashboard/static/built/react/events.js.map +0 -1
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
- claude_mpm/dashboard/static/built/shared/logger.js +0 -385
- claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/built/socket-client.js +0 -2
- claude_mpm/dashboard/static/built/socket-client.js.map +0 -1
- claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/events.html +0 -607
- claude_mpm/dashboard/static/index.html +0 -635
- claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +0 -170
- claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/js/shared/logger.js +0 -385
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
- claude_mpm/dashboard/static/legacy/activity.html +0 -736
- claude_mpm/dashboard/static/legacy/agents.html +0 -786
- claude_mpm/dashboard/static/legacy/files.html +0 -747
- claude_mpm/dashboard/static/legacy/tools.html +0 -831
- claude_mpm/dashboard/static/monitors.html +0 -431
- claude_mpm/dashboard/static/navigation-test-results.md +0 -118
- claude_mpm/dashboard/static/production/events.html +0 -659
- claude_mpm/dashboard/static/production/main.html +0 -698
- claude_mpm/dashboard/static/production/monitors.html +0 -483
- claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
- claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
- claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
- claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
- claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +0 -36
- claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +0 -39
- claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +0 -38
- claude_mpm/hooks/README.md +0 -143
- claude_mpm/hooks/templates/README.md +0 -180
- claude_mpm/hooks/templates/settings.json.example +0 -147
- claude_mpm/schemas/agent_schema.json +0 -596
- claude_mpm/schemas/frontmatter_schema.json +0 -165
- claude_mpm/services/event_bus/README.md +0 -244
- claude_mpm/services/events/README.md +0 -303
- claude_mpm/services/framework_claude_md_generator/README.md +0 -119
- claude_mpm/services/mcp_gateway/README.md +0 -185
- claude_mpm/services/socketio/handlers/connection.py.backup +0 -217
- claude_mpm/services/socketio/handlers/hook.py.backup +0 -154
- claude_mpm/services/static/.gitkeep +0 -2
- claude_mpm/services/version_control/VERSION +0 -1
- claude_mpm/skills/bundled/.gitkeep +0 -2
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
- claude_mpm/skills/bundled/collaboration/git-worktrees.md +0 -317
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
- claude_mpm/skills/bundled/collaboration/stacked-prs.md +0 -251
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
- claude_mpm/skills/bundled/debugging/root-cause-tracing/find-polluter.sh +0 -63
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
- claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +0 -611
- claude_mpm/skills/bundled/infrastructure/env-manager/README.md +0 -596
- claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +0 -260
- claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +0 -315
- claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +0 -436
- claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +0 -433
- claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +0 -452
- claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +0 -404
- claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +0 -420
- claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +0 -202
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +0 -54
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +0 -322
- claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +0 -202
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
- claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +0 -202
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
- claude_mpm/skills/bundled/main/mcp-builder/scripts/example_evaluation.xml +0 -22
- claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +0 -2
- claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +0 -202
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
- claude_mpm/skills/bundled/react/flexlayout-react.md +0 -742
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
- claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +0 -495
- claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +0 -599
- claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +0 -535
- claude_mpm/skills/bundled/tauri/tauri-error-handling.md +0 -613
- claude_mpm/skills/bundled/tauri/tauri-event-system.md +0 -648
- claude_mpm/skills/bundled/tauri/tauri-file-system.md +0 -673
- claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +0 -767
- claude_mpm/skills/bundled/tauri/tauri-performance.md +0 -669
- claude_mpm/skills/bundled/tauri/tauri-state-management.md +0 -573
- claude_mpm/skills/bundled/tauri/tauri-testing.md +0 -384
- claude_mpm/skills/bundled/tauri/tauri-window-management.md +0 -628
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
- claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +0 -158
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
- claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +0 -458
- claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +0 -411
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +0 -317
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +0 -270
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +0 -436
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
- claude_mpm/skills/bundled/testing/webapp-testing/LICENSE.txt +0 -202
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
- claude_mpm/templates/questions/EXAMPLES.md +0 -501
- claude_mpm/tools/README_SOCKETIO_DEBUG.md +0 -224
- claude_mpm/tools/code_tree_analyzer/README.md +0 -64
- /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
- /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
- /claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +0 -0
- /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
- /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/WHEEL +0 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.25.10.dist-info → claude_mpm-5.1.8.dist-info}/top_level.txt +0 -0
claude_mpm/d2/TESTING.md
DELETED
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
# Testing Checklist for Dashboard2
|
|
2
|
-
|
|
3
|
-
## Build Verification
|
|
4
|
-
|
|
5
|
-
- [x] `npm install` completes without errors
|
|
6
|
-
- [x] `npm run build` completes successfully
|
|
7
|
-
- [x] No Svelte compiler warnings
|
|
8
|
-
- [x] No accessibility warnings
|
|
9
|
-
- [x] `dist/index.html` exists
|
|
10
|
-
- [x] `dist/assets/*.js` exists
|
|
11
|
-
- [x] `dist/assets/*.css` exists
|
|
12
|
-
|
|
13
|
-
## Development Server Testing
|
|
14
|
-
|
|
15
|
-
Run `npm run dev` and verify:
|
|
16
|
-
|
|
17
|
-
- [ ] Dev server starts on port 5173
|
|
18
|
-
- [ ] Dashboard loads at `http://localhost:5173`
|
|
19
|
-
- [ ] No console errors on page load
|
|
20
|
-
- [ ] Hot Module Replacement (HMR) works on file changes
|
|
21
|
-
|
|
22
|
-
## UI Components
|
|
23
|
-
|
|
24
|
-
### Header
|
|
25
|
-
- [ ] Title displays: "Claude MPM Dashboard"
|
|
26
|
-
- [ ] Version displays: "v2.0"
|
|
27
|
-
- [ ] Connection status indicator is visible
|
|
28
|
-
- [ ] Status text shows "Disconnected" initially
|
|
29
|
-
- [ ] Port number displays correctly
|
|
30
|
-
- [ ] Indicator color is red when disconnected
|
|
31
|
-
|
|
32
|
-
### Sidebar
|
|
33
|
-
- [ ] All 5 tabs are visible: Events, Agents, Files, Tools, Activity
|
|
34
|
-
- [ ] Each tab has an icon
|
|
35
|
-
- [ ] Events tab is active by default
|
|
36
|
-
- [ ] Clicking tabs switches active state
|
|
37
|
-
- [ ] Active tab has blue highlight
|
|
38
|
-
- [ ] Hover effects work correctly
|
|
39
|
-
|
|
40
|
-
### Main Content
|
|
41
|
-
- [ ] Events tab content loads
|
|
42
|
-
- [ ] Other tabs show placeholder content
|
|
43
|
-
- [ ] Placeholder icons display correctly
|
|
44
|
-
- [ ] Content area fills remaining space
|
|
45
|
-
|
|
46
|
-
## Socket.IO Connection
|
|
47
|
-
|
|
48
|
-
### Local Connection (port 8765)
|
|
49
|
-
- [ ] Connection status changes to "Connecting..." on startup
|
|
50
|
-
- [ ] Status changes to "Connected" when server is available
|
|
51
|
-
- [ ] Indicator turns green on connection
|
|
52
|
-
- [ ] Port number matches server (8765)
|
|
53
|
-
- [ ] Status shows "Disconnected" when server unavailable
|
|
54
|
-
- [ ] Status shows "Reconnecting..." when connection lost
|
|
55
|
-
- [ ] Indicator turns yellow during reconnection
|
|
56
|
-
- [ ] Auto-reconnect works after temporary disconnection
|
|
57
|
-
|
|
58
|
-
### Console Logging
|
|
59
|
-
Check browser console for:
|
|
60
|
-
- [ ] Socket.IO connection events logged
|
|
61
|
-
- [ ] No connection errors (if server running)
|
|
62
|
-
- [ ] Event reception logged
|
|
63
|
-
- [ ] No JavaScript errors
|
|
64
|
-
|
|
65
|
-
## Events Tab Functionality
|
|
66
|
-
|
|
67
|
-
### Empty State
|
|
68
|
-
- [ ] Empty state displays when no events
|
|
69
|
-
- [ ] "Waiting for events..." message shown
|
|
70
|
-
- [ ] Hint text displays
|
|
71
|
-
- [ ] Icon (📡) is visible
|
|
72
|
-
|
|
73
|
-
### Event Display
|
|
74
|
-
- [ ] Events appear when received
|
|
75
|
-
- [ ] Events display in reverse chronological order (newest first)
|
|
76
|
-
- [ ] Event time is formatted correctly (HH:MM:SS.mmm)
|
|
77
|
-
- [ ] Event source badge displays with correct color:
|
|
78
|
-
- Hook: Blue (#3b82f6)
|
|
79
|
-
- System: Green (#10b981)
|
|
80
|
-
- API: Orange (#f59e0b)
|
|
81
|
-
- [ ] Event summary shows type and subtype
|
|
82
|
-
- [ ] Event item is clickable
|
|
83
|
-
|
|
84
|
-
### Event Expansion
|
|
85
|
-
- [ ] Clicking event expands JSON details
|
|
86
|
-
- [ ] Expand icon changes from ▶ to ▼
|
|
87
|
-
- [ ] JSON is formatted with syntax highlighting
|
|
88
|
-
- [ ] JSON is scrollable horizontally if needed
|
|
89
|
-
- [ ] Clicking again collapses the event
|
|
90
|
-
- [ ] Only one event expanded at a time (optional behavior)
|
|
91
|
-
|
|
92
|
-
### Event Statistics
|
|
93
|
-
- [ ] "Total" counter increments with each event
|
|
94
|
-
- [ ] "Displayed" counter shows current count
|
|
95
|
-
- [ ] Numbers update in real-time
|
|
96
|
-
- [ ] Clear button appears when events exist
|
|
97
|
-
- [ ] Clear button removes all events
|
|
98
|
-
- [ ] Counters reset after clearing
|
|
99
|
-
|
|
100
|
-
### Auto-scroll
|
|
101
|
-
- [ ] New events auto-scroll to top
|
|
102
|
-
- [ ] User can scroll manually
|
|
103
|
-
- [ ] Auto-scroll doesn't interfere with manual scrolling
|
|
104
|
-
|
|
105
|
-
## Event Reception Testing
|
|
106
|
-
|
|
107
|
-
### Test with Mock Events
|
|
108
|
-
|
|
109
|
-
You can test event reception by running this in the browser console:
|
|
110
|
-
|
|
111
|
-
```javascript
|
|
112
|
-
// Simulate a claude_event
|
|
113
|
-
window.dispatchEvent(new CustomEvent('test-socket-event', {
|
|
114
|
-
detail: {
|
|
115
|
-
source: 'hook',
|
|
116
|
-
type: 'tool',
|
|
117
|
-
subtype: 'pre_tool',
|
|
118
|
-
timestamp: new Date().toISOString(),
|
|
119
|
-
data: {
|
|
120
|
-
tool_name: 'test_tool',
|
|
121
|
-
params: { test: true }
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}));
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
Or emit directly via Socket.IO if connected:
|
|
128
|
-
```javascript
|
|
129
|
-
// Get socket from console
|
|
130
|
-
const socket = io('http://localhost:8765');
|
|
131
|
-
socket.emit('claude_event', {
|
|
132
|
-
source: 'hook',
|
|
133
|
-
type: 'test',
|
|
134
|
-
subtype: 'console_test',
|
|
135
|
-
timestamp: new Date().toISOString(),
|
|
136
|
-
data: { message: 'Test from console' }
|
|
137
|
-
});
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### Real Event Testing
|
|
141
|
-
- [ ] Trigger a Claude Code hook event
|
|
142
|
-
- [ ] Event appears in dashboard immediately
|
|
143
|
-
- [ ] Event data is complete and accurate
|
|
144
|
-
- [ ] Timestamp is correct
|
|
145
|
-
- [ ] Event can be expanded to view full JSON
|
|
146
|
-
- [ ] Multiple events display correctly
|
|
147
|
-
- [ ] High-frequency events don't cause UI lag
|
|
148
|
-
|
|
149
|
-
### Heartbeat Events
|
|
150
|
-
- [ ] Server heartbeat events appear (every 3 minutes)
|
|
151
|
-
- [ ] Heartbeat has "system" source
|
|
152
|
-
- [ ] Heartbeat data includes uptime
|
|
153
|
-
- [ ] Heartbeat data includes connected clients
|
|
154
|
-
|
|
155
|
-
## Performance Testing
|
|
156
|
-
|
|
157
|
-
### Large Event Loads
|
|
158
|
-
- [ ] Dashboard handles 100 events smoothly
|
|
159
|
-
- [ ] Dashboard handles 1000 events (max buffer)
|
|
160
|
-
- [ ] Events beyond 1000 are trimmed correctly
|
|
161
|
-
- [ ] No memory leaks with continuous events
|
|
162
|
-
- [ ] Scrolling remains smooth with full buffer
|
|
163
|
-
|
|
164
|
-
### Network
|
|
165
|
-
- [ ] Dashboard works on slow connections
|
|
166
|
-
- [ ] Reconnection works after network interruption
|
|
167
|
-
- [ ] Events buffer during disconnection (if implemented)
|
|
168
|
-
- [ ] No duplicate events after reconnection
|
|
169
|
-
|
|
170
|
-
## Cross-Browser Testing
|
|
171
|
-
|
|
172
|
-
- [ ] Chrome/Chromium (latest)
|
|
173
|
-
- [ ] Firefox (latest)
|
|
174
|
-
- [ ] Safari (latest)
|
|
175
|
-
- [ ] Edge (latest)
|
|
176
|
-
|
|
177
|
-
Check for:
|
|
178
|
-
- [ ] Layout renders correctly
|
|
179
|
-
- [ ] WebSocket/Socket.IO works
|
|
180
|
-
- [ ] No console errors
|
|
181
|
-
- [ ] Animations work smoothly
|
|
182
|
-
|
|
183
|
-
## Accessibility Testing
|
|
184
|
-
|
|
185
|
-
- [ ] Keyboard navigation works
|
|
186
|
-
- [ ] Tab key moves through interactive elements
|
|
187
|
-
- [ ] Enter/Space activates buttons
|
|
188
|
-
- [ ] Screen reader can read content
|
|
189
|
-
- [ ] Color contrast meets WCAG standards
|
|
190
|
-
- [ ] Focus indicators are visible
|
|
191
|
-
|
|
192
|
-
## Responsive Design
|
|
193
|
-
|
|
194
|
-
Test at different viewport sizes:
|
|
195
|
-
- [ ] 1920x1080 (Full HD)
|
|
196
|
-
- [ ] 1366x768 (Laptop)
|
|
197
|
-
- [ ] 1024x768 (Tablet landscape)
|
|
198
|
-
|
|
199
|
-
Verify:
|
|
200
|
-
- [ ] Layout doesn't break
|
|
201
|
-
- [ ] All content is accessible
|
|
202
|
-
- [ ] No horizontal scrolling
|
|
203
|
-
- [ ] Sidebar width is appropriate
|
|
204
|
-
|
|
205
|
-
## Production Build Testing
|
|
206
|
-
|
|
207
|
-
After running `npm run build`:
|
|
208
|
-
|
|
209
|
-
1. **Static File Serving**:
|
|
210
|
-
- [ ] Serve dist/ with a simple HTTP server
|
|
211
|
-
- [ ] Dashboard loads correctly
|
|
212
|
-
- [ ] Assets load from correct paths
|
|
213
|
-
- [ ] No 404 errors for assets
|
|
214
|
-
|
|
215
|
-
2. **Integration Testing**:
|
|
216
|
-
- [ ] Flask serves dashboard correctly
|
|
217
|
-
- [ ] Base path `/dashboard2/` works
|
|
218
|
-
- [ ] Assets load with correct paths
|
|
219
|
-
- [ ] Socket.IO connects to correct port
|
|
220
|
-
|
|
221
|
-
3. **Size Optimization**:
|
|
222
|
-
- [ ] Total bundle size < 100KB (gzipped)
|
|
223
|
-
- [ ] Initial load time < 2 seconds
|
|
224
|
-
- [ ] No unnecessary dependencies bundled
|
|
225
|
-
|
|
226
|
-
## Error Handling
|
|
227
|
-
|
|
228
|
-
Test error scenarios:
|
|
229
|
-
- [ ] Server not available: Shows "Disconnected" status
|
|
230
|
-
- [ ] Server crashes: Shows reconnection status
|
|
231
|
-
- [ ] Invalid event data: Handles gracefully (no crashes)
|
|
232
|
-
- [ ] Malformed JSON: Displays error or skips event
|
|
233
|
-
- [ ] Network timeout: Retries connection
|
|
234
|
-
|
|
235
|
-
## Console Checks
|
|
236
|
-
|
|
237
|
-
Verify no errors for:
|
|
238
|
-
- [ ] Component initialization
|
|
239
|
-
- [ ] Socket.IO connection
|
|
240
|
-
- [ ] Event handling
|
|
241
|
-
- [ ] State updates
|
|
242
|
-
- [ ] DOM updates
|
|
243
|
-
|
|
244
|
-
## Final Production Checklist
|
|
245
|
-
|
|
246
|
-
Before deploying:
|
|
247
|
-
- [ ] Run `npm run build` with no warnings
|
|
248
|
-
- [ ] Test built files locally
|
|
249
|
-
- [ ] Verify all features work in production build
|
|
250
|
-
- [ ] Check browser console for errors
|
|
251
|
-
- [ ] Test Socket.IO connection
|
|
252
|
-
- [ ] Verify events display correctly
|
|
253
|
-
- [ ] Test on target deployment environment
|
|
254
|
-
- [ ] Document any known issues
|
|
255
|
-
- [ ] Update version number if needed
|
|
256
|
-
|
|
257
|
-
## Known Issues
|
|
258
|
-
|
|
259
|
-
Document any issues found during testing:
|
|
260
|
-
|
|
261
|
-
1. **Issue**: [Description]
|
|
262
|
-
- **Severity**: Low/Medium/High
|
|
263
|
-
- **Workaround**: [If available]
|
|
264
|
-
- **Fix plan**: [If scheduled]
|
|
265
|
-
|
|
266
|
-
## Performance Benchmarks
|
|
267
|
-
|
|
268
|
-
Record baseline performance:
|
|
269
|
-
- Initial load time: ___ms
|
|
270
|
-
- Time to Socket.IO connection: ___ms
|
|
271
|
-
- Average event processing time: ___ms
|
|
272
|
-
- Memory usage with 1000 events: ___MB
|
|
273
|
-
- FPS during scrolling: ___
|
|
274
|
-
|
|
275
|
-
## Test Results Summary
|
|
276
|
-
|
|
277
|
-
Date: ___________
|
|
278
|
-
Tester: ___________
|
|
279
|
-
Environment: ___________
|
|
280
|
-
|
|
281
|
-
- Total tests: ___
|
|
282
|
-
- Passed: ___
|
|
283
|
-
- Failed: ___
|
|
284
|
-
- Skipped: ___
|
|
285
|
-
|
|
286
|
-
**Overall Status**: ⬜ Pass | ⬜ Fail | ⬜ Partial
|
|
287
|
-
|
|
288
|
-
**Notes**:
|
claude_mpm/d2/index.html
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Claude MPM Dashboard</title>
|
|
7
|
-
<style>
|
|
8
|
-
* {
|
|
9
|
-
margin: 0;
|
|
10
|
-
padding: 0;
|
|
11
|
-
box-sizing: border-box;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/* CSS Custom Properties for Theming */
|
|
15
|
-
:root {
|
|
16
|
-
/* Light mode (default) */
|
|
17
|
-
--bg-primary: #ffffff;
|
|
18
|
-
--bg-secondary: #f5f5f5;
|
|
19
|
-
--bg-tertiary: #e8e8e8;
|
|
20
|
-
--bg-elevated: #ffffff;
|
|
21
|
-
--text-primary: #1a1a1a;
|
|
22
|
-
--text-secondary: #666666;
|
|
23
|
-
--text-tertiary: #888888;
|
|
24
|
-
--border-color: #e0e0e0;
|
|
25
|
-
--border-color-light: #f0f0f0;
|
|
26
|
-
--accent-color: #3b82f6;
|
|
27
|
-
--accent-hover: #2563eb;
|
|
28
|
-
--success-color: #10b981;
|
|
29
|
-
--error-color: #ef4444;
|
|
30
|
-
--warning-color: #f59e0b;
|
|
31
|
-
--header-bg-start: #f8f9fa;
|
|
32
|
-
--header-bg-end: #e9ecef;
|
|
33
|
-
--sidebar-bg: #fafafa;
|
|
34
|
-
--card-bg: #ffffff;
|
|
35
|
-
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
36
|
-
--shadow-md: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
37
|
-
--shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.1);
|
|
38
|
-
--overlay-bg: rgba(0, 0, 0, 0.05);
|
|
39
|
-
--overlay-border: rgba(0, 0, 0, 0.1);
|
|
40
|
-
--input-bg: #ffffff;
|
|
41
|
-
--input-border: #d1d5db;
|
|
42
|
-
--tab-hover-bg: rgba(0, 0, 0, 0.05);
|
|
43
|
-
--scrollbar-track: #f1f1f1;
|
|
44
|
-
--scrollbar-thumb: #c1c1c1;
|
|
45
|
-
--scrollbar-thumb-hover: #a8a8a8;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
[data-theme="dark"] {
|
|
49
|
-
/* Dark mode */
|
|
50
|
-
--bg-primary: #0f0f0f;
|
|
51
|
-
--bg-secondary: #1a1a1a;
|
|
52
|
-
--bg-tertiary: #2d2d2d;
|
|
53
|
-
--bg-elevated: #1a1a1a;
|
|
54
|
-
--text-primary: #ffffff;
|
|
55
|
-
--text-secondary: #a0a0a0;
|
|
56
|
-
--text-tertiary: #888888;
|
|
57
|
-
--border-color: #333333;
|
|
58
|
-
--border-color-light: #404040;
|
|
59
|
-
--accent-color: #60a5fa;
|
|
60
|
-
--accent-hover: #3b82f6;
|
|
61
|
-
--success-color: #34d399;
|
|
62
|
-
--error-color: #f87171;
|
|
63
|
-
--warning-color: #fbbf24;
|
|
64
|
-
--header-bg-start: #1a1a1a;
|
|
65
|
-
--header-bg-end: #2d2d2d;
|
|
66
|
-
--sidebar-bg: #141414;
|
|
67
|
-
--card-bg: #1a1a1a;
|
|
68
|
-
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
|
|
69
|
-
--shadow-md: 0 2px 8px rgba(0, 0, 0, 0.4);
|
|
70
|
-
--shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.5);
|
|
71
|
-
--overlay-bg: rgba(255, 255, 255, 0.05);
|
|
72
|
-
--overlay-border: rgba(255, 255, 255, 0.1);
|
|
73
|
-
--input-bg: #2d2d2d;
|
|
74
|
-
--input-border: #404040;
|
|
75
|
-
--tab-hover-bg: rgba(255, 255, 255, 0.05);
|
|
76
|
-
--scrollbar-track: #1a1a1a;
|
|
77
|
-
--scrollbar-thumb: #404040;
|
|
78
|
-
--scrollbar-thumb-hover: #505050;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
body {
|
|
82
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
|
83
|
-
background: var(--bg-primary);
|
|
84
|
-
color: var(--text-primary);
|
|
85
|
-
overflow: hidden;
|
|
86
|
-
transition: background-color 0.3s ease, color 0.3s ease;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/* Smooth transitions for theme changes */
|
|
90
|
-
* {
|
|
91
|
-
transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/* Custom scrollbar theming */
|
|
95
|
-
::-webkit-scrollbar {
|
|
96
|
-
width: 8px;
|
|
97
|
-
height: 8px;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
::-webkit-scrollbar-track {
|
|
101
|
-
background: var(--scrollbar-track);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
::-webkit-scrollbar-thumb {
|
|
105
|
-
background: var(--scrollbar-thumb);
|
|
106
|
-
border-radius: 4px;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
::-webkit-scrollbar-thumb:hover {
|
|
110
|
-
background: var(--scrollbar-thumb-hover);
|
|
111
|
-
}
|
|
112
|
-
</style>
|
|
113
|
-
</head>
|
|
114
|
-
<body>
|
|
115
|
-
<div id="app"></div>
|
|
116
|
-
<script type="module" src="/src/main.js"></script>
|
|
117
|
-
</body>
|
|
118
|
-
</html>
|
claude_mpm/d2/package.json
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "claude-mpm-d2",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"description": "Svelte 5-based dashboard for Claude MPM",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"dev": "vite",
|
|
8
|
-
"build": "vite build",
|
|
9
|
-
"preview": "vite preview"
|
|
10
|
-
},
|
|
11
|
-
"devDependencies": {
|
|
12
|
-
"@sveltejs/vite-plugin-svelte": "^4.0.0",
|
|
13
|
-
"svelte": "^5.0.0",
|
|
14
|
-
"vite": "^5.0.0"
|
|
15
|
-
},
|
|
16
|
-
"dependencies": {
|
|
17
|
-
"socket.io-client": "^4.7.5"
|
|
18
|
-
}
|
|
19
|
-
}
|
claude_mpm/d2/src/App.svelte
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { onMount, onDestroy } from 'svelte';
|
|
3
|
-
import Header from './components/Header.svelte';
|
|
4
|
-
import Sidebar from './components/Sidebar.svelte';
|
|
5
|
-
import MainContent from './components/MainContent.svelte';
|
|
6
|
-
import { socketStore } from './stores/socket.js';
|
|
7
|
-
import { eventsStore } from './stores/events.js';
|
|
8
|
-
import { themeStore } from './stores/theme.js';
|
|
9
|
-
|
|
10
|
-
// Destructure individual stores from socketStore
|
|
11
|
-
const { statusText, statusColor, port } = socketStore;
|
|
12
|
-
|
|
13
|
-
let activeTab = $state('events');
|
|
14
|
-
|
|
15
|
-
// Socket.IO client instance (set during onMount)
|
|
16
|
-
let client = null;
|
|
17
|
-
|
|
18
|
-
// Event handler functions (defined outside lifecycle for proper cleanup)
|
|
19
|
-
function handleClaudeEvent(data) {
|
|
20
|
-
console.log('Received claude_event:', data);
|
|
21
|
-
eventsStore.addEvent(data);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function handleHeartbeat(data) {
|
|
25
|
-
console.log('Received heartbeat:', data);
|
|
26
|
-
eventsStore.addEvent({
|
|
27
|
-
source: 'system',
|
|
28
|
-
type: 'heartbeat',
|
|
29
|
-
timestamp: data.timestamp,
|
|
30
|
-
data: data
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function handleAnyEvent(eventName, ...args) {
|
|
35
|
-
if (eventName !== 'claude_event' && eventName !== 'heartbeat' && eventName !== 'connection_status') {
|
|
36
|
-
console.log('Received event:', eventName, args);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
onMount(() => {
|
|
41
|
-
// Initialize theme on mount
|
|
42
|
-
themeStore.initialize();
|
|
43
|
-
|
|
44
|
-
// Connect to Socket.IO server
|
|
45
|
-
socketStore.connect();
|
|
46
|
-
|
|
47
|
-
// Get the client and listen for events
|
|
48
|
-
client = socketStore.getClient();
|
|
49
|
-
if (client) {
|
|
50
|
-
// Listen for Claude Code events
|
|
51
|
-
client.on('claude_event', handleClaudeEvent);
|
|
52
|
-
|
|
53
|
-
// Listen for heartbeat events
|
|
54
|
-
client.on('heartbeat', handleHeartbeat);
|
|
55
|
-
|
|
56
|
-
// Listen for any other events (for debugging)
|
|
57
|
-
client.socket.onAny(handleAnyEvent);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
onDestroy(() => {
|
|
62
|
-
// Cleanup event listeners before disconnect
|
|
63
|
-
if (client) {
|
|
64
|
-
client.off('claude_event', handleClaudeEvent);
|
|
65
|
-
client.off('heartbeat', handleHeartbeat);
|
|
66
|
-
if (client.socket) {
|
|
67
|
-
client.socket.offAny(handleAnyEvent);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Disconnect Socket.IO
|
|
72
|
-
socketStore.disconnect();
|
|
73
|
-
});
|
|
74
|
-
</script>
|
|
75
|
-
|
|
76
|
-
<div class="app">
|
|
77
|
-
<Header
|
|
78
|
-
statusText={$statusText}
|
|
79
|
-
statusColor={$statusColor}
|
|
80
|
-
port={$port}
|
|
81
|
-
/>
|
|
82
|
-
|
|
83
|
-
<div class="app-body">
|
|
84
|
-
<Sidebar bind:activeTab={activeTab} />
|
|
85
|
-
<MainContent activeTab={activeTab} />
|
|
86
|
-
</div>
|
|
87
|
-
</div>
|
|
88
|
-
|
|
89
|
-
<style>
|
|
90
|
-
:global(body) {
|
|
91
|
-
margin: 0;
|
|
92
|
-
padding: 0;
|
|
93
|
-
overflow: hidden;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.app {
|
|
97
|
-
width: 100vw;
|
|
98
|
-
height: 100vh;
|
|
99
|
-
display: flex;
|
|
100
|
-
flex-direction: column;
|
|
101
|
-
background: var(--bg-primary);
|
|
102
|
-
color: var(--text-primary);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.app-body {
|
|
106
|
-
flex: 1;
|
|
107
|
-
display: flex;
|
|
108
|
-
overflow: hidden;
|
|
109
|
-
}
|
|
110
|
-
</style>
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { themeStore } from '../stores/theme.js';
|
|
3
|
-
|
|
4
|
-
// Use Svelte 5 $props() for type-safe props
|
|
5
|
-
let { statusText, statusColor, port } = $props();
|
|
6
|
-
|
|
7
|
-
function handleThemeToggle() {
|
|
8
|
-
themeStore.toggle();
|
|
9
|
-
}
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<header class="header">
|
|
13
|
-
<div class="header-content">
|
|
14
|
-
<div class="title">
|
|
15
|
-
<h1>Claude MPM Dashboard</h1>
|
|
16
|
-
<span class="version">v2.0</span>
|
|
17
|
-
</div>
|
|
18
|
-
|
|
19
|
-
<div class="header-actions">
|
|
20
|
-
<div class="connection-status">
|
|
21
|
-
<div class="status-indicator" style="background: {statusColor}"></div>
|
|
22
|
-
<span class="status-text">{statusText}</span>
|
|
23
|
-
<span class="port">:{port}</span>
|
|
24
|
-
</div>
|
|
25
|
-
|
|
26
|
-
<button class="theme-toggle" onclick={handleThemeToggle} aria-label="Toggle theme">
|
|
27
|
-
{#if $themeStore === 'light'}
|
|
28
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
29
|
-
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
|
30
|
-
</svg>
|
|
31
|
-
{:else}
|
|
32
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
33
|
-
<circle cx="12" cy="12" r="5"></circle>
|
|
34
|
-
<line x1="12" y1="1" x2="12" y2="3"></line>
|
|
35
|
-
<line x1="12" y1="21" x2="12" y2="23"></line>
|
|
36
|
-
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
|
37
|
-
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
|
38
|
-
<line x1="1" y1="12" x2="3" y2="12"></line>
|
|
39
|
-
<line x1="21" y1="12" x2="23" y2="12"></line>
|
|
40
|
-
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
|
41
|
-
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
|
42
|
-
</svg>
|
|
43
|
-
{/if}
|
|
44
|
-
</button>
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
|
47
|
-
</header>
|
|
48
|
-
|
|
49
|
-
<style>
|
|
50
|
-
.header {
|
|
51
|
-
height: 60px;
|
|
52
|
-
background: linear-gradient(135deg, var(--header-bg-start) 0%, var(--header-bg-end) 100%);
|
|
53
|
-
border-bottom: 1px solid var(--border-color);
|
|
54
|
-
display: flex;
|
|
55
|
-
align-items: center;
|
|
56
|
-
padding: 0 24px;
|
|
57
|
-
box-shadow: var(--shadow-md);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.header-content {
|
|
61
|
-
width: 100%;
|
|
62
|
-
display: flex;
|
|
63
|
-
justify-content: space-between;
|
|
64
|
-
align-items: center;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.title {
|
|
68
|
-
display: flex;
|
|
69
|
-
align-items: baseline;
|
|
70
|
-
gap: 12px;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
h1 {
|
|
74
|
-
font-size: 20px;
|
|
75
|
-
font-weight: 600;
|
|
76
|
-
color: var(--text-primary);
|
|
77
|
-
letter-spacing: -0.02em;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
.version {
|
|
81
|
-
font-size: 12px;
|
|
82
|
-
color: var(--text-tertiary);
|
|
83
|
-
font-weight: 500;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
.header-actions {
|
|
87
|
-
display: flex;
|
|
88
|
-
align-items: center;
|
|
89
|
-
gap: 16px;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
.connection-status {
|
|
93
|
-
display: flex;
|
|
94
|
-
align-items: center;
|
|
95
|
-
gap: 8px;
|
|
96
|
-
padding: 6px 12px;
|
|
97
|
-
background: var(--overlay-bg);
|
|
98
|
-
border-radius: 6px;
|
|
99
|
-
border: 1px solid var(--overlay-border);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
.status-indicator {
|
|
103
|
-
width: 8px;
|
|
104
|
-
height: 8px;
|
|
105
|
-
border-radius: 50%;
|
|
106
|
-
box-shadow: 0 0 8px currentColor;
|
|
107
|
-
transition: background 0.3s ease;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
.status-text {
|
|
111
|
-
font-size: 13px;
|
|
112
|
-
font-weight: 500;
|
|
113
|
-
color: var(--text-primary);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.port {
|
|
117
|
-
font-size: 12px;
|
|
118
|
-
color: var(--text-tertiary);
|
|
119
|
-
font-family: 'Monaco', 'Menlo', monospace;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
.theme-toggle {
|
|
123
|
-
display: flex;
|
|
124
|
-
align-items: center;
|
|
125
|
-
justify-content: center;
|
|
126
|
-
width: 36px;
|
|
127
|
-
height: 36px;
|
|
128
|
-
padding: 8px;
|
|
129
|
-
background: var(--overlay-bg);
|
|
130
|
-
border: 1px solid var(--overlay-border);
|
|
131
|
-
border-radius: 6px;
|
|
132
|
-
color: var(--text-primary);
|
|
133
|
-
cursor: pointer;
|
|
134
|
-
transition: all 0.2s ease;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
.theme-toggle:hover {
|
|
138
|
-
background: var(--tab-hover-bg);
|
|
139
|
-
border-color: var(--border-color);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
.theme-toggle:active {
|
|
143
|
-
transform: scale(0.95);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
.theme-toggle svg {
|
|
147
|
-
transition: transform 0.3s ease;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
.theme-toggle:hover svg {
|
|
151
|
-
transform: rotate(15deg);
|
|
152
|
-
}
|
|
153
|
-
</style>
|