qiksy 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qiksy",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Qiksy \u2014 one local engine for every Qiksy tool (Work Finder, Travel Assistant, Client Finder). Runs on your own Claude; nothing leaves your machine.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -33,7 +33,11 @@ function defaults() {
|
|
|
33
33
|
re-read every pass. Three days was aggressive enough to hide most of the
|
|
34
34
|
market; two weeks is still "current" and leaves something to find. */
|
|
35
35
|
freshnessFrom: 0,
|
|
36
|
-
|
|
36
|
+
/* Seven days, not fourteen (owner decision 2026-07-26). A wider window mostly
|
|
37
|
+
buys older postings that nobody answers any more, at the cost of the agent
|
|
38
|
+
re-reading them — slower AND more of the person's Claude quota for less. The
|
|
39
|
+
window is a setting, so "dig deeper" stays one control away. */
|
|
40
|
+
freshnessDays: 7,
|
|
37
41
|
/* How many sweeps at most. Unbounded would spend the user's whole Claude
|
|
38
42
|
quota in one night; two barren sweeps in a row also end it early. */
|
|
39
43
|
maxSweeps: 6,
|
|
@@ -212,8 +212,21 @@ function startSearch(position, run = null) {
|
|
|
212
212
|
const sweep = async (wave) => {
|
|
213
213
|
const exclude = db.vacancies.filter(v => v.positionId === position.id).map(v => v.company);
|
|
214
214
|
const before = added;
|
|
215
|
+
/* The FIRST wave is deliberately smaller. Measured on a live run 2026-07-26: the
|
|
216
|
+
first finds landed after ~7 minutes and the next 20 minutes added two more —
|
|
217
|
+
so the person was made to wait for a tail they could have been working through.
|
|
218
|
+
A short first wave gets them a usable list fast; the rest keeps arriving behind
|
|
219
|
+
them, and the UI now says so. Later waves go back to full size. */
|
|
220
|
+
const perWave = wave === 1
|
|
221
|
+
? Math.min(12, db.settings.resultsPerSearch ?? 20)
|
|
222
|
+
: (db.settings.resultsPerSearch ?? 20);
|
|
223
|
+
const waveSettings = { ...db.settings, resultsPerSearch: perWave };
|
|
224
|
+
// The app shows "wave 2 of 6" from these — a log line in Russian could not be
|
|
225
|
+
// translated, and a run with no visible progress reads as a hang.
|
|
226
|
+
job.wave = wave;
|
|
227
|
+
job.waves = maxSweeps;
|
|
215
228
|
const r = await runClaude({
|
|
216
|
-
prompt: searchPrompt(position, profile, exclude,
|
|
229
|
+
prompt: searchPrompt(position, profile, exclude, waveSettings, { wave, waves: maxSweeps, canNarrow: effectivePlanId() !== 'free' }),
|
|
217
230
|
allowedTools: ['WebSearch', 'WebFetch'],
|
|
218
231
|
withBrowser: !!db.settings.searchViaBrowser,
|
|
219
232
|
model: db.settings.model,
|