wangdl
|
938ebf890c
|
feat: DOC-FULL-002 ReadingSessionV2
- clientSessionId UUID 生成
- start/pause/resume/close lifecycle
- sequence 递增
- record_session_event_v2 更新时长和位置
- 7 个单元测试
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-07 19:34:12 +08:00 |
|
wangdl
|
855c7b15c2
|
feat: DOC-FULL-001 ReadingMaterialRef
Rust 只保存 materialId,不区分 KnowledgeSource/TemporaryFile。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-07 19:26:48 +08:00 |
|
wangdl
|
dd360c88e2
|
fix: RagChatModule 导入 AiModule,修复 AiGatewayService 未注入
AiGatewayService 使用了 @Optional() 导致不报错但始终为 null,
sendMessage 永远走 fallbackReply。现在导入 AiModule 正确注入。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-06 13:38:57 +08:00 |
|
wangdl
|
2f816510a9
|
fix: #44 events.rs Mutex poison 时恢复而非静默丢事件
push_reading_event 改用 match 替代 if let,poison 时通过 into_inner 恢复缓冲区。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-06 13:00:37 +08:00 |
|
wangdl
|
e2c9d3063f
|
fix: #41 detect_material_type 只读前 8KB 做魔数检测
std::fs::read 整个文件 → File::open + read 前 8192 字节,节省大文件内存。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-06 12:59:19 +08:00 |
|
wangdl
|
0bca088933
|
fix: #48 markdown.rs 处理 FrontMatter 和 FootnoteDefinition 节点
FrontMatter → CodeBlock(language=yaml)
FootnoteDefinition → Paragraph
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-06 12:56:45 +08:00 |
|
wangdl
|
fc9e4eec81
|
fix: #38 EVENT_BUFFER 增加 MAX_BUFFER_SIZE=1000 上限
push_reading_event 时超出上限自动丢弃最旧事件,防止未导出事件堆积导致 OOM。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-06 12:55:00 +08:00 |
|
wangdl
|
65c9ab8a50
|
fix: #47 移除所有调试 eprintln! 日志
清理 FFI 调试期间在 lib.rs 和 markdown.rs 中添加的 16 行 eprintln!
调试日志,spam iOS 控制台。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-06 12:40:48 +08:00 |
|
wangdl
|
bae6ef5726
|
feat: M3 completion — event buffer, FFI search/anchor, PDF strategy, quality fixes
Rust Core:
- events: global Mutex-buffered event queue (push/export/clear/update_position)
- image_meta: use ImageReader::format() for real decoded format instead of extension
- search: change match_start/match_end usize→u64 for FFI compatibility
- epub/pdf: module-level placeholder comments
FFI (UDL exposed, 12 total functions):
- Added: search_markdown_blocks, search_text_content, create_note_anchor
- Added: push_reading_event, update_reading_position, export_pending_events,
clear_exported_events
Docs:
- README: synced DocumentBlock model (Table.headers + HorizontalRule),
simplified dependency recommendations, removed nonexistent doc references
- docs/pdf-strategy.md: PDFKit vs PDFium vs MuPDF evaluation, 5 decisions,
platform strategy matrix, roadmap
Build:
- .cargo/config.toml: cargo xtask alias
- xtask: CLI implementation (test/build-ios/fixtures commands)
- fixtures: markdown/sample.md (9 block types), text/sample.txt
- XCFramework rebuilt, Swift bindings regenerated (1977 lines)
58 tests pass, zero warnings.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-02 21:23:26 +08:00 |
|
wangdl
|
65bc52bfd7
|
feat: case-insensitive search for Markdown blocks and TXT text
|
2026-05-30 21:58:59 +08:00 |
|
wangdl
|
b5f8e273a9
|
feat: ReadingEvent serde tests + NoteAnchor with from_position constructor and tests
|
2026-05-30 21:18:30 +08:00 |
|
wangdl
|
b3a7fe0414
|
test: ReadingPosition serde round-trip tests for all 6 variants
|
2026-05-30 21:05:34 +08:00 |
|
wangdl
|
8166878bf8
|
feat: image metadata reading - width, height, format, file_size with fixture test
|
2026-05-30 20:59:50 +08:00 |
|
wangdl
|
af58a35b0a
|
feat: TXT text reading - paragraph parsing, line/word stats
|
2026-05-30 20:55:30 +08:00 |
|
wangdl
|
c390718c15
|
feat: Markdown parsing with comrak - GFM tables, strikethrough, tasklist, all 11 block types
|
2026-05-30 20:50:54 +08:00 |
|
wangdl
|
43010221ff
|
feat: detect_material_type - file type identification via magic bytes + MIME + extension
|
2026-05-30 20:34:30 +08:00 |
|
wangdl
|
8042a9d92e
|
feat: core data models - MaterialType, DocumentBlock, ReadingPosition, ReadingEvent, NoteAnchor, SearchResult, DocumentError
|
2026-05-30 20:22:16 +08:00 |
|
wangdl
|
c8f9d64fd8
|
fix: add minimal lib.rs declarations to pass cargo check
|
2026-05-30 18:35:20 +08:00 |
|
wangdl
|
e76f253260
|
chore: init Rust workspace skeleton with crate structure
|
2026-05-30 18:33:50 +08:00 |
|