> ## Documentation Index
> Fetch the complete documentation index at: https://ophel.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Frequently asked questions about Ophel Atlas extension

> Answers to common questions about installing Ophel Atlas, using the panel, outline, conversations, prompts, Claude session keys, permissions, and privacy.

export const ShortcutLegend = ({lang = "en"}) => {
  const isZh = lang === "zh";
  return <div className="ophel-shortcut-legend" role="note">
      <div className="ophel-shortcut-legend-title">
        {isZh ? "跨平台按键说明" : "Cross-platform key mapping"}
      </div>
      <div className="ophel-shortcut-legend-body">
        {isZh ? <>
            文档中的快捷键会同时显示 Windows/Linux 与 Mac 写法：
            <code>Ctrl</code> 对应 <code>Command</code>，
            <code>Alt</code> 对应 <code>Option</code>。唯一例外是提示词发送，
            <code>Ctrl+Enter</code> 在 Mac 上也使用 <code>Ctrl+Enter</code>。
          </> : <>
            Shortcuts show both Windows/Linux and Mac keys: <code>Ctrl</code> maps
            to <code>Command</code>, and <code>Alt</code> maps to
            <code>Option</code>. Prompt submit is the only exception:
            <code>Ctrl+Enter</code> remains <code>Ctrl+Enter</code> on Mac.
          </>}
      </div>
    </div>;
};

export const Shortcut = ({combo, mac, sameOnMac = false}) => {
  const keyLabels = {
    arrowup: {
      win: "Up",
      mac: "↑"
    },
    arrowdown: {
      win: "Down",
      mac: "↓"
    },
    arrowleft: {
      win: "Left",
      mac: "←"
    },
    arrowright: {
      win: "Right",
      mac: "→"
    },
    up: {
      win: "Up",
      mac: "↑"
    },
    down: {
      win: "Down",
      mac: "↓"
    },
    left: {
      win: "Left",
      mac: "←"
    },
    right: {
      win: "Right",
      mac: "→"
    },
    esc: {
      win: "Esc",
      mac: "Esc"
    },
    escape: {
      win: "Esc",
      mac: "Esc"
    },
    enter: {
      win: "Enter",
      mac: "Enter"
    },
    shift: {
      win: "Shift",
      mac: "⇧"
    },
    backslash: {
      win: "\\",
      mac: "\\"
    }
  };
  const modifierLabels = {
    ctrl: {
      win: "Ctrl",
      mac: "⌘"
    },
    control: {
      win: "Ctrl",
      mac: "⌘"
    },
    cmd: {
      win: "Ctrl",
      mac: "⌘"
    },
    command: {
      win: "Ctrl",
      mac: "⌘"
    },
    alt: {
      win: "Alt",
      mac: "⌥"
    },
    option: {
      win: "Alt",
      mac: "⌥"
    },
    shift: {
      win: "Shift",
      mac: "⇧"
    }
  };
  const normalizeToken = token => String(token || "").trim();
  const formatKey = (token, platform) => {
    const normalized = normalizeToken(token);
    const key = normalized.toLowerCase();
    const mapped = keyLabels[key];
    if (mapped) return mapped[platform];
    if (normalized.length === 1) return normalized.toUpperCase();
    return normalized;
  };
  const formatCombo = (value, platform) => String(value || "").split("+").map(normalizeToken).filter(Boolean).map(token => {
    const mapped = modifierLabels[token.toLowerCase()];
    return mapped ? mapped[platform] : formatKey(token, platform);
  }).join(platform === "mac" ? "" : "+");
  const windowsLabel = formatCombo(combo, "win");
  const macLabel = sameOnMac ? windowsLabel : mac || formatCombo(combo, "mac");
  const title = windowsLabel === macLabel ? windowsLabel : `Windows/Linux: ${windowsLabel}; Mac: ${macLabel}`;
  return <span className="ophel-shortcut" title={title}>
      <code>{windowsLabel}</code>
      {windowsLabel !== macLabel && <>
          <span className="ophel-shortcut-separator"> / </span>
          <code>{macLabel}</code>
        </>}
    </span>;
};

export const Icon = ({src, alt}) => <img src={typeof window !== "undefined" && typeof src === "string" && src.startsWith("/images/icons/") && (window.location.pathname === "/docs" || window.location.pathname.startsWith("/docs/")) ? `/docs${src}` : src} alt={alt} width="18" height="18" style={{
  display: "inline-block",
  verticalAlign: "-0.2em",
  margin: "0 0.15em"
}} />;

This page answers the most common questions about Ophel Atlas. If you don't find what you're looking for here, check the [Troubleshooting](/docs/troubleshooting) page or open an issue on [GitHub Issues](https://github.com/urzeye/ophel/issues).

## Installation & Setup

<AccordionGroup>
  <Accordion title="Which AI platforms does Ophel support?" icon="robot">
    Ophel works on 15 AI platforms:

    | Platform              | URL                                                      |
    | --------------------- | -------------------------------------------------------- |
    | **Gemini**            | [gemini.google.com](https://gemini.google.com)           |
    | **Gemini Enterprise** | [business.gemini.google](https://business.gemini.google) |
    | **AI Studio**         | [aistudio.google.com](https://aistudio.google.com)       |
    | **ChatGPT**           | [chatgpt.com](https://chatgpt.com)                       |
    | **Claude**            | [claude.ai](https://claude.ai)                           |
    | **Grok**              | [grok.com](https://grok.com)                             |
    | **DeepSeek**          | [chat.deepseek.com](https://chat.deepseek.com)           |
    | **Doubao**            | [www.doubao.com](https://www.doubao.com)                 |
    | **Kimi**              | [www.kimi.com](https://www.kimi.com)                     |
    | **Qwen Studio**       | [chat.qwen.ai](https://chat.qwen.ai)                     |
    | **Qianwen**           | [www.qianwen.com](https://www.qianwen.com)               |
    | **Yuanbao**           | [yuanbao.tencent.com](https://yuanbao.tencent.com)       |
    | **Z.ai**              | [chat.z.ai](https://chat.z.ai)                           |
    | **ChatGLM**           | [chatglm.cn](https://chatglm.cn)                         |
    | **ima**               | [ima.qq.com](https://ima.qq.com)                         |
  </Accordion>

  <Accordion title="How do I enable the extension after installing it?" icon="puzzle-piece">
    After installing, open any supported AI platform in your browser. The Ophel panel should appear automatically in the sidebar. If it doesn't, check that the extension is enabled in your browser toolbar (click the puzzle-piece icon and confirm Ophel is toggled on), then hard-reload the page with <Shortcut combo="ctrl+shift+r" />.

    Some URLs require you to explicitly grant Ophel permission to run. If you see a "Click to enable" prompt in the extension popup, click it and allow access to the current site.
  </Accordion>

  <Accordion title="What's the difference between the browser extension and the userscript?" icon="layer-group">
    The **browser extension** (available for Chrome, Edge, and Firefox) is the recommended option. It has the full feature set, better performance, and higher compatibility because it integrates directly with the browser.

    The **userscript** runs inside a userscript manager like Tampermonkey and does not require a browser extension install. It is a good fallback if you cannot install extensions, but some features may be limited compared to the extension version.
  </Accordion>
</AccordionGroup>

## Panel & Navigation

<AccordionGroup>
  <Accordion title="Why isn't the panel showing on the page?" icon="table-columns">
    Work through these steps in order:

    1. Confirm the extension is installed and enabled — check the browser toolbar for the Ophel icon.
    2. Hard-reload the page: <Shortcut combo="ctrl+shift+r" />.
    3. Check that the site you're on is in the [supported platforms list](#which-ai-platforms-does-ophel-support).
    4. If you previously closed the panel, press <Icon src="/docs/images/icons/keyboard.svg" alt="Keyboard shortcut icon" /> <Shortcut combo="alt+p" /> to reopen it, or click the <Icon src="/docs/images/icons/sparkle.svg" alt="Panel quick button icon" /> panel button in the floating quick buttons group.
  </Accordion>

  <Accordion title="How do I open the panel if the floating buttons have disappeared?" icon="circle-question">
    Press <Icon src="/docs/images/icons/keyboard.svg" alt="Keyboard shortcut icon" /> <Shortcut combo="alt+p" />. This keyboard shortcut toggles the panel
    regardless of whether the floating buttons are visible on screen.
  </Accordion>

  <Accordion title="How do I use ghost mode?" icon="arrow-pointer">
    Ghost mode makes the panel temporarily transparent and click-through so you
    can interact with the page behind it. Hold <Shortcut combo="ctrl" /> alone
    for about 0.2 seconds. The panel fades out and lets
    clicks pass through. Release the key to return to normal.
  </Accordion>

  <Accordion title="What is edge snap, and how do I use it?" icon="thumbtack">
    Edge snap lets the panel hide against the screen edge and slide out when you need it. Drag the panel toward a screen edge until it snaps into place. To reveal it, hover over that edge — the panel slides out automatically. To undock it, drag it away from the edge.

    If you prefer to keep the panel floating freely, you can disable edge snap entirely in **Settings → General → Panel**.
  </Accordion>
</AccordionGroup>

## Outline

<AccordionGroup>
  <Accordion title="Why is the outline empty even though the conversation has content?" icon="list-tree">
    Some AI platforms update the DOM asynchronously, so the outline may not populate immediately when the page first loads. Press <Shortcut combo="alt+r" /> to refresh the outline manually. If the outline stays empty after a refresh, check that **Auto update** is enabled in **Settings → Features → Outline**.
  </Accordion>

  <Accordion title="Why isn't the outline tracking my scroll position?" icon="arrows-up-down">
    The scroll-tracking feature is controlled by a setting. Go to **Settings →
    Features → Outline** and make sure **Sync outline with scroll** (Follow mode)
    is set to `current` rather than `manual`.
  </Accordion>

  <Accordion title="How do I refresh the outline manually?" icon="rotate">
    Press <Icon src="/docs/images/icons/refresh.svg" alt="Refresh outline icon" /> <Shortcut combo="alt+r" /> at any time to force the outline to re-scan the conversation and rebuild its entries.
  </Accordion>
</AccordionGroup>

## Conversations

<AccordionGroup>
  <Accordion title="Why aren't my conversations showing in the Conversations tab?" icon="folder-open">
    The Conversations tab reads from the AI platform's own sidebar. If the platform's sidebar hasn't fully loaded, Ophel cannot see the conversations. Try scrolling the native sidebar on the AI platform to trigger it to load more items, then check the Conversations tab again.
  </Accordion>

  <Accordion title="What does WebDAV sync actually back up?" icon="cloud">
    WebDAV sync backs up Ophel data stored locally: conversation titles, folder assignments, tags, pins, saved prompts, settings, and Claude Session Keys if you use the Claude multi-account feature. It does **not** upload the actual conversation messages — those belong to the AI platform and stay there.
  </Accordion>
</AccordionGroup>

## Prompts & Queue

<AccordionGroup>
  <Accordion title="How does the Prompt Queue work?" icon="list-ol">
    The Prompt Queue lets you line up multiple prompts and send them automatically one by one without waiting manually after each AI response. To use it:

    1. Enable the queue in <Icon src="/docs/images/icons/settings.svg" alt="Settings icon" /> **Settings → Features → Prompts → Prompt Queue**.
    2. Open the queue overlay with <Icon src="/docs/images/icons/keyboard.svg" alt="Keyboard shortcut icon" /> <Shortcut combo="alt+j" />.
    3. Add prompts one by one, or use the batch-import option to paste and split a large block of text.
    4. After you add pending prompts, Ophel automatically sends the next one once it detects the AI has finished responding (no active generation for two consecutive checks, roughly 2 seconds).

    You can edit pending items, force-send a single item, remove individual items, or clear the queue at any time.
  </Accordion>

  <Accordion title="The queue isn't sending the next prompt — why?" icon="hourglass">
    Ophel waits until the AI page appears idle (no generation spinner detected) for two consecutive polling intervals, which takes about 2 seconds. If the AI platform uses an unusual loading indicator that Ophel cannot detect, the queue may stall indefinitely. As a workaround, open the queue overlay with <Icon src="/docs/images/icons/keyboard.svg" alt="Keyboard shortcut icon" /> <Shortcut combo="alt+j" /> and use **Force Send** on a pending item.
  </Accordion>
</AccordionGroup>

## Claude

<AccordionGroup>
  <Accordion title="What are Session Keys?" icon="key">
    A Claude session key is an authentication token from your active browser session on claude.ai. By adding multiple session keys (from different Claude accounts), you can rotate between accounts when one hits its usage limit. Ophel intercepts outgoing requests to claude.ai and swaps in the active session key automatically.
  </Accordion>

  <Accordion title="Is it safe to store session keys in Ophel?" icon="shield-halved">
    Session keys are stored locally in your browser on your own machine. Ophel does not upload them to Ophel servers. If you use full backup or WebDAV backup, be careful about who has access to your backup files — they can contain valid authentication tokens.
  </Accordion>
</AccordionGroup>

## Permissions

<AccordionGroup>
  <Accordion title="Why does Ophel ask for the all_urls permission?" icon="globe">
    The `<all_urls>` permission is required for two optional features: **WebDAV sync** (to connect to your own WebDAV server at any URL) and **watermark removal** (to fetch and convert images). This permission is entirely optional — if you don't use either feature, you can deny or revoke it. Go to **Settings → Permissions** and click **Revoke** next to it.
  </Accordion>

  <Accordion title="Can I revoke permissions after granting them?" icon="shield-check">
    Yes. Go to **Settings → Permissions** and click **Revoke** next to any permission you want to remove. Revoking a permission disables the feature that depends on it, but everything else in Ophel continues to work normally.
  </Accordion>
</AccordionGroup>

## Privacy

<AccordionGroup>
  <Accordion title="Does Ophel send my conversation data anywhere?" icon="lock">
    No. Ophel runs entirely in your browser. Your conversation data, prompts,
    and settings stay on your device by default. If you configure WebDAV sync,
    data is sent only to the WebDAV server you specify — which you control.
    Ophel itself does not collect or transmit any user data.
  </Accordion>
</AccordionGroup>

## General

<AccordionGroup>
  <Accordion title="How do I reset everything to defaults?" icon="rotate-left">
    Go to **Settings → Backup & Sync** and click **Clear all data**. This
    removes all Ophel data stored in your browser, including saved prompts,
    conversation metadata, folder and tag definitions, and all settings. The AI
    platform's own conversation history is not affected.
  </Accordion>
</AccordionGroup>
