Compare commits

...
Author SHA1 Message Date
l0ng-ai 0a38ee5793 Merge remote-tracking branch 'origin/main' into ci-green
# Conflicts:
#	src/platform/i18n.test.ts
2026-11-11 19:29:59 +08:00
arookieofcandClaude Code c8551593a8 chore(ci): route heap dialogs through platform wrapper; fix dialog/i18n tests on Windows
heapDumpFiles.tsx used @tauri-apps/plugin-dialog directly, which dialog.test.ts forbids; route open/save through @/platform/dialog (GTK fallback on Linux). dialog.test.ts compared readdirSync paths without slash normalization, so platform\dialog.ts flagged itself on Windows. i18n.test.ts allows Tailwind CSS and JDK: as untranslated product names.

Co-Authored-By: Claude Code <[email protected]>
2026-11-11 19:20:03 +08:00
arookieofcandClaude Code 38de25a9c4 chore(ci): fix main breakages blocking all PRs
- format commandBackend.test.ts (oxfmt)
- bump rustix 1.1.5 to 1.1.6 (RUSTSEC-2026-0486)
- jdwp test: byte string instead of byte-char array (clippy::byte_char_slices)
- heap IdMap: allow large_enum_variant, the table is hot (indirection costs)

Co-Authored-By: Claude Code <[email protected]>
2026-11-11 18:49:05 +08:00
3 changed files with 7 additions and 5 deletions

No files matched your search

+3
View File
@@ -19,6 +19,9 @@ const CHUNK_SLOT_BITS: u32 = 17;
const WORD_BITS: u64 = 64;
const WORDS_PER_CHUNK: usize = (1 << CHUNK_SLOT_BITS) / WORD_BITS as usize;
// The bit table is matched in hot paths; boxing the big variant would only add
// an indirection to save stack space `IdMap` never holds by value in bulk.
#[allow(clippy::large_enum_variant)]
enum Repr {
Bits {
/// Chunk number of the first table entry.
+3 -4
View File
@@ -3,6 +3,7 @@ import { ProgressBar } from "@/ui";
import { setContext } from "@/platform/context";
import { tx, useTx } from "@/platform/i18n";
import { call, commands, IpcError } from "@/platform/ipc";
import { open as openDialog, save as saveDialog } from "@/platform/dialog";
import { ipcPath } from "@/platform/paths";
import { basename } from "@/platform/project";
import { isRemoteWindow, useRemote } from "@/platform/remote";
@@ -43,8 +44,7 @@ export async function openHeapDump(): Promise<void> {
}
// One file at a time; the running open keeps its progress notification.
if (useHeap.getState().opening) return;
const { open } = await import("@tauri-apps/plugin-dialog");
const picked = await open({ multiple: false, directory: false, filters: FILTERS() });
const picked = await openDialog({ multiple: false, directory: false, filters: FILTERS() });
if (typeof picked !== "string" || useHeap.getState().opening) return;
const path = ipcPath(picked);
const name = basename(path);
@@ -85,8 +85,7 @@ export async function openHeapDump(): Promise<void> {
export async function saveHeapDump(id: number): Promise<void> {
const entry = useHeap.getState().snapshots[id];
if (!entry || entry.info.origin.kind !== "captured" || isRemoteWindow()) return;
const { save } = await import("@tauri-apps/plugin-dialog");
const picked = await save({
const picked = await saveDialog({
defaultPath: `${entry.info.label.replace(/[/\\:*?"<>|]/g, "-")}.hprof`,
filters: FILTERS(),
});
+1 -1
View File
@@ -9,7 +9,7 @@ it("opens every file picker through the platform wrapper", () => {
(file) =>
/\.[jt]sx?$/.test(file) &&
!/\.test\.[jt]sx?$/.test(file) &&
file !== "platform/dialog.ts" &&
file.replace(/\\/g, "/") !== "platform/dialog.ts" &&
readFileSync(resolve(src, file), "utf8").includes("@tauri-apps/plugin-" + "dialog"),
);
expect(offenders).toEqual([]);