generated from nhcarrigan/template
f173892aaa
## Summary This PR includes major feature additions, bug fixes, comprehensive testing improvements, and responsive design enhancements! ## New Features โจ ### Plugin & MCP Management (#133, #134) - **Plugin Management Panel**: Install, uninstall, enable/disable, and update plugins - **MCP Server Management Panel**: Add/remove MCP servers, view detailed configuration - **Marketplace Management**: Add/remove plugin marketplaces from GitHub - Backend commands for full CLI integration (`list_plugins`, `install_plugin`, `add_mcp_server`, etc.) - Beautiful UI with proper loading states, error handling, and theme support ### Visual Todo List Panel (#132) - Real-time todo list display when Hikari uses the `TodoWrite` tool - Shows pending/in-progress/completed status with visual indicators - Progress bar and completion count - Automatically clears on disconnect - Theme-aware styling ### Clear Session History Button (#130) - "Clear All Sessions" button in Session History panel - Confirmation dialog with session count - Keyboard support and accessibility features - Gives users control over disk usage ### CLI Version Display (#131) - Displays Claude CLI version in status bar - Auto-polls every 30 seconds for updates - Useful for debugging and feature compatibility ## Bug Fixes ๐ ### Stats Panel Scrolling (#136) - **Fixed stats panel overflow**: Added scrollable container with `max-height` constraint - Stats panel now scrolls when content (Tools Used, Historical Costs, Budget sections) gets too long - Prevents content from overflowing off screen ### Agent Monitor Fixes (#122) - **Fixed agents stuck in "running" state**: Added `SubagentStop` hook parsing - **Fixed agents persisting after disconnect**: Call `clearConversation()` on disconnect - **Fixed "Kill All" button**: Now properly marks all agents as errored - **Fixed badge persisting after tab close**: Cleanup agents when conversation is deleted - Comprehensive tests for agent lifecycle management ### Discord RPC Cleanup (#129) - Removed file-based logging for Discord RPC - Replaced with proper `tracing` framework usage - Reduces disk usage and eliminates maintenance burden ### Close Modal Bug Fix (#128) - Fixed close confirmation modal not triggering after Discord RPC refactor - Removed frontend calls to deleted `log_discord_rpc` command - Modal now works correctly after all operations ### Responsive Design Fixes (#118) - Fixed top navigation icons getting cut off at small screen widths - Fixed Connect button disappearing on narrow screens - Fixed bottom status info (clock, CLI version) getting cut off - Added flex-wrap and mobile-optimised layouts - Icons-only mode on screens < 640px - Vertical stacking on screens < 768px ## Testing Improvements ๐งช ### Comprehensive Test Coverage (#114) - **417 backend tests** (up from 408) - **387 frontend tests** (up from 363) - **61%+ backend code coverage** - Added E2E integration tests for cross-platform notification commands - New test files: `agents.test.ts`, comprehensive CLI parsing tests - Tests for `debug_logger.rs`, `bridge_manager.rs`, `notifications.rs` - Console mocking for cleaner test output - Fixed flaky frontend tests ### Testing Documentation - Updated CLAUDE.md with comprehensive testing guidelines - Documented mocking approaches (console mocking, E2E command structure testing) - Added step-by-step guide for adding tests to new features - Goal to maintain ~100% test coverage documented ## Closes Closes #114 Closes #118 Closes #122 Closes #128 Closes #129 Closes #130 Closes #131 Closes #132 Closes #133 Closes #134 Closes #136 ## Technical Details - All new backend commands properly registered in `lib.rs` - CLI output parsing with comprehensive test coverage - Cross-platform compatibility verified through E2E tests (Linux CI can test Windows commands) - Theme-aware UI components using CSS variables throughout - Proper TypeScript types for all new stores and components - ESLint and Prettier compliant - All Clippy warnings addressed โจ This PR was created with help from Hikari~ ๐ธ Reviewed-on: #135 Co-authored-by: Hikari <hikari@nhcarrigan.com> Co-committed-by: Hikari <hikari@nhcarrigan.com>
96 lines
3.3 KiB
JSON
96 lines
3.3 KiB
JSON
{
|
|
"name": "hikari-desktop",
|
|
"version": "1.4.0",
|
|
"description": "",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite dev",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
"tauri": "tauri",
|
|
"build:linux": "tauri build",
|
|
"build:windows": "tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc",
|
|
"build:all": "pnpm build:linux && pnpm build:windows",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:coverage": "vitest run --coverage",
|
|
"test:backend": "cd src-tauri && cargo test",
|
|
"test:backend:coverage": "cd src-tauri && cargo llvm-cov --text",
|
|
"test:all": "pnpm test && pnpm test:backend",
|
|
"coverage:all": "pnpm test:coverage && pnpm test:backend:coverage",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix",
|
|
"format": "prettier --write .",
|
|
"format:check": "prettier --check ."
|
|
},
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"@codemirror/commands": "6.8.1",
|
|
"@codemirror/lang-angular": "^0.1.4",
|
|
"@codemirror/lang-cpp": "^6.0.3",
|
|
"@codemirror/lang-css": "^6.3.1",
|
|
"@codemirror/lang-go": "^6.0.1",
|
|
"@codemirror/lang-html": "^6.4.11",
|
|
"@codemirror/lang-java": "^6.0.2",
|
|
"@codemirror/lang-javascript": "^6.2.4",
|
|
"@codemirror/lang-json": "^6.0.2",
|
|
"@codemirror/lang-less": "^6.0.2",
|
|
"@codemirror/lang-markdown": "^6.5.0",
|
|
"@codemirror/lang-php": "^6.0.2",
|
|
"@codemirror/lang-python": "^6.2.1",
|
|
"@codemirror/lang-rust": "^6.0.2",
|
|
"@codemirror/lang-sass": "^6.0.2",
|
|
"@codemirror/lang-sql": "^6.10.0",
|
|
"@codemirror/lang-vue": "^0.1.3",
|
|
"@codemirror/lang-wast": "^6.0.2",
|
|
"@codemirror/lang-xml": "^6.1.0",
|
|
"@codemirror/lang-yaml": "^6.1.2",
|
|
"@codemirror/language": "^6.12.1",
|
|
"@codemirror/legacy-modes": "^6.5.2",
|
|
"@codemirror/state": "^6.5.4",
|
|
"@codemirror/theme-one-dark": "^6.1.3",
|
|
"@codemirror/view": "^6.39.11",
|
|
"@lezer/highlight": "^1.2.3",
|
|
"@tauri-apps/api": "^2",
|
|
"@tauri-apps/plugin-clipboard-manager": "^2.3.2",
|
|
"@tauri-apps/plugin-dialog": "^2",
|
|
"@tauri-apps/plugin-fs": "^2.4.5",
|
|
"@tauri-apps/plugin-notification": "^2",
|
|
"@tauri-apps/plugin-opener": "^2",
|
|
"@tauri-apps/plugin-os": "^2",
|
|
"@tauri-apps/plugin-shell": "^2.3.4",
|
|
"@tauri-apps/plugin-store": "^2",
|
|
"codemirror": "^6.0.2",
|
|
"highlight.js": "^11.11.1",
|
|
"lucide-svelte": "^0.563.0",
|
|
"marked": "^17.0.1"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.2",
|
|
"@sveltejs/adapter-static": "^3.0.6",
|
|
"@sveltejs/kit": "^2.9.0",
|
|
"@sveltejs/vite-plugin-svelte": "^5.0.0",
|
|
"@tailwindcss/vite": "^4.1.18",
|
|
"@tauri-apps/cli": "^2",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/svelte": "^5.3.1",
|
|
"@vitest/coverage-v8": "^4.0.18",
|
|
"eslint": "^9.39.2",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-plugin-svelte": "^3.14.0",
|
|
"globals": "^17.0.0",
|
|
"jsdom": "^27.4.0",
|
|
"prettier": "^3.8.0",
|
|
"prettier-plugin-svelte": "^3.4.1",
|
|
"svelte": "^5.0.0",
|
|
"svelte-check": "^4.0.0",
|
|
"tailwindcss": "^4.1.18",
|
|
"typescript": "~5.6.2",
|
|
"typescript-eslint": "^8.53.0",
|
|
"vite": "^6.0.3",
|
|
"vitest": "^4.0.17"
|
|
}
|
|
}
|