Repository navigation
Conversation
The selection text shared via session storage was not cleared on tab switching, and tabs without the content script (e.g. chrome://) can't record their selection. So a shortcut could run with a stale selection from another tab instead of falling back to the clipboard. Record the tab ID with the selection and use it only when it matches the active tab. Also re-record the selection when a tab becomes visible. Closes #498 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The hub only serves the e2e test page and static data files, so a CSS framework brings no benefit. Replace Tailwind classes with plain CSS (globals.css + CSS Modules) and shadcn/ui components with native elements, keeping the test page DOM that e2e relies on unchanged. Also add E2E_HUB_BASE_URL to route the deployed hub to a local build so hub changes can be verified with e2e before deploying. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KWGX774FR5iixzXqS7CMpU
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KWGX774FR5iixzXqS7CMpU
- postcss-shadow-dom-properties: declare the initial values of @property-registered custom properties inside the stylesheet, since Chrome ignores @Property in shadow trees (needed by Tailwind CSS v4) - findRemUsages: detect rem units, which follow the user's page root font-size inside the content script's Shadow DOM Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KWGX774FR5iixzXqS7CMpU
- Use @tailwindcss/vite and move the theme from tailwind.config.js to CSS (@theme); replace tailwindcss-animate with tw-animate-css and update tailwind-merge to v3 - Redefine every rem-based token in px (--spacing: 4px, text, container, radius) so the content script UI doesn't follow the user's page root font-size, and fail the build if content script CSS contains rem - Apply the Shadow DOM @Property fallback via PostCSS - Rename utilities for v4 (shadow, rounded, outline-hidden, ...), add @reference to CSS modules using @apply, and restore v3 defaults (placeholder color, button cursor) - Ignore 'Request context disposed' in the e2e hub route helper Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KWGX774FR5iixzXqS7CMpU
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KWGX774FR5iixzXqS7CMpU
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KWGX774FR5iixzXqS7CMpU
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KWGX774FR5iixzXqS7CMpU
…canning - Use @theme inline for tokens that reference runtime CSS variables. With a plain @theme, --color-background was resolved on :root/:host, so the popup's per-element --background override (user styles) no longer changed bg-background (e2e E2E-72) - Scan only src/ (excluding tests) for class names; plain text in docs generated unused rem-based utilities Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KWGX774FR5iixzXqS7CMpU
Windows opened by the extension (e.g. the PageAction recorder) load the deployed HTML because their navigation can't be intercepted; forwarding its hashed assets to the local build returned 404 and broke the page. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KWGX774FR5iixzXqS7CMpU
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KWGX774FR5iixzXqS7CMpU
The shortcut handler judged the selection with the stored text, while the content script ran the command with the selection in its tab. So when the window lost focus with text selected, the stale selection was used instead of the clipboard. - The shortcut handler passes the selection it decided to the content script, and decides whether to use the clipboard only once. - Rename allowClipboardFallback to selectionFromClipboard, and split UrlParam.useClipboard into selectionFromClipboard and clipboardForSteps. Whether to read the clipboard is derived by needsClipboard(). - Remove the re-check of an empty selection in actions and toUrl. - Stop re-recording the selection on visibilitychange. Refs #498 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Ipc.getTabId returns null instead of throwing when the tab ID can't be retrieved, so callers don't need their own error handling. - The shortcut handler gets the active tab with getCurrentTab(), like the other places in the service worker. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…olation - Declare `@layer properties` at the top of every CSS file that uses layers, so it stays the lowest-priority layer whatever the chunk injection order. - Fail the build when no content script CSS could be checked for rem, and also detect uppercase REM and other root-relative units (rlh, rex, ...). - Define breakpoints in px as in v3, so media queries don't follow the browser's default font-size setting. - e2e: return the local 404 for missing hub pages instead of falling back to the deployed hub, and match the base path on a segment boundary. - Fix a lint error in the cn() test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KWGX774FR5iixzXqS7CMpU
Keeping the selection in session storage raced with the asynchronous writes and the clears on focus change. The shortcut handler now asks the active tab for its current selection, and the tab reports whether the window lost focus after the text was selected, so the clipboard is used instead of a selection that may be older than it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The executor fills in the default, so actions no longer repeat it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s focus A global shortcut can be pressed while another app has focus, and the active tab of the last focused window still has the selection made before the user switched apps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…OnFocusChange The setting only keeps the menu open across focus changes. Keeping the selection for the shortcut let a selection older than the clipboard be used. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ignoring the selection after the window lost focus didn't match what the user sees in the page. The selection is now ignored only when another app has focus at the time the shortcut is run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
cmd2uuid derived a command ID from its content including the title, but it is no longer called from the extension or the Hub. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MuHp872cRxjzMMEpMfPxeG
- Lower the minimum command title length from 3 to 2. - Trim the title and collapse whitespace runs (including full-width spaces, tabs and newlines) into one ASCII space before validation, and save the normalized title. Matches the Hub's normalization. Refs ujiro99/selection-command-hub#297 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MuHp872cRxjzMMEpMfPxeG
Match the Hub's limit so a title accepted by the extension is not rejected when shared. Refs ujiro99/selection-command-hub#297 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MuHp872cRxjzMMEpMfPxeG
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MuHp872cRxjzMMEpMfPxeG
Start a new onboarding experiment that compares the welcome-overlay flow (variant C, now the control) with a simplified variant D. Variant letters now name a UI pattern rather than a role, so the control is chosen per experiment and C keeps meaning the same pattern it did in onboarding_v3. The kill switch and the failed-assignment fallback both land on C. Variant A is no longer assigned but stays in the type until its code is removed. Add onboarding_v4 to the hub experiments config, keeping onboarding_v3 for already-published builds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H7m4SrJWH9ySfRuqRtDVg6
…ground Variant D drops the "select -> command -> result" OnboardingRail from Steps 1-3 and replaces the slate vignette with the welcome overlay's blue radial glow, kept behind every step. The glow is extracted into OnboardingGlow and mounted by both the overlay and the layout at the same time, so the overlay fades out onto an identical, already-bloomed glow. Variant differences are resolved once in getVariantUi() and exposed as onboarding.ui, so steps check `ui.showRail` instead of variant letters. Steps 1 and 2 keep extra room above the target text without the rail so its callout does not overlap the explanation. Add variant D shots to the onboarding screenshot spec and pin the other shots to an explicit variant. Refs #494 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H7m4SrJWH9ySfRuqRtDVg6
- 読み取り失敗時に最大3回まで再試行する - Offscreenからの不正な応答をエラーとして扱う - textareaにフォーカスできない場合はエラーにする - 作成時の単一ドキュメント制約エラーでは既存ドキュメントを使う - バックグラウンドタブで開く場合は実行元タブへエラーを通知する - エラートーストとクリップボード読み取りの重複処理を共通化する Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
feat(extension): オンボーディング画面のダークモード対応
- Lift the dialog surface and its controls above the page background, and blur the overlay behind the dialog - Lighten popover surfaces (Select content, InputPopup menu) and the focus ring in dark mode - Unify SelectTrigger focus ring with Input / Textarea - Render open mode icons as masks so they follow the text color Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Move the dark mode surface tokens and overlay blur from CommandEditDialog into the shared DialogContent / DialogOverlay - Use the shared dialog surface for option/Dialog in dark mode - Support dark mode in the search URL assist "how to use" section and keep the Gemini button text readable Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Darken the text highlight in the page action help - Use the popover surface for the page action step editor and keep the step name / delay fields text-only while not editing - Align user variable chips and add buttons with the dialog tone Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Lighten interactive control backgrounds on the page and give SelectContent an input-like border - Keep the switch thumb visible when off, like shadcn/ui - Use dark-friendly hover colors for share/edit/copy/remove buttons - Use dark defaults for user style colors in the dark theme - Tone down the Gemini button and the AI assist button in dark mode - Lighten the destructive color for error text in dark mode - Add dark variants of the Selection Command Hub images Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In the dark theme, colors set in the user styles no longer switch the other popup colors back to the light defaults. Each unset color now falls back to its own dark default, and the hover color stays visible on both dark and light custom backgrounds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace the hard-coded default colors in the user style descriptions with a placeholder, filled with the default of the current theme. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Convert the align images into alpha masks and paint them in the text color, like the open mode icons, so they stay visible in dark mode. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… mode - Lighten the detail toggle chevron icons in the command edit dialog - Add a hover background to SelectField triggers Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
User style colors no longer switch the whole popup to the user's colors, so the note about it no longer matches the behavior. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add `bg-hover` / `bg-selected` color tokens that adapt to light and dark mode, including lighter values inside dialogs, select menus and menubar menus, and apply them to clickable elements in the options page and the input menu. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Relative hover scales made wide elements grow far more than narrow ones. Add `hover-grow-sm/md/lg` utilities tuned per element size so each grows by about 6px, and apply them in the options page. Also fix the malformed transition of the sidebar menu button. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… theme - Add `--sc-overlay-*` tokens for dialogs and select/menubar menus instead of repeating the same values in three places. - Override `--accent` in menubar menus so keyboard focus stays visible in dark mode. - Re-fill the user style default when the theme changes while adding one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
feat(extension): コンテンツスクリプトのUIのダークモード対応
Use a light background for the onboarding callout and brighten the target text, link preview and highlight colors in dark mode. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The copy button only appears after Gemini finishes generating the answer, which often exceeds the default 5s element wait. Add a waitUntil/clickable condition with a longer timeout to the copy step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The progress overlay and the side panel step timeout both assumed every step finishes within PAGE_ACTION_TIMEOUT + delay. A click with a waitUntil condition can wait much longer, which hid the overlay mid-step and could abort side panel steps early. Add getStepTimeout() and use it for both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Unwrap Gemini markdown links via z.preprocess so the error message is not shown while typing before the input is blurred. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix(extension): improve search URL assist reliability
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.