---
title: Image Studio (embedded website)
---

# Image Studio (embedded website)

## What it is

Image Studio is JLS Trading Co's AI image-generation web app
(`https://jls-image-studio.web.app`). Omniscio embeds the live website as a first-class
sidebar panel so you can use the real site without leaving Omniscio.

A sidebar virtual project ("Image Studio") whose panel is an Electron
`<webview>` pointed at the live deployed site. The panel owns the whole content area
(`panelOwnsLayout` — no sessions sidebar). You sign in with your own JLS account
inside the pane; the login persists across restarts via a dedicated persistent
partition (`persist:jls-image-studio`). Because a `<webview>` is its own WebContents,
the site's `X-Frame-Options` does not block the embed (unlike a plain `<iframe>`).

This is the **human-facing** surface. It is distinct from the **Image Studio tool
service** (Settings → Accounts & Providers), which gave _AI sessions_ image-generation
tools. That service's per-session MCP launch was retired 2026-09-19 — only its API key
remains, read by the Image Studio CLI routes. The two are independent.

## Where to find it

### Enabling it

Off by default. Turn it on in **Settings → Built-in Apps → Image Studio**
(flag `jlsImageStudioAppEnabled`). When enabled, an **Image Studio** row appears in
the project sidebar; click it to open the site.

## How it behaves

### Mobile (Web Access)

The native Image Studio panel (the `image-studio-native` in-development feature) ships a
deliberate **browse-only** mobile web surface — the integration declares
`mobile: { status: 'ready' }` (the single mobile decision that also gates Web Access
visibility). On a phone you can:

- Browse your **Library**, view **My Stats**, and read your saved **Templates**, and open
  any image in the full-screen viewer (copy / download / export).

Everything that **spends or mutates is desktop-only and never reaches mobile** — generation,
delete, upscale, remove-background, and template create/edit/delete. Those image-gen IPC
channels stay blocked on the mobile/web WS bridge **and** carry a handler `assertDesktopOnly`
backstop (money-safety, double-locked). Only the safe reads (`image-gen:list` / `get` /
`stats` / `template-list`) are un-blocked so the phone can browse; on mobile the Studio tab
shows a short "generate on the desktop app" notice, and the spend/mutation controls are hidden
in browser context (`isBrowser`). WS classification is locked by
[web-access-ws-invoke-coverage-contract.md](../../.claude/memory/contracts/web-access-ws-invoke-coverage-contract.md).

### Limitations

- **Sign in with Google works via a popup.** The site uses Firebase `signInWithPopup`;
  an Electron `<webview>` opens no popup unless it opts in with the `allowpopups`
  attribute, which the panel now sets (the main-process OAuth-popup allow-list confines
  any such popup to audited sign-in domains). A Chrome user-agent is spoofed so Google
  does not reject the embedded browser, and the login persists via the dedicated
  partition. If Google's embedded-window policy still blocks the popup, use the
  email/password path the site offers.

## For agents

### Key files

- Panel: `src/renderer/src/features/jls-image-studio/JlsImageStudioPanel.tsx`
- Manifest: `src/shared/integrations/jls-image-studio-app.ts`
- Settings: `src/renderer/src/features/settings/sections/jls-image-studio-app/JlsImageStudioAppSettings.tsx`
- Flag: `jlsImageStudioAppEnabled` (`src/shared/types/settings/jls-image-studio-app-settings.ts`)
- Sidebar gate: `SIDEBAR_OPT_IN_GATES` in `src/renderer/src/stores/project-visibility.ts`
- Google sign-in (OAuth popup): `allowpopups="true"` on the panel + `src/main/webview-security.ts` (opt-in) + `src/main/oauth-popup-allowlist.ts`; contract `.claude/memory/contracts/webview-oauth-popup-contract.md`

## Related

The other thing wearing the same name — the tools that let an AI session generate images, rather than a panel you use yourself — is on the [Image Studio MCP](jls-image-studio.md) page. The native in-app studio is a third, separate surface, on [Image Studio (native panel)](image-studio-native.md).
