# VSL Info Mode 0.4.0

This release renames the current standalone product to **VSL** and adds a Comet-focused extension, a mobile reader app, and a Windows desktop companion. These are developer previews, not public store releases. Earlier attachments in the conversation remain historical versions.

## What is available

| Deliverable | Status | How it works |
|---|---|---|
| VSL Info Mode extension 0.4.0 | Downloadable unpacked MV3 extension | Enable on the current page, hover a subject, select text and pin the VSL panel. 0.3.1 and 0.3.2 are security and privacy releases after an external code review: closed shadow root, real presses only, Ask AI rate limit, http(s)-only links, hover-lookup and online-voice switches, settings kept out of content-script reach, options page that never echoes the key. 0.4.0 is the store release candidate (name, description, pinned ID). |
| VSL mobile workspace | Working browser preview plus a compiled Android tester APK | Paste text or import an image; hold the VSL space bar, move like a trackpad and release to inspect. |
| VSL Windows Setup 0.3.0 | Coming soon; webpage download locked | The earlier unsigned tester is withheld from the current download page pending Windows validation. |
| Native app project bundle | Android debug build verified; iOS project not compiled | Android Gradle/Capacitor and iOS Xcode/Swift Package Manager projects with shared packaged assets. |

## Android tester installation

`VSL-Info-Mode-Android-Tester-0.3.0.apk` is approximately 28 MB and is **debug-signed**, not a Google Play release. It compiled successfully and its APK signature verifies, but installation and launch have not been tested on an Android emulator or physical phone.

1. Download the APK onto an Android test device.
2. Open the downloaded file. If Android asks, allow installation only from the browser or file manager you used, only if you trust this tester.
3. Complete installation and open **VSL Info Mode**. If device policy or security software blocks it, stop rather than disabling security protections.
4. Return the installing browser/file manager's unknown-app permission to its previous setting afterward.
5. Start with the bundled sample. Hold the in-app VSL Space pad, move to a word, then release. A selected-term prompt should appear before an online lookup.
6. Approve one lookup to test the information panel. Try Add content with pasted text and a non-sensitive screenshot.

This build uses application ID `app.vsl.infomode`, version code `30`, minimum SDK `24` and target SDK `36`. It requests Internet access, but no accessibility service, screen-overlay permission or background clipboard access. The packaged OCR engine and English model were verified present in the APK.

### Phone acceptance checklist

- Cold launch and reopen after closing; confirm the VSL name and orange panel.
- Hold, move and release the VSL Space pad; cancel with the pointer controls; repeat with different hold durations.
- Select a phrase without activating the pointer. Confirm normal typing still works in text fields.
- Share plain text to VSL from another app, both while VSL is closed and while it is already open.
- Select text in a supporting app and test its VSL text-processing action.
- Import a screenshot, run OCR, inspect a recognized word and reset the imported content.
- Decline a lookup, then approve a separate lookup; verify the source opens externally.
- Change theme, close and reopen; verify settings persist.
- Test offline mode, rotation, small screens and large system text.

These are pending acceptance tests, not claimed results. Use non-sensitive sample material until native-device behavior is verified. Record the phone model, Android version, reproduction steps and screenshots for any issue.

## Comet installation

Comet is Chromium-based and supports most Chrome Web Store extensions, with exceptions for some Chrome-specific integrations ([Comet extension documentation](https://www.perplexity.ai/help-center/comet/en/articles/11734716-extensions)).

1. Download and extract `VSL-Browser-Extension-0.4.0.zip`.
2. In Comet, open Extensions management from the browser menu. The Chromium management page is `chrome://extensions`.
3. Enable Developer mode, choose Load unpacked and select the extracted folder containing `manifest.json`.
4. Pin **VSL Info Mode for Comet** from the Extensions menu.
5. Click the flask to inspect the current page. Alt+Shift+I is the declared shortcut; check the browser's extension shortcut settings for conflicts.
6. Esc unpins the panel; a second Esc exits.

This package is not endorsed by Perplexity and is not yet a Web Store listing. No Comet installation was performed on the user's computer during this release.

## Windows installation and placement

The current webpage shows **Coming soon** and does not offer the Windows installer. The steps below document the earlier tester build, not a currently enabled website download. Previously shared attachments are historical and have not been revoked.

The installer is **unsigned** and has not been run on Windows during this release. Windows may show an unknown-publisher or reputation warning. Do not disable Windows security controls to install it. Use a test machine if you choose to evaluate the preview.

1. Download `VSL-Info-Mode-Setup-0.3.0.exe`.
2. The installer offers an installation directory and creates Start menu and desktop shortcuts.
3. Open VSL. A small orange dock and a tray icon appear.
4. Drag the dock by its left-hand grip to the position you want. Its position is saved and clamped back onto the screen at the next launch.
5. Right-click the tray icon for Open, Choose screen region, Paste clipboard, Show/hide dock and Quit.
6. Close the main window to hide it to the tray. Quit from the tray to fully stop it.
7. In Settings, choose Keep window on top and Show window in taskbar. Pin VSL yourself from the Windows taskbar or Start menu; the app does not silently alter pinned items.

### Pointing at desktop content

- Choose **Point & select** on the dock or **Choose screen region** in the tray.
- A screenshot of the monitor containing the cursor is temporarily shown. Drag a rectangle over the words you want. Esc cancels.
- VSL performs English text recognition locally. The screen image is not uploaded or saved to disk by VSL.
- In the Reader, use the VSL space bar or select the recognized words.
- Review the selected term and approve the lookup. Only that term is sent to Wikipedia.
- Ctrl+Shift+Space opens the desktop region picker when the shortcut is available.

This is screenshot-region inspection, not unrestricted access to every application's internal controls. It recognizes text, not arbitrary objects in pictures. Protected video, locked screens, remote desktops and some graphics surfaces may not be capturable. Display scaling and multiple-monitor behavior still need Windows device tests.

## Mobile behavior

The VSL space bar is a control **inside VSL**, not a takeover of the system keyboard.

1. Enable VSL in the app.
2. Paste text into Add content or choose a screenshot/photo.
3. Hold the VSL Space control for the selected hold duration.
4. Move on the control like a trackpad. The pointer highlights a word in the Reader.
5. Release to bring up the information panel.
6. Hardware Space works when the user is not typing in an input. Tap to point is an alternative.

On Android, the tester includes `ACTION_SEND` and `ACTION_PROCESS_TEXT` for deliberately shared text. This path is not device-tested yet. On iOS, this first project supports paste and file import; an iOS Share extension is not included.

### Why this does not operate above every mobile app

Apple's custom keyboard model does not let a keyboard select text in the host app, access the host's editing menu, or draw above its own view. A custom keyboard alone therefore cannot implement an unrestricted system-wide pointer panel ([Apple custom keyboard documentation](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/CustomKeyboard.html)).

Android cross-app inspection would be a separate AccessibilityService/overlay implementation with a clear user-controlled scope, prominent disclosure, affirmative consent and Play Console declaration. A general assistant must not declare itself an accessibility tool merely to bypass those obligations ([Google Play AccessibilityService policy](https://support.google.com/googleplay/android-developer/answer/10964491?hl=en)). This preview does not request those permissions.

## Privacy

- Mobile/desktop: selected content stays local until a one-shot lookup approval or Settings opt-in.
- English OCR models and runtime are bundled. Recognition does not call a cloud OCR service.
- No background clipboard reading. The desktop tray's Paste clipboard command reads only when selected.
- The app keeps imported content in memory. Android and desktop settings persist theme, language, hold duration and consent; desktop also saves window/dock position. Settings in the web and first iOS previews are in memory only.
- Comet extension: while enabled, hovering a subject may initiate a Wikipedia lookup. Do not enable it on confidential pages.
- Browser Ask AI is an optional bring-your-own-key feature, not included in the mobile/desktop UI. No API key is bundled.
- Wikipedia matching is heuristic. The panel labels a result as a possible match; verify its source.

## Validation performed this release

- JavaScript syntax checks and four unit tests passed: external-URL filtering, offscreen window recovery, MV3 manifest and default lookup consent.
- Chromium desktop app preview: hardware Space, pointer targeting, release, consent gate, live sourced result, and no Wikipedia request before approval.
- Emulated mobile touch: hold, move, release, selected-word prompt, light/dark, no horizontal overflow at 390 × 844.
- Web OCR: local fixture recognized Aurora, Prism, Refraction, DMX512, lighting and control.
- Electron on a Linux virtual desktop: main window and dock, custom local asset protocol, local OCR, region-picker capture/crop of another window, hide/reopen and on-top controls. Captured OCR read VSL, Aurora, Prism, DMX512, lighting and control.
- Android: Gradle `assembleDebug` succeeded; APK Signature Scheme v2 verification passed with the Android Debug certificate. Package identity, launchable activity, permissions and bundled OCR assets were inspected.
- This is not a physical phone test, not a Comet extension-install test and not a Windows runtime/installer test.

Android runtime validation is still pending: no Android device or configured emulator was available, and the build host has no `/dev/kvm` acceleration device. No emulator installation or launch result is claimed.

## Remaining release gates

- **Windows:** real installation/uninstallation, taskbar pin persistence, native tray behavior, mixed-DPI monitors, screen capture, optional code-signing certificate, release approval.
- **Android:** emulator and physical-device QA, stable package ownership, release keystore/app signing, Android App Bundle and Play Console setup. SDK setup and the debug APK compile are complete.
- **iOS:** macOS/Xcode build, device testing, Apple Developer team, signing/provisioning, TestFlight, App Store review.
- **Both stores:** final publisher/legal identity, support contact, permanent privacy URL, screenshots, age/content rating, accurate privacy/Data Safety declarations and user approval before submission.
- **System-wide mobile pointer:** separate Android feasibility/consent work; iOS requires a platform-compliant reduced-scope design.

The Android SDK License Agreement was accepted and the SDK installed with the user's explicit approval. The user reports a Google Play developer account only, so Android is the current store-release priority; no Google Play submission, developer-account change or public release has been made.

## Rebuilding

Use Node 22 or newer. The project pins its runtime dependencies.

```sh
npm ci
npx install-electron
npm run build
npm test
npm run windows
npx cap sync
```

English OCR model: `assets/eng.traineddata.gz` is included in the native project bundle. To restore it if removed, obtain the English traineddata distributed with Tesseract-compatible models. Third-party license notices are included with the bundle.

Android: after installing licensed SDK tools, open `android/` in Android Studio or run `./gradlew assembleDebug` from that folder. Use `bundleRelease` with your own release signing configuration for Play distribution. Do not publish debug-signed packages.

iOS: open `ios/App/App.xcodeproj` on a Mac, resolve Swift Package Manager dependencies, select your development team and a real device. The project is generated but has not been compiled here.
