Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 0 additions & 65 deletions README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,71 +135,6 @@ Codex の **セッション管理 → コンテキスト編集(実験的)**
- プロバイダーのクォータとアカウント利用状態を確認。
- macOS メニューバーまたは Windows システムトレイからバックグラウンド動作を継続。

## カスタムテーマ

カスタムテーマは、アプリデータディレクトリの `themes` フォルダ内のサブフォルダ 1 つにつき 1 つです。Windows と Linux では実行ファイルと同じディレクトリ、macOS アプリでは `~/Library/Application Support/com.cpa.gui/themes` です(`.app` 以外から実行した場合は実行ファイルと同じディレクトリ)。テーマメニュー下部の **テーマフォルダを開く** でフォルダを作成して開き、**再読み込み** で再起動せずに変更を反映できます。カスタムテーマはフォルダ名順に組み込みテーマの後へ並びます。テーマセレクターはダイアログで開き、名前・説明・テーマ ID での検索、提供元(すべて・組み込み・カスタム)での絞り込み、自動モードでのライトとダークの個別選択に対応しています。

```
themes/
harbor-dark/
theme.json
assets/
icon.png
backdrop.webp
```

- 読み込むのは 1 階層のサブフォルダのみです。`themes/` 直下の JSON ファイル、`theme.json` のないフォルダ、シンボリックリンクのフォルダと `theme.json` は無視されます。
- 最大 64 個のテーマフォルダ、1 ファイル 64 KB までを読み込みます。上限を超えた数はテーマメニューに表示されます。読み込めない、JSON が不正、メタ情報が無効、id が他のテーマと重複、または未対応の `schemaVersion` を持つフォルダはスキップされ、フォルダ名と理由がテーマメニューに表示されます。

```json
{
"$schema": "./theme.schema.json",
"schemaVersion": 1,
"id": "harbor-dark",
"name": { "en": "Harbor", "zh-CN": "港湾", "ja": "ハーバー" },
"description": "Deep teal surfaces with a sea-glass accent",
"appearance": "dark",
"windowBackground": "#0E1A1F",
"windowMaterial": "translucent",
"icon": "assets/icon.png",
"assets": { "backdropImage": "assets/backdrop.webp" },
"tokens": {
"workspaceBackground": "#0E1A1F",
"surface": "#14242B",
"textPrimary": "#E6F1F2",
"border": "#2A434C",
"accent": "#6FD3C1",
"accentContrast": "#0E1A1F",
"sidebarBackground": "#0B151A",
"radiusMedium": "6px",
"controlBorderWidth": "2px",
"cardBorderWidth": "1px",
"shadowSmall": "0 1px 2px #00000014",
"windowMaterialWorkspaceOpacity": "72%",
"windowMaterialSidebarOpacity": "40%"
}
}
```

- `schemaVersion`(必須):現在は `1`。それ以外の値ではファイルをスキップします。省略時は `1` として扱います。
- `id`(必須):英小文字・数字・`-` で、先頭は英字。組み込みテーマ(`light`, `dark`, `warm-sand-light`, `graphite-dark`, `midnight-dark`, `sakura-light`)や他のカスタムテーマと重複できません。
- `name`(必須)と `description`:文字列、または `en`・`zh-CN`・`zh-TW`・`ja` をキーとするオブジェクト。
- `appearance`(必須):`light` または `dark`。テーマが表示されるグループを決めます。
- `windowBackground`(必須):`#RRGGBB`。ページ描画前にネイティブウィンドウに表示される色です。
- `windowMaterial`:`solid`(既定)または `translucent`。半透明テーマではサイドバーとワークスペースの背後にネイティブのウィンドウマテリアルが表示されます。macOS 26 以降は Liquid Glass、それ以前の macOS は vibrancy、Windows 11 は Mica、Windows 10 1809 以降は Acrylic です。Linux と古い Windows ではマテリアルがなく、不透明テーマとまったく同じ表示になるため、`windowBackground` とトークンは省略せずに指定してください。マテリアル表示中は `backdrop` は使われません。
- `backdrop`:任意のグラデーション背景。構造は組み込みのミッドナイトブルー、桜ピンクと同じです。
- `icon` と `assets`:テーマフォルダ内の相対パス(`png`、`jpg`、`jpeg`、`webp`、`svg`、`avif`)を予約します。絶対パス、`..`、URL、バックスラッシュは使用できません。無効な項目は破棄されます。現在のバージョンは検証して保持するだけで、これらのファイルはまだ表示しません。
- `tokens`(必須、空オブジェクト可):外観トークンのみです。色は `#RRGGBB` または `#RRGGBBAA`、不透明度は `"0%"` から `"100%"`、角丸は `0px` から `24px`(`radiusFull` は最大 `9999px`)、枠線の太さは `0px` から `4px`、影は `none` またはカンマ区切りの `[inset] x y [blur] [spread] color` です。未知のキーと不正な値は項目ごとに破棄され、テーマの残りは読み込まれ、無視されたフィールドがテーマメニューに表示されます。コントロールのサイズ、余白、レイアウト、タイポグラフィは対象外です。`spacing`、`fontFamily`、ボタンの高さなどは無視されます。
- `$schema` は記述可能で無視されます。それ以外のトップレベルフィールドがあるとファイルは無効になります。

これらのトークンは共通コントロールとサーフェスに反映されます:ボタン、スイッチ、入力欄とセレクト、タブ、ダイアログとポップオーバー、カード・パネル・セクション、サイドバー、スクリムです。

利用できる token キー:`workspaceBackground`, `surface`, `softSurface`, `hoverBackground`, `textPrimary`, `textSecondary`, `textTertiary`, `textMuted`, `border`, `borderSubtle`, `borderStrong`, `borderHover`, `panelShadow`, `accent`, `accentStrong`, `accentSoft`, `accentContrast`, `accentShadow`, `primaryButtonBackground`, `primaryButtonHoverBackground`, `primaryButtonText`, `primaryButtonBorder`, `primaryButtonHoverBorder`, `controlActiveBackground`, `controlActiveThumb`, `focusRing`, `meterLow`, `meterMedium`, `meterHigh`, `sidebarBackground`, `sidebarText`, `sidebarTextStrong`, `sidebarTextMuted`, `sidebarBorder`, `sidebarHover`, `sidebarSelected`, `sidebarSelectedBorder`, `sidebarSelectedShadow`, `popoverBackground`, `overlaySoftSurface`, `overlayHoverBackground`, `scrim`, `controlThumb`, `radiusSmall`, `radiusMedium`, `radiusLarge`, `radiusFull`, `controlBorderWidth`, `cardBorderWidth`, `shadowExtraSmall`, `shadowSmall`, `shadowMedium`, `shadowLarge`, `shadowPopover`, `shadowDialog`, `shadowSpotlight`, `windowMaterialWorkspaceOpacity`, `windowMaterialSidebarOpacity`。リポジトリの `theme.schema.json` は同じ token 定義から生成され、テーマファイルから参照できます。

検索欄は角丸の枠とコントロール全体のフォーカス表示を共有します。ネイティブ選択欄は閉じた状態の外観を統一し、システムの選択メニューを維持します。

リクエスト成功率、認証情報の利用可能率、残りのクォータは、低・中・高の連続した配色を共有します。`tokens` の `meterLow`、`meterMedium`、`meterHigh` で変更でき、不明な値はゼロと区別されます。OAuth、使用履歴、高度な機能は、文字のみの横方向の下線付きタブと共通の余白を使用します。その他の少数のサブページにはセグメント型ナビゲーションを使います。

## クイックスタート

1. [GitHub Releases](https://github.com/router-for-me/EasyCLIProxyAPI/releases/latest)
Expand Down
65 changes: 0 additions & 65 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,71 +153,6 @@ Manually renamed files without a session ID in their filename or a database path
- Review provider quotas and account availability.
- Keep the application available from the macOS menu bar or Windows system tray.

## Custom Themes

Each custom theme is a folder inside the `themes` folder of the application data directory: next to the executable on Windows and Linux, and `~/Library/Application Support/com.cpa.gui/themes` for the macOS app (next to the executable when run outside the `.app` bundle). The **Open themes folder** button at the bottom of the theme picker creates and opens it; **Reload** applies changes without restarting. Custom themes appear after the built-in themes in folder-name order. The theme picker opens in a dialog where you can search by name, description or theme ID, filter by source (all, built-in or custom), and pick separate light and dark themes while the mode is set to Auto.

```
themes/
harbor-dark/
theme.json
assets/
icon.png
backdrop.webp
```

- Only one level of folders is read. JSON files directly in `themes/`, folders without `theme.json`, symlinked folders and a symlinked `theme.json` are ignored.
- Up to 64 theme folders of at most 64 KB each are read; folders beyond the limit are reported in the picker. A folder that cannot be read, contains invalid JSON, has invalid metadata, reuses another theme's id or declares an unsupported `schemaVersion` is skipped, and the picker shows its name and the reason.

```json
{
"$schema": "./theme.schema.json",
"schemaVersion": 1,
"id": "harbor-dark",
"name": { "en": "Harbor", "zh-CN": "港湾", "ja": "ハーバー" },
"description": "Deep teal surfaces with a sea-glass accent",
"appearance": "dark",
"windowBackground": "#0E1A1F",
"windowMaterial": "translucent",
"icon": "assets/icon.png",
"assets": { "backdropImage": "assets/backdrop.webp" },
"tokens": {
"workspaceBackground": "#0E1A1F",
"surface": "#14242B",
"textPrimary": "#E6F1F2",
"border": "#2A434C",
"accent": "#6FD3C1",
"accentContrast": "#0E1A1F",
"sidebarBackground": "#0B151A",
"radiusMedium": "6px",
"controlBorderWidth": "2px",
"cardBorderWidth": "1px",
"shadowSmall": "0 1px 2px #00000014",
"windowMaterialWorkspaceOpacity": "72%",
"windowMaterialSidebarOpacity": "40%"
}
}
```

- `schemaVersion` (required): currently `1`. Any other value skips the file; a missing value is treated as `1`.
- `id` (required): lowercase letters, digits and `-`, starting with a letter. It must not reuse a built-in ID (`light`, `dark`, `warm-sand-light`, `graphite-dark`, `midnight-dark`, `sakura-light`) or another custom theme's ID.
- `name` (required) and `description`: a string or an object keyed by `en`, `zh-CN`, `zh-TW` and `ja`.
- `appearance` (required): `light` or `dark`; the theme is listed in that group.
- `windowBackground` (required): `#RRGGBB`, the native window color shown before the page paints.
- `windowMaterial`: `solid` (default) or `translucent`. A translucent theme shows the native window material behind the sidebar and workspace: Liquid Glass on macOS 26 and later, vibrancy on earlier macOS, Mica on Windows 11 and Acrylic on Windows 10 1809 and later. Linux and older Windows versions have no material and render the theme exactly like a solid one, so keep `windowBackground` and the tokens complete. While a material is shown it replaces `backdrop`.
- `backdrop`: optional gradient background with the same structure as the built-in Midnight Blue and Sakura Blush themes.
- `icon` and `assets`: reserved relative paths inside the theme folder (`png`, `jpg`, `jpeg`, `webp`, `svg`, `avif`). They must not be absolute, contain `..`, be URLs or use backslashes. An invalid entry is dropped. The current version validates and keeps them but does not display these files yet.
- `tokens` (required, may be empty): appearance tokens only. Colors accept `#RRGGBB` or `#RRGGBBAA`; opacities accept `"0%"` to `"100%"`; corner radii accept `0px` to `24px` (`radiusFull` up to `9999px`); border widths accept `0px` to `4px`; shadows accept `none` or comma-separated `[inset] x y [blur] [spread] color`. Unknown keys and invalid values are dropped individually, the rest of the theme still loads, and the picker lists each ignored field. Control sizes, spacing, layout and typography cannot be themed: keys such as `spacing`, `fontFamily` or button heights are ignored.
- `$schema` is allowed and ignored; any other top-level field makes the file invalid.

The tokens drive the shared controls and surfaces: buttons, switches, inputs and selects, tabs, dialogs and popovers, cards, panels and sections, the sidebar and the window scrim.

Available token keys: `workspaceBackground`, `surface`, `softSurface`, `hoverBackground`, `textPrimary`, `textSecondary`, `textTertiary`, `textMuted`, `border`, `borderSubtle`, `borderStrong`, `borderHover`, `panelShadow`, `accent`, `accentStrong`, `accentSoft`, `accentContrast`, `accentShadow`, `primaryButtonBackground`, `primaryButtonHoverBackground`, `primaryButtonText`, `primaryButtonBorder`, `primaryButtonHoverBorder`, `controlActiveBackground`, `controlActiveThumb`, `focusRing`, `meterLow`, `meterMedium`, `meterHigh`, `sidebarBackground`, `sidebarText`, `sidebarTextStrong`, `sidebarTextMuted`, `sidebarBorder`, `sidebarHover`, `sidebarSelected`, `sidebarSelectedBorder`, `sidebarSelectedShadow`, `popoverBackground`, `overlaySoftSurface`, `overlayHoverBackground`, `scrim`, `controlThumb`, `radiusSmall`, `radiusMedium`, `radiusLarge`, `radiusFull`, `controlBorderWidth`, `cardBorderWidth`, `shadowExtraSmall`, `shadowSmall`, `shadowMedium`, `shadowLarge`, `shadowPopover`, `shadowDialog`, `shadowSpotlight`, `windowMaterialWorkspaceOpacity`, `windowMaterialSidebarOpacity`. `theme.schema.json` in the repository is generated from the same token definitions and can be referenced from a theme file.

Search fields share rounded frames and a single focus indicator around the complete control. Native selects use matching closed surfaces while retaining system option menus.

Percentage meters for request success, credential availability, and remaining quota share a continuous low–medium–high color scale. Customize it with `meterLow`, `meterMedium`, and `meterHigh` in `tokens`; unknown values stay distinct from zero. OAuth, Usage, and Advanced Features share text-only horizontal underline tabs with matching spacing; other small secondary navigation groups use segmented controls.

## Quick Start

1. Download the package for your operating system from
Expand Down
Loading
Loading