Skip to content

Commit d31412b

Browse files
committed
chore: remove prism view, update CI workflow, cleanup
1 parent 6bdf50a commit d31412b

13 files changed

Lines changed: 146 additions & 464 deletions

File tree

.github/workflows/release.yml

Lines changed: 58 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -63,16 +63,43 @@ jobs:
6363
src-tauri/target/release/bundle/appimage/*.AppImage
6464
src-tauri/target/release/bundle/deb/*.deb
6565
66-
- name: Upload to release
67-
if: startsWith(github.ref, 'refs/tags/')
68-
uses: softprops/action-gh-release@v2
66+
build-macos:
67+
runs-on: macos-latest
68+
steps:
69+
- uses: actions/checkout@v4
70+
71+
- uses: pnpm/action-setup@v4
6972
with:
70-
files: |
71-
src-tauri/target/release/bundle/appimage/*.AppImage
72-
src-tauri/target/release/bundle/deb/*.deb
73+
version: 9
74+
75+
- uses: actions/setup-node@v4
76+
with:
77+
node-version: 20
78+
cache: 'pnpm'
79+
80+
- uses: dtolnay/rust-toolchain@stable
81+
82+
- uses: Swatinem/rust-cache@v2
83+
with:
84+
workspaces: src-tauri
85+
86+
- name: Install dependencies
87+
run: pnpm install --frozen-lockfile
88+
89+
- name: Install Tauri CLI
90+
run: cargo install tauri-cli --version "^2"
7391

74-
# macOS DMG is signed + notarized locally (requires Developer ID certificate)
75-
# Upload manually: build → sign → notarize → staple → gh release upload
92+
- name: Build Tauri (macOS)
93+
run: cargo-tauri build --bundles dmg
94+
env:
95+
CI: true
96+
97+
- name: Upload macOS artifacts
98+
uses: actions/upload-artifact@v4
99+
with:
100+
name: macos-builds
101+
path: |
102+
src-tauri/target/release/bundle/dmg/*.dmg
76103
77104
build-windows:
78105
runs-on: windows-latest
@@ -113,10 +140,29 @@ jobs:
113140
src-tauri/target/release/bundle/msi/*.msi
114141
src-tauri/target/release/bundle/nsis/*.exe
115142
116-
- name: Upload to release
117-
if: startsWith(github.ref, 'refs/tags/')
143+
publish-release:
144+
runs-on: ubuntu-latest
145+
needs:
146+
- build-linux
147+
- build-macos
148+
- build-windows
149+
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
150+
steps:
151+
- name: Download bundled artifacts
152+
uses: actions/download-artifact@v4
153+
with:
154+
path: dist
155+
merge-multiple: true
156+
157+
- name: Publish GitHub release assets
118158
uses: softprops/action-gh-release@v2
119159
with:
160+
tag_name: ${{ github.event.inputs.version || github.ref_name }}
161+
name: ${{ github.event.inputs.version || github.ref_name }}
120162
files: |
121-
src-tauri/target/release/bundle/msi/*.msi
122-
src-tauri/target/release/bundle/nsis/*.exe
163+
dist/*.AppImage
164+
dist/*.deb
165+
dist/*.dmg
166+
dist/*.exe
167+
dist/*.msi
168+
fail_on_unmatched_files: true

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
### Changed
1212

13-
- **Mobile tabs curated** — Chat, Editor, Git, Workshop, Settings (dropped desktop-only views: Skills, Prism, Preview, Diff)
13+
- **Mobile tabs curated** — Chat, Editor, Git, Workshop, Settings (dropped desktop-only views: Skills, Preview, Diff)
1414
- **44px touch targets** — Tab bar buttons meet iOS HIG minimum with `touch-manipulation` CSS
1515
- **Hidden model picker on mobile** — Mode selector (Ask/Agent/Plan) stays, model name hidden to save space
1616
- **Cleaner connect form** — Icon-prefixed inputs (globe + lock), focus rings, always-visible form

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ A lightweight, AI-native code editor powered by [OpenClaw](https://github.com/op
3737
3838
## Quick Start
3939

40-
### Desktop (macOS)
40+
### Desktop
4141

42-
Download the [latest release](https://github.com/OpenKnots/code-editor/releases/latest) (.dmg).
42+
Download the [latest release](https://github.com/OpenKnots/code-editor/releases/latest) for your platform (`.dmg`, `.exe`, `.msi`, `.AppImage`, `.deb`).
4343

4444
After installing, macOS may show _"KnotCode is damaged"_ — this is because the app isn't notarized with Apple (yet). Fix it with:
4545

app/globals.css

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,8 +1071,6 @@ body {
10711071
notch/home indicator while the native WebView fills the screen. */
10721072
@media (max-width: 768px) {
10731073
.app-shell {
1074-
padding-top: env(safe-area-inset-top, 0px);
1075-
padding-bottom: env(safe-area-inset-bottom, 0px);
10761074
padding-left: env(safe-area-inset-left, 0px);
10771075
padding-right: env(safe-area-inset-right, 0px);
10781076
}

app/page.tsx

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,54 +33,53 @@ import type { AppMode } from '@/lib/mode-registry'
3333
import { openNewEditorInstance } from '@/lib/tauri'
3434

3535
const GitSidebarPanel = dynamic(
36-
() => import('@/components/git-sidebar-panel').then((m) => ({ default: m.GitSidebarPanel })),
36+
() => import('@/components/git-sidebar-panel').then((m) => m.GitSidebarPanel),
3737
{ ssr: false },
3838
)
3939

4040
// Overlay modals — lazy loaded
4141
const QuickOpen = dynamic(
42-
() => import('@/components/quick-open').then((m) => ({ default: m.QuickOpen })),
42+
() => import('@/components/quick-open').then((m) => m.QuickOpen),
4343
{ ssr: false },
4444
)
4545
const GlobalSearch = dynamic(
46-
() => import('@/components/global-search').then((m) => ({ default: m.GlobalSearch })),
46+
() => import('@/components/global-search').then((m) => m.GlobalSearch),
4747
{ ssr: false },
4848
)
4949
const CommandPalette = dynamic(
50-
() => import('@/components/command-palette').then((m) => ({ default: m.CommandPalette })),
50+
() => import('@/components/command-palette').then((m) => m.CommandPalette),
5151
{ ssr: false },
5252
)
5353
const ShortcutsOverlay = dynamic(
54-
() => import('@/components/shortcuts-overlay').then((m) => ({ default: m.ShortcutsOverlay })),
54+
() => import('@/components/shortcuts-overlay').then((m) => m.ShortcutsOverlay),
5555
{ ssr: false },
5656
)
5757
const TerminalPanel = dynamic(
58-
() => import('@/components/terminal-panel').then((m) => ({ default: m.TerminalPanel })),
58+
() => import('@/components/terminal-panel').then((m) => m.TerminalPanel),
5959
{ ssr: false },
6060
)
6161
const GatewayTerminalLazy = dynamic(
62-
() => import('@/components/gateway-terminal').then((m) => ({ default: m.GatewayTerminal })),
62+
() => import('@/components/gateway-terminal').then((m) => m.GatewayTerminal),
6363
{ ssr: false },
6464
)
6565
const PipWindow = dynamic(
66-
() => import('@/components/preview/pip-window').then((m) => ({ default: m.PipWindow })),
66+
() => import('@/components/preview/pip-window').then((m) => m.PipWindow),
6767
{ ssr: false },
6868
)
6969
const WidgetPipWindow = dynamic(
70-
() =>
71-
import('@/components/plugins/widget-pip-window').then((m) => ({ default: m.WidgetPipWindow })),
70+
() => import('@/components/plugins/widget-pip-window').then((m) => m.WidgetPipWindow),
7271
{ ssr: false },
7372
)
7473
const SettingsPanel = dynamic(
75-
() => import('@/components/settings-panel').then((m) => ({ default: m.SettingsPanel })),
74+
() => import('@/components/settings-panel').then((m) => m.SettingsPanel),
7675
{ ssr: false },
7776
)
7877
const OnboardingTour = dynamic(
79-
() => import('@/components/onboarding-tour').then((m) => ({ default: m.OnboardingTour })),
78+
() => import('@/components/onboarding-tour').then((m) => m.OnboardingTour),
8079
{ ssr: false },
8180
)
8281
const PluginSlotRenderer = dynamic(
83-
() => import('@/context/plugin-context').then((m) => ({ default: m.PluginSlotRenderer })),
82+
() => import('@/context/plugin-context').then((m) => m.PluginSlotRenderer),
8483
{ ssr: false },
8584
)
8685

@@ -92,7 +91,6 @@ const VIEW_ICONS: Record<string, { icon: string; label: string }> = {
9291
git: { icon: 'lucide:git-branch', label: 'Git' },
9392
workshop: { icon: 'lucide:bot', label: 'Workshop' },
9493
skills: { icon: 'lucide:sparkles', label: 'Skills' },
95-
prism: { icon: 'lucide:file-text', label: 'Prism' },
9694
settings: { icon: 'lucide:settings', label: 'Settings' },
9795
}
9896

@@ -134,10 +132,9 @@ export default function EditorLayout() {
134132
const terminalRefreshToken = mode
135133
const useCenteredTerminal = modeSpec.terminalCenter && activeView === 'editor'
136134
const terminalStartupCommand = useCenteredTerminal ? 'openclaw tui' : undefined
137-
const usePrismShell = activeView === 'prism'
138135
const mobileViewTabs = useMemo(() => {
139136
// On mobile, curate tabs to useful views + always include settings
140-
const mobile = visibleViews.filter(v => !['prism', 'preview', 'diff', 'skills'].includes(v))
137+
const mobile = visibleViews.filter(v => !['preview', 'diff', 'skills'].includes(v))
141138
if (!mobile.includes('settings')) mobile.push('settings')
142139
return mobile.slice(0, 5)
143140
}, [visibleViews])
@@ -150,7 +147,7 @@ export default function EditorLayout() {
150147
[repo?.fullName, localRootPath],
151148
)
152149
const showMobileBottomTabs = isMobile && !modeSpec.terminalCenter && keyboardOffset === 0
153-
const showMobileSidebarButton = isMobile && mode !== 'tui' && !usePrismShell
150+
const showMobileSidebarButton = isMobile && mode !== 'tui'
154151
const showWorkflowEditorTabs =
155152
!isMobile && !modeSpec.terminalCenter && activeView === 'workshop' && files.length > 0
156153
const mobileTerminalOffset = showMobileBottomTabs
@@ -202,10 +199,10 @@ export default function EditorLayout() {
202199
}, [])
203200

204201
useEffect(() => {
205-
if (!isMobile || mode === 'tui' || usePrismShell) {
202+
if (!isMobile || mode === 'tui') {
206203
setMobileSidebarOpen(false)
207204
}
208-
}, [isMobile, mode, usePrismShell])
205+
}, [isMobile, mode])
209206

210207
// ─── iOS keyboard: shrink layout when virtual keyboard opens ───
211208
useEffect(() => {
@@ -501,7 +498,7 @@ export default function EditorLayout() {
501498
)}
502499

503500
{/* Workspace Sidebar — always visible in chat mode, toggleable otherwise */}
504-
{!isMobile && mode !== 'tui' && !usePrismShell && (
501+
{!isMobile && mode !== 'tui' && (
505502
<WorkspaceSidebar
506503
collapsed={mode !== 'chat' && sidebarCollapsed}
507504
onToggle={() => layout.toggle('sidebar')}
@@ -911,7 +908,7 @@ export default function EditorLayout() {
911908
</div>
912909

913910
{/* Git sidebar panel — Codex-style always-visible right panel */}
914-
{!isMobile && mode !== 'tui' && !usePrismShell && layout.isVisible('gitPanel') && (
911+
{!isMobile && mode !== 'tui' && layout.isVisible('gitPanel') && (
915912
<GitSidebarPanel />
916913
)}
917914

components/view-router.tsx

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,31 @@ import { useView } from '@/context/view-context'
66
import { ErrorBoundary } from '@/components/error-boundary'
77

88
const EditorView = dynamic(
9-
() => import('@/components/views/editor-view').then((m) => ({ default: m.EditorView })),
9+
() => import('@/components/views/editor-view').then((m) => m.EditorView),
1010
{ ssr: false },
1111
)
1212
const GitView = dynamic(
13-
() => import('@/components/views/git-view').then((m) => ({ default: m.GitView })),
13+
() => import('@/components/views/git-view').then((m) => m.GitView),
1414
{ ssr: false },
1515
)
1616
const WorkshopView = dynamic(
17-
() => import('@/components/views/workshop-view').then((m) => ({ default: m.WorkshopView })),
17+
() => import('@/components/views/workshop-view').then((m) => m.WorkshopView),
1818
{ ssr: false },
1919
)
2020
const SkillsView = dynamic(
21-
() => import('@/components/views/skills-view').then((m) => ({ default: m.SkillsView })),
22-
{ ssr: false },
23-
)
24-
const PrismView = dynamic(
25-
() => import('@/components/views/prism-view').then((m) => ({ default: m.PrismView })),
21+
() => import('@/components/views/skills-view').then((m) => m.SkillsView),
2622
{ ssr: false },
2723
)
2824
const SettingsPanel = dynamic(
29-
() => import('@/components/settings-panel').then((m) => ({ default: m.SettingsPanel })),
25+
() => import('@/components/settings-panel').then((m) => m.SettingsPanel),
3026
{ ssr: false },
3127
)
3228
const PreviewPanel = dynamic(
33-
() => import('@/components/preview/preview-panel').then((m) => ({ default: m.PreviewPanel })),
29+
() => import('@/components/preview/preview-panel').then((m) => m.PreviewPanel),
3430
{ ssr: false },
3531
)
3632
const AgentPanel = dynamic(
37-
() => import('@/components/agent-panel').then((m) => ({ default: m.AgentPanel })),
33+
() => import('@/components/agent-panel').then((m) => m.AgentPanel),
3834
{ ssr: false },
3935
)
4036

@@ -45,7 +41,6 @@ const VIEW_ICONS: Record<string, { label: string }> = {
4541
git: { label: 'Git' },
4642
workshop: { label: 'Workshop' },
4743
skills: { label: 'Skills' },
48-
prism: { label: 'Prism' },
4944
settings: { label: 'Settings' },
5045
}
5146

@@ -91,7 +86,6 @@ export function ViewRouter() {
9186
{activeView === 'git' && <GitView />}
9287
{activeView === 'workshop' && <WorkshopView />}
9388
{activeView === 'skills' && <SkillsView />}
94-
{activeView === 'prism' && <PrismView />}
9589
{activeView === 'settings' && (
9690
<div className="flex-1 flex items-center justify-center">
9791
<SettingsPanel open={true} onClose={() => setView('editor')} />

components/views/editor-view.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ import { isTauri } from '@/lib/tauri'
1414
import { emit } from '@/lib/events'
1515

1616
const FileExplorer = dynamic(
17-
() => import('@/components/file-explorer').then((m) => ({ default: m.FileExplorer })),
17+
() => import('@/components/file-explorer').then((m) => m.FileExplorer),
1818
{ ssr: false },
1919
)
2020
const CodeEditor = dynamic(
21-
() => import('@/components/code-editor').then((m) => ({ default: m.CodeEditor })),
21+
() => import('@/components/code-editor').then((m) => m.CodeEditor),
2222
{ ssr: false },
2323
)
2424
const AgentPanel = dynamic(
25-
() => import('@/components/agent-panel').then((m) => ({ default: m.AgentPanel })),
25+
() => import('@/components/agent-panel').then((m) => m.AgentPanel),
2626
{ ssr: false },
2727
)
2828

0 commit comments

Comments
 (0)