Skip to content

Commit be1a194

Browse files
committed
Merge develop into main: release v1.7.0
2 parents f479f39 + c97145f commit be1a194

42 files changed

Lines changed: 4626 additions & 1588 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,7 @@ vite.config.ts.timestamp-*
1717
*.swp
1818
*.swo
1919
*~
20+
21+
# Playwright artifacts
22+
test-results/
23+
playwright-report/

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
11
# Changelog
22

3+
## [1.7.0] - 2026-06-10
4+
5+
### Added
6+
7+
- Targeted zoom in continuous modes: wheel, double-tap, pinch (#195, #225)
8+
- Paged zoom rebuilt on the same engine — panzoom removed (#226)
9+
- "Disable animations (e-ink)" toggle (#226)
10+
11+
### Changed
12+
13+
- Paged wheel zoom animates through fit-relative steps (#226)
14+
- Double-tap cycles zoom in / fit contextually (#226)
15+
- Keep zoom preserves apparent size across pages (#226)
16+
- Continuous scroll no longer labeled Alpha
17+
18+
### Removed
19+
20+
- Vertical page transition (#226)
21+
322
## [1.6.1] - 2026-06-08
423

524
### Added

CLAUDE.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Mokuro Reader is a web-based manga reader for [mokuro](https://github.com/kha-wh
1515
- `npm run preview` - Preview production build
1616
- `npm test` - Run tests with Vitest
1717
- `npm run test:coverage` - Run tests with coverage
18+
- `npm run test:e2e` - Run Playwright e2e tests (see Testing for port caveats)
1819
- `npm run check` - Type-check with svelte-check
1920
- `npm run check:watch` - Type-check in watch mode
2021
- `npm run lint` - Lint code (Prettier + ESLint)
@@ -37,7 +38,7 @@ Mokuro Reader is a web-based manga reader for [mokuro](https://github.com/kha-wh
3738
- **SvelteKit 5**: Framework (uses new Svelte 5 runes: `$state`, `$derived`, `$effect`)
3839
- **Dexie**: IndexedDB wrapper for storing volumes and files
3940
- **@zip.js/zip.js**: ZIP file extraction
40-
- **Panzoom**: Pan/zoom functionality for manga pages
41+
- **Zoom architecture**: Shared ZoomController + measurement-based correction drives zoom in all reader modes (`src/lib/reader/zoom-*.ts`, `paged-*.ts`)
4142
- **Flowbite Svelte**: UI component library
4243
- **Tailwind CSS**: Styling
4344
- **Vitest**: Testing framework
@@ -53,7 +54,6 @@ src/
5354
│ ├── components/ # Svelte components
5455
│ ├── consts/ # Application constants
5556
│ ├── import/ # File import pipeline and processing
56-
│ ├── panzoom/ # Custom pan/zoom implementation
5757
│ ├── reader/ # Core reader logic
5858
│ ├── settings/ # Settings stores and profiles
5959
│ ├── styles/ # Shared CSS styles
@@ -217,11 +217,11 @@ Tracked per volume in the `volumes` store:
217217

218218
### Text Selection Handling
219219

220-
The reader has complex text selection logic to prevent interference with panzoom drag:
220+
The reader has complex text selection logic to prevent interference with drag panning:
221221

222-
- `beforeMouseDown` handler in MangaPage.svelte checks if click is on text
222+
- Pointer handlers skip pan initiation for `.textBox` targets (PagedViewport.svelte and the scroll readers), so text selection works inside boxes
223+
- Double-clicking text to select it does not trigger zoom (`.textBox` guard in Reader's onDoubleTap)
223224
- Text selection is only allowed within text boxes, not on background
224-
- See `src/routes/[manga]/[volume]/+page.svelte` for implementation
225225

226226
### Modal Button Z-Index
227227

@@ -263,6 +263,13 @@ These are only required for Google Drive sync. MEGA and WebDAV don't require env
263263
- Run tests with `npm test`
264264
- Example test files: `src/lib/util/count-chars.test.ts`, `src/lib/components/Settings/__tests__/QuickAccess.test.ts`
265265

266+
### E2E (Playwright)
267+
268+
- `npm run test:e2e` runs `e2e/*.spec.ts`. The config starts (or **silently reuses**) a dev server on port 5173.
269+
- **Multi-worktree caveat**: if another worktree's dev server already owns 5173, the suite would run against that worktree's code. Set `E2E_PORT=<free port>` to start a dedicated server for the current worktree.
270+
- `E2E_CHROMIUM=/path/to/chrome` points Playwright at an existing browser binary instead of downloading one (e.g. a build under `~/.cache/ms-playwright/`).
271+
- The zoom specs import production modules (`zoom-controller.ts`, `zoom-layout.ts`, `page-detection.ts`) through the Vite dev server and drive them against synthetic page strips.
272+
266273
## Common Development Tasks
267274

268275
### Adding a New Settings Option
@@ -397,5 +404,5 @@ git worktree add ../mokuro-reader-worktrees/<branch-name> <branch-name>
397404

398405
- Cloud provider auth tokens may expire (Google Drive ~1 hour, others vary)
399406
- Large volume imports may cause memory pressure on low-end devices
400-
- Text selection in reader requires special handling to not conflict with panzoom
407+
- Text selection in reader requires special handling to not conflict with drag panning
401408
- Migaku extension aggressively mutates DOM and can interfere with UI controls

docs/superpowers/specs/2026-06-09-continuous-targeted-zoom-design.md

Lines changed: 138 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)