# Maploom Local Studio 1.0

Turn a picture or SVG illustration into an interactive map. Draw regions, add context and export a self-contained HTML viewer. Maploom works locally with no account, API key, upload server, CDN or runtime dependencies.

**Release status:** locally verified Maploom 1.0.0. The original app and standalone HTML viewer were tested in the Codex in-app browser, with 33 functional tests and eight real browser checks, actual file downloads/reopening, SVG import and inspected desktop/mobile screenshots. Check `evidence/QA_STATUS.json` and the included current browser receipts/images for the exact scope. The mobile checks use a 390 × 844 viewport with pointer and keyboard input; physical-device pinch/touch and separate Chrome, Safari and Firefox runs are not claimed. These local checks do not establish public availability, customer demand, payment or sales validation.

## Start in under a minute

Unzip the package, keep the `app` folder together and open `app/index.html` in a recent Chrome, Edge, Firefox or Safari browser. The included synthetic Cedar Court plan opens immediately. Its example.com destinations are demonstration placeholders; replace them when preparing your own map. JavaScript must be enabled. No terminal, npm install or web server is needed to use the app. If your managed browser prevents local files, ask your administrator for an approved opening method; do not disable security protections.

1. Choose **Upload image / SVG** for PNG, JPEG, WebP, GIF or SVG artwork (up to 8 MB, dimensions up to 20,000 × 20,000). Uploading a new image starts a new map; download your previous project first. An invalid file leaves your existing work intact.
2. Choose **Rect** or **Ellipse**, then drag diagonally. Choose **Polygon**, tap at least three corners and choose **Finish polygon** (or press Enter). Choose **Marker**, then tap its location.
3. Select a region in the list or on the image. Edit its title, description, destination and color. **Apply changes** commits the edit; text-field changes also apply when you leave a field. Invalid values show an error and do not overwrite the prior region.
4. Use Select to drag a region, or drag its handles to resize/reshape. X/Y and width/height fields give exact image-coordinate editing. Polygon X/Y moves the whole polygon; use vertex handles to reshape it. Duplicate/Delete and Undo/Redo are available.
5. Choose **Preview** to try the map. **Phone width** constrains the canvas to 390 px or your available width; it is a layout aid, not a substitute for testing a real mobile browser. Click/tap a region or press Tab and Enter to read its detail panel.
6. Choose **Save project** for a `.maploom.json` backup. **Open project** restores its artwork, geometry and details. Confirm replacement when there are unsaved changes. Your browser chooses where downloads are saved; check the Downloads folder and open the saved file to verify it.
7. Choose **Export HTML**. Open that file in your browser: it contains the image, SVG regions, accessible choices, details and links, so it can run offline. After your own QA you can place it on an existing site or embed it in an iframe.

## Keyboard and touch

V select, R rectangle, E ellipse, P polygon, M marker, H pan. Enter finishes a polygon, Escape cancels unfinished work/closes details. Arrow keys move the selected region one image pixel; Shift + arrow moves ten. Delete/Backspace removes a selected region. These drawing shortcuts are ignored while typing in inputs. Ctrl/⌘ Z undoes, Shift + Ctrl/⌘ Z (or Ctrl Y) redoes, Ctrl/⌘ S downloads the project. Undo keeps the latest 50 changes and shares the background image across snapshots.

Use mouse-wheel or +/− to zoom, Pan to drag the view, Fit to reset. On touch devices, drawing and handles use Pointer Events; two fingers zoom the editor. Exported viewers allow normal page scrolling and browser pinch zoom. Markers and small shapes also have text buttons below the exported map for accessible touch/keyboard selection.

## Drafts, privacy and safe links

Artwork and projects stay in this browser unless you choose to share the exported file yourself. Region destination links go to their destinations only when opened. A browser-local recovery draft is saved when available; file-origin storage varies across browsers, large images may exceed quota, and private browsing can discard it. **Downloaded JSON is the reliable backup.** If a draft exists, use Recover saved draft. Storage failure shows a warning; project downloads still work. Do not use real patient or other sensitive data in examples or shared exports.

Links support HTTP, HTTPS, mailto, tel and #fragment values. Scripts, protocol-relative URLs, credentials and control characters are rejected. New-tab destination links use `noopener noreferrer`. Text is inserted as text or escaped before export. SVG artwork is sanitized: scripts, event handlers, foreign HTML, external assets and unsupported styles are removed. SVG files are background artwork; imported source-path editing is not supported. Draw original editable overlays instead. Some SVG artwork can change appearance during sanitization; check its appearance before use.

## Files and integration

- `app/`: complete offline editor, including shared `core.js` validation and export functions.
- `samples/cedar-court.svg` and `.maploom.json`: original synthetic example artwork and editable project.
- `samples/cedar-court.html`: a viewer actually generated by the same export function.
- `samples/embed-example.html`: local iframe integration example.
- `SPEC.md`, `OFFER.md`, `LICENSE.txt`, `THIRD_PARTY.md`: scope, optional integration proposal, approved use terms and dependency notices.
- `tests/`, `scripts/`, `package.json`, `package-lock.json`: reproducible developer checks and packaging.
- `evidence/`: actual command logs, manifest and verification status. No fabricated browser observations.

For an existing website, a straightforward integration is:

```html
<iframe src="cedar-court.html" title="Explore Cedar Court"
        style="width:100%;height:900px;border:0" loading="lazy"></iframe>
```

Use a descriptive frame title and adjust its height for your page. The exported map is also a standalone HTML document that you can customize. It does not require a Maploom backend. Publishing your viewer is a separate action; verify its destination, links and behavior on the site where you embed it.

## Use terms and optional integration

`LICENSE.txt` contains the approved Nishvault Free Product Use Terms. Personal and commercial use of the free editor is permitted. You may export, share, embed or sell the outputs you create, including the viewer runtime embedded by Maploom. Rights in uploaded artwork remain with the relevant rights holders. Redistributing or reselling the editor itself, its complete source/package or a rebranded competing copy is not authorized.

The free product includes no paid checkout, recurring charge, guaranteed support, service-level agreement or update schedule. Optional custom integration is a separate request and requires a separate agreed scope before any payment or work commitment. Pricing ideas in `OFFER.md` are planning hypotheses, not an active checkout or a completed sale.

## Developer checks

The application itself needs no installation. Test tooling requires Node 20+ and Python 3.10+: `npm ci --ignore-scripts` installs the pinned jsdom development-only dependency; `npm test` runs geometry/security/save/export and synthetic editor tests. `python3 scripts/package.py` recreates the sample HTML, packages the actual files, checks ZIP CRCs and verifies every extracted byte hash. `evidence/package-verification.json` records the result. Do not mistake a green test run for real-browser approval.

## Current limits

No multi-floor navigation, native CMS installer, collaborator accounts, hosted analytics, image raster editing, source-SVG path editor or PDF importer. GIF animation follows the browser's image handling. The app does not guarantee platform-specific localStorage or download behavior. Multi-pointer, rendering, native file chooser and downloaded-file workflows must be verified in target browsers before final release. Sales price, traffic and paid integration interest remain hypotheses.
