ikanban-web 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{ghostty-web-BkTBr6Qp.js → ghostty-web-DC9h7yp6.js} +1 -1
- package/dist/assets/{home-CbMdbws_.js → home-B2bEEt-Q.js} +1 -1
- package/dist/assets/{index-DvCClLZk.js → index-BM0fG0_S.js} +1 -1
- package/dist/assets/{session-mSsgwdFK.js → session-CFBQK6ra.js} +3 -3
- package/dist/index.html +1 -1
- package/package.json +3 -3
- package/src/app.tsx +7 -7
- package/src/components/dialog-connect-provider.tsx +10 -10
- package/src/components/dialog-custom-provider.tsx +7 -7
- package/src/components/dialog-edit-project.tsx +7 -7
- package/src/components/dialog-fork.tsx +5 -5
- package/src/components/dialog-manage-models.tsx +6 -6
- package/src/components/dialog-release-notes.tsx +3 -3
- package/src/components/dialog-select-directory.tsx +6 -6
- package/src/components/dialog-select-file.tsx +8 -8
- package/src/components/dialog-select-mcp.tsx +3 -3
- package/src/components/dialog-select-model-unpaid.tsx +7 -7
- package/src/components/dialog-select-model.tsx +7 -7
- package/src/components/dialog-select-provider.tsx +5 -5
- package/src/components/dialog-select-server.tsx +9 -9
- package/src/components/dialog-settings.tsx +3 -3
- package/src/components/file-tree.test.ts +4 -4
- package/src/components/file-tree.tsx +3 -3
- package/src/components/prompt-input/attachments.ts +1 -1
- package/src/components/prompt-input/build-request-parts.ts +1 -1
- package/src/components/prompt-input/context-items.tsx +4 -4
- package/src/components/prompt-input/drag-overlay.tsx +1 -1
- package/src/components/prompt-input/image-attachments.tsx +1 -1
- package/src/components/prompt-input/slash-popover.tsx +3 -3
- package/src/components/prompt-input/submit.test.ts +2 -2
- package/src/components/prompt-input/submit.ts +2 -2
- package/src/components/prompt-input.tsx +12 -12
- package/src/components/server/server-row.tsx +1 -1
- package/src/components/session/session-context-tab.tsx +8 -8
- package/src/components/session/session-header.tsx +12 -12
- package/src/components/session/session-new-view.tsx +2 -2
- package/src/components/session/session-sortable-tab.tsx +5 -5
- package/src/components/session/session-sortable-terminal-tab.tsx +4 -4
- package/src/components/session-context-usage.tsx +3 -3
- package/src/components/settings-general.tsx +7 -7
- package/src/components/settings-keybinds.tsx +5 -5
- package/src/components/settings-models.tsx +6 -6
- package/src/components/settings-permissions.tsx +2 -2
- package/src/components/settings-providers.tsx +5 -5
- package/src/components/status-popover.tsx +7 -7
- package/src/components/terminal.tsx +2 -2
- package/src/components/titlebar.tsx +5 -5
- package/src/context/command.tsx +2 -2
- package/src/context/comments.test.ts +1 -1
- package/src/context/comments.tsx +1 -1
- package/src/context/file.tsx +3 -3
- package/src/context/global-sdk.tsx +1 -1
- package/src/context/global-sync/bootstrap.ts +3 -3
- package/src/context/global-sync/event-reducer.ts +1 -1
- package/src/context/global-sync.tsx +2 -2
- package/src/context/highlights.tsx +2 -2
- package/src/context/language.tsx +18 -18
- package/src/context/layout.tsx +1 -1
- package/src/context/local.tsx +2 -2
- package/src/context/models.tsx +1 -1
- package/src/context/notification.tsx +3 -3
- package/src/context/permission-auto-respond.test.ts +1 -1
- package/src/context/permission-auto-respond.ts +1 -1
- package/src/context/permission.tsx +1 -1
- package/src/context/platform.tsx +1 -1
- package/src/context/prompt.tsx +2 -2
- package/src/context/sdk.tsx +1 -1
- package/src/context/server.tsx +1 -1
- package/src/context/settings.tsx +1 -1
- package/src/context/sync.tsx +3 -3
- package/src/context/terminal.test.ts +1 -1
- package/src/context/terminal.tsx +1 -1
- package/src/entry.tsx +1 -1
- package/src/index.css +1 -1
- package/src/pages/directory-layout.tsx +2 -2
- package/src/pages/error.tsx +4 -4
- package/src/pages/home.tsx +5 -5
- package/src/pages/layout/helpers.ts +1 -1
- package/src/pages/layout/inline-editor.tsx +1 -1
- package/src/pages/layout/sidebar-items.tsx +10 -10
- package/src/pages/layout/sidebar-project.tsx +7 -7
- package/src/pages/layout/sidebar-shell.tsx +2 -2
- package/src/pages/layout/sidebar-workspace.tsx +9 -9
- package/src/pages/layout.tsx +14 -14
- package/src/pages/session/composer/session-composer-region.tsx +1 -1
- package/src/pages/session/composer/session-composer-state.ts +1 -1
- package/src/pages/session/composer/session-permission-dock.tsx +3 -3
- package/src/pages/session/composer/session-question-dock.tsx +4 -4
- package/src/pages/session/composer/session-todo-dock.tsx +7 -7
- package/src/pages/session/file-tabs.tsx +10 -10
- package/src/pages/session/message-timeline.tsx +13 -13
- package/src/pages/session/review-tab.tsx +2 -2
- package/src/pages/session/session-mobile-tabs.tsx +1 -1
- package/src/pages/session/session-side-panel.tsx +6 -6
- package/src/pages/session/terminal-panel.tsx +4 -4
- package/src/pages/session/use-session-commands.tsx +3 -3
- package/src/pages/session.tsx +6 -6
- package/src/utils/base64.ts +1 -1
- package/src/utils/persist.ts +1 -1
- package/src/utils/sound.ts +45 -45
package/dist/index.html
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<meta property="og:image" content="/social-share.png" />
|
|
15
15
|
<meta property="twitter:image" content="/social-share.png" />
|
|
16
16
|
<script id="oc-theme-preload-script" src="/oc-theme-preload.js"></script>
|
|
17
|
-
<script type="module" crossorigin src="/assets/index-
|
|
17
|
+
<script type="module" crossorigin src="/assets/index-BM0fG0_S.js"></script>
|
|
18
18
|
<link rel="stylesheet" crossorigin href="/assets/index-CLdyKsqF.css">
|
|
19
19
|
</head>
|
|
20
20
|
<body class="antialiased overscroll-none text-12-regular overflow-hidden">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ikanban-web",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "iKanban web app",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -35,8 +35,6 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@kobalte/core": "0.13.11",
|
|
37
37
|
"@opencode-ai/sdk": "^1.2.16",
|
|
38
|
-
"@opencode-ai/ui": "workspace:*",
|
|
39
|
-
"@opencode-ai/util": "workspace:*",
|
|
40
38
|
"@shikijs/transformers": "4.0.1",
|
|
41
39
|
"@solid-primitives/active-element": "2.1.5",
|
|
42
40
|
"@solid-primitives/audio": "1.4.4",
|
|
@@ -73,6 +71,8 @@
|
|
|
73
71
|
"@types/luxon": "3.7.1",
|
|
74
72
|
"@types/node": "25.3.3",
|
|
75
73
|
"@typescript/native-preview": "7.0.0-dev.20260304.1",
|
|
74
|
+
"ikanban-ui": "workspace:*",
|
|
75
|
+
"ikanban-utils": "workspace:*",
|
|
76
76
|
"typescript": "5.9.3",
|
|
77
77
|
"vite": "7.3.1",
|
|
78
78
|
"vite-plugin-icons-spritesheet": "3.0.1",
|
package/src/app.tsx
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "@/index.css"
|
|
2
|
-
import { File } from "
|
|
3
|
-
import { I18nProvider } from "
|
|
4
|
-
import { DialogProvider } from "
|
|
5
|
-
import { FileComponentProvider } from "
|
|
6
|
-
import { MarkedProvider } from "
|
|
7
|
-
import { Font } from "
|
|
8
|
-
import { ThemeProvider } from "
|
|
2
|
+
import { File } from "ikanban-ui/file"
|
|
3
|
+
import { I18nProvider } from "ikanban-ui/context"
|
|
4
|
+
import { DialogProvider } from "ikanban-ui/context/dialog"
|
|
5
|
+
import { FileComponentProvider } from "ikanban-ui/context/file"
|
|
6
|
+
import { MarkedProvider } from "ikanban-ui/context/marked"
|
|
7
|
+
import { Font } from "ikanban-ui/font"
|
|
8
|
+
import { ThemeProvider } from "ikanban-ui/theme"
|
|
9
9
|
import { MetaProvider } from "@solidjs/meta"
|
|
10
10
|
import { Navigate, Route, Router } from "@solidjs/router"
|
|
11
11
|
import { ErrorBoundary, type JSX, lazy, type ParentProps, Show, Suspense } from "solid-js"
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { ProviderAuthAuthorization } from "@opencode-ai/sdk/v2/client"
|
|
2
|
-
import { Button } from "
|
|
3
|
-
import { useDialog } from "
|
|
4
|
-
import { Dialog } from "
|
|
5
|
-
import { Icon } from "
|
|
6
|
-
import { IconButton } from "
|
|
7
|
-
import { List, type ListRef } from "
|
|
8
|
-
import { ProviderIcon } from "
|
|
9
|
-
import { Spinner } from "
|
|
10
|
-
import { TextField } from "
|
|
11
|
-
import { showToast } from "
|
|
2
|
+
import { Button } from "ikanban-ui/button"
|
|
3
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
4
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
5
|
+
import { Icon } from "ikanban-ui/icon"
|
|
6
|
+
import { IconButton } from "ikanban-ui/icon-button"
|
|
7
|
+
import { List, type ListRef } from "ikanban-ui/list"
|
|
8
|
+
import { ProviderIcon } from "ikanban-ui/provider-icon"
|
|
9
|
+
import { Spinner } from "ikanban-ui/spinner"
|
|
10
|
+
import { TextField } from "ikanban-ui/text-field"
|
|
11
|
+
import { showToast } from "ikanban-ui/toast"
|
|
12
12
|
import { createMemo, Match, onCleanup, onMount, Switch } from "solid-js"
|
|
13
13
|
import { createStore, produce } from "solid-js/store"
|
|
14
14
|
import { Link } from "@/components/link"
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Button } from "
|
|
2
|
-
import { useDialog } from "
|
|
3
|
-
import { Dialog } from "
|
|
4
|
-
import { IconButton } from "
|
|
5
|
-
import { ProviderIcon } from "
|
|
6
|
-
import { TextField } from "
|
|
7
|
-
import { showToast } from "
|
|
1
|
+
import { Button } from "ikanban-ui/button"
|
|
2
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
3
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
4
|
+
import { IconButton } from "ikanban-ui/icon-button"
|
|
5
|
+
import { ProviderIcon } from "ikanban-ui/provider-icon"
|
|
6
|
+
import { TextField } from "ikanban-ui/text-field"
|
|
7
|
+
import { showToast } from "ikanban-ui/toast"
|
|
8
8
|
import { For } from "solid-js"
|
|
9
9
|
import { createStore } from "solid-js/store"
|
|
10
10
|
import { Link } from "@/components/link"
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { Button } from "
|
|
2
|
-
import { useDialog } from "
|
|
3
|
-
import { Dialog } from "
|
|
4
|
-
import { TextField } from "
|
|
5
|
-
import { Icon } from "
|
|
1
|
+
import { Button } from "ikanban-ui/button"
|
|
2
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
3
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
4
|
+
import { TextField } from "ikanban-ui/text-field"
|
|
5
|
+
import { Icon } from "ikanban-ui/icon"
|
|
6
6
|
import { createMemo, For, Show } from "solid-js"
|
|
7
7
|
import { createStore } from "solid-js/store"
|
|
8
8
|
import { useGlobalSDK } from "@/context/global-sdk"
|
|
9
9
|
import { useGlobalSync } from "@/context/global-sync"
|
|
10
10
|
import { type LocalProject, getAvatarColors } from "@/context/layout"
|
|
11
|
-
import { getFilename } from "
|
|
12
|
-
import { Avatar } from "
|
|
11
|
+
import { getFilename } from "ikanban-utils/path"
|
|
12
|
+
import { Avatar } from "ikanban-ui/avatar"
|
|
13
13
|
import { useLanguage } from "@/context/language"
|
|
14
14
|
|
|
15
15
|
const AVATAR_COLOR_KEYS = ["pink", "mint", "orange", "purple", "cyan", "lime"] as const
|
|
@@ -3,13 +3,13 @@ import { useNavigate, useParams } from "@solidjs/router"
|
|
|
3
3
|
import { useSync } from "@/context/sync"
|
|
4
4
|
import { useSDK } from "@/context/sdk"
|
|
5
5
|
import { usePrompt } from "@/context/prompt"
|
|
6
|
-
import { useDialog } from "
|
|
7
|
-
import { Dialog } from "
|
|
8
|
-
import { List } from "
|
|
9
|
-
import { showToast } from "
|
|
6
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
7
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
8
|
+
import { List } from "ikanban-ui/list"
|
|
9
|
+
import { showToast } from "ikanban-ui/toast"
|
|
10
10
|
import { extractPromptFromParts } from "@/utils/prompt"
|
|
11
11
|
import type { TextPart as SDKTextPart } from "@opencode-ai/sdk/v2/client"
|
|
12
|
-
import { base64Encode } from "
|
|
12
|
+
import { base64Encode } from "ikanban-utils/encode"
|
|
13
13
|
import { useLanguage } from "@/context/language"
|
|
14
14
|
|
|
15
15
|
interface ForkableMessage {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Dialog } from "
|
|
2
|
-
import { List } from "
|
|
3
|
-
import { Switch } from "
|
|
4
|
-
import { Tooltip } from "
|
|
5
|
-
import { Button } from "
|
|
1
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
2
|
+
import { List } from "ikanban-ui/list"
|
|
3
|
+
import { Switch } from "ikanban-ui/switch"
|
|
4
|
+
import { Tooltip } from "ikanban-ui/tooltip"
|
|
5
|
+
import { Button } from "ikanban-ui/button"
|
|
6
6
|
import type { Component } from "solid-js"
|
|
7
7
|
import { useLocal } from "@/context/local"
|
|
8
8
|
import { popularProviders } from "@/hooks/use-providers"
|
|
9
9
|
import { useLanguage } from "@/context/language"
|
|
10
|
-
import { useDialog } from "
|
|
10
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
11
11
|
import { DialogSelectProvider } from "./dialog-select-provider"
|
|
12
12
|
|
|
13
13
|
export const DialogManageModels: Component = () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createSignal } from "solid-js"
|
|
2
|
-
import { Dialog } from "
|
|
3
|
-
import { Button } from "
|
|
4
|
-
import { useDialog } from "
|
|
2
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
3
|
+
import { Button } from "ikanban-ui/button"
|
|
4
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
5
5
|
import { useLanguage } from "@/context/language"
|
|
6
6
|
import { useSettings } from "@/context/settings"
|
|
7
7
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { useDialog } from "
|
|
2
|
-
import { Dialog } from "
|
|
3
|
-
import { FileIcon } from "
|
|
4
|
-
import { List } from "
|
|
5
|
-
import type { ListRef } from "
|
|
6
|
-
import { getDirectory, getFilename } from "
|
|
1
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
2
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
3
|
+
import { FileIcon } from "ikanban-ui/file-icon"
|
|
4
|
+
import { List } from "ikanban-ui/list"
|
|
5
|
+
import type { ListRef } from "ikanban-ui/list"
|
|
6
|
+
import { getDirectory, getFilename } from "ikanban-utils/path"
|
|
7
7
|
import fuzzysort from "fuzzysort"
|
|
8
8
|
import { createMemo, createResource, createSignal } from "solid-js"
|
|
9
9
|
import { useGlobalSDK } from "@/context/global-sdk"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { useDialog } from "
|
|
2
|
-
import { Dialog } from "
|
|
3
|
-
import { FileIcon } from "
|
|
4
|
-
import { Icon } from "
|
|
5
|
-
import { Keybind } from "
|
|
6
|
-
import { List } from "
|
|
7
|
-
import { base64Encode } from "
|
|
8
|
-
import { getDirectory, getFilename } from "
|
|
1
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
2
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
3
|
+
import { FileIcon } from "ikanban-ui/file-icon"
|
|
4
|
+
import { Icon } from "ikanban-ui/icon"
|
|
5
|
+
import { Keybind } from "ikanban-ui/keybind"
|
|
6
|
+
import { List } from "ikanban-ui/list"
|
|
7
|
+
import { base64Encode } from "ikanban-utils/encode"
|
|
8
|
+
import { getDirectory, getFilename } from "ikanban-utils/path"
|
|
9
9
|
import { useNavigate, useParams } from "@solidjs/router"
|
|
10
10
|
import { createMemo, createSignal, Match, onCleanup, Show, Switch } from "solid-js"
|
|
11
11
|
import { formatKeybind, useCommand, type CommandOption } from "@/context/command"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Component, createMemo, createSignal, Show } from "solid-js"
|
|
2
2
|
import { useSync } from "@/context/sync"
|
|
3
3
|
import { useSDK } from "@/context/sdk"
|
|
4
|
-
import { Dialog } from "
|
|
5
|
-
import { List } from "
|
|
6
|
-
import { Switch } from "
|
|
4
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
5
|
+
import { List } from "ikanban-ui/list"
|
|
6
|
+
import { Switch } from "ikanban-ui/switch"
|
|
7
7
|
import { useLanguage } from "@/context/language"
|
|
8
8
|
|
|
9
9
|
const statusLabels = {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Button } from "
|
|
2
|
-
import { useDialog } from "
|
|
3
|
-
import { Dialog } from "
|
|
4
|
-
import { List, type ListRef } from "
|
|
5
|
-
import { ProviderIcon } from "
|
|
6
|
-
import { Tag } from "
|
|
7
|
-
import { Tooltip } from "
|
|
1
|
+
import { Button } from "ikanban-ui/button"
|
|
2
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
3
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
4
|
+
import { List, type ListRef } from "ikanban-ui/list"
|
|
5
|
+
import { ProviderIcon } from "ikanban-ui/provider-icon"
|
|
6
|
+
import { Tag } from "ikanban-ui/tag"
|
|
7
|
+
import { Tooltip } from "ikanban-ui/tooltip"
|
|
8
8
|
import { type Component, Show } from "solid-js"
|
|
9
9
|
import { useLocal } from "@/context/local"
|
|
10
10
|
import { popularProviders, useProviders } from "@/hooks/use-providers"
|
|
@@ -2,14 +2,14 @@ import { Popover as Kobalte } from "@kobalte/core/popover"
|
|
|
2
2
|
import { Component, ComponentProps, createMemo, JSX, Show, ValidComponent } from "solid-js"
|
|
3
3
|
import { createStore } from "solid-js/store"
|
|
4
4
|
import { useLocal } from "@/context/local"
|
|
5
|
-
import { useDialog } from "
|
|
5
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
6
6
|
import { popularProviders } from "@/hooks/use-providers"
|
|
7
|
-
import { Button } from "
|
|
8
|
-
import { IconButton } from "
|
|
9
|
-
import { Tag } from "
|
|
10
|
-
import { Dialog } from "
|
|
11
|
-
import { List } from "
|
|
12
|
-
import { Tooltip } from "
|
|
7
|
+
import { Button } from "ikanban-ui/button"
|
|
8
|
+
import { IconButton } from "ikanban-ui/icon-button"
|
|
9
|
+
import { Tag } from "ikanban-ui/tag"
|
|
10
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
11
|
+
import { List } from "ikanban-ui/list"
|
|
12
|
+
import { Tooltip } from "ikanban-ui/tooltip"
|
|
13
13
|
import { DialogSelectProvider } from "./dialog-select-provider"
|
|
14
14
|
import { DialogManageModels } from "./dialog-manage-models"
|
|
15
15
|
import { ModelTooltip } from "./model-tooltip"
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Component, Show } from "solid-js"
|
|
2
|
-
import { useDialog } from "
|
|
2
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
3
3
|
import { popularProviders, useProviders } from "@/hooks/use-providers"
|
|
4
|
-
import { Dialog } from "
|
|
5
|
-
import { List } from "
|
|
6
|
-
import { Tag } from "
|
|
7
|
-
import { ProviderIcon } from "
|
|
4
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
5
|
+
import { List } from "ikanban-ui/list"
|
|
6
|
+
import { Tag } from "ikanban-ui/tag"
|
|
7
|
+
import { ProviderIcon } from "ikanban-ui/provider-icon"
|
|
8
8
|
import { DialogConnectProvider } from "./dialog-connect-provider"
|
|
9
9
|
import { useLanguage } from "@/context/language"
|
|
10
10
|
import { DialogCustomProvider } from "./dialog-custom-provider"
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Button } from "
|
|
2
|
-
import { useDialog } from "
|
|
3
|
-
import { Dialog } from "
|
|
4
|
-
import { DropdownMenu } from "
|
|
5
|
-
import { Icon } from "
|
|
6
|
-
import { IconButton } from "
|
|
7
|
-
import { List } from "
|
|
8
|
-
import { TextField } from "
|
|
9
|
-
import { showToast } from "
|
|
1
|
+
import { Button } from "ikanban-ui/button"
|
|
2
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
3
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
4
|
+
import { DropdownMenu } from "ikanban-ui/dropdown-menu"
|
|
5
|
+
import { Icon } from "ikanban-ui/icon"
|
|
6
|
+
import { IconButton } from "ikanban-ui/icon-button"
|
|
7
|
+
import { List } from "ikanban-ui/list"
|
|
8
|
+
import { TextField } from "ikanban-ui/text-field"
|
|
9
|
+
import { showToast } from "ikanban-ui/toast"
|
|
10
10
|
import { useNavigate } from "@solidjs/router"
|
|
11
11
|
import { createEffect, createMemo, createResource, onCleanup, Show } from "solid-js"
|
|
12
12
|
import { createStore, reconcile } from "solid-js/store"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component } from "solid-js"
|
|
2
|
-
import { Dialog } from "
|
|
3
|
-
import { Tabs } from "
|
|
4
|
-
import { Icon } from "
|
|
2
|
+
import { Dialog } from "ikanban-ui/dialog"
|
|
3
|
+
import { Tabs } from "ikanban-ui/tabs"
|
|
4
|
+
import { Icon } from "ikanban-ui/icon"
|
|
5
5
|
import { useLanguage } from "@/context/language"
|
|
6
6
|
import { usePlatform } from "@/context/platform"
|
|
7
7
|
import { SettingsGeneral } from "./settings-general"
|
|
@@ -20,15 +20,15 @@ beforeAll(async () => {
|
|
|
20
20
|
},
|
|
21
21
|
}),
|
|
22
22
|
}))
|
|
23
|
-
mock.module("
|
|
23
|
+
mock.module("ikanban-ui/collapsible", () => ({
|
|
24
24
|
Collapsible: {
|
|
25
25
|
Trigger: (props: { children?: unknown }) => props.children,
|
|
26
26
|
Content: (props: { children?: unknown }) => props.children,
|
|
27
27
|
},
|
|
28
28
|
}))
|
|
29
|
-
mock.module("
|
|
30
|
-
mock.module("
|
|
31
|
-
mock.module("
|
|
29
|
+
mock.module("ikanban-ui/file-icon", () => ({ FileIcon: () => null }))
|
|
30
|
+
mock.module("ikanban-ui/icon", () => ({ Icon: () => null }))
|
|
31
|
+
mock.module("ikanban-ui/tooltip", () => ({ Tooltip: (props: { children?: unknown }) => props.children }))
|
|
32
32
|
const mod = await import("./file-tree")
|
|
33
33
|
shouldListRoot = mod.shouldListRoot
|
|
34
34
|
shouldListExpanded = mod.shouldListExpanded
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useFile } from "@/context/file"
|
|
2
2
|
import { encodeFilePath } from "@/context/file/path"
|
|
3
|
-
import { Collapsible } from "
|
|
4
|
-
import { FileIcon } from "
|
|
5
|
-
import { Icon } from "
|
|
3
|
+
import { Collapsible } from "ikanban-ui/collapsible"
|
|
4
|
+
import { FileIcon } from "ikanban-ui/file-icon"
|
|
5
|
+
import { Icon } from "ikanban-ui/icon"
|
|
6
6
|
import {
|
|
7
7
|
createEffect,
|
|
8
8
|
createMemo,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { onCleanup, onMount } from "solid-js"
|
|
2
|
-
import { showToast } from "
|
|
2
|
+
import { showToast } from "ikanban-ui/toast"
|
|
3
3
|
import { usePrompt, type ContentPart, type ImageAttachmentPart } from "@/context/prompt"
|
|
4
4
|
import { useLanguage } from "@/context/language"
|
|
5
5
|
import { uuid } from "@/utils/uuid"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getFilename } from "
|
|
1
|
+
import { getFilename } from "ikanban-utils/path"
|
|
2
2
|
import { type AgentPartInput, type FilePartInput, type Part, type TextPartInput } from "@opencode-ai/sdk/v2/client"
|
|
3
3
|
import type { FileSelection } from "@/context/file"
|
|
4
4
|
import { encodeFilePath } from "@/context/file/path"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Component, For, Show } from "solid-js"
|
|
2
|
-
import { FileIcon } from "
|
|
3
|
-
import { IconButton } from "
|
|
4
|
-
import { Tooltip } from "
|
|
5
|
-
import { getDirectory, getFilename, getFilenameTruncated } from "
|
|
2
|
+
import { FileIcon } from "ikanban-ui/file-icon"
|
|
3
|
+
import { IconButton } from "ikanban-ui/icon-button"
|
|
4
|
+
import { Tooltip } from "ikanban-ui/tooltip"
|
|
5
|
+
import { getDirectory, getFilename, getFilenameTruncated } from "ikanban-utils/path"
|
|
6
6
|
import type { ContextItem } from "@/context/prompt"
|
|
7
7
|
|
|
8
8
|
type PromptContextItem = ContextItem & { key: string }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, For, Match, Show, Switch } from "solid-js"
|
|
2
|
-
import { FileIcon } from "
|
|
3
|
-
import { Icon } from "
|
|
4
|
-
import { getDirectory, getFilename } from "
|
|
2
|
+
import { FileIcon } from "ikanban-ui/file-icon"
|
|
3
|
+
import { Icon } from "ikanban-ui/icon"
|
|
4
|
+
import { getDirectory, getFilename } from "ikanban-utils/path"
|
|
5
5
|
|
|
6
6
|
export type AtOption =
|
|
7
7
|
| { type: "agent"; name: string; display: string }
|
|
@@ -50,11 +50,11 @@ beforeAll(async () => {
|
|
|
50
50
|
},
|
|
51
51
|
}))
|
|
52
52
|
|
|
53
|
-
mock.module("
|
|
53
|
+
mock.module("ikanban-ui/toast", () => ({
|
|
54
54
|
showToast: () => 0,
|
|
55
55
|
}))
|
|
56
56
|
|
|
57
|
-
mock.module("
|
|
57
|
+
mock.module("ikanban-utils/encode", () => ({
|
|
58
58
|
base64Encode: (value: string) => value,
|
|
59
59
|
}))
|
|
60
60
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Message } from "@opencode-ai/sdk/v2/client"
|
|
2
|
-
import { showToast } from "
|
|
3
|
-
import { base64Encode } from "
|
|
2
|
+
import { showToast } from "ikanban-ui/toast"
|
|
3
|
+
import { base64Encode } from "ikanban-utils/encode"
|
|
4
4
|
import { useNavigate, useParams } from "@solidjs/router"
|
|
5
5
|
import type { Accessor } from "solid-js"
|
|
6
6
|
import type { FileSelection } from "@/context/file"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useFilteredList } from "
|
|
2
|
-
import { useSpring } from "
|
|
1
|
+
import { useFilteredList } from "ikanban-ui/hooks"
|
|
2
|
+
import { useSpring } from "ikanban-ui/motion-spring"
|
|
3
3
|
import { createEffect, on, Component, Show, onCleanup, Switch, Match, createMemo, createSignal } from "solid-js"
|
|
4
4
|
import { createStore } from "solid-js/store"
|
|
5
5
|
import { createFocusSignal } from "@solid-primitives/active-element"
|
|
@@ -20,15 +20,15 @@ import { useSDK } from "@/context/sdk"
|
|
|
20
20
|
import { useParams } from "@solidjs/router"
|
|
21
21
|
import { useSync } from "@/context/sync"
|
|
22
22
|
import { useComments } from "@/context/comments"
|
|
23
|
-
import { Button } from "
|
|
24
|
-
import { DockShellForm, DockTray } from "
|
|
25
|
-
import { Icon } from "
|
|
26
|
-
import { ProviderIcon } from "
|
|
27
|
-
import { Tooltip, TooltipKeybind } from "
|
|
28
|
-
import { IconButton } from "
|
|
29
|
-
import { Select } from "
|
|
30
|
-
import { RadioGroup } from "
|
|
31
|
-
import { useDialog } from "
|
|
23
|
+
import { Button } from "ikanban-ui/button"
|
|
24
|
+
import { DockShellForm, DockTray } from "ikanban-ui/dock-surface"
|
|
25
|
+
import { Icon } from "ikanban-ui/icon"
|
|
26
|
+
import { ProviderIcon } from "ikanban-ui/provider-icon"
|
|
27
|
+
import { Tooltip, TooltipKeybind } from "ikanban-ui/tooltip"
|
|
28
|
+
import { IconButton } from "ikanban-ui/icon-button"
|
|
29
|
+
import { Select } from "ikanban-ui/select"
|
|
30
|
+
import { RadioGroup } from "ikanban-ui/radio-group"
|
|
31
|
+
import { useDialog } from "ikanban-ui/context/dialog"
|
|
32
32
|
import { ModelSelectorPopover } from "@/components/dialog-select-model"
|
|
33
33
|
import { DialogSelectModelUnpaid } from "@/components/dialog-select-model-unpaid"
|
|
34
34
|
import { useProviders } from "@/hooks/use-providers"
|
|
@@ -54,7 +54,7 @@ import { PromptContextItems } from "./prompt-input/context-items"
|
|
|
54
54
|
import { PromptImageAttachments } from "./prompt-input/image-attachments"
|
|
55
55
|
import { PromptDragOverlay } from "./prompt-input/drag-overlay"
|
|
56
56
|
import { promptPlaceholder } from "./prompt-input/placeholder"
|
|
57
|
-
import { ImagePreview } from "
|
|
57
|
+
import { ImagePreview } from "ikanban-ui/image-preview"
|
|
58
58
|
|
|
59
59
|
interface PromptInputProps {
|
|
60
60
|
class?: string
|
|
@@ -3,15 +3,15 @@ import type { JSX } from "solid-js"
|
|
|
3
3
|
import { useParams } from "@solidjs/router"
|
|
4
4
|
import { useSync } from "@/context/sync"
|
|
5
5
|
import { useLayout } from "@/context/layout"
|
|
6
|
-
import { checksum } from "
|
|
7
|
-
import { findLast } from "
|
|
6
|
+
import { checksum } from "ikanban-utils/encode"
|
|
7
|
+
import { findLast } from "ikanban-utils/array"
|
|
8
8
|
import { same } from "@/utils/same"
|
|
9
|
-
import { Icon } from "
|
|
10
|
-
import { Accordion } from "
|
|
11
|
-
import { StickyAccordionHeader } from "
|
|
12
|
-
import { File } from "
|
|
13
|
-
import { Markdown } from "
|
|
14
|
-
import { ScrollView } from "
|
|
9
|
+
import { Icon } from "ikanban-ui/icon"
|
|
10
|
+
import { Accordion } from "ikanban-ui/accordion"
|
|
11
|
+
import { StickyAccordionHeader } from "ikanban-ui/sticky-accordion-header"
|
|
12
|
+
import { File } from "ikanban-ui/file"
|
|
13
|
+
import { Markdown } from "ikanban-ui/markdown"
|
|
14
|
+
import { ScrollView } from "ikanban-ui/scroll-view"
|
|
15
15
|
import type { Message, Part, UserMessage } from "@opencode-ai/sdk/v2/client"
|
|
16
16
|
import { useLanguage } from "@/context/language"
|
|
17
17
|
import { getSessionContextMetrics } from "./session-context-metrics"
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { AppIcon } from "
|
|
2
|
-
import { Button } from "
|
|
3
|
-
import { DropdownMenu } from "
|
|
4
|
-
import { Icon } from "
|
|
5
|
-
import { IconButton } from "
|
|
6
|
-
import { Keybind } from "
|
|
7
|
-
import { Popover } from "
|
|
8
|
-
import { Spinner } from "
|
|
9
|
-
import { TextField } from "
|
|
10
|
-
import { showToast } from "
|
|
11
|
-
import { Tooltip, TooltipKeybind } from "
|
|
12
|
-
import { getFilename } from "
|
|
1
|
+
import { AppIcon } from "ikanban-ui/app-icon"
|
|
2
|
+
import { Button } from "ikanban-ui/button"
|
|
3
|
+
import { DropdownMenu } from "ikanban-ui/dropdown-menu"
|
|
4
|
+
import { Icon } from "ikanban-ui/icon"
|
|
5
|
+
import { IconButton } from "ikanban-ui/icon-button"
|
|
6
|
+
import { Keybind } from "ikanban-ui/keybind"
|
|
7
|
+
import { Popover } from "ikanban-ui/popover"
|
|
8
|
+
import { Spinner } from "ikanban-ui/spinner"
|
|
9
|
+
import { TextField } from "ikanban-ui/text-field"
|
|
10
|
+
import { showToast } from "ikanban-ui/toast"
|
|
11
|
+
import { Tooltip, TooltipKeybind } from "ikanban-ui/tooltip"
|
|
12
|
+
import { getFilename } from "ikanban-utils/path"
|
|
13
13
|
import { useParams } from "@solidjs/router"
|
|
14
14
|
import { createEffect, createMemo, For, onCleanup, Show } from "solid-js"
|
|
15
15
|
import { createStore } from "solid-js/store"
|
|
@@ -3,8 +3,8 @@ import { DateTime } from "luxon"
|
|
|
3
3
|
import { useSync } from "@/context/sync"
|
|
4
4
|
import { useSDK } from "@/context/sdk"
|
|
5
5
|
import { useLanguage } from "@/context/language"
|
|
6
|
-
import { Icon } from "
|
|
7
|
-
import { getDirectory, getFilename } from "
|
|
6
|
+
import { Icon } from "ikanban-ui/icon"
|
|
7
|
+
import { getDirectory, getFilename } from "ikanban-utils/path"
|
|
8
8
|
|
|
9
9
|
const MAIN_WORKTREE = "main"
|
|
10
10
|
const CREATE_WORKTREE = "create"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createMemo, Show } from "solid-js"
|
|
2
2
|
import type { JSX } from "solid-js"
|
|
3
3
|
import { createSortable } from "@thisbeyond/solid-dnd"
|
|
4
|
-
import { FileIcon } from "
|
|
5
|
-
import { IconButton } from "
|
|
6
|
-
import { TooltipKeybind } from "
|
|
7
|
-
import { Tabs } from "
|
|
8
|
-
import { getFilename } from "
|
|
4
|
+
import { FileIcon } from "ikanban-ui/file-icon"
|
|
5
|
+
import { IconButton } from "ikanban-ui/icon-button"
|
|
6
|
+
import { TooltipKeybind } from "ikanban-ui/tooltip"
|
|
7
|
+
import { Tabs } from "ikanban-ui/tabs"
|
|
8
|
+
import { getFilename } from "ikanban-utils/path"
|
|
9
9
|
import { useFile } from "@/context/file"
|
|
10
10
|
import { useLanguage } from "@/context/language"
|
|
11
11
|
import { useCommand } from "@/context/command"
|
|
@@ -2,10 +2,10 @@ import type { JSX } from "solid-js"
|
|
|
2
2
|
import { Show, createEffect, onCleanup } from "solid-js"
|
|
3
3
|
import { createStore } from "solid-js/store"
|
|
4
4
|
import { createSortable } from "@thisbeyond/solid-dnd"
|
|
5
|
-
import { IconButton } from "
|
|
6
|
-
import { Tabs } from "
|
|
7
|
-
import { DropdownMenu } from "
|
|
8
|
-
import { Icon } from "
|
|
5
|
+
import { IconButton } from "ikanban-ui/icon-button"
|
|
6
|
+
import { Tabs } from "ikanban-ui/tabs"
|
|
7
|
+
import { DropdownMenu } from "ikanban-ui/dropdown-menu"
|
|
8
|
+
import { Icon } from "ikanban-ui/icon"
|
|
9
9
|
import { useTerminal, type LocalPTY } from "@/context/terminal"
|
|
10
10
|
import { useLanguage } from "@/context/language"
|
|
11
11
|
|