Changelog

All notable changes to Ophel Atlas are documented here.

View on GitHub
v1.0.47

✨ Improvements

  • Gemini Markdown Bold Fix now defaults to off: The "Markdown Bold Fix" toggle for Gemini is now disabled by default. It can still be enabled in Settings → Site Settings → Gemini.
  • Panel state remembered in auto-snap mode: Both floating and auto-snap modes now remember whether the panel was open or closed across page refreshes.

🐛 Bug Fixes

  • Claude reply notifications repeating endlessly: Fixed notifications firing repeatedly after a reply was completed on Claude.ai. (#470)
  • Yuanbao theme sync broken: Fixed theme detection failing on Yuanbao after they changed their dark mode implementation.
  • Drag-to-sort broken on Yuanbao: Fixed tab order, quick button, and prompt drag sorting failing on Yuanbao.
v1.0.46

🐛 Bug Fixes

  • Gemini source tooltips broken after Markdown fix: Fixed source/citation tooltip chips disappearing in Gemini when the Markdown bold fix was enabled. The fixer was rewriting paragraph innerHTML, destroying Gemini's native event handlers for source tooltips. Affected paragraphs that contained citation chips are now skipped. (#468)
v1.0.45

✨ Improvements

  • Max page width raised to 99%: The maximum percentage for page width and user query width is raised from 94% to 99%. (#447)
  • Narrow screen auto-adaptation: On narrow screens like mobile, percentage-width mode automatically expands to 95% to prevent content from being too narrow. (#447)
  • Auto-hide quick buttons when panel opens: When the toggle is on, the quick button group auto-collapses when the panel opens and restores when it closes, keeping the interface cleaner.
  • Quick button settings layout improvement: The "Hide" toggle and "Opacity" control are grouped separately above the button ordering list, making them easier to find.

🐛 Bug Fixes

  • Panel position drift on zoom: Fixed the quick button group and main panel gradually drifting to the center of the screen after using trackpad or browser zoom shortcuts. (#458)
  • Quick button settings lost on refresh: Fixed some settings being reset after saving and refreshing the page.
  • Untranslated UI strings: Fixed some dialogs and tooltips showing Chinese text in Russian, English, German, and 10 other languages.
  • Korean/CJK text rendering broken: Fixed Korean and other CJK characters appearing as boxes or garbled text in the panel for Windows users. (Thanks @Apious #432)
  • DeepSeek page width: Aligned AI reply width with the input box width.
v1.0.44

✨ Improvements

  • WebDAV provider quick presets: Added server address presets for popular services including Jianguoyun (NutStore), InfiniCloud, Nextcloud, Synology, and Seafile — click to fill in, no manual lookup needed.
  • Backup action area redesign: Regrouped buttons for Test Connection, Save Config, Backup Now, and Restore Backup with clearer visual hierarchy.
  • Backup file list style improvement: File names now use a scrollable horizontal layout to avoid truncation; Restore and Delete buttons are in separate columns for clearer targeting.
  • Settings page description improvements: Rewrote descriptions for word count, Firefox shortcut notes, and AI Studio model sync for greater accuracy.
  • Reading history default retention reduced to 3 days: Reduced from 7 days to 3 days to save local storage; existing data is not affected.
  • Send shortcut setting moved to Prompts panel: The "Send Shortcut" option moved from general settings to the Prompts tab, grouping it with prompt-related features.
  • Global shortcut default changed to Alt+O: Avoids conflict with Chrome's built-in "Open Gemini" shortcut; displayed as ⌥O on Mac.
  • ChatGPT bold fix disabled by default: Reduces interference with ChatGPT's native page styles; can be enabled manually when needed.

🐛 Bug Fixes

  • WebDAV backup list parsing compatibility: Fixed inability to read cloud backup file lists when some WebDAV providers (e.g. pCloud) return XML with namespace prefixes.
  • WebDAV operation interrupted after first authorization: Fixed the original operation (backup, restore, or test connection) not resuming after confirming the authorization dialog on first WebDAV use.
  • Doubao conversation delete confirmation broken: Adapted to Doubao's new page structure; fixed the delete confirmation dialog not triggering correctly (also fixed for Traditional Chinese UI).
  • Quick button initialization position jump: Fixed the visual jump of quick buttons sliding down from the top to their target position on page refresh.

ℹ️ Notes

  • Existing users' global shortcuts will not change automatically. To use Alt+O, please update it manually in your browser's shortcut settings.
v1.0.43

🚀 New Features

  • Panel mode toggle shortcut: Added Alt+M (Mac: ⌥M) shortcut to switch between Auto-Snap and Floating modes with one key.

✨ Improvements

  • More visible toast messages: Toast notifications are now clearer across all themes (including dark mode), long text is auto-truncated, and the system "Reduce Motion" setting is respected.
  • Anchor button click animation: Added a light spring animation when clicking anchor buttons in the main panel footer and floating quick buttons for more responsive feedback.

🐛 Bug Fixes

  • Tooltip lingering after tab switch: Fixed tooltips appearing unexpectedly when switching away and back to the browser tab during a hover-triggered countdown.
  • Horizontal image carousel blocked: Fixed horizontal image carousels on ChatGPT and similar pages being unable to swipe left/right when "Prevent Auto-Scroll" was enabled.
v1.0.42

⚠️ Breaking Changes

  • Double-click title bar behavior changed: The double-click action on the panel title bar changed from "Toggle Privacy Mode" to "Quick switch panel display mode (Floating ↔ Auto-Snap)".

✨ Improvements

  • Double-click title bar to switch panel mode: Double-click the panel's top title bar (Logo or brand name area) to quickly switch between Floating and Auto-Snap modes without entering settings.
  • Hover on Logo/brand name to show advanced guide: Moving the mouse over the panel's Logo or Ophel brand name automatically shows the advanced shortcut guide (MagicCodex), which closes when the mouse leaves.
  • Overall UI refinement: Numerous UI detail improvements.
  • Community links in settings page: Added store rating, GitHub, Ko-fi, and Discord quick links in the bottom-left corner, with theme and language switching integrated.
  • About page visual polish: Comprehensive refinement of buttons, headings, navigation, and theme cards.
  • Feature tip tour: Added feature hint bubbles to the panel and outline tabs to help discover hidden functionality.
  • Panel tab icons slightly enlarged: Outline, conversation, and prompt icons enlarged from 14px to 16px for better clarity.

🐛 Bug Fixes

  • Update notification showing repeatedly: Fixed the "plugin updated" dialog reappearing shortly after being closed.
  • Settings slider reset not persisting: Fixed "Restore Default" taking effect immediately but reverting to old values after page refresh.
  • Panel briefly flashing default light theme on refresh: Fixed panels briefly flashing to the default appearance before switching back to the user's theme on fast-loading sites like Gemini.
v1.0.41

✨ Improvements

  • "Tips & Tricks" category in global search: Type tip: in global search to quickly filter all feature tips; a dedicated tab makes tips easy to discover and review.
  • Fuzzy search button active state visual improvement: When fuzzy search is enabled, the button shows themed text + bold + solid themed border + light background highlight, clearly indicating the active state with automatic adaptation for dark/light and custom themes.

🐛 Bug Fixes

  • Search syntax example clicks not working: Fixed clicking syntax examples (e.g. type:outline, date:7d) in global search only closing the overlay without inserting into the input.
  • Toast blocked by backdrop-filter: Fixed toast notifications being blocked and blurred by the backdrop-filter used in global search and the settings page. Moved the mount point from document.body to the top-level Shadow DOM container to avoid stacking context isolation.
  • AI Studio adapted to new sidebar: Updated adapter for AI Studio's new sidebar structure.
v1.0.40

✨ Improvements

  • Outline scroll sync performance: When scrolling the conversation page, outline highlight indicator switched from full React re-render to direct DOM classList operations — only 2 DOM operations per scroll, eliminating useless reconciles across 1000+ OutlineNodeView components. (#397)
  • MutationObserver scope narrowed: Outline auto-update MutationObserver scope narrowed from document.body to the AI reply container level, reducing callbacks triggered by unrelated DOM changes. (#395)
  • treeKey hash compression: Outline tree keys now use djb2 hash algorithm, compressing long keys to 8-character hex strings, improving string comparison efficiency for large numbers of headings. (#395)

🐛 Bug Fixes

  • Sibling headings with same text overwriting collapse state: Fixed two sibling headings with identical text (e.g. two ## Summary) overwriting each other's collapse/expand state; key generation now prioritizes node ID. (#395)
  • Outline fallback refresh race condition: Fixed the fallback timer forcing a tree rebuild after treeKey had already updated naturally, preventing unnecessary resets of user collapse state. (#395)
  • Outline missing refresh on tab switch: Fixed outline refresh being lost when the outline tab was in the background during AI generation completion; automatically refreshes when switching back to the outline tab. (#395)
  • Panel mode switch flash: Fixed panel flashing on the left side of the page for one frame when switching from floating mode to edge-snap mode. (#398)
  • Accidental quick button drag: Raised the long-press drag threshold from 150ms to 220ms to reduce accidental drag triggers on quick clicks.
  • Position jump on floating mode switch: Panel no longer resets to defaultEdgeDistance when switching to floating mode from settings; it stays in place. defaultEdgeDistance is now only used as the initial position on page refresh.
  • Panel not retracting after closing settings/search in snap mode: Fixed settings modal and global search being rendered inside Shadow DOM causing MutationObserver to miss their close events; unified overlay detection scope and synced panel hover state on close.
  • No preview when switching to snap mode from settings: Panel now immediately snaps/retracts as a preview when switching to edge-snap mode from settings, instead of staying expanded due to detecting the settings modal still open.
v1.0.39

✨ Improvements

  • Panel mode simplified: Panel behavior settings simplified to two modes (Floating / Edge Snap), more intuitive without needing separate toggles.
  • One-click mode switch in panel header: Added a pin/snap toggle button in the header for quick mode switching without entering settings.
  • Panel header streamlined: Removed infrequently used buttons from the header for a cleaner look.
  • Title bar hover tips: Random usage tips shown when hovering the panel title bar to help discover hidden features.
  • Navigation buttons always visible in edge-snap mode: Scroll-to-top/bottom and anchor quick buttons no longer hide when panel is not overlapping them.
  • Conversation list performance: Large numbers of conversations under a folder no longer cause lag; progressive loading implemented. (#369)
  • Global search performance: Reduced redundant re-rendering of search results for smoother search experience.
  • Userscript load speed improved: Significantly faster userscript loading after page refresh.
  • Theme adaptation refined: Native theme now only colors the sidebar, no longer affecting the main content area of AI platforms.
  • Bundled Inter font: Extension version bundles Inter Variable font for improved typography.

🐛 Bug Fixes

  • Permissions management page restored: Fixed permissions page stuck in loading state with unresponsive "Allow" button. Root cause was chrome.notifications API lacking optional permission guard causing Service Worker initialization failure; also changed Options page permission requests to call chrome.permissions.request() directly instead of routing through Service Worker. (#384)
  • Fixed scrollbar flashing, position jumps, and other interaction issues when switching panel modes.
  • Fixed left-side snap animation delay; behavior is now unified on both left and right sides.
  • Fixed double-clicking the title causing the panel to accidentally leave snap state.
  • Fixed several memory leaks (animation frames and timers not cleaned up).
  • Fixed Korean characters appearing as boxes in userscript. (#373)
  • Fixed position drift and icon issues after quick button liquid collapse.
  • Fixed slider max value label in settings page being displaced below the "Restore Default" button.
v1.0.38

✨ Improvements

  • Zen Mode and Clean Mode split: The original "Zen Mode" is now split into "Zen Mode" (hides sidebar and navigation) and "Clean Mode" (hides disclaimers, ads, and other redundant elements) as two independent settings. Clean Mode is enabled by default; Zen Mode automatically includes the clean effect when enabled. (#365)
  • Notification click to foreground: Desktop notifications for completed AI generation in the browser extension now support clicking to jump directly to the corresponding tab and focus the window, matching userscript behavior. (#359)

🐛 Bug Fixes

  • Firefox outline panel scroll bounce: Fixed the outline panel jumping back to the active item position when scrolling in Firefox (including Zen Browser); debouncing the wheel event to pause auto-positioning. (#360)
  • ChatGPT reading position jumping to bottom after restore: Fixed reading progress being successfully restored on page refresh but then immediately pulled to the bottom by ChatGPT's auto-scroll. Added a DOM attribute-based position lock mechanism for synchronous cross-world communication, replacing the race-prone async postMessage approach; introduced an adaptive timeout strategy (2-second idle release, 15-second max) with support for outline clicks and anchor jumps during the lock period.
  • macOS ghost pass-through restored: Fixed the panel occasionally not entering the low-interference ghost pass-through state on macOS when holding the Command key, reducing obstruction of page content and click operations.

📝 Documentation

  • User docs fully rewritten: All user guides rewritten in Chinese and English, covering Quick Start, Panel Overview, Quick Buttons, Smart Outline, Conversation Management, Prompt Library, Enhancement Features, Appearance Themes, Backup & Sync, Shortcuts, and FAQ — more complete and easier to follow.
v1.0.37

✨ Improvements

  • Main panel and quick button style overhaul: Overall visual refresh of the main panel and quick buttons, further unifying hierarchy, spacing, and hover interactions for a lighter feel.
  • Quick button ghost pass-through: Quick buttons enter a low-interference "ghost state" when idle and support mouse event pass-through to the underlying page, reducing obstruction of site content and operations.
v1.0.36

✨ Improvements

  • Quick button experience upgrade: Integrated "Zen Mode" and "Global Settings" into the outer quick group with defaults enabled; redesigned intelligent grouping — feature toggles at top, navigation actions fixed at bottom with a separator.
  • Zen Mode immersive icon animation: When Zen Mode is enabled, the related icon in quick buttons seamlessly switches to the closed-eye state (EyeClosedIcon) with a minimalist 4-second breathing glow animation, providing visual feedback that matches the "immersive focus" mental model.
  • Native page color sync label clarified: "Sync native page theme" labels unified as "Sync native page colors", clarifying that page light/dark mode always follows Ophel, and this toggle only additionally controls some native element colors; descriptions updated in all 10 languages to reduce confusion.
  • Zen Mode exit button visual overhaul: Exit button redesigned as a top-centered floating glassmorphism capsule with smooth entrance animation that seamlessly adapts to the global theme system.
  • Global Toast notification upgrade: Replaced heavy gradient color blocks with a premium frosted glass card style; built-in smart avoidance mechanism automatically moves down when Zen Mode is active to prevent overlap.
  • Watermark removal indicator repositioned: The loading indicator during Gemini image watermark removal moved to the bottom-right corner of the image, reducing obstruction of the top-right action buttons and image content.
  • Zen Mode site adaptation and exit entry improved: Unified Zen Mode configuration across sites, adding default hidden elements for more AI sites; enabling it directly hides sidebar, disclaimers, and distraction areas, with a fixed floating "Exit Zen Mode" entry at the top level of the page.
  • Zen Mode shortcut and collapsed state compatibility: Added "Toggle Zen Mode" in "Settings → Shortcuts → Interaction Controls" with default shortcut Ctrl + Shift + Z; also improved Zen Mode layout behavior on Kimi and other sites with collapsed sidebars.
  • Qwen Studio site name unified: The display name of chat.qwen.ai unified to Qwen Studio across adapter display names, settings items, conversation hints, README, and issue templates.

🐛 Bug Fixes

  • AI Studio theme fallback conflict: Fixed AI Studio applying a generic fallback on top of already-completed native theme switching when "Sync native page colors" was enabled, causing theme class conflicts and style corruption.
  • System theme preference lost on refresh for multiple sites: Fixed DeepSeek, Qwen Studio, and ChatGLM reverting panel theme state to light on page refresh after switching to "Follow System" via Ophel, even though the system preference had been written to the site.
  • Zen Mode component i18n disconnect: Fixed the static-injected exit button text not updating when switching plugin language after Zen Mode was enabled.
  • Userscript Gemini inline image watermark removal positioning fix: For generated images on Gemini /app and /share pages that only have blob: / data: URLs, the watermark removal process now validates both 48px and 96px watermark candidates and their adjacent positions, only using a result when confirmed to improve quality.
  • Userscript inline image result reuse: Auto-display, preview zoom, copy, and download for the same Gemini inline image now reuse the same watermark-removed result to reduce inconsistency across different entry points.
v1.0.35

🚀 New Features

  • Native page theme sync toggle: Added "Sync Native Page Theme" toggle in "Appearance & Theme" to independently control whether Ophel theme changes also update the current site's light/dark mode and native colors; also added to global search index for direct navigation.

✨ Improvements

  • Gemini user query image export: Exported conversations now include images uploaded in Gemini user queries, preventing export results that only contain text prompts with missing reference images.

🐛 Bug Fixes

  • ChatGPT thinking mode completion timing: Introduced per-round completion detection logic for ChatGPT thinking_effort requests; normal replies continue using network monitoring, while standard/advanced thinking waits for the page to actually enter and exit the generating state before signaling completion, avoiding false "conversation complete" detection during the stream_handoff phase. (#343)
  • Doubao conversation sync restored: Adapted to Doubao's new sidebar DOM structure, restoring conversation list recognition, current conversation location, and new conversation entry sync, reducing sidebar feature failures caused by the official page update. (#342)
  • Doubao outline and export structure adapted: Switched to Doubao's new chat message area DOM, restoring outline extraction, latest reply extraction, and conversation export functions, preventing empty outlines or missing export content after the official update. (#342)
  • Gemini image Markdown export restored: Compatible with Gemini's new generated image structure, correctly preserving generated images in replies when exporting Markdown, no longer losing images due to wrapper changes or temporary blob: URLs. (#339)
  • Gemini watermark removal compatible with new image components: Watermark removal now supports Gemini's new generated image component structure, compatible with new image cards, copy buttons, and "Download full size image" buttons.
  • Gemini conversation image watermark misidentification fix: Adjusted Gemini watermark size detection logic to prioritize 48px watermark config when preview image source is detected on /app conversation pages. (#335)
  • Extension update notification z-index fix: Raised the z-index of the "plugin updated" notification card to prevent it from being covered when the panel or quick overlays are open.
  • Grok user query width alignment fix: Fixed Grok user query bubbles being incorrectly centered instead of right-aligned after enabling "User Query Width".
  • Grok content area width abnormal shrinkage: Fixed --content-max-width being applied redundantly on nested containers during Grok page width adjustment, causing the latest conversation content to be noticeably narrower than older messages.
v1.0.34

🐛 Bug Fixes

  • Firefox idle callback compatibility: Fixed errors in Firefox caused by calling requestIdleCallback / cancelIdleCallback without the window context, preventing TypeError during outline scroll sync.
  • Theme sync hydration race condition: Delayed theme callback registration and theme listener startup to ensure theme state writes only happen after settings hydration is complete, reducing the risk of disclaimer dialogs reappearing or settings being overwritten by defaults on Firefox after switching to dark or "Follow System" mode. (#333)
v1.0.33

🐛 Bug Fixes

  • Site width toggle not working: Fixed the "Enable Page Width" and "Enable User Query Width" toggles not opening for ChatGPT, Claude, and other sites in "Site Settings". Width config normalization now preserves already-saved site keys, preventing saved configs for sites not in the default table from being accidentally overwritten. (#330)
v1.0.32

🐛 Bug Fixes

  • Userscript settings reverting to defaults: Fixed userscript resetting the entire config to defaults whenever any setting was changed after a page refresh; tightened settings-store preview state and hydration persistence timing to prevent temporary state from overwriting saved settings.
  • Userscript legacy settings format compatibility: Added compatibility for old userscript versions that stored the raw settings object directly in GM storage; upgrades now automatically wrap it in the structure required by Zustand persist, reducing settings failures caused by the old data format.
  • Disclaimer false-positive fix: Disclaimer dialog now waits for settings hydration to complete before evaluating display conditions, preventing userscript from incorrectly judging "not agreed" before settings are loaded and showing the dialog repeatedly.
v1.0.31

✨ Improvements

  • Doubao page width sync: Page width control now also covers --content-max-width related containers and variables, fixing the bottom input box not changing when adjusting page width.
  • Quick button group position memory: The position of the quick button group after dragging is now automatically saved and restored after page refresh, reducing the need to reposition on every page visit. (#293, #3)
  • Quick button settings structure consolidation: Quick button order, opacity, toolbox menu, floating toolbar state, and position are unified under settings.quickButtons, with compatibility for old configs scattered at the top level and old backup files.
  • Layout settings converted to sliders: Page width, user query width, default margin, panel width, panel height, and snap trigger distance now use slider controls with real-time value display, reducing input complexity.
  • Width config unified to percentage: Page width and user query width now use % config exclusively, with quick preset buttons removed from the bottom; default value restore entry added for consistent settings UX.
  • Legacy width config auto-migration: Old px width data from previous versions is automatically converted and migrated to the new percentage config after upgrading.

🐛 Bug Fixes

  • Doubao native theme cleanup: Removed native theme override style injection for Doubao to avoid continued reliance on the separately maintained theme adaptation file.
  • Quick button group drift on zoom: Improved positioning logic when the browser window is zoomed or resized; quick buttons now better maintain their relative position, reducing cases where they end up in the center of the page.
  • Slider preview state lingering: Fixed temporary preview values persisting when switching pages or closing the panel while dragging a slider in settings; unsubmitted preview states are now cleaned up when the component unmounts.
v1.0.30

🚀 New Features

  • Theme switching now also affects the native site (partial support, continuously improving)

✨ Improvements

  • Improved quick button background effect (glassmorphism transparency)
v1.0.29

✨ Improvements

  • Userscript bundle size reduction: Userscript build now loads react and react-dom via CDN, and splits localization strings into external JSON resources, significantly reducing ophel.user.js bundle size, resolving Greasy Fork sync failures due to script length, without affecting the browser extension build.
  • Userscript i18n load chain optimized: Userscript now prioritizes initializing the current language resource on startup and automatically refreshes UI text when the language is changed, ensuring stable first-screen loading and switching experience with external language packs.

🐛 Bug Fixes

  • Theme switch animation origin fix: Fixed theme switch animation in quick buttons always starting from the top-right corner of the page; theme switching in both quick buttons and main panel now consistently radiates from the triggering button's position.
v1.0.28

🚀 New Features

  • AI reply Mermaid fallback rendering: Added Mermaid code block detection and rendering for sites without native support, with code/diagram toggle, zoom, fullscreen, and PNG download. (#285)

✨ Improvements

  • KaTeX font size reduction: Extension bundle now only includes .woff2 fonts, reducing bundle size while maintaining Firefox compatibility.
  • Mermaid toolbar experience: Improved button icons, page and fullscreen viewing experience.
  • Panel and outline icon refresh: Upgraded Sparkle icon in panel header/collapsed entry and "Show user queries only" button in outline panel to more consistent SVG icons, with minor button size and hierarchy adjustments for better visibility in dark and light themes.
  • Prompt icon system improved: Redrawn prompt-related icons with a separate icon for the prompt queue, reducing visual confusion between different entry points.
  • UI improvements: Improved icon display and adjusted About page supported platforms section and related feature descriptions for better visual consistency and readability.
  • Extension update notification improved: When the browser extension detects a new version, a custom Ophel refresh notification card now appears at the bottom-right corner of the page, clearly indicating "Plugin Updated" with a one-click refresh entry, reducing confusion when users continue in old context after an update.

🐛 Bug Fixes

  • Gemini Enterprise export noise cleanup: Cleaned up unexpected noise content (extra style and status text) appearing in some Gemini Enterprise export results, improving output consistency and readability.
  • Input focus stealing on native sites: Fixed an issue where Ophel could steal input focus on native sites like ChatGPT in Firefox, causing the first character typed in the outline search box to lose focus and prevent continuous input. (#304)
  • Unified focus protection: Unified input focus protection logic across Settings, Global Search, Prompt Queue, and the main panel, while preserving local keyboard interactions (Enter, Escape, etc.) inside queue and modal dialogs.
  • Duplicate update notification: Fixed an issue where after extension updates, multiple notifications appeared simultaneously (Ophel's own notification, a fallback notice, and Plasmo's default "Context Invalidated, Press to Reload"), consolidated into a single update notification card.