Skip to content

Frontend UI improvements and polish#1474

Merged
richiemcilroy merged 7 commits intomainfrom
frontend-bits
Dec 30, 2025
Merged

Frontend UI improvements and polish#1474
richiemcilroy merged 7 commits intomainfrom
frontend-bits

Conversation

@richiemcilroy
Copy link
Member

@richiemcilroy richiemcilroy commented Dec 30, 2025

  • Add ModeInfoPanel component for recording mode information
    • Add tooltips to screenshot action buttons
    • Adjust button heights and paddings for UI consistency
    • Update window sizes (main min size, settings to 700x540)
    • Minor formatting improvements

Greptile Summary

  • Adds a new ModeInfoPanel component for displaying detailed recording mode information with visual explanations for instant, studio, and screenshot modes
  • Standardizes UI element heights to 42px across camera, microphone, system audio, and target selection components for visual consistency
  • Updates minimum window sizes for better content accommodation (main window to 330x345, settings to 700x540) and adds tooltips to screenshot action buttons

Important Files Changed

Filename Overview
apps/desktop/src/routes/(window-chrome)/new-main/ModeInfoPanel.tsx New component with missing icon imports that will cause runtime errors
apps/desktop/src-tauri/src/windows.rs Updated minimum window sizes for Main and Settings windows to accommodate new UI elements

Confidence score: 2/5

  • This PR has critical import issues that will cause immediate runtime failures in the new ModeInfoPanel component
  • Score lowered due to missing icon imports (IconCapInstant, IconCapFilmCut, IconCapScreenshot, IconLucideCheck) in the new ModeInfoPanel component that will break the application
  • Pay close attention to apps/desktop/src/routes/(window-chrome)/new-main/ModeInfoPanel.tsx which needs all missing icon imports resolved before merge

Sequence Diagram

sequenceDiagram
    participant User
    participant Frontend
    participant ShowCapWindow
    participant CapWindowId
    participant WebviewWindowBuilder
    participant TauriWindow

    User->>Frontend: "Click to open window"
    Frontend->>ShowCapWindow: "show(app)"
    ShowCapWindow->>CapWindowId: "id(app)"
    CapWindowId-->>ShowCapWindow: "window identifier"
    ShowCapWindow->>CapWindowId: "get(app)"
    alt Window exists
        CapWindowId-->>ShowCapWindow: "existing window"
        ShowCapWindow->>TauriWindow: "show(), unminimize(), set_focus()"
        TauriWindow-->>User: "Window displayed"
    else Window doesn't exist
        ShowCapWindow->>ShowCapWindow: "window_builder(app, url)"
        ShowCapWindow->>WebviewWindowBuilder: "configure size, theme, flags"
        WebviewWindowBuilder->>TauriWindow: "build()"
        TauriWindow-->>ShowCapWindow: "new window"
        ShowCapWindow->>TauriWindow: "add_traffic_lights() (macOS)"
        ShowCapWindow-->>User: "Window displayed"
    end
Loading

Context used:

  • Context from dashboard - CLAUDE.md (source)
  • Context from dashboard - AGENTS.md (source)

@richiemcilroy richiemcilroy merged commit 4de3050 into main Dec 30, 2025
16 of 17 checks passed
Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additional Comments (2)

  1. apps/desktop/src/components/Mode.tsx, line 126 (link)

    style: Inconsistent ring color - uses ring-blue-10 instead of ring-blue-500 like other active states

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

  2. apps/desktop/src/components/Mode.tsx, line 140 (link)

    style: Same ring color inconsistency - should use ring-blue-500 to match other active states

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

11 files reviewed, 5 comments

Edit Code Review Agent Settings | Greptile

class="flex flex-row gap-2 items-center px-2 w-full h-10 rounded-lg transition-colors cursor-default disabled:opacity-70 bg-gray-3 disabled:text-gray-11 KSelect"
class="flex flex-row gap-2 items-center px-2 w-full h-[42px] rounded-lg transition-colors cursor-default disabled:opacity-70 bg-gray-3 disabled:text-gray-11 KSelect"
PillComponent={InfoPill}
icon={<IconPhMonitorBold class="text-gray-10 size-4" />}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

syntax: IconPhMonitorBold is not imported - this will cause a runtime error

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src/routes/(window-chrome)/new-main/SystemAudio.tsx
Line: 17:17

Comment:
**syntax:** `IconPhMonitorBold` is not imported - this will cause a runtime error

How can I resolve this? If you propose a fix, please make it concise.

Comment on lines +18 to +32
icon: IconCapInstant,
},
{
mode: "studio" as RecordingMode,
title: "Studio",
description:
"Record locally in the highest quality for editing later. Perfect for creating polished content with effects and transitions.",
icon: IconCapFilmCut,
},
{
mode: "screenshot" as RecordingMode,
title: "Screenshot",
description:
"Capture and annotate screenshots instantly. Great for quick captures, bug reports, and visual communication.",
icon: IconCapScreenshot,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

logic: Missing icon imports: IconCapInstant, IconCapFilmCut, and IconCapScreenshot are referenced but not imported

Suggested change
icon: IconCapInstant,
},
{
mode: "studio" as RecordingMode,
title: "Studio",
description:
"Record locally in the highest quality for editing later. Perfect for creating polished content with effects and transitions.",
icon: IconCapFilmCut,
},
{
mode: "screenshot" as RecordingMode,
title: "Screenshot",
description:
"Capture and annotate screenshots instantly. Great for quick captures, bug reports, and visual communication.",
icon: IconCapScreenshot,
import { cx } from "cva";
import { For } from "solid-js";
import { Transition } from "solid-transition-group";
import { commands, type RecordingMode } from "~/utils/tauri";
import IconLucideArrowLeft from "~icons/lucide/arrow-left";
import IconCapInstant from "~icons/cap/instant";
import IconCapFilmCut from "~icons/cap/film-cut";
import IconCapScreenshot from "~icons/cap/screenshot";
import { useRecordingOptions } from "../OptionsContext";
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src/routes/(window-chrome)/new-main/ModeInfoPanel.tsx
Line: 18:32

Comment:
**logic:** Missing icon imports: `IconCapInstant`, `IconCapFilmCut`, and `IconCapScreenshot` are referenced but not imported

```suggestion
		import { cx } from "cva";
import { For } from "solid-js";
import { Transition } from "solid-transition-group";
import { commands, type RecordingMode } from "~/utils/tauri";
import IconLucideArrowLeft from "~icons/lucide/arrow-left";
import IconCapInstant from "~icons/cap/instant";
import IconCapFilmCut from "~icons/cap/film-cut";
import IconCapScreenshot from "~icons/cap/screenshot";
import { useRecordingOptions } from "../OptionsContext";
```

How can I resolve this? If you propose a fix, please make it concise.

>
{isSelected() && (
<div class="absolute top-2 right-2 flex items-center justify-center size-4 rounded-full bg-blue-9">
<IconLucideCheck class="size-2.5 text-white" />
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

logic: Missing import for IconLucideCheck - will cause runtime error when mode is selected

Suggested change
<IconLucideCheck class="size-2.5 text-white" />
import { cx } from "cva";
import { For } from "solid-js";
import { Transition } from "solid-transition-group";
import { commands, type RecordingMode } from "~/utils/tauri";
import IconLucideArrowLeft from "~icons/lucide/arrow-left";
import IconLucideCheck from "~icons/lucide/check";
import { useRecordingOptions } from "../OptionsContext";
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src/routes/(window-chrome)/new-main/ModeInfoPanel.tsx
Line: 88:88

Comment:
**logic:** Missing import for `IconLucideCheck` - will cause runtime error when mode is selected

```suggestion
														import { cx } from "cva";
import { For } from "solid-js";
import { Transition } from "solid-transition-group";
import { commands, type RecordingMode } from "~/utils/tauri";
import IconLucideArrowLeft from "~icons/lucide/arrow-left";
import IconLucideCheck from "~icons/lucide/check";
import { useRecordingOptions } from "../OptionsContext";
```

How can I resolve this? If you propose a fix, please make it concise.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant