Align lint fixes with main and resolve merge conflicts

- Convert biome-ignore to oxlint-disable-next-line across client app
- Fix no-base-to-string with type narrowing instead of suppressions
- Fix no-floating-promises with fireAndForget() in proxy app
- Fix restrict-template-expressions with String() wrapping
- Resolve leftover merge conflict markers in manager.rs
- Remove duplicate cmd_plugin_init_errors from lib.rs
- Add graphql as explicit dependency in yaak-client

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Gregory Schier
2026-03-13 13:02:29 -07:00
parent 7314aedc71
commit ee69db0f12
54 changed files with 272 additions and 264 deletions

View File

@@ -22,7 +22,7 @@ export function DetailsBanner({
storageKey,
...extraProps
}: Props) {
// biome-ignore lint/correctness/useExhaustiveDependencies: We only want to recompute the atom when storageKey changes
// oxlint-disable-next-line react-hooks/exhaustive-deps -- We only want to recompute the atom when storageKey changes
const openAtom = useMemo(
() =>
storageKey

View File

@@ -32,6 +32,7 @@ import { useStateWithDeps } from "../../hooks/useStateWithDeps";
import { generateId } from "../../lib/generateId";
import { getNodeText } from "../../lib/getNodeText";
import { jotaiStore } from "../../lib/jotai";
import { fireAndForget } from "../../lib/fireAndForget";
import { ErrorBoundary } from "../ErrorBoundary";
import { Button } from "./Button";
import { Hotkey } from "./Hotkey";
@@ -611,7 +612,7 @@ const Menu = forwardRef<Omit<DropdownRef, "open" | "isOpen" | "toggle" | "items"
setActiveSubmenu({ item, parent, viaKeyboard: true });
}
} else if (item.onSelect) {
handleSelect(item);
fireAndForget(handleSelect(item));
}
},
{},
@@ -749,7 +750,7 @@ const Menu = forwardRef<Omit<DropdownRef, "open" | "isOpen" | "toggle" | "items"
if (item.type === "separator") {
return (
<Separator
// biome-ignore lint/suspicious/noArrayIndexKey: Nothing else available
// oxlint-disable-next-line no-array-index-key -- Nothing else available
key={i}
className={classNames("my-1.5", item.label ? "ml-2" : null)}
>
@@ -759,8 +760,7 @@ const Menu = forwardRef<Omit<DropdownRef, "open" | "isOpen" | "toggle" | "items"
}
if (item.type === "content") {
return (
// biome-ignore lint/a11y/noStaticElementInteractions: Needs to be clickable but want to support nested buttons
// biome-ignore lint/suspicious/noArrayIndexKey: index is fine
// oxlint-disable-next-line no-array-index-key -- index is fine
<div key={i} className={classNames("my-1 mx-2 max-w-xs")} onClick={onClose}>
{item.label}
</div>
@@ -774,7 +774,7 @@ const Menu = forwardRef<Omit<DropdownRef, "open" | "isOpen" | "toggle" | "items"
onFocus={handleFocus}
onSelect={handleSelect}
onHover={handleItemHover}
// biome-ignore lint/suspicious/noArrayIndexKey: It's fine
// oxlint-disable-next-line no-array-index-key -- It's fine
key={i}
item={item}
/>
@@ -782,7 +782,6 @@ const Menu = forwardRef<Omit<DropdownRef, "open" | "isOpen" | "toggle" | "items"
})}
</VStack>
{activeSubmenu && (
// biome-ignore lint/a11y/noStaticElementInteractions: Container div that cancels hover timeout
<div
ref={submenuRef}
onMouseEnter={() => {

View File

@@ -327,7 +327,7 @@ function EditorInner({
);
// Update the language extension when the language changes
// biome-ignore lint/correctness/useExhaustiveDependencies: intentionally limited deps
// oxlint-disable-next-line react-hooks/exhaustive-deps -- intentionally limited deps
useEffect(() => {
if (cm.current === null) return;
const { view, languageCompartment } = cm.current;
@@ -361,7 +361,7 @@ function EditorInner({
]);
// Initialize the editor when ref mounts
// biome-ignore lint/correctness/useExhaustiveDependencies: only reinitialize when necessary
// oxlint-disable-next-line react-hooks/exhaustive-deps -- only reinitialize when necessary
const initEditorRef = useCallback(
function initEditorRef(container: HTMLDivElement | null) {
if (container === null) {

View File

@@ -35,7 +35,7 @@ export function HotkeyRaw({ labelParts, className, variant }: HotkeyRawProps) {
)}
>
{labelParts.map((char, index) => (
// biome-ignore lint/suspicious/noArrayIndexKey: none
// oxlint-disable-next-line react/no-array-index-key
<div key={index} className="min-w-[1em] text-center">
{char}
</div>

View File

@@ -142,7 +142,7 @@ function BaseInput({
isFocused: () => editorRef.current?.hasFocus ?? false,
value: () => editorRef.current?.state.doc.toString() ?? "",
dispatch: (...args) => {
// biome-ignore lint/suspicious/noExplicitAny: none
// oxlint-disable-next-line no-explicit-any
editorRef.current?.dispatch(...(args as any));
},
selectAll() {
@@ -327,7 +327,11 @@ function BaseInput({
</HStack>
{type === "password" && !disableObscureToggle && (
<IconButton
title={obscured ? `Show ${label}` : `Obscure ${label}`}
title={
obscured
? `Show ${typeof label === "string" ? label : "field"}`
: `Obscure ${typeof label === "string" ? label : "field"}`
}
size="xs"
className={classNames("mr-0.5 !h-auto my-0.5", disabled && "opacity-disabled")}
color={tint}

View File

@@ -5,7 +5,7 @@ import { Icon } from "@yaakapp-internal/ui";
interface Props {
depth?: number;
// biome-ignore lint/suspicious/noExplicitAny: none
// oxlint-disable-next-line no-explicit-any -- none
attrValue: any;
attrKey?: string | number;
attrKeyJsonPath?: string;
@@ -54,10 +54,10 @@ export const JsonAttributeTree = ({
if (jsonType === "[object Array]") {
return {
children: isExpanded
? // biome-ignore lint/suspicious/noExplicitAny: none
? // oxlint-disable-next-line no-explicit-any -- none
attrValue.flatMap((v: any, i: number) => (
<JsonAttributeTree
// biome-ignore lint/suspicious/noArrayIndexKey: none
// oxlint-disable-next-line no-array-index-key -- none
key={i}
depth={depth + 1}
attrValue={v}

View File

@@ -144,7 +144,7 @@ export function PairEditor({
[handle, pairs, setRef],
);
// biome-ignore lint/correctness/useExhaustiveDependencies: Only care about forceUpdateKey
// oxlint-disable-next-line react-hooks/exhaustive-deps -- Only care about forceUpdateKey
useEffect(() => {
// Remove empty headers on initial render and ensure they all have valid ids (pairs didn't use to have IDs)
const newPairs: PairWithId[] = [];

View File

@@ -195,7 +195,7 @@ export const PlainInput = forwardRef<{ focus: () => void }, PlainInputProps>(fun
key={forceUpdateKey}
type={type === "password" && !obscured ? "text" : type}
name={name}
// biome-ignore lint/a11y/noAutofocus: Who cares
// oxlint-disable-next-line jsx-a11y/no-autofocus
autoFocus={autoFocus}
defaultValue={defaultValue ?? undefined}
autoComplete="off"
@@ -213,7 +213,11 @@ export const PlainInput = forwardRef<{ focus: () => void }, PlainInputProps>(fun
</HStack>
{type === "password" && !hideObscureToggle && (
<IconButton
title={obscured ? `Show ${label}` : `Obscure ${label}`}
title={
obscured
? `Show ${typeof label === "string" ? label : "field"}`
: `Obscure ${typeof label === "string" ? label : "field"}`
}
size="xs"
className="mr-0.5 group/obscure !h-auto my-0.5"
iconClassName="group-hover/obscure:text"

View File

@@ -62,13 +62,13 @@ export function SegmentedControl<T extends string>({
if (e.key === "ArrowRight") {
e.preventDefault();
const newIndex = Math.abs((selectedIndex + 1) % options.length);
options[newIndex] && setSelectedValue(options[newIndex].value);
if (options[newIndex]) { setSelectedValue(options[newIndex].value); }
const child = containerRef.current?.children[newIndex] as HTMLButtonElement;
child.focus();
} else if (e.key === "ArrowLeft") {
e.preventDefault();
const newIndex = Math.abs((selectedIndex - 1) % options.length);
options[newIndex] && setSelectedValue(options[newIndex].value);
if (options[newIndex]) { setSelectedValue(options[newIndex].value); }
const child = containerRef.current?.children[newIndex] as HTMLButtonElement;
child.focus();
}

View File

@@ -23,6 +23,7 @@ import {
} from "react";
import { useKeyValue } from "../../../hooks/useKeyValue";
import { computeSideForDragMove, DropMarker } from "@yaakapp-internal/ui";
import { fireAndForget } from "../../../lib/fireAndForget";
import { ErrorBoundary } from "../../ErrorBoundary";
import type { ButtonProps } from "../Button";
import { Button } from "../Button";
@@ -142,7 +143,7 @@ export const Tabs = forwardRef<TabsRef, Props>(function Tabs(
forwardedRef,
() => ({
setActiveTab: (value: string) => {
onChangeValue(value);
fireAndForget(onChangeValue(value));
},
}),
[onChangeValue],

View File

@@ -110,7 +110,7 @@ export function Tooltip({ children, className, content, tabIndex, size = "md" }:
/>
</div>
</Portal>
{/** biome-ignore lint/a11y/useSemanticElements: Needs to be usable in other buttons */}
{/* oxlint-disable-next-line jsx-a11y/prefer-tag-over-role -- Needs to be usable in other buttons */}
<span
ref={triggerRef}
role="button"