Skip to content

Commit 6a5d755

Browse files
authored
release(v0.1.4): judge-ready build — extension updates, screenshots, README (#17)
* feat: replace extension folder with new general mode extension files * chore: bump manifest version to 0.1.4 * chore: add screenshots directory placeholder * Add files via upload * docs: add CHANGELOG_DRAFT.md Add changelog draft file for v0.1.4 release. * docs: add INSTRUCTIONS.md Add instructions for final1 release. * docs: add README_SNIPPET.md Add README snippet for demo and quick start. * release(v0.1.4): judge-ready build — extension updates, screenshots, README; ignore local backups/PSDs
1 parent 081a63a commit 6a5d755

28 files changed

Lines changed: 849 additions & 517 deletions

.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,13 @@
22
node_modules/
33
dist/
44
*.log
5+
# design source files
6+
*.psd
7+
# Local backups / artifacts
8+
extension_old/
9+
10+
# Design sources not in repo
11+
*.psd
12+
13+
# Any local automation notes
14+
*agent*instructions*.md

CHANGELOG_DRAFT.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Changelog (draft)
2+
## v0.1.4 — Final demo (Judge‑ready)
3+
- General: Translate & Extract (no network calls)
4+
- AI‑gated: Summarize / Rewrite (on-device Gemini Nano)
5+
- Math: Steps, Hints, Check answer, Printable variants
6+
- Side panel + popup fallback
7+
- Theme toggle (Light / Dark / System)
8+
- Updated icon, screenshots, and README demo link

INSTRUCTIONS.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Web‑to‑Quest — Final1 Bundle Instructions
2+
3+
Follow these steps in VS Code to publish the final1 build.
4+
5+
## 1) Branch
6+
```bash
7+
git checkout main
8+
git pull
9+
git checkout -b release/v0.1.4
10+
```
11+
12+
## 2) Copy files
13+
- Replace the **extension/** folder with the one in this bundle (if present).
14+
- Add **demo/screenshots/** (from this bundle).
15+
- Ensure `extension/manifest.json` uses:
16+
- "service_worker": "background.js"
17+
- "side_panel": { "default_path": "sidepanel.html" }
18+
- permissions: `contextMenus, sidePanel, storage`
19+
20+
## 3) Bump version
21+
Edit `extension/manifest.json` → "version": "0.1.4"
22+
23+
## 4) README
24+
Open your `README.md`, and paste the content from `README_SNIPPET.md` under a **Demo** + **Screenshots** section.
25+
26+
## 5) Commit & PR
27+
```bash
28+
git add extension demo INSTRUCTIONS.md README_SNIPPET.md CHANGELOG_DRAFT.md
29+
git commit -m "release: v0.1.4 (final1) — demo screenshots, docs, and build"
30+
git push -u origin release/v0.1.4
31+
```
32+
Open PR → **Squash & merge**.
33+
34+
## 6) Release
35+
Publish GitHub Release `v0.1.4` (attach the judge ZIP).
36+
37+
## 7) Local verify
38+
- `chrome://extensions` → Reload
39+
- General tab: Translate/Extract
40+
- Math tab: Steps/Hint/Check; Printable variants; Theme toggle

README.md

Lines changed: 121 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,149 @@
1+
# Web-to-Quest (Chrome MV3)
2+
13
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
24
[![Latest release](https://img.shields.io/github/v/release/HooplaHoorah/w2q-extension)](https://github.com/HooplaHoorah/w2q-extension/releases)
3-
[![Pre-release](https://img.shields.io/github/v/release/HooplaHoorah/w2q-extension?include_prereleases&label=pre-release)](https://github.com/HooplaHoorah/w2q-extension/releases)
4-
5-
# Web-to-Quest (Chrome MV3)
65
![Release Drafter](https://github.com/HooplaHoorah/w2q-extension/actions/workflows/release-drafter.yml/badge.svg)
76

7+
Turn on-page text into a guided quest.
8+
- **Math tab:** steps, hints, and answer check (all local).
9+
- **General tab:** translate / extract everywhere; summarize / rewrite when on-device AI is available.
10+
11+
---
12+
13+
## Demo (2 minutes)
14+
15+
▶️ https://youtu.be/UONUOS2RKOU
16+
17+
---
18+
19+
## Screenshots
20+
21+
> If your filenames differ, adjust the image paths below. Put PNGs in `demo/screenshots/`.
22+
23+
<p align="center">
24+
<img src="demo/screenshots/01-context-menu.png" width="45%" alt="Context menu">
25+
<img src="demo/screenshots/02-general-input.png" width="45%" alt="General: Input"><br/>
26+
<img src="demo/screenshots/03-translate.png" width="45%" alt="General: Translate">
27+
<img src="demo/screenshots/04-extract.png" width="45%" alt="General: Extract"><br/>
28+
<img src="demo/screenshots/05-math.png" width="45%" alt="Math tab">
29+
<img src="demo/screenshots/06-theme.png" width="45%" alt="Theme toggle"><br/>
30+
<img src="demo/screenshots/07-optional-gemini-nano.png" width="45%" alt="Optional Gemini Nano">
31+
<img src="demo/screenshots/08-generate-steps.png" width="45%" alt="Generate steps"><br/>
32+
<img src="demo/screenshots/09-hint-me.png" width="45%" alt="Hint me">
33+
<img src="demo/screenshots/10-check-answer.png" width="45%" alt="Check answer"><br/>
34+
<img src="demo/screenshots/11-generate-printable-variants.png" width="45%" alt="Printable variants">
35+
</p>
36+
37+
---
38+
39+
## What’s included
40+
41+
- **Side Panel UI** (with popup fallback)
42+
- **Math assistant**:
43+
- *Generate steps* (auto-expanding list)
44+
- *Hint me*
45+
- *Check answer* (result appears only in the Check box)
46+
- **General tools**:
47+
- *Translate* (no network, works everywhere)
48+
- *Extract highlights* (no network, works everywhere)
49+
- *Summarize* / *Rewrite* (require on-device AI if available)
50+
- **Theme**: Light / Dark / System
51+
- **Privacy-first**: no data leaves the device; AI is opt-in
52+
53+
---
854

9-
Turn on-page math into a guided quest: **Steps**, **Hints**, and **Answer Check** — with an auto-expanding Steps view.
55+
## Quick start (Developer mode)
56+
57+
1) Open `chrome://extensions` → enable **Developer mode**.
58+
2) Click **Load unpacked** → select the `extension/` folder.
59+
3) Highlight text on any page → Right-click → **Send selection → Web-to-Quest**.
60+
4) The side panel (or popup fallback) opens with your selection prefilled.
61+
62+
---
1063

1164
## How to use
12-
1. Select a math expression on any page.
13-
2. Right-click → *Send selection → Web-to-Quest* (or paste into **Problem**).
14-
3. Click **Generate steps** and/or **Hint me** for guidance.
15-
4. Type your answer, then click **Check answer** — the correct result is **only** shown here.
1665

17-
## New (v0.2.0-skeleton)
18-
- **Settings → Enable AI features** (off by default). When enabled and available:
19-
- **Explain this step (AI):** asks Gemini Nano (Prompt API) for a one-line rationale.
20-
- **Generate printable variants (AI):** drafts a list of similar problems (no answers).
66+
### General tab
67+
1. Paste or send text into **Input**.
68+
2. Choose one action:
69+
- **Translate** *(works offline)*
70+
- **Extract** *(works offline)*
71+
- **Summarize** / **Rewrite** *(AI-gated; see below)*
72+
3. Results appear in **Result**.
73+
74+
### Math tab
75+
1. Paste or send the math expression into **Problem**.
76+
2. Click **Generate steps** and / or **Hint me**.
77+
3. Enter your answer → **Check answer** (only here is the correct value shown).
78+
4. **Generate printable variants** drafts similar problems (no answers).
79+
80+
---
81+
82+
## Built-in AI (Gemini Nano) — optional
83+
84+
Web-to-Quest works 100% without AI: math steps / hints / checks, Translate, and Extract are fully local.
85+
If Chrome exposes on-device **Gemini Nano** (Prompt API), **Summarize** and **Rewrite** enable automatically.
86+
87+
Enable (if you want AI):
88+
- Use Chrome Canary and flags as described in `extension/help/ai.html`.
89+
- Open the side panel DevTools and run:
90+
```js
91+
await window.ai?.canCreateTextSession?.()
92+
```
93+
You might see: `ready` (enabled), `after-download` (model fetching), or `missing/unavailable` (no AI).
2194
22-
> These AI features are scaffolded and gracefully degrade when Nano isn’t available.
95+
*(Graceful degradation: when AI isn’t available, those buttons stay disabled and everything else still works.)*
2396
24-
## Install (Developer mode)
25-
1. Open `chrome://extensions` and enable *Developer mode*.
26-
2. Click **Load unpacked** and select the `/extension` folder.
27-
3. Try it on any page.
28-
- [v0.1.0 (stable)](https://github.com/HooplaHoorah/w2q-extension/releases/tag/v0.1.0) – initial MVP (local steps/hints/check)
29-
- [v0.2.0-alpha (pre-release)](https://github.com/HooplaHoorah/w2q-extension/releases/tag/v0.2.0-alpha) – AI scaffolding (Prompt API stubs)
97+
---
3098
99+
## Permissions
31100
32-
## Built‑in AI (Gemini Nano) — optional but supported
101+
- `sidePanel` — open the Web-to-Quest panel
102+
- `contextMenus` — add **Send selection → Web-to-Quest**
103+
- `storage` — pass selection text from background to panel safely
33104
34-
Web‑to‑Quest works 100% without AI — all math steps, hints and answer checks are computed locally. If Chrome’s on‑device **Gemini Nano** (Prompt API) is exposed, two extra buttons will appear: *Explain this step (AI)* and *Generate printable variants (AI)*.
105+
*No `host_permissions` are requested.*
35106
36-
To enable these features:
37-
- Follow the steps in [`extension/help/ai.html`](extension/help/ai.html) to install Chrome Canary and enable the Prompt API flags.
38-
- After loading the extension, open the side panel and run `await window.ai.canCreateTextSession()` in the devtools console. The returned status may be:
39-
- `ready` – AI is available and buttons are enabled automatically.
40-
- `after-download` – the model is downloading; leave Chrome open on Wi‑Fi.
41-
- `missing` or `unavailable` – this build/profile doesn’t yet expose the API (everything else still works).
107+
---
42108
43-
### Troubleshooting
44-
- **AI: unavailable** – You can still make tasks and check answers; only the two AI buttons are disabled.
45-
- If using Canary, confirm the flags are **Enabled** then reload the extension and probe again.
46-
- Advanced: launching Chrome with `--enable-features=PromptApiGeminiNano,PromptApiGeminiNanoMultimodalInput` may help when the flags UI is flaky.
109+
## Privacy
47110
111+
- All computation runs locally in the extension’s process.
112+
- We do **not** collect, transmit, or store personal data or analytics.
113+
- Selection text is cached briefly in `chrome.storage.session` (with `chrome.storage.local` as a fallback) only to pass data from background → side panel, then overwritten on the next selection.
114+
- AI features are **opt-in**; when enabled they use Chrome’s **on-device** Gemini Nano (no network calls).
48115
49-
## Tech
50-
- Chrome **Manifest V3**, Side Panel UI
51-
- **CSP-safe** arithmetic engine (shunting-yard; no `eval`)
52-
- Auto-expanding Steps with *Show all / Collapse*
53-
- Privacy-first: no data leaves device; AI features require explicit opt-in
116+
---
54117
55118
## Development
56-
- Source lives under `/extension`.
57-
- On tags matching `v*.*.*`, GitHub Actions zips the extension and uploads an artifact (see `.github/workflows/build.yml`).
58119
59-
## License
60-
MIT © 2025 Hoopla Hoorah, LLC
120+
- Source lives under `/extension`.
121+
- On tags matching `v*.*.*`, GitHub Actions can package the build (see `.github/workflows/*`).
122+
- Typical flow:
123+
```bash
124+
# from repo root
125+
npm run lint # (if you add tooling)
126+
# load /extension in chrome://extensions
127+
```
61128
129+
---
62130
131+
## Troubleshooting
63132
64-
## Privacy
133+
- **Panel didn’t appear** – It may open as a popup (fallback). You can also click the extension icon to open the panel.
134+
- **“AI: unavailable”** – Summarize/Rewrite are disabled; the rest still works.
135+
- **Context menu didn’t appear** – Reload the extension or right-click in a standard text selection area.
65136
66-
- All computation runs locally in the extension’s side panel.
67-
- We do not collect, transmit, or store personal data or analytics.
68-
- Selection text is cached briefly in chrome.storage.session (with chrome.storage.local as a fallback) only to pass data from the background script to the side panel, then overwritten on the next selection.
69-
- AI features are **optional** (off by default). When enabled, they use Chrome’s built-in on-device **Gemini Nano** (Prompt API). If Nano isn’t available, these buttons remain disabled. No third-party scripts or network calls are made by the extension.
137+
---
70138
71-
## Permissions used
139+
## Roadmap
72140
73-
- \sidePanel\ — open the Web-to-Quest side panel
74-
- \contextMenus\ — add “Send selection → Web-to-Quest”
75-
- \storage\ — pass selection text from the background script to the side panel
141+
- Expand the printable-variants generator
142+
- More extractors on the General tab
143+
- Optional in-panel tutorial cards
76144
77-
*No \host_permissions\ are requested.*
145+
---
78146
147+
## License
148+
149+
MIT © 2025 Hoopla Hoorah, LLC

README_SNIPPET.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
## Demo (2 minutes)
2+
▶️ https://youtu.be/UONUOS2RKOU
3+
4+
## Screenshots
5+
<p align="center">
6+
<img src="demo/screenshots/01-context-menu.png" width="45%">
7+
<img src="demo/screenshots/02-general-dark.png" width="45%"><br/>
8+
<img src="demo/screenshots/03-math-dark.png" width="45%">
9+
<img src="demo/screenshots/04-general-light.png" width="45%"><br/>
10+
<img src="demo/screenshots/05-math-light.png" width="45%">
11+
</p>
12+
13+
## Quick start
14+
1. `chrome://extensions`**Developer mode**
15+
2. **Load unpacked** → select the `extension/` folder
16+
3. Highlight text → Right‑click → **Send selection → Web‑to‑Quest**
17+
18+
### AI‑gated features
19+
- **Summarize / Rewrite** require on‑device Gemini Nano (if available).
20+
- **Translate / Extract** work everywhere with no network calls.
21+
22+
## Privacy
23+
General tools process locally. See `PRIVACY.md`.

demo/screenshots/.gitkeep

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
589 KB
Loading
186 KB
Loading
308 KB
Loading
204 KB
Loading

0 commit comments

Comments
 (0)