Skip to content
Merged
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
Binary file modified windows/tauri/src-tauri/icons/128x128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified windows/tauri/src-tauri/icons/128x128@2x.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified windows/tauri/src-tauri/icons/32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified windows/tauri/src-tauri/icons/64x64.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified windows/tauri/src-tauri/icons/icon.ico
Binary file not shown.
Binary file modified windows/tauri/src-tauri/icons/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
33 changes: 32 additions & 1 deletion windows/tauri/src-tauri/src/host.rs
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,9 @@ pub async fn create_app_window(app: AppHandle, request: Option<Value>) -> Result

#[cfg(test)]
mod tests {
use super::{cli_payloads, copy_path, create_app_window, unique_destination};
use super::{
cli_payloads, copy_path, create_app_window, unique_destination, WINDOW_TASKBAR_ICON,
};
use std::fs;
use std::future::Future;
use std::path::PathBuf;
Expand Down Expand Up @@ -372,6 +374,35 @@ mod tests {
assert!(widths.contains(&256), "{widths:?}");
}

#[test]
fn taskbar_icon_fills_available_canvas() {
let width = WINDOW_TASKBAR_ICON.width();
let height = WINDOW_TASKBAR_ICON.height();
assert_eq!((width, height), (32, 32));

let mut min_x = width;
let mut min_y = height;
let mut max_x = 0;
let mut max_y = 0;
for (index, pixel) in WINDOW_TASKBAR_ICON.rgba().chunks_exact(4).enumerate() {
if pixel[3] < 128 {
continue;
}

let x = index as u32 % width;
let y = index as u32 / width;
min_x = min_x.min(x);
min_y = min_y.min(y);
max_x = max_x.max(x);
max_y = max_y.max(y);
}

let visible_width = max_x.saturating_sub(min_x) + 1;
let visible_height = max_y.saturating_sub(min_y) + 1;
assert!(visible_width >= 26, "visible width: {visible_width}");
assert!(visible_height >= 26, "visible height: {visible_height}");
}

#[cfg(target_os = "windows")]
#[test]
fn background_font_queries_do_not_create_windows_console() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,27 +71,27 @@ export function WelcomeScreen() {
return (
<main className="flex min-h-0 flex-1 overflow-hidden bg-background">
<aside className="flex w-60 shrink-0 flex-col border-border border-r bg-surface px-3 pb-3">
<div className="flex items-center gap-3 px-2 pt-7 pb-8">
<img src="/logo.png" alt="" className="size-12 rounded-xl" />
<div className="flex items-center gap-[11px] px-2 pt-7 pb-[30px]">
<img src="/logo.png" alt="" className="size-[42px] rounded-xl" />
<div className="min-w-0">
<div className="truncate text-[20px] leading-tight font-semibold text-foreground">
<div className="truncate text-[18px] leading-tight font-semibold text-foreground">
Lithe
</div>
<div className="mt-1 ui-text-sm text-subtle-foreground">
<div className="mt-0.5 ui-text-caption text-subtle-foreground">
{appVersion ? `${appVersion} · Windows` : "Windows"}
</div>
<button
type="button"
className="mt-1 inline-flex items-center gap-1.5 ui-text-sm text-subtle-foreground hover:text-foreground"
className="mt-0.5 inline-flex items-center gap-1.5 whitespace-nowrap ui-text-caption font-medium text-subtle-foreground hover:text-foreground"
onClick={() => openSettingsDialog("general")}
>
<ArrowClockwiseIcon className="size-3.5" />
<ArrowClockwiseIcon className="size-3" />
{t("welcome.checkUpdates")}
</button>
</div>
</div>

<div className="flex h-9 items-center gap-2 rounded-md bg-primary/55 px-3 font-medium text-white">
<div className="mx-0.5 flex h-9 items-center gap-[9px] rounded-md bg-primary/55 px-3.5 font-medium text-white">
<FolderIcon className="size-4" />
<span>{t("welcome.projects")}</span>
</div>
Expand All @@ -100,7 +100,7 @@ export function WelcomeScreen() {
<Button
type="button"
variant="ghost"
className="h-9 w-full justify-start gap-2 px-3 text-subtle-foreground"
className="mx-0.5 mb-0.5 h-9 w-auto self-stretch justify-start gap-[9px] px-3.5 text-subtle-foreground"
onClick={() => openSettingsDialog("general")}
>
<GearIcon className="size-4" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ const createRemoteConnectionFormData = (): RemoteConnectionFormData => ({

const ProjectPicker = memo(
({ isOpen, onClose, initialMode = "picker" }: ProjectPickerProps) => {
const { t } = useTranslation();
const { t } = useTranslation();
const inputRef = useRef<HTMLInputElement>(null);
const remoteNameInputRef = useRef<HTMLInputElement>(null);
const [connections, setConnections] = useState<RemoteConnection[]>([]);
Expand Down
Loading