Skip to content

Commit 928e830

Browse files
committed
v1.0.2: Improve bookmark bubble UX
- Clear text selection when pressing Escape to dismiss bubble - Prevent bubble from appearing in input fields (textarea, input, contenteditable) - Restrict bubble to only appear within chat messages (article elements) - Update AI agent instructions (CLAUDE.md, AGENTS.md) - Remove unused files (GEMINI.md, generate_icons.py)
1 parent f133eb2 commit 928e830

File tree

7 files changed

+22
-29
lines changed

7 files changed

+22
-29
lines changed
File renamed without changes.

CLAUDE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@AGENTS.md

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "threadmark",
3-
"version": "1.0.1",
3+
"version": "1.0.2",
44
"module": "index.ts",
55
"type": "module",
66
"license": "MIT",

scripts/build.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,7 @@ await cp(
4949
"dist/features/sidepanel/sidepanel.html",
5050
);
5151

52-
// Generate Icons
53-
const proc = Bun.spawn(["python3", "scripts/generate_icons.py"], {
54-
stdout: "inherit",
55-
stderr: "inherit",
56-
});
57-
await proc.exited;
52+
// Copy static assets (icons, logos, etc.)
53+
await cp("assets", "dist/assets", { recursive: true });
5854

5955
console.log("Build complete! Load 'dist' folder in Chrome.");

scripts/generate_icons.py

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/features/capture/modules/bubble.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,22 @@ function handleSelectionChange() {
2020
return;
2121
}
2222

23+
// Don't show bubble when selecting in input fields
24+
const activeElement = document.activeElement;
25+
if (
26+
activeElement instanceof HTMLInputElement ||
27+
activeElement instanceof HTMLTextAreaElement ||
28+
activeElement?.getAttribute("contenteditable") === "true"
29+
) {
30+
return;
31+
}
32+
33+
// Only show bubble when selecting within chat messages (article elements in composer-parent)
34+
const anchorNode = selection.anchorNode;
35+
if (!anchorNode?.parentElement?.closest("article")) {
36+
return;
37+
}
38+
2339
const text = selection.toString().trim();
2440
if (text.length > 0) {
2541
showBubble(selection, text);
@@ -142,6 +158,7 @@ function showBubble(selection: Selection, text: string) {
142158
// Add escape key listener
143159
escapeHandler = (e: KeyboardEvent) => {
144160
if (e.key === "Escape") {
161+
window.getSelection()?.removeAllRanges();
145162
removeBubble();
146163
}
147164
};

src/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"manifest_version": 3,
33
"name": "Threadmark",
4-
"version": "1.0.1",
4+
"version": "1.0.2",
55
"description": "Bookmark, highlight, and organize specific text snippets within ChatGPT conversations. Never lose a golden answer again.",
66
"permissions": [
77
"activeTab",

0 commit comments

Comments
 (0)