文件历史

提交图

220 次代码提交

作者 SHA1 备注 提交日期
caorushizi c2c198c636 refactor: centralize IPC handle constants 2025-09-25 16:41:29 +08:00
caorushizi 75eed24552 refactor: remove shared package and migrate to specific shared packages
- Remove packages/shared package entirely
- Update all apps and packages to use @mediago/shared-common and @mediago/shared-node instead
- Simplify router implementation by removing dynamic electron imports
- Update build configurations and dependency references
- Clean up pnpm-lock.yaml to reflect new package structure

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 19:41:19 +08:00
曹儒士子 33f893f961 refactor: extract download state aggregator 2025-09-24 16:07:33 +08:00
曹儒士子 67631c995a Refactor app store handler mapping 2025-09-24 16:06:52 +08:00
曹儒士子 fb45213073 refactor: share controller registration helper 2025-09-24 16:05:18 +08:00
曹儒士子 e0671bd4c8 refactor: share app store defaults 2025-09-24 13:50:39 +08:00
caorushizi d57c67eca6 refactor: 🚀 simplify download API by consolidating methods with optional parameters
Consolidate download-related methods to reduce duplication:
- Merge downloadNow, downloadItemsNow into addDownloadItems with startDownload flag
- Merge editDownloadNow into editDownloadItem with startDownload flag
- Remove redundant addDownloadItem method in favor of addDownloadItems
- Update both Electron and Web backends with unified parameter structure
- Maintain backward compatibility while simplifying the API surface

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-11 17:01:41 +08:00
caorushizi 4a1239b100 refactor: 📦️ split shared package into domain-specific packages
Extract shared package into three separate packages for better separation of concerns:
- @mediago/shared-common: Common types, constants, utilities, i18n
- @mediago/shared-node: Node.js specific services, DAOs, entities
- @mediago/shared-browser: Browser-specific code

Benefits:
- Improved dependency management and package isolation
- Eliminated circular dependencies between packages
- Better maintainability with domain-separated codebases
- Enhanced type safety across the monorepo

Changes:
- Created new packages with proper TypeScript configurations
- Migrated all code from packages/shared/src/{common,node,browser}
- Updated 40+ import statements across the entire codebase
- Resolved package dependency conflicts and circular references
- All backend packages pass TypeScript compilation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-11 17:01:41 +08:00
caorushizi cbe337baed refactor: 🏗️ extract shared business logic services from backend controllers
Extract platform-agnostic business logic from backend-electron and backend-web controllers
into reusable services in the shared package, enabling code reuse across platforms:

- ConversionService: handles conversion record management operations
- DownloadManagementService: manages download lifecycle, CRUD operations, and metadata
- FavoriteManagementService: handles bookmark/favorites management

Benefits:
- Eliminates code duplication between Electron and Web backends
- Centralizes business logic maintenance in shared package
- Preserves platform-specific UI interactions (dialogs, notifications)
- Maintains dependency injection architecture consistency

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-11 17:01:41 +08:00
caorushizi f6433e8f80 refactor: 🏗️ unify router architecture across Electron and Web backends
- Rename IpcHandlerService to ElectronRouter for clarity
- Introduce shared MEDIAGO_METHOD and MEDIAGO_EVENT constants
- Replace separate @get/@post decorators with unified @handle decorator
- Standardize routing metadata handling across platforms
- Add MediaGoRouter interface for consistent router contracts
- Remove unused @on decorator from Electron helpers

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-11 17:01:41 +08:00
caorushizi a6aa2094e2 fix: 🔧 make electron adapter enumerable with Proxy traps
- Move adapters from src/adapters/ to src/hooks/adapters/
- Add ownKeys and getOwnPropertyDescriptor traps to electronAdapter Proxy
- Enable Object.keys() iteration over electronAdapter methods
- Fix useAPI hook to properly enumerate API methods in Electron environment

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-05 19:55:46 +08:00
caorushizi a264284c05 refactor: 🏗️ migrate to Inversify 7 with binding decorators for dependency injection
Upgrade Inversify from v6 to v7 and implement modern binding decorators pattern:
- Replace manual container bindings with @provide decorators
- Update all controllers, services, and vendors to use decorator-based DI
- Simplify inversify.config.ts by removing explicit bindings
- Add @inversifyjs/binding-decorators dependency for cleaner configuration
- Maintain singleton pattern and existing functionality

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-05 19:55:46 +08:00
caorushizi 0e898be77c refactor: 📦️ extract Electron preload script into standalone package
Extract preload.ts from apps/backend-electron to packages/electron-preload for better modularity and reusability. This includes:

- Create new @mediago/electron-preload package with proper build configuration
- Update backend-electron to use the new preload package dependency
- Maintain all existing functionality while improving architecture

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-05 19:55:46 +08:00
caorushizi bd6a974e5c refactor: 🏗️ restructure frontend API and IPC adapters
- Replace `apis/` folder with `adapters/` for clearer architecture
- Integrate IPC logic into corresponding adapter files:
  - `electronIpcAdapter` in `electron.ts`
  - `webIpcAdapter` in `web.ts`
- Add new `useAPI` Hook with cleaner separation of concerns
- Maintain backward compatibility with `useElectron` alias
- Improve code organization and maintainability

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-05 19:55:46 +08:00
caorushizi 5356a580f2 refactor: 🔧 unify TypeScript configurations across all packages
- Create base configurations in packages/config for different app types
- Standardize all tsconfig.json files to extend from shared configs
- Fix module resolution inconsistencies (NodeNext -> bundler mode)
- Remove duplicate configuration options across packages
- Improve code quality by fixing linting issues in shared services

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-05 19:55:46 +08:00
caorushizi 735dc4bbd5 refactor: 📦️ reorganize the file directory 2025-09-05 19:55:46 +08:00
caorushizi 3113617d26 refactor: 🔧 migrate ptyRunner to app-specific implementations
- Move ptyRunner from shared package to individual apps (electron/webapi)
- Update package.json names and dependency versions
- Standardize node-pty versions across apps
- Remove shared ptyRunner export and update imports
- Update DownloaderService to accept runner as parameter

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-05 19:55:46 +08:00
caorushizi e5fad91210 feat: 🐳 add Docker development environment for webapi
- Add Docker configuration to resolve node-pty native module conflicts
- Create docker/Dockerfile for production builds
- Create docker/Dockerfile.dev for development with hot reload
- Add docker-compose.yml for easy development setup
- Include system dependencies (python3, make, g++, libicu-dev) for native modules
- Update package.json with dev:docker and build:docker commands
- Move .dockerignore to root directory for proper build context
- Remove electron rebuild scripts as Docker handles native module compilation
- Enable mixed development: webapi in container, electron on host

Usage:
- pnpm dev:docker # Start webapi in Docker container
- pnpm -F electron dev # Start electron locally in parallel

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-05 19:55:46 +08:00
caorushizi 763a5fcd86 refactor: 📦️ rename apps and migrate to pure Turborepo build system
- Rename apps with more descriptive names:
  • main → electron (Electron main process)
  • renderer → frontend (React UI for both Electron and web)
  • backend → webapi (Koa.js API server)

- Remove tools/scripts custom build logic:
  • Replace custom zx scripts with native Turbo commands
  • Update dev command to use Turbo filters for plugin/mobile builds
  • Migrate web-release build to use Turbo pipeline
  • Remove tools/scripts directory entirely

- Update comprehensive README documentation for each app:
  • apps/electron/README.md - Desktop application lifecycle and system integration
  • apps/frontend/README.md - React UI shared between Electron and web
  • apps/webapi/README.md - Standalone API server with Docker support

- Update all configuration references:
  • package.json: Update all Turbo filter commands
  • biome.json: Remove tools/scripts path references
  • pnpm-workspace.yaml: Remove tools/* workspace
  • CLAUDE.md: Update architecture documentation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-05 19:55:46 +08:00
caorushizi ba36d89cef refactor: 🏗️ migrate to Turborepo monorepo structure
- Install Turborepo for build orchestration and caching
- Reorganize directory structure following monorepo best practices:
  - Move packages/main,renderer,backend,mobile,plugin → apps/
  - Keep packages/shared for shared utilities and types
  - Create packages/config for shared configurations
  - Move scripts/ → tools/scripts/
- Update pnpm-workspace.yaml for new structure (apps/*, packages/*, tools/*)
- Configure turbo.json with build pipelines and task dependencies
- Update all package.json scripts to use Turbo commands
- Update biome.json paths for new directory structure
- Add packageManager field to root package.json
- Update CLAUDE.md documentation with new architecture

Benefits:
- Faster builds with intelligent caching and incremental builds
- Parallel task execution across packages
- Clear separation between apps and shared packages
- Improved developer experience with unified build system

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-05 19:55:46 +08:00