From dfa1ae75d463285ad5367308ab6924660b57fc78 Mon Sep 17 00:00:00 2001 From: Spin-Particle Date: Mon, 6 Apr 2026 11:36:52 +0800 Subject: [PATCH 1/3] docs: rebrand user-facing copy to Aether --- README.md | 15 ++++---- README.zh.md | 17 +++++---- README.zht.md | 26 ++++++------- packages/app/README.md | 2 +- .../components/dialog-connect-provider.tsx | 14 +++++-- packages/app/src/i18n/ar.ts | 36 +++++++++--------- packages/app/src/i18n/br.ts | 36 +++++++++--------- packages/app/src/i18n/bs.ts | 36 +++++++++--------- packages/app/src/i18n/da.ts | 36 +++++++++--------- packages/app/src/i18n/de.ts | 36 +++++++++--------- packages/app/src/i18n/en.ts | 2 +- packages/app/src/i18n/es.ts | 36 +++++++++--------- packages/app/src/i18n/fr.ts | 36 +++++++++--------- packages/app/src/i18n/ja.ts | 36 +++++++++--------- packages/app/src/i18n/ko.ts | 36 +++++++++--------- packages/app/src/i18n/no.ts | 36 +++++++++--------- packages/app/src/i18n/pl.ts | 36 +++++++++--------- packages/app/src/i18n/ru.ts | 36 +++++++++--------- packages/app/src/i18n/th.ts | 36 +++++++++--------- packages/app/src/i18n/tr.ts | 36 +++++++++--------- packages/app/src/i18n/zh.ts | 38 +++++++++---------- packages/app/src/i18n/zht.ts | 36 +++++++++--------- packages/desktop-electron/README.md | 4 +- packages/opencode/src/acp/README.md | 22 +++++------ packages/slack/README.md | 6 +-- packages/web/src/content/i18n/ar.json | 18 ++++----- packages/web/src/content/i18n/bs.json | 18 ++++----- packages/web/src/content/i18n/da.json | 18 ++++----- packages/web/src/content/i18n/de.json | 18 ++++----- packages/web/src/content/i18n/en.json | 18 ++++----- packages/web/src/content/i18n/es.json | 18 ++++----- packages/web/src/content/i18n/fr.json | 18 ++++----- packages/web/src/content/i18n/it.json | 18 ++++----- packages/web/src/content/i18n/ja.json | 18 ++++----- packages/web/src/content/i18n/ko.json | 18 ++++----- packages/web/src/content/i18n/nb.json | 18 ++++----- packages/web/src/content/i18n/pl.json | 18 ++++----- packages/web/src/content/i18n/pt-BR.json | 18 ++++----- packages/web/src/content/i18n/ru.json | 18 ++++----- packages/web/src/content/i18n/th.json | 18 ++++----- packages/web/src/content/i18n/tr.json | 18 ++++----- packages/web/src/content/i18n/zh-TW.json | 18 ++++----- sdks/vscode/README.md | 14 +++---- sdks/vscode/package.json | 14 +++---- 44 files changed, 514 insertions(+), 506 deletions(-) diff --git a/README.md b/README.md index 3679c30021eb..500f28afc12f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

Aether

Autonomous Engine for Theoretical & Hands-on Exploration in Research

-

An AI researching assistant for researchers, built on OpenCode.

+

An AI researching assistant for researchers, tailored for research-heavy workflows.

English | @@ -11,7 +11,7 @@ ## Overview -Aether extends OpenCode with research-focused improvements, supporting terminal, browser, and desktop interfaces. Key improvements over upstream: +Aether is a research-focused AI assistant for terminal, browser, and desktop workflows. Key strengths include: - **Ready to use**: Download and double-click to launch — no dev environment setup required; built-in default model settings so you can start immediately - **Built-in research Skills**: Pre-configured prompts for literature review, experiment logging, paper writing, and more — no manual prompt engineering needed @@ -59,11 +59,11 @@ If the browser doesn't open automatically, visit the URL shown in the terminal. Extract (or install) and double-click to run: -| Platform | File | -|---|---| -| Linux | `aether-linux-x64.AppImage` / `.deb` / `.rpm` | -| macOS | `aether-mac-arm64.dmg` (Apple Silicon) / `aether-mac-x64.dmg` | -| Windows | `aether-win-x64.exe` installer / `win-unpacked/` portable | +| Platform | File | +| -------- | ------------------------------------------------------------- | +| Linux | `aether-linux-x64.AppImage` / `.deb` / `.rpm` | +| macOS | `aether-mac-arm64.dmg` (Apple Silicon) / `aether-mac-x64.dmg` | +| Windows | `aether-win-x64.exe` installer / `win-unpacked/` portable | --- @@ -90,6 +90,7 @@ bun dev ``` Two built-in agents, switch with `Tab`: + - **build**: Default mode with full permissions, for active development - **plan**: Read-only mode for code analysis and planning diff --git a/README.zh.md b/README.zh.md index eef132095e67..3600399c4da2 100644 --- a/README.zh.md +++ b/README.zh.md @@ -1,6 +1,6 @@

Aether(以太)

Autonomous Engine for Theoretical & Hands-on Exploration in Research

-

面向科研人员的 AI 研究助手,基于 OpenCode 深度定制。

+

面向科研人员的 AI 研究助手,专为高强度科研工作流设计。

English | @@ -11,7 +11,7 @@ ## 项目简介 -Aether 在 OpenCode 基础上针对研究场景做了大量改进,支持终端、浏览器和桌面三种使用方式。相比上游的主要改进: +Aether 面向研究场景进行了深度优化,支持终端、浏览器和桌面三种使用方式。主要特点包括: - **开箱即用**:下载安装包双击即可启动,无需配置开发环境;内置默认模型设置,首次打开可直接使用 - **内置科研 Skills**:预置文献阅读、实验记录、论文写作等科研场景提示词,无需手动编写 Prompt @@ -59,11 +59,11 @@ chmod +x aether # 首次需要 解压(或安装)后直接双击运行: -| 平台 | 文件 | -|---|---| -| Linux | `aether-linux-x64.AppImage` / `.deb` / `.rpm` | -| macOS | `aether-mac-arm64.dmg`(Apple Silicon)/ `aether-mac-x64.dmg` | -| Windows | `aether-win-x64.exe` 安装程序 / `win-unpacked/` 便携版 | +| 平台 | 文件 | +| ------- | ------------------------------------------------------------- | +| Linux | `aether-linux-x64.AppImage` / `.deb` / `.rpm` | +| macOS | `aether-mac-arm64.dmg`(Apple Silicon)/ `aether-mac-x64.dmg` | +| Windows | `aether-win-x64.exe` 安装程序 / `win-unpacked/` 便携版 | --- @@ -89,6 +89,7 @@ bun dev ``` 内置两种 Agent,`Tab` 键切换: + - **build**:默认模式,具备完整权限,适合开发 - **plan**:只读模式,适合代码分析与规划 @@ -152,4 +153,4 @@ source ~/.bashrc **浏览器未自动打开**:手动访问终端中显示的 URL(依赖 `xdg-open`)。 **提示找不到前端资源**:确认 `aether` 二进制和 `web/` 目录在同一目录下。 -**加入我们的社区** [飞书](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=738j8655-cd59-4633-a30a-1124e0096789&qr_code=true) | [X.com](https://x.com/opencode) +**加入我们的社区** [飞书](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=738j8655-cd59-4633-a30a-1124e0096789&qr_code=true) | [X.com](https://x.com/Aether) diff --git a/README.zht.md b/README.zht.md index 7ef51d8fdda1..3b18c47dd61d 100644 --- a/README.zht.md +++ b/README.zht.md @@ -3,7 +3,7 @@ - OpenCode logo + Aether logo

@@ -39,7 +39,7 @@ Tiếng Việt

-[![OpenCode Terminal UI](packages/web/src/assets/lander/screenshot.png)](https://opencode.ai) +[![Aether Terminal UI](packages/web/src/assets/lander/screenshot.png)](https://opencode.ai) --- @@ -66,7 +66,7 @@ nix run nixpkgs#opencode # 或使用 github:anomalyco/opencode 以取 ### 桌面應用程式 (BETA) -OpenCode 也提供桌面版應用程式。您可以直接從 [發佈頁面 (releases page)](https://github.com/anomalyco/opencode/releases) 或 [opencode.ai/download](https://opencode.ai/download) 下載。 +Aether 也提供桌面版應用程式。您可以直接從 [發佈頁面 (releases page)](https://github.com/anomalyco/opencode/releases) 或 [opencode.ai/download](https://opencode.ai/download) 下載。 | 平台 | 下載連結 | | --------------------- | ------------------------------------- | @@ -99,7 +99,7 @@ XDG_BIN_DIR=$HOME/.local/bin curl -fsSL https://opencode.ai/install | bash ### Agents -OpenCode 內建了兩種 Agent,您可以使用 `Tab` 鍵快速切換。 +Aether 內建了兩種 Agent,您可以使用 `Tab` 鍵快速切換。 - **build** - 預設模式,具備完整權限的 Agent,適用於開發工作。 - **plan** - 唯讀模式,適用於程式碼分析與探索。 @@ -107,21 +107,21 @@ OpenCode 內建了兩種 Agent,您可以使用 `Tab` 鍵快速切換。 - 執行 bash 指令前會詢問權限。 - 非常適合用來探索陌生的程式碼庫或規劃變更。 -此外,OpenCode 還包含一個 **general** 子 Agent,用於處理複雜搜尋與多步驟任務。此 Agent 供系統內部使用,亦可透過在訊息中輸入 `@general` 來呼叫。 +此外,Aether 還包含一個 **general** 子 Agent,用於處理複雜搜尋與多步驟任務。此 Agent 供系統內部使用,亦可透過在訊息中輸入 `@general` 來呼叫。 了解更多關於 [Agents](https://opencode.ai/docs/agents) 的資訊。 ### 線上文件 -關於如何設定 OpenCode 的詳細資訊,請參閱我們的 [**官方文件**](https://opencode.ai/docs)。 +關於如何設定 Aether 的詳細資訊,請參閱我們的 [**官方文件**](https://opencode.ai/docs)。 ### 參與貢獻 -如果您有興趣參與 OpenCode 的開發,請在提交 Pull Request 前先閱讀我們的 [貢獻指南 (Contributing Docs)](./CONTRIBUTING.md)。 +如果您有興趣參與 Aether 的開發,請在提交 Pull Request 前先閱讀我們的 [貢獻指南 (Contributing Docs)](./CONTRIBUTING.md)。 -### 基於 OpenCode 進行開發 +### 基於 Aether 進行開發 -如果您正在開發與 OpenCode 相關的專案,並在名稱中使用了 "opencode"(例如 "opencode-dashboard" 或 "opencode-mobile"),請在您的 README 中加入聲明,說明該專案並非由 OpenCode 團隊開發,且與我們沒有任何隸屬關係。 +如果您正在開發與 Aether 相關的專案,並在名稱中使用了 "opencode"(例如 "opencode-dashboard" 或 "opencode-mobile"),請在您的 README 中加入聲明,說明該專案並非由 Aether 團隊開發,且與我們沒有任何隸屬關係。 ### 常見問題 (FAQ) @@ -130,11 +130,11 @@ OpenCode 內建了兩種 Agent,您可以使用 `Tab` 鍵快速切換。 在功能面上與 Claude Code 非常相似。以下是關鍵差異: - 100% 開源。 -- 不綁定特定的服務提供商。雖然我們推薦使用透過 [OpenCode Zen](https://opencode.ai/zen) 提供的模型,但 OpenCode 也可搭配 Claude, OpenAI, Google 甚至本地模型使用。隨著模型不斷演進,彼此間的差距會縮小且價格會下降,因此具備「不限廠商 (provider-agnostic)」的特性至關重要。 +- 不綁定特定的服務提供商。雖然我們推薦使用透過 [Aether Zen](https://opencode.ai/zen) 提供的模型,但 Aether 也可搭配 Claude, OpenAI, Google 甚至本地模型使用。隨著模型不斷演進,彼此間的差距會縮小且價格會下降,因此具備「不限廠商 (provider-agnostic)」的特性至關重要。 - 內建 LSP (語言伺服器協定) 支援。 -- 專注於終端機介面 (TUI)。OpenCode 由 Neovim 愛好者與 [terminal.shop](https://terminal.shop) 的創作者打造。我們將不斷挑戰終端機介面的極限。 -- 客戶端/伺服器架構 (Client/Server Architecture)。這讓 OpenCode 能夠在您的電腦上運行的同時,由行動裝置進行遠端操控。這意味著 TUI 前端只是眾多可能的客戶端之一。 +- 專注於終端機介面 (TUI)。Aether 由 Neovim 愛好者與 [terminal.shop](https://terminal.shop) 的創作者打造。我們將不斷挑戰終端機介面的極限。 +- 客戶端/伺服器架構 (Client/Server Architecture)。這讓 Aether 能夠在您的電腦上運行的同時,由行動裝置進行遠端操控。這意味著 TUI 前端只是眾多可能的客戶端之一。 --- -**加入我們的社群** [飞书](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=738j8655-cd59-4633-a30a-1124e0096789&qr_code=true) | [X.com](https://x.com/opencode) +**加入我們的社群** [飞书](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=738j8655-cd59-4633-a30a-1124e0096789&qr_code=true) | [X.com](https://x.com/Aether) diff --git a/packages/app/README.md b/packages/app/README.md index 54d1b2861b62..490cf3cecd6c 100644 --- a/packages/app/README.md +++ b/packages/app/README.md @@ -31,7 +31,7 @@ Your app is ready to be deployed! ## E2E Testing -Playwright starts the Vite dev server automatically via `webServer`, and UI tests need an opencode backend (defaults to `localhost:4096`). +Playwright starts the Vite dev server automatically via `webServer`, and UI tests need an Aether backend (defaults to `localhost:4096`). Use the local runner to create a temp sandbox, seed data, and run the tests. ```bash diff --git a/packages/app/src/components/dialog-connect-provider.tsx b/packages/app/src/components/dialog-connect-provider.tsx index 257f38a88ed2..eabb8c2dc0a2 100644 --- a/packages/app/src/components/dialog-connect-provider.tsx +++ b/packages/app/src/components/dialog-connect-provider.tsx @@ -450,7 +450,7 @@ export function DialogConnectProvider(props: { provider: string }) {
{language.t("provider.connect.opencodeZen.line2")}
{language.t("provider.connect.opencodeZen.visit.prefix")} - + {language.t("provider.connect.opencodeZen.visit.link")} {language.t("provider.connect.opencodeZen.visit.suffix")} @@ -463,7 +463,7 @@ export function DialogConnectProvider(props: { provider: string }) {
-
ref = el} onSubmit={handleSubmit} class="flex flex-col items-start gap-4"> + (ref = el)} onSubmit={handleSubmit} class="flex flex-col items-start gap-4"> { setForm("apiKey", v); setForm("err", undefined) }} + onChange={(v) => { + setForm("apiKey", v) + setForm("err", undefined) + }} validationState={form.err ? "invalid" : undefined} error={form.err} /> @@ -485,7 +488,10 @@ export function DialogConnectProvider(props: { provider: string }) { placeholder={apiURL || language.t("provider.connect.baseURL.placeholder")} description={language.t("provider.connect.baseURL.description")} value={form.baseURL} - onChange={(v) => { setForm("baseURL", v); setForm("urlErr", undefined) }} + onChange={(v) => { + setForm("baseURL", v) + setForm("urlErr", undefined) + }} validationState={form.urlErr ? "invalid" : undefined} error={form.urlErr} /> diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts index 9e33d6e926d2..45abf22bcdea 100644 --- a/packages/app/src/i18n/ar.ts +++ b/packages/app/src/i18n/ar.ts @@ -105,7 +105,7 @@ export const dict = { "dialog.model.manage": "إدارة النماذج", "dialog.model.manage.description": "تخصيص النماذج التي تظهر في محدد النماذج.", "dialog.model.manage.provider.toggle": "تبديل جميع نماذج {{provider}}", - "dialog.model.unpaid.freeModels.title": "نماذج مجانية مقدمة من OpenCode", + "dialog.model.unpaid.freeModels.title": "نماذج مجانية مقدمة من Aether", "dialog.model.unpaid.addMore.title": "إضافة المزيد من النماذج من موفرين مشهورين", "dialog.provider.viewAll": "عرض المزيد من الموفرين", "provider.connect.title": "اتصال {{provider}}", @@ -116,21 +116,21 @@ export const dict = { "provider.connect.status.waiting": "في انتظار التفويض...", "provider.connect.status.failed": "فشل التفويض: {{error}}", "provider.connect.apiKey.description": - "أدخل مفتاح واجهة برمجة تطبيقات {{provider}} الخاص بك لتوصيل حسابك واستخدام نماذج {{provider}} في OpenCode.", + "أدخل مفتاح واجهة برمجة تطبيقات {{provider}} الخاص بك لتوصيل حسابك واستخدام نماذج {{provider}} في Aether.", "provider.connect.apiKey.label": "مفتاح واجهة برمجة تطبيقات {{provider}}", "provider.connect.apiKey.placeholder": "مفتاح API", "provider.connect.apiKey.required": "مفتاح API مطلوب", "provider.connect.opencodeZen.line1": - "يمنحك OpenCode Zen الوصول إلى مجموعة مختارة من النماذج الموثوقة والمحسنة لوكلاء البرمجة.", + "يمنحك Aether Zen الوصول إلى مجموعة مختارة من النماذج الموثوقة والمحسنة لوكلاء البرمجة.", "provider.connect.opencodeZen.line2": "باستخدام مفتاح API واحد، ستحصل على إمكانية الوصول إلى نماذج مثل Claude و GPT و Gemini و GLM والمزيد.", "provider.connect.opencodeZen.visit.prefix": "قم بزيارة ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " للحصول على مفتاح API الخاص بك.", "provider.connect.oauth.code.visit.prefix": "قم بزيارة ", "provider.connect.oauth.code.visit.link": "هذا الرابط", "provider.connect.oauth.code.visit.suffix": - " للحصول على رمز التفويض الخاص بك لتوصيل حسابك واستخدام نماذج {{provider}} في OpenCode.", + " للحصول على رمز التفويض الخاص بك لتوصيل حسابك واستخدام نماذج {{provider}} في Aether.", "provider.connect.oauth.code.label": "رمز تفويض {{method}}", "provider.connect.oauth.code.placeholder": "رمز التفويض", "provider.connect.oauth.code.required": "رمز التفويض مطلوب", @@ -138,7 +138,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "قم بزيارة ", "provider.connect.oauth.auto.visit.link": "هذا الرابط", "provider.connect.oauth.auto.visit.suffix": - " وأدخل الرمز أدناه لتوصيل حسابك واستخدام نماذج {{provider}} في OpenCode.", + " وأدخل الرمز أدناه لتوصيل حسابك واستخدام نماذج {{provider}} في Aether.", "provider.connect.oauth.auto.confirmationCode": "رمز التأكيد", "provider.connect.toast.connected.title": "تم توصيل {{provider}}", "provider.connect.toast.connected.description": "نماذج {{provider}} متاحة الآن للاستخدام.", @@ -281,7 +281,7 @@ export const dict = { "dialog.directory.search.placeholder": "البحث في المجلدات", "dialog.directory.empty": "لم يتم العثور على مجلدات", "dialog.server.title": "الخوادم", - "dialog.server.description": "تبديل خادم OpenCode الذي يتصل به هذا التطبيق.", + "dialog.server.description": "تبديل خادم Aether الذي يتصل به هذا التطبيق.", "dialog.server.search.placeholder": "البحث في الخوادم", "dialog.server.empty": "لا توجد خوادم بعد", "dialog.server.add.title": "إضافة خادم", @@ -405,7 +405,7 @@ export const dict = { "error.page.action.checking": "جارٍ التحقق...", "error.page.action.checkUpdates": "التحقق من وجود تحديثات", "error.page.action.updateTo": "تحديث إلى {{version}}", - "error.page.report.prefix": "يرجى الإبلاغ عن هذا الخطأ لفريق OpenCode", + "error.page.report.prefix": "يرجى الإبلاغ عن هذا الخطأ لفريق Aether", "error.page.report.discord": "على Discord", "error.page.version": "الإصدار: {{version}}", "error.dev.rootNotFound": @@ -421,7 +421,7 @@ export const dict = { "error.chain.didYouMean": "هل كنت تعني: {{suggestions}}", "error.chain.modelNotFound": "النموذج غير موجود: {{provider}}/{{model}}", "error.chain.checkConfig": "تحقق من أسماء الموفر/النموذج في التكوين (opencode.json)", - "error.chain.mcpFailed": 'فشل خادم MCP "{{name}}". لاحظ أن OpenCode لا يدعم مصادقة MCP بعد.', + "error.chain.mcpFailed": 'فشل خادم MCP "{{name}}". لاحظ أن Aether لا يدعم مصادقة MCP بعد.', "error.chain.providerAuthFailed": "فشلت مصادقة الموفر ({{provider}}): {{message}}", "error.chain.providerInitFailed": 'فشل تهيئة الموفر "{{provider}}". تحقق من بيانات الاعتماد والتكوين.', "error.chain.configJsonInvalid": "ملف التكوين في {{path}} ليس JSON(C) صالحًا", @@ -537,19 +537,19 @@ export const dict = { "sidebar.workspaces.enable": "تمكين مساحات العمل", "sidebar.workspaces.disable": "تعطيل مساحات العمل", "sidebar.gettingStarted.title": "البدء", - "sidebar.gettingStarted.line1": "يتضمن OpenCode نماذج مجانية حتى تتمكن من البدء فورًا.", + "sidebar.gettingStarted.line1": "يتضمن Aether نماذج مجانية حتى تتمكن من البدء فورًا.", "sidebar.gettingStarted.line2": "قم بتوصيل أي موفر لاستخدام النماذج، بما في ذلك Claude و GPT و Gemini وما إلى ذلك.", "sidebar.project.recentSessions": "الجلسات الحديثة", "sidebar.project.viewAllSessions": "عرض جميع الجلسات", "sidebar.project.clearNotifications": "مسح الإشعارات", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "سطح المكتب", "settings.section.server": "الخادم", "settings.tab.general": "عام", "settings.tab.shortcuts": "اختصارات", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "تكامل WSL", - "settings.desktop.wsl.description": "تشغيل خادم OpenCode داخل WSL على Windows.", + "settings.desktop.wsl.description": "تشغيل خادم Aether داخل WSL على Windows.", "settings.general.section.appearance": "المظهر", "settings.general.section.notifications": "إشعارات النظام", "settings.general.section.updates": "التحديثات", @@ -563,13 +563,13 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "اللغة", - "settings.general.row.language.description": "تغيير لغة العرض لـ OpenCode", + "settings.general.row.language.description": "تغيير لغة العرض لـ Aether", "settings.general.row.appearance.title": "المظهر", - "settings.general.row.appearance.description": "تخصيص كيفية ظهور OpenCode على جهازك", + "settings.general.row.appearance.description": "تخصيص كيفية ظهور Aether على جهازك", "settings.general.row.colorScheme.title": "مخطط الألوان", - "settings.general.row.colorScheme.description": "اختر ما إذا كان OpenCode يتبع سمة النظام أو الفاتح أو الداكن", + "settings.general.row.colorScheme.description": "اختر ما إذا كان Aether يتبع سمة النظام أو الفاتح أو الداكن", "settings.general.row.theme.title": "السمة", - "settings.general.row.theme.description": "تخصيص سمة OpenCode.", + "settings.general.row.theme.description": "تخصيص سمة Aether.", "settings.general.row.font.title": "الخط", "settings.general.row.font.description": "تخصيص الخط الأحادي المستخدم في كتل التعليمات البرمجية", "settings.general.row.followup.title": "سلوك المتابعة", @@ -591,13 +591,13 @@ export const dict = { "settings.general.row.releaseNotes.title": "ملاحظات الإصدار", "settings.general.row.releaseNotes.description": 'عرض نوافذ "ما الجديد" المنبثقة بعد التحديثات', "settings.updates.row.startup.title": "التحقق من التحديثات عند بدء التشغيل", - "settings.updates.row.startup.description": "التحقق تلقائيًا من التحديثات عند تشغيل OpenCode", + "settings.updates.row.startup.description": "التحقق تلقائيًا من التحديثات عند تشغيل Aether", "settings.updates.row.check.title": "التحقق من التحديثات", "settings.updates.row.check.description": "التحقق يدويًا من التحديثات وتثبيتها إذا كانت متاحة", "settings.updates.action.checkNow": "تحقق الآن", "settings.updates.action.checking": "جارٍ التحقق...", "settings.updates.toast.latest.title": "أنت على آخر إصدار", - "settings.updates.toast.latest.description": "أنت تستخدم أحدث إصدار من OpenCode.", + "settings.updates.toast.latest.description": "أنت تستخدم أحدث إصدار من Aether.", "font.option.system": "افتراضي النظام", "font.option.ibmPlexMono": "IBM Plex Mono", "font.option.cascadiaCode": "Cascadia Code", diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts index 2035bb06d480..642db21bda6d 100644 --- a/packages/app/src/i18n/br.ts +++ b/packages/app/src/i18n/br.ts @@ -105,7 +105,7 @@ export const dict = { "dialog.model.manage": "Gerenciar modelos", "dialog.model.manage.description": "Personalizar quais modelos aparecem no seletor de modelos.", "dialog.model.manage.provider.toggle": "Alternar todos os modelos {{provider}}", - "dialog.model.unpaid.freeModels.title": "Modelos gratuitos fornecidos pelo OpenCode", + "dialog.model.unpaid.freeModels.title": "Modelos gratuitos fornecidos pelo Aether", "dialog.model.unpaid.addMore.title": "Adicionar mais modelos de provedores populares", "dialog.provider.viewAll": "Ver mais provedores", "provider.connect.title": "Conectar {{provider}}", @@ -116,21 +116,21 @@ export const dict = { "provider.connect.status.waiting": "Aguardando autorização...", "provider.connect.status.failed": "Autorização falhou: {{error}}", "provider.connect.apiKey.description": - "Digite sua chave de API do {{provider}} para conectar sua conta e usar modelos do {{provider}} no OpenCode.", + "Digite sua chave de API do {{provider}} para conectar sua conta e usar modelos do {{provider}} no Aether.", "provider.connect.apiKey.label": "Chave de API do {{provider}}", "provider.connect.apiKey.placeholder": "Chave de API", "provider.connect.apiKey.required": "A chave de API é obrigatória", "provider.connect.opencodeZen.line1": - "OpenCode Zen oferece acesso a um conjunto selecionado de modelos confiáveis otimizados para agentes de código.", + "Aether Zen oferece acesso a um conjunto selecionado de modelos confiáveis otimizados para agentes de código.", "provider.connect.opencodeZen.line2": "Com uma única chave de API você terá acesso a modelos como Claude, GPT, Gemini, GLM e mais.", "provider.connect.opencodeZen.visit.prefix": "Visite ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " para obter sua chave de API.", "provider.connect.oauth.code.visit.prefix": "Visite ", "provider.connect.oauth.code.visit.link": "este link", "provider.connect.oauth.code.visit.suffix": - " para obter seu código de autorização e conectar sua conta para usar modelos do {{provider}} no OpenCode.", + " para obter seu código de autorização e conectar sua conta para usar modelos do {{provider}} no Aether.", "provider.connect.oauth.code.label": "Código de autorização {{method}}", "provider.connect.oauth.code.placeholder": "Código de autorização", "provider.connect.oauth.code.required": "O código de autorização é obrigatório", @@ -138,7 +138,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "Visite ", "provider.connect.oauth.auto.visit.link": "este link", "provider.connect.oauth.auto.visit.suffix": - " e digite o código abaixo para conectar sua conta e usar modelos do {{provider}} no OpenCode.", + " e digite o código abaixo para conectar sua conta e usar modelos do {{provider}} no Aether.", "provider.connect.oauth.auto.confirmationCode": "Código de confirmação", "provider.connect.toast.connected.title": "{{provider}} conectado", "provider.connect.toast.connected.description": "Modelos do {{provider}} agora estão disponíveis para uso.", @@ -281,7 +281,7 @@ export const dict = { "dialog.directory.search.placeholder": "Buscar pastas", "dialog.directory.empty": "Nenhuma pasta encontrada", "dialog.server.title": "Servidores", - "dialog.server.description": "Trocar para qual servidor OpenCode este aplicativo se conecta.", + "dialog.server.description": "Trocar para qual servidor Aether este aplicativo se conecta.", "dialog.server.search.placeholder": "Buscar servidores", "dialog.server.empty": "Nenhum servidor ainda", "dialog.server.add.title": "Adicionar um servidor", @@ -406,7 +406,7 @@ export const dict = { "error.page.action.checking": "Verificando...", "error.page.action.checkUpdates": "Verificar atualizações", "error.page.action.updateTo": "Atualizar para {{version}}", - "error.page.report.prefix": "Por favor, reporte este erro para a equipe do OpenCode", + "error.page.report.prefix": "Por favor, reporte este erro para a equipe do Aether", "error.page.report.discord": "no Discord", "error.page.version": "Versão: {{version}}", "error.dev.rootNotFound": @@ -422,7 +422,7 @@ export const dict = { "error.chain.didYouMean": "Você quis dizer: {{suggestions}}", "error.chain.modelNotFound": "Modelo não encontrado: {{provider}}/{{model}}", "error.chain.checkConfig": "Verifique os nomes de provedor/modelo na sua configuração (opencode.json)", - "error.chain.mcpFailed": 'Servidor MCP "{{name}}" falhou. Nota: OpenCode ainda não suporta autenticação MCP.', + "error.chain.mcpFailed": 'Servidor MCP "{{name}}" falhou. Nota: Aether ainda não suporta autenticação MCP.', "error.chain.providerAuthFailed": "Autenticação do provedor falhou ({{provider}}): {{message}}", "error.chain.providerInitFailed": 'Falha ao inicializar provedor "{{provider}}". Verifique credenciais e configuração.', @@ -544,19 +544,19 @@ export const dict = { "sidebar.workspaces.enable": "Habilitar espaços de trabalho", "sidebar.workspaces.disable": "Desabilitar espaços de trabalho", "sidebar.gettingStarted.title": "Começando", - "sidebar.gettingStarted.line1": "OpenCode inclui modelos gratuitos para você começar imediatamente.", + "sidebar.gettingStarted.line1": "Aether inclui modelos gratuitos para você começar imediatamente.", "sidebar.gettingStarted.line2": "Conecte qualquer provedor para usar modelos, incluindo Claude, GPT, Gemini etc.", "sidebar.project.recentSessions": "Sessões recentes", "sidebar.project.viewAllSessions": "Ver todas as sessões", "sidebar.project.clearNotifications": "Limpar notificações", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "Desktop", "settings.section.server": "Servidor", "settings.tab.general": "Geral", "settings.tab.shortcuts": "Atalhos", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "WSL integration", - "settings.desktop.wsl.description": "Executar o servidor OpenCode dentro do WSL no Windows.", + "settings.desktop.wsl.description": "Executar o servidor Aether dentro do WSL no Windows.", "settings.general.section.appearance": "Aparência", "settings.general.section.notifications": "Notificações do sistema", "settings.general.section.updates": "Atualizações", @@ -570,13 +570,13 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "Idioma", - "settings.general.row.language.description": "Alterar o idioma de exibição do OpenCode", + "settings.general.row.language.description": "Alterar o idioma de exibição do Aether", "settings.general.row.appearance.title": "Aparência", - "settings.general.row.appearance.description": "Personalize como o OpenCode aparece no seu dispositivo", + "settings.general.row.appearance.description": "Personalize como o Aether aparece no seu dispositivo", "settings.general.row.colorScheme.title": "Esquema de cores", - "settings.general.row.colorScheme.description": "Escolha se o OpenCode segue o tema do sistema, claro ou escuro", + "settings.general.row.colorScheme.description": "Escolha se o Aether segue o tema do sistema, claro ou escuro", "settings.general.row.theme.title": "Tema", - "settings.general.row.theme.description": "Personalize como o OpenCode é tematizado.", + "settings.general.row.theme.description": "Personalize como o Aether é tematizado.", "settings.general.row.font.title": "Fonte", "settings.general.row.font.description": "Personalize a fonte monoespaçada usada em blocos de código", "settings.general.row.followup.title": "Comportamento de acompanhamento", @@ -599,13 +599,13 @@ export const dict = { "settings.general.row.releaseNotes.title": "Notas da versão", "settings.general.row.releaseNotes.description": 'Mostrar pop-ups de "Novidades" após atualizações', "settings.updates.row.startup.title": "Verificar atualizações ao iniciar", - "settings.updates.row.startup.description": "Verificar atualizações automaticamente quando o OpenCode iniciar", + "settings.updates.row.startup.description": "Verificar atualizações automaticamente quando o Aether iniciar", "settings.updates.row.check.title": "Verificar atualizações", "settings.updates.row.check.description": "Verificar atualizações manualmente e instalar se houver", "settings.updates.action.checkNow": "Verificar agora", "settings.updates.action.checking": "Verificando...", "settings.updates.toast.latest.title": "Você está atualizado", - "settings.updates.toast.latest.description": "Você está usando a versão mais recente do OpenCode.", + "settings.updates.toast.latest.description": "Você está usando a versão mais recente do Aether.", "font.option.system": "Padrão do sistema", "font.option.ibmPlexMono": "IBM Plex Mono", "font.option.cascadiaCode": "Cascadia Code", diff --git a/packages/app/src/i18n/bs.ts b/packages/app/src/i18n/bs.ts index 0a2541c191d2..6272d97167d4 100644 --- a/packages/app/src/i18n/bs.ts +++ b/packages/app/src/i18n/bs.ts @@ -115,7 +115,7 @@ export const dict = { "dialog.model.manage.description": "Prilagodi koji se modeli prikazuju u izborniku modela.", "dialog.model.manage.provider.toggle": "Uključi/isključi sve {{provider}} modele", - "dialog.model.unpaid.freeModels.title": "Besplatni modeli koje obezbjeđuje OpenCode", + "dialog.model.unpaid.freeModels.title": "Besplatni modeli koje obezbjeđuje Aether", "dialog.model.unpaid.addMore.title": "Dodaj još modela od popularnih provajdera", "dialog.provider.viewAll": "Prikaži više provajdera", @@ -128,21 +128,21 @@ export const dict = { "provider.connect.status.waiting": "Čekanje na autorizaciju...", "provider.connect.status.failed": "Autorizacija nije uspjela: {{error}}", "provider.connect.apiKey.description": - "Unesi svoj {{provider}} API ključ da povežeš račun i koristiš {{provider}} modele u OpenCode-u.", + "Unesi svoj {{provider}} API ključ da povežeš račun i koristiš {{provider}} modele u Aether-u.", "provider.connect.apiKey.label": "{{provider}} API ključ", "provider.connect.apiKey.placeholder": "API ključ", "provider.connect.apiKey.required": "API ključ je obavezan", "provider.connect.opencodeZen.line1": - "OpenCode Zen ti daje pristup kuriranom skupu pouzdanih, optimizovanih modela za coding agente.", + "Aether Zen ti daje pristup kuriranom skupu pouzdanih, optimizovanih modela za coding agente.", "provider.connect.opencodeZen.line2": "Sa jednim API ključem dobijaš pristup modelima kao što su Claude, GPT, Gemini, GLM i drugi.", "provider.connect.opencodeZen.visit.prefix": "Posjeti ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " da preuzmeš svoj API ključ.", "provider.connect.oauth.code.visit.prefix": "Posjeti ", "provider.connect.oauth.code.visit.link": "ovaj link", "provider.connect.oauth.code.visit.suffix": - " da preuzmeš autorizacijski kod i povežeš račun te koristiš {{provider}} modele u OpenCode-u.", + " da preuzmeš autorizacijski kod i povežeš račun te koristiš {{provider}} modele u Aether-u.", "provider.connect.oauth.code.label": "{{method}} autorizacijski kod", "provider.connect.oauth.code.placeholder": "Autorizacijski kod", "provider.connect.oauth.code.required": "Autorizacijski kod je obavezan", @@ -150,7 +150,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "Posjeti ", "provider.connect.oauth.auto.visit.link": "ovaj link", "provider.connect.oauth.auto.visit.suffix": - " i unesi kod ispod da povežeš račun i koristiš {{provider}} modele u OpenCode-u.", + " i unesi kod ispod da povežeš račun i koristiš {{provider}} modele u Aether-u.", "provider.connect.oauth.auto.confirmationCode": "Kod za potvrdu", "provider.connect.toast.connected.title": "{{provider}} povezan", "provider.connect.toast.connected.description": "{{provider}} modeli su sada dostupni za korištenje.", @@ -308,7 +308,7 @@ export const dict = { "dialog.directory.empty": "Nema pronađenih foldera", "dialog.server.title": "Serveri", - "dialog.server.description": "Promijeni na koji se OpenCode server ova aplikacija povezuje.", + "dialog.server.description": "Promijeni na koji se Aether server ova aplikacija povezuje.", "dialog.server.search.placeholder": "Pretraži servere", "dialog.server.empty": "Još nema servera", "dialog.server.add.title": "Dodaj server", @@ -452,7 +452,7 @@ export const dict = { "error.page.action.checking": "Provjera...", "error.page.action.checkUpdates": "Provjeri ažuriranja", "error.page.action.updateTo": "Ažuriraj na {{version}}", - "error.page.report.prefix": "Molimo prijavi ovu grešku OpenCode timu", + "error.page.report.prefix": "Molimo prijavi ovu grešku Aether timu", "error.page.report.discord": "na Discordu", "error.page.version": "Verzija: {{version}}", @@ -471,7 +471,7 @@ export const dict = { "error.chain.didYouMean": "Da li si mislio: {{suggestions}}", "error.chain.modelNotFound": "Model nije pronađen: {{provider}}/{{model}}", "error.chain.checkConfig": "Provjeri konfiguraciju (opencode.json) provider/model names", - "error.chain.mcpFailed": 'MCP server "{{name}}" nije uspio. Napomena: OpenCode još ne podržava MCP autentifikaciju.', + "error.chain.mcpFailed": 'MCP server "{{name}}" nije uspio. Napomena: Aether još ne podržava MCP autentifikaciju.', "error.chain.providerAuthFailed": "Autentifikacija provajdera nije uspjela ({{provider}}): {{message}}", "error.chain.providerInitFailed": 'Neuspjelo inicijalizovanje provajdera "{{provider}}". Provjeri kredencijale i konfiguraciju.', @@ -605,13 +605,13 @@ export const dict = { "sidebar.workspaces.enable": "Omogući radne prostore", "sidebar.workspaces.disable": "Onemogući radne prostore", "sidebar.gettingStarted.title": "Početak", - "sidebar.gettingStarted.line1": "OpenCode uključuje besplatne modele, tako da možeš odmah početi.", + "sidebar.gettingStarted.line1": "Aether uključuje besplatne modele, tako da možeš odmah početi.", "sidebar.gettingStarted.line2": "Poveži bilo kojeg provajdera da koristiš modele, npr. Claude, GPT, Gemini itd.", "sidebar.project.recentSessions": "Nedavne sesije", "sidebar.project.viewAllSessions": "Prikaži sve sesije", "sidebar.project.clearNotifications": "Očisti obavijesti", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "Desktop", "settings.section.server": "Server", @@ -619,7 +619,7 @@ export const dict = { "settings.tab.shortcuts": "Prečice", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "WSL integracija", - "settings.desktop.wsl.description": "Pokreni OpenCode server unutar WSL-a na Windowsu.", + "settings.desktop.wsl.description": "Pokreni Aether server unutar WSL-a na Windowsu.", "settings.general.section.appearance": "Izgled", "settings.general.section.notifications": "Sistemske obavijesti", @@ -635,13 +635,13 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "Jezik", - "settings.general.row.language.description": "Promijeni jezik prikaza u OpenCode-u", + "settings.general.row.language.description": "Promijeni jezik prikaza u Aether-u", "settings.general.row.appearance.title": "Izgled", - "settings.general.row.appearance.description": "Prilagodi kako OpenCode izgleda na tvom uređaju", + "settings.general.row.appearance.description": "Prilagodi kako Aether izgleda na tvom uređaju", "settings.general.row.colorScheme.title": "Šema boja", - "settings.general.row.colorScheme.description": "Odaberi da li OpenCode prati sistemsku, svijetlu ili tamnu temu", + "settings.general.row.colorScheme.description": "Odaberi da li Aether prati sistemsku, svijetlu ili tamnu temu", "settings.general.row.theme.title": "Tema", - "settings.general.row.theme.description": "Prilagodi temu OpenCode-a.", + "settings.general.row.theme.description": "Prilagodi temu Aether-a.", "settings.general.row.font.title": "Font", "settings.general.row.font.description": "Prilagodi monospace font koji se koristi u blokovima koda", "settings.general.row.followup.title": "Ponašanje nadovezivanja", @@ -666,13 +666,13 @@ export const dict = { "settings.general.row.releaseNotes.description": 'Prikaži iskačuće prozore "Šta je novo" nakon ažuriranja', "settings.updates.row.startup.title": "Provjeri ažuriranja pri pokretanju", - "settings.updates.row.startup.description": "Automatski provjerava ažuriranja kada se OpenCode pokrene", + "settings.updates.row.startup.description": "Automatski provjerava ažuriranja kada se Aether pokrene", "settings.updates.row.check.title": "Provjeri ažuriranja", "settings.updates.row.check.description": "Ručno provjeri ažuriranja i instaliraj ako su dostupna", "settings.updates.action.checkNow": "Provjeri sada", "settings.updates.action.checking": "Provjera...", "settings.updates.toast.latest.title": "Sve je ažurno", - "settings.updates.toast.latest.description": "Koristiš najnoviju verziju OpenCode-a.", + "settings.updates.toast.latest.description": "Koristiš najnoviju verziju Aether-a.", "font.option.system": "Zadani sistem", "font.option.ibmPlexMono": "IBM Plex Mono", "font.option.cascadiaCode": "Cascadia Code", diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts index 38ce3508e8bb..447f6fd1fbcd 100644 --- a/packages/app/src/i18n/da.ts +++ b/packages/app/src/i18n/da.ts @@ -115,7 +115,7 @@ export const dict = { "dialog.model.manage.description": "Tilpas hvilke modeller der vises i modelvælgeren.", "dialog.model.manage.provider.toggle": "Skift alle {{provider}}-modeller", - "dialog.model.unpaid.freeModels.title": "Gratis modeller leveret af OpenCode", + "dialog.model.unpaid.freeModels.title": "Gratis modeller leveret af Aether", "dialog.model.unpaid.addMore.title": "Tilføj flere modeller fra populære udbydere", "dialog.provider.viewAll": "Vis flere udbydere", @@ -128,21 +128,21 @@ export const dict = { "provider.connect.status.waiting": "Venter på godkendelse...", "provider.connect.status.failed": "Godkendelse mislykkedes: {{error}}", "provider.connect.apiKey.description": - "Indtast din {{provider}} API-nøgle for at forbinde din konto og bruge {{provider}} modeller i OpenCode.", + "Indtast din {{provider}} API-nøgle for at forbinde din konto og bruge {{provider}} modeller i Aether.", "provider.connect.apiKey.label": "{{provider}} API-nøgle", "provider.connect.apiKey.placeholder": "API-nøgle", "provider.connect.apiKey.required": "API-nøgle er påkrævet", "provider.connect.opencodeZen.line1": - "OpenCode Zen giver dig adgang til et udvalg af pålidelige optimerede modeller til kodningsagenter.", + "Aether Zen giver dig adgang til et udvalg af pålidelige optimerede modeller til kodningsagenter.", "provider.connect.opencodeZen.line2": "Med en enkelt API-nøgle får du adgang til modeller som Claude, GPT, Gemini, GLM og flere.", "provider.connect.opencodeZen.visit.prefix": "Besøg ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " for at hente din API-nøgle.", "provider.connect.oauth.code.visit.prefix": "Besøg ", "provider.connect.oauth.code.visit.link": "dette link", "provider.connect.oauth.code.visit.suffix": - " for at hente din godkendelseskode for at forbinde din konto og bruge {{provider}} modeller i OpenCode.", + " for at hente din godkendelseskode for at forbinde din konto og bruge {{provider}} modeller i Aether.", "provider.connect.oauth.code.label": "{{method}} godkendelseskode", "provider.connect.oauth.code.placeholder": "Godkendelseskode", "provider.connect.oauth.code.required": "Godkendelseskode er påkrævet", @@ -150,7 +150,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "Besøg ", "provider.connect.oauth.auto.visit.link": "dette link", "provider.connect.oauth.auto.visit.suffix": - " og indtast koden nedenfor for at forbinde din konto og bruge {{provider}} modeller i OpenCode.", + " og indtast koden nedenfor for at forbinde din konto og bruge {{provider}} modeller i Aether.", "provider.connect.oauth.auto.confirmationCode": "Bekræftelseskode", "provider.connect.toast.connected.title": "{{provider}} forbundet", "provider.connect.toast.connected.description": "{{provider}} modeller er nu tilgængelige.", @@ -306,7 +306,7 @@ export const dict = { "dialog.directory.empty": "Ingen mapper fundet", "dialog.server.title": "Servere", - "dialog.server.description": "Skift hvilken OpenCode-server denne app forbinder til.", + "dialog.server.description": "Skift hvilken Aether-server denne app forbinder til.", "dialog.server.search.placeholder": "Søg servere", "dialog.server.empty": "Ingen servere endnu", "dialog.server.add.title": "Tilføj en server", @@ -449,7 +449,7 @@ export const dict = { "error.page.action.checking": "Tjekker...", "error.page.action.checkUpdates": "Tjek for opdateringer", "error.page.action.updateTo": "Opdater til {{version}}", - "error.page.report.prefix": "Rapporter venligst denne fejl til OpenCode-teamet", + "error.page.report.prefix": "Rapporter venligst denne fejl til Aether-teamet", "error.page.report.discord": "på Discord", "error.page.version": "Version: {{version}}", @@ -468,7 +468,7 @@ export const dict = { "error.chain.didYouMean": "Mente du: {{suggestions}}", "error.chain.modelNotFound": "Model ikke fundet: {{provider}}/{{model}}", "error.chain.checkConfig": "Tjek dine konfigurations (opencode.json) udbyder/modelnavne", - "error.chain.mcpFailed": 'MCP-server "{{name}}" fejlede. Bemærk, OpenCode understøtter ikke MCP-godkendelse endnu.', + "error.chain.mcpFailed": 'MCP-server "{{name}}" fejlede. Bemærk, Aether understøtter ikke MCP-godkendelse endnu.', "error.chain.providerAuthFailed": "Udbydergodkendelse mislykkedes ({{provider}}): {{message}}", "error.chain.providerInitFailed": 'Kunne ikke initialisere udbyder "{{provider}}". Tjek legitimationsoplysninger og konfiguration.', @@ -601,20 +601,20 @@ export const dict = { "sidebar.workspaces.enable": "Aktiver arbejdsområder", "sidebar.workspaces.disable": "Deaktiver arbejdsområder", "sidebar.gettingStarted.title": "Kom i gang", - "sidebar.gettingStarted.line1": "OpenCode inkluderer gratis modeller så du kan starte med det samme.", + "sidebar.gettingStarted.line1": "Aether inkluderer gratis modeller så du kan starte med det samme.", "sidebar.gettingStarted.line2": "Forbind enhver udbyder for at bruge modeller, inkl. Claude, GPT, Gemini osv.", "sidebar.project.recentSessions": "Seneste sessioner", "sidebar.project.viewAllSessions": "Vis alle sessioner", "sidebar.project.clearNotifications": "Ryd notifikationer", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "Desktop", "settings.section.server": "Server", "settings.tab.general": "Generelt", "settings.tab.shortcuts": "Genveje", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "WSL integration", - "settings.desktop.wsl.description": "Kør OpenCode-serveren inde i WSL på Windows.", + "settings.desktop.wsl.description": "Kør Aether-serveren inde i WSL på Windows.", "settings.general.section.appearance": "Udseende", "settings.general.section.notifications": "Systemmeddelelser", @@ -630,13 +630,13 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "Sprog", - "settings.general.row.language.description": "Ændr visningssproget for OpenCode", + "settings.general.row.language.description": "Ændr visningssproget for Aether", "settings.general.row.appearance.title": "Udseende", - "settings.general.row.appearance.description": "Tilpas hvordan OpenCode ser ud på din enhed", + "settings.general.row.appearance.description": "Tilpas hvordan Aether ser ud på din enhed", "settings.general.row.colorScheme.title": "Farveskema", - "settings.general.row.colorScheme.description": "Vælg om OpenCode følger systemets, lyst eller mørkt tema", + "settings.general.row.colorScheme.description": "Vælg om Aether følger systemets, lyst eller mørkt tema", "settings.general.row.theme.title": "Tema", - "settings.general.row.theme.description": "Tilpas hvordan OpenCode er temabestemt.", + "settings.general.row.theme.description": "Tilpas hvordan Aether er temabestemt.", "settings.general.row.font.title": "Skrifttype", "settings.general.row.font.description": "Tilpas mono-skrifttypen brugt i kodeblokke", "settings.general.row.followup.title": "Opfølgningsadfærd", @@ -660,13 +660,13 @@ export const dict = { "settings.general.row.releaseNotes.description": 'Vis "Hvad er nyt"-popups efter opdateringer', "settings.updates.row.startup.title": "Tjek for opdateringer ved opstart", - "settings.updates.row.startup.description": "Tjek automatisk for opdateringer, når OpenCode starter", + "settings.updates.row.startup.description": "Tjek automatisk for opdateringer, når Aether starter", "settings.updates.row.check.title": "Tjek for opdateringer", "settings.updates.row.check.description": "Tjek manuelt for opdateringer og installer, hvis tilgængelig", "settings.updates.action.checkNow": "Tjek nu", "settings.updates.action.checking": "Tjekker...", "settings.updates.toast.latest.title": "Du er opdateret", - "settings.updates.toast.latest.description": "Du kører den nyeste version af OpenCode.", + "settings.updates.toast.latest.description": "Du kører den nyeste version af Aether.", "font.option.system": "Systemstandard", "font.option.ibmPlexMono": "IBM Plex Mono", diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts index ae7d0befc3dd..031769552bde 100644 --- a/packages/app/src/i18n/de.ts +++ b/packages/app/src/i18n/de.ts @@ -109,7 +109,7 @@ export const dict = { "dialog.model.manage": "Modelle verwalten", "dialog.model.manage.description": "Anpassen, welche Modelle in der Modellauswahl erscheinen.", "dialog.model.manage.provider.toggle": "Alle {{provider}}-Modelle umschalten", - "dialog.model.unpaid.freeModels.title": "Kostenlose Modelle von OpenCode", + "dialog.model.unpaid.freeModels.title": "Kostenlose Modelle von Aether", "dialog.model.unpaid.addMore.title": "Weitere Modelle von beliebten Anbietern hinzufügen", "dialog.provider.viewAll": "Mehr Anbieter anzeigen", "provider.connect.title": "{{provider}} verbinden", @@ -120,21 +120,21 @@ export const dict = { "provider.connect.status.waiting": "Warten auf Autorisierung...", "provider.connect.status.failed": "Autorisierung fehlgeschlagen: {{error}}", "provider.connect.apiKey.description": - "Geben Sie Ihren {{provider}} API-Schlüssel ein, um Ihr Konto zu verbinden und {{provider}} Modelle in OpenCode zu nutzen.", + "Geben Sie Ihren {{provider}} API-Schlüssel ein, um Ihr Konto zu verbinden und {{provider}} Modelle in Aether zu nutzen.", "provider.connect.apiKey.label": "{{provider}} API-Schlüssel", "provider.connect.apiKey.placeholder": "API-Schlüssel", "provider.connect.apiKey.required": "API-Schlüssel ist erforderlich", "provider.connect.opencodeZen.line1": - "OpenCode Zen bietet Ihnen Zugriff auf eine kuratierte Auswahl zuverlässiger, optimierter Modelle für Coding-Agenten.", + "Aether Zen bietet Ihnen Zugriff auf eine kuratierte Auswahl zuverlässiger, optimierter Modelle für Coding-Agenten.", "provider.connect.opencodeZen.line2": "Mit einem einzigen API-Schlüssel erhalten Sie Zugriff auf Modelle wie Claude, GPT, Gemini, GLM und mehr.", "provider.connect.opencodeZen.visit.prefix": "Besuchen Sie ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": ", um Ihren API-Schlüssel zu erhalten.", "provider.connect.oauth.code.visit.prefix": "Besuchen Sie ", "provider.connect.oauth.code.visit.link": "diesen Link", "provider.connect.oauth.code.visit.suffix": - ", um Ihren Autorisierungscode zu erhalten, Ihr Konto zu verbinden und {{provider}} Modelle in OpenCode zu nutzen.", + ", um Ihren Autorisierungscode zu erhalten, Ihr Konto zu verbinden und {{provider}} Modelle in Aether zu nutzen.", "provider.connect.oauth.code.label": "{{method}} Autorisierungscode", "provider.connect.oauth.code.placeholder": "Autorisierungscode", "provider.connect.oauth.code.required": "Autorisierungscode ist erforderlich", @@ -142,7 +142,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "Besuchen Sie ", "provider.connect.oauth.auto.visit.link": "diesen Link", "provider.connect.oauth.auto.visit.suffix": - " und geben Sie den untenstehenden Code ein, um Ihr Konto zu verbinden und {{provider}} Modelle in OpenCode zu nutzen.", + " und geben Sie den untenstehenden Code ein, um Ihr Konto zu verbinden und {{provider}} Modelle in Aether zu nutzen.", "provider.connect.oauth.auto.confirmationCode": "Bestätigungscode", "provider.connect.toast.connected.title": "{{provider}} verbunden", "provider.connect.toast.connected.description": "{{provider}} Modelle sind jetzt verfügbar.", @@ -286,7 +286,7 @@ export const dict = { "dialog.directory.search.placeholder": "Ordner durchsuchen", "dialog.directory.empty": "Keine Ordner gefunden", "dialog.server.title": "Server", - "dialog.server.description": "Wechseln Sie den OpenCode-Server, mit dem sich diese App verbindet.", + "dialog.server.description": "Wechseln Sie den Aether-Server, mit dem sich diese App verbindet.", "dialog.server.search.placeholder": "Server durchsuchen", "dialog.server.empty": "Noch keine Server", "dialog.server.add.title": "Server hinzufügen", @@ -412,7 +412,7 @@ export const dict = { "error.page.action.checking": "Prüfen...", "error.page.action.checkUpdates": "Nach Updates suchen", "error.page.action.updateTo": "Auf {{version}} aktualisieren", - "error.page.report.prefix": "Bitte melden Sie diesen Fehler dem OpenCode-Team", + "error.page.report.prefix": "Bitte melden Sie diesen Fehler dem Aether-Team", "error.page.report.discord": "auf Discord", "error.page.version": "Version: {{version}}", "error.dev.rootNotFound": @@ -429,7 +429,7 @@ export const dict = { "error.chain.modelNotFound": "Modell nicht gefunden: {{provider}}/{{model}}", "error.chain.checkConfig": "Überprüfen Sie Ihre Konfiguration (opencode.json) auf Anbieter-/Modellnamen", "error.chain.mcpFailed": - 'MCP-Server "{{name}}" fehlgeschlagen. Hinweis: OpenCode unterstützt noch keine MCP-Authentifizierung.', + 'MCP-Server "{{name}}" fehlgeschlagen. Hinweis: Aether unterstützt noch keine MCP-Authentifizierung.', "error.chain.providerAuthFailed": "Anbieter-Authentifizierung fehlgeschlagen ({{provider}}): {{message}}", "error.chain.providerInitFailed": 'Anbieter "{{provider}}" konnte nicht initialisiert werden. Überprüfen Sie Anmeldeinformationen und Konfiguration.', @@ -551,20 +551,20 @@ export const dict = { "sidebar.workspaces.enable": "Arbeitsbereiche aktivieren", "sidebar.workspaces.disable": "Arbeitsbereiche deaktivieren", "sidebar.gettingStarted.title": "Erste Schritte", - "sidebar.gettingStarted.line1": "OpenCode enthält kostenlose Modelle, damit Sie sofort loslegen können.", + "sidebar.gettingStarted.line1": "Aether enthält kostenlose Modelle, damit Sie sofort loslegen können.", "sidebar.gettingStarted.line2": "Verbinden Sie einen beliebigen Anbieter, um Modelle wie Claude, GPT, Gemini usw. zu nutzen.", "sidebar.project.recentSessions": "Letzte Sitzungen", "sidebar.project.viewAllSessions": "Alle Sitzungen anzeigen", "sidebar.project.clearNotifications": "Benachrichtigungen löschen", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "Desktop", "settings.section.server": "Server", "settings.tab.general": "Allgemein", "settings.tab.shortcuts": "Tastenkombinationen", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "WSL-Integration", - "settings.desktop.wsl.description": "OpenCode-Server innerhalb von WSL unter Windows ausführen.", + "settings.desktop.wsl.description": "Aether-Server innerhalb von WSL unter Windows ausführen.", "settings.general.section.appearance": "Erscheinungsbild", "settings.general.section.notifications": "Systembenachrichtigungen", "settings.general.section.updates": "Updates", @@ -578,14 +578,14 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "Sprache", - "settings.general.row.language.description": "Die Anzeigesprache für OpenCode ändern", + "settings.general.row.language.description": "Die Anzeigesprache für Aether ändern", "settings.general.row.appearance.title": "Erscheinungsbild", - "settings.general.row.appearance.description": "Anpassen, wie OpenCode auf Ihrem Gerät aussieht", + "settings.general.row.appearance.description": "Anpassen, wie Aether auf Ihrem Gerät aussieht", "settings.general.row.colorScheme.title": "Farbschema", "settings.general.row.colorScheme.description": - "Wählen Sie, ob OpenCode dem System-, hellen oder dunklen Thema folgt", + "Wählen Sie, ob Aether dem System-, hellen oder dunklen Thema folgt", "settings.general.row.theme.title": "Thema", - "settings.general.row.theme.description": "Das Thema von OpenCode anpassen.", + "settings.general.row.theme.description": "Das Thema von Aether anpassen.", "settings.general.row.font.title": "Schriftart", "settings.general.row.font.description": "Die in Codeblöcken verwendete Monospace-Schriftart anpassen", "settings.general.row.followup.title": "Verhalten bei Folgefragen", @@ -609,13 +609,13 @@ export const dict = { "settings.general.row.releaseNotes.title": "Versionshinweise", "settings.general.row.releaseNotes.description": '"Neuigkeiten"-Pop-ups nach Updates anzeigen', "settings.updates.row.startup.title": "Beim Start nach Updates suchen", - "settings.updates.row.startup.description": "Beim Start von OpenCode automatisch nach Updates suchen", + "settings.updates.row.startup.description": "Beim Start von Aether automatisch nach Updates suchen", "settings.updates.row.check.title": "Nach Updates suchen", "settings.updates.row.check.description": "Manuell nach Updates suchen und installieren, wenn verfügbar", "settings.updates.action.checkNow": "Jetzt prüfen", "settings.updates.action.checking": "Wird geprüft...", "settings.updates.toast.latest.title": "Du bist auf dem neuesten Stand", - "settings.updates.toast.latest.description": "Du verwendest die aktuelle Version von OpenCode.", + "settings.updates.toast.latest.description": "Du verwendest die aktuelle Version von Aether.", "font.option.system": "Systemstandard", "font.option.ibmPlexMono": "IBM Plex Mono", "font.option.cascadiaCode": "Cascadia Code", diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts index b5b360d35bbd..96f286042868 100644 --- a/packages/app/src/i18n/en.ts +++ b/packages/app/src/i18n/en.ts @@ -499,7 +499,7 @@ export const dict = { "error.page.action.checkUpdates": "Check for updates", "error.page.action.updateTo": "Update to {{version}}", "error.page.circular": "[Circular]", - "error.page.report.prefix": "Please report this error to the OpenCode team", + "error.page.report.prefix": "Please report this error to the Aether team", "error.page.report.discord": "on Discord", "error.page.version": "Version: {{version}}", diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts index 044eb63b2159..631446912ef7 100644 --- a/packages/app/src/i18n/es.ts +++ b/packages/app/src/i18n/es.ts @@ -115,7 +115,7 @@ export const dict = { "dialog.model.manage.description": "Personalizar qué modelos aparecen en el selector de modelos.", "dialog.model.manage.provider.toggle": "Alternar todos los modelos de {{provider}}", - "dialog.model.unpaid.freeModels.title": "Modelos gratuitos proporcionados por OpenCode", + "dialog.model.unpaid.freeModels.title": "Modelos gratuitos proporcionados por Aether", "dialog.model.unpaid.addMore.title": "Añadir más modelos de proveedores populares", "dialog.provider.viewAll": "Ver más proveedores", @@ -128,21 +128,21 @@ export const dict = { "provider.connect.status.waiting": "Esperando autorización...", "provider.connect.status.failed": "Autorización fallida: {{error}}", "provider.connect.apiKey.description": - "Introduce tu clave API de {{provider}} para conectar tu cuenta y usar modelos de {{provider}} en OpenCode.", + "Introduce tu clave API de {{provider}} para conectar tu cuenta y usar modelos de {{provider}} en Aether.", "provider.connect.apiKey.label": "Clave API de {{provider}}", "provider.connect.apiKey.placeholder": "Clave API", "provider.connect.apiKey.required": "La clave API es obligatoria", "provider.connect.opencodeZen.line1": - "OpenCode Zen te da acceso a un conjunto curado de modelos fiables optimizados para agentes de programación.", + "Aether Zen te da acceso a un conjunto curado de modelos fiables optimizados para agentes de programación.", "provider.connect.opencodeZen.line2": "Con una sola clave API obtendrás acceso a modelos como Claude, GPT, Gemini, GLM y más.", "provider.connect.opencodeZen.visit.prefix": "Visita ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " para obtener tu clave API.", "provider.connect.oauth.code.visit.prefix": "Visita ", "provider.connect.oauth.code.visit.link": "este enlace", "provider.connect.oauth.code.visit.suffix": - " para obtener tu código de autorización para conectar tu cuenta y usar modelos de {{provider}} en OpenCode.", + " para obtener tu código de autorización para conectar tu cuenta y usar modelos de {{provider}} en Aether.", "provider.connect.oauth.code.label": "Código de autorización {{method}}", "provider.connect.oauth.code.placeholder": "Código de autorización", "provider.connect.oauth.code.required": "El código de autorización es obligatorio", @@ -150,7 +150,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "Visita ", "provider.connect.oauth.auto.visit.link": "este enlace", "provider.connect.oauth.auto.visit.suffix": - " e introduce el código a continuación para conectar tu cuenta y usar modelos de {{provider}} en OpenCode.", + " e introduce el código a continuación para conectar tu cuenta y usar modelos de {{provider}} en Aether.", "provider.connect.oauth.auto.confirmationCode": "Código de confirmación", "provider.connect.toast.connected.title": "{{provider}} conectado", "provider.connect.toast.connected.description": "Los modelos de {{provider}} ahora están disponibles para usar.", @@ -307,7 +307,7 @@ export const dict = { "dialog.directory.empty": "No se encontraron carpetas", "dialog.server.title": "Servidores", - "dialog.server.description": "Cambiar a qué servidor de OpenCode se conecta esta app.", + "dialog.server.description": "Cambiar a qué servidor de Aether se conecta esta app.", "dialog.server.search.placeholder": "Buscar servidores", "dialog.server.empty": "No hay servidores aún", "dialog.server.add.title": "Añadir un servidor", @@ -452,7 +452,7 @@ export const dict = { "error.page.action.checking": "Comprobando...", "error.page.action.checkUpdates": "Buscar actualizaciones", "error.page.action.updateTo": "Actualizar a {{version}}", - "error.page.report.prefix": "Por favor reporta este error al equipo de OpenCode", + "error.page.report.prefix": "Por favor reporta este error al equipo de Aether", "error.page.report.discord": "en Discord", "error.page.version": "Versión: {{version}}", @@ -471,7 +471,7 @@ export const dict = { "error.chain.didYouMean": "¿Quisiste decir: {{suggestions}}", "error.chain.modelNotFound": "Modelo no encontrado: {{provider}}/{{model}}", "error.chain.checkConfig": "Comprueba los nombres de proveedor/modelo en tu configuración (opencode.json)", - "error.chain.mcpFailed": 'El servidor MCP "{{name}}" falló. Nota, OpenCode no soporta autenticación MCP todavía.', + "error.chain.mcpFailed": 'El servidor MCP "{{name}}" falló. Nota, Aether no soporta autenticación MCP todavía.', "error.chain.providerAuthFailed": "Autenticación de proveedor fallida ({{provider}}): {{message}}", "error.chain.providerInitFailed": 'Fallo al inicializar proveedor "{{provider}}". Comprueba credenciales y configuración.', @@ -608,13 +608,13 @@ export const dict = { "sidebar.workspaces.enable": "Habilitar espacios de trabajo", "sidebar.workspaces.disable": "Deshabilitar espacios de trabajo", "sidebar.gettingStarted.title": "Empezando", - "sidebar.gettingStarted.line1": "OpenCode incluye modelos gratuitos para que puedas empezar inmediatamente.", + "sidebar.gettingStarted.line1": "Aether incluye modelos gratuitos para que puedas empezar inmediatamente.", "sidebar.gettingStarted.line2": "Conecta cualquier proveedor para usar modelos, inc. Claude, GPT, Gemini etc.", "sidebar.project.recentSessions": "Sesiones recientes", "sidebar.project.viewAllSessions": "Ver todas las sesiones", "sidebar.project.clearNotifications": "Borrar notificaciones", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "Escritorio", "settings.section.server": "Servidor", @@ -622,7 +622,7 @@ export const dict = { "settings.tab.shortcuts": "Atajos", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "Integración con WSL", - "settings.desktop.wsl.description": "Ejecutar el servidor OpenCode dentro de WSL en Windows.", + "settings.desktop.wsl.description": "Ejecutar el servidor Aether dentro de WSL en Windows.", "settings.general.section.appearance": "Apariencia", "settings.general.section.notifications": "Notificaciones del sistema", @@ -638,13 +638,13 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "Idioma", - "settings.general.row.language.description": "Cambiar el idioma de visualización para OpenCode", + "settings.general.row.language.description": "Cambiar el idioma de visualización para Aether", "settings.general.row.appearance.title": "Apariencia", - "settings.general.row.appearance.description": "Personaliza cómo se ve OpenCode en tu dispositivo", + "settings.general.row.appearance.description": "Personaliza cómo se ve Aether en tu dispositivo", "settings.general.row.colorScheme.title": "Esquema de color", - "settings.general.row.colorScheme.description": "Elige si OpenCode sigue el tema del sistema, claro u oscuro", + "settings.general.row.colorScheme.description": "Elige si Aether sigue el tema del sistema, claro u oscuro", "settings.general.row.theme.title": "Tema", - "settings.general.row.theme.description": "Personaliza el tema de OpenCode.", + "settings.general.row.theme.description": "Personaliza el tema de Aether.", "settings.general.row.font.title": "Fuente", "settings.general.row.font.description": "Personaliza la fuente monoespaciada usada en bloques de código", "settings.general.row.followup.title": "Comportamiento de seguimiento", @@ -671,13 +671,13 @@ export const dict = { 'Mostrar ventanas emergentes de "Novedades" después de las actualizaciones', "settings.updates.row.startup.title": "Buscar actualizaciones al iniciar", - "settings.updates.row.startup.description": "Buscar actualizaciones automáticamente cuando se inicia OpenCode", + "settings.updates.row.startup.description": "Buscar actualizaciones automáticamente cuando se inicia Aether", "settings.updates.row.check.title": "Buscar actualizaciones", "settings.updates.row.check.description": "Buscar actualizaciones manualmente e instalarlas si hay alguna", "settings.updates.action.checkNow": "Buscar ahora", "settings.updates.action.checking": "Buscando...", "settings.updates.toast.latest.title": "Estás al día", - "settings.updates.toast.latest.description": "Estás usando la última versión de OpenCode.", + "settings.updates.toast.latest.description": "Estás usando la última versión de Aether.", "font.option.system": "Predeterminado del sistema", "font.option.ibmPlexMono": "IBM Plex Mono", "font.option.cascadiaCode": "Cascadia Code", diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts index 31b1c699be32..812ac179b6c8 100644 --- a/packages/app/src/i18n/fr.ts +++ b/packages/app/src/i18n/fr.ts @@ -105,7 +105,7 @@ export const dict = { "dialog.model.manage": "Gérer les modèles", "dialog.model.manage.description": "Personnalisez les modèles qui apparaissent dans le sélecteur.", "dialog.model.manage.provider.toggle": "Basculer tous les modèles {{provider}}", - "dialog.model.unpaid.freeModels.title": "Modèles gratuits fournis par OpenCode", + "dialog.model.unpaid.freeModels.title": "Modèles gratuits fournis par Aether", "dialog.model.unpaid.addMore.title": "Ajouter plus de modèles de fournisseurs populaires", "dialog.provider.viewAll": "Voir plus de fournisseurs", "provider.connect.title": "Connecter {{provider}}", @@ -116,21 +116,21 @@ export const dict = { "provider.connect.status.waiting": "En attente d'autorisation...", "provider.connect.status.failed": "Échec de l'autorisation : {{error}}", "provider.connect.apiKey.description": - "Entrez votre clé API {{provider}} pour connecter votre compte et utiliser les modèles {{provider}} dans OpenCode.", + "Entrez votre clé API {{provider}} pour connecter votre compte et utiliser les modèles {{provider}} dans Aether.", "provider.connect.apiKey.label": "Clé API {{provider}}", "provider.connect.apiKey.placeholder": "Clé API", "provider.connect.apiKey.required": "La clé API est requise", "provider.connect.opencodeZen.line1": - "OpenCode Zen vous donne accès à un ensemble sélectionné de modèles fiables et optimisés pour les agents de codage.", + "Aether Zen vous donne accès à un ensemble sélectionné de modèles fiables et optimisés pour les agents de codage.", "provider.connect.opencodeZen.line2": "Avec une seule clé API, vous aurez accès à des modèles tels que Claude, GPT, Gemini, GLM et plus encore.", "provider.connect.opencodeZen.visit.prefix": "Visitez ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " pour récupérer votre clé API.", "provider.connect.oauth.code.visit.prefix": "Visitez ", "provider.connect.oauth.code.visit.link": "ce lien", "provider.connect.oauth.code.visit.suffix": - " pour récupérer votre code d'autorisation afin de connecter votre compte et utiliser les modèles {{provider}} dans OpenCode.", + " pour récupérer votre code d'autorisation afin de connecter votre compte et utiliser les modèles {{provider}} dans Aether.", "provider.connect.oauth.code.label": "Code d'autorisation {{method}}", "provider.connect.oauth.code.placeholder": "Code d'autorisation", "provider.connect.oauth.code.required": "Le code d'autorisation est requis", @@ -138,7 +138,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "Visitez ", "provider.connect.oauth.auto.visit.link": "ce lien", "provider.connect.oauth.auto.visit.suffix": - " et entrez le code ci-dessous pour connecter votre compte et utiliser les modèles {{provider}} dans OpenCode.", + " et entrez le code ci-dessous pour connecter votre compte et utiliser les modèles {{provider}} dans Aether.", "provider.connect.oauth.auto.confirmationCode": "Code de confirmation", "provider.connect.toast.connected.title": "{{provider}} connecté", "provider.connect.toast.connected.description": "Les modèles {{provider}} sont maintenant disponibles.", @@ -282,7 +282,7 @@ export const dict = { "dialog.directory.search.placeholder": "Rechercher des dossiers", "dialog.directory.empty": "Aucun dossier trouvé", "dialog.server.title": "Serveurs", - "dialog.server.description": "Changez le serveur OpenCode auquel cette application se connecte.", + "dialog.server.description": "Changez le serveur Aether auquel cette application se connecte.", "dialog.server.search.placeholder": "Rechercher des serveurs", "dialog.server.empty": "Aucun serveur pour l'instant", "dialog.server.add.title": "Ajouter un serveur", @@ -409,7 +409,7 @@ export const dict = { "error.page.action.checking": "Vérification...", "error.page.action.checkUpdates": "Vérifier les mises à jour", "error.page.action.updateTo": "Mettre à jour vers {{version}}", - "error.page.report.prefix": "Veuillez signaler cette erreur à l'équipe OpenCode", + "error.page.report.prefix": "Veuillez signaler cette erreur à l'équipe Aether", "error.page.report.discord": "sur Discord", "error.page.version": "Version : {{version}}", "error.dev.rootNotFound": @@ -427,7 +427,7 @@ export const dict = { "error.chain.modelNotFound": "Modèle introuvable : {{provider}}/{{model}}", "error.chain.checkConfig": "Vérifiez votre configuration (opencode.json) pour les noms de fournisseur/modèle", "error.chain.mcpFailed": - "Le serveur MCP \"{{name}}\" a échoué. Notez qu'OpenCode ne supporte pas encore l'authentification MCP.", + "Le serveur MCP \"{{name}}\" a échoué. Notez qu'Aether ne supporte pas encore l'authentification MCP.", "error.chain.providerAuthFailed": "Échec de l'authentification du fournisseur ({{provider}}) : {{message}}", "error.chain.providerInitFailed": 'Échec de l\'initialisation du fournisseur "{{provider}}". Vérifiez les identifiants et la configuration.', @@ -550,20 +550,20 @@ export const dict = { "sidebar.workspaces.disable": "Désactiver les espaces de travail", "sidebar.gettingStarted.title": "Commencer", "sidebar.gettingStarted.line1": - "OpenCode inclut des modèles gratuits pour que vous puissiez commencer immédiatement.", + "Aether inclut des modèles gratuits pour que vous puissiez commencer immédiatement.", "sidebar.gettingStarted.line2": "Connectez n'importe quel fournisseur pour utiliser des modèles, y compris Claude, GPT, Gemini etc.", "sidebar.project.recentSessions": "Sessions récentes", "sidebar.project.viewAllSessions": "Voir toutes les sessions", "sidebar.project.clearNotifications": "Effacer les notifications", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "Bureau", "settings.section.server": "Serveur", "settings.tab.general": "Général", "settings.tab.shortcuts": "Raccourcis", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "Intégration WSL", - "settings.desktop.wsl.description": "Exécuter le serveur OpenCode dans WSL sur Windows.", + "settings.desktop.wsl.description": "Exécuter le serveur Aether dans WSL sur Windows.", "settings.general.section.appearance": "Apparence", "settings.general.section.notifications": "Notifications système", "settings.general.section.updates": "Mises à jour", @@ -577,13 +577,13 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "Langue", - "settings.general.row.language.description": "Changer la langue d'affichage pour OpenCode", + "settings.general.row.language.description": "Changer la langue d'affichage pour Aether", "settings.general.row.appearance.title": "Apparence", - "settings.general.row.appearance.description": "Personnaliser l'apparence d'OpenCode sur votre appareil", + "settings.general.row.appearance.description": "Personnaliser l'apparence d'Aether sur votre appareil", "settings.general.row.colorScheme.title": "Schéma de couleurs", - "settings.general.row.colorScheme.description": "Choisissez si OpenCode suit le thème système, clair ou sombre", + "settings.general.row.colorScheme.description": "Choisissez si Aether suit le thème système, clair ou sombre", "settings.general.row.theme.title": "Thème", - "settings.general.row.theme.description": "Personnaliser le thème d'OpenCode.", + "settings.general.row.theme.description": "Personnaliser le thème d'Aether.", "settings.general.row.font.title": "Police", "settings.general.row.font.description": "Personnaliser la police mono utilisée dans les blocs de code", "settings.general.row.followup.title": "Comportement de suivi", @@ -607,13 +607,13 @@ export const dict = { "settings.general.row.releaseNotes.title": "Notes de version", "settings.general.row.releaseNotes.description": 'Afficher des pop-ups "Quoi de neuf" après les mises à jour', "settings.updates.row.startup.title": "Vérifier les mises à jour au démarrage", - "settings.updates.row.startup.description": "Vérifier automatiquement les mises à jour au lancement d'OpenCode", + "settings.updates.row.startup.description": "Vérifier automatiquement les mises à jour au lancement d'Aether", "settings.updates.row.check.title": "Vérifier les mises à jour", "settings.updates.row.check.description": "Vérifier manuellement les mises à jour et installer si disponible", "settings.updates.action.checkNow": "Vérifier maintenant", "settings.updates.action.checking": "Vérification...", "settings.updates.toast.latest.title": "Vous êtes à jour", - "settings.updates.toast.latest.description": "Vous utilisez la dernière version d'OpenCode.", + "settings.updates.toast.latest.description": "Vous utilisez la dernière version d'Aether.", "font.option.system": "Par défaut du système", "font.option.ibmPlexMono": "IBM Plex Mono", "font.option.cascadiaCode": "Cascadia Code", diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts index ee6fd6b69435..3793dfdd5d31 100644 --- a/packages/app/src/i18n/ja.ts +++ b/packages/app/src/i18n/ja.ts @@ -105,7 +105,7 @@ export const dict = { "dialog.model.manage": "モデルを管理", "dialog.model.manage.description": "モデルセレクターに表示するモデルをカスタマイズします。", "dialog.model.manage.provider.toggle": "すべての{{provider}}モデルを切り替え", - "dialog.model.unpaid.freeModels.title": "OpenCodeが提供する無料モデル", + "dialog.model.unpaid.freeModels.title": "Aetherが提供する無料モデル", "dialog.model.unpaid.addMore.title": "人気のプロバイダーからモデルを追加", "dialog.provider.viewAll": "さらにプロバイダーを表示", "provider.connect.title": "{{provider}}を接続", @@ -116,20 +116,20 @@ export const dict = { "provider.connect.status.waiting": "認証を待機中...", "provider.connect.status.failed": "認証に失敗しました: {{error}}", "provider.connect.apiKey.description": - "{{provider}}のAPIキーを入力してアカウントを接続し、OpenCodeで{{provider}}モデルを使用します。", + "{{provider}}のAPIキーを入力してアカウントを接続し、Aetherで{{provider}}モデルを使用します。", "provider.connect.apiKey.label": "{{provider}} APIキー", "provider.connect.apiKey.placeholder": "APIキー", "provider.connect.apiKey.required": "APIキーが必要です", "provider.connect.opencodeZen.line1": - "OpenCode Zenは、コーディングエージェント向けに最適化された信頼性の高いモデルへのアクセスを提供します。", + "Aether Zenは、コーディングエージェント向けに最適化された信頼性の高いモデルへのアクセスを提供します。", "provider.connect.opencodeZen.line2": "1つのAPIキーで、Claude、GPT、Gemini、GLMなどのモデルにアクセスできます。", "provider.connect.opencodeZen.visit.prefix": " ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " にアクセスしてAPIキーを取得してください。", "provider.connect.oauth.code.visit.prefix": " ", "provider.connect.oauth.code.visit.link": "このリンク", "provider.connect.oauth.code.visit.suffix": - " にアクセスして認証コードを取得し、アカウントを接続してOpenCodeで{{provider}}モデルを使用してください。", + " にアクセスして認証コードを取得し、アカウントを接続してAetherで{{provider}}モデルを使用してください。", "provider.connect.oauth.code.label": "{{method}} 認証コード", "provider.connect.oauth.code.placeholder": "認証コード", "provider.connect.oauth.code.required": "認証コードが必要です", @@ -137,7 +137,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": " ", "provider.connect.oauth.auto.visit.link": "このリンク", "provider.connect.oauth.auto.visit.suffix": - " にアクセスし、以下のコードを入力してアカウントを接続し、OpenCodeで{{provider}}モデルを使用してください。", + " にアクセスし、以下のコードを入力してアカウントを接続し、Aetherで{{provider}}モデルを使用してください。", "provider.connect.oauth.auto.confirmationCode": "確認コード", "provider.connect.toast.connected.title": "{{provider}}が接続されました", "provider.connect.toast.connected.description": "{{provider}}モデルが使用可能になりました。", @@ -280,7 +280,7 @@ export const dict = { "dialog.directory.search.placeholder": "フォルダを検索", "dialog.directory.empty": "フォルダが見つかりません", "dialog.server.title": "サーバー", - "dialog.server.description": "このアプリが接続するOpenCodeサーバーを切り替えます。", + "dialog.server.description": "このアプリが接続するAetherサーバーを切り替えます。", "dialog.server.search.placeholder": "サーバーを検索", "dialog.server.empty": "サーバーはまだありません", "dialog.server.add.title": "サーバーを追加", @@ -405,7 +405,7 @@ export const dict = { "error.page.action.checking": "確認中...", "error.page.action.checkUpdates": "アップデートを確認", "error.page.action.updateTo": "{{version}}にアップデート", - "error.page.report.prefix": "このエラーをOpenCodeチームに報告してください: ", + "error.page.report.prefix": "このエラーをAetherチームに報告してください: ", "error.page.report.discord": "Discord", "error.page.version": "バージョン: {{version}}", "error.dev.rootNotFound": @@ -421,7 +421,7 @@ export const dict = { "error.chain.didYouMean": "もしかして: {{suggestions}}", "error.chain.modelNotFound": "モデルが見つかりません: {{provider}}/{{model}}", "error.chain.checkConfig": "config (opencode.json) のプロバイダー/モデル名を確認してください", - "error.chain.mcpFailed": 'MCPサーバー "{{name}}" が失敗しました。注意: OpenCodeはまだMCP認証をサポートしていません。', + "error.chain.mcpFailed": 'MCPサーバー "{{name}}" が失敗しました。注意: AetherはまだMCP認証をサポートしていません。', "error.chain.providerAuthFailed": "プロバイダー認証に失敗しました ({{provider}}): {{message}}", "error.chain.providerInitFailed": 'プロバイダー "{{provider}}" の初期化に失敗しました。認証情報と設定を確認してください。', @@ -541,19 +541,19 @@ export const dict = { "sidebar.workspaces.enable": "ワークスペースを有効化", "sidebar.workspaces.disable": "ワークスペースを無効化", "sidebar.gettingStarted.title": "はじめに", - "sidebar.gettingStarted.line1": "OpenCodeには無料モデルが含まれているため、すぐに開始できます。", + "sidebar.gettingStarted.line1": "Aetherには無料モデルが含まれているため、すぐに開始できます。", "sidebar.gettingStarted.line2": "プロバイダーを接続して、Claude、GPT、Geminiなどのモデルを使用できます。", "sidebar.project.recentSessions": "最近のセッション", "sidebar.project.viewAllSessions": "すべてのセッションを表示", "sidebar.project.clearNotifications": "通知をクリア", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "デスクトップ", "settings.section.server": "サーバー", "settings.tab.general": "一般", "settings.tab.shortcuts": "ショートカット", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "WSL連携", - "settings.desktop.wsl.description": "WindowsのWSL環境でOpenCodeサーバーを実行します。", + "settings.desktop.wsl.description": "WindowsのWSL環境でAetherサーバーを実行します。", "settings.general.section.appearance": "外観", "settings.general.section.notifications": "システム通知", "settings.general.section.updates": "アップデート", @@ -567,13 +567,13 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "言語", - "settings.general.row.language.description": "OpenCodeの表示言語を変更します", + "settings.general.row.language.description": "Aetherの表示言語を変更します", "settings.general.row.appearance.title": "外観", - "settings.general.row.appearance.description": "デバイスでのOpenCodeの表示をカスタマイズします", + "settings.general.row.appearance.description": "デバイスでのAetherの表示をカスタマイズします", "settings.general.row.colorScheme.title": "配色", - "settings.general.row.colorScheme.description": "OpenCodeがシステム、ライト、またはダークテーマに従うかを選択します", + "settings.general.row.colorScheme.description": "Aetherがシステム、ライト、またはダークテーマに従うかを選択します", "settings.general.row.theme.title": "テーマ", - "settings.general.row.theme.description": "OpenCodeのテーマをカスタマイズします。", + "settings.general.row.theme.description": "Aetherのテーマをカスタマイズします。", "settings.general.row.font.title": "フォント", "settings.general.row.font.description": "コードブロックで使用する等幅フォントをカスタマイズします", "settings.general.row.followup.title": "フォローアップの動作", @@ -596,13 +596,13 @@ export const dict = { "settings.general.row.releaseNotes.title": "リリースノート", "settings.general.row.releaseNotes.description": "アップデート後に「新機能」ポップアップを表示", "settings.updates.row.startup.title": "起動時にアップデートを確認", - "settings.updates.row.startup.description": "OpenCode の起動時に自動でアップデートを確認します", + "settings.updates.row.startup.description": "Aether の起動時に自動でアップデートを確認します", "settings.updates.row.check.title": "アップデートを確認", "settings.updates.row.check.description": "手動でアップデートを確認し、利用可能ならインストールします", "settings.updates.action.checkNow": "今すぐ確認", "settings.updates.action.checking": "確認中...", "settings.updates.toast.latest.title": "最新です", - "settings.updates.toast.latest.description": "OpenCode は最新バージョンです。", + "settings.updates.toast.latest.description": "Aether は最新バージョンです。", "font.option.system": "システムデフォルト", "font.option.ibmPlexMono": "IBM Plex Mono", "font.option.cascadiaCode": "Cascadia Code", diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts index 2556946c254a..c9c029875ba8 100644 --- a/packages/app/src/i18n/ko.ts +++ b/packages/app/src/i18n/ko.ts @@ -109,7 +109,7 @@ export const dict = { "dialog.model.manage": "모델 관리", "dialog.model.manage.description": "모델 선택기에 표시할 모델 사용자 지정", "dialog.model.manage.provider.toggle": "모든 {{provider}} 모델 토글", - "dialog.model.unpaid.freeModels.title": "OpenCode에서 제공하는 무료 모델", + "dialog.model.unpaid.freeModels.title": "Aether에서 제공하는 무료 모델", "dialog.model.unpaid.addMore.title": "인기 공급자의 모델 추가", "dialog.provider.viewAll": "더 많은 공급자 보기", "provider.connect.title": "{{provider}} 연결", @@ -120,20 +120,20 @@ export const dict = { "provider.connect.status.waiting": "인증 대기 중...", "provider.connect.status.failed": "인증 실패: {{error}}", "provider.connect.apiKey.description": - "{{provider}} API 키를 입력하여 계정을 연결하고 OpenCode에서 {{provider}} 모델을 사용하세요.", + "{{provider}} API 키를 입력하여 계정을 연결하고 Aether에서 {{provider}} 모델을 사용하세요.", "provider.connect.apiKey.label": "{{provider}} API 키", "provider.connect.apiKey.placeholder": "API 키", "provider.connect.apiKey.required": "API 키가 필요합니다", "provider.connect.opencodeZen.line1": - "OpenCode Zen은 코딩 에이전트를 위해 최적화된 신뢰할 수 있는 엄선된 모델에 대한 액세스를 제공합니다.", + "Aether Zen은 코딩 에이전트를 위해 최적화된 신뢰할 수 있는 엄선된 모델에 대한 액세스를 제공합니다.", "provider.connect.opencodeZen.line2": "단일 API 키로 Claude, GPT, Gemini, GLM 등 다양한 모델에 액세스할 수 있습니다.", "provider.connect.opencodeZen.visit.prefix": "다음 ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": "을 방문하여 API 키를 받으세요.", "provider.connect.oauth.code.visit.prefix": "다음 ", "provider.connect.oauth.code.visit.link": "이 링크", "provider.connect.oauth.code.visit.suffix": - "를 방문하여 인증 코드를 받아 계정을 연결하고 OpenCode에서 {{provider}} 모델을 사용하세요.", + "를 방문하여 인증 코드를 받아 계정을 연결하고 Aether에서 {{provider}} 모델을 사용하세요.", "provider.connect.oauth.code.label": "{{method}} 인증 코드", "provider.connect.oauth.code.placeholder": "인증 코드", "provider.connect.oauth.code.required": "인증 코드가 필요합니다", @@ -141,7 +141,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "다음 ", "provider.connect.oauth.auto.visit.link": "이 링크", "provider.connect.oauth.auto.visit.suffix": - "를 방문하고 아래 코드를 입력하여 계정을 연결하고 OpenCode에서 {{provider}} 모델을 사용하세요.", + "를 방문하고 아래 코드를 입력하여 계정을 연결하고 Aether에서 {{provider}} 모델을 사용하세요.", "provider.connect.oauth.auto.confirmationCode": "확인 코드", "provider.connect.toast.connected.title": "{{provider}} 연결됨", "provider.connect.toast.connected.description": "이제 {{provider}} 모델을 사용할 수 있습니다.", @@ -284,7 +284,7 @@ export const dict = { "dialog.directory.search.placeholder": "폴더 검색", "dialog.directory.empty": "폴더 없음", "dialog.server.title": "서버", - "dialog.server.description": "이 앱이 연결할 OpenCode 서버를 전환합니다.", + "dialog.server.description": "이 앱이 연결할 Aether 서버를 전환합니다.", "dialog.server.search.placeholder": "서버 검색", "dialog.server.empty": "서버 없음", "dialog.server.add.title": "서버 추가", @@ -408,7 +408,7 @@ export const dict = { "error.page.action.checking": "확인 중...", "error.page.action.checkUpdates": "업데이트 확인", "error.page.action.updateTo": "{{version}} 버전으로 업데이트", - "error.page.report.prefix": "이 오류를 OpenCode 팀에 제보해 주세요: ", + "error.page.report.prefix": "이 오류를 Aether 팀에 제보해 주세요: ", "error.page.report.discord": "Discord", "error.page.version": "버전: {{version}}", "error.dev.rootNotFound": @@ -424,7 +424,7 @@ export const dict = { "error.chain.didYouMean": "혹시 {{suggestions}}을(를) 의미하셨나요?", "error.chain.modelNotFound": "모델을 찾을 수 없음: {{provider}}/{{model}}", "error.chain.checkConfig": "구성(opencode.json)의 공급자/모델 이름을 확인하세요", - "error.chain.mcpFailed": 'MCP 서버 "{{name}}" 실패. 참고: OpenCode는 아직 MCP 인증을 지원하지 않습니다.', + "error.chain.mcpFailed": 'MCP 서버 "{{name}}" 실패. 참고: Aether는 아직 MCP 인증을 지원하지 않습니다.', "error.chain.providerAuthFailed": "공급자 인증 실패 ({{provider}}): {{message}}", "error.chain.providerInitFailed": '공급자 "{{provider}}" 초기화 실패. 자격 증명과 구성을 확인하세요.', "error.chain.configJsonInvalid": "{{path}}의 구성 파일이 유효한 JSON(C)가 아닙니다", @@ -542,19 +542,19 @@ export const dict = { "sidebar.workspaces.enable": "작업 공간 활성화", "sidebar.workspaces.disable": "작업 공간 비활성화", "sidebar.gettingStarted.title": "시작하기", - "sidebar.gettingStarted.line1": "OpenCode에는 무료 모델이 포함되어 있어 즉시 시작할 수 있습니다.", + "sidebar.gettingStarted.line1": "Aether에는 무료 모델이 포함되어 있어 즉시 시작할 수 있습니다.", "sidebar.gettingStarted.line2": "Claude, GPT, Gemini 등을 포함한 모델을 사용하려면 공급자를 연결하세요.", "sidebar.project.recentSessions": "최근 세션", "sidebar.project.viewAllSessions": "모든 세션 보기", "sidebar.project.clearNotifications": "알림 지우기", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "데스크톱", "settings.section.server": "서버", "settings.tab.general": "일반", "settings.tab.shortcuts": "단축키", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "WSL 통합", - "settings.desktop.wsl.description": "Windows의 WSL 내부에서 OpenCode 서버를 실행합니다.", + "settings.desktop.wsl.description": "Windows의 WSL 내부에서 Aether 서버를 실행합니다.", "settings.general.section.appearance": "모양", "settings.general.section.notifications": "시스템 알림", "settings.general.section.updates": "업데이트", @@ -568,13 +568,13 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "언어", - "settings.general.row.language.description": "OpenCode 표시 언어 변경", + "settings.general.row.language.description": "Aether 표시 언어 변경", "settings.general.row.appearance.title": "모양", - "settings.general.row.appearance.description": "기기에서 OpenCode가 보이는 방식 사용자 지정", + "settings.general.row.appearance.description": "기기에서 Aether가 보이는 방식 사용자 지정", "settings.general.row.colorScheme.title": "색상 테마", - "settings.general.row.colorScheme.description": "OpenCode가 시스템, 라이트 또는 다크 테마를 따를지 선택하세요", + "settings.general.row.colorScheme.description": "Aether가 시스템, 라이트 또는 다크 테마를 따를지 선택하세요", "settings.general.row.theme.title": "테마", - "settings.general.row.theme.description": "OpenCode 테마 사용자 지정", + "settings.general.row.theme.description": "Aether 테마 사용자 지정", "settings.general.row.font.title": "글꼴", "settings.general.row.font.description": "코드 블록에 사용되는 고정폭 글꼴 사용자 지정", "settings.general.row.followup.title": "후속 조치 동작", @@ -596,13 +596,13 @@ export const dict = { "settings.general.row.releaseNotes.title": "릴리스 노트", "settings.general.row.releaseNotes.description": "업데이트 후 '새 소식' 팝업 표시", "settings.updates.row.startup.title": "시작 시 업데이트 확인", - "settings.updates.row.startup.description": "OpenCode를 실행할 때 업데이트를 자동으로 확인합니다", + "settings.updates.row.startup.description": "Aether를 실행할 때 업데이트를 자동으로 확인합니다", "settings.updates.row.check.title": "업데이트 확인", "settings.updates.row.check.description": "업데이트를 수동으로 확인하고, 사용 가능하면 설치합니다", "settings.updates.action.checkNow": "지금 확인", "settings.updates.action.checking": "확인 중...", "settings.updates.toast.latest.title": "최신 상태입니다", - "settings.updates.toast.latest.description": "현재 최신 버전의 OpenCode를 사용 중입니다.", + "settings.updates.toast.latest.description": "현재 최신 버전의 Aether를 사용 중입니다.", "font.option.system": "시스템 기본값", "font.option.ibmPlexMono": "IBM Plex Mono", "font.option.cascadiaCode": "Cascadia Code", diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts index d652738be2e4..941b26440a7e 100644 --- a/packages/app/src/i18n/no.ts +++ b/packages/app/src/i18n/no.ts @@ -118,7 +118,7 @@ export const dict = { "dialog.model.manage.description": "Tilpass hvilke modeller som vises i modellvelgeren.", "dialog.model.manage.provider.toggle": "Veksle alle {{provider}}-modeller", - "dialog.model.unpaid.freeModels.title": "Gratis modeller levert av OpenCode", + "dialog.model.unpaid.freeModels.title": "Gratis modeller levert av Aether", "dialog.model.unpaid.addMore.title": "Legg til flere modeller fra populære leverandører", "dialog.provider.viewAll": "Vis flere leverandører", @@ -131,21 +131,21 @@ export const dict = { "provider.connect.status.waiting": "Venter på autorisering...", "provider.connect.status.failed": "Autorisering mislyktes: {{error}}", "provider.connect.apiKey.description": - "Skriv inn din {{provider}} API-nøkkel for å koble til kontoen din og bruke {{provider}}-modeller i OpenCode.", + "Skriv inn din {{provider}} API-nøkkel for å koble til kontoen din og bruke {{provider}}-modeller i Aether.", "provider.connect.apiKey.label": "{{provider}} API-nøkkel", "provider.connect.apiKey.placeholder": "API-nøkkel", "provider.connect.apiKey.required": "API-nøkkel er påkrevd", "provider.connect.opencodeZen.line1": - "OpenCode Zen gir deg tilgang til et utvalg av pålitelige optimaliserte modeller for kodeagenter.", + "Aether Zen gir deg tilgang til et utvalg av pålitelige optimaliserte modeller for kodeagenter.", "provider.connect.opencodeZen.line2": "Med én enkelt API-nøkkel får du tilgang til modeller som Claude, GPT, Gemini, GLM og flere.", "provider.connect.opencodeZen.visit.prefix": "Besøk ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " for å hente API-nøkkelen din.", "provider.connect.oauth.code.visit.prefix": "Besøk ", "provider.connect.oauth.code.visit.link": "denne lenken", "provider.connect.oauth.code.visit.suffix": - " for å hente autorisasjonskoden din for å koble til kontoen din og bruke {{provider}}-modeller i OpenCode.", + " for å hente autorisasjonskoden din for å koble til kontoen din og bruke {{provider}}-modeller i Aether.", "provider.connect.oauth.code.label": "{{method}} autorisasjonskode", "provider.connect.oauth.code.placeholder": "Autorisasjonskode", "provider.connect.oauth.code.required": "Autorisasjonskode er påkrevd", @@ -153,7 +153,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "Besøk ", "provider.connect.oauth.auto.visit.link": "denne lenken", "provider.connect.oauth.auto.visit.suffix": - " og skriv inn koden nedenfor for å koble til kontoen din og bruke {{provider}}-modeller i OpenCode.", + " og skriv inn koden nedenfor for å koble til kontoen din og bruke {{provider}}-modeller i Aether.", "provider.connect.oauth.auto.confirmationCode": "Bekreftelseskode", "provider.connect.toast.connected.title": "{{provider}} tilkoblet", "provider.connect.toast.connected.description": "{{provider}}-modeller er nå tilgjengelige.", @@ -309,7 +309,7 @@ export const dict = { "dialog.directory.empty": "Ingen mapper funnet", "dialog.server.title": "Servere", - "dialog.server.description": "Bytt hvilken OpenCode-server denne appen kobler til.", + "dialog.server.description": "Bytt hvilken Aether-server denne appen kobler til.", "dialog.server.search.placeholder": "Søk etter servere", "dialog.server.empty": "Ingen servere ennå", "dialog.server.add.title": "Legg til en server", @@ -452,7 +452,7 @@ export const dict = { "error.page.action.checking": "Sjekker...", "error.page.action.checkUpdates": "Se etter oppdateringer", "error.page.action.updateTo": "Oppdater til {{version}}", - "error.page.report.prefix": "Vennligst rapporter denne feilen til OpenCode-teamet", + "error.page.report.prefix": "Vennligst rapporter denne feilen til Aether-teamet", "error.page.report.discord": "på Discord", "error.page.version": "Versjon: {{version}}", @@ -471,7 +471,7 @@ export const dict = { "error.chain.didYouMean": "Mente du: {{suggestions}}", "error.chain.modelNotFound": "Modell ikke funnet: {{provider}}/{{model}}", "error.chain.checkConfig": "Sjekk leverandør-/modellnavnene i konfigurasjonen din (opencode.json)", - "error.chain.mcpFailed": 'MCP-server "{{name}}" mislyktes. Merk at OpenCode ikke støtter MCP-autentisering ennå.', + "error.chain.mcpFailed": 'MCP-server "{{name}}" mislyktes. Merk at Aether ikke støtter MCP-autentisering ennå.', "error.chain.providerAuthFailed": "Leverandørautentisering mislyktes ({{provider}}): {{message}}", "error.chain.providerInitFailed": 'Kunne ikke initialisere leverandør "{{provider}}". Sjekk legitimasjon og konfigurasjon.', @@ -607,13 +607,13 @@ export const dict = { "sidebar.workspaces.enable": "Aktiver arbeidsområder", "sidebar.workspaces.disable": "Deaktiver arbeidsområder", "sidebar.gettingStarted.title": "Kom i gang", - "sidebar.gettingStarted.line1": "OpenCode inkluderer gratis modeller så du kan starte umiddelbart.", + "sidebar.gettingStarted.line1": "Aether inkluderer gratis modeller så du kan starte umiddelbart.", "sidebar.gettingStarted.line2": "Koble til en leverandør for å bruke modeller, inkl. Claude, GPT, Gemini osv.", "sidebar.project.recentSessions": "Nylige sesjoner", "sidebar.project.viewAllSessions": "Vis alle sesjoner", "sidebar.project.clearNotifications": "Fjern varsler", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "Skrivebord", "settings.section.server": "Server", @@ -621,7 +621,7 @@ export const dict = { "settings.tab.shortcuts": "Snarveier", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "WSL-integrasjon", - "settings.desktop.wsl.description": "Kjør OpenCode-serveren i WSL på Windows.", + "settings.desktop.wsl.description": "Kjør Aether-serveren i WSL på Windows.", "settings.general.section.appearance": "Utseende", "settings.general.section.notifications": "Systemvarsler", @@ -637,13 +637,13 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "Språk", - "settings.general.row.language.description": "Endre visningsspråket for OpenCode", + "settings.general.row.language.description": "Endre visningsspråket for Aether", "settings.general.row.appearance.title": "Utseende", - "settings.general.row.appearance.description": "Tilpass hvordan OpenCode ser ut på enheten din", + "settings.general.row.appearance.description": "Tilpass hvordan Aether ser ut på enheten din", "settings.general.row.colorScheme.title": "Fargevalg", - "settings.general.row.colorScheme.description": "Velg om OpenCode skal følge systemets, lyst eller mørkt tema", + "settings.general.row.colorScheme.description": "Velg om Aether skal følge systemets, lyst eller mørkt tema", "settings.general.row.theme.title": "Tema", - "settings.general.row.theme.description": "Tilpass hvordan OpenCode er tematisert.", + "settings.general.row.theme.description": "Tilpass hvordan Aether er tematisert.", "settings.general.row.font.title": "Skrift", "settings.general.row.font.description": "Tilpass mono-skriften som brukes i kodeblokker", "settings.general.row.followup.title": "Oppfølgingsadferd", @@ -666,13 +666,13 @@ export const dict = { "settings.general.row.releaseNotes.description": 'Vis "Hva er nytt"-vinduer etter oppdateringer', "settings.updates.row.startup.title": "Se etter oppdateringer ved oppstart", - "settings.updates.row.startup.description": "Se automatisk etter oppdateringer når OpenCode starter", + "settings.updates.row.startup.description": "Se automatisk etter oppdateringer når Aether starter", "settings.updates.row.check.title": "Se etter oppdateringer", "settings.updates.row.check.description": "Se etter oppdateringer manuelt og installer hvis tilgjengelig", "settings.updates.action.checkNow": "Sjekk nå", "settings.updates.action.checking": "Sjekker...", "settings.updates.toast.latest.title": "Du er oppdatert", - "settings.updates.toast.latest.description": "Du bruker den nyeste versjonen av OpenCode.", + "settings.updates.toast.latest.description": "Du bruker den nyeste versjonen av Aether.", "font.option.system": "Systemstandard", "font.option.ibmPlexMono": "IBM Plex Mono", "font.option.cascadiaCode": "Cascadia Code", diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts index e7ad58c2ff6e..8a80bf38d73b 100644 --- a/packages/app/src/i18n/pl.ts +++ b/packages/app/src/i18n/pl.ts @@ -105,7 +105,7 @@ export const dict = { "dialog.model.manage": "Zarządzaj modelami", "dialog.model.manage.description": "Dostosuj, które modele pojawiają się w wyborze modelu.", "dialog.model.manage.provider.toggle": "Przełącz wszystkie modele {{provider}}", - "dialog.model.unpaid.freeModels.title": "Darmowe modele dostarczane przez OpenCode", + "dialog.model.unpaid.freeModels.title": "Darmowe modele dostarczane przez Aether", "dialog.model.unpaid.addMore.title": "Dodaj więcej modeli od popularnych dostawców", "dialog.provider.viewAll": "Zobacz więcej dostawców", "provider.connect.title": "Połącz {{provider}}", @@ -116,21 +116,21 @@ export const dict = { "provider.connect.status.waiting": "Oczekiwanie na autoryzację...", "provider.connect.status.failed": "Autoryzacja nie powiodła się: {{error}}", "provider.connect.apiKey.description": - "Wprowadź swój klucz API {{provider}}, aby połączyć konto i używać modeli {{provider}} w OpenCode.", + "Wprowadź swój klucz API {{provider}}, aby połączyć konto i używać modeli {{provider}} w Aether.", "provider.connect.apiKey.label": "Klucz API {{provider}}", "provider.connect.apiKey.placeholder": "Klucz API", "provider.connect.apiKey.required": "Klucz API jest wymagany", "provider.connect.opencodeZen.line1": - "OpenCode Zen daje dostęp do wybranego zestawu niezawodnych, zoptymalizowanych modeli dla agentów kodujących.", + "Aether Zen daje dostęp do wybranego zestawu niezawodnych, zoptymalizowanych modeli dla agentów kodujących.", "provider.connect.opencodeZen.line2": "Z jednym kluczem API uzyskasz dostęp do modeli takich jak Claude, GPT, Gemini, GLM i więcej.", "provider.connect.opencodeZen.visit.prefix": "Odwiedź ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": ", aby odebrać swój klucz API.", "provider.connect.oauth.code.visit.prefix": "Odwiedź ", "provider.connect.oauth.code.visit.link": "ten link", "provider.connect.oauth.code.visit.suffix": - ", aby odebrać kod autoryzacyjny, połączyć konto i używać modeli {{provider}} w OpenCode.", + ", aby odebrać kod autoryzacyjny, połączyć konto i używać modeli {{provider}} w Aether.", "provider.connect.oauth.code.label": "Kod autoryzacyjny {{method}}", "provider.connect.oauth.code.placeholder": "Kod autoryzacyjny", "provider.connect.oauth.code.required": "Kod autoryzacyjny jest wymagany", @@ -138,7 +138,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "Odwiedź ", "provider.connect.oauth.auto.visit.link": "ten link", "provider.connect.oauth.auto.visit.suffix": - " i wprowadź poniższy kod, aby połączyć konto i używać modeli {{provider}} w OpenCode.", + " i wprowadź poniższy kod, aby połączyć konto i używać modeli {{provider}} w Aether.", "provider.connect.oauth.auto.confirmationCode": "Kod potwierdzający", "provider.connect.toast.connected.title": "Połączono {{provider}}", "provider.connect.toast.connected.description": "Modele {{provider}} są teraz dostępne do użycia.", @@ -282,7 +282,7 @@ export const dict = { "dialog.directory.search.placeholder": "Szukaj folderów", "dialog.directory.empty": "Nie znaleziono folderów", "dialog.server.title": "Serwery", - "dialog.server.description": "Przełącz serwer OpenCode, z którym łączy się ta aplikacja.", + "dialog.server.description": "Przełącz serwer Aether, z którym łączy się ta aplikacja.", "dialog.server.search.placeholder": "Szukaj serwerów", "dialog.server.empty": "Brak serwerów", "dialog.server.add.title": "Dodaj serwer", @@ -406,7 +406,7 @@ export const dict = { "error.page.action.checking": "Sprawdzanie...", "error.page.action.checkUpdates": "Sprawdź aktualizacje", "error.page.action.updateTo": "Zaktualizuj do {{version}}", - "error.page.report.prefix": "Proszę zgłosić ten błąd do zespołu OpenCode", + "error.page.report.prefix": "Proszę zgłosić ten błąd do zespołu Aether", "error.page.report.discord": "na Discordzie", "error.page.version": "Wersja: {{version}}", "error.dev.rootNotFound": @@ -422,7 +422,7 @@ export const dict = { "error.chain.didYouMean": "Czy miałeś na myśli: {{suggestions}}", "error.chain.modelNotFound": "Model nie znaleziony: {{provider}}/{{model}}", "error.chain.checkConfig": "Sprawdź swoją konfigurację (opencode.json) nazwy dostawców/modeli", - "error.chain.mcpFailed": 'MCP server "{{name}}" failed. Note, OpenCode does not support MCP authentication yet.', + "error.chain.mcpFailed": 'MCP server "{{name}}" failed. Note, Aether does not support MCP authentication yet.', "error.chain.providerAuthFailed": "Uwierzytelnianie dostawcy nie powiodło się ({{provider}}): {{message}}", "error.chain.providerInitFailed": 'Nie udało się zainicjować dostawcy "{{provider}}". Sprawdź poświadczenia i konfigurację.', @@ -542,19 +542,19 @@ export const dict = { "sidebar.workspaces.enable": "Włącz przestrzenie robocze", "sidebar.workspaces.disable": "Wyłącz przestrzenie robocze", "sidebar.gettingStarted.title": "Pierwsze kroki", - "sidebar.gettingStarted.line1": "OpenCode zawiera darmowe modele, więc możesz zacząć od razu.", + "sidebar.gettingStarted.line1": "Aether zawiera darmowe modele, więc możesz zacząć od razu.", "sidebar.gettingStarted.line2": "Połącz dowolnego dostawcę, aby używać modeli, w tym Claude, GPT, Gemini itp.", "sidebar.project.recentSessions": "Ostatnie sesje", "sidebar.project.viewAllSessions": "Zobacz wszystkie sesje", "sidebar.project.clearNotifications": "Wyczyść powiadomienia", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "Pulpit", "settings.section.server": "Serwer", "settings.tab.general": "Ogólne", "settings.tab.shortcuts": "Skróty", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "WSL integration", - "settings.desktop.wsl.description": "Run the OpenCode server inside WSL on Windows.", + "settings.desktop.wsl.description": "Run the Aether server inside WSL on Windows.", "settings.general.section.appearance": "Wygląd", "settings.general.section.notifications": "Powiadomienia systemowe", "settings.general.section.updates": "Aktualizacje", @@ -568,14 +568,14 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "Język", - "settings.general.row.language.description": "Zmień język wyświetlania dla OpenCode", + "settings.general.row.language.description": "Zmień język wyświetlania dla Aether", "settings.general.row.appearance.title": "Wygląd", - "settings.general.row.appearance.description": "Dostosuj wygląd OpenCode na swoim urządzeniu", + "settings.general.row.appearance.description": "Dostosuj wygląd Aether na swoim urządzeniu", "settings.general.row.colorScheme.title": "Schemat kolorów", "settings.general.row.colorScheme.description": - "Wybierz, czy OpenCode ma używać motywu systemowego, jasnego czy ciemnego", + "Wybierz, czy Aether ma używać motywu systemowego, jasnego czy ciemnego", "settings.general.row.theme.title": "Motyw", - "settings.general.row.theme.description": "Dostosuj motyw OpenCode.", + "settings.general.row.theme.description": "Dostosuj motyw Aether.", "settings.general.row.font.title": "Czcionka", "settings.general.row.font.description": "Dostosuj czcionkę mono używaną w blokach kodu", "settings.general.row.followup.title": "Zachowanie kontynuacji", @@ -597,13 +597,13 @@ export const dict = { "settings.general.row.releaseNotes.title": "Informacje o wydaniu", "settings.general.row.releaseNotes.description": 'Pokazuj wyskakujące okna "Co nowego" po aktualizacjach', "settings.updates.row.startup.title": "Sprawdzaj aktualizacje przy uruchomieniu", - "settings.updates.row.startup.description": "Automatycznie sprawdzaj aktualizacje podczas uruchamiania OpenCode", + "settings.updates.row.startup.description": "Automatycznie sprawdzaj aktualizacje podczas uruchamiania Aether", "settings.updates.row.check.title": "Sprawdź aktualizacje", "settings.updates.row.check.description": "Ręcznie sprawdź aktualizacje i zainstaluj, jeśli są dostępne", "settings.updates.action.checkNow": "Sprawdź teraz", "settings.updates.action.checking": "Sprawdzanie...", "settings.updates.toast.latest.title": "Masz najnowszą wersję", - "settings.updates.toast.latest.description": "Korzystasz z najnowszej wersji OpenCode.", + "settings.updates.toast.latest.description": "Korzystasz z najnowszej wersji Aether.", "font.option.system": "Domyślny systemowy", "font.option.ibmPlexMono": "IBM Plex Mono", "font.option.cascadiaCode": "Cascadia Code", diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts index c7d99aac72ec..3a21fe71d496 100644 --- a/packages/app/src/i18n/ru.ts +++ b/packages/app/src/i18n/ru.ts @@ -115,7 +115,7 @@ export const dict = { "dialog.model.manage.description": "Настройте какие модели появляются в выборе модели", "dialog.model.manage.provider.toggle": "Переключить все модели {{provider}}", - "dialog.model.unpaid.freeModels.title": "Бесплатные модели от OpenCode", + "dialog.model.unpaid.freeModels.title": "Бесплатные модели от Aether", "dialog.model.unpaid.addMore.title": "Добавьте больше моделей от популярных провайдеров", "dialog.provider.viewAll": "Показать больше провайдеров", @@ -128,21 +128,21 @@ export const dict = { "provider.connect.status.waiting": "Ожидание авторизации...", "provider.connect.status.failed": "Ошибка авторизации: {{error}}", "provider.connect.apiKey.description": - "Введите ваш API ключ {{provider}} для подключения аккаунта и использования моделей {{provider}} в OpenCode.", + "Введите ваш API ключ {{provider}} для подключения аккаунта и использования моделей {{provider}} в Aether.", "provider.connect.apiKey.label": "{{provider}} API ключ", "provider.connect.apiKey.placeholder": "API ключ", "provider.connect.apiKey.required": "API ключ обязателен", "provider.connect.opencodeZen.line1": - "OpenCode Zen даёт вам доступ к отобранным надёжным оптимизированным моделям для агентов программирования.", + "Aether Zen даёт вам доступ к отобранным надёжным оптимизированным моделям для агентов программирования.", "provider.connect.opencodeZen.line2": "С одним API ключом вы получите доступ к таким моделям как Claude, GPT, Gemini, GLM и другим.", "provider.connect.opencodeZen.visit.prefix": "Посетите ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " чтобы получить ваш API ключ.", "provider.connect.oauth.code.visit.prefix": "Посетите ", "provider.connect.oauth.code.visit.link": "эту ссылку", "provider.connect.oauth.code.visit.suffix": - " чтобы получить код авторизации для подключения аккаунта и использования моделей {{provider}} в OpenCode.", + " чтобы получить код авторизации для подключения аккаунта и использования моделей {{provider}} в Aether.", "provider.connect.oauth.code.label": "{{method}} код авторизации", "provider.connect.oauth.code.placeholder": "Код авторизации", "provider.connect.oauth.code.required": "Код авторизации обязателен", @@ -150,7 +150,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "Посетите ", "provider.connect.oauth.auto.visit.link": "эту ссылку", "provider.connect.oauth.auto.visit.suffix": - " и введите код ниже для подключения аккаунта и использования моделей {{provider}} в OpenCode.", + " и введите код ниже для подключения аккаунта и использования моделей {{provider}} в Aether.", "provider.connect.oauth.auto.confirmationCode": "Код подтверждения", "provider.connect.toast.connected.title": "{{provider}} подключён", "provider.connect.toast.connected.description": "Модели {{provider}} теперь доступны.", @@ -307,7 +307,7 @@ export const dict = { "dialog.directory.empty": "Папки не найдены", "dialog.server.title": "Серверы", - "dialog.server.description": "Переключите сервер OpenCode к которому подключается приложение.", + "dialog.server.description": "Переключите сервер Aether к которому подключается приложение.", "dialog.server.search.placeholder": "Поиск серверов", "dialog.server.empty": "Серверов пока нет", "dialog.server.add.title": "Добавить сервер", @@ -451,7 +451,7 @@ export const dict = { "error.page.action.checking": "Проверка...", "error.page.action.checkUpdates": "Проверить обновления", "error.page.action.updateTo": "Обновить до {{version}}", - "error.page.report.prefix": "Пожалуйста, сообщите об этой ошибке команде OpenCode", + "error.page.report.prefix": "Пожалуйста, сообщите об этой ошибке команде Aether", "error.page.report.discord": "в Discord", "error.page.version": "Версия: {{version}}", @@ -471,7 +471,7 @@ export const dict = { "error.chain.modelNotFound": "Модель не найдена: {{provider}}/{{model}}", "error.chain.checkConfig": "Проверьте названия провайдера/модели в конфиге (opencode.json)", "error.chain.mcpFailed": - 'MCP сервер "{{name}}" завершился с ошибкой. Обратите внимание, что OpenCode пока не поддерживает MCP авторизацию.', + 'MCP сервер "{{name}}" завершился с ошибкой. Обратите внимание, что Aether пока не поддерживает MCP авторизацию.', "error.chain.providerAuthFailed": "Ошибка аутентификации провайдера ({{provider}}): {{message}}", "error.chain.providerInitFailed": 'Не удалось инициализировать провайдера "{{provider}}". Проверьте учётные данные и конфигурацию.', @@ -605,21 +605,21 @@ export const dict = { "sidebar.workspaces.enable": "Включить рабочие пространства", "sidebar.workspaces.disable": "Отключить рабочие пространства", "sidebar.gettingStarted.title": "Начало работы", - "sidebar.gettingStarted.line1": "OpenCode включает бесплатные модели, чтобы вы могли начать сразу.", + "sidebar.gettingStarted.line1": "Aether включает бесплатные модели, чтобы вы могли начать сразу.", "sidebar.gettingStarted.line2": "Подключите любого провайдера для использования моделей, включая Claude, GPT, Gemini и др.", "sidebar.project.recentSessions": "Недавние сессии", "sidebar.project.viewAllSessions": "Посмотреть все сессии", "sidebar.project.clearNotifications": "Очистить уведомления", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "Приложение", "settings.section.server": "Сервер", "settings.tab.general": "Основные", "settings.tab.shortcuts": "Горячие клавиши", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "Интеграция с WSL", - "settings.desktop.wsl.description": "Запускать сервер OpenCode внутри WSL на Windows.", + "settings.desktop.wsl.description": "Запускать сервер Aether внутри WSL на Windows.", "settings.general.section.appearance": "Внешний вид", "settings.general.section.notifications": "Системные уведомления", @@ -635,13 +635,13 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "Язык", - "settings.general.row.language.description": "Изменить язык отображения OpenCode", + "settings.general.row.language.description": "Изменить язык отображения Aether", "settings.general.row.appearance.title": "Внешний вид", - "settings.general.row.appearance.description": "Настройте как OpenCode выглядит на вашем устройстве", + "settings.general.row.appearance.description": "Настройте как Aether выглядит на вашем устройстве", "settings.general.row.colorScheme.title": "Цветовая схема", - "settings.general.row.colorScheme.description": "Выберите, следует ли OpenCode системной, светлой или тёмной теме", + "settings.general.row.colorScheme.description": "Выберите, следует ли Aether системной, светлой или тёмной теме", "settings.general.row.theme.title": "Тема", - "settings.general.row.theme.description": "Настройте оформление OpenCode.", + "settings.general.row.theme.description": "Настройте оформление Aether.", "settings.general.row.font.title": "Шрифт", "settings.general.row.font.description": "Настройте моноширинный шрифт для блоков кода", "settings.general.row.followup.title": "Поведение уточняющих вопросов", @@ -667,13 +667,13 @@ export const dict = { "settings.general.row.releaseNotes.description": 'Показывать всплывающие окна "Что нового" после обновлений', "settings.updates.row.startup.title": "Проверять обновления при запуске", - "settings.updates.row.startup.description": "Автоматически проверять обновления при запуске OpenCode", + "settings.updates.row.startup.description": "Автоматически проверять обновления при запуске Aether", "settings.updates.row.check.title": "Проверить обновления", "settings.updates.row.check.description": "Проверить обновления вручную и установить, если доступны", "settings.updates.action.checkNow": "Проверить сейчас", "settings.updates.action.checking": "Проверка...", "settings.updates.toast.latest.title": "У вас последняя версия", - "settings.updates.toast.latest.description": "Вы используете последнюю версию OpenCode.", + "settings.updates.toast.latest.description": "Вы используете последнюю версию Aether.", "font.option.system": "Системный по умолчанию", "font.option.ibmPlexMono": "IBM Plex Mono", "font.option.cascadiaCode": "Cascadia Code", diff --git a/packages/app/src/i18n/th.ts b/packages/app/src/i18n/th.ts index ca191acce6ae..33dc0f876096 100644 --- a/packages/app/src/i18n/th.ts +++ b/packages/app/src/i18n/th.ts @@ -115,7 +115,7 @@ export const dict = { "dialog.model.manage.description": "ปรับแต่งโมเดลที่จะปรากฏในตัวเลือกโมเดล", "dialog.model.manage.provider.toggle": "สลับโมเดลทั้งหมดของ {{provider}}", - "dialog.model.unpaid.freeModels.title": "โมเดลฟรีที่จัดหาให้โดย OpenCode", + "dialog.model.unpaid.freeModels.title": "โมเดลฟรีที่จัดหาให้โดย Aether", "dialog.model.unpaid.addMore.title": "เพิ่มโมเดลเพิ่มเติมจากผู้ให้บริการยอดนิยม", "dialog.provider.viewAll": "แสดงผู้ให้บริการเพิ่มเติม", @@ -128,21 +128,21 @@ export const dict = { "provider.connect.status.waiting": "รอการอนุญาต...", "provider.connect.status.failed": "การอนุญาตล้มเหลว: {{error}}", "provider.connect.apiKey.description": - "ป้อนคีย์ API ของ {{provider}} เพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน OpenCode", + "ป้อนคีย์ API ของ {{provider}} เพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน Aether", "provider.connect.apiKey.label": "คีย์ API ของ {{provider}}", "provider.connect.apiKey.placeholder": "คีย์ API", "provider.connect.apiKey.required": "ต้องใช้คีย์ API", "provider.connect.opencodeZen.line1": - "OpenCode Zen ให้คุณเข้าถึงชุดโมเดลที่เชื่อถือได้และปรับแต่งแล้วสำหรับเอเจนต์การเขียนโค้ด", + "Aether Zen ให้คุณเข้าถึงชุดโมเดลที่เชื่อถือได้และปรับแต่งแล้วสำหรับเอเจนต์การเขียนโค้ด", "provider.connect.opencodeZen.line2": "ด้วยคีย์ API เดียวคุณจะได้รับการเข้าถึงโมเดล เช่น Claude, GPT, Gemini, GLM และอื่น ๆ", "provider.connect.opencodeZen.visit.prefix": "เยี่ยมชม ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " เพื่อรวบรวมคีย์ API ของคุณ", "provider.connect.oauth.code.visit.prefix": "เยี่ยมชม ", "provider.connect.oauth.code.visit.link": "ลิงก์นี้", "provider.connect.oauth.code.visit.suffix": - " เพื่อรวบรวมรหัสการอนุญาตของคุณเพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน OpenCode", + " เพื่อรวบรวมรหัสการอนุญาตของคุณเพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน Aether", "provider.connect.oauth.code.label": "รหัสการอนุญาต {{method}}", "provider.connect.oauth.code.placeholder": "รหัสการอนุญาต", "provider.connect.oauth.code.required": "ต้องใช้รหัสการอนุญาต", @@ -150,7 +150,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "เยี่ยมชม ", "provider.connect.oauth.auto.visit.link": "ลิงก์นี้", "provider.connect.oauth.auto.visit.suffix": - " และป้อนรหัสด้านล่างเพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน OpenCode", + " และป้อนรหัสด้านล่างเพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน Aether", "provider.connect.oauth.auto.confirmationCode": "รหัสยืนยัน", "provider.connect.toast.connected.title": "{{provider}} ที่เชื่อมต่อแล้ว", "provider.connect.toast.connected.description": "โมเดล {{provider}} พร้อมใช้งานแล้ว", @@ -307,7 +307,7 @@ export const dict = { "dialog.directory.empty": "ไม่พบโฟลเดอร์", "dialog.server.title": "เซิร์ฟเวอร์", - "dialog.server.description": "สลับเซิร์ฟเวอร์ OpenCode ที่แอปนี้เชื่อมต่อด้วย", + "dialog.server.description": "สลับเซิร์ฟเวอร์ Aether ที่แอปนี้เชื่อมต่อด้วย", "dialog.server.search.placeholder": "ค้นหาเซิร์ฟเวอร์", "dialog.server.empty": "ยังไม่มีเซิร์ฟเวอร์", "dialog.server.add.title": "เพิ่มเซิร์ฟเวอร์", @@ -450,7 +450,7 @@ export const dict = { "error.page.action.checking": "กำลังตรวจสอบ...", "error.page.action.checkUpdates": "ตรวจสอบการอัปเดต", "error.page.action.updateTo": "อัปเดตเป็น {{version}}", - "error.page.report.prefix": "โปรดรายงานข้อผิดพลาดนี้ให้ทีม OpenCode", + "error.page.report.prefix": "โปรดรายงานข้อผิดพลาดนี้ให้ทีม Aether", "error.page.report.discord": "บน Discord", "error.page.version": "เวอร์ชัน: {{version}}", @@ -468,7 +468,7 @@ export const dict = { "error.chain.didYouMean": "คุณหมายถึง: {{suggestions}}", "error.chain.modelNotFound": "ไม่พบโมเดล: {{provider}}/{{model}}", "error.chain.checkConfig": "ตรวจสอบการกำหนดค่าของคุณ (opencode.json) ชื่อผู้ให้บริการ/โมเดล", - "error.chain.mcpFailed": 'เซิร์ฟเวอร์ MCP "{{name}}" ล้มเหลว โปรดทราบว่า OpenCode ยังไม่รองรับการตรวจสอบสิทธิ์ MCP', + "error.chain.mcpFailed": 'เซิร์ฟเวอร์ MCP "{{name}}" ล้มเหลว โปรดทราบว่า Aether ยังไม่รองรับการตรวจสอบสิทธิ์ MCP', "error.chain.providerAuthFailed": "การตรวจสอบสิทธิ์ผู้ให้บริการล้มเหลว ({{provider}}): {{message}}", "error.chain.providerInitFailed": 'ไม่สามารถเริ่มต้นผู้ให้บริการ "{{provider}}" ตรวจสอบข้อมูลรับรองและการกำหนดค่า', "error.chain.configJsonInvalid": "ไฟล์กำหนดค่าที่ {{path}} ไม่ใช่ JSON(C) ที่ถูกต้อง", @@ -599,13 +599,13 @@ export const dict = { "sidebar.workspaces.enable": "เปิดใช้งานพื้นที่ทำงาน", "sidebar.workspaces.disable": "ปิดใช้งานพื้นที่ทำงาน", "sidebar.gettingStarted.title": "เริ่มต้นใช้งาน", - "sidebar.gettingStarted.line1": "OpenCode รวมถึงโมเดลฟรีเพื่อให้คุณเริ่มต้นได้ทันที", + "sidebar.gettingStarted.line1": "Aether รวมถึงโมเดลฟรีเพื่อให้คุณเริ่มต้นได้ทันที", "sidebar.gettingStarted.line2": "เชื่อมต่อผู้ให้บริการใด ๆ เพื่อใช้โมเดล รวมถึง Claude, GPT, Gemini ฯลฯ", "sidebar.project.recentSessions": "เซสชันล่าสุด", "sidebar.project.viewAllSessions": "ดูเซสชันทั้งหมด", "sidebar.project.clearNotifications": "ล้างการแจ้งเตือน", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "เดสก์ท็อป", "settings.section.server": "เซิร์ฟเวอร์", @@ -613,7 +613,7 @@ export const dict = { "settings.tab.shortcuts": "ทางลัด", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "การรวม WSL", - "settings.desktop.wsl.description": "เรียกใช้เซิร์ฟเวอร์ OpenCode ภายใน WSL บน Windows", + "settings.desktop.wsl.description": "เรียกใช้เซิร์ฟเวอร์ Aether ภายใน WSL บน Windows", "settings.general.section.appearance": "รูปลักษณ์", "settings.general.section.notifications": "การแจ้งเตือนระบบ", @@ -629,13 +629,13 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "ภาษา", - "settings.general.row.language.description": "เปลี่ยนภาษาที่แสดงสำหรับ OpenCode", + "settings.general.row.language.description": "เปลี่ยนภาษาที่แสดงสำหรับ Aether", "settings.general.row.appearance.title": "รูปลักษณ์", - "settings.general.row.appearance.description": "ปรับแต่งวิธีการที่ OpenCode มีลักษณะบนอุปกรณ์ของคุณ", + "settings.general.row.appearance.description": "ปรับแต่งวิธีการที่ Aether มีลักษณะบนอุปกรณ์ของคุณ", "settings.general.row.colorScheme.title": "โทนสี", - "settings.general.row.colorScheme.description": "เลือกว่าจะให้ OpenCode ใช้ธีมตามระบบ สว่าง หรือมืด", + "settings.general.row.colorScheme.description": "เลือกว่าจะให้ Aether ใช้ธีมตามระบบ สว่าง หรือมืด", "settings.general.row.theme.title": "ธีม", - "settings.general.row.theme.description": "ปรับแต่งวิธีการที่ OpenCode มีธีม", + "settings.general.row.theme.description": "ปรับแต่งวิธีการที่ Aether มีธีม", "settings.general.row.font.title": "ฟอนต์", "settings.general.row.font.description": "ปรับแต่งฟอนต์โมโนที่ใช้ในบล็อกโค้ด", "settings.general.row.followup.title": "พฤติกรรมการติดตามผล", @@ -657,13 +657,13 @@ export const dict = { "settings.general.row.releaseNotes.description": "แสดงป๊อปอัพ What's New หลังจากอัปเดต", "settings.updates.row.startup.title": "ตรวจสอบการอัปเดตเมื่อเริ่มต้น", - "settings.updates.row.startup.description": "ตรวจสอบการอัปเดตโดยอัตโนมัติเมื่อ OpenCode เปิดใช้งาน", + "settings.updates.row.startup.description": "ตรวจสอบการอัปเดตโดยอัตโนมัติเมื่อ Aether เปิดใช้งาน", "settings.updates.row.check.title": "ตรวจสอบการอัปเดต", "settings.updates.row.check.description": "ตรวจสอบการอัปเดตด้วยตนเองและติดตั้งหากมี", "settings.updates.action.checkNow": "ตรวจสอบทันที", "settings.updates.action.checking": "กำลังตรวจสอบ...", "settings.updates.toast.latest.title": "คุณเป็นเวอร์ชันล่าสุดแล้ว", - "settings.updates.toast.latest.description": "คุณกำลังใช้งาน OpenCode เวอร์ชันล่าสุด", + "settings.updates.toast.latest.description": "คุณกำลังใช้งาน Aether เวอร์ชันล่าสุด", "font.option.system": "ค่าเริ่มต้นของระบบ", "font.option.ibmPlexMono": "IBM Plex Mono", diff --git a/packages/app/src/i18n/tr.ts b/packages/app/src/i18n/tr.ts index dc52ada07897..e81b85a79e5a 100644 --- a/packages/app/src/i18n/tr.ts +++ b/packages/app/src/i18n/tr.ts @@ -119,7 +119,7 @@ export const dict = { "dialog.model.manage.description": "Model seçicide hangi modellerin görüneceğini özelleştirin.", "dialog.model.manage.provider.toggle": "Tüm {{provider}} modellerini aç/kapat", - "dialog.model.unpaid.freeModels.title": "OpenCode tarafından sunulan ücretsiz modeller", + "dialog.model.unpaid.freeModels.title": "Aether tarafından sunulan ücretsiz modeller", "dialog.model.unpaid.addMore.title": "Popüler sağlayıcılardan daha fazla model ekleyin", "dialog.provider.viewAll": "Daha fazla sağlayıcı göster", @@ -132,19 +132,19 @@ export const dict = { "provider.connect.status.waiting": "Yetkilendirme bekleniyor...", "provider.connect.status.failed": "Yetkilendirme başarısız: {{error}}", "provider.connect.apiKey.description": - "{{provider}} hesabınızı bağlamak ve OpenCode'da {{provider}} modellerini kullanmak için {{provider}} API anahtarınızı girin.", + "{{provider}} hesabınızı bağlamak ve Aether'da {{provider}} modellerini kullanmak için {{provider}} API anahtarınızı girin.", "provider.connect.apiKey.label": "{{provider}} API anahtarı", "provider.connect.apiKey.placeholder": "API anahtarı", "provider.connect.apiKey.required": "API anahtarı gerekli", "provider.connect.opencodeZen.line1": - "OpenCode Zen, kodlama ajanları için seçilmiş güvenilir optimize edilmiş modellere erişim sağlar.", + "Aether Zen, kodlama ajanları için seçilmiş güvenilir optimize edilmiş modellere erişim sağlar.", "provider.connect.opencodeZen.line2": "Tek bir API anahtarıyla Claude, GPT, Gemini, GLM ve daha fazlası gibi modellere erişebilirsiniz.", "provider.connect.opencodeZen.visit.prefix": "", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " adresini ziyaret ederek API anahtarınızı alın.", "provider.connect.oauth.code.visit.prefix": - "Hesabınızı bağlamak ve OpenCode'da {{provider}} modellerini kullanmak için ", + "Hesabınızı bağlamak ve Aether'da {{provider}} modellerini kullanmak için ", "provider.connect.oauth.code.visit.link": "bu bağlantıya", "provider.connect.oauth.code.visit.suffix": " tıklayarak yetkilendirme kodunuzu alın.", "provider.connect.oauth.code.label": "{{method}} yetkilendirme kodu", @@ -154,7 +154,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "", "provider.connect.oauth.auto.visit.link": "Bu bağlantıya", "provider.connect.oauth.auto.visit.suffix": - " tıklayarak aşağıdaki kodu girin ve hesabınızı bağlayarak OpenCode'da {{provider}} modellerini kullanın.", + " tıklayarak aşağıdaki kodu girin ve hesabınızı bağlayarak Aether'da {{provider}} modellerini kullanın.", "provider.connect.oauth.auto.confirmationCode": "Onay kodu", "provider.connect.toast.connected.title": "{{provider}} bağlandı", "provider.connect.toast.connected.description": "{{provider}} modelleri artık kullanımda.", @@ -311,7 +311,7 @@ export const dict = { "dialog.directory.empty": "Klasör bulunamadı", "dialog.server.title": "Sunucular", - "dialog.server.description": "Bu uygulamanın hangi OpenCode sunucusuna bağlanacağını değiştirin.", + "dialog.server.description": "Bu uygulamanın hangi Aether sunucusuna bağlanacağını değiştirin.", "dialog.server.search.placeholder": "Sunucu ara", "dialog.server.empty": "Henüz sunucu yok", "dialog.server.add.title": "Sunucu ekle", @@ -454,7 +454,7 @@ export const dict = { "error.page.action.checking": "Kontrol ediliyor...", "error.page.action.checkUpdates": "Güncellemeleri kontrol et", "error.page.action.updateTo": "{{version}} sürümüne güncelle", - "error.page.report.prefix": "Lütfen bu hatayı OpenCode ekibine bildirin", + "error.page.report.prefix": "Lütfen bu hatayı Aether ekibine bildirin", "error.page.report.discord": "Discord üzerinden", "error.page.version": "Sürüm: {{version}}", @@ -474,7 +474,7 @@ export const dict = { "error.chain.modelNotFound": "Model bulunamadı: {{provider}}/{{model}}", "error.chain.checkConfig": "Yapılandırma dosyanızı (opencode.json) sağlayıcı/model adlarını kontrol edin", "error.chain.mcpFailed": - 'MCP sunucusu "{{name}}" başarısız oldu. Not: OpenCode henüz MCP kimlik doğrulamasını desteklemiyor.', + 'MCP sunucusu "{{name}}" başarısız oldu. Not: Aether henüz MCP kimlik doğrulamasını desteklemiyor.', "error.chain.providerAuthFailed": "Sağlayıcı kimlik doğrulaması başarısız ({{provider}}): {{message}}", "error.chain.providerInitFailed": '"{{provider}}" sağlayıcısı başlatılamadı. Kimlik bilgilerini ve yapılandırmayı kontrol edin.', @@ -610,13 +610,13 @@ export const dict = { "sidebar.workspaces.enable": "Çalışma alanlarını etkinleştir", "sidebar.workspaces.disable": "Çalışma alanlarını devre dışı bırak", "sidebar.gettingStarted.title": "Başlarken", - "sidebar.gettingStarted.line1": "OpenCode ücretsiz modeller içerir, böylece hemen başlayabilirsiniz.", + "sidebar.gettingStarted.line1": "Aether ücretsiz modeller içerir, böylece hemen başlayabilirsiniz.", "sidebar.gettingStarted.line2": "Claude, GPT, Gemini vb. modelleri kullanmak için herhangi bir sağlayıcı bağlayın.", "sidebar.project.recentSessions": "Son oturumlar", "sidebar.project.viewAllSessions": "Tüm oturumları görüntüle", "sidebar.project.clearNotifications": "Bildirimleri temizle", - "app.name.desktop": "OpenCode Masaüstü", + "app.name.desktop": "Aether Masaüstü", "settings.section.desktop": "Masaüstü", "settings.section.server": "Sunucu", @@ -624,7 +624,7 @@ export const dict = { "settings.tab.shortcuts": "Kısayollar", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "WSL entegrasyonu", - "settings.desktop.wsl.description": "OpenCode sunucusunu Windows'ta WSL içinde çalıştırın.", + "settings.desktop.wsl.description": "Aether sunucusunu Windows'ta WSL içinde çalıştırın.", "settings.general.section.appearance": "Görünüm", "settings.general.section.notifications": "Sistem bildirimleri", @@ -640,14 +640,14 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "Dil", - "settings.general.row.language.description": "OpenCode'un görünüm dilini değiştirin", + "settings.general.row.language.description": "Aether'un görünüm dilini değiştirin", "settings.general.row.appearance.title": "Görünüm", - "settings.general.row.appearance.description": "OpenCode'un cihazınızdaki görünümünü özelleştirin", + "settings.general.row.appearance.description": "Aether'un cihazınızdaki görünümünü özelleştirin", "settings.general.row.colorScheme.title": "Renk şeması", "settings.general.row.colorScheme.description": - "OpenCode'un sistem, açık veya koyu temayı takip etip etmeyeceğini seçin", + "Aether'un sistem, açık veya koyu temayı takip etip etmeyeceğini seçin", "settings.general.row.theme.title": "Tema", - "settings.general.row.theme.description": "OpenCode'un temasını özelleştirin.", + "settings.general.row.theme.description": "Aether'un temasını özelleştirin.", "settings.general.row.font.title": "Yazı Tipi", "settings.general.row.font.description": "Kod bloklarında kullanılan monospace yazı tipini özelleştirin", "settings.general.row.followup.title": "Takip davranışı", @@ -674,13 +674,13 @@ export const dict = { "settings.general.row.releaseNotes.description": "Güncellemelerden sonra Yenilikler bildirimlerini göster", "settings.updates.row.startup.title": "Başlangıçta güncellemeleri kontrol et", - "settings.updates.row.startup.description": "OpenCode başladığında otomatik güncelleme kontrolü yap", + "settings.updates.row.startup.description": "Aether başladığında otomatik güncelleme kontrolü yap", "settings.updates.row.check.title": "Güncellemeleri kontrol et", "settings.updates.row.check.description": "Elle güncelleme kontrolü yap ve varsa yükle", "settings.updates.action.checkNow": "Şimdi kontrol et", "settings.updates.action.checking": "Kontrol ediliyor...", "settings.updates.toast.latest.title": "Güncelsiniz", - "settings.updates.toast.latest.description": "OpenCode'un en son sürümünü kullanıyorsunuz.", + "settings.updates.toast.latest.description": "Aether'un en son sürümünü kullanıyorsunuz.", "font.option.system": "Sistem Varsayılanı", "font.option.ibmPlexMono": "IBM Plex Mono", diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts index 747e6f2d419b..9ef078999304 100644 --- a/packages/app/src/i18n/zh.ts +++ b/packages/app/src/i18n/zh.ts @@ -126,7 +126,7 @@ export const dict = { "dialog.provider.group.popular": "热门", "dialog.provider.group.other": "其他", "dialog.provider.tag.recommended": "推荐", - "dialog.provider.opencode.note": "使用 OpenCode Zen 或 API 密钥连接", + "dialog.provider.opencode.note": "使用 Aether Zen 或 API 密钥连接", "dialog.provider.opencode.tagline": "可靠的优化模型", "dialog.provider.opencodeGo.tagline": "适合所有人的低成本订阅", "dialog.provider.anthropic.note": "使用 Claude Pro/Max 或 API 密钥连接", @@ -142,7 +142,7 @@ export const dict = { "dialog.model.manage": "管理模型", "dialog.model.manage.description": "自定义模型选择器中显示的模型。", "dialog.model.manage.provider.toggle": "切换所有 {{provider}} 模型", - "dialog.model.unpaid.freeModels.title": "OpenCode 提供的免费模型", + "dialog.model.unpaid.freeModels.title": "Aether 提供的免费模型", "dialog.model.unpaid.addMore.title": "从热门提供商添加更多模型", "dialog.provider.viewAll": "查看更多提供商", @@ -155,28 +155,28 @@ export const dict = { "provider.connect.status.waiting": "等待授权...", "provider.connect.status.failed": "授权失败:{{error}}", "provider.connect.apiKey.description": - "输入你的 {{provider}} API 密钥以连接帐户,并在 OpenCode 中使用 {{provider}} 模型。", + "输入你的 {{provider}} API 密钥以连接帐户,并在 Aether 中使用 {{provider}} 模型。", "provider.connect.apiKey.label": "{{provider}} API 密钥", "provider.connect.apiKey.placeholder": "API 密钥", "provider.connect.apiKey.required": "API 密钥为必填项", "provider.connect.baseURL.label": "Base URL(可选)", "provider.connect.baseURL.placeholder": "https://api.example.com/v1", "provider.connect.baseURL.description": "覆盖默认 API 端点。留空则使用供应商默认地址。", - "provider.connect.opencodeZen.line1": "OpenCode Zen 为你提供一组精选的可靠优化模型,用于代码智能体。", + "provider.connect.opencodeZen.line1": "Aether Zen 为你提供一组精选的可靠优化模型,用于代码智能体。", "provider.connect.opencodeZen.line2": "只需一个 API 密钥,你就能使用 Claude、GPT、Gemini、GLM 等模型。", "provider.connect.opencodeZen.visit.prefix": "访问 ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " 获取你的 API 密钥。", "provider.connect.oauth.code.visit.prefix": "访问 ", "provider.connect.oauth.code.visit.link": "此链接", - "provider.connect.oauth.code.visit.suffix": " 获取授权码,以连接你的帐户并在 OpenCode 中使用 {{provider}} 模型。", + "provider.connect.oauth.code.visit.suffix": " 获取授权码,以连接你的帐户并在 Aether 中使用 {{provider}} 模型。", "provider.connect.oauth.code.label": "{{method}} 授权码", "provider.connect.oauth.code.placeholder": "授权码", "provider.connect.oauth.code.required": "授权码为必填项", "provider.connect.oauth.code.invalid": "授权码无效", "provider.connect.oauth.auto.visit.prefix": "访问 ", "provider.connect.oauth.auto.visit.link": "此链接", - "provider.connect.oauth.auto.visit.suffix": " 并输入以下代码,以连接你的帐户并在 OpenCode 中使用 {{provider}} 模型。", + "provider.connect.oauth.auto.visit.suffix": " 并输入以下代码,以连接你的帐户并在 Aether 中使用 {{provider}} 模型。", "provider.connect.oauth.auto.confirmationCode": "确认码", "provider.connect.toast.connected.title": "{{provider}} 已连接", "provider.connect.toast.connected.description": "现在可以使用 {{provider}} 模型了。", @@ -337,7 +337,7 @@ export const dict = { "dialog.directory.select": "选择文件夹", "dialog.server.title": "服务器", - "dialog.server.description": "切换此应用连接的 OpenCode 服务器。", + "dialog.server.description": "切换此应用连接的 Aether 服务器。", "dialog.server.search.placeholder": "搜索服务器", "dialog.server.empty": "暂无服务器", "dialog.server.add.title": "添加服务器", @@ -486,7 +486,7 @@ export const dict = { "error.page.action.checking": "检查中...", "error.page.action.checkUpdates": "检查更新", "error.page.action.updateTo": "更新到 {{version}}", - "error.page.report.prefix": "请将此错误报告给 OpenCode 团队", + "error.page.report.prefix": "请将此错误报告给 Aether 团队", "error.page.report.discord": "在 Discord 上", "error.page.version": "版本:{{version}}", "error.dev.rootNotFound": "未找到根元素。你是不是忘了把它添加到 index.html?或者 id 属性拼写错了?", @@ -503,7 +503,7 @@ export const dict = { "error.chain.didYouMean": "你是不是想输入:{{suggestions}}", "error.chain.modelNotFound": "未找到模型:{{provider}}/{{model}}", "error.chain.checkConfig": "请检查你的配置 (opencode.json) 中的 provider/model 名称", - "error.chain.mcpFailed": 'MCP 服务器 "{{name}}" 启动失败。注意: OpenCode 暂不支持 MCP 认证。', + "error.chain.mcpFailed": 'MCP 服务器 "{{name}}" 启动失败。注意: Aether 暂不支持 MCP 认证。', "error.chain.providerAuthFailed": "提供商认证失败({{provider}}):{{message}}", "error.chain.providerInitFailed": '无法初始化提供商 "{{provider}}"。请检查凭据和配置。', "error.chain.configJsonInvalid": "配置文件 {{path}} 不是有效的 JSON(C)", @@ -637,13 +637,13 @@ export const dict = { "sidebar.workspaces.enable": "启用工作区", "sidebar.workspaces.disable": "禁用工作区", "sidebar.gettingStarted.title": "入门", - "sidebar.gettingStarted.line1": "OpenCode 提供免费模型,你可以立即开始使用。", + "sidebar.gettingStarted.line1": "Aether 提供免费模型,你可以立即开始使用。", "sidebar.gettingStarted.line2": "连接任意提供商即可使用更多模型,如 Claude、GPT、Gemini 等。", "sidebar.project.recentSessions": "最近会话", "sidebar.project.viewAllSessions": "查看全部会话", "sidebar.project.clearNotifications": "清除通知", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "桌面", "settings.section.server": "服务器", @@ -653,7 +653,7 @@ export const dict = { "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "WSL 集成", - "settings.desktop.wsl.description": "在 Windows 的 WSL 环境中运行 OpenCode 服务器。", + "settings.desktop.wsl.description": "在 Windows 的 WSL 环境中运行 Aether 服务器。", "settings.general.section.appearance": "外观", "settings.general.section.notifications": "系统通知", @@ -669,13 +669,13 @@ export const dict = { "settings.general.row.smallModel.description": "用于标题生成等轻量级任务的模型", "settings.general.row.smallModel.none": "自动(提供商默认)", "settings.general.row.language.title": "语言", - "settings.general.row.language.description": "更改 OpenCode 的显示语言", + "settings.general.row.language.description": "更改 Aether 的显示语言", "settings.general.row.appearance.title": "外观", - "settings.general.row.appearance.description": "自定义 OpenCode 在你的设备上的外观", + "settings.general.row.appearance.description": "自定义 Aether 在你的设备上的外观", "settings.general.row.colorScheme.title": "配色方案", - "settings.general.row.colorScheme.description": "选择 OpenCode 跟随系统、浅色或深色主题", + "settings.general.row.colorScheme.description": "选择 Aether 跟随系统、浅色或深色主题", "settings.general.row.theme.title": "主题", - "settings.general.row.theme.description": "自定义 OpenCode 的主题。", + "settings.general.row.theme.description": "自定义 Aether 的主题。", "settings.general.row.font.title": "字体", "settings.general.row.font.description": "自定义代码块使用的等宽字体", "settings.general.row.followup.title": "跟进消息行为", @@ -715,13 +715,13 @@ export const dict = { "settings.general.row.releaseNotes.description": "更新后显示“新功能”弹窗", "settings.updates.row.startup.title": "启动时检查更新", - "settings.updates.row.startup.description": "在 OpenCode 启动时自动检查更新", + "settings.updates.row.startup.description": "在 Aether 启动时自动检查更新", "settings.updates.row.check.title": "检查更新", "settings.updates.row.check.description": "手动检查更新并在有更新时安装", "settings.updates.action.checkNow": "立即检查", "settings.updates.action.checking": "正在检查...", "settings.updates.toast.latest.title": "已是最新版本", - "settings.updates.toast.latest.description": "你正在使用最新版本的 OpenCode。", + "settings.updates.toast.latest.description": "你正在使用最新版本的 Aether。", "font.option.system": "系统默认", "font.option.ibmPlexMono": "IBM Plex Mono", diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts index 434adf202a59..8190aabb6d94 100644 --- a/packages/app/src/i18n/zht.ts +++ b/packages/app/src/i18n/zht.ts @@ -119,7 +119,7 @@ export const dict = { "dialog.model.manage.description": "自訂模型選擇器中顯示的模型。", "dialog.model.manage.provider.toggle": "切換所有 {{provider}} 模型", - "dialog.model.unpaid.freeModels.title": "OpenCode 提供的免費模型", + "dialog.model.unpaid.freeModels.title": "Aether 提供的免費模型", "dialog.model.unpaid.addMore.title": "從熱門提供者新增更多模型", "dialog.provider.viewAll": "查看更多提供者", @@ -132,18 +132,18 @@ export const dict = { "provider.connect.status.waiting": "等待授權...", "provider.connect.status.failed": "授權失敗: {{error}}", "provider.connect.apiKey.description": - "輸入你的 {{provider}} API 金鑰以連線帳戶,並在 OpenCode 中使用 {{provider}} 模型。", + "輸入你的 {{provider}} API 金鑰以連線帳戶,並在 Aether 中使用 {{provider}} 模型。", "provider.connect.apiKey.label": "{{provider}} API 金鑰", "provider.connect.apiKey.placeholder": "API 金鑰", "provider.connect.apiKey.required": "API 金鑰為必填", - "provider.connect.opencodeZen.line1": "OpenCode Zen 為你提供一組精選的可靠最佳化模型,用於程式碼代理程式。", + "provider.connect.opencodeZen.line1": "Aether Zen 為你提供一組精選的可靠最佳化模型,用於程式碼代理程式。", "provider.connect.opencodeZen.line2": "只需一個 API 金鑰,你就能使用 Claude、GPT、Gemini、GLM 等模型。", "provider.connect.opencodeZen.visit.prefix": "造訪 ", - "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", + "provider.connect.opencodeZen.visit.link": "aether.ai/zen", "provider.connect.opencodeZen.visit.suffix": " 取得你的 API 金鑰。", "provider.connect.oauth.code.visit.prefix": "造訪 ", "provider.connect.oauth.code.visit.link": "此連結", - "provider.connect.oauth.code.visit.suffix": " 取得授權碼,以連線你的帳戶並在 OpenCode 中使用 {{provider}} 模型。", + "provider.connect.oauth.code.visit.suffix": " 取得授權碼,以連線你的帳戶並在 Aether 中使用 {{provider}} 模型。", "provider.connect.oauth.code.label": "{{method}} 授權碼", "provider.connect.oauth.code.placeholder": "授權碼", "provider.connect.oauth.code.required": "授權碼為必填", @@ -151,7 +151,7 @@ export const dict = { "provider.connect.oauth.auto.visit.prefix": "造訪 ", "provider.connect.oauth.auto.visit.link": "此連結", "provider.connect.oauth.auto.visit.suffix": - " 並輸入以下程式碼,以連線你的帳戶並在 OpenCode 中使用 {{provider}} 模型。", + " 並輸入以下程式碼,以連線你的帳戶並在 Aether 中使用 {{provider}} 模型。", "provider.connect.oauth.auto.confirmationCode": "確認碼", "provider.connect.toast.connected.title": "{{provider}} 已連線", "provider.connect.toast.connected.description": "現在可以使用 {{provider}} 模型了。", @@ -306,7 +306,7 @@ export const dict = { "dialog.directory.empty": "找不到資料夾", "dialog.server.title": "伺服器", - "dialog.server.description": "切換此應用程式連線的 OpenCode 伺服器。", + "dialog.server.description": "切換此應用程式連線的 Aether 伺服器。", "dialog.server.search.placeholder": "搜尋伺服器", "dialog.server.empty": "暫無伺服器", "dialog.server.add.title": "新增伺服器", @@ -447,7 +447,7 @@ export const dict = { "error.page.action.checking": "檢查中...", "error.page.action.checkUpdates": "檢查更新", "error.page.action.updateTo": "更新到 {{version}}", - "error.page.report.prefix": "請將此錯誤回報給 OpenCode 團隊", + "error.page.report.prefix": "請將此錯誤回報給 Aether 團隊", "error.page.report.discord": "在 Discord 上", "error.page.version": "版本: {{version}}", @@ -465,7 +465,7 @@ export const dict = { "error.chain.didYouMean": "你是不是想輸入: {{suggestions}}", "error.chain.modelNotFound": "找不到模型: {{provider}}/{{model}}", "error.chain.checkConfig": "請檢查你的設定 (opencode.json) 中的 provider/model 名稱", - "error.chain.mcpFailed": 'MCP 伺服器 "{{name}}" 啟動失敗。注意: OpenCode 暫不支援 MCP 認證。', + "error.chain.mcpFailed": 'MCP 伺服器 "{{name}}" 啟動失敗。注意: Aether 暫不支援 MCP 認證。', "error.chain.providerAuthFailed": "提供者認證失敗 ({{provider}}): {{message}}", "error.chain.providerInitFailed": '無法初始化提供者 "{{provider}}"。請檢查憑證和設定。', "error.chain.configJsonInvalid": "設定檔 {{path}} 不是有效的 JSON(C)", @@ -594,20 +594,20 @@ export const dict = { "sidebar.workspaces.enable": "啟用工作區", "sidebar.workspaces.disable": "停用工作區", "sidebar.gettingStarted.title": "開始使用", - "sidebar.gettingStarted.line1": "OpenCode 提供免費模型,你可以立即開始使用。", + "sidebar.gettingStarted.line1": "Aether 提供免費模型,你可以立即開始使用。", "sidebar.gettingStarted.line2": "連線任意提供者即可使用更多模型,如 Claude、GPT、Gemini 等。", "sidebar.project.recentSessions": "最近工作階段", "sidebar.project.viewAllSessions": "查看全部工作階段", "sidebar.project.clearNotifications": "清除通知", - "app.name.desktop": "OpenCode Desktop", + "app.name.desktop": "Aether Desktop", "settings.section.desktop": "桌面", "settings.section.server": "伺服器", "settings.tab.general": "一般", "settings.tab.shortcuts": "快速鍵", "settings.desktop.section.wsl": "WSL", "settings.desktop.wsl.title": "WSL 整合", - "settings.desktop.wsl.description": "在 Windows 上的 WSL 中執行 OpenCode 伺服器。", + "settings.desktop.wsl.description": "在 Windows 上的 WSL 中執行 Aether 伺服器。", "settings.general.section.appearance": "外觀", "settings.general.section.notifications": "系統通知", @@ -623,13 +623,13 @@ export const dict = { "settings.general.row.smallModel.description": "Lightweight model used for tasks like title generation", "settings.general.row.smallModel.none": "Auto (provider default)", "settings.general.row.language.title": "語言", - "settings.general.row.language.description": "變更 OpenCode 的顯示語言", + "settings.general.row.language.description": "變更 Aether 的顯示語言", "settings.general.row.appearance.title": "外觀", - "settings.general.row.appearance.description": "自訂 OpenCode 在你的裝置上的外觀", + "settings.general.row.appearance.description": "自訂 Aether 在你的裝置上的外觀", "settings.general.row.colorScheme.title": "配色方案", - "settings.general.row.colorScheme.description": "選擇 OpenCode 要跟隨系統、淺色或深色主題", + "settings.general.row.colorScheme.description": "選擇 Aether 要跟隨系統、淺色或深色主題", "settings.general.row.theme.title": "主題", - "settings.general.row.theme.description": "自訂 OpenCode 的主題。", + "settings.general.row.theme.description": "自訂 Aether 的主題。", "settings.general.row.font.title": "字型", "settings.general.row.font.description": "自訂程式碼區塊使用的等寬字型", "settings.general.row.followup.title": "後續追問行為", @@ -651,13 +651,13 @@ export const dict = { "settings.general.row.releaseNotes.description": "更新後顯示「新功能」彈出視窗", "settings.updates.row.startup.title": "啟動時檢查更新", - "settings.updates.row.startup.description": "在 OpenCode 啟動時自動檢查更新", + "settings.updates.row.startup.description": "在 Aether 啟動時自動檢查更新", "settings.updates.row.check.title": "檢查更新", "settings.updates.row.check.description": "手動檢查更新並在有更新時安裝", "settings.updates.action.checkNow": "立即檢查", "settings.updates.action.checking": "檢查中...", "settings.updates.toast.latest.title": "已是最新版本", - "settings.updates.toast.latest.description": "你正在使用最新版本的 OpenCode。", + "settings.updates.toast.latest.description": "你正在使用最新版本的 Aether。", "font.option.system": "系統預設", "font.option.ibmPlexMono": "IBM Plex Mono", diff --git a/packages/desktop-electron/README.md b/packages/desktop-electron/README.md index ebaf48822313..551bddcfc551 100644 --- a/packages/desktop-electron/README.md +++ b/packages/desktop-electron/README.md @@ -1,6 +1,6 @@ -# OpenCode Desktop +# Aether Desktop -Native OpenCode desktop app, built with Tauri v2. +Native Aether desktop app, built with Tauri v2. ## Development diff --git a/packages/opencode/src/acp/README.md b/packages/opencode/src/acp/README.md index aab33259bb18..497a5ccf59c6 100644 --- a/packages/opencode/src/acp/README.md +++ b/packages/opencode/src/acp/README.md @@ -1,6 +1,6 @@ # ACP (Agent Client Protocol) Implementation -This directory contains a clean, protocol-compliant implementation of the [Agent Client Protocol](https://agentclientprotocol.com/) for opencode. +This directory contains a clean, protocol-compliant implementation of the [Agent Client Protocol](https://agentclientprotocol.com/) for Aether. ## Architecture @@ -21,7 +21,7 @@ The implementation follows a clean separation of concerns: - **`session.ts`** - Session state management - Creates and tracks ACP sessions - - Maps ACP sessions to internal opencode sessions + - Maps ACP sessions to internal Aether sessions - Maintains working directory context - Handles MCP server configurations @@ -38,10 +38,10 @@ The implementation follows a clean separation of concerns: ```bash # Start the ACP server in the current directory -opencode acp +aether acp # Start in a specific directory -opencode acp --cwd /path/to/project +aether acp --cwd /path/to/project ``` ### Question Tool Opt-In @@ -49,7 +49,7 @@ opencode acp --cwd /path/to/project ACP excludes `QuestionTool` by default. ```bash -OPENCODE_ENABLE_QUESTION_TOOL=1 opencode acp +OPENCODE_ENABLE_QUESTION_TOOL=1 aether acp ``` Enable this only for ACP clients that support interactive question prompts. @@ -69,8 +69,8 @@ Add to your Zed configuration (`~/.config/zed/settings.json`): ```json { "agent_servers": { - "OpenCode": { - "command": "opencode", + "Aether": { + "command": "aether", "args": ["acp"] } } @@ -124,7 +124,7 @@ This implementation follows the ACP specification v1: - **Session Persistence**: Save and restore full conversation history - **Mode Support**: Implement different operational modes (ask, code, etc.) - **Enhanced Permissions**: More sophisticated permission handling -- **Terminal Integration**: Full terminal support via opencode's bash tool +- **Terminal Integration**: Full terminal support via Aether's bash tool ## Testing @@ -133,7 +133,7 @@ This implementation follows the ACP specification v1: bun test test/acp.test.ts # Test manually with stdio -echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":1}}' | opencode acp +echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":1}}' | aether acp ``` ## Design Decisions @@ -158,9 +158,9 @@ Each component has a single responsibility: This makes the codebase maintainable and testable. -### Mapping to OpenCode +### Mapping to Aether -ACP sessions map cleanly to opencode's internal session model: +ACP sessions map cleanly to Aether's internal session model: - ACP `session/new` → creates internal Session - ACP `session/prompt` → uses SessionPrompt.prompt() diff --git a/packages/slack/README.md b/packages/slack/README.md index a12978d8a6ea..3dbfdc65aba6 100644 --- a/packages/slack/README.md +++ b/packages/slack/README.md @@ -1,6 +1,6 @@ -# @opencode-ai/slack +# Aether Slack Integration -Slack bot integration for opencode that creates threaded conversations. +Slack bot integration for Aether that creates threaded conversations. ## Setup @@ -24,4 +24,4 @@ Slack bot integration for opencode that creates threaded conversations. bun dev ``` -The bot will respond to messages in channels where it's added, creating separate opencode sessions for each thread. +The bot will respond to messages in channels where it's added, creating separate Aether sessions for each thread. diff --git a/packages/web/src/content/i18n/ar.json b/packages/web/src/content/i18n/ar.json index d8029441fe7f..d416cf480987 100644 --- a/packages/web/src/content/i18n/ar.json +++ b/packages/web/src/content/i18n/ar.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "استخدم أي نموذج", "app.lander.features.use_any_model.prefix": "يدعم أكثر من 75 مزودا لـ LLM عبر", "app.lander.features.use_any_model.suffix": "بما في ذلك النماذج المحلية.", - "app.lander.images.tui.caption": "opencode TUI مع سمة tokyonight", - "app.lander.images.tui.alt": "opencode TUI مع سمة tokyonight", - "app.lander.images.vscode.caption": "opencode في VS Code", - "app.lander.images.vscode.alt": "opencode في VS Code", - "app.lander.images.github.caption": "opencode في GitHub", - "app.lander.images.github.alt": "opencode في GitHub", - "share.meta_description": "opencode - وكيل البرمجة بالذكاء الاصطناعي المصمم لـ terminal.", + "app.lander.images.tui.caption": "Aether TUI مع سمة tokyonight", + "app.lander.images.tui.alt": "Aether TUI مع سمة tokyonight", + "app.lander.images.vscode.caption": "Aether في VS Code", + "app.lander.images.vscode.alt": "Aether في VS Code", + "app.lander.images.github.caption": "Aether في GitHub", + "app.lander.images.github.alt": "Aether في GitHub", + "share.meta_description": "Aether - وكيل البرمجة بالذكاء الاصطناعي المصمم لـ terminal.", "share.not_found": "غير موجود", "share.link_to_message": "رابط إلى هذه الرسالة", "share.copied": "تم النسخ!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "لم يتم العثور على id", "share.error_api_url_not_found": "لم يتم العثور على API URL", "share.error_connection_failed": "فشل الاتصال", - "share.opencode_version": "إصدار opencode", - "share.opencode_name": "opencode", + "share.opencode_version": "إصدار Aether", + "share.opencode_name": "Aether", "share.models": "النماذج", "share.cost": "التكلفة", "share.input_tokens": "رموز الإدخال", diff --git a/packages/web/src/content/i18n/bs.json b/packages/web/src/content/i18n/bs.json index 6dc96ce7f391..06d51d31fd3e 100644 --- a/packages/web/src/content/i18n/bs.json +++ b/packages/web/src/content/i18n/bs.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "Koristite bilo koji model", "app.lander.features.use_any_model.prefix": "Podržava 75+ LLM provajdera kroz", "app.lander.features.use_any_model.suffix": "uključujući lokalne modele.", - "app.lander.images.tui.caption": "OpenCode TUI u tokyonight temi", - "app.lander.images.tui.alt": "OpenCode TUI u tokyonight temi", - "app.lander.images.vscode.caption": "OpenCode u VS Code", - "app.lander.images.vscode.alt": "OpenCode u VS Code", - "app.lander.images.github.caption": "OpenCode u GitHub", - "app.lander.images.github.alt": "OpenCode u GitHub", - "share.meta_description": "OpenCode - AI agent za kodiranje napravljen za terminal.", + "app.lander.images.tui.caption": "Aether TUI u tokyonight temi", + "app.lander.images.tui.alt": "Aether TUI u tokyonight temi", + "app.lander.images.vscode.caption": "Aether u VS Code", + "app.lander.images.vscode.alt": "Aether u VS Code", + "app.lander.images.github.caption": "Aether u GitHub", + "app.lander.images.github.alt": "Aether u GitHub", + "share.meta_description": "Aether - AI agent za kodiranje napravljen za terminal.", "share.not_found": "Nije pronađeno", "share.link_to_message": "Link do ove poruke", "share.copied": "Kopirano!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "ID nije pronađen", "share.error_api_url_not_found": "API URL nije pronađen", "share.error_connection_failed": "Povezivanje nije uspjelo", - "share.opencode_version": "OpenCode verzija", - "share.opencode_name": "OpenCode", + "share.opencode_version": "Aether verzija", + "share.opencode_name": "Aether", "share.models": "Modeli", "share.cost": "Cijena", "share.input_tokens": "Ulazni tokeni", diff --git a/packages/web/src/content/i18n/da.json b/packages/web/src/content/i18n/da.json index a375c6713e8b..db597fe1fe1a 100644 --- a/packages/web/src/content/i18n/da.json +++ b/packages/web/src/content/i18n/da.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "Brug enhver model", "app.lander.features.use_any_model.prefix": "Understøtter 75+ LLM udbydere igennem", "app.lander.features.use_any_model.suffix": "herunder lokale modeller.", - "app.lander.images.tui.caption": "opencode TUI med tokyonight-temaet", - "app.lander.images.tui.alt": "opencode TUI med tokyonight-temaet", - "app.lander.images.vscode.caption": "opencode i VS Code", - "app.lander.images.vscode.alt": "opencode i VS Code", - "app.lander.images.github.caption": "opencode i GitHub", - "app.lander.images.github.alt": "opencode i GitHub", - "share.meta_description": "opencode - AI-kodningsagenten bygget til terminalen.", + "app.lander.images.tui.caption": "Aether TUI med tokyonight-temaet", + "app.lander.images.tui.alt": "Aether TUI med tokyonight-temaet", + "app.lander.images.vscode.caption": "Aether i VS Code", + "app.lander.images.vscode.alt": "Aether i VS Code", + "app.lander.images.github.caption": "Aether i GitHub", + "app.lander.images.github.alt": "Aether i GitHub", + "share.meta_description": "Aether - AI-kodningsagenten bygget til terminalen.", "share.not_found": "Ikke fundet", "share.link_to_message": "Link til denne besked", "share.copied": "Kopieret!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "id ikke fundet", "share.error_api_url_not_found": "API URL ikke fundet", "share.error_connection_failed": "Forbindelsen mislykkedes", - "share.opencode_version": "opencode-version", - "share.opencode_name": "opencode", + "share.opencode_version": "Aether-version", + "share.opencode_name": "Aether", "share.models": "Modeller", "share.cost": "Omkostning", "share.input_tokens": "Input-tokens", diff --git a/packages/web/src/content/i18n/de.json b/packages/web/src/content/i18n/de.json index 9d6314368911..1c118ad8579c 100644 --- a/packages/web/src/content/i18n/de.json +++ b/packages/web/src/content/i18n/de.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "Beliebiges Modell nutzen", "app.lander.features.use_any_model.prefix": "Unterstützt 75+ LLM-Provider über", "app.lander.features.use_any_model.suffix": "einschließlich lokaler Modelle.", - "app.lander.images.tui.caption": "opencode TUI mit dem tokyonight Theme", - "app.lander.images.tui.alt": "opencode TUI mit dem tokyonight Theme", - "app.lander.images.vscode.caption": "opencode im VS-Code-Editor", - "app.lander.images.vscode.alt": "opencode im VS-Code-Editor", - "app.lander.images.github.caption": "opencode auf GitHub", - "app.lander.images.github.alt": "opencode auf GitHub", - "share.meta_description": "opencode - Der AI-Coding-Agent für das Terminal.", + "app.lander.images.tui.caption": "Aether TUI mit dem tokyonight Theme", + "app.lander.images.tui.alt": "Aether TUI mit dem tokyonight Theme", + "app.lander.images.vscode.caption": "Aether im VS-Code-Editor", + "app.lander.images.vscode.alt": "Aether im VS-Code-Editor", + "app.lander.images.github.caption": "Aether auf GitHub", + "app.lander.images.github.alt": "Aether auf GitHub", + "share.meta_description": "Aether - Der AI-Coding-Agent für das Terminal.", "share.not_found": "Nicht gefunden", "share.link_to_message": "Link zu dieser Nachricht", "share.copied": "Kopiert!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "ID nicht gefunden", "share.error_api_url_not_found": "API URL nicht gefunden", "share.error_connection_failed": "Verbindung fehlgeschlagen", - "share.opencode_version": "opencode Version", - "share.opencode_name": "opencode", + "share.opencode_version": "Aether Version", + "share.opencode_name": "Aether", "share.models": "Modelle", "share.cost": "Kosten", "share.input_tokens": "Eingabe-Token", diff --git a/packages/web/src/content/i18n/en.json b/packages/web/src/content/i18n/en.json index fedb70a6cbac..69cdcb230b53 100644 --- a/packages/web/src/content/i18n/en.json +++ b/packages/web/src/content/i18n/en.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "Use any model", "app.lander.features.use_any_model.prefix": "Supports 75+ LLM providers through", "app.lander.features.use_any_model.suffix": "including local models.", - "app.lander.images.tui.caption": "opencode TUI with the tokyonight theme", - "app.lander.images.tui.alt": "opencode TUI with the tokyonight theme", - "app.lander.images.vscode.caption": "opencode in VS Code", - "app.lander.images.vscode.alt": "opencode in VS Code", - "app.lander.images.github.caption": "opencode in GitHub", - "app.lander.images.github.alt": "opencode in GitHub", - "share.meta_description": "opencode - The AI coding agent built for the terminal.", + "app.lander.images.tui.caption": "Aether TUI with the tokyonight theme", + "app.lander.images.tui.alt": "Aether TUI with the tokyonight theme", + "app.lander.images.vscode.caption": "Aether in VS Code", + "app.lander.images.vscode.alt": "Aether in VS Code", + "app.lander.images.github.caption": "Aether in GitHub", + "app.lander.images.github.alt": "Aether in GitHub", + "share.meta_description": "Aether - The AI coding agent built for the terminal.", "share.not_found": "Not found", "share.link_to_message": "Link to this message", "share.copied": "Copied!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "id not found", "share.error_api_url_not_found": "API URL not found", "share.error_connection_failed": "Connection failed", - "share.opencode_version": "opencode version", - "share.opencode_name": "opencode", + "share.opencode_version": "Aether version", + "share.opencode_name": "Aether", "share.models": "Models", "share.cost": "Cost", "share.input_tokens": "Input Tokens", diff --git a/packages/web/src/content/i18n/es.json b/packages/web/src/content/i18n/es.json index a30a7f06492c..f9ff141c1e8e 100644 --- a/packages/web/src/content/i18n/es.json +++ b/packages/web/src/content/i18n/es.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "Usa cualquier modelo", "app.lander.features.use_any_model.prefix": "Admite más de 75 proveedores LLM a través de", "app.lander.features.use_any_model.suffix": "incluyendo modelos locales.", - "app.lander.images.tui.caption": "opencode TUI con el tema tokyonight", - "app.lander.images.tui.alt": "opencode TUI con el tema tokyonight", - "app.lander.images.vscode.caption": "opencode en VS Code", - "app.lander.images.vscode.alt": "opencode en VS Code", - "app.lander.images.github.caption": "opencode en GitHub", - "app.lander.images.github.alt": "opencode en GitHub", - "share.meta_description": "opencode - Agente de codificacion con IA para terminal.", + "app.lander.images.tui.caption": "Aether TUI con el tema tokyonight", + "app.lander.images.tui.alt": "Aether TUI con el tema tokyonight", + "app.lander.images.vscode.caption": "Aether en VS Code", + "app.lander.images.vscode.alt": "Aether en VS Code", + "app.lander.images.github.caption": "Aether en GitHub", + "app.lander.images.github.alt": "Aether en GitHub", + "share.meta_description": "Aether - Agente de codificacion con IA para terminal.", "share.not_found": "No encontrado", "share.link_to_message": "Enlace a este mensaje", "share.copied": "¡Copiado!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "no encontrado", "share.error_api_url_not_found": "URL de la API no encontrada", "share.error_connection_failed": "Error de conexión", - "share.opencode_version": "Versión opencode", - "share.opencode_name": "opencode", + "share.opencode_version": "Versión Aether", + "share.opencode_name": "Aether", "share.models": "Modelos", "share.cost": "Costo", "share.input_tokens": "Tokens de entrada", diff --git a/packages/web/src/content/i18n/fr.json b/packages/web/src/content/i18n/fr.json index 294badf4957f..918dc46300e1 100644 --- a/packages/web/src/content/i18n/fr.json +++ b/packages/web/src/content/i18n/fr.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "Utiliser n'importe quel modèle", "app.lander.features.use_any_model.prefix": "Prend en charge plus de 75 fournisseurs LLM via", "app.lander.features.use_any_model.suffix": "y compris des modèles locaux.", - "app.lander.images.tui.caption": "opencode TUI avec le thème tokyonight", - "app.lander.images.tui.alt": "opencode TUI avec le thème tokyonight", - "app.lander.images.vscode.caption": "opencode dans VS Code", - "app.lander.images.vscode.alt": "opencode dans VS Code", - "app.lander.images.github.caption": "opencode dans GitHub", - "app.lander.images.github.alt": "opencode dans GitHub", - "share.meta_description": "opencode - Agent IA de code conçu pour le terminal.", + "app.lander.images.tui.caption": "Aether TUI avec le thème tokyonight", + "app.lander.images.tui.alt": "Aether TUI avec le thème tokyonight", + "app.lander.images.vscode.caption": "Aether dans VS Code", + "app.lander.images.vscode.alt": "Aether dans VS Code", + "app.lander.images.github.caption": "Aether dans GitHub", + "app.lander.images.github.alt": "Aether dans GitHub", + "share.meta_description": "Aether - Agent IA de code conçu pour le terminal.", "share.not_found": "Pas trouvé", "share.link_to_message": "Lien vers ce message", "share.copied": "Copié!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "id introuvable", "share.error_api_url_not_found": "API URL introuvable", "share.error_connection_failed": "La connexion a échoué", - "share.opencode_version": "version d'opencode", - "share.opencode_name": "opencode", + "share.opencode_version": "version d'Aether", + "share.opencode_name": "Aether", "share.models": "Modèles", "share.cost": "Coût", "share.input_tokens": "Tokens d'entrée", diff --git a/packages/web/src/content/i18n/it.json b/packages/web/src/content/i18n/it.json index a9ed2b1f86ce..b4d17de902af 100644 --- a/packages/web/src/content/i18n/it.json +++ b/packages/web/src/content/i18n/it.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "Usa qualsiasi modello", "app.lander.features.use_any_model.prefix": "Supporta oltre 75 provider LLM tramite", "app.lander.features.use_any_model.suffix": "inclusi i modelli locali.", - "app.lander.images.tui.caption": "TUI di opencode con il tema tokyonight", - "app.lander.images.tui.alt": "TUI di opencode con il tema tokyonight", - "app.lander.images.vscode.caption": "opencode su VS Code", - "app.lander.images.vscode.alt": "opencode su VS Code", - "app.lander.images.github.caption": "opencode su GitHub", - "app.lander.images.github.alt": "opencode su GitHub", - "share.meta_description": "opencode - L'agente AI di coding creato per il terminale.", + "app.lander.images.tui.caption": "TUI di Aether con il tema tokyonight", + "app.lander.images.tui.alt": "TUI di Aether con il tema tokyonight", + "app.lander.images.vscode.caption": "Aether su VS Code", + "app.lander.images.vscode.alt": "Aether su VS Code", + "app.lander.images.github.caption": "Aether su GitHub", + "app.lander.images.github.alt": "Aether su GitHub", + "share.meta_description": "Aether - L'agente AI di coding creato per il terminale.", "share.not_found": "Non trovato", "share.link_to_message": "Link a questo messaggio", "share.copied": "Copiato!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "ID non trovato", "share.error_api_url_not_found": "URL API non trovato", "share.error_connection_failed": "Connessione non riuscita", - "share.opencode_version": "Versione OpenCode", - "share.opencode_name": "opencode", + "share.opencode_version": "Versione Aether", + "share.opencode_name": "Aether", "share.models": "Modelli", "share.cost": "Costo", "share.input_tokens": "Token di input", diff --git a/packages/web/src/content/i18n/ja.json b/packages/web/src/content/i18n/ja.json index 9ef6851e5288..d9b29434d702 100644 --- a/packages/web/src/content/i18n/ja.json +++ b/packages/web/src/content/i18n/ja.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "任意のモデルを使う", "app.lander.features.use_any_model.prefix": "75以上のLLMプロバイダーをサポート", "app.lander.features.use_any_model.suffix": "ローカルモデルを含みます。", - "app.lander.images.tui.caption": "tokyonightテーマのopencode TUI", - "app.lander.images.tui.alt": "tokyonightテーマのopencode TUI", - "app.lander.images.vscode.caption": "VS Codeでのopencode", - "app.lander.images.vscode.alt": "VS Codeでのopencode", - "app.lander.images.github.caption": "GitHubでのopencode", - "app.lander.images.github.alt": "GitHubでのopencode", - "share.meta_description": "opencode - ターミナル向けのAIコーディングエージェント。", + "app.lander.images.tui.caption": "tokyonightテーマのAether TUI", + "app.lander.images.tui.alt": "tokyonightテーマのAether TUI", + "app.lander.images.vscode.caption": "VS CodeでのAether", + "app.lander.images.vscode.alt": "VS CodeでのAether", + "app.lander.images.github.caption": "GitHubでのAether", + "app.lander.images.github.alt": "GitHubでのAether", + "share.meta_description": "Aether - ターミナル向けのAIコーディングエージェント。", "share.not_found": "見つかりません", "share.link_to_message": "このメッセージへのリンク", "share.copied": "コピーしました!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "idが見つかりません", "share.error_api_url_not_found": "API URLが見つかりません", "share.error_connection_failed": "接続に失敗しました", - "share.opencode_version": "opencode バージョン", - "share.opencode_name": "opencode", + "share.opencode_version": "Aether バージョン", + "share.opencode_name": "Aether", "share.models": "モデル", "share.cost": "コスト", "share.input_tokens": "入力トークン", diff --git a/packages/web/src/content/i18n/ko.json b/packages/web/src/content/i18n/ko.json index 6336655170c1..6ef033c00a50 100644 --- a/packages/web/src/content/i18n/ko.json +++ b/packages/web/src/content/i18n/ko.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "모든 모델 사용", "app.lander.features.use_any_model.prefix": "75개 이상의 LLM provider를 지원하며", "app.lander.features.use_any_model.suffix": "로컬 모델도 포함됩니다.", - "app.lander.images.tui.caption": "tokyonight theme의 opencode TUI", - "app.lander.images.tui.alt": "tokyonight theme의 opencode TUI", - "app.lander.images.vscode.caption": "VS Code에서 실행 중인 opencode", - "app.lander.images.vscode.alt": "VS Code에서 실행 중인 opencode", - "app.lander.images.github.caption": "GitHub에서 실행 중인 opencode", - "app.lander.images.github.alt": "GitHub에서 실행 중인 opencode", - "share.meta_description": "opencode - terminal을 위한 AI coding agent.", + "app.lander.images.tui.caption": "tokyonight theme의 Aether TUI", + "app.lander.images.tui.alt": "tokyonight theme의 Aether TUI", + "app.lander.images.vscode.caption": "VS Code에서 실행 중인 Aether", + "app.lander.images.vscode.alt": "VS Code에서 실행 중인 Aether", + "app.lander.images.github.caption": "GitHub에서 실행 중인 Aether", + "app.lander.images.github.alt": "GitHub에서 실행 중인 Aether", + "share.meta_description": "Aether - terminal을 위한 AI coding agent.", "share.not_found": "찾을 수 없음", "share.link_to_message": "이 메시지 링크", "share.copied": "복사됨", @@ -53,8 +53,8 @@ "share.error_id_not_found": "id를 찾을 수 없음", "share.error_api_url_not_found": "API URL을 찾을 수 없음", "share.error_connection_failed": "연결 실패", - "share.opencode_version": "opencode 버전", - "share.opencode_name": "opencode", + "share.opencode_version": "Aether 버전", + "share.opencode_name": "Aether", "share.models": "모델", "share.cost": "비용", "share.input_tokens": "입력 토큰", diff --git a/packages/web/src/content/i18n/nb.json b/packages/web/src/content/i18n/nb.json index c91ba2e22910..835b4d61530f 100644 --- a/packages/web/src/content/i18n/nb.json +++ b/packages/web/src/content/i18n/nb.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "Bruk hvilken som helst modell", "app.lander.features.use_any_model.prefix": "Støtter 75+ LLM-leverandører gjennom", "app.lander.features.use_any_model.suffix": "inkludert lokale modeller.", - "app.lander.images.tui.caption": "opencode TUI med tokyonight-temaet", - "app.lander.images.tui.alt": "opencode TUI med tokyonight-temaet", - "app.lander.images.vscode.caption": "opencode i VS Code", - "app.lander.images.vscode.alt": "opencode i VS Code", - "app.lander.images.github.caption": "opencode i GitHub", - "app.lander.images.github.alt": "opencode i GitHub", - "share.meta_description": "opencode - AI-kodeagenten bygget for terminalen.", + "app.lander.images.tui.caption": "Aether TUI med tokyonight-temaet", + "app.lander.images.tui.alt": "Aether TUI med tokyonight-temaet", + "app.lander.images.vscode.caption": "Aether i VS Code", + "app.lander.images.vscode.alt": "Aether i VS Code", + "app.lander.images.github.caption": "Aether i GitHub", + "app.lander.images.github.alt": "Aether i GitHub", + "share.meta_description": "Aether - AI-kodeagenten bygget for terminalen.", "share.not_found": "Ikke funnet", "share.link_to_message": "Link til denne meldingen", "share.copied": "Kopiert!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "id ikke funnet", "share.error_api_url_not_found": "API URL ikke funnet", "share.error_connection_failed": "Tilkobling mislyktes", - "share.opencode_version": "opencode versjon", - "share.opencode_name": "opencode", + "share.opencode_version": "Aether versjon", + "share.opencode_name": "Aether", "share.models": "Modeller", "share.cost": "Kostnad", "share.input_tokens": "Inndata-tokens", diff --git a/packages/web/src/content/i18n/pl.json b/packages/web/src/content/i18n/pl.json index 8cc874f82c6f..749b089394ff 100644 --- a/packages/web/src/content/i18n/pl.json +++ b/packages/web/src/content/i18n/pl.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "Użyj dowolnego modelu", "app.lander.features.use_any_model.prefix": "Obsługuje ponad 75 dostawców LLM przez", "app.lander.features.use_any_model.suffix": "w tym modele lokalne.", - "app.lander.images.tui.caption": "opencode TUI z motywem tokyonight", - "app.lander.images.tui.alt": "opencode TUI z motywem tokyonight", - "app.lander.images.vscode.caption": "opencode w VS Code", - "app.lander.images.vscode.alt": "opencode w VS Code", - "app.lander.images.github.caption": "opencode w GitHub", - "app.lander.images.github.alt": "opencode w GitHub", - "share.meta_description": "opencode - agent kodujący AI dla terminala.", + "app.lander.images.tui.caption": "Aether TUI z motywem tokyonight", + "app.lander.images.tui.alt": "Aether TUI z motywem tokyonight", + "app.lander.images.vscode.caption": "Aether w VS Code", + "app.lander.images.vscode.alt": "Aether w VS Code", + "app.lander.images.github.caption": "Aether w GitHub", + "app.lander.images.github.alt": "Aether w GitHub", + "share.meta_description": "Aether - agent kodujący AI dla terminala.", "share.not_found": "Nie znaleziono", "share.link_to_message": "Link do tej wiadomości", "share.copied": "Skopiowano!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "Nie znaleziono identyfikatora", "share.error_api_url_not_found": "Nie znaleziono API URL", "share.error_connection_failed": "Połączenie nie powiodło się", - "share.opencode_version": "Wersja opencode", - "share.opencode_name": "opencode", + "share.opencode_version": "Wersja Aether", + "share.opencode_name": "Aether", "share.models": "Modele", "share.cost": "Koszt", "share.input_tokens": "Tokeny wejściowe", diff --git a/packages/web/src/content/i18n/pt-BR.json b/packages/web/src/content/i18n/pt-BR.json index c7a378131f0e..4867911c8526 100644 --- a/packages/web/src/content/i18n/pt-BR.json +++ b/packages/web/src/content/i18n/pt-BR.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "Use qualquer modelo", "app.lander.features.use_any_model.prefix": "Suporta mais de 75 provedores de LLM através de", "app.lander.features.use_any_model.suffix": "incluindo modelos locais.", - "app.lander.images.tui.caption": "opencode TUI com o tema tokyonight", - "app.lander.images.tui.alt": "opencode TUI com o tema tokyonight", - "app.lander.images.vscode.caption": "opencode no VS Code", - "app.lander.images.vscode.alt": "opencode no VS Code", - "app.lander.images.github.caption": "opencode no GitHub", - "app.lander.images.github.alt": "opencode no GitHub", - "share.meta_description": "opencode - O agente de codificação de IA construído para o terminal.", + "app.lander.images.tui.caption": "Aether TUI com o tema tokyonight", + "app.lander.images.tui.alt": "Aether TUI com o tema tokyonight", + "app.lander.images.vscode.caption": "Aether no VS Code", + "app.lander.images.vscode.alt": "Aether no VS Code", + "app.lander.images.github.caption": "Aether no GitHub", + "app.lander.images.github.alt": "Aether no GitHub", + "share.meta_description": "Aether - O agente de codificação de IA construído para o terminal.", "share.not_found": "Não encontrado", "share.link_to_message": "Link para esta mensagem", "share.copied": "Copiado!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "id não encontrado", "share.error_api_url_not_found": "API URL não encontrada", "share.error_connection_failed": "Falha na conexão", - "share.opencode_version": "versão do opencode", - "share.opencode_name": "opencode", + "share.opencode_version": "versão do Aether", + "share.opencode_name": "Aether", "share.models": "Modelos", "share.cost": "Custo", "share.input_tokens": "Tokens de Entrada", diff --git a/packages/web/src/content/i18n/ru.json b/packages/web/src/content/i18n/ru.json index 945bc7b0bd0b..a4074c1dd761 100644 --- a/packages/web/src/content/i18n/ru.json +++ b/packages/web/src/content/i18n/ru.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "Используйте любую модель", "app.lander.features.use_any_model.prefix": "Поддерживает 75+ провайдеров LLM через", "app.lander.features.use_any_model.suffix": "включая локальные модели.", - "app.lander.images.tui.caption": "opencode TUI с темой tokyonight", - "app.lander.images.tui.alt": "opencode TUI с темой tokyonight", - "app.lander.images.vscode.caption": "opencode в VS Code", - "app.lander.images.vscode.alt": "opencode в VS Code", - "app.lander.images.github.caption": "opencode в GitHub", - "app.lander.images.github.alt": "opencode в GitHub", - "share.meta_description": "opencode - AI-агент для программирования, созданный для терминала.", + "app.lander.images.tui.caption": "Aether TUI с темой tokyonight", + "app.lander.images.tui.alt": "Aether TUI с темой tokyonight", + "app.lander.images.vscode.caption": "Aether в VS Code", + "app.lander.images.vscode.alt": "Aether в VS Code", + "app.lander.images.github.caption": "Aether в GitHub", + "app.lander.images.github.alt": "Aether в GitHub", + "share.meta_description": "Aether - AI-агент для программирования, созданный для терминала.", "share.not_found": "Не найдено", "share.link_to_message": "Ссылка на это сообщение", "share.copied": "Скопировано!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "id не найден", "share.error_api_url_not_found": "API URL не найден", "share.error_connection_failed": "Не удалось подключиться", - "share.opencode_version": "версия opencode", - "share.opencode_name": "opencode", + "share.opencode_version": "версия Aether", + "share.opencode_name": "Aether", "share.models": "Модели", "share.cost": "Стоимость", "share.input_tokens": "Входные токены", diff --git a/packages/web/src/content/i18n/th.json b/packages/web/src/content/i18n/th.json index 11eb7145cfb4..392db1d442d8 100644 --- a/packages/web/src/content/i18n/th.json +++ b/packages/web/src/content/i18n/th.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "ใช้ได้ทุกโมเดล", "app.lander.features.use_any_model.prefix": "รองรับผู้ให้บริการ LLM มากกว่า 75 รายผ่าน", "app.lander.features.use_any_model.suffix": "รวมถึงโมเดลภายในเครื่อง", - "app.lander.images.tui.caption": "opencode TUI พร้อมธีม tokyonight", - "app.lander.images.tui.alt": "opencode TUI พร้อมธีม tokyonight", - "app.lander.images.vscode.caption": "opencode ใน VS Code", - "app.lander.images.vscode.alt": "opencode ใน VS Code", - "app.lander.images.github.caption": "opencode ใน GitHub", - "app.lander.images.github.alt": "opencode ใน GitHub", - "share.meta_description": "opencode - เอเจนต์เขียนโค้ด AI ที่สร้างมาเพื่อ terminal", + "app.lander.images.tui.caption": "Aether TUI พร้อมธีม tokyonight", + "app.lander.images.tui.alt": "Aether TUI พร้อมธีม tokyonight", + "app.lander.images.vscode.caption": "Aether ใน VS Code", + "app.lander.images.vscode.alt": "Aether ใน VS Code", + "app.lander.images.github.caption": "Aether ใน GitHub", + "app.lander.images.github.alt": "Aether ใน GitHub", + "share.meta_description": "Aether - เอเจนต์เขียนโค้ด AI ที่สร้างมาเพื่อ terminal", "share.not_found": "ไม่พบ", "share.link_to_message": "ลิงก์ไปยังข้อความนี้", "share.copied": "คัดลอกแล้ว!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "ไม่พบ id", "share.error_api_url_not_found": "ไม่พบ API URL", "share.error_connection_failed": "การเชื่อมต่อล้มเหลว", - "share.opencode_version": "เวอร์ชัน opencode", - "share.opencode_name": "opencode", + "share.opencode_version": "เวอร์ชัน Aether", + "share.opencode_name": "Aether", "share.models": "โมเดล", "share.cost": "ค่าใช้จ่าย", "share.input_tokens": "โทเค็นอินพุต", diff --git a/packages/web/src/content/i18n/tr.json b/packages/web/src/content/i18n/tr.json index 9f3e95aa79c4..45ead3281eb9 100644 --- a/packages/web/src/content/i18n/tr.json +++ b/packages/web/src/content/i18n/tr.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "Herhangi bir modeli kullanın", "app.lander.features.use_any_model.prefix": "75+ LLM sağlayıcısını destekler", "app.lander.features.use_any_model.suffix": "yerel modeller dahil.", - "app.lander.images.tui.caption": "tokyonight temasıyla opencode TUI", - "app.lander.images.tui.alt": "tokyonight temasıyla opencode TUI", - "app.lander.images.vscode.caption": "VS Code içinde opencode", - "app.lander.images.vscode.alt": "VS Code içinde opencode", - "app.lander.images.github.caption": "GitHub'da opencode", - "app.lander.images.github.alt": "GitHub'da opencode", - "share.meta_description": "opencode - Terminal için üretilmiş AI kodlama aracı.", + "app.lander.images.tui.caption": "tokyonight temasıyla Aether TUI", + "app.lander.images.tui.alt": "tokyonight temasıyla Aether TUI", + "app.lander.images.vscode.caption": "VS Code içinde Aether", + "app.lander.images.vscode.alt": "VS Code içinde Aether", + "app.lander.images.github.caption": "GitHub'da Aether", + "app.lander.images.github.alt": "GitHub'da Aether", + "share.meta_description": "Aether - Terminal için üretilmiş AI kodlama aracı.", "share.not_found": "Bulunamadı", "share.link_to_message": "Bu mesaja bağlantı", "share.copied": "Kopyalandı!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "id bulunamadı", "share.error_api_url_not_found": "API URL bulunamadı", "share.error_connection_failed": "Bağlantı başarısız", - "share.opencode_version": "opencode sürümü", - "share.opencode_name": "opencode", + "share.opencode_version": "Aether sürümü", + "share.opencode_name": "Aether", "share.models": "Modeller", "share.cost": "Maliyet", "share.input_tokens": "Girdi Token'ları", diff --git a/packages/web/src/content/i18n/zh-TW.json b/packages/web/src/content/i18n/zh-TW.json index 82cc25771edd..aff2b893d8eb 100644 --- a/packages/web/src/content/i18n/zh-TW.json +++ b/packages/web/src/content/i18n/zh-TW.json @@ -19,13 +19,13 @@ "app.lander.features.use_any_model.title": "使用任何模型", "app.lander.features.use_any_model.prefix": "透過以下方式支援 75+ LLM 供應商", "app.lander.features.use_any_model.suffix": "包括本地模型。", - "app.lander.images.tui.caption": "OpenCode TUI (Tokyo Night 主題)", - "app.lander.images.tui.alt": "OpenCode TUI (Tokyo Night 主題)", - "app.lander.images.vscode.caption": "OpenCode 在 VS Code 中", - "app.lander.images.vscode.alt": "OpenCode 在 VS Code 中", - "app.lander.images.github.caption": "OpenCode 在 GitHub 中", - "app.lander.images.github.alt": "OpenCode 在 GitHub 中", - "share.meta_description": "OpenCode - 為終端機打造的 AI 程式碼代理。", + "app.lander.images.tui.caption": "Aether TUI (Tokyo Night 主題)", + "app.lander.images.tui.alt": "Aether TUI (Tokyo Night 主題)", + "app.lander.images.vscode.caption": "Aether 在 VS Code 中", + "app.lander.images.vscode.alt": "Aether 在 VS Code 中", + "app.lander.images.github.caption": "Aether 在 GitHub 中", + "app.lander.images.github.alt": "Aether 在 GitHub 中", + "share.meta_description": "Aether - 為終端機打造的 AI 程式碼代理。", "share.not_found": "找不到", "share.link_to_message": "連結到此訊息", "share.copied": "已複製!", @@ -53,8 +53,8 @@ "share.error_id_not_found": "找不到 ID", "share.error_api_url_not_found": "找不到 API URL", "share.error_connection_failed": "連線失敗", - "share.opencode_version": "OpenCode 版本", - "share.opencode_name": "opencode", + "share.opencode_version": "Aether 版本", + "share.opencode_name": "Aether", "share.models": "模型", "share.cost": "成本", "share.input_tokens": "輸入 Tokens", diff --git a/sdks/vscode/README.md b/sdks/vscode/README.md index 0114045429c3..de26269be0e9 100644 --- a/sdks/vscode/README.md +++ b/sdks/vscode/README.md @@ -1,21 +1,21 @@ -# opencode VS Code Extension +# Aether VS Code Extension -A Visual Studio Code extension that integrates [opencode](https://opencode.ai) directly into your development workflow. +A Visual Studio Code extension that integrates Aether directly into your development workflow. ## Prerequisites -This extension requires the [opencode CLI](https://opencode.ai) to be installed on your system. Visit [opencode.ai](https://opencode.ai) for installation instructions. +This extension requires the `aether` CLI to be installed on your system. ## Features -- **Quick Launch**: Use `Cmd+Esc` (Mac) or `Ctrl+Esc` (Windows/Linux) to open opencode in a split terminal view, or focus an existing terminal session if one is already running. -- **New Session**: Use `Cmd+Shift+Esc` (Mac) or `Ctrl+Shift+Esc` (Windows/Linux) to start a new opencode terminal session, even if one is already open. You can also click the opencode button in the UI. -- **Context Awareness**: Automatically share your current selection or tab with opencode. +- **Quick Launch**: Use `Cmd+Esc` (Mac) or `Ctrl+Esc` (Windows/Linux) to open Aether in a split terminal view, or focus an existing terminal session if one is already running. +- **New Session**: Use `Cmd+Shift+Esc` (Mac) or `Ctrl+Shift+Esc` (Windows/Linux) to start a new Aether terminal session, even if one is already open. You can also click the Aether button in the UI. +- **Context Awareness**: Automatically share your current selection or tab with Aether. - **File Reference Shortcuts**: Use `Cmd+Option+K` (Mac) or `Alt+Ctrl+K` (Linux/Windows) to insert file references. For example, `@File#L37-42`. ## Support -This is an early release. If you encounter issues or have feedback, please create an issue at https://github.com/anomalyco/opencode/issues. +This is an early release. If you encounter issues or have feedback, please create an issue in this repository. ## Development diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index a25d325e5b61..d1371a969f29 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -1,7 +1,7 @@ { "name": "opencode", - "displayName": "opencode", - "description": "opencode for VS Code", + "displayName": "Aether", + "description": "Aether for VS Code", "version": "1.3.2", "publisher": "sst-dev", "repository": { @@ -26,7 +26,7 @@ "commands": [ { "command": "opencode.openTerminal", - "title": "Open opencode", + "title": "Open Aether", "icon": { "light": "images/button-dark.svg", "dark": "images/button-light.svg" @@ -34,7 +34,7 @@ }, { "command": "opencode.openNewTerminal", - "title": "Open opencode in new tab", + "title": "Open Aether in new tab", "icon": { "light": "images/button-dark.svg", "dark": "images/button-light.svg" @@ -56,7 +56,7 @@ "keybindings": [ { "command": "opencode.openTerminal", - "title": "Run opencode", + "title": "Run Aether", "key": "cmd+escape", "mac": "cmd+escape", "win": "ctrl+escape", @@ -64,7 +64,7 @@ }, { "command": "opencode.openNewTerminal", - "title": "Run opencode", + "title": "Run Aether", "key": "cmd+shift+escape", "mac": "cmd+shift+escape", "win": "ctrl+shift+escape", @@ -72,7 +72,7 @@ }, { "command": "opencode.addFilepathToTerminal", - "title": "opencode: Insert At-Mentioned", + "title": "Aether: Insert At-Mentioned", "key": "cmd+alt+k", "mac": "cmd+alt+k", "win": "ctrl+alt+K", From fd2be922552f151330447ac6b15ce738cef4dd2f Mon Sep 17 00:00:00 2001 From: Spin-Particle Date: Mon, 6 Apr 2026 11:53:44 +0800 Subject: [PATCH 2/3] docs: keep OpenCode Zen branding --- README.zht.md | 2 +- packages/app/src/components/dialog-connect-provider.tsx | 2 +- packages/app/src/i18n/ar.ts | 4 ++-- packages/app/src/i18n/br.ts | 4 ++-- packages/app/src/i18n/bs.ts | 4 ++-- packages/app/src/i18n/da.ts | 4 ++-- packages/app/src/i18n/de.ts | 4 ++-- packages/app/src/i18n/en.ts | 4 ++-- packages/app/src/i18n/es.ts | 4 ++-- packages/app/src/i18n/fr.ts | 4 ++-- packages/app/src/i18n/ja.ts | 4 ++-- packages/app/src/i18n/ko.ts | 4 ++-- packages/app/src/i18n/no.ts | 4 ++-- packages/app/src/i18n/pl.ts | 4 ++-- packages/app/src/i18n/ru.ts | 4 ++-- packages/app/src/i18n/th.ts | 4 ++-- packages/app/src/i18n/tr.ts | 4 ++-- packages/app/src/i18n/zh.ts | 6 +++--- packages/app/src/i18n/zht.ts | 4 ++-- 19 files changed, 37 insertions(+), 37 deletions(-) diff --git a/README.zht.md b/README.zht.md index 3b18c47dd61d..0032780bc096 100644 --- a/README.zht.md +++ b/README.zht.md @@ -130,7 +130,7 @@ Aether 內建了兩種 Agent,您可以使用 `Tab` 鍵快速切換。 在功能面上與 Claude Code 非常相似。以下是關鍵差異: - 100% 開源。 -- 不綁定特定的服務提供商。雖然我們推薦使用透過 [Aether Zen](https://opencode.ai/zen) 提供的模型,但 Aether 也可搭配 Claude, OpenAI, Google 甚至本地模型使用。隨著模型不斷演進,彼此間的差距會縮小且價格會下降,因此具備「不限廠商 (provider-agnostic)」的特性至關重要。 +- 不綁定特定的服務提供商。雖然我們推薦使用透過 [OpenCode Zen](https://opencode.ai/zen) 提供的模型,但 Aether 也可搭配 Claude, OpenAI, Google 甚至本地模型使用。隨著模型不斷演進,彼此間的差距會縮小且價格會下降,因此具備「不限廠商 (provider-agnostic)」的特性至關重要。 - 內建 LSP (語言伺服器協定) 支援。 - 專注於終端機介面 (TUI)。Aether 由 Neovim 愛好者與 [terminal.shop](https://terminal.shop) 的創作者打造。我們將不斷挑戰終端機介面的極限。 - 客戶端/伺服器架構 (Client/Server Architecture)。這讓 Aether 能夠在您的電腦上運行的同時,由行動裝置進行遠端操控。這意味著 TUI 前端只是眾多可能的客戶端之一。 diff --git a/packages/app/src/components/dialog-connect-provider.tsx b/packages/app/src/components/dialog-connect-provider.tsx index eabb8c2dc0a2..db2bf1fe9cd7 100644 --- a/packages/app/src/components/dialog-connect-provider.tsx +++ b/packages/app/src/components/dialog-connect-provider.tsx @@ -450,7 +450,7 @@ export function DialogConnectProvider(props: { provider: string }) {
{language.t("provider.connect.opencodeZen.line2")}
{language.t("provider.connect.opencodeZen.visit.prefix")} - + {language.t("provider.connect.opencodeZen.visit.link")} {language.t("provider.connect.opencodeZen.visit.suffix")} diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts index 45abf22bcdea..c1e56901a8b4 100644 --- a/packages/app/src/i18n/ar.ts +++ b/packages/app/src/i18n/ar.ts @@ -121,11 +121,11 @@ export const dict = { "provider.connect.apiKey.placeholder": "مفتاح API", "provider.connect.apiKey.required": "مفتاح API مطلوب", "provider.connect.opencodeZen.line1": - "يمنحك Aether Zen الوصول إلى مجموعة مختارة من النماذج الموثوقة والمحسنة لوكلاء البرمجة.", + "يمنحك OpenCode Zen الوصول إلى مجموعة مختارة من النماذج الموثوقة والمحسنة لوكلاء البرمجة.", "provider.connect.opencodeZen.line2": "باستخدام مفتاح API واحد، ستحصل على إمكانية الوصول إلى نماذج مثل Claude و GPT و Gemini و GLM والمزيد.", "provider.connect.opencodeZen.visit.prefix": "قم بزيارة ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " للحصول على مفتاح API الخاص بك.", "provider.connect.oauth.code.visit.prefix": "قم بزيارة ", "provider.connect.oauth.code.visit.link": "هذا الرابط", diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts index 642db21bda6d..a949a792c023 100644 --- a/packages/app/src/i18n/br.ts +++ b/packages/app/src/i18n/br.ts @@ -121,11 +121,11 @@ export const dict = { "provider.connect.apiKey.placeholder": "Chave de API", "provider.connect.apiKey.required": "A chave de API é obrigatória", "provider.connect.opencodeZen.line1": - "Aether Zen oferece acesso a um conjunto selecionado de modelos confiáveis otimizados para agentes de código.", + "OpenCode Zen oferece acesso a um conjunto selecionado de modelos confiáveis otimizados para agentes de código.", "provider.connect.opencodeZen.line2": "Com uma única chave de API você terá acesso a modelos como Claude, GPT, Gemini, GLM e mais.", "provider.connect.opencodeZen.visit.prefix": "Visite ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " para obter sua chave de API.", "provider.connect.oauth.code.visit.prefix": "Visite ", "provider.connect.oauth.code.visit.link": "este link", diff --git a/packages/app/src/i18n/bs.ts b/packages/app/src/i18n/bs.ts index 6272d97167d4..9f69eb71da71 100644 --- a/packages/app/src/i18n/bs.ts +++ b/packages/app/src/i18n/bs.ts @@ -133,11 +133,11 @@ export const dict = { "provider.connect.apiKey.placeholder": "API ključ", "provider.connect.apiKey.required": "API ključ je obavezan", "provider.connect.opencodeZen.line1": - "Aether Zen ti daje pristup kuriranom skupu pouzdanih, optimizovanih modela za coding agente.", + "OpenCode Zen ti daje pristup kuriranom skupu pouzdanih, optimizovanih modela za coding agente.", "provider.connect.opencodeZen.line2": "Sa jednim API ključem dobijaš pristup modelima kao što su Claude, GPT, Gemini, GLM i drugi.", "provider.connect.opencodeZen.visit.prefix": "Posjeti ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " da preuzmeš svoj API ključ.", "provider.connect.oauth.code.visit.prefix": "Posjeti ", "provider.connect.oauth.code.visit.link": "ovaj link", diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts index 447f6fd1fbcd..04a2fbf32ceb 100644 --- a/packages/app/src/i18n/da.ts +++ b/packages/app/src/i18n/da.ts @@ -133,11 +133,11 @@ export const dict = { "provider.connect.apiKey.placeholder": "API-nøgle", "provider.connect.apiKey.required": "API-nøgle er påkrævet", "provider.connect.opencodeZen.line1": - "Aether Zen giver dig adgang til et udvalg af pålidelige optimerede modeller til kodningsagenter.", + "OpenCode Zen giver dig adgang til et udvalg af pålidelige optimerede modeller til kodningsagenter.", "provider.connect.opencodeZen.line2": "Med en enkelt API-nøgle får du adgang til modeller som Claude, GPT, Gemini, GLM og flere.", "provider.connect.opencodeZen.visit.prefix": "Besøg ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " for at hente din API-nøgle.", "provider.connect.oauth.code.visit.prefix": "Besøg ", "provider.connect.oauth.code.visit.link": "dette link", diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts index 031769552bde..98ef0f8ecc88 100644 --- a/packages/app/src/i18n/de.ts +++ b/packages/app/src/i18n/de.ts @@ -125,11 +125,11 @@ export const dict = { "provider.connect.apiKey.placeholder": "API-Schlüssel", "provider.connect.apiKey.required": "API-Schlüssel ist erforderlich", "provider.connect.opencodeZen.line1": - "Aether Zen bietet Ihnen Zugriff auf eine kuratierte Auswahl zuverlässiger, optimierter Modelle für Coding-Agenten.", + "OpenCode Zen bietet Ihnen Zugriff auf eine kuratierte Auswahl zuverlässiger, optimierter Modelle für Coding-Agenten.", "provider.connect.opencodeZen.line2": "Mit einem einzigen API-Schlüssel erhalten Sie Zugriff auf Modelle wie Claude, GPT, Gemini, GLM und mehr.", "provider.connect.opencodeZen.visit.prefix": "Besuchen Sie ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": ", um Ihren API-Schlüssel zu erhalten.", "provider.connect.oauth.code.visit.prefix": "Besuchen Sie ", "provider.connect.oauth.code.visit.link": "diesen Link", diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts index 96f286042868..ee196d0237b1 100644 --- a/packages/app/src/i18n/en.ts +++ b/packages/app/src/i18n/en.ts @@ -140,11 +140,11 @@ export const dict = { "provider.connect.baseURL.description": "Override the default API endpoint. Leave empty to use the provider's default.", "provider.connect.opencodeZen.line1": - "Aether Zen gives you access to a curated set of reliable optimized models for coding agents.", + "OpenCode Zen gives you access to a curated set of reliable optimized models for coding agents.", "provider.connect.opencodeZen.line2": "With a single API key you'll get access to models such as Claude, GPT, Gemini, GLM and more.", "provider.connect.opencodeZen.visit.prefix": "Visit ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " to collect your API key.", "provider.connect.oauth.code.visit.prefix": "Visit ", "provider.connect.oauth.code.visit.link": "this link", diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts index 631446912ef7..a5357208af6e 100644 --- a/packages/app/src/i18n/es.ts +++ b/packages/app/src/i18n/es.ts @@ -133,11 +133,11 @@ export const dict = { "provider.connect.apiKey.placeholder": "Clave API", "provider.connect.apiKey.required": "La clave API es obligatoria", "provider.connect.opencodeZen.line1": - "Aether Zen te da acceso a un conjunto curado de modelos fiables optimizados para agentes de programación.", + "OpenCode Zen te da acceso a un conjunto curado de modelos fiables optimizados para agentes de programación.", "provider.connect.opencodeZen.line2": "Con una sola clave API obtendrás acceso a modelos como Claude, GPT, Gemini, GLM y más.", "provider.connect.opencodeZen.visit.prefix": "Visita ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " para obtener tu clave API.", "provider.connect.oauth.code.visit.prefix": "Visita ", "provider.connect.oauth.code.visit.link": "este enlace", diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts index 812ac179b6c8..8dc3f6f279fd 100644 --- a/packages/app/src/i18n/fr.ts +++ b/packages/app/src/i18n/fr.ts @@ -121,11 +121,11 @@ export const dict = { "provider.connect.apiKey.placeholder": "Clé API", "provider.connect.apiKey.required": "La clé API est requise", "provider.connect.opencodeZen.line1": - "Aether Zen vous donne accès à un ensemble sélectionné de modèles fiables et optimisés pour les agents de codage.", + "OpenCode Zen vous donne accès à un ensemble sélectionné de modèles fiables et optimisés pour les agents de codage.", "provider.connect.opencodeZen.line2": "Avec une seule clé API, vous aurez accès à des modèles tels que Claude, GPT, Gemini, GLM et plus encore.", "provider.connect.opencodeZen.visit.prefix": "Visitez ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " pour récupérer votre clé API.", "provider.connect.oauth.code.visit.prefix": "Visitez ", "provider.connect.oauth.code.visit.link": "ce lien", diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts index 3793dfdd5d31..e7b151812c22 100644 --- a/packages/app/src/i18n/ja.ts +++ b/packages/app/src/i18n/ja.ts @@ -121,10 +121,10 @@ export const dict = { "provider.connect.apiKey.placeholder": "APIキー", "provider.connect.apiKey.required": "APIキーが必要です", "provider.connect.opencodeZen.line1": - "Aether Zenは、コーディングエージェント向けに最適化された信頼性の高いモデルへのアクセスを提供します。", + "OpenCode Zenは、コーディングエージェント向けに最適化された信頼性の高いモデルへのアクセスを提供します。", "provider.connect.opencodeZen.line2": "1つのAPIキーで、Claude、GPT、Gemini、GLMなどのモデルにアクセスできます。", "provider.connect.opencodeZen.visit.prefix": " ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " にアクセスしてAPIキーを取得してください。", "provider.connect.oauth.code.visit.prefix": " ", "provider.connect.oauth.code.visit.link": "このリンク", diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts index c9c029875ba8..3ef84ac00b09 100644 --- a/packages/app/src/i18n/ko.ts +++ b/packages/app/src/i18n/ko.ts @@ -125,10 +125,10 @@ export const dict = { "provider.connect.apiKey.placeholder": "API 키", "provider.connect.apiKey.required": "API 키가 필요합니다", "provider.connect.opencodeZen.line1": - "Aether Zen은 코딩 에이전트를 위해 최적화된 신뢰할 수 있는 엄선된 모델에 대한 액세스를 제공합니다.", + "OpenCode Zen은 코딩 에이전트를 위해 최적화된 신뢰할 수 있는 엄선된 모델에 대한 액세스를 제공합니다.", "provider.connect.opencodeZen.line2": "단일 API 키로 Claude, GPT, Gemini, GLM 등 다양한 모델에 액세스할 수 있습니다.", "provider.connect.opencodeZen.visit.prefix": "다음 ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": "을 방문하여 API 키를 받으세요.", "provider.connect.oauth.code.visit.prefix": "다음 ", "provider.connect.oauth.code.visit.link": "이 링크", diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts index 941b26440a7e..7a1b457aff4e 100644 --- a/packages/app/src/i18n/no.ts +++ b/packages/app/src/i18n/no.ts @@ -136,11 +136,11 @@ export const dict = { "provider.connect.apiKey.placeholder": "API-nøkkel", "provider.connect.apiKey.required": "API-nøkkel er påkrevd", "provider.connect.opencodeZen.line1": - "Aether Zen gir deg tilgang til et utvalg av pålitelige optimaliserte modeller for kodeagenter.", + "OpenCode Zen gir deg tilgang til et utvalg av pålitelige optimaliserte modeller for kodeagenter.", "provider.connect.opencodeZen.line2": "Med én enkelt API-nøkkel får du tilgang til modeller som Claude, GPT, Gemini, GLM og flere.", "provider.connect.opencodeZen.visit.prefix": "Besøk ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " for å hente API-nøkkelen din.", "provider.connect.oauth.code.visit.prefix": "Besøk ", "provider.connect.oauth.code.visit.link": "denne lenken", diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts index 8a80bf38d73b..3c42d1784eaf 100644 --- a/packages/app/src/i18n/pl.ts +++ b/packages/app/src/i18n/pl.ts @@ -121,11 +121,11 @@ export const dict = { "provider.connect.apiKey.placeholder": "Klucz API", "provider.connect.apiKey.required": "Klucz API jest wymagany", "provider.connect.opencodeZen.line1": - "Aether Zen daje dostęp do wybranego zestawu niezawodnych, zoptymalizowanych modeli dla agentów kodujących.", + "OpenCode Zen daje dostęp do wybranego zestawu niezawodnych, zoptymalizowanych modeli dla agentów kodujących.", "provider.connect.opencodeZen.line2": "Z jednym kluczem API uzyskasz dostęp do modeli takich jak Claude, GPT, Gemini, GLM i więcej.", "provider.connect.opencodeZen.visit.prefix": "Odwiedź ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": ", aby odebrać swój klucz API.", "provider.connect.oauth.code.visit.prefix": "Odwiedź ", "provider.connect.oauth.code.visit.link": "ten link", diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts index 3a21fe71d496..08c4c4847b9a 100644 --- a/packages/app/src/i18n/ru.ts +++ b/packages/app/src/i18n/ru.ts @@ -133,11 +133,11 @@ export const dict = { "provider.connect.apiKey.placeholder": "API ключ", "provider.connect.apiKey.required": "API ключ обязателен", "provider.connect.opencodeZen.line1": - "Aether Zen даёт вам доступ к отобранным надёжным оптимизированным моделям для агентов программирования.", + "OpenCode Zen даёт вам доступ к отобранным надёжным оптимизированным моделям для агентов программирования.", "provider.connect.opencodeZen.line2": "С одним API ключом вы получите доступ к таким моделям как Claude, GPT, Gemini, GLM и другим.", "provider.connect.opencodeZen.visit.prefix": "Посетите ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " чтобы получить ваш API ключ.", "provider.connect.oauth.code.visit.prefix": "Посетите ", "provider.connect.oauth.code.visit.link": "эту ссылку", diff --git a/packages/app/src/i18n/th.ts b/packages/app/src/i18n/th.ts index 33dc0f876096..24170c93e78c 100644 --- a/packages/app/src/i18n/th.ts +++ b/packages/app/src/i18n/th.ts @@ -133,11 +133,11 @@ export const dict = { "provider.connect.apiKey.placeholder": "คีย์ API", "provider.connect.apiKey.required": "ต้องใช้คีย์ API", "provider.connect.opencodeZen.line1": - "Aether Zen ให้คุณเข้าถึงชุดโมเดลที่เชื่อถือได้และปรับแต่งแล้วสำหรับเอเจนต์การเขียนโค้ด", + "OpenCode Zen ให้คุณเข้าถึงชุดโมเดลที่เชื่อถือได้และปรับแต่งแล้วสำหรับเอเจนต์การเขียนโค้ด", "provider.connect.opencodeZen.line2": "ด้วยคีย์ API เดียวคุณจะได้รับการเข้าถึงโมเดล เช่น Claude, GPT, Gemini, GLM และอื่น ๆ", "provider.connect.opencodeZen.visit.prefix": "เยี่ยมชม ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " เพื่อรวบรวมคีย์ API ของคุณ", "provider.connect.oauth.code.visit.prefix": "เยี่ยมชม ", "provider.connect.oauth.code.visit.link": "ลิงก์นี้", diff --git a/packages/app/src/i18n/tr.ts b/packages/app/src/i18n/tr.ts index e81b85a79e5a..97e1cd88b8ee 100644 --- a/packages/app/src/i18n/tr.ts +++ b/packages/app/src/i18n/tr.ts @@ -137,11 +137,11 @@ export const dict = { "provider.connect.apiKey.placeholder": "API anahtarı", "provider.connect.apiKey.required": "API anahtarı gerekli", "provider.connect.opencodeZen.line1": - "Aether Zen, kodlama ajanları için seçilmiş güvenilir optimize edilmiş modellere erişim sağlar.", + "OpenCode Zen, kodlama ajanları için seçilmiş güvenilir optimize edilmiş modellere erişim sağlar.", "provider.connect.opencodeZen.line2": "Tek bir API anahtarıyla Claude, GPT, Gemini, GLM ve daha fazlası gibi modellere erişebilirsiniz.", "provider.connect.opencodeZen.visit.prefix": "", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " adresini ziyaret ederek API anahtarınızı alın.", "provider.connect.oauth.code.visit.prefix": "Hesabınızı bağlamak ve Aether'da {{provider}} modellerini kullanmak için ", diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts index 9ef078999304..fabdc09f3b28 100644 --- a/packages/app/src/i18n/zh.ts +++ b/packages/app/src/i18n/zh.ts @@ -126,7 +126,7 @@ export const dict = { "dialog.provider.group.popular": "热门", "dialog.provider.group.other": "其他", "dialog.provider.tag.recommended": "推荐", - "dialog.provider.opencode.note": "使用 Aether Zen 或 API 密钥连接", + "dialog.provider.opencode.note": "使用 OpenCode Zen 或 API 密钥连接", "dialog.provider.opencode.tagline": "可靠的优化模型", "dialog.provider.opencodeGo.tagline": "适合所有人的低成本订阅", "dialog.provider.anthropic.note": "使用 Claude Pro/Max 或 API 密钥连接", @@ -162,10 +162,10 @@ export const dict = { "provider.connect.baseURL.label": "Base URL(可选)", "provider.connect.baseURL.placeholder": "https://api.example.com/v1", "provider.connect.baseURL.description": "覆盖默认 API 端点。留空则使用供应商默认地址。", - "provider.connect.opencodeZen.line1": "Aether Zen 为你提供一组精选的可靠优化模型,用于代码智能体。", + "provider.connect.opencodeZen.line1": "OpenCode Zen 为你提供一组精选的可靠优化模型,用于代码智能体。", "provider.connect.opencodeZen.line2": "只需一个 API 密钥,你就能使用 Claude、GPT、Gemini、GLM 等模型。", "provider.connect.opencodeZen.visit.prefix": "访问 ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " 获取你的 API 密钥。", "provider.connect.oauth.code.visit.prefix": "访问 ", "provider.connect.oauth.code.visit.link": "此链接", diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts index 8190aabb6d94..5da6344cfda6 100644 --- a/packages/app/src/i18n/zht.ts +++ b/packages/app/src/i18n/zht.ts @@ -136,10 +136,10 @@ export const dict = { "provider.connect.apiKey.label": "{{provider}} API 金鑰", "provider.connect.apiKey.placeholder": "API 金鑰", "provider.connect.apiKey.required": "API 金鑰為必填", - "provider.connect.opencodeZen.line1": "Aether Zen 為你提供一組精選的可靠最佳化模型,用於程式碼代理程式。", + "provider.connect.opencodeZen.line1": "OpenCode Zen 為你提供一組精選的可靠最佳化模型,用於程式碼代理程式。", "provider.connect.opencodeZen.line2": "只需一個 API 金鑰,你就能使用 Claude、GPT、Gemini、GLM 等模型。", "provider.connect.opencodeZen.visit.prefix": "造訪 ", - "provider.connect.opencodeZen.visit.link": "aether.ai/zen", + "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " 取得你的 API 金鑰。", "provider.connect.oauth.code.visit.prefix": "造訪 ", "provider.connect.oauth.code.visit.link": "此連結", From 9fdf9bcaf9bd8c2c25d41f25f31ca136c40f7b17 Mon Sep 17 00:00:00 2001 From: Spin-Particle Date: Mon, 6 Apr 2026 13:16:32 +0800 Subject: [PATCH 3/3] refactor: migrate project resources from .opencode to .Aether --- {.opencode => .Aether}/agent/docs.md | 0 {.opencode => .Aether}/agent/duplicate-pr.md | 0 {.opencode => .Aether}/agent/translator.md | 0 {.opencode => .Aether}/agent/triage.md | 0 {.opencode => .Aether}/command/ai-deps.md | 0 {.opencode => .Aether}/command/changelog.md | 0 {.opencode => .Aether}/command/commit.md | 0 {.opencode => .Aether}/command/issues.md | 0 {.opencode => .Aether}/command/learn.md | 0 {.opencode => .Aether}/command/rmslop.md | 0 {.opencode => .Aether}/command/spellcheck.md | 0 {.opencode => .Aether}/env.d.ts | 0 {.opencode => .Aether}/glossary/README.md | 0 {.opencode => .Aether}/glossary/ar.md | 0 {.opencode => .Aether}/glossary/br.md | 0 {.opencode => .Aether}/glossary/bs.md | 0 {.opencode => .Aether}/glossary/da.md | 0 {.opencode => .Aether}/glossary/de.md | 0 {.opencode => .Aether}/glossary/es.md | 0 {.opencode => .Aether}/glossary/fr.md | 0 {.opencode => .Aether}/glossary/ja.md | 0 {.opencode => .Aether}/glossary/ko.md | 0 {.opencode => .Aether}/glossary/no.md | 0 {.opencode => .Aether}/glossary/pl.md | 0 {.opencode => .Aether}/glossary/ru.md | 0 {.opencode => .Aether}/glossary/th.md | 0 {.opencode => .Aether}/glossary/tr.md | 0 {.opencode => .Aether}/glossary/zh-cn.md | 0 {.opencode => .Aether}/glossary/zh-tw.md | 0 {.opencode => .Aether}/opencode.jsonc | 0 .../skills/academic-researcher/SKILL.md | 0 .../skills/arxiv-search/SKILL.md | 0 .../skills/arxiv-search/arxiv_search.py | 0 .../skills/brainstorming/SKILL.md | 0 .../skills/clawhub/SKILL.md | 0 .../skills/code-reviewer/AGENTS.md | 0 .../skills/code-reviewer/SKILL.md | 0 .../rules/correctness-error-handling.md | 0 .../rules/maintainability-naming.md | 0 .../rules/maintainability-type-hints.md | 0 .../rules/performance-n-plus-one.md | 0 .../rules/security-sql-injection.md | 0 .../rules/security-xss-prevention.md | 0 .../skills/deep-research/SKILL.md | 0 .../skills/docx/LICENSE.txt | 0 {.opencode => .Aether}/skills/docx/SKILL.md | 0 .../skills/docx/scripts/__init__.py | 0 .../skills/docx/scripts/accept_changes.py | 0 .../skills/docx/scripts/comment.py | 0 .../docx/scripts/office/helpers/__init__.py | 0 .../docx/scripts/office/helpers/merge_runs.py | 0 .../office/helpers/simplify_redlines.py | 0 .../skills/docx/scripts/office/pack.py | 0 .../schemas/ISO-IEC29500-4_2016/dml-chart.xsd | 0 .../ISO-IEC29500-4_2016/dml-chartDrawing.xsd | 0 .../ISO-IEC29500-4_2016/dml-diagram.xsd | 0 .../ISO-IEC29500-4_2016/dml-lockedCanvas.xsd | 0 .../schemas/ISO-IEC29500-4_2016/dml-main.xsd | 0 .../ISO-IEC29500-4_2016/dml-picture.xsd | 0 .../dml-spreadsheetDrawing.xsd | 0 .../dml-wordprocessingDrawing.xsd | 0 .../schemas/ISO-IEC29500-4_2016/pml.xsd | 0 .../shared-additionalCharacteristics.xsd | 0 .../shared-bibliography.xsd | 0 .../shared-commonSimpleTypes.xsd | 0 .../shared-customXmlDataProperties.xsd | 0 .../shared-customXmlSchemaProperties.xsd | 0 .../shared-documentPropertiesCustom.xsd | 0 .../shared-documentPropertiesExtended.xsd | 0 .../shared-documentPropertiesVariantTypes.xsd | 0 .../ISO-IEC29500-4_2016/shared-math.xsd | 0 .../shared-relationshipReference.xsd | 0 .../schemas/ISO-IEC29500-4_2016/sml.xsd | 0 .../schemas/ISO-IEC29500-4_2016/vml-main.xsd | 0 .../ISO-IEC29500-4_2016/vml-officeDrawing.xsd | 0 .../vml-presentationDrawing.xsd | 0 .../vml-spreadsheetDrawing.xsd | 0 .../vml-wordprocessingDrawing.xsd | 0 .../schemas/ISO-IEC29500-4_2016/wml.xsd | 0 .../schemas/ISO-IEC29500-4_2016/xml.xsd | 0 .../ecma/fouth-edition/opc-contentTypes.xsd | 0 .../ecma/fouth-edition/opc-coreProperties.xsd | 0 .../schemas/ecma/fouth-edition/opc-digSig.xsd | 0 .../ecma/fouth-edition/opc-relationships.xsd | 0 .../docx/scripts/office/schemas/mce/mc.xsd | 0 .../office/schemas/microsoft/wml-2010.xsd | 0 .../office/schemas/microsoft/wml-2012.xsd | 0 .../office/schemas/microsoft/wml-2018.xsd | 0 .../office/schemas/microsoft/wml-cex-2018.xsd | 0 .../office/schemas/microsoft/wml-cid-2016.xsd | 0 .../microsoft/wml-sdtdatahash-2020.xsd | 0 .../schemas/microsoft/wml-symex-2015.xsd | 0 .../skills/docx/scripts/office/soffice.py | 0 .../skills/docx/scripts/office/unpack.py | 0 .../skills/docx/scripts/office/validate.py | 0 .../scripts/office/validators/__init__.py | 0 .../docx/scripts/office/validators/base.py | 0 .../docx/scripts/office/validators/docx.py | 0 .../docx/scripts/office/validators/pptx.py | 0 .../scripts/office/validators/redlining.py | 0 .../docx/scripts/templates/comments.xml | 0 .../scripts/templates/commentsExtended.xml | 0 .../scripts/templates/commentsExtensible.xml | 0 .../docx/scripts/templates/commentsIds.xml | 0 .../skills/docx/scripts/templates/people.xml | 0 .../skills/literature-review/SKILL.md | 0 .../assets/review_template.md | 0 .../references/citation_styles.md | 0 .../references/database_strategies.md | 0 .../literature-review/scripts/generate_pdf.py | 0 .../scripts/search_databases.py | 0 .../scripts/verify_citations.py | 0 .../skills/peer-review/SKILL.md | 0 .../peer-review/references/common_issues.md | 0 .../references/reporting_standards.md | 0 .../skills/prepare-for-git-commit/SKILL.md | 0 .../skills/project-signpost/SKILL.md | 0 .../examples/README_docs-design.md | 0 .../project-signpost/examples/README_docs.md | 0 .../project-signpost/examples/README_root.md | 0 .../examples/README_src-hybrid.md | 0 .../project-signpost/examples/README_src.md | 0 .../prompts/generate-file-summary.md | 0 .../prompts/generate-trigger-condition.md | 0 .../templates/hybrid-readme.md | 0 .../templates/subfolder-readme.md | 0 .../templates/top-level-readme.md | 0 .../skills/read-arxiv-paper/SKILL.md | 0 .../skills/research-grants-ch/SKILL.md | 0 .../assets/budget_justification.md | 0 .../assets/nsfc_general_template.md | 0 .../assets/nsfc_youth_template.md | 0 .../assets/postdoc_template.md | 0 .../references/budget_template.md | 0 .../references/common_mistakes.md | 0 .../references/nsfc_guidelines.md | 0 .../references/postdoc_fund.md | 0 .../references/review_criteria.md | 0 .../references/writing_tips.md | 0 .../skills/research-grants/README.md | 0 .../skills/research-grants/SKILL.md | 0 .../assets/budget_justification_template.md | 0 .../assets/nih_specific_aims_template.md | 0 .../assets/nsf_project_summary_template.md | 0 .../references/broader_impacts.md | 0 .../references/darpa_guidelines.md | 0 .../references/doe_guidelines.md | 0 .../references/nih_guidelines.md | 0 .../references/nsf_guidelines.md | 0 .../references/specific_aims_guide.md | 0 .../skills/response-to-referee/SKILL.md | 0 .../assets/Reply-and-changes.tex | 0 .../references/response-templates.md | 0 .../references/tone-and-style.md | 0 .../skills/scientific-brainstorming/SKILL.md | 0 .../references/brainstorming_methods.md | 0 .../scientific-critical-thinking/SKILL.md | 0 .../references/common_biases.md | 0 .../references/evidence_hierarchy.md | 0 .../references/experimental_design.md | 0 .../references/logical_fallacies.md | 0 .../references/scientific_method.md | 0 .../references/statistical_pitfalls.md | 0 .../skills/skill-creator/SKILL.md | 0 .../skills/skill-creator/license.txt | 0 .../skill-creator/scripts/init_skill.py | 0 .../skill-creator/scripts/package_skill.py | 0 .../skill-creator/scripts/quick_validate.py | 0 .../scripts/test_package_skill.py | 0 .../scripts/test_quick_validate.py | 0 .../skills/skill-manager/SKILL.md | 0 .../skill-manager/scripts/analyze_deps.py | 0 .../skills/skill-manager/scripts/classify.py | 0 .../skill-manager/scripts/generate_report.py | 0 .../skill-manager/scripts/scan_skills.py | 0 .../skills/skill-security-auditor/SKILL.md | 0 .../references/threat-model.md | 0 .../scripts/skill_security_auditor.py | 0 .../skills/writer-paper/SKILL.md | 0 .../references/latex-formatting.md | 0 .../writer-paper/references/research-types.md | 0 .../references/writing-guidelines.md | 0 {.opencode => .Aether}/themes/mytheme.json | 0 .../tool_disable/github-pr-search.ts | 0 .../tool_disable/github-triage.ts | 0 .opencode/.gitignore | 6 --- .../electron-builder.config.ts | 22 ++++---- packages/opencode/script/build.ts | 4 +- packages/opencode/src/agent/agent.ts | 1 + packages/opencode/src/cli/cmd/agent.ts | 2 +- packages/opencode/src/cli/cmd/mcp.ts | 6 ++- .../src/cli/cmd/tui/component/tips.tsx | 10 ++-- .../src/cli/cmd/tui/context/theme.tsx | 3 +- packages/opencode/src/config/config.ts | 44 +++++++++++----- packages/opencode/src/config/paths.ts | 52 ++++++++++--------- packages/opencode/src/config/tui.ts | 2 +- packages/opencode/src/file/ripgrep.ts | 2 +- packages/opencode/src/server/routes/config.ts | 8 +-- packages/opencode/src/session/index.ts | 2 +- packages/opencode/test/agent/agent.test.ts | 3 +- packages/opencode/test/config/config.test.ts | 46 +++++++++++----- packages/opencode/test/config/tui.test.ts | 6 +-- packages/opencode/test/file/ripgrep.test.ts | 6 +-- 203 files changed, 131 insertions(+), 94 deletions(-) rename {.opencode => .Aether}/agent/docs.md (100%) rename {.opencode => .Aether}/agent/duplicate-pr.md (100%) rename {.opencode => .Aether}/agent/translator.md (100%) rename {.opencode => .Aether}/agent/triage.md (100%) rename {.opencode => .Aether}/command/ai-deps.md (100%) rename {.opencode => .Aether}/command/changelog.md (100%) rename {.opencode => .Aether}/command/commit.md (100%) rename {.opencode => .Aether}/command/issues.md (100%) rename {.opencode => .Aether}/command/learn.md (100%) rename {.opencode => .Aether}/command/rmslop.md (100%) rename {.opencode => .Aether}/command/spellcheck.md (100%) rename {.opencode => .Aether}/env.d.ts (100%) rename {.opencode => .Aether}/glossary/README.md (100%) rename {.opencode => .Aether}/glossary/ar.md (100%) rename {.opencode => .Aether}/glossary/br.md (100%) rename {.opencode => .Aether}/glossary/bs.md (100%) rename {.opencode => .Aether}/glossary/da.md (100%) rename {.opencode => .Aether}/glossary/de.md (100%) rename {.opencode => .Aether}/glossary/es.md (100%) rename {.opencode => .Aether}/glossary/fr.md (100%) rename {.opencode => .Aether}/glossary/ja.md (100%) rename {.opencode => .Aether}/glossary/ko.md (100%) rename {.opencode => .Aether}/glossary/no.md (100%) rename {.opencode => .Aether}/glossary/pl.md (100%) rename {.opencode => .Aether}/glossary/ru.md (100%) rename {.opencode => .Aether}/glossary/th.md (100%) rename {.opencode => .Aether}/glossary/tr.md (100%) rename {.opencode => .Aether}/glossary/zh-cn.md (100%) rename {.opencode => .Aether}/glossary/zh-tw.md (100%) rename {.opencode => .Aether}/opencode.jsonc (100%) rename {.opencode => .Aether}/skills/academic-researcher/SKILL.md (100%) rename {.opencode => .Aether}/skills/arxiv-search/SKILL.md (100%) rename {.opencode => .Aether}/skills/arxiv-search/arxiv_search.py (100%) rename {.opencode => .Aether}/skills/brainstorming/SKILL.md (100%) rename {.opencode => .Aether}/skills/clawhub/SKILL.md (100%) rename {.opencode => .Aether}/skills/code-reviewer/AGENTS.md (100%) rename {.opencode => .Aether}/skills/code-reviewer/SKILL.md (100%) rename {.opencode => .Aether}/skills/code-reviewer/rules/correctness-error-handling.md (100%) rename {.opencode => .Aether}/skills/code-reviewer/rules/maintainability-naming.md (100%) rename {.opencode => .Aether}/skills/code-reviewer/rules/maintainability-type-hints.md (100%) rename {.opencode => .Aether}/skills/code-reviewer/rules/performance-n-plus-one.md (100%) rename {.opencode => .Aether}/skills/code-reviewer/rules/security-sql-injection.md (100%) rename {.opencode => .Aether}/skills/code-reviewer/rules/security-xss-prevention.md (100%) rename {.opencode => .Aether}/skills/deep-research/SKILL.md (100%) rename {.opencode => .Aether}/skills/docx/LICENSE.txt (100%) rename {.opencode => .Aether}/skills/docx/SKILL.md (100%) rename {.opencode => .Aether}/skills/docx/scripts/__init__.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/accept_changes.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/comment.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/helpers/__init__.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/helpers/merge_runs.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/helpers/simplify_redlines.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/pack.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/mce/mc.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/soffice.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/unpack.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/validate.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/validators/__init__.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/validators/base.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/validators/docx.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/validators/pptx.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/office/validators/redlining.py (100%) rename {.opencode => .Aether}/skills/docx/scripts/templates/comments.xml (100%) rename {.opencode => .Aether}/skills/docx/scripts/templates/commentsExtended.xml (100%) rename {.opencode => .Aether}/skills/docx/scripts/templates/commentsExtensible.xml (100%) rename {.opencode => .Aether}/skills/docx/scripts/templates/commentsIds.xml (100%) rename {.opencode => .Aether}/skills/docx/scripts/templates/people.xml (100%) rename {.opencode => .Aether}/skills/literature-review/SKILL.md (100%) rename {.opencode => .Aether}/skills/literature-review/assets/review_template.md (100%) rename {.opencode => .Aether}/skills/literature-review/references/citation_styles.md (100%) rename {.opencode => .Aether}/skills/literature-review/references/database_strategies.md (100%) rename {.opencode => .Aether}/skills/literature-review/scripts/generate_pdf.py (100%) rename {.opencode => .Aether}/skills/literature-review/scripts/search_databases.py (100%) rename {.opencode => .Aether}/skills/literature-review/scripts/verify_citations.py (100%) rename {.opencode => .Aether}/skills/peer-review/SKILL.md (100%) rename {.opencode => .Aether}/skills/peer-review/references/common_issues.md (100%) rename {.opencode => .Aether}/skills/peer-review/references/reporting_standards.md (100%) rename {.opencode => .Aether}/skills/prepare-for-git-commit/SKILL.md (100%) rename {.opencode => .Aether}/skills/project-signpost/SKILL.md (100%) rename {.opencode => .Aether}/skills/project-signpost/examples/README_docs-design.md (100%) rename {.opencode => .Aether}/skills/project-signpost/examples/README_docs.md (100%) rename {.opencode => .Aether}/skills/project-signpost/examples/README_root.md (100%) rename {.opencode => .Aether}/skills/project-signpost/examples/README_src-hybrid.md (100%) rename {.opencode => .Aether}/skills/project-signpost/examples/README_src.md (100%) rename {.opencode => .Aether}/skills/project-signpost/prompts/generate-file-summary.md (100%) rename {.opencode => .Aether}/skills/project-signpost/prompts/generate-trigger-condition.md (100%) rename {.opencode => .Aether}/skills/project-signpost/templates/hybrid-readme.md (100%) rename {.opencode => .Aether}/skills/project-signpost/templates/subfolder-readme.md (100%) rename {.opencode => .Aether}/skills/project-signpost/templates/top-level-readme.md (100%) rename {.opencode => .Aether}/skills/read-arxiv-paper/SKILL.md (100%) rename {.opencode => .Aether}/skills/research-grants-ch/SKILL.md (100%) rename {.opencode => .Aether}/skills/research-grants-ch/assets/budget_justification.md (100%) rename {.opencode => .Aether}/skills/research-grants-ch/assets/nsfc_general_template.md (100%) rename {.opencode => .Aether}/skills/research-grants-ch/assets/nsfc_youth_template.md (100%) rename {.opencode => .Aether}/skills/research-grants-ch/assets/postdoc_template.md (100%) rename {.opencode => .Aether}/skills/research-grants-ch/references/budget_template.md (100%) rename {.opencode => .Aether}/skills/research-grants-ch/references/common_mistakes.md (100%) rename {.opencode => .Aether}/skills/research-grants-ch/references/nsfc_guidelines.md (100%) rename {.opencode => .Aether}/skills/research-grants-ch/references/postdoc_fund.md (100%) rename {.opencode => .Aether}/skills/research-grants-ch/references/review_criteria.md (100%) rename {.opencode => .Aether}/skills/research-grants-ch/references/writing_tips.md (100%) rename {.opencode => .Aether}/skills/research-grants/README.md (100%) rename {.opencode => .Aether}/skills/research-grants/SKILL.md (100%) rename {.opencode => .Aether}/skills/research-grants/assets/budget_justification_template.md (100%) rename {.opencode => .Aether}/skills/research-grants/assets/nih_specific_aims_template.md (100%) rename {.opencode => .Aether}/skills/research-grants/assets/nsf_project_summary_template.md (100%) rename {.opencode => .Aether}/skills/research-grants/references/broader_impacts.md (100%) rename {.opencode => .Aether}/skills/research-grants/references/darpa_guidelines.md (100%) rename {.opencode => .Aether}/skills/research-grants/references/doe_guidelines.md (100%) rename {.opencode => .Aether}/skills/research-grants/references/nih_guidelines.md (100%) rename {.opencode => .Aether}/skills/research-grants/references/nsf_guidelines.md (100%) rename {.opencode => .Aether}/skills/research-grants/references/specific_aims_guide.md (100%) rename {.opencode => .Aether}/skills/response-to-referee/SKILL.md (100%) rename {.opencode => .Aether}/skills/response-to-referee/assets/Reply-and-changes.tex (100%) rename {.opencode => .Aether}/skills/response-to-referee/references/response-templates.md (100%) rename {.opencode => .Aether}/skills/response-to-referee/references/tone-and-style.md (100%) rename {.opencode => .Aether}/skills/scientific-brainstorming/SKILL.md (100%) rename {.opencode => .Aether}/skills/scientific-brainstorming/references/brainstorming_methods.md (100%) rename {.opencode => .Aether}/skills/scientific-critical-thinking/SKILL.md (100%) rename {.opencode => .Aether}/skills/scientific-critical-thinking/references/common_biases.md (100%) rename {.opencode => .Aether}/skills/scientific-critical-thinking/references/evidence_hierarchy.md (100%) rename {.opencode => .Aether}/skills/scientific-critical-thinking/references/experimental_design.md (100%) rename {.opencode => .Aether}/skills/scientific-critical-thinking/references/logical_fallacies.md (100%) rename {.opencode => .Aether}/skills/scientific-critical-thinking/references/scientific_method.md (100%) rename {.opencode => .Aether}/skills/scientific-critical-thinking/references/statistical_pitfalls.md (100%) rename {.opencode => .Aether}/skills/skill-creator/SKILL.md (100%) rename {.opencode => .Aether}/skills/skill-creator/license.txt (100%) rename {.opencode => .Aether}/skills/skill-creator/scripts/init_skill.py (100%) rename {.opencode => .Aether}/skills/skill-creator/scripts/package_skill.py (100%) rename {.opencode => .Aether}/skills/skill-creator/scripts/quick_validate.py (100%) rename {.opencode => .Aether}/skills/skill-creator/scripts/test_package_skill.py (100%) rename {.opencode => .Aether}/skills/skill-creator/scripts/test_quick_validate.py (100%) rename {.opencode => .Aether}/skills/skill-manager/SKILL.md (100%) rename {.opencode => .Aether}/skills/skill-manager/scripts/analyze_deps.py (100%) rename {.opencode => .Aether}/skills/skill-manager/scripts/classify.py (100%) rename {.opencode => .Aether}/skills/skill-manager/scripts/generate_report.py (100%) rename {.opencode => .Aether}/skills/skill-manager/scripts/scan_skills.py (100%) rename {.opencode => .Aether}/skills/skill-security-auditor/SKILL.md (100%) rename {.opencode => .Aether}/skills/skill-security-auditor/references/threat-model.md (100%) rename {.opencode => .Aether}/skills/skill-security-auditor/scripts/skill_security_auditor.py (100%) rename {.opencode => .Aether}/skills/writer-paper/SKILL.md (100%) rename {.opencode => .Aether}/skills/writer-paper/references/latex-formatting.md (100%) rename {.opencode => .Aether}/skills/writer-paper/references/research-types.md (100%) rename {.opencode => .Aether}/skills/writer-paper/references/writing-guidelines.md (100%) rename {.opencode => .Aether}/themes/mytheme.json (100%) rename {.opencode => .Aether}/tool_disable/github-pr-search.ts (100%) rename {.opencode => .Aether}/tool_disable/github-triage.ts (100%) delete mode 100644 .opencode/.gitignore diff --git a/.opencode/agent/docs.md b/.Aether/agent/docs.md similarity index 100% rename from .opencode/agent/docs.md rename to .Aether/agent/docs.md diff --git a/.opencode/agent/duplicate-pr.md b/.Aether/agent/duplicate-pr.md similarity index 100% rename from .opencode/agent/duplicate-pr.md rename to .Aether/agent/duplicate-pr.md diff --git a/.opencode/agent/translator.md b/.Aether/agent/translator.md similarity index 100% rename from .opencode/agent/translator.md rename to .Aether/agent/translator.md diff --git a/.opencode/agent/triage.md b/.Aether/agent/triage.md similarity index 100% rename from .opencode/agent/triage.md rename to .Aether/agent/triage.md diff --git a/.opencode/command/ai-deps.md b/.Aether/command/ai-deps.md similarity index 100% rename from .opencode/command/ai-deps.md rename to .Aether/command/ai-deps.md diff --git a/.opencode/command/changelog.md b/.Aether/command/changelog.md similarity index 100% rename from .opencode/command/changelog.md rename to .Aether/command/changelog.md diff --git a/.opencode/command/commit.md b/.Aether/command/commit.md similarity index 100% rename from .opencode/command/commit.md rename to .Aether/command/commit.md diff --git a/.opencode/command/issues.md b/.Aether/command/issues.md similarity index 100% rename from .opencode/command/issues.md rename to .Aether/command/issues.md diff --git a/.opencode/command/learn.md b/.Aether/command/learn.md similarity index 100% rename from .opencode/command/learn.md rename to .Aether/command/learn.md diff --git a/.opencode/command/rmslop.md b/.Aether/command/rmslop.md similarity index 100% rename from .opencode/command/rmslop.md rename to .Aether/command/rmslop.md diff --git a/.opencode/command/spellcheck.md b/.Aether/command/spellcheck.md similarity index 100% rename from .opencode/command/spellcheck.md rename to .Aether/command/spellcheck.md diff --git a/.opencode/env.d.ts b/.Aether/env.d.ts similarity index 100% rename from .opencode/env.d.ts rename to .Aether/env.d.ts diff --git a/.opencode/glossary/README.md b/.Aether/glossary/README.md similarity index 100% rename from .opencode/glossary/README.md rename to .Aether/glossary/README.md diff --git a/.opencode/glossary/ar.md b/.Aether/glossary/ar.md similarity index 100% rename from .opencode/glossary/ar.md rename to .Aether/glossary/ar.md diff --git a/.opencode/glossary/br.md b/.Aether/glossary/br.md similarity index 100% rename from .opencode/glossary/br.md rename to .Aether/glossary/br.md diff --git a/.opencode/glossary/bs.md b/.Aether/glossary/bs.md similarity index 100% rename from .opencode/glossary/bs.md rename to .Aether/glossary/bs.md diff --git a/.opencode/glossary/da.md b/.Aether/glossary/da.md similarity index 100% rename from .opencode/glossary/da.md rename to .Aether/glossary/da.md diff --git a/.opencode/glossary/de.md b/.Aether/glossary/de.md similarity index 100% rename from .opencode/glossary/de.md rename to .Aether/glossary/de.md diff --git a/.opencode/glossary/es.md b/.Aether/glossary/es.md similarity index 100% rename from .opencode/glossary/es.md rename to .Aether/glossary/es.md diff --git a/.opencode/glossary/fr.md b/.Aether/glossary/fr.md similarity index 100% rename from .opencode/glossary/fr.md rename to .Aether/glossary/fr.md diff --git a/.opencode/glossary/ja.md b/.Aether/glossary/ja.md similarity index 100% rename from .opencode/glossary/ja.md rename to .Aether/glossary/ja.md diff --git a/.opencode/glossary/ko.md b/.Aether/glossary/ko.md similarity index 100% rename from .opencode/glossary/ko.md rename to .Aether/glossary/ko.md diff --git a/.opencode/glossary/no.md b/.Aether/glossary/no.md similarity index 100% rename from .opencode/glossary/no.md rename to .Aether/glossary/no.md diff --git a/.opencode/glossary/pl.md b/.Aether/glossary/pl.md similarity index 100% rename from .opencode/glossary/pl.md rename to .Aether/glossary/pl.md diff --git a/.opencode/glossary/ru.md b/.Aether/glossary/ru.md similarity index 100% rename from .opencode/glossary/ru.md rename to .Aether/glossary/ru.md diff --git a/.opencode/glossary/th.md b/.Aether/glossary/th.md similarity index 100% rename from .opencode/glossary/th.md rename to .Aether/glossary/th.md diff --git a/.opencode/glossary/tr.md b/.Aether/glossary/tr.md similarity index 100% rename from .opencode/glossary/tr.md rename to .Aether/glossary/tr.md diff --git a/.opencode/glossary/zh-cn.md b/.Aether/glossary/zh-cn.md similarity index 100% rename from .opencode/glossary/zh-cn.md rename to .Aether/glossary/zh-cn.md diff --git a/.opencode/glossary/zh-tw.md b/.Aether/glossary/zh-tw.md similarity index 100% rename from .opencode/glossary/zh-tw.md rename to .Aether/glossary/zh-tw.md diff --git a/.opencode/opencode.jsonc b/.Aether/opencode.jsonc similarity index 100% rename from .opencode/opencode.jsonc rename to .Aether/opencode.jsonc diff --git a/.opencode/skills/academic-researcher/SKILL.md b/.Aether/skills/academic-researcher/SKILL.md similarity index 100% rename from .opencode/skills/academic-researcher/SKILL.md rename to .Aether/skills/academic-researcher/SKILL.md diff --git a/.opencode/skills/arxiv-search/SKILL.md b/.Aether/skills/arxiv-search/SKILL.md similarity index 100% rename from .opencode/skills/arxiv-search/SKILL.md rename to .Aether/skills/arxiv-search/SKILL.md diff --git a/.opencode/skills/arxiv-search/arxiv_search.py b/.Aether/skills/arxiv-search/arxiv_search.py similarity index 100% rename from .opencode/skills/arxiv-search/arxiv_search.py rename to .Aether/skills/arxiv-search/arxiv_search.py diff --git a/.opencode/skills/brainstorming/SKILL.md b/.Aether/skills/brainstorming/SKILL.md similarity index 100% rename from .opencode/skills/brainstorming/SKILL.md rename to .Aether/skills/brainstorming/SKILL.md diff --git a/.opencode/skills/clawhub/SKILL.md b/.Aether/skills/clawhub/SKILL.md similarity index 100% rename from .opencode/skills/clawhub/SKILL.md rename to .Aether/skills/clawhub/SKILL.md diff --git a/.opencode/skills/code-reviewer/AGENTS.md b/.Aether/skills/code-reviewer/AGENTS.md similarity index 100% rename from .opencode/skills/code-reviewer/AGENTS.md rename to .Aether/skills/code-reviewer/AGENTS.md diff --git a/.opencode/skills/code-reviewer/SKILL.md b/.Aether/skills/code-reviewer/SKILL.md similarity index 100% rename from .opencode/skills/code-reviewer/SKILL.md rename to .Aether/skills/code-reviewer/SKILL.md diff --git a/.opencode/skills/code-reviewer/rules/correctness-error-handling.md b/.Aether/skills/code-reviewer/rules/correctness-error-handling.md similarity index 100% rename from .opencode/skills/code-reviewer/rules/correctness-error-handling.md rename to .Aether/skills/code-reviewer/rules/correctness-error-handling.md diff --git a/.opencode/skills/code-reviewer/rules/maintainability-naming.md b/.Aether/skills/code-reviewer/rules/maintainability-naming.md similarity index 100% rename from .opencode/skills/code-reviewer/rules/maintainability-naming.md rename to .Aether/skills/code-reviewer/rules/maintainability-naming.md diff --git a/.opencode/skills/code-reviewer/rules/maintainability-type-hints.md b/.Aether/skills/code-reviewer/rules/maintainability-type-hints.md similarity index 100% rename from .opencode/skills/code-reviewer/rules/maintainability-type-hints.md rename to .Aether/skills/code-reviewer/rules/maintainability-type-hints.md diff --git a/.opencode/skills/code-reviewer/rules/performance-n-plus-one.md b/.Aether/skills/code-reviewer/rules/performance-n-plus-one.md similarity index 100% rename from .opencode/skills/code-reviewer/rules/performance-n-plus-one.md rename to .Aether/skills/code-reviewer/rules/performance-n-plus-one.md diff --git a/.opencode/skills/code-reviewer/rules/security-sql-injection.md b/.Aether/skills/code-reviewer/rules/security-sql-injection.md similarity index 100% rename from .opencode/skills/code-reviewer/rules/security-sql-injection.md rename to .Aether/skills/code-reviewer/rules/security-sql-injection.md diff --git a/.opencode/skills/code-reviewer/rules/security-xss-prevention.md b/.Aether/skills/code-reviewer/rules/security-xss-prevention.md similarity index 100% rename from .opencode/skills/code-reviewer/rules/security-xss-prevention.md rename to .Aether/skills/code-reviewer/rules/security-xss-prevention.md diff --git a/.opencode/skills/deep-research/SKILL.md b/.Aether/skills/deep-research/SKILL.md similarity index 100% rename from .opencode/skills/deep-research/SKILL.md rename to .Aether/skills/deep-research/SKILL.md diff --git a/.opencode/skills/docx/LICENSE.txt b/.Aether/skills/docx/LICENSE.txt similarity index 100% rename from .opencode/skills/docx/LICENSE.txt rename to .Aether/skills/docx/LICENSE.txt diff --git a/.opencode/skills/docx/SKILL.md b/.Aether/skills/docx/SKILL.md similarity index 100% rename from .opencode/skills/docx/SKILL.md rename to .Aether/skills/docx/SKILL.md diff --git a/.opencode/skills/docx/scripts/__init__.py b/.Aether/skills/docx/scripts/__init__.py similarity index 100% rename from .opencode/skills/docx/scripts/__init__.py rename to .Aether/skills/docx/scripts/__init__.py diff --git a/.opencode/skills/docx/scripts/accept_changes.py b/.Aether/skills/docx/scripts/accept_changes.py similarity index 100% rename from .opencode/skills/docx/scripts/accept_changes.py rename to .Aether/skills/docx/scripts/accept_changes.py diff --git a/.opencode/skills/docx/scripts/comment.py b/.Aether/skills/docx/scripts/comment.py similarity index 100% rename from .opencode/skills/docx/scripts/comment.py rename to .Aether/skills/docx/scripts/comment.py diff --git a/.opencode/skills/docx/scripts/office/helpers/__init__.py b/.Aether/skills/docx/scripts/office/helpers/__init__.py similarity index 100% rename from .opencode/skills/docx/scripts/office/helpers/__init__.py rename to .Aether/skills/docx/scripts/office/helpers/__init__.py diff --git a/.opencode/skills/docx/scripts/office/helpers/merge_runs.py b/.Aether/skills/docx/scripts/office/helpers/merge_runs.py similarity index 100% rename from .opencode/skills/docx/scripts/office/helpers/merge_runs.py rename to .Aether/skills/docx/scripts/office/helpers/merge_runs.py diff --git a/.opencode/skills/docx/scripts/office/helpers/simplify_redlines.py b/.Aether/skills/docx/scripts/office/helpers/simplify_redlines.py similarity index 100% rename from .opencode/skills/docx/scripts/office/helpers/simplify_redlines.py rename to .Aether/skills/docx/scripts/office/helpers/simplify_redlines.py diff --git a/.opencode/skills/docx/scripts/office/pack.py b/.Aether/skills/docx/scripts/office/pack.py similarity index 100% rename from .opencode/skills/docx/scripts/office/pack.py rename to .Aether/skills/docx/scripts/office/pack.py diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd b/.Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd rename to .Aether/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd b/.Aether/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd rename to .Aether/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd b/.Aether/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd rename to .Aether/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd b/.Aether/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd rename to .Aether/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd b/.Aether/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd rename to .Aether/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/mce/mc.xsd b/.Aether/skills/docx/scripts/office/schemas/mce/mc.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/mce/mc.xsd rename to .Aether/skills/docx/scripts/office/schemas/mce/mc.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd b/.Aether/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd rename to .Aether/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd b/.Aether/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd rename to .Aether/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd b/.Aether/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd rename to .Aether/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd b/.Aether/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd rename to .Aether/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd b/.Aether/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd rename to .Aether/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd b/.Aether/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd rename to .Aether/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd diff --git a/.opencode/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd b/.Aether/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd similarity index 100% rename from .opencode/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd rename to .Aether/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd diff --git a/.opencode/skills/docx/scripts/office/soffice.py b/.Aether/skills/docx/scripts/office/soffice.py similarity index 100% rename from .opencode/skills/docx/scripts/office/soffice.py rename to .Aether/skills/docx/scripts/office/soffice.py diff --git a/.opencode/skills/docx/scripts/office/unpack.py b/.Aether/skills/docx/scripts/office/unpack.py similarity index 100% rename from .opencode/skills/docx/scripts/office/unpack.py rename to .Aether/skills/docx/scripts/office/unpack.py diff --git a/.opencode/skills/docx/scripts/office/validate.py b/.Aether/skills/docx/scripts/office/validate.py similarity index 100% rename from .opencode/skills/docx/scripts/office/validate.py rename to .Aether/skills/docx/scripts/office/validate.py diff --git a/.opencode/skills/docx/scripts/office/validators/__init__.py b/.Aether/skills/docx/scripts/office/validators/__init__.py similarity index 100% rename from .opencode/skills/docx/scripts/office/validators/__init__.py rename to .Aether/skills/docx/scripts/office/validators/__init__.py diff --git a/.opencode/skills/docx/scripts/office/validators/base.py b/.Aether/skills/docx/scripts/office/validators/base.py similarity index 100% rename from .opencode/skills/docx/scripts/office/validators/base.py rename to .Aether/skills/docx/scripts/office/validators/base.py diff --git a/.opencode/skills/docx/scripts/office/validators/docx.py b/.Aether/skills/docx/scripts/office/validators/docx.py similarity index 100% rename from .opencode/skills/docx/scripts/office/validators/docx.py rename to .Aether/skills/docx/scripts/office/validators/docx.py diff --git a/.opencode/skills/docx/scripts/office/validators/pptx.py b/.Aether/skills/docx/scripts/office/validators/pptx.py similarity index 100% rename from .opencode/skills/docx/scripts/office/validators/pptx.py rename to .Aether/skills/docx/scripts/office/validators/pptx.py diff --git a/.opencode/skills/docx/scripts/office/validators/redlining.py b/.Aether/skills/docx/scripts/office/validators/redlining.py similarity index 100% rename from .opencode/skills/docx/scripts/office/validators/redlining.py rename to .Aether/skills/docx/scripts/office/validators/redlining.py diff --git a/.opencode/skills/docx/scripts/templates/comments.xml b/.Aether/skills/docx/scripts/templates/comments.xml similarity index 100% rename from .opencode/skills/docx/scripts/templates/comments.xml rename to .Aether/skills/docx/scripts/templates/comments.xml diff --git a/.opencode/skills/docx/scripts/templates/commentsExtended.xml b/.Aether/skills/docx/scripts/templates/commentsExtended.xml similarity index 100% rename from .opencode/skills/docx/scripts/templates/commentsExtended.xml rename to .Aether/skills/docx/scripts/templates/commentsExtended.xml diff --git a/.opencode/skills/docx/scripts/templates/commentsExtensible.xml b/.Aether/skills/docx/scripts/templates/commentsExtensible.xml similarity index 100% rename from .opencode/skills/docx/scripts/templates/commentsExtensible.xml rename to .Aether/skills/docx/scripts/templates/commentsExtensible.xml diff --git a/.opencode/skills/docx/scripts/templates/commentsIds.xml b/.Aether/skills/docx/scripts/templates/commentsIds.xml similarity index 100% rename from .opencode/skills/docx/scripts/templates/commentsIds.xml rename to .Aether/skills/docx/scripts/templates/commentsIds.xml diff --git a/.opencode/skills/docx/scripts/templates/people.xml b/.Aether/skills/docx/scripts/templates/people.xml similarity index 100% rename from .opencode/skills/docx/scripts/templates/people.xml rename to .Aether/skills/docx/scripts/templates/people.xml diff --git a/.opencode/skills/literature-review/SKILL.md b/.Aether/skills/literature-review/SKILL.md similarity index 100% rename from .opencode/skills/literature-review/SKILL.md rename to .Aether/skills/literature-review/SKILL.md diff --git a/.opencode/skills/literature-review/assets/review_template.md b/.Aether/skills/literature-review/assets/review_template.md similarity index 100% rename from .opencode/skills/literature-review/assets/review_template.md rename to .Aether/skills/literature-review/assets/review_template.md diff --git a/.opencode/skills/literature-review/references/citation_styles.md b/.Aether/skills/literature-review/references/citation_styles.md similarity index 100% rename from .opencode/skills/literature-review/references/citation_styles.md rename to .Aether/skills/literature-review/references/citation_styles.md diff --git a/.opencode/skills/literature-review/references/database_strategies.md b/.Aether/skills/literature-review/references/database_strategies.md similarity index 100% rename from .opencode/skills/literature-review/references/database_strategies.md rename to .Aether/skills/literature-review/references/database_strategies.md diff --git a/.opencode/skills/literature-review/scripts/generate_pdf.py b/.Aether/skills/literature-review/scripts/generate_pdf.py similarity index 100% rename from .opencode/skills/literature-review/scripts/generate_pdf.py rename to .Aether/skills/literature-review/scripts/generate_pdf.py diff --git a/.opencode/skills/literature-review/scripts/search_databases.py b/.Aether/skills/literature-review/scripts/search_databases.py similarity index 100% rename from .opencode/skills/literature-review/scripts/search_databases.py rename to .Aether/skills/literature-review/scripts/search_databases.py diff --git a/.opencode/skills/literature-review/scripts/verify_citations.py b/.Aether/skills/literature-review/scripts/verify_citations.py similarity index 100% rename from .opencode/skills/literature-review/scripts/verify_citations.py rename to .Aether/skills/literature-review/scripts/verify_citations.py diff --git a/.opencode/skills/peer-review/SKILL.md b/.Aether/skills/peer-review/SKILL.md similarity index 100% rename from .opencode/skills/peer-review/SKILL.md rename to .Aether/skills/peer-review/SKILL.md diff --git a/.opencode/skills/peer-review/references/common_issues.md b/.Aether/skills/peer-review/references/common_issues.md similarity index 100% rename from .opencode/skills/peer-review/references/common_issues.md rename to .Aether/skills/peer-review/references/common_issues.md diff --git a/.opencode/skills/peer-review/references/reporting_standards.md b/.Aether/skills/peer-review/references/reporting_standards.md similarity index 100% rename from .opencode/skills/peer-review/references/reporting_standards.md rename to .Aether/skills/peer-review/references/reporting_standards.md diff --git a/.opencode/skills/prepare-for-git-commit/SKILL.md b/.Aether/skills/prepare-for-git-commit/SKILL.md similarity index 100% rename from .opencode/skills/prepare-for-git-commit/SKILL.md rename to .Aether/skills/prepare-for-git-commit/SKILL.md diff --git a/.opencode/skills/project-signpost/SKILL.md b/.Aether/skills/project-signpost/SKILL.md similarity index 100% rename from .opencode/skills/project-signpost/SKILL.md rename to .Aether/skills/project-signpost/SKILL.md diff --git a/.opencode/skills/project-signpost/examples/README_docs-design.md b/.Aether/skills/project-signpost/examples/README_docs-design.md similarity index 100% rename from .opencode/skills/project-signpost/examples/README_docs-design.md rename to .Aether/skills/project-signpost/examples/README_docs-design.md diff --git a/.opencode/skills/project-signpost/examples/README_docs.md b/.Aether/skills/project-signpost/examples/README_docs.md similarity index 100% rename from .opencode/skills/project-signpost/examples/README_docs.md rename to .Aether/skills/project-signpost/examples/README_docs.md diff --git a/.opencode/skills/project-signpost/examples/README_root.md b/.Aether/skills/project-signpost/examples/README_root.md similarity index 100% rename from .opencode/skills/project-signpost/examples/README_root.md rename to .Aether/skills/project-signpost/examples/README_root.md diff --git a/.opencode/skills/project-signpost/examples/README_src-hybrid.md b/.Aether/skills/project-signpost/examples/README_src-hybrid.md similarity index 100% rename from .opencode/skills/project-signpost/examples/README_src-hybrid.md rename to .Aether/skills/project-signpost/examples/README_src-hybrid.md diff --git a/.opencode/skills/project-signpost/examples/README_src.md b/.Aether/skills/project-signpost/examples/README_src.md similarity index 100% rename from .opencode/skills/project-signpost/examples/README_src.md rename to .Aether/skills/project-signpost/examples/README_src.md diff --git a/.opencode/skills/project-signpost/prompts/generate-file-summary.md b/.Aether/skills/project-signpost/prompts/generate-file-summary.md similarity index 100% rename from .opencode/skills/project-signpost/prompts/generate-file-summary.md rename to .Aether/skills/project-signpost/prompts/generate-file-summary.md diff --git a/.opencode/skills/project-signpost/prompts/generate-trigger-condition.md b/.Aether/skills/project-signpost/prompts/generate-trigger-condition.md similarity index 100% rename from .opencode/skills/project-signpost/prompts/generate-trigger-condition.md rename to .Aether/skills/project-signpost/prompts/generate-trigger-condition.md diff --git a/.opencode/skills/project-signpost/templates/hybrid-readme.md b/.Aether/skills/project-signpost/templates/hybrid-readme.md similarity index 100% rename from .opencode/skills/project-signpost/templates/hybrid-readme.md rename to .Aether/skills/project-signpost/templates/hybrid-readme.md diff --git a/.opencode/skills/project-signpost/templates/subfolder-readme.md b/.Aether/skills/project-signpost/templates/subfolder-readme.md similarity index 100% rename from .opencode/skills/project-signpost/templates/subfolder-readme.md rename to .Aether/skills/project-signpost/templates/subfolder-readme.md diff --git a/.opencode/skills/project-signpost/templates/top-level-readme.md b/.Aether/skills/project-signpost/templates/top-level-readme.md similarity index 100% rename from .opencode/skills/project-signpost/templates/top-level-readme.md rename to .Aether/skills/project-signpost/templates/top-level-readme.md diff --git a/.opencode/skills/read-arxiv-paper/SKILL.md b/.Aether/skills/read-arxiv-paper/SKILL.md similarity index 100% rename from .opencode/skills/read-arxiv-paper/SKILL.md rename to .Aether/skills/read-arxiv-paper/SKILL.md diff --git a/.opencode/skills/research-grants-ch/SKILL.md b/.Aether/skills/research-grants-ch/SKILL.md similarity index 100% rename from .opencode/skills/research-grants-ch/SKILL.md rename to .Aether/skills/research-grants-ch/SKILL.md diff --git a/.opencode/skills/research-grants-ch/assets/budget_justification.md b/.Aether/skills/research-grants-ch/assets/budget_justification.md similarity index 100% rename from .opencode/skills/research-grants-ch/assets/budget_justification.md rename to .Aether/skills/research-grants-ch/assets/budget_justification.md diff --git a/.opencode/skills/research-grants-ch/assets/nsfc_general_template.md b/.Aether/skills/research-grants-ch/assets/nsfc_general_template.md similarity index 100% rename from .opencode/skills/research-grants-ch/assets/nsfc_general_template.md rename to .Aether/skills/research-grants-ch/assets/nsfc_general_template.md diff --git a/.opencode/skills/research-grants-ch/assets/nsfc_youth_template.md b/.Aether/skills/research-grants-ch/assets/nsfc_youth_template.md similarity index 100% rename from .opencode/skills/research-grants-ch/assets/nsfc_youth_template.md rename to .Aether/skills/research-grants-ch/assets/nsfc_youth_template.md diff --git a/.opencode/skills/research-grants-ch/assets/postdoc_template.md b/.Aether/skills/research-grants-ch/assets/postdoc_template.md similarity index 100% rename from .opencode/skills/research-grants-ch/assets/postdoc_template.md rename to .Aether/skills/research-grants-ch/assets/postdoc_template.md diff --git a/.opencode/skills/research-grants-ch/references/budget_template.md b/.Aether/skills/research-grants-ch/references/budget_template.md similarity index 100% rename from .opencode/skills/research-grants-ch/references/budget_template.md rename to .Aether/skills/research-grants-ch/references/budget_template.md diff --git a/.opencode/skills/research-grants-ch/references/common_mistakes.md b/.Aether/skills/research-grants-ch/references/common_mistakes.md similarity index 100% rename from .opencode/skills/research-grants-ch/references/common_mistakes.md rename to .Aether/skills/research-grants-ch/references/common_mistakes.md diff --git a/.opencode/skills/research-grants-ch/references/nsfc_guidelines.md b/.Aether/skills/research-grants-ch/references/nsfc_guidelines.md similarity index 100% rename from .opencode/skills/research-grants-ch/references/nsfc_guidelines.md rename to .Aether/skills/research-grants-ch/references/nsfc_guidelines.md diff --git a/.opencode/skills/research-grants-ch/references/postdoc_fund.md b/.Aether/skills/research-grants-ch/references/postdoc_fund.md similarity index 100% rename from .opencode/skills/research-grants-ch/references/postdoc_fund.md rename to .Aether/skills/research-grants-ch/references/postdoc_fund.md diff --git a/.opencode/skills/research-grants-ch/references/review_criteria.md b/.Aether/skills/research-grants-ch/references/review_criteria.md similarity index 100% rename from .opencode/skills/research-grants-ch/references/review_criteria.md rename to .Aether/skills/research-grants-ch/references/review_criteria.md diff --git a/.opencode/skills/research-grants-ch/references/writing_tips.md b/.Aether/skills/research-grants-ch/references/writing_tips.md similarity index 100% rename from .opencode/skills/research-grants-ch/references/writing_tips.md rename to .Aether/skills/research-grants-ch/references/writing_tips.md diff --git a/.opencode/skills/research-grants/README.md b/.Aether/skills/research-grants/README.md similarity index 100% rename from .opencode/skills/research-grants/README.md rename to .Aether/skills/research-grants/README.md diff --git a/.opencode/skills/research-grants/SKILL.md b/.Aether/skills/research-grants/SKILL.md similarity index 100% rename from .opencode/skills/research-grants/SKILL.md rename to .Aether/skills/research-grants/SKILL.md diff --git a/.opencode/skills/research-grants/assets/budget_justification_template.md b/.Aether/skills/research-grants/assets/budget_justification_template.md similarity index 100% rename from .opencode/skills/research-grants/assets/budget_justification_template.md rename to .Aether/skills/research-grants/assets/budget_justification_template.md diff --git a/.opencode/skills/research-grants/assets/nih_specific_aims_template.md b/.Aether/skills/research-grants/assets/nih_specific_aims_template.md similarity index 100% rename from .opencode/skills/research-grants/assets/nih_specific_aims_template.md rename to .Aether/skills/research-grants/assets/nih_specific_aims_template.md diff --git a/.opencode/skills/research-grants/assets/nsf_project_summary_template.md b/.Aether/skills/research-grants/assets/nsf_project_summary_template.md similarity index 100% rename from .opencode/skills/research-grants/assets/nsf_project_summary_template.md rename to .Aether/skills/research-grants/assets/nsf_project_summary_template.md diff --git a/.opencode/skills/research-grants/references/broader_impacts.md b/.Aether/skills/research-grants/references/broader_impacts.md similarity index 100% rename from .opencode/skills/research-grants/references/broader_impacts.md rename to .Aether/skills/research-grants/references/broader_impacts.md diff --git a/.opencode/skills/research-grants/references/darpa_guidelines.md b/.Aether/skills/research-grants/references/darpa_guidelines.md similarity index 100% rename from .opencode/skills/research-grants/references/darpa_guidelines.md rename to .Aether/skills/research-grants/references/darpa_guidelines.md diff --git a/.opencode/skills/research-grants/references/doe_guidelines.md b/.Aether/skills/research-grants/references/doe_guidelines.md similarity index 100% rename from .opencode/skills/research-grants/references/doe_guidelines.md rename to .Aether/skills/research-grants/references/doe_guidelines.md diff --git a/.opencode/skills/research-grants/references/nih_guidelines.md b/.Aether/skills/research-grants/references/nih_guidelines.md similarity index 100% rename from .opencode/skills/research-grants/references/nih_guidelines.md rename to .Aether/skills/research-grants/references/nih_guidelines.md diff --git a/.opencode/skills/research-grants/references/nsf_guidelines.md b/.Aether/skills/research-grants/references/nsf_guidelines.md similarity index 100% rename from .opencode/skills/research-grants/references/nsf_guidelines.md rename to .Aether/skills/research-grants/references/nsf_guidelines.md diff --git a/.opencode/skills/research-grants/references/specific_aims_guide.md b/.Aether/skills/research-grants/references/specific_aims_guide.md similarity index 100% rename from .opencode/skills/research-grants/references/specific_aims_guide.md rename to .Aether/skills/research-grants/references/specific_aims_guide.md diff --git a/.opencode/skills/response-to-referee/SKILL.md b/.Aether/skills/response-to-referee/SKILL.md similarity index 100% rename from .opencode/skills/response-to-referee/SKILL.md rename to .Aether/skills/response-to-referee/SKILL.md diff --git a/.opencode/skills/response-to-referee/assets/Reply-and-changes.tex b/.Aether/skills/response-to-referee/assets/Reply-and-changes.tex similarity index 100% rename from .opencode/skills/response-to-referee/assets/Reply-and-changes.tex rename to .Aether/skills/response-to-referee/assets/Reply-and-changes.tex diff --git a/.opencode/skills/response-to-referee/references/response-templates.md b/.Aether/skills/response-to-referee/references/response-templates.md similarity index 100% rename from .opencode/skills/response-to-referee/references/response-templates.md rename to .Aether/skills/response-to-referee/references/response-templates.md diff --git a/.opencode/skills/response-to-referee/references/tone-and-style.md b/.Aether/skills/response-to-referee/references/tone-and-style.md similarity index 100% rename from .opencode/skills/response-to-referee/references/tone-and-style.md rename to .Aether/skills/response-to-referee/references/tone-and-style.md diff --git a/.opencode/skills/scientific-brainstorming/SKILL.md b/.Aether/skills/scientific-brainstorming/SKILL.md similarity index 100% rename from .opencode/skills/scientific-brainstorming/SKILL.md rename to .Aether/skills/scientific-brainstorming/SKILL.md diff --git a/.opencode/skills/scientific-brainstorming/references/brainstorming_methods.md b/.Aether/skills/scientific-brainstorming/references/brainstorming_methods.md similarity index 100% rename from .opencode/skills/scientific-brainstorming/references/brainstorming_methods.md rename to .Aether/skills/scientific-brainstorming/references/brainstorming_methods.md diff --git a/.opencode/skills/scientific-critical-thinking/SKILL.md b/.Aether/skills/scientific-critical-thinking/SKILL.md similarity index 100% rename from .opencode/skills/scientific-critical-thinking/SKILL.md rename to .Aether/skills/scientific-critical-thinking/SKILL.md diff --git a/.opencode/skills/scientific-critical-thinking/references/common_biases.md b/.Aether/skills/scientific-critical-thinking/references/common_biases.md similarity index 100% rename from .opencode/skills/scientific-critical-thinking/references/common_biases.md rename to .Aether/skills/scientific-critical-thinking/references/common_biases.md diff --git a/.opencode/skills/scientific-critical-thinking/references/evidence_hierarchy.md b/.Aether/skills/scientific-critical-thinking/references/evidence_hierarchy.md similarity index 100% rename from .opencode/skills/scientific-critical-thinking/references/evidence_hierarchy.md rename to .Aether/skills/scientific-critical-thinking/references/evidence_hierarchy.md diff --git a/.opencode/skills/scientific-critical-thinking/references/experimental_design.md b/.Aether/skills/scientific-critical-thinking/references/experimental_design.md similarity index 100% rename from .opencode/skills/scientific-critical-thinking/references/experimental_design.md rename to .Aether/skills/scientific-critical-thinking/references/experimental_design.md diff --git a/.opencode/skills/scientific-critical-thinking/references/logical_fallacies.md b/.Aether/skills/scientific-critical-thinking/references/logical_fallacies.md similarity index 100% rename from .opencode/skills/scientific-critical-thinking/references/logical_fallacies.md rename to .Aether/skills/scientific-critical-thinking/references/logical_fallacies.md diff --git a/.opencode/skills/scientific-critical-thinking/references/scientific_method.md b/.Aether/skills/scientific-critical-thinking/references/scientific_method.md similarity index 100% rename from .opencode/skills/scientific-critical-thinking/references/scientific_method.md rename to .Aether/skills/scientific-critical-thinking/references/scientific_method.md diff --git a/.opencode/skills/scientific-critical-thinking/references/statistical_pitfalls.md b/.Aether/skills/scientific-critical-thinking/references/statistical_pitfalls.md similarity index 100% rename from .opencode/skills/scientific-critical-thinking/references/statistical_pitfalls.md rename to .Aether/skills/scientific-critical-thinking/references/statistical_pitfalls.md diff --git a/.opencode/skills/skill-creator/SKILL.md b/.Aether/skills/skill-creator/SKILL.md similarity index 100% rename from .opencode/skills/skill-creator/SKILL.md rename to .Aether/skills/skill-creator/SKILL.md diff --git a/.opencode/skills/skill-creator/license.txt b/.Aether/skills/skill-creator/license.txt similarity index 100% rename from .opencode/skills/skill-creator/license.txt rename to .Aether/skills/skill-creator/license.txt diff --git a/.opencode/skills/skill-creator/scripts/init_skill.py b/.Aether/skills/skill-creator/scripts/init_skill.py similarity index 100% rename from .opencode/skills/skill-creator/scripts/init_skill.py rename to .Aether/skills/skill-creator/scripts/init_skill.py diff --git a/.opencode/skills/skill-creator/scripts/package_skill.py b/.Aether/skills/skill-creator/scripts/package_skill.py similarity index 100% rename from .opencode/skills/skill-creator/scripts/package_skill.py rename to .Aether/skills/skill-creator/scripts/package_skill.py diff --git a/.opencode/skills/skill-creator/scripts/quick_validate.py b/.Aether/skills/skill-creator/scripts/quick_validate.py similarity index 100% rename from .opencode/skills/skill-creator/scripts/quick_validate.py rename to .Aether/skills/skill-creator/scripts/quick_validate.py diff --git a/.opencode/skills/skill-creator/scripts/test_package_skill.py b/.Aether/skills/skill-creator/scripts/test_package_skill.py similarity index 100% rename from .opencode/skills/skill-creator/scripts/test_package_skill.py rename to .Aether/skills/skill-creator/scripts/test_package_skill.py diff --git a/.opencode/skills/skill-creator/scripts/test_quick_validate.py b/.Aether/skills/skill-creator/scripts/test_quick_validate.py similarity index 100% rename from .opencode/skills/skill-creator/scripts/test_quick_validate.py rename to .Aether/skills/skill-creator/scripts/test_quick_validate.py diff --git a/.opencode/skills/skill-manager/SKILL.md b/.Aether/skills/skill-manager/SKILL.md similarity index 100% rename from .opencode/skills/skill-manager/SKILL.md rename to .Aether/skills/skill-manager/SKILL.md diff --git a/.opencode/skills/skill-manager/scripts/analyze_deps.py b/.Aether/skills/skill-manager/scripts/analyze_deps.py similarity index 100% rename from .opencode/skills/skill-manager/scripts/analyze_deps.py rename to .Aether/skills/skill-manager/scripts/analyze_deps.py diff --git a/.opencode/skills/skill-manager/scripts/classify.py b/.Aether/skills/skill-manager/scripts/classify.py similarity index 100% rename from .opencode/skills/skill-manager/scripts/classify.py rename to .Aether/skills/skill-manager/scripts/classify.py diff --git a/.opencode/skills/skill-manager/scripts/generate_report.py b/.Aether/skills/skill-manager/scripts/generate_report.py similarity index 100% rename from .opencode/skills/skill-manager/scripts/generate_report.py rename to .Aether/skills/skill-manager/scripts/generate_report.py diff --git a/.opencode/skills/skill-manager/scripts/scan_skills.py b/.Aether/skills/skill-manager/scripts/scan_skills.py similarity index 100% rename from .opencode/skills/skill-manager/scripts/scan_skills.py rename to .Aether/skills/skill-manager/scripts/scan_skills.py diff --git a/.opencode/skills/skill-security-auditor/SKILL.md b/.Aether/skills/skill-security-auditor/SKILL.md similarity index 100% rename from .opencode/skills/skill-security-auditor/SKILL.md rename to .Aether/skills/skill-security-auditor/SKILL.md diff --git a/.opencode/skills/skill-security-auditor/references/threat-model.md b/.Aether/skills/skill-security-auditor/references/threat-model.md similarity index 100% rename from .opencode/skills/skill-security-auditor/references/threat-model.md rename to .Aether/skills/skill-security-auditor/references/threat-model.md diff --git a/.opencode/skills/skill-security-auditor/scripts/skill_security_auditor.py b/.Aether/skills/skill-security-auditor/scripts/skill_security_auditor.py similarity index 100% rename from .opencode/skills/skill-security-auditor/scripts/skill_security_auditor.py rename to .Aether/skills/skill-security-auditor/scripts/skill_security_auditor.py diff --git a/.opencode/skills/writer-paper/SKILL.md b/.Aether/skills/writer-paper/SKILL.md similarity index 100% rename from .opencode/skills/writer-paper/SKILL.md rename to .Aether/skills/writer-paper/SKILL.md diff --git a/.opencode/skills/writer-paper/references/latex-formatting.md b/.Aether/skills/writer-paper/references/latex-formatting.md similarity index 100% rename from .opencode/skills/writer-paper/references/latex-formatting.md rename to .Aether/skills/writer-paper/references/latex-formatting.md diff --git a/.opencode/skills/writer-paper/references/research-types.md b/.Aether/skills/writer-paper/references/research-types.md similarity index 100% rename from .opencode/skills/writer-paper/references/research-types.md rename to .Aether/skills/writer-paper/references/research-types.md diff --git a/.opencode/skills/writer-paper/references/writing-guidelines.md b/.Aether/skills/writer-paper/references/writing-guidelines.md similarity index 100% rename from .opencode/skills/writer-paper/references/writing-guidelines.md rename to .Aether/skills/writer-paper/references/writing-guidelines.md diff --git a/.opencode/themes/mytheme.json b/.Aether/themes/mytheme.json similarity index 100% rename from .opencode/themes/mytheme.json rename to .Aether/themes/mytheme.json diff --git a/.opencode/tool_disable/github-pr-search.ts b/.Aether/tool_disable/github-pr-search.ts similarity index 100% rename from .opencode/tool_disable/github-pr-search.ts rename to .Aether/tool_disable/github-pr-search.ts diff --git a/.opencode/tool_disable/github-triage.ts b/.Aether/tool_disable/github-triage.ts similarity index 100% rename from .opencode/tool_disable/github-triage.ts rename to .Aether/tool_disable/github-triage.ts diff --git a/.opencode/.gitignore b/.opencode/.gitignore deleted file mode 100644 index d3bf7f8d3bd8..000000000000 --- a/.opencode/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -node_modules -plans -package.json -bun.lock -.gitignore -package-lock.json \ No newline at end of file diff --git a/packages/desktop-electron/electron-builder.config.ts b/packages/desktop-electron/electron-builder.config.ts index 2ed00abc3f08..0b2314d3e6b2 100644 --- a/packages/desktop-electron/electron-builder.config.ts +++ b/packages/desktop-electron/electron-builder.config.ts @@ -31,20 +31,20 @@ const getBase = (): Configuration => ({ filter: ["index.js", "index.d.ts", "build/Release/mac_window.node", "swift-build/**"], }, { - from: "../../.opencode/skills", - to: ".opencode/skills", + from: "../../.Aether/skills", + to: ".Aether/skills", }, { - from: "../../.opencode/agent", - to: ".opencode/agent", + from: "../../.Aether/agent", + to: ".Aether/agent", }, { - from: "../../.opencode/command", - to: ".opencode/command", + from: "../../.Aether/command", + to: ".Aether/command", }, { - from: "../../.opencode/themes", - to: ".opencode/themes", + from: "../../.Aether/themes", + to: ".Aether/themes", }, { from: "../../Aether-wechat-bridge", @@ -54,11 +54,7 @@ const getBase = (): Configuration => ({ { from: "../../Update", to: "Update", - filter: [ - "aether_darwin_installer.command", - "aether_linux_installer.sh", - "aether_windows_installer.bat", - ], + filter: ["aether_darwin_installer.command", "aether_linux_installer.sh", "aether_windows_installer.bat"], }, ], mac: { diff --git a/packages/opencode/script/build.ts b/packages/opencode/script/build.ts index 29e11e0cb102..188e32e0cfcf 100755 --- a/packages/opencode/script/build.ts +++ b/packages/opencode/script/build.ts @@ -254,9 +254,9 @@ for (const item of targets) { fs.cpSync(path.resolve(dir, "../../packages/app/dist"), `dist/${name}/bin/web`, { recursive: true }) // Copy default skills next to the binary so they are available without a project config - const skillsSrc = path.resolve(dir, "../../.opencode/skills") + const skillsSrc = path.resolve(dir, "../../.Aether/skills") if (fs.existsSync(skillsSrc)) { - fs.cpSync(skillsSrc, `dist/${name}/bin/.opencode/skills`, { recursive: true }) + fs.cpSync(skillsSrc, `dist/${name}/bin/.Aether/skills`, { recursive: true }) } // Copy wechat-bridge resources diff --git a/packages/opencode/src/agent/agent.ts b/packages/opencode/src/agent/agent.ts index 622537e3c182..ab71c481f60c 100644 --- a/packages/opencode/src/agent/agent.ts +++ b/packages/opencode/src/agent/agent.ts @@ -132,6 +132,7 @@ export namespace Agent { }, edit: { "*": "deny", + [path.join(".Aether", "plans", "*.md")]: "allow", [path.join(".opencode", "plans", "*.md")]: "allow", [path.relative(Instance.worktree, path.join(Global.Path.data, path.join("plans", "*.md")))]: "allow", diff --git a/packages/opencode/src/cli/cmd/agent.ts b/packages/opencode/src/cli/cmd/agent.ts index 70082c8e2e75..eb2fa8f8c7f5 100644 --- a/packages/opencode/src/cli/cmd/agent.ts +++ b/packages/opencode/src/cli/cmd/agent.ts @@ -87,7 +87,7 @@ const AgentCreateCommand = cmd({ scope = scopeResult } targetPath = path.join( - scope === "global" ? Global.Path.config : path.join(Instance.worktree, ".opencode"), + scope === "global" ? Global.Path.config : path.join(Instance.worktree, ".Aether"), "agent", ) } diff --git a/packages/opencode/src/cli/cmd/mcp.ts b/packages/opencode/src/cli/cmd/mcp.ts index c45b9e55d0f8..5dcc241cab77 100644 --- a/packages/opencode/src/cli/cmd/mcp.ts +++ b/packages/opencode/src/cli/cmd/mcp.ts @@ -381,11 +381,13 @@ export const McpLogoutCommand = cmd({ }) async function resolveConfigPath(baseDir: string, global = false) { - // Check for existing config files (prefer .jsonc over .json, check .opencode/ subdirectory too) + // Check for existing config files, including project resource directories. const candidates = [path.join(baseDir, "opencode.json"), path.join(baseDir, "opencode.jsonc")] if (!global) { - candidates.push(path.join(baseDir, ".opencode", "opencode.json"), path.join(baseDir, ".opencode", "opencode.jsonc")) + for (const dir of [".Aether", ".opencode"]) { + candidates.push(path.join(baseDir, dir, "opencode.json"), path.join(baseDir, dir, "opencode.jsonc")) + } } for (const candidate of candidates) { diff --git a/packages/opencode/src/cli/cmd/tui/component/tips.tsx b/packages/opencode/src/cli/cmd/tui/component/tips.tsx index 73d82248adb4..6e11814aed90 100644 --- a/packages/opencode/src/cli/cmd/tui/component/tips.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/tips.tsx @@ -88,10 +88,10 @@ const TIPS = [ "Set any keybind to {highlight}none{/highlight} to disable it completely", "Configure local or remote MCP servers in the {highlight}mcp{/highlight} config section", "OpenCode auto-handles OAuth for remote MCP servers requiring auth", - "Add {highlight}.md{/highlight} files to {highlight}.opencode/command/{/highlight} to define reusable custom prompts", + "Add {highlight}.md{/highlight} files to {highlight}.Aether/command/{/highlight} to define reusable custom prompts", "Use {highlight}$ARGUMENTS{/highlight}, {highlight}$1{/highlight}, {highlight}$2{/highlight} in custom commands for dynamic input", "Use backticks in commands to inject shell output (e.g., {highlight}`git status`{/highlight})", - "Add {highlight}.md{/highlight} files to {highlight}.opencode/agent/{/highlight} for specialized AI personas", + "Add {highlight}.md{/highlight} files to {highlight}.Aether/agent/{/highlight} for specialized AI personas", "Configure per-agent permissions for {highlight}edit{/highlight}, {highlight}bash{/highlight}, and {highlight}webfetch{/highlight} tools", 'Use patterns like {highlight}"git *": "allow"{/highlight} for granular bash permissions', 'Set {highlight}"rm -rf *": "deny"{/highlight} to block destructive commands', @@ -100,9 +100,9 @@ const TIPS = [ 'Set {highlight}"formatter": false{/highlight} in config to disable all auto-formatting', "Define custom formatter commands with file extensions in config", "OpenCode uses LSP servers for intelligent code analysis", - "Create {highlight}.ts{/highlight} files in {highlight}.opencode/tools/{/highlight} to define new LLM tools", + "Create {highlight}.ts{/highlight} files in {highlight}.Aether/tools/{/highlight} to define new LLM tools", "Tool definitions can invoke scripts written in Python, Go, etc", - "Add {highlight}.ts{/highlight} files to {highlight}.opencode/plugin/{/highlight} for event hooks", + "Add {highlight}.ts{/highlight} files to {highlight}.Aether/plugin/{/highlight} for event hooks", "Use plugins to send OS notifications when sessions complete", "Create a plugin to prevent OpenCode from reading sensitive files", "Use {highlight}opencode run{/highlight} for non-interactive scripting", @@ -119,7 +119,7 @@ const TIPS = [ "Comment {highlight}/opencode fix this{/highlight} on issues to auto-create PRs", "Comment {highlight}/oc{/highlight} on PR code lines for targeted code reviews", 'Use {highlight}"theme": "system"{/highlight} to match your terminal\'s colors', - "Create JSON theme files in {highlight}.opencode/themes/{/highlight} directory", + "Create JSON theme files in {highlight}.Aether/themes/{/highlight} directory", "Themes support dark/light variants for both modes", "Reference ANSI colors 0-255 in custom themes", "Use {highlight}{env:VAR_NAME}{/highlight} syntax to reference environment variables in config", diff --git a/packages/opencode/src/cli/cmd/tui/context/theme.tsx b/packages/opencode/src/cli/cmd/tui/context/theme.tsx index a3d268afd347..a849d01d8098 100644 --- a/packages/opencode/src/cli/cmd/tui/context/theme.tsx +++ b/packages/opencode/src/cli/cmd/tui/context/theme.tsx @@ -42,6 +42,7 @@ import { createStore, produce } from "solid-js/store" import { Global } from "@/global" import { Filesystem } from "@/util/filesystem" import { useTuiConfig } from "./tui-config" +import { ConfigPaths } from "@/config/paths" type ThemeColors = { primary: RGBA @@ -438,7 +439,7 @@ async function getCustomThemes() { Global.Path.config, ...(await Array.fromAsync( Filesystem.up({ - targets: [".opencode"], + targets: [...ConfigPaths.dirs], start: process.cwd(), }), )), diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 7335fdcad2d0..c933d4735b4f 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -84,7 +84,7 @@ export namespace Config { // 2) Global config (~/.config/opencode/opencode.json{,c}) // 3) Custom config (OPENCODE_CONFIG) // 4) Project config (opencode.json{,c}) - // 5) .opencode directories (.opencode/agents/, .opencode/commands/, .opencode/plugins/, .opencode/opencode.json{,c}) + // 5) project resource directories (.Aether/agents/, .Aether/commands/, .Aether/plugins/, .Aether/opencode.json{,c}) // 6) Inline config (OPENCODE_CONFIG_CONTENT) // Managed config directory is enterprise-only and always overrides everything above. let result: Info = {} @@ -134,7 +134,7 @@ export namespace Config { const directories = await ConfigPaths.directories(Instance.directory, Instance.worktree) - // .opencode directory config overrides (project and global) config sources. + // Project resource directory config overrides project and global config sources. if (Flag.OPENCODE_CONFIG_DIR) { log.debug("loading config from OPENCODE_CONFIG_DIR", { path: Flag.OPENCODE_CONFIG_DIR }) } @@ -142,7 +142,7 @@ export namespace Config { const deps = [] for (const dir of unique(directories)) { - if (dir.endsWith(".opencode") || dir === Flag.OPENCODE_CONFIG_DIR) { + if (ConfigPaths.matches(dir) || dir === Flag.OPENCODE_CONFIG_DIR) { for (const file of ["opencode.jsonc", "opencode.json"]) { log.debug(`loading config from ${path.join(dir, file)}`) result = mergeConfigConcatArrays(result, await loadFile(path.join(dir, file))) @@ -401,7 +401,14 @@ export namespace Config { }) if (!md) continue - const patterns = ["/.opencode/command/", "/.opencode/commands/", "/command/", "/commands/"] + const patterns = [ + "/.Aether/command/", + "/.Aether/commands/", + "/.opencode/command/", + "/.opencode/commands/", + "/command/", + "/commands/", + ] const file = rel(item, patterns) ?? path.basename(item) const name = trim(file) @@ -440,7 +447,14 @@ export namespace Config { }) if (!md) continue - const patterns = ["/.opencode/agent/", "/.opencode/agents/", "/agent/", "/agents/"] + const patterns = [ + "/.Aether/agent/", + "/.Aether/agents/", + "/.opencode/agent/", + "/.opencode/agents/", + "/agent/", + "/agents/", + ] const file = rel(item, patterns) ?? path.basename(item) const agentName = trim(file) @@ -1362,16 +1376,18 @@ export namespace Config { }) export type DefaultSkill = z.infer - // Search upward from process.cwd() for .opencode/skills, calculated once at startup. + // Search upward from process.cwd() for bundled skills, calculated once at startup. // This ensures the source skills dir is always the server's own project regardless of // which project the user is currently viewing. function findServerSkillsDirSync(): string | undefined { let dir = process.cwd() while (true) { - const candidate = path.join(dir, ".opencode", "skills") - try { - if (statSync(candidate).isDirectory()) return candidate - } catch {} + for (const root of ConfigPaths.dirs) { + const candidate = path.join(dir, root, "skills") + try { + if (statSync(candidate).isDirectory()) return candidate + } catch {} + } const parent = path.dirname(dir) if (parent === dir) break dir = parent @@ -1420,7 +1436,7 @@ export namespace Config { export async function saveDefaultSkill(name: string, description: string, content: string): Promise { const skillsDir = getDefaultSkillsDir() - if (!skillsDir) throw new Error("No .opencode directory found") + if (!skillsDir) throw new Error("No bundled skills directory found") const skillDir = path.join(skillsDir, name) await fs.mkdir(skillDir, { recursive: true }) const skillFile = path.join(skillDir, "SKILL.md") @@ -1430,7 +1446,7 @@ export namespace Config { export async function deleteDefaultSkill(name: string): Promise { const skillsDir = getDefaultSkillsDir() - if (!skillsDir) throw new Error("No .opencode directory found") + if (!skillsDir) throw new Error("No bundled skills directory found") const skillDir = path.join(skillsDir, name) await fs.rm(skillDir, { recursive: true, force: true }) } @@ -1440,8 +1456,8 @@ export namespace Config { const sourceSkillsDir = getDefaultSkillsDir() if (!sourceSkillsDir) return [] - // Target: the currently viewed project (.opencode/skills/ under Instance.directory) - const targetSkillsDir = path.join(Instance.directory, ".opencode", "skills") + // Target: the currently viewed project (.Aether/skills/ under Instance.directory) + const targetSkillsDir = path.join(Instance.directory, ConfigPaths.root, "skills") await fs.mkdir(targetSkillsDir, { recursive: true }) // Copy each skill directory from source to target diff --git a/packages/opencode/src/config/paths.ts b/packages/opencode/src/config/paths.ts index 17cbf026d2d2..a0d280280a41 100644 --- a/packages/opencode/src/config/paths.ts +++ b/packages/opencode/src/config/paths.ts @@ -8,6 +8,30 @@ import { Flag } from "@/flag/flag" import { Global } from "@/global" export namespace ConfigPaths { + export const root = ".Aether" + export const legacy = ".opencode" + export const dirs = [legacy, root] as const + + export function matches(input: string) { + return dirs.some((item) => input.endsWith(item)) + } + + async function list(start: string, stop: string) { + return ( + await Promise.all( + dirs.map((target) => + Array.fromAsync( + Filesystem.up({ + targets: [target], + start, + stop, + }), + ), + ), + ) + ).flat() + } + export async function projectFiles(name: string, directory: string, worktree: string) { const files: string[] = [] for (const file of [`${name}.jsonc`, `${name}.json`]) { @@ -21,34 +45,14 @@ export namespace ConfigPaths { export async function directories(directory: string, worktree: string) { // Include the directory next to the binary so bundled default skills are found - // when running a compiled single binary (e.g. dist/.../bin/aether + dist/.../bin/.opencode/skills/) + // when running a compiled single binary (e.g. dist/.../bin/aether + dist/.../bin/.Aether/skills/) const binaryDir = path.dirname(process.execPath) return [ Global.Path.config, - ...(!Flag.OPENCODE_DISABLE_PROJECT_CONFIG - ? await Array.fromAsync( - Filesystem.up({ - targets: [".opencode"], - start: directory, - stop: worktree, - }), - ) - : []), - ...(await Array.fromAsync( - Filesystem.up({ - targets: [".opencode"], - start: Global.Path.home, - stop: Global.Path.home, - }), - )), - ...(await Array.fromAsync( - Filesystem.up({ - targets: [".opencode"], - start: binaryDir, - stop: binaryDir, - }), - )), + ...(!Flag.OPENCODE_DISABLE_PROJECT_CONFIG ? await list(directory, worktree) : []), + ...(await list(Global.Path.home, Global.Path.home)), + ...(await list(binaryDir, binaryDir)), ...(Flag.OPENCODE_CONFIG_DIR ? [Flag.OPENCODE_CONFIG_DIR] : []), ] } diff --git a/packages/opencode/src/config/tui.ts b/packages/opencode/src/config/tui.ts index f0964f63b35f..8464408e5d0c 100644 --- a/packages/opencode/src/config/tui.ts +++ b/packages/opencode/src/config/tui.ts @@ -54,7 +54,7 @@ export namespace TuiConfig { } for (const dir of unique(directories)) { - if (!dir.endsWith(".opencode") && dir !== Flag.OPENCODE_CONFIG_DIR) continue + if (!ConfigPaths.matches(dir) && dir !== Flag.OPENCODE_CONFIG_DIR) continue for (const file of ConfigPaths.fileInDirectory(dir, "tui")) { result = mergeInfo(result, await loadFile(file)) } diff --git a/packages/opencode/src/file/ripgrep.ts b/packages/opencode/src/file/ripgrep.ts index 601c82e94f5e..07387947321d 100644 --- a/packages/opencode/src/file/ripgrep.ts +++ b/packages/opencode/src/file/ripgrep.ts @@ -292,7 +292,7 @@ export namespace Ripgrep { const root: Node = { name: "", children: new Map() } for (const file of files) { - if (file.includes(".opencode")) continue + if (file.includes(".Aether") || file.includes(".opencode")) continue const parts = file.split(path.sep) if (parts.length < 2) continue let node = root diff --git a/packages/opencode/src/server/routes/config.ts b/packages/opencode/src/server/routes/config.ts index 1850d46ebf5b..df8ed8750191 100644 --- a/packages/opencode/src/server/routes/config.ts +++ b/packages/opencode/src/server/routes/config.ts @@ -62,7 +62,7 @@ export const ConfigRoutes = lazy(() => "/skills", describeRoute({ summary: "List default skills", - description: "List all default skills from the .opencode/skills/ directory.", + description: "List all default skills from the .Aether/skills/ directory.", operationId: "config.skills.list", responses: { 200: { @@ -84,7 +84,7 @@ export const ConfigRoutes = lazy(() => "/skills", describeRoute({ summary: "Create or update a default skill", - description: "Create or update a skill in .opencode/skills/.", + description: "Create or update a skill in .Aether/skills/.", operationId: "config.skills.save", responses: { 200: { @@ -104,7 +104,7 @@ export const ConfigRoutes = lazy(() => "/skills/:name", describeRoute({ summary: "Delete a default skill", - description: "Delete a skill from .opencode/skills/.", + description: "Delete a skill from .Aether/skills/.", operationId: "config.skills.delete", responses: { 200: { @@ -123,7 +123,7 @@ export const ConfigRoutes = lazy(() => "/skills/defaults", describeRoute({ summary: "Add default skills to project config", - description: "Add the default skills from .opencode/skills/ to the project's opencode.jsonc skills.paths.", + description: "Add the default skills from .Aether/skills/ to the project's opencode.jsonc skills.paths.", operationId: "config.skills.addDefaults", responses: { 200: { diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index f2eccafb51c7..f3625778528c 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -390,7 +390,7 @@ export namespace Session { export function plan(input: { slug: string; time: { created: number } }) { const base = Instance.project.vcs - ? path.join(Instance.worktree, ".opencode", "plans") + ? path.join(Instance.worktree, ".Aether", "plans") : path.join(Global.Path.data, "plans") return path.join(base, [input.time.created, input.slug].join("-") + ".md") } diff --git a/packages/opencode/test/agent/agent.test.ts b/packages/opencode/test/agent/agent.test.ts index 98a0fd4c6ec6..282da2b653d0 100644 --- a/packages/opencode/test/agent/agent.test.ts +++ b/packages/opencode/test/agent/agent.test.ts @@ -48,7 +48,7 @@ test("build agent has correct default properties", async () => { }) }) -test("plan agent denies edits except .opencode/plans/*", async () => { +test("plan agent denies edits except project plan paths", async () => { await using tmp = await tmpdir() await Instance.provide({ directory: tmp.path, @@ -58,6 +58,7 @@ test("plan agent denies edits except .opencode/plans/*", async () => { // Wildcard is denied expect(evalPerm(plan, "edit")).toBe("deny") // But specific path is allowed + expect(Permission.evaluate("edit", ".Aether/plans/foo.md", plan!.permission).action).toBe("allow") expect(Permission.evaluate("edit", ".opencode/plans/foo.md", plan!.permission).action).toBe("allow") }, }) diff --git a/packages/opencode/test/config/config.test.ts b/packages/opencode/test/config/config.test.ts index 76786c54a3cf..164fe37a9327 100644 --- a/packages/opencode/test/config/config.test.ts +++ b/packages/opencode/test/config/config.test.ts @@ -504,12 +504,12 @@ test("migrates mode field to agent field", async () => { }) }) -test("loads config from .opencode directory", async () => { +test("loads config from .Aether directory", async () => { await using tmp = await tmpdir({ init: async (dir) => { - const opencodeDir = path.join(dir, ".opencode") - await fs.mkdir(opencodeDir, { recursive: true }) - const agentDir = path.join(opencodeDir, "agent") + const aetherDir = path.join(dir, ".Aether") + await fs.mkdir(aetherDir, { recursive: true }) + const agentDir = path.join(aetherDir, "agent") await fs.mkdir(agentDir, { recursive: true }) await Filesystem.write( @@ -587,6 +587,30 @@ Nested agent prompt`, }) }) +test("prefers .Aether over .opencode", async () => { + await using tmp = await tmpdir({ + init: async (dir) => { + const aetherDir = path.join(dir, ".Aether", "command") + const opencodeDir = path.join(dir, ".opencode", "command") + await fs.mkdir(aetherDir, { recursive: true }) + await fs.mkdir(opencodeDir, { recursive: true }) + await Filesystem.write(path.join(aetherDir, "hello.md"), "---\ndescription: Aether\n---\nAether command") + await Filesystem.write(path.join(opencodeDir, "hello.md"), "---\ndescription: Legacy\n---\nLegacy command") + }, + }) + + await Instance.provide({ + directory: tmp.path, + fn: async () => { + const config = await Config.get() + expect(config.command?.["hello"]).toEqual({ + description: "Aether", + template: "Aether command", + }) + }, + }) +}) + test("loads commands from .opencode/command (singular)", async () => { await using tmp = await tmpdir({ init: async (dir) => { @@ -1850,26 +1874,24 @@ describe("OPENCODE_DISABLE_PROJECT_CONFIG", () => { } }) - test("skips project .opencode/ directories when flag is set", async () => { + test("skips project .Aether directories when flag is set", async () => { const originalEnv = process.env["OPENCODE_DISABLE_PROJECT_CONFIG"] process.env["OPENCODE_DISABLE_PROJECT_CONFIG"] = "true" try { await using tmp = await tmpdir({ init: async (dir) => { - // Create a .opencode directory with a command - const opencodeDir = path.join(dir, ".opencode", "command") - await fs.mkdir(opencodeDir, { recursive: true }) - await Filesystem.write(path.join(opencodeDir, "test-cmd.md"), "# Test Command\nThis is a test command.") + const aetherDir = path.join(dir, ".Aether", "command") + await fs.mkdir(aetherDir, { recursive: true }) + await Filesystem.write(path.join(aetherDir, "test-cmd.md"), "# Test Command\nThis is a test command.") }, }) await Instance.provide({ directory: tmp.path, fn: async () => { const directories = await Config.directories() - // Project .opencode should NOT be in directories list - const hasProjectOpencode = directories.some((d) => d.startsWith(tmp.path)) - expect(hasProjectOpencode).toBe(false) + const hasProjectDir = directories.some((d) => d.startsWith(tmp.path)) + expect(hasProjectDir).toBe(false) }, }) } finally { diff --git a/packages/opencode/test/config/tui.test.ts b/packages/opencode/test/config/tui.test.ts index f9de5b041b48..d5ff12ca9d4c 100644 --- a/packages/opencode/test/config/tui.test.ts +++ b/packages/opencode/test/config/tui.test.ts @@ -473,11 +473,11 @@ test("loads managed tui config and gives it highest precedence", async () => { }) }) -test("loads .opencode/tui.json", async () => { +test("loads .Aether/tui.json", async () => { await using tmp = await tmpdir({ init: async (dir) => { - await fs.mkdir(path.join(dir, ".opencode"), { recursive: true }) - await Bun.write(path.join(dir, ".opencode", "tui.json"), JSON.stringify({ diff_style: "stacked" }, null, 2)) + await fs.mkdir(path.join(dir, ".Aether"), { recursive: true }) + await Bun.write(path.join(dir, ".Aether", "tui.json"), JSON.stringify({ diff_style: "stacked" }, null, 2)) }, }) diff --git a/packages/opencode/test/file/ripgrep.test.ts b/packages/opencode/test/file/ripgrep.test.ts index 5eb56e53de4a..55b3a71b00c1 100644 --- a/packages/opencode/test/file/ripgrep.test.ts +++ b/packages/opencode/test/file/ripgrep.test.ts @@ -25,14 +25,14 @@ describe("file.ripgrep", () => { await using tmp = await tmpdir({ init: async (dir) => { await Bun.write(path.join(dir, "visible.txt"), "hello") - await fs.mkdir(path.join(dir, ".opencode"), { recursive: true }) - await Bun.write(path.join(dir, ".opencode", "thing.json"), "{}") + await fs.mkdir(path.join(dir, ".Aether"), { recursive: true }) + await Bun.write(path.join(dir, ".Aether", "thing.json"), "{}") }, }) const files = await Array.fromAsync(Ripgrep.files({ cwd: tmp.path, hidden: false })) const hasVisible = files.includes("visible.txt") - const hasHidden = files.includes(path.join(".opencode", "thing.json")) + const hasHidden = files.includes(path.join(".Aether", "thing.json")) expect(hasVisible).toBe(true) expect(hasHidden).toBe(false) })