fluncle 0.175.0 → 0.177.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/bin/fluncle.mjs +19 -7
- package/package.json +1 -1
package/bin/fluncle.mjs
CHANGED
|
@@ -561,7 +561,7 @@ function parseVersion(version) {
|
|
|
561
561
|
var currentVersion;
|
|
562
562
|
var init_version = __esm(() => {
|
|
563
563
|
init_output();
|
|
564
|
-
currentVersion = "0.
|
|
564
|
+
currentVersion = "0.177.0".trim() ? "0.177.0".trim() : "0.1.0";
|
|
565
565
|
});
|
|
566
566
|
|
|
567
567
|
// src/update-notifier.ts
|
|
@@ -2259,7 +2259,7 @@ function parseVersion2(version) {
|
|
|
2259
2259
|
var currentVersion2, latestReleaseUrl = "https://api.github.com/repos/mauricekleine/fluncle/releases/latest";
|
|
2260
2260
|
var init_version2 = __esm(() => {
|
|
2261
2261
|
init_output();
|
|
2262
|
-
currentVersion2 = "0.
|
|
2262
|
+
currentVersion2 = "0.177.0".trim() ? "0.177.0".trim() : "0.1.0";
|
|
2263
2263
|
});
|
|
2264
2264
|
|
|
2265
2265
|
// ../../packages/registry/src/index.ts
|
|
@@ -3125,7 +3125,7 @@ var init_src = __esm(() => {
|
|
|
3125
3125
|
],
|
|
3126
3126
|
kind: "cron",
|
|
3127
3127
|
name: "cron.label-releases",
|
|
3128
|
-
operatorNotes: "every 24h, run by a rave-02 HOST systemd timer (docs/agents/hermes/label-releases-timer/). The FRESHNESS TAP (D8): MusicBrainz WALKS the graph (cron.crawl) but lags a release ~2 weeks; Spotify has it day one, so this searches each ENABLED seed label's fresh releases (`label:\"<name>\" tag:new
|
|
3128
|
+
operatorNotes: "every 24h, run by a rave-02 HOST systemd timer (docs/agents/hermes/label-releases-timer/). The FRESHNESS TAP (D8): MusicBrainz WALKS the graph (cron.crawl) but lags a release ~2 weeks; Spotify has it day one, so this searches each ENABLED seed label's fresh releases (`label:\"<name>\" tag:new`) and mints METADATA-ONLY catalogue rows (a `tracks` row with no `findings` row) with their real release dates — closing the /fresh lag cliff. The fuzzy `label:` search is gated on TWO signals before an album mints onto public /fresh: an album's Spotify artist must already be in our archive (`artists.spotify_artist_id` — the primary identity/genre anchor that stops cross-genre homonym junk) AND the album's ℗/© copyright must EXACTLY match the seed label (a brand-new artist's debut is skipped until the MB crawl backfills them). It certifies nothing, publishes nothing, and never widens the graph (no new labels, no artist hops). Deduped against the MB crawl from both directions (Spotify id/uri/ISRC + same-album title fold). Worker-paced, reusing the publish path's Spotify OAuth (no new secret; Apple was a measured 2/99 seed-label dead end). Zero LLM tokens. Source: docs/agents/hermes/scripts/label-releases-sweep.*. See docs/catalogue-crawler.md.",
|
|
3129
3129
|
probeConfig: {
|
|
3130
3130
|
cadenceMs: 24 * 60 * MINUTE_MS,
|
|
3131
3131
|
cronName: "fluncle-label-releases",
|
|
@@ -10389,6 +10389,9 @@ async function runBackfillLabelReleases(options, backfillLabelReleasesCommand2)
|
|
|
10389
10389
|
let albumsMatched = 0;
|
|
10390
10390
|
let newRows = 0;
|
|
10391
10391
|
let skippedKnown = 0;
|
|
10392
|
+
let skippedUngrounded = 0;
|
|
10393
|
+
let failedFetches = 0;
|
|
10394
|
+
let fetchCeilingHit = false;
|
|
10392
10395
|
const MAX_PASSES = 100;
|
|
10393
10396
|
for (let pass = 0;pass < MAX_PASSES; pass += 1) {
|
|
10394
10397
|
const result = await backfillLabelReleasesCommand2(perPass, options.dryRun);
|
|
@@ -10399,12 +10402,15 @@ async function runBackfillLabelReleases(options, backfillLabelReleasesCommand2)
|
|
|
10399
10402
|
albumsMatched += result.albumsMatched;
|
|
10400
10403
|
newRows += result.newRows;
|
|
10401
10404
|
skippedKnown += result.skippedKnown;
|
|
10405
|
+
skippedUngrounded += result.skippedUngrounded;
|
|
10406
|
+
failedFetches += result.failedFetches;
|
|
10407
|
+
fetchCeilingHit = fetchCeilingHit || result.fetchCeilingHit;
|
|
10402
10408
|
newTrackIds.push(...result.newTrackIds);
|
|
10403
10409
|
labelSlugs.push(...result.labelSlugs);
|
|
10404
10410
|
failedLabels.push(...result.failedLabels);
|
|
10405
10411
|
if (!options.json) {
|
|
10406
10412
|
const verb2 = result.dryRun ? "would probe" : "probed";
|
|
10407
|
-
console.log(` \u2026${verb2} ${result.labelSlugs.length} label(s); ${result.albumsMatched} matched album(s); ${result.newRows} new; ${result.skippedKnown} known; ${result.failedLabels.length}
|
|
10413
|
+
console.log(` \u2026${verb2} ${result.labelSlugs.length} label(s); ${result.albumsMatched} matched album(s); ${result.newRows} new; ${result.skippedKnown} known; ${result.skippedUngrounded} ungrounded; ${result.failedFetches} fetch-fail; ${result.failedLabels.length} search-fail`);
|
|
10408
10414
|
}
|
|
10409
10415
|
if (!result.configured) {
|
|
10410
10416
|
break;
|
|
@@ -10426,13 +10432,16 @@ async function runBackfillLabelReleases(options, backfillLabelReleasesCommand2)
|
|
|
10426
10432
|
albumsSeen,
|
|
10427
10433
|
configured,
|
|
10428
10434
|
dryRun,
|
|
10435
|
+
failedFetches,
|
|
10429
10436
|
failedLabels,
|
|
10437
|
+
fetchCeilingHit,
|
|
10430
10438
|
labelSlugs,
|
|
10431
10439
|
labelsProbed,
|
|
10432
10440
|
newRows,
|
|
10433
10441
|
newTrackIds,
|
|
10434
10442
|
rateLimited: throttled,
|
|
10435
|
-
skippedKnown
|
|
10443
|
+
skippedKnown,
|
|
10444
|
+
skippedUngrounded
|
|
10436
10445
|
}, 0);
|
|
10437
10446
|
return;
|
|
10438
10447
|
}
|
|
@@ -10442,9 +10451,12 @@ async function runBackfillLabelReleases(options, backfillLabelReleasesCommand2)
|
|
|
10442
10451
|
}
|
|
10443
10452
|
const verb = dryRun ? "Would probe" : "Probed";
|
|
10444
10453
|
const probedCount = dryRun ? labelSlugs.length : labelsProbed;
|
|
10445
|
-
console.log(`${verb} ${probedCount} enabled seed label(s); ${albumsMatched} matched album(s); ${newRows} new catalogue row(s); ${skippedKnown} already known; ${failedLabels.length}
|
|
10454
|
+
console.log(`${verb} ${probedCount} enabled seed label(s); ${albumsMatched} matched album(s); ${newRows} new catalogue row(s); ${skippedKnown} already known; ${skippedUngrounded} dropped for no known artist; ${failedFetches} fetch-fail; ${failedLabels.length} search-fail.`);
|
|
10455
|
+
if (fetchCeilingHit) {
|
|
10456
|
+
console.log(" (a pass ended early on the single-fetch ceiling \u2014 resumes next tick)");
|
|
10457
|
+
}
|
|
10446
10458
|
for (const slug of failedLabels) {
|
|
10447
|
-
console.log(`
|
|
10459
|
+
console.log(` search error: ${slug}`);
|
|
10448
10460
|
}
|
|
10449
10461
|
}
|
|
10450
10462
|
async function runBackfillArtists(options, backfillArtistsCommand2) {
|
package/package.json
CHANGED