mirror of
https://github.com/readest/readest.git
synced 2026-10-19 02:06:57 +00:00
|
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
CodeQL Advanced / Analyze (rust) (push) Waiting to run
Publish Docker image / build (linux/amd64, ubuntu-latest) (push) Waiting to run
Publish Docker image / build (linux/arm64, ubuntu-24.04-arm) (push) Waiting to run
Publish Docker image / merge (push) Blocked by required conditions
Build with Nix / tests (push) Waiting to run
PR checks / nix_flake_check (push) Waiting to run
PR checks / rust_lint (push) Waiting to run
PR checks / koplugin_rust_lint (push) Waiting to run
PR checks / build_web_app (push) Waiting to run
PR checks / test_web_app (1) (push) Waiting to run
PR checks / test_web_app (2) (push) Waiting to run
PR checks / test_extensions (push) Waiting to run
PR checks / build_tauri_app (push) Waiting to run
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Deploy to vercel on merge / build_and_deploy (push) Waiting to run
* fix(kosync): send and read FB2 positions in crengine's FictionBook form Readest sent KOReader an EPUB-style /body/DocFragment[N]/body/... XPointer for FB2 books. crengine reads FB2 natively and builds no DocFragments, so it couldn't resolve the pointer and KOReader went to the cover. The other direction rejected KOReader's /FictionBook/... pointers and fell back to the percentage. xcfi now maps FB2 both ways: foliate's section for each child of the first <body> (image, title, epigraph, section) to /FictionBook/body[1]/<tag>[N], counted per tag the way crengine does, each notes body to body[N], and foliate's renamed elements back to their FB2 tags (kept as each element's first class). The push sites (KOSync, Readest progress and notes sync, BookOrbit notes) pass the book format; range note pulls go through the new getCFIFromXPointerRange so FB2 highlights from KOReader resolve too. isXPointerProgress accepts /FictionBook pointers. Verified against crengine itself: xpointer-oracle.lua (now FB2-aware) run in the KOReader emulator on a new FB2 fixture dumped all 108 visible words; xcfi.crengine-oracle.test.ts converts every word both ways exactly as crengine writes it. Without the change xcfi.fb2.test.ts fails with "expected '/body/DocFragment[4]/body/section/p[1]/text().4' to be '/FictionBook/body[1]/section[1]/p[1]/text().4'", the notes-body pull throws "Unsupported format for spine index extraction", and kosyncProgress.test.ts fails with "expected false to be true". Related xcfi, KOSync, progress, notes and BookOrbit suites pass (333 tests); pnpm lint passes. Not run: a KOSync round trip on a device, and the reporter's book. Reported by email to support. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(kosync): cover one-body FB2 books and a leading body-level image CREngine in the KOReader emulator writes /FictionBook/body/... (no index) for an FB2 book with one body, and /FictionBook/body[1]/... when it also has a notes body. Either form resolves in either book. It puts a leading body-level image at /FictionBook/body/image.0. A new one-body fixture (an image and a title before two sections) and its oracle dump (19 words) add the following checks: - every word converts both ways exactly as CREngine writes it; - Readest writes body without an index for the one-body book; - the leading image is /FictionBook/body/image in the one-body book and /FictionBook/body[1]/image in the book with notes; - /FictionBook/body/image.0, /FictionBook/body[1]/image.0 and /FictionBook/body[1]/image[1] open section 0 in both books; - both body forms open the same paragraph in the one-body book. The code already did all of this, so nothing fails on this branch. With the body step forced to body[1], three tests fail, e.g. expected "/FictionBook/body/section[2]/p/text().2", received "/FictionBook/body[1]/section[2]/p/text().2", and the oracle reports "Readest -> KOReader: 19/19 mismatches". Related xcfi, KOSync, progress, notes and BookOrbit suites pass (164 tests), and pnpm lint passes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| .agents | ||
| .claude | ||
| bench | ||
| data/wordlens | ||
| docs | ||
| e2e | ||
| extensions | ||
| public | ||
| scripts | ||
| src | ||
| src-tauri | ||
| workers | ||
| .env | ||
| .env.local.example | ||
| .env.tauri | ||
| .env.tauri.example | ||
| .env.web | ||
| .env.web.example | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| components.json | ||
| DESIGN.md | ||
| i18n-langs.json | ||
| i18next-scanner.config.cjs | ||
| LESSONS.md | ||
| next.config.mjs | ||
| open-next.config.ts | ||
| package.json | ||
| pdfjs.d.ts | ||
| playwright.config.ts | ||
| postcss.config.mjs | ||
| PRODUCT.md | ||
| raw-loader.d.ts | ||
| release-notes.json | ||
| skills-lock.json | ||
| TODOS.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
| vitest.android.config.mts | ||
| vitest.browser.config.mts | ||
| vitest.config.mts | ||
| vitest.env.mts | ||
| vitest.setup.ts | ||
| vitest.tauri.config.mts | ||
| vitest.tauri.setup.ts | ||
| wdio.conf.ts | ||
| worker.ts | ||
| wrangler.toml | ||