Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions apps/code/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@
"@radix-ui/themes": "^3.2.1",
"@tailwindcss/vite": "^4.2.2",
"@tanstack/react-query": "^5.90.2",
"@tanstack/react-virtual": "^3.13.26",
"@tiptap/core": "^3.13.0",
"@tiptap/extension-mention": "^3.13.0",
"@tiptap/extension-placeholder": "^3.13.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ export const PromptInput = forwardRef<EditorHandle, PromptInputProps>(
<InputGroup
onClick={handleContainerClick}
onContextMenu={handleContextMenu}
className={`h-auto cursor-text bg-card ${isBashMode ? "ring-1 ring-blue-9" : ""}`}
className={`h-auto cursor-text bg-card focus-within:ring-1 focus-within:ring-purple-9 ${isBashMode ? "ring-1 ring-blue-9" : ""}`}
{...(tourTarget && {
"data-tour": `${tourTarget}-editor`,
"data-tour-ready": !isEmpty ? "true" : undefined,
Expand All @@ -307,7 +307,7 @@ export const PromptInput = forwardRef<EditorHandle, PromptInputProps>(
>
<EditorContent editor={editor} />
</div>
<InputGroupAddon align="block-end">
<InputGroupAddon align="block-end" className="p-1">
<AttachmentMenu
disabled={disabled}
repoPath={repoPath}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export function ContextUsageIndicator({ usage }: ContextUsageIndicatorProps) {
strokeLinecap="round"
/>
</svg>
<Text className="text-[13px] text-gray-10 tabular-nums">
<Text className="text-[13px] text-muted-foreground tabular-nums">
{formatTokensCompact(used)}/{formatTokensCompact(size)} ·{" "}
{percentage}%
</Text>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,13 @@ import { SkillButtonActionMessage } from "@features/skill-buttons/components/Ski
import { ArrowDown, XCircle } from "@phosphor-icons/react";
import { WorkerPoolContextProvider } from "@pierre/diffs/react";
import WorkerUrl from "@pierre/diffs/worker/worker.js?worker&url";
import { Box, Button, Flex, Text } from "@radix-ui/themes";
import {
Button,
Tooltip,
TooltipContent,
TooltipTrigger,
} from "@posthog/quill";
import { Box, Flex, Text } from "@radix-ui/themes";
import type { Task } from "@shared/types";
import type { AcpMessage } from "@shared/types/session-events";
import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
Expand Down Expand Up @@ -250,7 +256,7 @@ export function ConversationView({
poolOptions={DIFFS_POOL_OPTIONS}
highlighterOptions={DIFFS_HIGHLIGHTER_OPTIONS}
>
<div ref={containerRef} className="relative flex-1">
<div ref={containerRef} className="group/thread relative flex-1">
<div
id="fullscreen-portal"
className="pointer-events-none absolute inset-0 z-20"
Expand Down Expand Up @@ -302,11 +308,19 @@ export function ConversationView({
/>
</SessionTaskIdProvider>
{showScrollButton && (
<Box className="absolute right-4 bottom-4 z-10">
<Button size="1" variant="solid" onClick={scrollToBottom}>
<ArrowDown size={14} weight="bold" />
Scroll to bottom
</Button>
<Box className="absolute right-6 bottom-4 z-10">
<Tooltip>
<TooltipTrigger>
<Button
size="icon-lg"
variant="outline"
onClick={scrollToBottom}
>
<ArrowDown size={14} weight="bold" />
</Button>
</TooltipTrigger>
<TooltipContent>Scroll to bottom</TooltipContent>
</Tooltip>
</Box>
)}
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,24 +33,24 @@ export function SessionFooter({
usage,
}: SessionFooterProps) {
const rightSide = (
<Flex align="center" gap="3" className="shrink-0">
<Flex align="center" gap="3" className="ml-auto shrink-0">
{task && <DiffStatsChip task={task} />}
<ContextUsageIndicator usage={usage ?? null} />
</Flex>
);
if (isPromptPending && !isCompacting) {
if (hasPendingPermission) {
return (
<Box className="pt-3 pb-1">
<Box className="pt-3 pb-1 opacity-50 transition-opacity group-hover/thread:opacity-100">
<Flex align="center" justify="between" gap="2">
<Flex
align="center"
gap="2"
className="min-w-0 select-none select-none text-gray-10"
className="min-w-0 select-none text-muted-foreground"
style={{ WebkitUserSelect: "none" }}
>
<Pause size={14} weight="fill" className="shrink-0" />
<Text className="truncate text-[13px]">
<Text className="truncate text-[13px] text-muted-foreground">
Awaiting permission...
</Text>
</Flex>
Expand All @@ -61,15 +61,15 @@ export function SessionFooter({
}

return (
<Box className="pt-3 pb-1">
<Box className="pt-3 pb-1 opacity-50 transition-opacity group-hover/thread:opacity-100">
<Flex align="center" justify="between" gap="2">
<Flex align="center" gap="2" className="min-w-0">
<GeneratingIndicator
startedAt={promptStartedAt}
pausedDurationMs={pausedDurationMs}
/>
{queuedCount > 0 && (
<Text color="gray" className="truncate text-[13px]">
<Text className="truncate text-[13px] text-muted-foreground">
({queuedCount} queued)
</Text>
)}
Expand All @@ -89,19 +89,18 @@ export function SessionFooter({
!wasCancelled;

return (
<Box className="pb-1">
<Box className="pb-1 opacity-50 transition-opacity group-hover/thread:opacity-100">
<Flex align="center" justify="between" gap="2">
{showDuration && (
<Flex
align="center"
gap="2"
className="min-w-0 select-none text-gray-10"
className="min-w-0 select-none text-muted-foreground"
>
<Brain size={12} className="shrink-0" />
<Text
color="gray"
style={{ fontVariantNumeric: "tabular-nums" }}
className="truncate text-[13px]"
className="truncate text-[13px] text-muted-foreground"
>
Generated in {formatDuration(lastGenerationDuration)}
</Text>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ export function SessionView({
/>
<Box className="border-gray-4 border-t">
<Box
className="mx-auto p-2"
className="mx-auto px-2 pb-3"
style={{ maxWidth: CHAT_CONTENT_MAX_WIDTH }}
>
<Flex
Expand Down Expand Up @@ -598,9 +598,9 @@ export function SessionView({
</Flex>
</Flex>
) : hideInput ? null : firstPendingPermission ? (
<Box className="max-h-1/2 min-h-0 overflow-y-auto border-gray-4 border-t">
<Box className="min-h-0 overflow-y-auto">
<Box
className={compact ? "p-1" : "mx-auto p-2"}
className={compact ? "p-1" : "mx-auto px-2 pb-3"}
style={
compact
? undefined
Expand All @@ -616,7 +616,7 @@ export function SessionView({
</Box>
</Box>
) : (
<Box className="relative border-gray-4 border-t">
<Box className="relative">
<Box
className={`absolute inset-0 flex min-h-[66px] items-center justify-center gap-2 transition-opacity duration-200 ${
isRunning
Expand All @@ -637,7 +637,7 @@ export function SessionView({
}`}
>
<Box
className={compact ? "p-1" : "mx-auto p-2"}
className={compact ? "p-1" : "mx-auto px-2 pb-3"}
style={
compact
? undefined
Expand Down
Loading
Loading