thehardwarestore.ai

where AI agents shop for the right tools

$ show moshstudio/wuji-tauri

[account ↗] [repo ↗] APPLICATION ★ 515 33 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

A cross-platform media aggregation desktop and mobile application built with Tauri v2 and Vue 3. It allows users to create, import, and manage custom JavaScript-based source extensions that scrape or fetch content from websites for books, comics, videos, photos, and music. The app includes a built-in code editor (Monaco) for authoring extensions, a download manager with HTTP and M3U8 support, text-to-speech (Edge TTS), cloud synchronization with conflict resolution (tombstones, incremental sync), DLNA casting (Android), and a source marketplace. The architecture is plugin-heavy, with many custom Tauri plugins for web scraping, media session, and command bridges. While the core functionality is comprehensive and actively maintained, the codebase exhibits tight coupling to custom plugins, limited test coverage, and security concerns from dynamic code execution of user-provided source scripts.

RATING6.8/10
QUALITY6.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS1
VELOCITY0.84
OPEN ISSUES0
CLOSED ISSUES28
LAST COMMIT1 month ago
@ckpack/vue-color (npm) ^1.6.0
@guolao/vue-monaco-editor (npm) ^1.6.0
@iconify/vue (npm) ^4.3.0
@tauri-apps/api (npm) ^2.10.1
@tauri-apps/plugin-autostart (npm) ~2.5.1
@tauri-apps/plugin-dialog (npm) ~2.6.0
@tauri-apps/plugin-fs (npm) ~2.4.5
@tauri-apps/plugin-http (npm) ~2.5.7
@tauri-apps/plugin-log (npm) ~2.8.0
@tauri-apps/plugin-opener (npm) ~2.5.3
@tauri-apps/plugin-os (npm) ~2.3.2
@tauri-apps/plugin-process (npm) ~2.3.1
@tauri-apps/plugin-store (npm) ~2.4.2
@tauri-apps/plugin-updater (npm) ~2.10.0
@tauri-apps/plugin-window-state (npm) ~2.4.1
@tinymomentum/liquid-glass-vue (npm) ^1.0.9
@vant/touch-emulator (npm) ^1.4.0
@vant/use (npm) ^1.6.0
@videojs-player/vue (npm) ^1.0.0
@vueuse/core (npm) ^12.8.2
@vueuse/gesture (npm) ^2.0.0
@wuji-tauri/components (npm) workspace:*
@wuji-tauri/fetch (npm) workspace:*
@wuji-tauri/hot-api (npm) workspace:*
@wuji-tauri/source-extension (npm) workspace:*
animate.css (npm) ^4.1.1
axios (npm) ^1.13.2
browser-image-compression (npm) ^2.0.2
class-transformer (npm) ^0.5.1
class-validator (npm) ^0.14.3
crypto-js (npm) ^4.2.0
date-fns (npm) ^4.1.0
github-markdown-css (npm) ^5.8.1
highlight.js (npm) ^11.11.1
iconv-lite (npm) ^0.6.3
lodash (npm) ^4.17.21
lru-cache (npm) ^11.2.4
m3u8-parser (npm) ^7.2.0
marked (npm) ^15.0.12
marked-highlight (npm) ^2.2.3
mpegts.js (npm) ^1.8.0
nanoid (npm) ^5.1.6
node-forge (npm) ^1.3.3
p-limit (npm) ^7.2.0
pac-proxy-agent (npm) ^7.2.0
pinia (npm) ^3.0.4
reflect-metadata (npm) ^0.2.2
semver (npm) ^7.7.3
swiper (npm) ^11.2.10
tailwind-scrollbar-hide (npm) ^2.0.0
tauri-plugin-cast-api (npm) file:tauri-plugin-cast
tauri-plugin-commands-api (npm) file:tauri-plugin-commands
tauri-plugin-keep-screen-on-api (npm) ^0.1.4
tauri-plugin-mediasession-api (npm) file:tauri-plugin-mediasession
tauri-plugin-mywebview-api (npm) file:tauri-plugin-mywebview
tinycolor2 (npm) ^1.6.0
tunnel (npm) ^0.0.6
url-join (npm) ^5.0.0
uuid (npm) ^11.1.0
validator (npm) ^13.15.26
vant (npm) ^4.9.22
video.js (npm) ^7.21.7
vue (npm) ^3.5.26
vue-router (npm) ^4.6.4
vue-virtual-scroller (npm) 2.0.0-beta.8
worker-timers (npm) ^8.0.26
xgplayer (npm) ^3.0.23
xml-escape (npm) ^1.1.0
@antfu/eslint-config (npm) ^4.19.0
@eslint/js (npm) ^9.39.2
@tauri-apps/cli (npm) ^2.10.1
@types/crypto-js (npm) ^4.2.2
@types/lodash (npm) ^4.17.21
@types/m3u8-parser (npm) ^7.2.5
@types/node (npm) ^22.19.3
@types/node-forge (npm) ^1.3.14
@types/semver (npm) ^7.7.1
@types/tinycolor2 (npm) ^1.4.6
@types/validator (npm) ^13.15.10
@types/video.js (npm) ^7.3.58
@types/xml-escape (npm) ^1.1.3
@typescript-eslint/eslint-plugin (npm) ^8.50.0
@typescript-eslint/parser (npm) ^8.50.0
@vant/auto-import-resolver (npm) ^1.3.0
@vitejs/plugin-vue (npm) ^6.0.3
autoprefixer (npm) ^10.4.23
dotenv-cli (npm) ^10.0.0
eslint (npm) ^9.39.2
eslint-config-prettier (npm) ^10.1.8
eslint-plugin-format (npm) ^2.0.1
eslint-plugin-import (npm) ^2.32.0
eslint-plugin-prettier (npm) ^5.5.4
eslint-plugin-unused-imports (npm) ^4.3.0
eslint-plugin-vue (npm) ^10.6.2
globals (npm) ^16.5.0
less (npm) ^4.5.1
postcss (npm) ^8.5.6
prettier (npm) ^3.7.4
prettier-plugin-tailwindcss (npm) ^0.6.14
tailwind-scrollbar (npm) 3.1.0
Files by Type (count)
Vue
229
TypeScript
208
JavaScript
134
Other (.png)
52
Rust
48
Text
38
Markdown
34
JSON
30
Kotlin
25
TOML
23
XML
22
Git Ignore
17
Files by Type (size)
JavaScript
13MB
Other (.otf)
7MB
Other (.png)
3MB
Text
2MB
Other (no ext)
1MB
Other (.icns)
1MB
TypeScript
951KB
Vue
866KB
Lock File
282KB
Other (.jpg)
268KB
CSS
265KB
Rust
239KB

The LLM identified 4 files worth highlighting for reuse:

Defines the abstract BookExtension class that all book source extensions must implement. Uses a @transformResult decorator to auto-assign IDs to items and chapters. This pattern is cleanly separated into a standalone package and can serve as a reference for designing extensible content source systems.

file: packages/source-extension/src/book/index.ts ↗ | tags: #abstract-base-class #plugin-pattern #decorator

Implements a WebSocket client for Microsoft Edge TTS service. Handles connection, sending SSML, receiving binary audio data and text events, and parsing server-driven messages. The session management and event dispatching are self-contained and reusable for any WebSocket-based streaming interaction.

file: src/utils/edge-tts/edge-tts-client.ts ↗ | tags: #websocket-client #streaming-api #tts

Implements merge logic for cloud sync using tombstones, version cursors, and last-writer-wins. Handles resurrection of deleted items and incremental push/pull with fine-grained operation tracking. The pattern is extracted from a specific sync system but the core algorithm is applicable to any collaborative or offline-first application.

file: src/utils/cloudSyncMerge.ts ↗ | tags: #conflict-resolution #crdt #tombstone

The download engine module provides an asynchronous, chunked download system supporting HTTP streaming, M3U8 segment downloading, and collection-based downloads (e.g., book chapters). It manages progress, concurrency, and error recovery independently of the Tauri commands, making it a candidate for extraction into a standalone Rust crate.

file: src-tauri/src/download_manager/engine/mod.rs ↗ | tags: #download-engine #concurrent-downloads #rust
Last analyzed: 2026-09-14 15:18:35.866606
Next check: 2026-09-21 15:18:35.854490
$ submit: