feat(workspace): refine career workflows

Make job/CV comparisons language-aware and filter recruitment noise. Improve responsive career navigation, shared spacing, dashboard priorities, settings, localized workspace controls, and portable browser tests.
This commit is contained in:
cesnimda
2026-08-29 16:44:44 +02:00
parent 4d4af47651
commit 9edcbfc5de
29 changed files with 827 additions and 236 deletions
+33
View File
@@ -0,0 +1,33 @@
import { existsSync } from "node:fs";
import os from "node:os";
import path from "node:path";
import { spawnSync } from "node:child_process";
const executableName = process.platform === "win32" ? "dotnet.exe" : "dotnet";
const candidates = [
process.env.DOTNET_HOST_PATH,
process.env.DOTNET_ROOT ? path.join(process.env.DOTNET_ROOT, executableName) : undefined,
path.join(os.homedir(), ".dotnet", executableName),
].filter(Boolean);
const dotnet = candidates.find((candidate) => existsSync(candidate)) ?? "dotnet";
const dotnetDirectory = path.dirname(dotnet);
const childEnv = {
...process.env,
DOTNET_HOST_PATH: dotnet,
PATH: dotnet === "dotnet"
? process.env.PATH
: `${dotnetDirectory}${path.delimiter}${process.env.PATH ?? ""}`,
};
function run(command, args) {
const result = spawnSync(command, args, { cwd: process.cwd(), env: childEnv, stdio: "inherit", shell: false });
if (result.error) {
console.error(`Unable to start ${command}: ${result.error.message}`);
process.exit(1);
}
if (result.status !== 0) process.exit(result.status ?? 1);
}
run(dotnet, ["build", "../JobTrackerApi/JobTrackerApi.csproj", "--configuration", "Release"]);
run(process.execPath, [path.resolve("node_modules/@playwright/test/cli.js"), "test", ...process.argv.slice(2)]);