Skip to content

Commit 6e8ecad

Browse files
authored
Merge branch 'main' into okcode/replace-themes-cursor
2 parents 29183a5 + 5652ade commit 6e8ecad

19 files changed

Lines changed: 1331 additions & 324 deletions
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
- generic [ref=e1]:
2+
- generic [ref=e3]:
3+
- generic [ref=e6]:
4+
- generic [ref=e9] [cursor=pointer]:
5+
- generic [ref=e10]: OK
6+
- generic [ref=e11]: Code
7+
- generic [ref=e12]: Dev
8+
- generic [ref=e15]:
9+
- generic [ref=e16]:
10+
- generic [ref=e17]: Projects
11+
- generic [ref=e18]:
12+
- button [ref=e19] [cursor=pointer]:
13+
- img [ref=e20]
14+
- button [ref=e23] [cursor=pointer]:
15+
- img [ref=e24]
16+
- generic [ref=e25]: No projects yet
17+
- separator [ref=e26]
18+
- list [ref=e28]:
19+
- listitem [ref=e29]:
20+
- button [ref=e30]:
21+
- img [ref=e31]
22+
- generic [ref=e34]: Spotify
23+
- listitem [ref=e35]:
24+
- button [ref=e36] [cursor=pointer]:
25+
- img [ref=e37]
26+
- generic [ref=e41]: PR Review
27+
- listitem [ref=e42]:
28+
- button [ref=e43] [cursor=pointer]:
29+
- img [ref=e44]
30+
- generic [ref=e48]: Merge Conflicts
31+
- listitem [ref=e49]:
32+
- button [ref=e50] [cursor=pointer]:
33+
- img [ref=e51]
34+
- generic [ref=e54]: Settings
35+
- listitem [ref=e55]:
36+
- generic [ref=e56]:
37+
- button [ref=e57]:
38+
- img [ref=e58]
39+
- button [ref=e60]:
40+
- img [ref=e61]
41+
- button [ref=e67]:
42+
- img [ref=e68]
43+
- button [ref=e70]
44+
- generic [ref=e74]:
45+
- generic [ref=e75]:
46+
- paragraph [ref=e76]: Start here
47+
- heading [level=1] [ref=e77]: Pick up a project or start a fresh thread.
48+
- paragraph [ref=e78]: Open a project folder, jump back into something recent, or create a new thread without digging through the sidebar first.
49+
- generic [ref=e79]:
50+
- button [ref=e80]:
51+
- img
52+
- text: Open project folder
53+
- button [ref=e81]:
54+
- img
55+
- text: Open project folder
56+
- button [ref=e82]:
57+
- img
58+
- text: Review pull requests
59+
- button [ref=e83]:
60+
- img
61+
- text: Resolve merge conflicts
62+
- button [ref=e84]:
63+
- img
64+
- text: Settings
65+
- complementary [ref=e85]:
66+
- generic [ref=e87]:
67+
- heading [level=2] [ref=e88]: Recent projects
68+
- paragraph [ref=e89]: Jump back in without hunting through the sidebar.
69+
- generic [ref=e90]: No projects yet. Open your first folder to get started.
70+
- generic:
71+
- region "Notifications"
72+
- generic:
73+
- region "Notifications"
74+
- dialog "Welcome to OK Code" [ref=e94]:
75+
- generic [ref=e97]:
76+
- img [ref=e99]
77+
- heading "Welcome to OK Code" [level=2] [ref=e102]
78+
- paragraph [ref=e103]: Your AI-powered coding companion. Let's take a quick tour of the features that will supercharge your workflow.
79+
- list [ref=e104]:
80+
- listitem [ref=e105]: Work alongside AI agents that read, write, and reason about your code
81+
- listitem [ref=e107]: Every conversation runs in an isolated git worktree by default
82+
- listitem [ref=e109]: This tour takes about a minute — you can skip at any time
83+
- generic [ref=e111]:
84+
- group "Onboarding progress" [ref=e112]:
85+
- 'button "Go to step 1 of 8: Welcome to OK Code" [active] [ref=e113]'
86+
- 'button "Go to step 2 of 8: AI-Powered Conversations" [ref=e114]'
87+
- 'button "Go to step 3 of 8: Built-in Git Workflows" [ref=e115]'
88+
- 'button "Go to step 4 of 8: Review Changes Side-by-Side" [ref=e116]'
89+
- 'button "Go to step 5 of 8: Integrated Terminal" [ref=e117]'
90+
- 'button "Go to step 6 of 8: AI-Generated Plans" [ref=e118]'
91+
- 'button "Go to step 7 of 8: Stay in Control" [ref=e119]'
92+
- 'button "Go to step 8 of 8: You''re All Set!" [ref=e120]'
93+
- generic [ref=e121]:
94+
- button "Skip" [ref=e122]
95+
- button "Next" [ref=e123]

apps/marketing/src/pages/index.astro

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,29 @@ const themes = [
136136
},
137137
] as const;
138138
139+
const faqs = [
140+
{
141+
question: "What is OK Code, exactly?",
142+
answer:
143+
"A focused workspace for AI coding flows. It brings together long-running threads, diffs, preview, PR review, and release actions so the work stays connected.",
144+
},
145+
{
146+
question: "Who is it for?",
147+
answer:
148+
"Developers, design engineers, and AI-native builders who want a calmer, more legible way to work with coding agents.",
149+
},
150+
{
151+
question: "Does it replace my editor or terminal?",
152+
answer:
153+
"Not necessarily. It complements your stack by making the agent workflow itself more coherent, visible, and easier to ship from.",
154+
},
155+
{
156+
question: "Is it open source?",
157+
answer:
158+
"Yes. You can inspect the repo, follow releases, and use OK Code in a workflow that stays close to the metal.",
159+
},
160+
] as const;
161+
139162
const faqs = [
140163
{
141164
question: "What is OK Code, exactly?",

apps/web/src/components/ChatView.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ import BranchToolbar from "./BranchToolbar";
8989
import { resolveShortcutCommand, shortcutLabelForCommand } from "../keybindings";
9090
import PlanSidebar from "./PlanSidebar";
9191
import ThreadTerminalDrawer from "./ThreadTerminalDrawer";
92-
import { SpotifyPlayerDrawer } from "./SpotifyPlayer";
92+
import { YouTubePlayerDrawer } from "./YouTubePlayer";
9393
import {
9494
AtSignIcon,
9595
BotIcon,
@@ -4894,7 +4894,7 @@ export default function ChatView({ threadId }: ChatViewProps) {
48944894
);
48954895
})()}
48964896

4897-
<SpotifyPlayerDrawer />
4897+
<YouTubePlayerDrawer />
48984898

48994899
<Dialog
49004900
open={pendingProjectScriptRun !== null}

apps/web/src/components/CodeMirrorViewer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ const baseExtensions: Extension[] = [
6060
backgroundColor: "transparent",
6161
},
6262
".cm-selectionBackground": {
63-
backgroundColor: "color-mix(in srgb, var(--primary) 25%, transparent) !important",
63+
backgroundColor: "color-mix(in srgb, var(--primary) 55%, transparent) !important",
6464
},
6565
}),
6666
];

apps/web/src/components/CodeViewerPanel.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ const CodeViewerFileContent = memo(function CodeViewerFileContent(props: {
9595
}
9696

9797
return (
98-
<div className="min-h-0 flex-1 overflow-hidden">
98+
<div className="min-h-0 flex-1 overflow-y-auto">
9999
{query.data.truncated && (
100100
<div className="border-b border-amber-500/30 bg-amber-500/10 px-3 py-1 text-[11px] text-amber-700 dark:text-amber-300/90">
101101
File is larger than 1MB. Showing truncated content.
@@ -177,7 +177,7 @@ export default function CodeViewerPanel() {
177177
</div>
178178
</div>
179179
{/* Content */}
180-
<div className="flex min-h-0 flex-1 justify-center overflow-hidden">
180+
<div className="flex min-h-0 flex-1 justify-center overflow-y-auto">
181181
<div className="h-full w-full max-w-5xl">
182182
{!activeTab ? (
183183
<div className="flex h-full flex-col items-center justify-center gap-2 px-5 text-center text-muted-foreground/60">

apps/web/src/components/GitActionsControl.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,7 +1059,7 @@ export default function GitActionsControl({ gitCwd, activeThreadId }: GitActions
10591059
}
10601060
>
10611061
<GitQuickActionIcon quickAction={quickAction} />
1062-
<span className="sr-only @sm/header-actions:not-sr-only @sm/header-actions:ml-0.5">
1062+
<span className="sr-only @lg/header-actions:not-sr-only @lg/header-actions:ml-0.5">
10631063
{quickAction.label}
10641064
</span>
10651065
</PopoverTrigger>
@@ -1075,7 +1075,7 @@ export default function GitActionsControl({ gitCwd, activeThreadId }: GitActions
10751075
onClick={runQuickAction}
10761076
>
10771077
<GitQuickActionIcon quickAction={quickAction} />
1078-
<span className="sr-only @sm/header-actions:not-sr-only @sm/header-actions:ml-0.5">
1078+
<span className="sr-only @lg/header-actions:not-sr-only @lg/header-actions:ml-0.5">
10791079
{quickAction.label}
10801080
</span>
10811081
</Button>

apps/web/src/components/Sidebar.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
TerminalIcon,
1313
TriangleAlertIcon,
1414
} from "lucide-react";
15-
import { SpotifyToggleButton } from "./SpotifyPlayer";
15+
import { YouTubeToggleButton } from "./YouTubePlayer";
1616
import { ThemeModeSwitcher } from "./ThemeModeSwitcher";
1717
import { autoAnimate } from "@formkit/auto-animate";
1818
import { useCallback, useEffect, useMemo, useRef, useState, type MouseEvent } from "react";
@@ -2027,7 +2027,7 @@ export default function Sidebar() {
20272027
<SidebarFooter className="p-2">
20282028
<SidebarMenu>
20292029
<SidebarMenuItem>
2030-
<SpotifyToggleButton />
2030+
<YouTubeToggleButton />
20312031
</SidebarMenuItem>
20322032
{isOnSubPage ? (
20332033
<SidebarMenuItem>

apps/web/src/components/SpotifyPlayer.tsx

Lines changed: 6 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ import {
55
MaximizeIcon,
66
MinimizeIcon,
77
Music2Icon,
8-
Volume1Icon,
9-
Volume2Icon,
10-
VolumeXIcon,
118
XIcon,
129
} from "lucide-react";
1310
import { useCallback, useMemo, useRef, useState } from "react";
@@ -51,51 +48,6 @@ export function SpotifyToggleButton() {
5148
// ---------------------------------------------------------------------------
5249
const CATEGORIES = [...new Set(DEFAULT_PLAYLISTS.map((p) => p.category))];
5350

54-
// ---------------------------------------------------------------------------
55-
// Volume slider — always accessible in the header bar
56-
// ---------------------------------------------------------------------------
57-
function VolumeControl() {
58-
const { volume, setVolume } = useSpotifyPlayerStore();
59-
const [premuteVolume, setPremuteVolume] = useState<number>(80);
60-
61-
const toggleMute = useCallback(() => {
62-
if (volume > 0) {
63-
setPremuteVolume(volume);
64-
setVolume(0);
65-
} else {
66-
setVolume(premuteVolume || 80);
67-
}
68-
}, [volume, premuteVolume, setVolume]);
69-
70-
const VolumeIcon = volume === 0 ? VolumeXIcon : volume < 50 ? Volume1Icon : Volume2Icon;
71-
72-
return (
73-
<div className="flex items-center gap-1.5">
74-
<button
75-
type="button"
76-
onClick={toggleMute}
77-
className="rounded p-0.5 text-muted-foreground/60 transition-colors hover:text-foreground"
78-
aria-label={volume === 0 ? "Unmute" : "Mute"}
79-
>
80-
<VolumeIcon className="size-3.5" />
81-
</button>
82-
<input
83-
type="range"
84-
min={0}
85-
max={100}
86-
step={1}
87-
value={volume}
88-
onChange={(e) => setVolume(Number(e.target.value))}
89-
className="spotify-volume-slider h-1 w-16 cursor-pointer appearance-none rounded-full bg-muted-foreground/20 accent-emerald-400 [&::-webkit-slider-thumb]:size-2.5 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-emerald-400 [&::-webkit-slider-thumb]:transition-transform [&::-webkit-slider-thumb]:hover:scale-125 [&::-moz-range-thumb]:size-2.5 [&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-0 [&::-moz-range-thumb]:bg-emerald-400"
90-
aria-label="Volume"
91-
/>
92-
<span className="min-w-[2ch] text-[10px] tabular-nums text-muted-foreground/50">
93-
{volume}
94-
</span>
95-
</div>
96-
);
97-
}
98-
9951
// ---------------------------------------------------------------------------
10052
// Main Spotify Player Drawer — rendered at the bottom of ChatView
10153
// ---------------------------------------------------------------------------
@@ -159,8 +111,12 @@ export function SpotifyPlayerDrawer() {
159111
{/* Spacer */}
160112
<div className="flex-1" />
161113

162-
{/* Volume — always accessible */}
163-
<VolumeControl />
114+
<span
115+
className="rounded-full border border-border/60 px-2 py-0.5 text-[10px] text-muted-foreground/60"
116+
title="Spotify embeds do not expose volume control. Adjust volume in Spotify or with your system/browser controls."
117+
>
118+
Volume in Spotify/system
119+
</span>
164120

165121
{/* Playlist picker toggle (only when not minimized) */}
166122
{!minimized && (

0 commit comments

Comments
 (0)