style: use alias imports for useEscapable and trim new comments

Addresses review: v2 imports go through the @/v2 alias, and comments
stay within two lines with docstrings in one sentence.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XZW9ChvmiTKXYYWY6JvTKU
This commit is contained in:
Claude
2026-10-01 11:20:58 +00:00
parent d91af962d2
commit f5ce0af4f9
6 changed files with 8 additions and 17 deletions
@@ -1,8 +1,4 @@
"""Which provider matches count as an identified ROM during a scan.
A scan that finds no match returns early and skips the SteamGridDB lookup, so
every source `Rom.is_identified` counts must keep the scan going.
"""
"""Every source `Rom.is_identified` counts must keep a scan past its no-match exit."""
from unittest.mock import AsyncMock, patch
@@ -238,10 +238,8 @@ const filterActiveCount = computed(() => {
return n;
});
// Search and filter changes → refetch the gallery: invalidate windows and
// bootstrap metadata only, since rows hydrate per-position as they mount.
// The initial hydration done by `useGalleryFilterUrl` happens before this
// watch is set up and so does not echo here.
// The initial URL hydration in `useGalleryFilterUrl` runs before this watch
// is set up, so it does not echo here.
watch(
[
searchTerm,
@@ -1,8 +1,7 @@
import { onScopeDispose, type Ref, ref, watch } from "vue";
/** A search box bound to a store term: typing writes the trimmed term after
* `delayMs`, and a term set elsewhere (back/forward, a pasted link) shows up
* in the box straight away. */
/** A search box bound to a store term, debounced one way and immediate the
* other, so a term set by navigation shows up in the box. */
export function useDebouncedSearch(term: Ref<string | null>, delayMs = 300) {
const input = ref(term.value ?? "");
let pending: ReturnType<typeof setTimeout> | null = null;
@@ -33,7 +33,7 @@ import {
watch,
} from "vue";
import { useChromeLabels } from "@/v2/lib/a11y/chromeLabels";
import { useEscapable } from "../../overlays/RDialog/useEscapable";
import { useEscapable } from "@/v2/lib/overlays/RDialog/useEscapable";
import RBtn from "../../primitives/RBtn/RBtn.vue";
import RIcon from "../../primitives/RIcon/RIcon.vue";
import RTextField from "../RTextField/RTextField.vue";
@@ -38,8 +38,8 @@ import {
} from "vue";
import { useInputModality } from "@/v2/composables/useInputModality";
import { useChromeLabels } from "@/v2/lib/a11y/chromeLabels";
import { useEscapable } from "@/v2/lib/overlays/RDialog/useEscapable";
import { shouldAutofocusSearch } from "@/v2/utils/autofocus";
import { useEscapable } from "../../overlays/RDialog/useEscapable";
import RDivider from "../../primitives/RDivider/RDivider.vue";
import RIcon from "../../primitives/RIcon/RIcon.vue";
import RProgressCircular from "../../primitives/RProgressCircular/RProgressCircular.vue";
+1 -3
View File
@@ -784,9 +784,7 @@ async function onVisibilityChange(): Promise<void> {
await pollSessionStatus();
}
// Timed from the moment the stream is live, which on a claim is the socket's
// launch-ready push rather than anything `onPlay` awaits. Ingesting the session
// updates last_played / now_playing / status server-side.
// A claim's stream goes live on the launch-ready push, after `onPlay` returns.
watch(gameRunning, (running, prev) => {
if (running && !prev) {
presence.start();