mirror of
https://github.com/Darkatse/TauriTavern.git
synced 2026-10-20 11:18:32 +00:00
* test(storage): build extension store assertion path component-wise The assertion joined one forward-slash literal, which Windows keeps verbatim, so the expected path mixed separators while entry_path() builds the real one with per-component joins. The resulting strings never matched and the test failed on every Windows run. Join the same components the production path uses so the comparison holds on all platforms. * feat(android): save images from the WebView long-press menu Long-pressing an <img> inside the app offered no way to keep it. Add a host-side context menu that routes every source through one rule: if the system downloader can reach the URL, hand it over, otherwise let the page read the bytes. DownloadManager can only fetch real network locations, so blob:, data: and the app's own loopback origin all go through the page instead. App assets are fetched relatively to stay same-origin. The bytes are published through the existing AndroidPublicDownloadJsBridge, so the MediaStore transaction, the Android 10+ gate and the staging cleanup are reused rather than reimplemented. No new dependency and no build.gradle.kts change. The installer takes an application context and owns its own Toast and DownloadManager lookups, keeping MainActivity to a single construction and one install call. Failures surface as a toast instead of staying in logcat, including page-side fetch errors reported back over the bridge. * refactor(android): save long-pressed images through the download bridge Android WebView offers no image context menu, and a native OnCreateContextMenuListener consumes the long press before the page can claim it. Supply the missing contextmenu default action in the download bridge instead: it honors preventDefault(), asks for confirmation, reads the image in its own window and exports through downloadBlobWithRuntime, so Android 8-9 keep the SAF fallback and feedback stays localized. Remove the native installer and its DownloadManager and base64 paths. --------- Co-authored-by: Darkatse <39111369+Darkatse@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| Agent | ||
| API | ||
| CurrentState | ||
| images | ||
| AndroidDevelopment.md | ||
| BackendStructure.md | ||
| FrontendAccessibility.md | ||
| FrontendGuide.md | ||
| FrontendHostContract.md | ||
| iOSDevelopment.md | ||
| README.md | ||
| TechStack.md | ||
TauriTavern 项目文档
TauriTavern 保留 SillyTavern 的前端体验与扩展生态,用 Tauri 和 Rust 后端提供本地存储、模型调用及平台能力。
开始阅读
先看 项目哲学,了解项目如何处理兼容性、复杂度和维护成本。随后按工作方向选择入口:
| 方向 | 文档 |
|---|---|
| 仓库技术栈与开发检查 | 技术栈 |
| Rust 服务与 crate 边界 | 后端结构 |
| 前端启动、路由与集成 | 前端指南 |
| 前端和扩展可观察的宿主行为 | 宿主契约 |
| 编写扩展 | 扩展 API |
| 理解或修改 Agent | Agent |
| 查找某个模块的实现 | 模块文档 |
| Android / iOS 开发 | Android、iOS |
Agent 文档从文件、工作区、循环和日志讲起,再说明多 Agent 如何通过任务与结果协作。配置、工具、脚本和 API 可按需要继续查阅。
维护文档
每个主题保留一个主要入口,正文说明用途、工作方式和源码位置。接口用法放在 API 文档,字段与默认值引用源码。行为变化时更新所属主题,删除已经过时的说明。