Commit Graph

50 Commits

Author SHA1 Message Date
john kevin asprec
57bc3419fa fix(ci): test triggering ref on PRs, unify token secret, harden JSON parsing
- ci.yml: check out the PR head (or push SHA) instead of always cloning
  main; PR checks now test the actual diff. Drop http.sslVerify=false.
  Publish to the package registry only on push events.
- preview.yml/release.yml: use GITEATOKEN (GITEA_TOKEN is reserved by
  Gitea, so these token steps were silently broken).
- deploy-chrome.yml/release.yml: parse JSON with node instead of
  python3 (not installed in the container) and grep; fail loudly
  instead of swallowing errors with 2>/dev/null.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 21:26:36 +08:00
john kevin asprec
a5608e7b09 fix: gate content-script debug logging behind dev mode
Selection text substrings no longer reach the host page's console in
production builds; logs only fire under 'wxt' dev serve.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 21:26:21 +08:00
john kevin asprec
f7fcd41341 feat: implement API key resolution and live model listing for providers
All checks were successful
CI — Test & Build / Test & Build (push) Successful in 59s
2026-07-13 13:56:48 +08:00
50df1b5d93 chore: bump manifest version to 1.0.0 in wxt.config.ts
All checks were successful
CI — Test & Build / Test & Build (push) Successful in 1m46s
Deploy — Chrome Web Store / Build & Deploy to Chrome Web Store (push) Successful in 1m53s
Release — Package & Publish / Build & Package Release (push) Successful in 1m46s
v1.0.0
2026-03-11 09:37:44 +00:00
1fedaf4dfa fix: zip chrome-mv3 contents at root level + log manifest version
Some checks failed
CI — Test & Build / Test & Build (push) Successful in 1m20s
Deploy — Chrome Web Store / Build & Deploy to Chrome Web Store (push) Failing after 1m18s
Release — Package & Publish / Build & Package Release (push) Successful in 1m13s
2026-03-11 08:42:39 +00:00
41b13e5b90 fix: use python3 to parse upload response (handles multiline JSON)
Some checks failed
CI — Test & Build / Test & Build (push) Successful in 1m41s
Deploy — Chrome Web Store / Build & Deploy to Chrome Web Store (push) Failing after 1m7s
Release — Package & Publish / Build & Package Release (push) Successful in 1m5s
2026-03-11 08:21:28 +00:00
ecbab9c7ac fix: use python3 to parse OAuth2 token response (handles spaces in JSON)
Some checks failed
CI — Test & Build / Test & Build (push) Successful in 1m0s
Deploy — Chrome Web Store / Build & Deploy to Chrome Web Store (push) Failing after 1m0s
Release — Package & Publish / Build & Package Release (push) Successful in 57s
2026-03-11 08:17:42 +00:00
229fac8a2c chore: bump version to 1.0.0
Some checks failed
CI — Test & Build / Test & Build (push) Successful in 59s
Deploy — Chrome Web Store / Build & Deploy to Chrome Web Store (push) Failing after 49s
Release — Package & Publish / Build & Package Release (push) Successful in 50s
2026-03-11 08:09:49 +00:00
64c1e65dea ci: add Chrome Web Store deploy workflow
All checks were successful
CI — Test & Build / Test & Build (push) Successful in 54s
2026-03-11 08:06:28 +00:00
a4580cd892 fix: use GITEATOKEN secret (GITEA_TOKEN is reserved by Gitea)
All checks were successful
CI — Test & Build / Test & Build (push) Successful in 52s
2026-03-06 22:44:49 +00:00
Forge
1239e5a90e fix: reduce Options page padding and margins - tighter form layout
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 50s
2026-03-06 15:57:31 +08:00
Forge
b0f79566e6 feat: LEXAI-15 writing style selector in modal, popup, and right-click menu
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 47s
2026-03-06 15:43:10 +08:00
Forge
2bc73d5fc9 feat: LEXAI-23 move Copy As + Download into More dropdown on toolbar
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 45s
2026-03-06 15:30:48 +08:00
Forge
1490e6641f feat: replace Tone Analysis with Explain - simplifies highlighted text in plain language
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 49s
2026-03-06 15:27:40 +08:00
Forge
107929c9e3 release: LEXAI-16 19 20 complete
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 44s
2026-03-06 15:25:53 +08:00
Forge
e3b4925ef5 feat: LEXAI-16 request timeout (fetchWithTimeout), LEXAI-19 Copy As, LEXAI-20 Download
Some checks failed
CI — Test & Build / Test & Build (push) Has been cancelled
2026-03-06 15:25:45 +08:00
Forge
209a26c09c fix: LEXAI-21 popup message type mismatch - use ANALYZE_TEXT to match background handler
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 45s
2026-03-06 15:21:06 +08:00
Forge
58b6728332 fix: popup configured check — also detect apiKeyEnc (encrypted key)
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 49s
2026-03-06 15:12:24 +08:00
Forge
88855ba53b release: LEXAI-11 12 13 complete
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 44s
2026-03-06 15:06:52 +08:00
Forge
0273356f4d feat: LEXAI-13 API encryption, LEXAI-11 context menu, LEXAI-12 tone analysis
- LEXAI-13: TweetNaCl secretbox encryption for API keys in Options + background
  - getOrCreateEncKey() generates per-device 32-byte key stored in chrome.storage.local
  - Keys saved as nonce+ciphertext (base64) under apiKeyEnc
  - Backward compat: falls back to plaintext apiKey if no encrypted key found
  - Lock icon 🔒 shown in Options label when key is encrypted
- LEXAI-11: Right-click context menu with Fix, Rephrase, Shorten, Expand, Tone
  - Registered via onInstalled in background service worker
  - Sends lexai-context-menu message to content script
  - Content script listener added at bottom of main()
- LEXAI-12: Tone analysis button added to floating toolbar (teal #2dd4bf)
  - Analysis-only: showModal called with null originalText = no Replace button
  - Tone system prompt updated to pure analysis (no rewrite)
2026-03-06 15:06:43 +08:00
Forge
004819472d release: LEXAI-21 popup with text input
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 42s
2026-03-06 15:01:40 +08:00
Forge
9604bef3a4 feat: LEXAI-21 popup text input with quick action buttons
Some checks failed
CI — Test & Build / Test & Build (push) Has been cancelled
2026-03-06 15:01:29 +08:00
Forge
ec3ece0ea1 fix: simplify contenteditable replace - restore selection + execCommand, no manual delete
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 47s
2026-03-06 14:45:34 +08:00
Forge
8d3887a0af fix: use execCommand insertText for contenteditable replace - fixes delete-without-paste bug
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 43s
2026-03-06 14:44:05 +08:00
Forge
132e8790dc release: build with definitive replace fix
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 44s
2026-03-06 14:37:01 +08:00
Forge
ec98bac146 fix: capture selection on toolbar button mousedown - definitive replace fix
Some checks failed
CI — Test & Build / Test & Build (push) Has been cancelled
Root cause (dual bugs):
1. SCOPE BUG: snapStart/snapEnd/snapElement/snapRange were local vars inside
   runAction() but showModal() is a sibling function — those snap vars were
   never in scope inside the Replace button handler. The condition always
   silently fell through, doing nothing.

2. TIMING BUG: Selection was only captured on document mouseup, which could
   race against focus changes when clicking the toolbar.

Fix:
- showModal() now accepts snapStart/snapEnd/snapElement/snapRange as explicit
  parameters — guaranteed in-scope, no closure ambiguity
- Each toolbar button mousedown calls captureForButton() BEFORE any focus
  shift can occur (belt-and-suspenders, works even if e.preventDefault fails)
- Added console.log debug lines to Replace handler and runAction snapshot
- selectionLocked reset on Escape and overlay click (was missing)
2026-03-06 14:36:48 +08:00
Forge
1936d6a7b5 fix: lock stored selection during modal - prevents mouseup from resetting on Replace click
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 44s
2026-03-06 14:15:41 +08:00
Forge
a3072dadfb fix: add timestamp to package version to prevent duplicate conflict
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 46s
2026-03-06 14:05:04 +08:00
Forge
0884f2f18a feat: add Telegram notifications on CI success/failure
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 48s
2026-03-06 14:02:25 +08:00
Forge
b4311f578b release: updated build - extension context fix
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 45s
2026-03-06 13:56:36 +08:00
Forge
a0b00c6d87 fix: comprehensive extension context invalidated handling
Some checks failed
CI — Test & Build / Test & Build (push) Has been cancelled
2026-03-06 13:56:30 +08:00
Forge
4343abbab3 fix: add jsdom dep, exclude e2e from unit test run - CI tests now pass
Some checks failed
CI — Test & Build / Test & Build (push) Has been cancelled
2026-03-06 13:55:51 +08:00
Forge
7732aace54 fix: clone to /tmp/lexai - avoid mounted workspace volume conflicts
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 35s
2026-03-06 13:52:30 +08:00
Forge
eb691ebb44 fix: use git fetch+reset instead of clone - workspace is a mounted volume
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 10s
2026-03-06 13:51:02 +08:00
Forge
20424af7db fix: clear /workspace before clone to avoid 'already exists' error
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 10s
2026-03-06 13:49:54 +08:00
Forge
050e291f73 fix: add tsconfig.json, @types/chrome, fix TS errors - CI typecheck now passes
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 9s
2026-03-06 13:47:24 +08:00
Forge
7713fb1b1d fix: ci workflow - fix working-directory, git clone path, env var passing
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 10s
2026-03-06 13:45:14 +08:00
Forge
33531398e1 chore: rebuild distribution ZIP
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 20s
2026-03-06 13:43:57 +08:00
Forge
a47b82ab84 feat: publish versioned ZIP to Gitea package registry on CI 2026-03-06 13:43:57 +08:00
Forge
e34f4aba4b fix: handle extension context invalidated error gracefully 2026-03-06 13:43:57 +08:00
Forge
14b941d84e release: updated build with auto-popup toolbar
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 18s
2026-03-06 13:40:53 +08:00
Forge
b54cfc87cf feat: auto-show toolbar on text selection, position above selection 2026-03-06 13:40:50 +08:00
Forge
1aefdd18a4 release: updated build with replace fix
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 22s
2026-03-06 13:38:24 +08:00
Forge
aa75e8d8ac fix: replace clears text field - store selection before toolbar shows
Some checks failed
CI — Test & Build / Test & Build (push) Has been cancelled
2026-03-06 13:38:13 +08:00
Forge
3b1386bb4f feat: add LexAI icon (16/32/48/128px) - purple + lightning bolt
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 23s
2026-03-06 13:33:48 +08:00
Forge
7f16bd886f fix: rewrite workflows without GitHub marketplace actions
Some checks failed
CI — Test & Build / Test & Build (push) Failing after 1m13s
- Use native git clone instead of actions/checkout
- Use node:22-bookworm container directly
- Remove dependency on actions/setup-node, upload-artifact
- Use curl for Gitea API calls directly
- Fixes CI failure on self-hosted runner
2026-03-06 13:18:27 +08:00
Forge
41db281824 release: add chrome-mv3 build zip for testing
Some checks failed
CI — Test & Build / Unit Tests (push) Failing after 27s
CI — Test & Build / Build Extension (push) Has been skipped
2026-03-06 13:16:12 +08:00
Forge
310b61439a docs: add PHASE1_SUMMARY.md
Some checks failed
CI — Test & Build / Unit Tests (push) Failing after 29s
CI — Test & Build / Build Extension (push) Has been skipped
2026-03-06 13:12:30 +08:00
Forge
c35ef08531 feat: fix WXT setup — install @wxt-dev/module-react, fix sandbox imports, clean build (closes #1)
Some checks failed
CI — Test & Build / Unit Tests (push) Failing after 34s
CI — Test & Build / Build Extension (push) Has been skipped
2026-03-06 13:11:19 +08:00
Nemo
b04076081c feat: initial LexAI Chrome extension scaffold
Some checks failed
CI — Test & Build / Unit Tests (push) Failing after 54s
CI — Test & Build / Build Extension (push) Has been skipped
- WXT + React 18 + TypeScript setup
- Background service worker (LLM API proxy)
- Content script (floating toolbar + text selection)
- Options page (provider/model/API key config)
- Popup UI
- Gitea Actions workflows (CI, preview, release)
- Vitest unit tests + Playwright E2E setup
- Supports: OpenAI, Anthropic, Groq, OpenRouter
2026-03-06 09:34:15 +08:00