# Turnmere 1.0

An original jQuery flipbook component and local image-book studio. Start with the filled Field Notes magazine, add image pages and export an interactive book in one HTML file.

## Install and run
Unzip the developer package, preserving app/, vendor/ and samples/. Open app/index.html in a modern browser. All required files are local; no service account, API or build is needed. If your browser restricts local files, use your normal static web server for the extracted folder. A local test command is `python3 -m http.server 8792 --bind 127.0.0.1 --directory /ABSOLUTE/EXTRACTED`. Open http://127.0.0.1:8792/app/index.html . Nothing requires a LAN listener or public deployment.

## Make a book
Use Next/Previous, the page selector or numbered thumbnails. On wide containers (700px+) spread mode shows two pages; narrow screens show one. Focus the book and press Left/Right, Home/End, +/−. Horizontal pointer swipe turns pages; vertical movement scrolls. Zoom2x enlarges the page with scrolling inside the stage; Fit resets. There is no pinch-zoom feature or physical multitouch certification. Reduced motion disables the turn animation.

Add image pages accepts PNG/JPEG/WebP, up to24pages,4MiB per page,24million pixels per image and32MiB embedded project. Imported images append to the current book in chooser order. Select the desired page, edit its title/description, click Apply settings. Move earlier/later changes its order; Remove retains at least one page. Load the example restores the filled book; keep a downloaded project before replacing your work. PDF import/conversion, video pages and protected content are outside this version.

Save project downloads all artwork/settings/position in JSON. Open project restores it; Ctrl/Cmd+S downloads a backup. The browser draft is convenience storage only; if its quota is full/unavailable a warning tells you to download. Export standalone HTML embeds the complete current book, runtime and styling. The exported HTML has no external script/style/image dependency or telemetry.

## Embed the component
Include vendor/jquery-3.7.1.min.js, app/turnmere.css and app/turnmere.js. Provide a host and initialize:

```js
jQuery('#catalog').turnmere({title:'My catalog',page:0,spread:true,pages:[
 {title:'Cover',alt:'Description of the cover',image:'my-cover.jpg'},
 {title:'Collection',alt:'Description of the collection',image:'collection.jpg'}
]});
jQuery('#catalog').turnmere('next');
jQuery('#catalog').turnmere('goTo',1); // zero-based
const state=jQuery('#catalog').turnmere('getState');
jQuery('#catalog').turnmere('fit');
jQuery('#catalog').turnmere('destroy');
```

Methods next/previous/goTo/fit/destroy are chainable. getState returns a copy with page,pageCount,spread,zoom. Events: turnmere:ready and turnmere:change pass current state; turnmere:error passes a message when an image fails. Destroy restores original host nodes/attributes and disconnects listeners/resize observer. See samples/integration.html for two independent instances and destroy/reinitialize. Direct developer initialization may use local or site-hosted image URLs; portable studio projects deliberately accept only embedded raster images. Host image resources must be valid; the reader reports failed image loads.

## License and release status
The included LICENSE.txt grants use and customization of original Nishvault files in the purchaser's own personal and commercial projects, and sharing of finished outputs. Do not resell or redistribute the source/editor/plugin package as a standalone product or template, or claim authorship of the original files. Setup and use documentation is included; no hosted service, guaranteed personal support, SLA, update schedule or business-result guarantee is provided.

The selected developer-package price is USD19 one-time, external tax. Applicable taxes are calculated at checkout. A license in this local package does not activate a provider product, checkout, payment or public release. Those require current independent QC and the authorized publication workflow. The separate free single-book preview retains its approved preview/LICENSE.txt. jQuery remains under its own MIT terms; see THIRD_PARTY.md and OFFER.md.

## Verification scope
Functional Node/jsdom checks cover data validation, page order/delete, export escaping, responsive modes, navigation, isolated instances, lifecycle and privacy adapter. These are not real browser acceptance. Real browser QA, screenshots, download/chooser roundtrip, exported-file use and extracted ZIP verification are kept outside the customer ZIP under product evidence/qa. The repaired runtime has 47 functional tests, including four whole-spread Fit regressions. A documentation/license-only revision retains earlier execution evidence only when the current QA engine verifies unchanged behavior and actual artifact hashes. It is not a new browser test. Current package integrity and documentation require their own verification, and independent final QC must review the actual new delivery before publication.

The customer ZIP contains 21 entries; current source-byte equality and clean extraction are recorded in source-bound package/installation evidence. The included LICENSE.txt defines the purchaser rights above. Local validation does not prove public release, live analytics, checkout, payment or delivery activation. Physical devices and other browser engines are untested.

Development workspace only: `npm ci --ignore-scripts`, `node --test tests/project.test.cjs tests/plugin.test.cjs tests/metrics.test.cjs`, `node scripts/build_sample.cjs`, `python3 scripts/package.py`. Package excludes test/dev/hosted-only sources and QA aggregate reports.
