fix: stop silent Jobs filters from emptying Discovered

Hide-prior-skips is off by default and counts in the badge when on; Settings searchCities no longer hard-filters the Jobs list.
This commit is contained in:
ilia 2026-07-13 21:36:37 -04:00
parent abfc5d8d0a
commit 6a5c9e8cc4
4 changed files with 6 additions and 14 deletions

View File

@ -45,7 +45,7 @@ During a pipeline run, if a new posting matches an existing row by URL, source i
Open jobs that match a prior skip or apply are **hidden** from Discovered, Ready, and All tabs so the queue stays fresh. Skipped and applied rows themselves remain visible in their statuses.
Use **Filters → Employer keywords → Hide roles you already skipped** to toggle this behavior (on by default). When enabled, JobOps compares **company + job title** only:
Use **Filters → Employer keywords → Hide roles you already skipped** to toggle this behavior (off by default). When enabled, JobOps compares **company + job title** only:
- Same company after normalization (legal suffixes stripped; short names like `CGI` match longer forms like `CGI IT UK Limited`).
- Same title after normalization (including simple plural variants such as `Engineer` vs `Engineers`).

View File

@ -1,6 +1,5 @@
import { useSettings } from "@client/hooks/useSettings";
import { buildDuplicateDismissHints } from "@client/lib/job-dedup";
import { inferCountryKeyFromSearchGeography } from "@shared/search-cities";
import type React from "react";
import { useCallback, useEffect, useMemo, useState } from "react";
import { useNavigate, useParams } from "react-router-dom";
@ -168,12 +167,6 @@ export const OrchestratorPage: React.FC = () => {
[settings],
);
const searchGeographyCountryKey = useMemo(
() =>
inferCountryKeyFromSearchGeography(settings?.searchCities?.value ?? null),
[settings?.searchCities?.value],
);
const duplicateDismissHints = useMemo(
() => (hidePriorSkips ? buildDuplicateDismissHints(jobs) : undefined),
[hidePriorSkips, jobs],
@ -188,7 +181,7 @@ export const OrchestratorPage: React.FC = () => {
settingsBlockedEmployerKeywords: applySettingsCompanySkipList
? settingsSkipEmployerKeywords
: [],
searchGeographyCountryKey,
searchGeographyCountryKey: null,
duplicateDismissHints,
}),
[
@ -198,7 +191,6 @@ export const OrchestratorPage: React.FC = () => {
employerExcludeFilter,
applySettingsCompanySkipList,
settingsSkipEmployerKeywords,
searchGeographyCountryKey,
duplicateDismissHints,
],
);

View File

@ -257,7 +257,7 @@ export const OrchestratorFilters: React.FC<OrchestratorFiltersProps> = ({
employerIncludeFilter.length > 0 || employerExcludeFilter.length > 0,
) +
Number(!applySettingsCompanySkipList) +
Number(!hidePriorSkips) +
Number(hidePriorSkips) +
Number(sponsorFilter !== "all") +
Number(sponsorshipSignalsFilter.length > 0) +
Number(hideSponsorBlockers) +

View File

@ -436,7 +436,7 @@ export const useOrchestratorFilters = () => {
);
const hidePriorSkips = useMemo(
() => searchParams.get("hidePriorSkips") !== "0",
() => searchParams.get("hidePriorSkips") === "1",
[searchParams],
);
@ -458,8 +458,8 @@ export const useOrchestratorFilters = () => {
(value: boolean) => {
setSearchParams(
(prev) => {
if (value) prev.delete("hidePriorSkips");
else prev.set("hidePriorSkips", "0");
if (value) prev.set("hidePriorSkips", "1");
else prev.delete("hidePriorSkips");
return prev;
},
{ replace: true },