Skip to content

Add copy counters and thread notes - #2

Merged
erorplex merged 2 commits into
mainfrom
feat/notes-and-counter
Sep 28, 2026
Merged

erorplex merged 2 commits into
mainfrom
feat/notes-and-counter

Conversation

@erorplex

Copy link
Copy Markdown
Owner

What and why

Two features requested for the first release:

  • Copy counters: every copy button shows how often this email or thread was copied with it; the tooltip adds when it was copied last. Counters update live across tabs.
  • Notes per thread: a Note button below the subject opens an autosaving note field. It reopens with the thread and the button is highlighted when a note exists. Keystrokes in the field are kept away from Gmail's shortcuts (e.g. # would otherwise delete the thread). The toolbar popup lists all notes, newest first, with search, a link back to Gmail, delete and JSON export.

Everything is stored in chrome.storage.local only (new storage permission); nothing is synced or sent anywhere. PRIVACY.md documents it.

Stacked on #1 — review/merge #1 first.

Checklist

  • npm test passes (20 tests, incl. new test/store.test.js)
  • End-to-end run against a mocked Gmail page: counter increments and survives reload, note saves, reopens after reload, Gmail keydown listeners see no keystrokes, popup lists the note
  • Tried it in real Gmail — pending
  • CHANGELOG.md updated
  • No real email content or addresses in tests

🤖 Generated with Claude Code

erorplex and others added 2 commits September 28, 2026 17:58
- Every copy button shows how often this email or thread was copied with it;
  the tooltip adds the time of the last copy. Counters update across tabs.
- Note button below the subject opens an autosaving note field for the
  thread; it reopens with the thread and is highlighted when a note exists.
  Keystrokes in the field don't reach Gmail's shortcuts.
- Toolbar popup lists all notes (newest first) with search, link back to
  Gmail, delete and JSON export.
- src/store.js keeps counters and notes in chrome.storage.local ("storage"
  permission), with tests for the pure parts.
- Docs: README, README.de.md, PRIVACY, CHANGELOG.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Note field follows changes from the popup or other tabs whenever it has no
  unsaved input (was: skipped while focused, so a deleted note came back).
- Subject and link of a note are captured while its thread is on screen, so a
  late save never stores another thread's subject or URL, and never throws.
- Pending note saves are flushed on pagehide / tab hidden.
- Counters keep the time of the last copy per button (copyAt / attachAt).
- The thread bar is replaced when Gmail reuses the header for another thread
  or the thread id only appears later.
- aria-expanded follows the auto-opened note; own error text for notes.
- Popup export uses a data URL, which survives the popup closing for a
  "Save as" dialog.
- PRIVACY.md: notes include subject and Gmail link; counters are a local
  record of what was copied when.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@erorplex
erorplex force-pushed the feat/notes-and-counter branch from 93a1df8 to e10d7b8 Compare September 28, 2026 16:00
@erorplex
erorplex deleted the branch main September 28, 2026 16:00
@erorplex erorplex closed this Sep 28, 2026
@erorplex erorplex reopened this Sep 28, 2026
@erorplex
erorplex deleted the branch main September 28, 2026 16:00
@erorplex erorplex closed this Sep 28, 2026
@erorplex erorplex reopened this Sep 28, 2026
@erorplex
erorplex changed the base branch from chore/public-release to main September 28, 2026 16:01
@erorplex
erorplex merged commit 4e49b77 into main Sep 28, 2026
6 checks passed
@erorplex
erorplex deleted the feat/notes-and-counter branch September 28, 2026 16:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant