Compare commits

..

10 Commits

Author SHA1 Message Date
root
7e250e8b42 fix: change type from module to commonjs - main.js uses require()
Some checks are pending
HarmonyOS CI/CD Pipeline / build (push) Waiting to run
HarmonyOS CI/CD Pipeline / publish (push) Blocked by required conditions
2026-05-14 09:53:05 +08:00
root
cbda2b1c4a use Netcatty package.json with full dependencies, keep main=main.js 2026-05-14 09:41:10 +08:00
root
75b2bbeb4f fix: remove writeFileSync from main.cjs (crashes in HarmonyOS sandbox) 2026-05-14 09:22:39 +08:00
root
4ff7e221a5 fix: remove writeFileSync from main.js - read-only bundle dir on HarmonyOS 2026-05-14 09:19:59 +08:00
root
47fb36d340 fix: add OHOS platform branch to createWindow, diagnostic showStartupError
- createWindow(): bypass windowManager on openharmony, use loadURL('file://...')
- showStartupError(): include process.platform and error message in dialog
- Add app/electron/, app/lib/, app/dist/ for Netcatty integration
2026-05-14 09:09:11 +08:00
Eiloud
a19d3f8ed4 Fix: TextWord uses 'value' not 'text' to match SDK TextRecognitionResult 2026-05-13 22:19:46 +08:00
Eiloud
b895a370ca Fix: TextWord.word -> TextWord.text to match SDK's textRecognition.TextWord 2026-05-13 18:29:50 +08:00
Eiloud
7dda953045 Fix: add remaining BatteryInfo fields, fix TextWord cast in OcrAdapter 2026-05-13 17:53:07 +08:00
Eiloud
9e3c1a1486 Fix: correct BatteryInfo fields (batterySOC, chargingStatus, isBatteryPresent) and OcrAdapterImage.buff 2026-05-13 17:50:43 +08:00
Eiloud
1089553835 Fix: define BatteryInfo as local interface instead of importing from @ohos.batteryInfo 2026-05-13 17:48:19 +08:00
701 changed files with 121027 additions and 27 deletions

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1,5 @@
{
"CommonInfo": {
"current.select.TARGET": "default"
}
}

View File

@ -0,0 +1,5 @@
{
"CommonInfo": {
"current.select.TARGET": "default"
}
}

View File

@ -0,0 +1,9 @@
{
"lastOhpmInstallResult": true,
"CommonInfo": {
"current.select.product": "default",
"current.select.buildMode": ""
},
"projectSizeTraceTmpKey": true,
"lastProjectSizeTraceTime": "1778681838"
}

94
.bitfun/configs.json Normal file
View File

@ -0,0 +1,94 @@
{
"configurations": [
{
"name": "electron",
"id": "p43H8F2H",
"type": "Application",
"typeId": "Application",
"userData": {
"data": {
"command": "",
"runtimeSanitizer": "",
"multiThreadCheck": false,
"enhancedErrorCheck": false,
"autoDependency": true,
"deployMultiHaps": [],
"enableDebugLine": false,
"installFlags": "",
"isDeployMultiHap": false,
"keepApplicationData": true,
"debugType": "Detect Automatically",
"launch": "DefaultAbility",
"launchFlags": "",
"module": "electron",
"product": "default",
"target": "default",
"activateToolWindowData": true,
"storeProjectFile": false,
"environmentVariables": [],
"showStaticGlobalVars": false,
"symbolDirectories": [],
"startupCommands": [],
"postAttachCommands": [],
"lldbLogChannels": "lldb process:gdb-remote packets",
"etsSourcePairs": [],
"abilityName": "",
"beforeLaunch": [
"defaultBuild"
]
}
},
"beforeLaunch": [
{
"name": "defaultBuild"
}
]
},
{
"name": "electron",
"id": "M0BP5C6q",
"type": "Hot Reload",
"typeId": "Hot Reload",
"userData": {
"data": {
"command": "",
"runtimeSanitizer": "",
"multiThreadCheck": false,
"enhancedErrorCheck": false,
"autoDependency": true,
"deployMultiHaps": [],
"enableDebugLine": false,
"installFlags": "",
"isDeployMultiHap": false,
"keepApplicationData": true,
"debugType": "ArkTS/JS",
"launch": "DefaultAbility",
"launchFlags": "",
"module": "electron",
"product": "default",
"target": "default",
"activateToolWindowData": true,
"storeProjectFile": false,
"environmentVariables": [],
"showStaticGlobalVars": false,
"symbolDirectories": [],
"startupCommands": [],
"postAttachCommands": [],
"lldbLogChannels": "lldb process:gdb-remote packets",
"etsSourcePairs": [],
"abilityName": "",
"beforeLaunch": [
"Hot Reload Build"
]
}
},
"beforeLaunch": [
{
"name": "Hot Reload Build",
"userData": {},
"typeId": "hotReloadBuild"
}
]
}
]
}

View File

@ -0,0 +1,358 @@
/*
* Copyright (c) 2023-2025 Haitai FangYuan Co., Ltd.
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used
* to endorse or promote products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import type image from '@ohos.multimedia.image';
import type inputMethod from '@ohos.inputMethod';
import type GestureEvent from '@ohos.multimodalInput.gestureEvent';
import type ConfigurationConstant from '@ohos.app.ability.ConfigurationConstant';
import type common from '@ohos.app.ability.common';
import type window from '@ohos.window';
export interface ILoginInfo {
status: boolean;
authCode: string;
unionId: string;
openId: string;
idToken: string;
anonymousPhone: string;
}
export interface ILogin {
loginCallbackFunc: (loginInfo: ILoginInfo) => void;
};
export interface WindowBound {
left: number;
top: number;
width: number;
height: number;
}
export interface CaptionButtonRect {
right: number;
top: number;
width: number;
height: number;
}
export class JSBind {
bindFunction: (name: string, func: Function) => number;
}
export interface CommandParameter {
url?: string;
user_data?: string;
is_sync?: boolean;
}
export interface CommandResult {
ret_code: number;
widget_Id: number;
last_widget_Id: number;
}
export interface NativeContext {
runBrowser: (vec_args: string[]) => void;
BrowserDestroyed: () => boolean;
runOtherProcessType: (processType: number) => void;
registerLifecycle: () => void;
openFile: (filePath: string) => void;
readImageFromReceiver: (receiver: image.ImageReceiver) => image.Image;
JSBind: JSBind;
OnPanEventCB: (action: number, id: string, event: GestureEvent) => void;
OnPinchEventCB: (pinch_step: string, id: string, event: GestureEvent) => void;
InsertTextCallback: (text: string) => void;
DeleteBackCallback: (length: number) => void;
DeleteForwardCallback: (length: number) => void;
SendEnterKeyEventCallback: () => void;
MoveCursorCallback: (direction: inputMethod.Direction) => void;
SetThemeSource: (themeSource: ConfigurationConstant.ColorMode) => void;
OnDragEnterCB: (id: string, dragInfo: OhosDropData, fileUris: Array<string>) => void;
OnDragLeaveCB: (id: string) => void;
OnDragEndCB: (id: string) => void;
OnDragMoveCB: (id: string, windowX: number, windowY: number) => void;
OnDropCB: (id: string, dragInfo: OhosDropData, fileUris: Array<string>) => void;
OnFontSizeChangeCallback:(fontSizeZoom :number) => void;
OnWindowInitSize: (windowRect: WindowBound, drawableRect: WindowBound) => void;
OnWindowStatusChange: (id: string, status: window.WindowStatusType) => void;
OnWindowVisibleChange: (windowId: String, visible: boolean) => void;
OnWindowInitState: (state: window.WindowStatusType) => void;
OnWindowRectChange: (id: string, event: WindowBound, reason: number) => void;
OnWindowSizeChange: (id: string, event: WindowBound) => void;
OnWindowEvent: (id: string, event: number) => void;
OnWindowVisibilityChange: (id: string, visible: boolean) => void;
OnNotificationClickCallback: (id: number) => void;
OnNotificationCloseCallback: (id: number) => void;
OnNotificationButtonClickCallback: (id: number, buttonIndex) => void;
OnDisplayChangeCallback: (even: string, id: number) => void;
ExecuteCommand: (id: number, param: CommandParameter) => CommandResult;
GetBrowserCloseResponse: (id: number) => BrowserCloseResponse;
RegisterWindowEventFilter: (origin_window_id: number) => void;
ClearWindowEventFilter: (origin_window_id: number) => void;
OnCaptionButtonRectChange: (id: string, event: CaptionButtonRect) => void;
UpdateWindowPcmodeSwitchStatusCB: (value: boolean) => void;
PowerMonitor: PowerMonitor;
}
export interface IParams {
callback: (ready: boolean, id: string) => void,
id: string,
size: number[], // [width, height]
initColorRgb: string,
}
export interface OhosDragParamToJs {
text: string;
url: string;
urlTitle: string;
html: string;
webImageFilePath: string;
electronFilePath: string;
bookmarkBuffer: ArrayBuffer;
webCustomBuffer: ArrayBuffer;
pixelMapBuffer: ArrayBuffer;
pixelMapWidth: number;
pixelMapHeight: number;
pixelMapTouchX: number;
pixelMapTouchY: number;
windowId: string;
}
export interface OhosDropData {
text: string;
url: string;
urlTitle: string;
html: string;
fileUris: Array<string>;
bookmarkBuffer: ArrayBuffer | undefined;
webCustomBuffer: ArrayBuffer | undefined;
}
export interface IMFAdapterInputAttribute {
inputPattern: inputMethod.TextInputType;
enterKeyType: inputMethod.EnterKeyType;
}
export interface IMFAdapterCursorInfo {
left: number;
top: number;
width: number;
height: number;
}
export interface IMFAdapterTextConfig {
inputAttribute: IMFAdapterInputAttribute;
cursorInfo: IMFAdapterCursorInfo;
}
export interface NotificationAdapterImage {
width: number;
height: number;
buff: ArrayBuffer;
}
export interface NotificationAdapterButton {
title: string;
buttonIndex: number;
}
export interface NotificationAdapterRequest {
notificationId: number;
title: string;
message: string;
requireInteraction: boolean;
silent: boolean;
timestamp: number;
icon: NotificationAdapterImage;
buttons: NotificationAdapterButton[];
}
export interface OhosPasteDataRecord {
html_text: string;
mime_type: string;
plain_text: string;
}
export interface SpeakingParamsExtraParams {
speed?: number;
volume?: number;
pitch?: number;
languageContext?: string;
audioType?: string;
playType?: number;
soundChannel?: number;
queueMode?: number;
}
export interface SpeakingParams {
requestId: string;
extraParams?: SpeakingParamsExtraParams;
}
export interface EngineCreationParamsExtraParams {
style?: string;
locate?: string;
name?: string;
}
export interface EngineCreationParams {
language: string;
online: number;
person: number;
extraParams?: EngineCreationParamsExtraParams;
}
export interface VoiceQueryExtraParams {
language?: string;
person?: number;
}
export interface VoiceQuery {
requestId: string;
online: number;
extraParams?: VoiceQueryExtraParams
}
export interface VoiceInfo {
language: string;
person: number;
style: string;
status: string;
gender: string;
description: string;
}
export interface AdvertisingParam {
connectable: boolean;
service_uuids: string[];
manufacturer_data: Map<number, Uint8Array>;
service_data: Map<string, Uint8Array>;
scan_response_data: Map<number, Uint8Array>;
}
// see the file
// src/ohos/adapter/common/constants.h
// The enumeration order should be kept the same
export enum WindowType {
INVALID = -1,
MAIN_WINDOW = 0,
SUB_WINDOW,
FLOAT_WINDOW
}
export interface NewWindowParam {
parent_id: string,
window_id: string,
bounds: WindowBound,
init_color_argb: string,
hide_title_bar: boolean,
use_dark_mode: boolean,
show: boolean,
minimizable: boolean,
maximizable: boolean,
closable: boolean,
always_on_top: boolean,
resizable: boolean,
is_modal: boolean,
is_panel: boolean,
is_stateless: boolean,
display_id: number,
}
export interface ISubWindowInfo {
id: string,
parentId: string,
subWindow: window.Window,
localStorage: LocalStorage,
}
export interface SelectFileDialogParams {
multi_files: boolean,
extensions: Array<Array<string>>,
descriptions: Array<string>,
include_all_files: boolean
}
export interface SaveAsDialogParams {
file_name: string,
dir_name: string,
extensions: Array<Array<string>>,
descriptions: Array<string>,
include_all_files: boolean
}
export interface PointCoordinate {
x: number
y: number,
displayId: number,
}
export enum BrowserCloseResponse {
kUndetermined,
kClosingContinue,
kClosingInterrupt,
kClosed,
kCloseCancelled,
kClosedAnyway,
}
// Electron
export interface WindowPreferences {
hideTitleBar: boolean;
minimizable: boolean;
maximizable: boolean;
closable: boolean;
}
export interface BatteryInfo {
batterySOC: number;
chargingStatus: number;
isBatteryPresent: boolean;
estimatedRemainingChargeTime: number;
nowCurrent: number;
remainingEnergy: number;
}
export interface OcrAdapterImage {
width: number;
height: number;
buff: ArrayBuffer;
}
export interface TextWord {
value: string;
confidence?: number;
}
export interface PowerMonitor {
OnSuspend: () => void;
OnResume: () => void;
OnPowerStateChanged: () => void;
}

155
.bitfun/project.json Normal file
View File

@ -0,0 +1,155 @@
{
"name": "ohos_electron_hap",
"description": "",
"projectType": "hvigor",
"uri": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap"
},
"buildTask": "",
"extendConfigs": {
"sourceSet": [],
"build": []
},
"subProjects": [
{
"name": "electron",
"description": "",
"projectType": "hvigor",
"uri": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/electron"
},
"buildTask": "",
"extendConfigs": {
"sourceSet": [],
"build": []
},
"subProjects": [],
"sourceSet": {
"include": {
"sourceFiles": [],
"resourceFiles": []
},
"exclude": {
"contentFiles": []
}
},
"dependencyProjects": []
},
{
"name": "web_engine",
"description": "",
"projectType": "hvigor",
"uri": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/web_engine"
},
"buildTask": "",
"extendConfigs": {
"sourceSet": [],
"build": []
},
"subProjects": [],
"sourceSet": {
"include": {
"sourceFiles": [],
"resourceFiles": []
},
"exclude": {
"contentFiles": []
}
},
"dependencyProjects": []
}
],
"sourceSet": {
"include": {
"sourceFiles": [
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/electron/src/main/ets"
}
},
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/electron/src/ohosTest/ets"
}
},
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/web_engine/src/main/ets"
}
},
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/web_engine/src/ohosTest/ets"
}
}
],
"resourceFiles": []
},
"exclude": {
"contentFiles": [
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/oh_modules"
}
},
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/.hvigor"
}
},
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/build"
}
},
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/electron/.test"
}
},
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/electron/oh_modules"
}
},
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/electron/build"
}
},
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/web_engine/.test"
}
},
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/web_engine/oh_modules"
}
},
{
"url": {
"$type": 1,
"data": "file:///storage/Users/currentUser/Desktop/projects/ohos_electron_hap/web_engine/build"
}
}
]
}
}
}

View File

@ -16,11 +16,26 @@
],
"buildModeSet": [
{
"name": "debug",
"name": "debug"
},
{
"name": "release"
}
],
"signingConfigs": [
{
"name": "default",
"material": {
"storePassword": "00000020B042E2E9E6BBBB331A5D9B84B52B19468492B675BB26884B09AEB4EE1560934B2270ADBA486243A0BE443394",
"certpath": "/storage/Users/currentUser/appdata/el2/base/com.huawei.devecostudio/files/ohos/config/default_ohos_electron_hap4PU0PdQzlYYcUxXSOoQfdhrl0YhWODdaXilxiORE6vk.cer",
"keyAlias": "debugKey",
"keyPassword": "00000020B042E2E9E6BBBB331A5D9B84B52B19468492B675BB26884B09AEB4EE1560934B2270ADBA486243A0BE443394",
"profile": "/storage/Users/currentUser/appdata/el2/base/com.huawei.devecostudio/files/ohos/config/default_ohos_electron_hap4PU0PdQzlYYcUxXSOoQfdhrl0YhWODdaXilxiORE6vk.p7b",
"signAlg": "SHA256withECDSA",
"storeFile": "/storage/Users/currentUser/appdata/el2/base/com.huawei.devecostudio/files/ohos/config/default_ohos_electron_hap4PU0PdQzlYYcUxXSOoQfdhrl0YhWODdaXilxiORE6vk.p12"
},
"type": "HarmonyOS"
}
]
},
"modules": [

View File

@ -64,7 +64,7 @@ export class OcrAdapter extends BaseAdapter {
for (const block of data.blocks) {
for (const line of block.lines) {
for (let word of line.words) {
let word1: TextWord = word;
let word1: TextWord = { value: word.value || '' };
wordsArray.push(word1);
}
}

View File

@ -33,10 +33,6 @@ import type GestureEvent from '@ohos.multimodalInput.gestureEvent';
import type ConfigurationConstant from '@ohos.app.ability.ConfigurationConstant';
import type common from '@ohos.app.ability.common';
import type window from '@ohos.window';
import type batteryInfo from '@ohos.batteryInfo';
// Re-export battery info type
export type BatteryInfo = batteryInfo.BatteryBasicInfo;
export interface ILoginInfo {
status: boolean;
@ -335,13 +331,23 @@ export interface WindowPreferences {
closable: boolean;
}
export interface BatteryInfo {
batterySOC: number;
chargingStatus: number;
isBatteryPresent: boolean;
estimatedRemainingChargeTime: number;
nowCurrent: number;
remainingEnergy: number;
}
export interface OcrAdapterImage {
width: number;
height: number;
buff: ArrayBuffer;
}
export interface TextWord {
word: string;
value: string;
confidence?: number;
}

View File

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-atom-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" />
<path d="M12 21l0 .01" />
<path d="M3 9l0 .01" />
<path d="M21 9l0 .01" />
<path d="M8 20.1a9 9 0 0 1 -5 -7.1" />
<path d="M16 20.1a9 9 0 0 0 5 -7.1" />
<path d="M6.2 5a9 9 0 0 1 11.4 0" />
</svg>

After

Width:  |  Height:  |  Size: 547 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="150 25 680 950" fill="currentColor"><path d="M467.1488 555.52a48.0768 48.0768 0 1 0-48.0256-48.0256 48.0256 48.0256 0 0 0 48.0256 48.0256zM602.0608 463.5136c-23.4496 26.9312-46.7968 68.6592 6.0928 64.512s59.2896-25.6 57.0368-71.168-38.5024-21.6576-63.1296 6.656zM615.1168 383.3344a45.5168 45.5168 0 1 0-45.4656-45.4144 45.5168 45.5168 0 0 0 45.4656 45.4144z"/><path d="M780.3904 554.5984c6.5024-9.2672 13.056-18.9952 19.6096-29.2864 56.8832-88.8832 48.896-160.4608 32.1536-204.8-21.9648-58.112-73.5232-106.3424-136.2944-128-47.8208-75.8272-182.4768-165.376-238.1824-142.6944-61.44 24.9856-65.8432 141.056-64.9728 190.0032a322.56 322.56 0 0 0-58.5728 66.56c-15.36 3.6864-41.984 10.752-69.5808 20.1216-67.7376 23.04-99.072 45.4656-104.7552 75.0592-11.8272 60.928 68.7104 158.72 173.7728 212.48 6.7072 10.5984 13.4656 20.48 20.48 29.0304-21.9136 21.1456-83.9168 92.16-55.552 194.304 21.3504 76.8 83.968 123.4944 168.0384 125.3376l7.424 8.448c2.304 2.6112 4.3008 5.12 5.7856 6.656a45.4656 45.4656 0 0 0 34.9184 16.3328h42.1888a45.568 45.568 0 0 0 45.5168-45.5168v-0.768h17.7152a45.6192 45.6192 0 0 0 45.5168 44.5952h42.7008a46.7968 46.7968 0 0 0 27.4944-9.728l1.024-0.7168c58.0096-39.424 93.2864-95.6928 102.0416-162.816 9.472-72.7552-14.3872-148.48-43.8272-190.464 3.0208-35.584-1.4336-58.7776-14.6432-74.1376zM220.16 415.2832c12.6464-14.08 76.3392-37.8368 139.6736-51.7632a30.72 30.72 0 0 0 19.6096-14.0288c8.0384-13.2608 34.7136-51.2 61.44-68.6592a30.72 30.72 0 0 0 13.9264-27.392c-5.12-89.3952 15.36-138.8032 25.1392-145.92 26.8288 0 135.8848 62.976 168.1408 124.7744a30.72 30.72 0 0 0 18.7392 15.36c39.1168 11.264 88.0128 42.0352 107.8784 94.72 16.896 44.7488 7.7312 96.6656-26.4192 150.0672-92.16 144.3328-174.848 169.9328-206.0288 174.08-34.048 4.7616-97.28 13.4656-160.768-91.904a30.72 30.72 0 0 0-12.8512-11.8784c-99.9936-48.4352-148.1216-126.1056-148.48-147.456z m137.5744 405.6576c-19.7632-71.2704 25.6-120.9856 38.9632-133.6832 1.792 1.4848 3.584 2.9184 5.12 4.2496-28.928 80.6912-11.2128 149.1968 14.9504 199.68-29.3888-12.6464-49.8688-36.5056-59.2384-70.2464z m420.2496-9.728c-6.5024 49.8688-31.8464 90.1632-75.4176 119.7568h-20.992a45.5168 45.5168 0 0 0-45.3632-44.5952h-49.8688a45.4656 45.4656 0 0 0-45.3632 45.4144v0.8704h-18.9952a39.424 39.424 0 0 0-1.9968-2.2528c-44.3904-50.176-91.0848-118.9376-63.0784-209.3056a177.9712 177.9712 0 0 0 57.1904 9.216 260.7616 260.7616 0 0 0 36.7616-2.9696c38.5024-5.12 106.8032-28.1088 183.6544-114.3808 0 5.4784-0.6656 12.288-1.7408 20.8384a30.72 30.72 0 0 0 7.2704 24.064c20.1216 23.3472 46.1824 88.2176 37.7344 153.344z"/></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Claude</title><path d="m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96" width="96" height="96"><path d="M95.667 67.954C92.225 73.933 72.24 88.04 47.997 88.04 23.754 88.04 3.769 73.933.328 67.954c-.216-.375-.307-.796-.328-1.226V55.661c.019-.371.089-.736.226-1.081 1.489-3.738 5.386-9.166 10.417-10.623.667-1.712 1.655-4.215 2.576-6.062-.154-1.414-.208-2.872-.208-4.345 0-5.322 1.128-9.99 4.527-13.466 1.587-1.623 3.557-2.869 5.893-3.805 5.595-4.545 13.563-8.369 24.48-8.369s19.057 3.824 24.652 8.369c2.337.936 4.306 2.182 5.894 3.805 3.399 3.476 4.527 8.144 4.527 13.466 0 1.473-.054 2.931-.208 4.345.921 1.847 1.909 4.35 2.576 6.062 5.03 1.457 8.928 6.885 10.417 10.623.163.41.231.848.231 1.289v10.644c0 .504-.081 1.004-.333 1.441ZM48.686 43.993l-.3.001-1.077-.001c-.423.709-.894 1.39-1.418 2.035-3.078 3.787-7.672 5.964-14.026 5.964-6.897 0-11.952-1.435-15.123-5.032a7.886 7.886 0 0 1-.342-.419l-.39.419v26.326c5.737 3.118 18.05 8.713 31.987 8.713 13.938 0 26.251-5.595 31.988-8.713V46.96l-.39-.419s-.132.181-.342.419c-3.171 3.597-8.226 5.032-15.123 5.032-6.354 0-10.949-2.177-14.026-5.964a17.178 17.178 0 0 1-1.418-2.034h-.066l.066-.001Zm-3.94-11.733c.17-1.326.251-2.513.253-3.573v-.084c-.005-3.077-.678-5.079-1.752-6.308-1.365-1.562-4.184-2.758-10.127-2.115-6.021.652-9.386 2.146-11.294 4.098-1.847 1.889-2.818 4.715-2.818 9.272 0 4.842.698 7.703 2.232 9.443 1.459 1.655 4.332 3.001 10.625 3.001 4.837 0 7.603-1.573 9.371-3.749 1.899-2.336 2.967-5.759 3.51-9.985Zm6.503 0c.543 4.226 1.611 7.649 3.51 9.985 1.768 2.176 4.533 3.749 9.371 3.749 6.292 0 9.165-1.346 10.624-3.001 1.535-1.74 2.232-4.601 2.232-9.443 0-4.557-.97-7.383-2.817-9.272-1.908-1.952-5.274-3.446-11.294-4.098-5.943-.643-8.763.553-10.127 2.115-1.074 1.229-1.747 3.231-1.752 6.308v.084c.002 1.06.083 2.247.253 3.573Zm-2.563 11.734h.066l-.066-.001v.001Z"></path><path d="M38.5 55.75a3.5 3.5 0 0 1 3.5 3.5v8.5a3.5 3.5 0 1 1-7 0v-8.5a3.5 3.5 0 0 1 3.5-3.5Zm19 0a3.5 3.5 0 0 1 3.5 3.5v8.5a3.5 3.5 0 1 1-7 0v-8.5a3.5 3.5 0 0 1 3.5-3.5Z"></path></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Gemini</title><path d="M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81"/></svg>

After

Width:  |  Height:  |  Size: 401 B

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-plus" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 5l0 14" />
<path d="M5 12l14 0" />
</svg>

After

Width:  |  Height:  |  Size: 339 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-sparkles" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M16 18a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2zm0 -12a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2zm-7 12a6 6 0 0 1 6 -6a6 6 0 0 1 -6 -6a6 6 0 0 1 -6 6a6 6 0 0 1 6 6z" />
</svg>

After

Width:  |  Height:  |  Size: 508 B

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-terminal-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M8 9l3 3l-3 3" />
<path d="M13 15l3 0" />
<path d="M3 4m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z" />
</svg>

After

Width:  |  Height:  |  Size: 443 B

View File

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zed Industries</title><path d="M2.25 1.5a.75.75 0 0 0-.75.75v16.5H0V2.25A2.25 2.25 0 0 1 2.25 0h20.095c1.002 0 1.504 1.212.795 1.92L10.764 14.298h3.486V12.75h1.5v1.922a1.125 1.125 0 0 1-1.125 1.125H9.264l-2.578 2.578h11.689V9h1.5v9.375a1.5 1.5 0 0 1-1.5 1.5H5.185L2.562 22.5H21.75a.75.75 0 0 0 .75-.75V5.25H24v16.5A2.25 2.25 0 0 1 21.75 24H1.655C.653 24 .151 22.788.86 22.08L13.19 9.75H9.75v1.5h-1.5V9.375A1.125 1.125 0 0 1 9.375 8.25h5.314l2.625-2.625H5.625V15h-1.5V5.625a1.5 1.5 0 0 1 1.5-1.5h13.19L21.438 1.5z"/></svg>

After

Width:  |  Height:  |  Size: 599 B

View File

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Anthropic</title><path d="M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2232 2.2914-5.9456 2.2914 5.9456Z"/></svg>

After

Width:  |  Height:  |  Size: 281 B

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-settings" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z" />
<path d="M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0" />
</svg>

After

Width:  |  Height:  |  Size: 880 B

View File

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Gemini</title><path d="M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81"/></svg>

After

Width:  |  Height:  |  Size: 401 B

View File

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ollama</title><path d="M16.361 10.26a.894.894 0 0 0-.558.47l-.072.148.001.207c0 .193.004.217.059.353.076.193.152.312.291.448.24.238.51.3.872.205a.86.86 0 0 0 .517-.436.752.752 0 0 0 .08-.498c-.064-.453-.33-.782-.724-.897a1.06 1.06 0 0 0-.466 0zm-9.203.005c-.305.096-.533.32-.65.639a1.187 1.187 0 0 0-.06.52c.057.309.31.59.598.667.362.095.632.033.872-.205.14-.136.215-.255.291-.448.055-.136.059-.16.059-.353l.001-.207-.072-.148a.894.894 0 0 0-.565-.472 1.02 1.02 0 0 0-.474.007Zm4.184 2c-.131.071-.223.25-.195.383.031.143.157.288.353.407.105.063.112.072.117.136.004.038-.01.146-.029.243-.02.094-.036.194-.036.222.002.074.07.195.143.253.064.052.076.054.255.059.164.005.198.001.264-.03.169-.082.212-.234.15-.525-.052-.243-.042-.28.087-.355.137-.08.281-.219.324-.314a.365.365 0 0 0-.175-.48.394.394 0 0 0-.181-.033c-.126 0-.207.03-.355.124l-.085.053-.053-.032c-.219-.13-.259-.145-.391-.143a.396.396 0 0 0-.193.032zm.39-2.195c-.373.036-.475.05-.654.086-.291.06-.68.195-.951.328-.94.46-1.589 1.226-1.787 2.114-.04.176-.045.234-.045.53 0 .294.005.357.043.524.264 1.16 1.332 2.017 2.714 2.173.3.033 1.596.033 1.896 0 1.11-.125 2.064-.727 2.493-1.571.114-.226.169-.372.22-.602.039-.167.044-.23.044-.523 0-.297-.005-.355-.045-.531-.288-1.29-1.539-2.304-3.072-2.497a6.873 6.873 0 0 0-.855-.031zm.645.937a3.283 3.283 0 0 1 1.44.514c.223.148.537.458.671.662.166.251.26.508.303.82.02.143.01.251-.043.482-.08.345-.332.705-.672.957a3.115 3.115 0 0 1-.689.348c-.382.122-.632.144-1.525.138-.582-.006-.686-.01-.853-.042-.57-.107-1.022-.334-1.35-.68-.264-.28-.385-.535-.45-.946-.03-.192.025-.509.137-.776.136-.326.488-.73.836-.963.403-.269.934-.46 1.422-.512.187-.02.586-.02.773-.002zm-5.503-11a1.653 1.653 0 0 0-.683.298C5.617.74 5.173 1.666 4.985 2.819c-.07.436-.119 1.04-.119 1.503 0 .544.064 1.24.155 1.721.02.107.031.202.023.208a8.12 8.12 0 0 1-.187.152 5.324 5.324 0 0 0-.949 1.02 5.49 5.49 0 0 0-.94 2.339 6.625 6.625 0 0 0-.023 1.357c.091.78.325 1.438.727 2.04l.13.195-.037.064c-.269.452-.498 1.105-.605 1.732-.084.496-.095.629-.095 1.294 0 .67.009.803.088 1.266.095.555.288 1.143.503 1.534.071.128.243.393.264.407.007.003-.014.067-.046.141a7.405 7.405 0 0 0-.548 1.873c-.062.417-.071.552-.071.991 0 .56.031.832.148 1.279L3.42 24h1.478l-.05-.091c-.297-.552-.325-1.575-.068-2.597.117-.472.25-.819.498-1.296l.148-.29v-.177c0-.165-.003-.184-.057-.293a.915.915 0 0 0-.194-.25 1.74 1.74 0 0 1-.385-.543c-.424-.92-.506-2.286-.208-3.451.124-.486.329-.918.544-1.154a.787.787 0 0 0 .223-.531c0-.195-.07-.355-.224-.522a3.136 3.136 0 0 1-.817-1.729c-.14-.96.114-2.005.69-2.834.563-.814 1.353-1.336 2.237-1.475.199-.033.57-.028.776.01.226.04.367.028.512-.041.179-.085.268-.19.374-.431.093-.215.165-.333.36-.576.234-.29.46-.489.822-.729.413-.27.884-.467 1.352-.561.17-.035.25-.04.569-.04.319 0 .398.005.569.04a4.07 4.07 0 0 1 1.914.997c.117.109.398.457.488.602.034.057.095.177.132.267.105.241.195.346.374.43.14.068.286.082.503.045.343-.058.607-.053.943.016 1.144.23 2.14 1.173 2.581 2.437.385 1.108.276 2.267-.296 3.153-.097.15-.193.27-.333.419-.301.322-.301.722-.001 1.053.493.539.801 1.866.708 3.036-.062.772-.26 1.463-.533 1.854a2.096 2.096 0 0 1-.224.258.916.916 0 0 0-.194.25c-.054.109-.057.128-.057.293v.178l.148.29c.248.476.38.823.498 1.295.253 1.008.231 2.01-.059 2.581a.845.845 0 0 0-.044.098c0 .006.329.009.732.009h.73l.02-.074.036-.134c.019-.076.057-.3.088-.516.029-.217.029-1.016 0-1.258-.11-.875-.295-1.57-.597-2.226-.032-.074-.053-.138-.046-.141.008-.005.057-.074.108-.152.376-.569.607-1.284.724-2.228.031-.26.031-1.378 0-1.628-.083-.645-.182-1.082-.348-1.525a6.083 6.083 0 0 0-.329-.7l-.038-.064.131-.194c.402-.604.636-1.262.727-2.04a6.625 6.625 0 0 0-.024-1.358 5.512 5.512 0 0 0-.939-2.339 5.325 5.325 0 0 0-.95-1.02 8.097 8.097 0 0 1-.186-.152.692.692 0 0 1 .023-.208c.208-1.087.201-2.443-.017-3.503-.19-.924-.535-1.658-.98-2.082-.354-.338-.716-.482-1.15-.455-.996.059-1.8 1.205-2.116 3.01a6.805 6.805 0 0 0-.097.726c0 .036-.007.066-.015.066a.96.96 0 0 1-.149-.078A4.857 4.857 0 0 0 12 3.03c-.832 0-1.687.243-2.456.698a.958.958 0 0 1-.148.078c-.008 0-.015-.03-.015-.066a6.71 6.71 0 0 0-.097-.725C8.997 1.392 8.337.319 7.46.048a2.096 2.096 0 0 0-.585-.041Zm.293 1.402c.248.197.523.759.682 1.388.03.113.06.244.069.292.007.047.026.152.041.233.067.365.098.76.102 1.24l.002.475-.12.175-.118.178h-.278c-.324 0-.646.041-.954.124l-.238.06c-.033.007-.038-.003-.057-.144a8.438 8.438 0 0 1 .016-2.323c.124-.788.413-1.501.696-1.711.067-.05.079-.049.157.013zm9.825-.012c.17.126.358.46.498.888.28.854.36 2.028.212 3.145-.019.14-.024.151-.057.144l-.238-.06a3.693 3.693 0 0 0-.954-.124h-.278l-.119-.178-.119-.175.002-.474c.004-.669.066-1.19.214-1.772.157-.623.434-1.185.68-1.382.078-.062.09-.063.159-.012z"/></svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenAI</title><path d="M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenRouter</title><path d="M16.778 1.844v1.919q-.569-.026-1.138-.032-.708-.008-1.415.037c-1.93.126-4.023.728-6.149 2.237-2.911 2.066-2.731 1.95-4.14 2.75-.396.223-1.342.574-2.185.798-.841.225-1.753.333-1.751.333v4.229s.768.108 1.61.333c.842.224 1.789.575 2.185.799 1.41.798 1.228.683 4.14 2.75 2.126 1.509 4.22 2.11 6.148 2.236.88.058 1.716.041 2.555.005v1.918l7.222-4.168-7.222-4.17v2.176c-.86.038-1.611.065-2.278.021-1.364-.09-2.417-.357-3.979-1.465-2.244-1.593-2.866-2.027-3.68-2.508.889-.518 1.449-.906 3.822-2.59 1.56-1.109 2.614-1.377 3.978-1.466.667-.044 1.418-.017 2.278.02v2.176L24 6.014Z"/></svg>

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 92 92"><g transform="translate(-40.921 -17.417)"><circle cx="75.921" cy="53.903" r="30" style="fill:none;stroke:#3050ff;stroke-width:10"/><path d="M67.515 37.915a18 18 0 0 1 21.051 3.313 18 18 0 0 1 3.138 21.078" style="fill:none;stroke:#3050ff;stroke-width:5"/><rect width="18.846" height="39.963" x="3.706" y="122.09" ry="0" style="fill:#3050ff" transform="rotate(-46.235)"/></g></svg>

After

Width:  |  Height:  |  Size: 441 B

View File

@ -0,0 +1,3 @@
<svg viewBox="0 0 56 56" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M39.5137 0C45.2842 0 48.17 0 50.374 1.12305C52.3127 2.11089 53.8892 3.68731 54.877 5.62598C56 7.82995 56 10.7153 56 16.4854V39.5146C56 45.2847 56 48.17 54.877 50.374C53.8891 52.3127 52.3127 53.8891 50.374 54.877C48.17 56 45.2842 56 39.5137 56H16.4854C10.7148 56 7.82905 56 5.625 54.877C3.68646 53.8891 2.11082 52.3126 1.12305 50.374C0 48.17 0 45.2849 0 39.5146V16.4854C0 10.7151 0 7.82999 1.12305 5.62598C2.11082 3.68739 3.68646 2.11089 5.625 1.12305C7.82905 0 10.7148 0 16.4854 0H39.5137ZM23.8105 30.958C23.5077 30.9581 23.2076 31.0175 22.9277 31.1338C22.6478 31.2502 22.393 31.4216 22.1787 31.6367L17.7705 36.0625L16.5986 34.8867C15.7377 34.0228 14.2649 34.4498 13.9971 35.6426L12.3271 43.0713C12.2686 43.3267 12.2752 43.593 12.3477 43.8447C12.4199 44.0956 12.555 44.3246 12.7393 44.5088L12.7383 44.5107C12.922 44.6967 13.1498 44.8324 13.4004 44.9053C13.6513 44.9782 13.9173 44.9856 14.1719 44.9268L21.5713 43.25C22.7588 42.9812 23.1851 41.502 22.3242 40.6377L21.1523 39.4619L25.5615 35.0371C25.9943 34.6025 26.2373 34.012 26.2373 33.3975C26.2372 32.783 25.9942 32.1934 25.5615 31.7588L25.5029 31.6992L25.5049 31.6982L25.4434 31.6367C25.229 31.4215 24.9744 31.2503 24.6943 31.1338C24.4144 31.0174 24.1136 30.958 23.8105 30.958ZM39.7139 28.1689C38.6842 27.5158 37.3429 28.2597 37.3428 29.4824V31.1445H27.8955C28.2111 31.7502 28.3916 32.439 28.3916 33.1699C28.3915 34.2266 28.0177 35.196 27.3965 35.9521H37.3418V37.6143C37.342 38.837 38.6843 39.58 39.7139 38.9268L46.1279 34.8613C46.6077 34.5556 46.8476 34.0509 46.8477 33.5469C46.847 33.0436 46.6067 32.5399 46.126 32.2354L39.7139 28.1689ZM24.0391 10.4062C23.778 10.4051 23.5207 10.4712 23.292 10.5977C23.063 10.7243 22.869 10.9083 22.7305 11.1309L18.6807 17.5684H18.6787C18.028 18.602 18.7694 19.9499 19.9873 19.9502H21.6436V29.5137C22.3307 29.0592 23.1537 28.794 24.0381 28.7939C24.9228 28.794 25.7453 29.0599 26.4326 29.5146V19.9502H28.0898C29.3077 19.9501 30.047 18.6028 29.3975 17.5684L25.3457 11.1309C25.0415 10.6489 24.5406 10.4068 24.0391 10.4062Z" fill="#468BFF"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1 @@
import{j as n}from"./vendor-radix-Bn5Gsx7B.js";import{c as t}from"./index-BbFI6e8l.js";const l={catty:{src:"/ai/agents/catty.svg",badgeClassName:"border-violet-500/20 bg-violet-500/10",imageClassName:"object-contain dark:brightness-0 dark:invert opacity-90"},copilot:{src:"/ai/agents/copilot.svg",badgeClassName:"border-zinc-300 bg-white",imageClassName:"object-contain brightness-0"},openai:{src:"/ai/providers/openai.svg",badgeClassName:"border-emerald-500/22 bg-emerald-500/12",imageClassName:"object-contain dark:brightness-0 dark:invert"},claude:{src:"/ai/agents/claude.svg",badgeClassName:"border-orange-500/22 bg-orange-500/12",imageClassName:"object-contain dark:brightness-0 dark:invert"},anthropic:{src:"/ai/providers/anthropic.svg",badgeClassName:"border-orange-500/22 bg-orange-500/12",imageClassName:"object-contain dark:brightness-0 dark:invert"},gemini:{src:"/ai/agents/gemini.svg",badgeClassName:"border-sky-500/22 bg-sky-500/12",imageClassName:"object-contain dark:brightness-0 dark:invert"},google:{src:"/ai/providers/google.svg",badgeClassName:"border-sky-500/22 bg-sky-500/12",imageClassName:"object-contain dark:brightness-0 dark:invert"},ollama:{src:"/ai/providers/ollama.svg",badgeClassName:"border-violet-500/22 bg-violet-500/12",imageClassName:"object-contain dark:brightness-0 dark:invert"},openrouter:{src:"/ai/providers/openrouter.svg",badgeClassName:"border-fuchsia-500/22 bg-fuchsia-500/12",imageClassName:"object-contain dark:brightness-0 dark:invert"},zed:{src:"/ai/agents/zed.svg",badgeClassName:"border-cyan-500/22 bg-cyan-500/12",imageClassName:"object-contain dark:brightness-0 dark:invert"},atom:{src:"/ai/agents/atom.svg",badgeClassName:"border-amber-500/18 bg-amber-500/10",imageClassName:"object-contain dark:brightness-0 dark:invert opacity-90"},terminal:{src:"/ai/agents/terminal.svg",badgeClassName:"border-white/8 bg-white/[0.04]",imageClassName:"object-contain dark:brightness-0 dark:invert opacity-90"},plus:{src:"/ai/agents/plus.svg",badgeClassName:"border-white/8 bg-white/[0.04]",imageClassName:"object-contain dark:brightness-0 dark:invert opacity-85"}};function i(r){return(r??"").toLowerCase().replace(/[^a-z0-9]+/g,"")}function m(r){if(r==="add-more")return"plus";if(r.type==="builtin")return"catty";const a=[i(r.icon),i(r.command),i(r.name),i(r.id)].filter(Boolean);return a.some(e=>e.includes("claude"))?"claude":a.some(e=>e.includes("copilot"))?"copilot":a.some(e=>e.includes("anthropic"))?"anthropic":a.some(e=>e.includes("codex")||e.includes("openai")||e.includes("chatgpt"))?"openai":a.some(e=>e.includes("gemini")||e.includes("google")||e.includes("googlegemini"))?"gemini":a.some(e=>e.includes("ollama"))?"ollama":a.some(e=>e.includes("openrouter"))?"openrouter":a.some(e=>e.includes("zed"))?"zed":a.some(e=>e.includes("factory"))?"atom":"terminal"}const k=({agent:r,size:a="md",variant:e="badge",className:o})=>{const d=m(r),s=l[d],g=a==="xs"?"h-4 w-4 rounded-sm":a==="sm"?"h-7 w-7 rounded-lg":a==="lg"?"h-10 w-10 rounded-xl":"h-8 w-8 rounded-lg",c=a==="xs"||a==="sm"?"h-3.5 w-3.5":a==="lg"?"h-5 w-5":"h-4 w-4";return e==="plain"?n.jsx("div",{"aria-hidden":"true",className:t("shrink-0",c,o),style:{maskImage:`url(${s.src})`,WebkitMaskImage:`url(${s.src})`,maskSize:"contain",WebkitMaskSize:"contain",maskRepeat:"no-repeat",WebkitMaskRepeat:"no-repeat",maskPosition:"center",WebkitMaskPosition:"center",backgroundColor:"currentColor"}}):n.jsx("div",{"data-agent-badge":"",className:t("flex shrink-0 items-center justify-center overflow-hidden border",g,s.badgeClassName,o),children:n.jsx("img",{src:s.src,alt:"","aria-hidden":"true",draggable:!1,className:t(c,s.imageClassName)})})};export{k as A};

View File

@ -0,0 +1 @@
import{r as n,j as e}from"./vendor-radix-Bn5Gsx7B.js";import{u as v,C,b as D,T as p,U as M,x as z,y as I,c as j,z as S}from"./index-BbFI6e8l.js";import{B as b}from"./bookmark-2KAGGh5e.js";const U=(s,a)=>new Date(s).toLocaleDateString(a||void 0,{year:"numeric",month:"short",day:"numeric"}),_=(s,a,o,d)=>{const i=new Date(s).toLocaleTimeString(o||void 0,{hour:"2-digit",minute:"2-digit"});if(!a)return`${i} - ${d}`;const c=new Date(a).toLocaleTimeString(o||void 0,{hour:"2-digit",minute:"2-digit"});return`${i} - ${c}`},N=n.memo(({log:s,onToggleSaved:a,onDelete:o,onClick:d})=>{const{t:l,resolvedLocale:i}=v(),t=s.protocol==="local"||s.hostname==="localhost",c=s.protocol==="serial";return e.jsxs("div",{className:"group flex items-center gap-4 px-4 py-3 hover:bg-secondary/60 transition-colors border-b border-border/30 last:border-b-0 cursor-pointer",onClick:d,children:[e.jsxs("div",{className:"w-32 shrink-0",children:[e.jsx("div",{className:"text-sm font-medium",children:U(s.startTime,i)}),e.jsx("div",{className:"text-xs text-muted-foreground",children:_(s.startTime,s.endTime,i,l("logs.ongoing"))})]}),e.jsxs("div",{className:"flex items-center gap-2 w-56 shrink-0",children:[e.jsx("div",{className:"h-8 w-8 rounded-full bg-primary/10 text-primary flex items-center justify-center shrink-0",children:e.jsx(M,{size:14})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-sm font-medium truncate",children:s.localUsername}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:s.localHostname})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx("div",{className:j("h-8 w-8 rounded-lg flex items-center justify-center shrink-0",c?"bg-amber-500/10 text-amber-500":t?"bg-emerald-500/10 text-emerald-500":"bg-blue-500/10 text-blue-500"),children:c?e.jsx(z,{size:14}):t?e.jsx(p,{size:14}):e.jsx(I,{size:14})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-sm font-medium truncate",children:t?l("logs.localTerminal"):s.hostLabel}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:t?"local":c?`serial, ${s.hostname}`:`${s.protocol}, ${s.username}`})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsx("button",{onClick:m=>{m.stopPropagation(),a(s.id)},className:j("p-1.5 rounded-md transition-colors",s.saved?"text-primary bg-primary/10":"text-muted-foreground hover:text-primary hover:bg-primary/10"),title:s.saved?l("logs.action.unsave"):l("logs.action.save"),children:e.jsx(b,{size:16,fill:s.saved?"currentColor":"none"})}),e.jsx("button",{onClick:m=>{m.stopPropagation(),o(s.id)},className:"p-1.5 rounded-md text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors opacity-0 group-hover:opacity-100",title:l("logs.action.delete"),children:e.jsx(S,{size:16})})]})]})});N.displayName="LogItem";const $=({logs:s,hosts:a,onToggleSaved:o,onDelete:d,onClearUnsaved:l,onOpenLogView:i})=>{const{t}=v(),c=30,m=30,[x,y]=n.useState(c),u=n.useMemo(()=>[...s].sort((r,w)=>w.startTime-r.startTime),[s]),h=n.useMemo(()=>u.slice(0,x),[u,x]),T=u.length>x,k=n.useCallback(()=>{y(r=>r+m)},[]),g=n.useCallback(r=>o(r),[o]),f=n.useCallback(r=>d(r),[d]),L=n.useMemo(()=>h.map(r=>e.jsx(N,{log:r,onToggleSaved:g,onDelete:f,onClick:()=>i(r)},r.id)),[h,g,f,i]);return e.jsxs("div",{className:"h-full flex flex-col",children:[h.length>0&&e.jsxs("div",{className:"flex items-center gap-4 px-4 py-2 text-xs font-medium text-muted-foreground border-b border-border/30 bg-secondary/30",children:[e.jsxs("div",{className:"w-32 shrink-0 flex items-center gap-1",children:[t("logs.table.date"),e.jsx(C,{size:12})]}),e.jsx("div",{className:"w-56 shrink-0",children:t("logs.table.user")}),e.jsx("div",{className:"flex-1",children:t("logs.table.host")}),e.jsxs("div",{className:"w-20 shrink-0 flex items-center gap-1",children:[t("logs.table.saved"),e.jsx(b,{size:12})]})]}),e.jsx(D,{className:"flex-1",children:e.jsx("div",{children:h.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-16 text-muted-foreground",children:[e.jsx("div",{className:"h-16 w-16 rounded-2xl bg-secondary/80 flex items-center justify-center mb-4",children:e.jsx(p,{size:32,className:"opacity-60"})}),e.jsx("h3",{className:"text-lg font-semibold text-foreground mb-2",children:t("logs.empty.title")}),e.jsx("p",{className:"text-sm text-center max-w-sm",children:t("logs.empty.desc")})]}):e.jsxs(e.Fragment,{children:[L,T&&e.jsx("button",{onClick:k,className:"w-full py-3 text-sm text-primary hover:bg-secondary/50 transition-colors",children:t("logs.loadMore",{count:Math.min(m,u.length-x)})})]})})})]})},E=(s,a)=>s.logs===a.logs&&s.hosts===a.hosts,O=n.memo($,E);export{O as default};

View File

@ -0,0 +1 @@
import{r as t,j as e}from"./vendor-radix-Bn5Gsx7B.js";import{u as w,f as C,h as S,j as k,k as y,l as p,I as j,S as V,b as D,D as H,m as L,B as g}from"./index-BbFI6e8l.js";const E=({isOpen:n,onClose:i,hosts:r,onCreate:v})=>{const{t:l}=w(),[m,u]=t.useState(""),[c,x]=t.useState(""),[d,f]=t.useState(new Set),h=t.useMemo(()=>{if(!c.trim())return r;const a=c.toLowerCase();return r.filter(s=>s.label.toLowerCase().includes(a)||s.hostname.toLowerCase().includes(a)||(s.group||"").toLowerCase().includes(a))},[r,c]),N=a=>{f(s=>{const o=new Set(s);return o.has(a)?o.delete(a):o.add(a),o})},b=()=>{const a=r.filter(s=>d.has(s.id));v(m,a),i()};return t.useEffect(()=>{n&&(u(""),x(""),f(new Set))},[n]),e.jsx(C,{open:n,onOpenChange:a=>!a&&i(),children:e.jsxs(S,{className:"max-w-md flex flex-col max-h-[80vh]",children:[e.jsx(k,{children:e.jsx(y,{children:l("dialog.createWorkspace.title",{defaultValue:"Create Workspace"})})}),e.jsxs("div",{className:"space-y-4 py-2 flex-1 flex flex-col min-h-0",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(p,{htmlFor:"workspace-name",children:l("field.name",{defaultValue:"Name"})}),e.jsx(j,{id:"workspace-name",value:m,onChange:a=>u(a.target.value),placeholder:l("placeholder.workspaceName",{defaultValue:"Workspace Name"}),autoFocus:!0})]}),e.jsxs("div",{className:"space-y-2 flex-1 flex flex-col min-h-0",children:[e.jsx(p,{children:l("field.selectHosts",{defaultValue:"Select Hosts"})}),e.jsxs("div",{className:"relative",children:[e.jsx(V,{className:"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(j,{placeholder:l("placeholder.searchHosts",{defaultValue:"Search hosts..."}),value:c,onChange:a=>x(a.target.value),className:"pl-8"})]}),e.jsx("div",{className:"border rounded-md flex-1 min-h-[200px]",children:e.jsx(D,{className:"h-full max-h-[300px]",children:e.jsx("div",{className:"p-2 space-y-1",children:h.length===0?e.jsx("div",{className:"text-center py-4 text-sm text-muted-foreground",children:l("common.noResults",{defaultValue:"No hosts found"})}):h.map(a=>{const s=d.has(a.id);return e.jsxs("div",{className:`flex items-center gap-3 p-2 rounded-md cursor-pointer hover:bg-muted/50 ${s?"bg-primary/10":""}`,onClick:()=>N(a.id),children:[e.jsx("div",{className:`h-4 w-4 border rounded flex items-center justify-center ${s?"bg-primary border-primary":"border-muted-foreground"}`,children:s&&e.jsx("div",{className:"h-2 w-2 bg-primary-foreground rounded-sm"})}),e.jsx(H,{host:a,size:"sm",fallback:a.label.slice(0,2).toUpperCase()}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium truncate",children:a.label}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:a.hostname})]})]},a.id)})})})}),e.jsxs("div",{className:"text-xs text-muted-foreground text-right",children:[d.size," ",l("common.selected",{defaultValue:"selected"})]})]})]}),e.jsxs(L,{children:[e.jsx(g,{variant:"ghost",onClick:i,children:l("common.cancel",{defaultValue:"Cancel"})}),e.jsx(g,{onClick:b,disabled:!m.trim()||d.size===0,children:l("common.create",{defaultValue:"Create"})})]})]})})};export{E as CreateWorkspaceDialog};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{r as i,j as e,R as v}from"./vendor-radix-Bn5Gsx7B.js";import{u as N,T as p,W as y,G as w,D as C,c as u,I as P,B as b}from"./index-BbFI6e8l.js";const E=({host:s,onSelect:f,onCancel:d})=>{const{t:c}=N(),n=i.useMemo(()=>{const o=[];if((s.protocol==="ssh"||!s.protocol||s.protocols?.some(t=>t.protocol==="ssh"&&t.enabled))!==!1){const t=s.protocols?.find(l=>l.protocol==="ssh");o.push({protocol:"ssh",port:t?.port||s.port||22,label:"SSH",icon:e.jsx(p,{size:18}),description:`ssh ${s.hostname}`,enabled:!0})}if(s.moshEnabled||s.protocols?.some(t=>t.protocol==="mosh"&&t.enabled)){const t=s.protocols?.find(l=>l.protocol==="mosh");o.push({protocol:"mosh",port:t?.port||s.port||22,label:"Mosh",icon:e.jsx(y,{size:18}),description:`mosh ${s.hostname}`,enabled:!0})}if(s.telnetEnabled||s.protocol==="telnet"||s.protocols?.some(t=>t.protocol==="telnet"&&t.enabled)){const t=s.protocols?.find(l=>l.protocol==="telnet");o.push({protocol:"telnet",port:t?.port||s.telnetPort||23,label:"Telnet",icon:e.jsx(w,{size:18}),description:`telnet ${s.hostname}`,enabled:!0})}return o},[s]),[m,h]=i.useState(()=>{const o={};return n.forEach(r=>{o[r.protocol]=r.port}),o}),[a,x]=i.useState(n[0]?.protocol||"ssh"),j=(o,r)=>{const t=parseInt(r,10);!isNaN(t)&&t>0&&t<=65535&&h(l=>({...l,[o]:t}))},g=()=>{f(a,m[a]||22)};return v.useEffect(()=>{n.length},[n]),e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center",onClick:d,children:e.jsxs("div",{className:"w-[560px] max-w-[90vw] bg-background border border-border rounded-2xl animate-in fade-in-0 zoom-in-95 duration-200",style:{boxShadow:"0 25px 50px -12px rgba(0, 0, 0, 0.25), 0 12px 24px -8px rgba(0, 0, 0, 0.15)"},onClick:o=>o.stopPropagation(),children:[e.jsx("div",{className:"px-6 py-5 border-b border-border/50",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(C,{host:s,fallback:s.label.slice(0,2).toUpperCase(),className:"h-12 w-12"}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-semibold",children:s.label}),e.jsx("p",{className:"text-xs text-muted-foreground font-mono",children:s.hostname})]})]})}),e.jsx("div",{className:"px-6 py-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"h-8 w-8 rounded-full bg-primary/20 text-primary flex items-center justify-center",children:e.jsx(p,{size:14})}),e.jsx("div",{className:"flex-1 h-0.5 bg-muted"}),e.jsx("div",{className:"h-8 w-8 rounded-full bg-muted text-muted-foreground flex items-center justify-center text-xs font-mono",children:">_"})]})}),e.jsxs("div",{className:"px-6 py-4 space-y-4",children:[e.jsx("h3",{className:"text-base font-semibold",children:c("protocolSelect.chooseProtocol")}),e.jsx("div",{className:"space-y-3",children:n.map(o=>e.jsxs("button",{className:u("w-full flex items-center justify-between px-4 py-3 rounded-xl border-2 transition-all text-left",a===o.protocol?"border-primary bg-primary/5":"border-border/60 hover:border-border hover:bg-secondary/50"),onClick:()=>x(o.protocol),children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:u("h-10 w-10 rounded-lg flex items-center justify-center",a===o.protocol?"bg-primary/20 text-primary":"bg-muted text-muted-foreground"),children:o.icon}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:o.label}),e.jsx("div",{className:"text-xs text-muted-foreground font-mono",children:o.description})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:c("protocolSelect.port")}),e.jsx(P,{type:"number",value:m[o.protocol]||o.port,onChange:r=>j(o.protocol,r.target.value),onClick:r=>{r.stopPropagation(),x(o.protocol)},className:"w-16 h-7 text-xs text-center",min:1,max:65535})]})]},o.protocol))})]}),e.jsxs("div",{className:"px-6 py-4 border-t border-border/50 flex items-center justify-between",children:[e.jsx(b,{variant:"secondary",onClick:d,children:c("common.close")}),e.jsx(b,{onClick:g,children:c("common.continue")})]})]})})};export{E as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
const e=Object.freeze(JSON.parse(`{"displayName":"Berry","name":"berry","patterns":[{"include":"#controls"},{"include":"#strings"},{"include":"#comment-block"},{"include":"#comments"},{"include":"#keywords"},{"include":"#function"},{"include":"#member"},{"include":"#identifier"},{"include":"#number"},{"include":"#operator"}],"repository":{"comment-block":{"begin":"#-","end":"-#","name":"comment.berry","patterns":[{}]},"comments":{"begin":"#","end":"\\\\n","name":"comment.line.berry","patterns":[{}]},"controls":{"patterns":[{"match":"\\\\b(if|elif|else|for|while|do|end|break|continue|return|try|except|raise)\\\\b","name":"keyword.control.berry"}]},"function":{"patterns":[{"match":"\\\\b([A-Z_a-z][0-9A-Z_a-z]*(?=\\\\s*\\\\())","name":"entity.name.function.berry"}]},"identifier":{"patterns":[{"match":"\\\\b[A-Z_a-z]\\\\w+\\\\b","name":"identifier.berry"}]},"keywords":{"patterns":[{"match":"\\\\b(var|static|def|class|true|false|nil|self|super|import|as|_class)\\\\b","name":"keyword.berry"}]},"member":{"patterns":[{"captures":{"0":{"name":"entity.other.attribute-name.berry"}},"match":"\\\\.([A-Z_a-z][0-9A-Z_a-z]*)"}]},"number":{"patterns":[{"match":"0x\\\\h+|\\\\d+|(\\\\d+\\\\.?|\\\\.\\\\d)\\\\d*([Ee][-+]?\\\\d+)?","name":"constant.numeric.berry"}]},"operator":{"patterns":[{"match":"[-\\\\]!%\\\\&(-+./:<=>\\\\[^|~]","name":"keyword.operator.berry"}]},"strings":{"patterns":[{"begin":"f(?=[\\"'])","patterns":[{"begin":"\\"","end":"\\"","name":"string.quoted.other.berry","patterns":[{"match":"(\\\\\\\\x\\\\h{2})|(\\\\\\\\[0-7]{3})|(\\\\\\\\\\\\\\\\)|(\\\\\\\\\\")|(\\\\\\\\')|(\\\\\\\\a)|(\\\\\\\\b)|(\\\\\\\\f)|(\\\\\\\\n)|(\\\\\\\\r)|(\\\\\\\\t)|(\\\\\\\\v)","name":"constant.character.escape.berry"},{"match":"\\\\{\\\\{[^}]*}}","name":"string.quoted.other.berry"},{"begin":"\\\\{","end":"}","name":"keyword.other.unit.berry","patterns":[{"include":"#keywords"},{"include":"#numbers"},{"include":"#identifier"},{"include":"#operator"},{"include":"#member"},{"include":"#function"}]}]},{"begin":"'","end":"'","name":"string.quoted.other.berry","patterns":[{"match":"(\\\\\\\\x\\\\h{2})|(\\\\\\\\[0-7]{3})|(\\\\\\\\\\\\\\\\)|(\\\\\\\\\\")|(\\\\\\\\')|(\\\\\\\\a)|(\\\\\\\\b)|(\\\\\\\\f)|(\\\\\\\\n)|(\\\\\\\\r)|(\\\\\\\\t)|(\\\\\\\\v)","name":"constant.character.escape.berry"},{"match":"\\\\{\\\\{[^}]*}}","name":"string.quoted.other.berry"},{"begin":"\\\\{","end":"}","name":"keyword.other.unit.berry","patterns":[{"include":"#keywords"},{"include":"#numbers"},{"include":"#identifier"},{"include":"#operator"},{"include":"#member"},{"include":"#function"}]}]}],"while":"\\\\G|^[\\\\t ]*(?=[\\"'])"},{"begin":"([\\"'])","end":"\\\\1","name":"string.quoted.double.berry","patterns":[{"match":"(\\\\\\\\x\\\\h{2})|(\\\\\\\\[0-7]{3})|(\\\\\\\\\\\\\\\\)|(\\\\\\\\\\")|(\\\\\\\\')|(\\\\\\\\a)|(\\\\\\\\b)|(\\\\\\\\f)|(\\\\\\\\n)|(\\\\\\\\r)|(\\\\\\\\t)|(\\\\\\\\v)","name":"constant.character.escape.berry"}]}]}},"scopeName":"source.berry","aliases":["be"]}`)),r=[e];export{r as default};

View File

@ -0,0 +1 @@
const e=Object.freeze(JSON.parse('{"displayName":"BibTeX","name":"bibtex","patterns":[{"captures":{"0":{"name":"punctuation.definition.comment.bibtex"}},"match":"@(?i:comment)(?=[({\\\\s])","name":"comment.block.at-sign.bibtex"},{"include":"#preamble"},{"include":"#string"},{"include":"#entry"},{"begin":"[^\\\\n@]","end":"(?=@)","name":"comment.block.bibtex"}],"repository":{"entry":{"patterns":[{"begin":"((@)[-!$\\\\&*+./:;<>-z|~][!$\\\\&*+\\\\--<>-z|~]*)\\\\s*(\\\\{)\\\\s*([^,}\\\\s]*)","beginCaptures":{"1":{"name":"keyword.other.entry-type.bibtex"},"2":{"name":"punctuation.definition.keyword.bibtex"},"3":{"name":"punctuation.section.entry.begin.bibtex"},"4":{"name":"entity.name.type.entry-key.bibtex"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.entry.end.bibtex"}},"name":"meta.entry.braces.bibtex","patterns":[{"begin":"([-!$\\\\&*+./:;<>-z|~][!$\\\\&*+\\\\--<>-z|~]*)\\\\s*(=)","beginCaptures":{"1":{"name":"support.function.key.bibtex"},"2":{"name":"punctuation.separator.key-value.bibtex"}},"end":"(?=[,}])","name":"meta.key-assignment.bibtex","patterns":[{"include":"#field_value"}]}]},{"begin":"((@)[-!$\\\\&*+./:;<>-z|~][!$\\\\&*+\\\\--<>-z|~]*)\\\\s*(\\\\()\\\\s*([^,\\\\s]*)","beginCaptures":{"1":{"name":"keyword.other.entry-type.bibtex"},"2":{"name":"punctuation.definition.keyword.bibtex"},"3":{"name":"punctuation.section.entry.begin.bibtex"},"4":{"name":"entity.name.type.entry-key.bibtex"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.entry.end.bibtex"}},"name":"meta.entry.parenthesis.bibtex","patterns":[{"begin":"([-!$\\\\&*+./:;<>-z|~][!$\\\\&*+\\\\--<>-z|~]*)\\\\s*(=)","beginCaptures":{"1":{"name":"support.function.key.bibtex"},"2":{"name":"punctuation.separator.key-value.bibtex"}},"end":"(?=[),])","name":"meta.key-assignment.bibtex","patterns":[{"include":"#field_value"}]}]}]},"field_value":{"patterns":[{"include":"#string_content"},{"include":"#integer"},{"include":"#string_var"},{"match":"#","name":"keyword.operator.bibtex"}]},"integer":{"captures":{"1":{"name":"constant.numeric.bibtex"}},"match":"\\\\s*(\\\\d+)\\\\s*"},"nested_braces":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.group.begin.bibtex"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.group.end.bibtex"}},"patterns":[{"include":"#nested_braces"}]},"preamble":{"patterns":[{"begin":"((@)(?i:preamble))\\\\s*(\\\\{)\\\\s*","beginCaptures":{"1":{"name":"keyword.other.preamble.bibtex"},"2":{"name":"punctuation.definition.keyword.bibtex"},"3":{"name":"punctuation.section.preamble.begin.bibtex"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.preamble.end.bibtex"}},"name":"meta.preamble.braces.bibtex","patterns":[{"include":"#field_value"}]},{"begin":"((@)(?i:preamble))\\\\s*(\\\\()\\\\s*","beginCaptures":{"1":{"name":"keyword.other.preamble.bibtex"},"2":{"name":"punctuation.definition.keyword.bibtex"},"3":{"name":"punctuation.section.preamble.begin.bibtex"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.preamble.end.bibtex"}},"name":"meta.preamble.parenthesis.bibtex","patterns":[{"include":"#field_value"}]}]},"string":{"patterns":[{"begin":"((@)(?i:string))\\\\s*(\\\\{)\\\\s*([-!$\\\\&*+./:;<>-z|~][!$\\\\&*+\\\\--<>-z|~]*)","beginCaptures":{"1":{"name":"keyword.other.string-constant.bibtex"},"2":{"name":"punctuation.definition.keyword.bibtex"},"3":{"name":"punctuation.section.string-constant.begin.bibtex"},"4":{"name":"variable.other.bibtex"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.string-constant.end.bibtex"}},"name":"meta.string-constant.braces.bibtex","patterns":[{"include":"#field_value"}]},{"begin":"((@)(?i:string))\\\\s*(\\\\()\\\\s*([-!$\\\\&*+./:;<>-z|~][!$\\\\&*+\\\\--<>-z|~]*)","beginCaptures":{"1":{"name":"keyword.other.string-constant.bibtex"},"2":{"name":"punctuation.definition.keyword.bibtex"},"3":{"name":"punctuation.section.string-constant.begin.bibtex"},"4":{"name":"variable.other.bibtex"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.string-constant.end.bibtex"}},"name":"meta.string-constant.parenthesis.bibtex","patterns":[{"include":"#field_value"}]}]},"string_content":{"patterns":[{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.bibtex"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.string.end.bibtex"}},"patterns":[{"include":"#nested_braces"}]},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.bibtex"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.bibtex"}},"patterns":[{"include":"#nested_braces"}]}]},"string_var":{"captures":{"0":{"name":"support.variable.bibtex"}},"match":"[-!$\\\\&*+./:;<>-z|~][!$\\\\&*+\\\\--<>-z|~]*"}},"scopeName":"text.bibtex"}')),n=[e];export{n as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{A as o}from"./index-BbFI6e8l.js";const a=[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}]],e=o("bookmark",a);export{e as B};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import e from"./python-B6aJPvgy.js";const n=Object.freeze(JSON.parse(`{"displayName":"Cairo","name":"cairo","patterns":[{"begin":"\\\\b(if).*\\\\(","beginCaptures":{"1":{"name":"keyword.control.if"},"2":{"name":"entity.name.condition"}},"contentName":"source.cairo0","end":"}","endCaptures":{"0":{"name":"keyword.control.end"}},"name":"meta.control.if","patterns":[{"include":"source.cairo0"}]},{"begin":"\\\\b(with)\\\\s+(.+)\\\\s*\\\\{","beginCaptures":{"1":{"name":"keyword.control.with"},"2":{"name":"entity.name.identifiers"}},"contentName":"source.cairo0","end":"}","endCaptures":{"0":{"name":"keyword.control.end"}},"name":"meta.control.with","patterns":[{"include":"source.cairo0"}]},{"begin":"\\\\b(with_attr)\\\\s+([A-Z_a-z][0-9A-Z_a-z]*)\\\\s*[({]","beginCaptures":{"1":{"name":"keyword.control.with_attr"},"2":{"name":"entity.name.function"}},"contentName":"source.cairo0","end":"}","endCaptures":{"0":{"name":"keyword.control.end"}},"name":"meta.control.with_attr","patterns":[{"include":"source.cairo0"}]},{"match":"\\\\belse\\\\b","name":"keyword.control.else"},{"match":"\\\\b(call|jmp|ret|abs|rel|if)\\\\b","name":"keyword.other.opcode"},{"match":"\\\\b([af]p)\\\\b","name":"keyword.other.register"},{"match":"\\\\b(const|let|local|tempvar|felt|as|from|import|static_assert|return|assert|cast|alloc_locals|with|with_attr|nondet|dw|codeoffset|new|using|and)\\\\b","name":"keyword.other.meta"},{"match":"\\\\b(SIZE(?:OF_LOCALS|))\\\\b","name":"markup.italic"},{"match":"//[^\\\\n]*\\\\n","name":"comment.line.sharp"},{"match":"\\\\b[A-Z_a-z][0-9A-Z_a-z]*:\\\\s*$","name":"entity.name.function"},{"begin":"\\\\b(func)\\\\s+([A-Z_a-z][0-9A-Z_a-z]*)\\\\s*[({]","beginCaptures":{"1":{"name":"storage.type.function.cairo"},"2":{"name":"entity.name.function"}},"contentName":"source.cairo0","end":"}","endCaptures":{"0":{"name":"storage.type.function.cairo"}},"name":"meta.function.cairo","patterns":[{"include":"source.cairo0"}]},{"begin":"\\\\b(struct|namespace)\\\\s+([A-Z_a-z][0-9A-Z_a-z]*)\\\\s*\\\\{","beginCaptures":{"1":{"name":"storage.type.function.cairo"},"2":{"name":"entity.name.function"}},"contentName":"source.cairo0","end":"}","endCaptures":{"0":{"name":"storage.type.function.cairo"}},"name":"meta.function.cairo","patterns":[{"include":"source.cairo0"}]},{"match":"\\\\b[-+]?[0-9]+\\\\b","name":"constant.numeric.decimal"},{"match":"\\\\b[-+]?0x\\\\h+\\\\b","name":"constant.numeric.hexadecimal"},{"match":"'[^']*'","name":"string.quoted.single"},{"match":"\\"[^\\"]*\\"","name":"string.quoted.double"},{"begin":"%\\\\{","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.python"}},"contentName":"source.python","end":"%}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.python"},"1":{"name":"source.python"}},"name":"meta.embedded.block.python","patterns":[{"include":"source.python"}]}],"scopeName":"source.cairo0","embeddedLangs":["python"]}`)),a=[...e,n];export{a as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
const e=Object.freeze(JSON.parse('{"displayName":"CODEOWNERS","name":"codeowners","patterns":[{"include":"#comment"},{"include":"#pattern"},{"include":"#owner"}],"repository":{"comment":{"patterns":[{"begin":"^\\\\s*#","captures":{"0":{"name":"punctuation.definition.comment.codeowners"}},"end":"$","name":"comment.line.codeowners"}]},"owner":{"match":"\\\\S*@\\\\S+","name":"storage.type.function.codeowners"},"pattern":{"match":"^\\\\s*(\\\\S+)","name":"variable.other.codeowners"}},"scopeName":"text.codeowners"}')),n=[e];export{n as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{H as s}from"./index-BbFI6e8l.js";import"./vendor-radix-Bn5Gsx7B.js";async function l(r,e,t,p){const a=s.get();if(!a?.startCompressedUpload)throw new Error("Compressed upload not available");try{return await a.startCompressedUpload(r,e,t,p)}catch(o){const c=o instanceof Error?o.message:String(o);return{compressionId:r.compressionId,success:!1,error:c}}}async function i(r){const e=s.get();if(!e?.cancelCompressedUpload)throw new Error("Compressed upload not available");return e.cancelCompressedUpload(r)}async function m(r){const e=s.get();return e?.checkCompressedUploadSupport?e.checkCompressedUploadSupport(r):{supported:!1,localTar:!1,remoteTar:!1,error:"Compressed upload not available"}}export{i as cancelCompressedUpload,m as checkCompressedUploadSupport,l as startCompressedUpload};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
const a=Object.freeze(JSON.parse('{"displayName":"CSV","fileTypes":["csv"],"name":"csv","patterns":[{"captures":{"1":{"name":"rainbow1"},"2":{"name":"keyword.rainbow2"},"3":{"name":"entity.name.function.rainbow3"},"4":{"name":"comment.rainbow4"},"5":{"name":"string.rainbow5"},"6":{"name":"variable.parameter.rainbow6"},"7":{"name":"constant.numeric.rainbow7"},"8":{"name":"entity.name.type.rainbow8"},"9":{"name":"markup.bold.rainbow9"},"10":{"name":"invalid.rainbow10"}},"match":"( *\\"(?:[^\\"]*\\"\\")*[^\\"]*\\" *(?:,|$)|[^,]*(?:,|$))?( *\\"(?:[^\\"]*\\"\\")*[^\\"]*\\" *(?:,|$)|[^,]*(?:,|$))?( *\\"(?:[^\\"]*\\"\\")*[^\\"]*\\" *(?:,|$)|[^,]*(?:,|$))?( *\\"(?:[^\\"]*\\"\\")*[^\\"]*\\" *(?:,|$)|[^,]*(?:,|$))?( *\\"(?:[^\\"]*\\"\\")*[^\\"]*\\" *(?:,|$)|[^,]*(?:,|$))?( *\\"(?:[^\\"]*\\"\\")*[^\\"]*\\" *(?:,|$)|[^,]*(?:,|$))?( *\\"(?:[^\\"]*\\"\\")*[^\\"]*\\" *(?:,|$)|[^,]*(?:,|$))?( *\\"(?:[^\\"]*\\"\\")*[^\\"]*\\" *(?:,|$)|[^,]*(?:,|$))?( *\\"(?:[^\\"]*\\"\\")*[^\\"]*\\" *(?:,|$)|[^,]*(?:,|$))?( *\\"(?:[^\\"]*\\"\\")*[^\\"]*\\" *(?:,|$)|[^,]*(?:,|$))?","name":"rainbowgroup"}],"scopeName":"text.csv"}')),n=[a];export{n as default};

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More