feat: add host-local custom project icons (#2335)
* feat(projects): add local icons and colors * refactor(projects): simplify appearance handling * fix(projects): serialize appearance saves * test(app): update project appearance expectations * test: fix project appearance CI expectations * refactor(projects): organize appearance code * fix(server): adopt main's reconcile model in project appearance updates * fix(projects): preserve host-local appearance targets * fix(desktop): restore Linux development startup Ubuntu can block Electron's unprivileged user-namespace fallback while the npm-installed sandbox helper is not SUID. Disable the Chromium process sandbox only in the Linux development runner so packaged desktop policy remains unchanged. * feat(projects): add custom project icons Keep URL acquisition in the client so the host daemon only validates uploaded bytes. Project name and icon changes share one adaptive edit sheet. * refactor(settings): scope projects by host --------- Co-authored-by: Mohamed Boudra <boudra.moha@gmail.com>
This commit is contained in:
co-authored by
Mohamed Boudra
parent
706ae3d9bb
commit
800bd2bef1
@@ -0,0 +1,7 @@
|
||||
export function resolveDevElectronArgs(platform, forwardedArgs) {
|
||||
if (platform === "linux") {
|
||||
return ["--no-sandbox", ...forwardedArgs];
|
||||
}
|
||||
|
||||
return forwardedArgs;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import { resolveDevElectronArgs } from "./dev-runner-args.mjs";
|
||||
|
||||
describe("resolveDevElectronArgs", () => {
|
||||
it("disables the Chromium process sandbox for Linux development", () => {
|
||||
expect(resolveDevElectronArgs("linux", ["--remote-debugging-port=9223"])).toEqual([
|
||||
"--no-sandbox",
|
||||
"--remote-debugging-port=9223",
|
||||
]);
|
||||
});
|
||||
|
||||
it.each(["darwin", "win32"])("preserves forwarded arguments on %s", (platform) => {
|
||||
expect(resolveDevElectronArgs(platform, ["--remote-debugging-port=9223"])).toEqual([
|
||||
"--remote-debugging-port=9223",
|
||||
]);
|
||||
});
|
||||
});
|
||||
@@ -5,6 +5,8 @@ import { spawn } from "node:child_process";
|
||||
import { createRequire } from "node:module";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
import { resolveDevElectronArgs } from "./dev-runner-args.mjs";
|
||||
|
||||
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
||||
const desktopDir = path.resolve(scriptDir, "..");
|
||||
const rootDir = path.resolve(desktopDir, "../..");
|
||||
@@ -19,7 +21,7 @@ if (!Number.isInteger(expoPort) || expoPort <= 0) {
|
||||
}
|
||||
|
||||
const expoDevUrl = process.env.EXPO_DEV_URL || `http://localhost:${expoPort}`;
|
||||
const electronArgs = process.argv.slice(2);
|
||||
const electronArgs = resolveDevElectronArgs(process.platform, process.argv.slice(2));
|
||||
const colorEnv = {
|
||||
FORCE_COLOR: process.env.FORCE_COLOR || "1",
|
||||
npm_config_color: process.env.npm_config_color || "always",
|
||||
|
||||
Reference in New Issue
Block a user