aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* justfile cleanupHEADmainSam Scholten24 hours
|
* .Sam Scholten24 hours
|
* improve time stampsSam Scholten25 hours
|
* fix read/star label issueSam Scholten25 hours
|
* compact-labels: rebalance negative history to the per-feed ceilingSam Scholten9 days
| | | | | | | | The single documented exception to labels.jsonl's append-only rule: trims feeds over the ceiling (keeping each one's NEWEST negatives), positives untouched, LABELS.bak written first, idempotent, --dry-run. Existence justified by the ceiling only bounding the future, while pre-cap history would otherwise never age out.
* export: per-feed negative ceiling (--neg-feed-cap-pct)Sam Scholten9 days
| | | | | | | | | No feed may hold more than 5% (floor 50) of the negative target, counting existing history: uncapped, a few firehoses own the negative class because the read+unstarred pool is sized by feed volume. Enforced by skipping ceiling-full feeds mid seeded permutation walk; shortfall vs the ratio is reported, neg_capped added to the run summary. Also makes bulk mark-read of high-volume feeds safe for training data.
* feeds: subscription audit command (per-feed volume + star stats)Sam Scholten9 days
| | | | | | | GET /v1/feeds + feed_id entries filter in the client, one cheap volume probe per feed over a --days window, star stats joined from labels.jsonl by feed id, category column, --min-per-day/--min-seen filters. Read-only; justfile recipe with one-line doc comments throughout.
* serve: POST /api/poll manual trigger; rename feed to FluxrecsSam Scholten2026-08-30
| | | | | | | | | /api/poll runs an out-of-schedule poll through the same serialized path as the scheduler (TryLock, so curls and refreshes can't race the cursor), is POST-only, and 429s inside a 1-minute cooldown after any run. Response is JSON: polled/new_run plus the fresh row's stats when entries arrived. Also rename the RSS channel to Fluxrecs (Miniflux adopts upstream title changes as the feed name). just poll-now wraps the curl.
* rss: render score head as HTML paragraphSam Scholten2026-08-30
| | | | | | | Descriptions render as sanitized HTML in readers, where bare newlines collapse and the feed/score line ran into the article text. Wrap the headline in <p><em> so it breaks cleanly and reads as metadata, escaped on the wire by encoding/xml as description-carried HTML should be.
* rss: provenance + score calibration in itemsSam Scholten2026-08-30
| | | | | | | | | Item titles gain a rune-capped source-feed suffix so list views (which only ever show the channel title) display provenance inline. Item bodies open with feed, model score, and the batch-wide score median; the median is computed over every scored entry at poll time and stored on the run row as a nil-safe pointer, so old rows render without it. /api/status exposes the median too.
* deploy: drop ineffective mkdir, document state-dir bootstrapSam Scholten2026-08-30
|
* Containerfile: run as uid 1000 to match bind-mount ownerSam Scholten2026-08-30
|
* drop stale references to local-only planning docsSam Scholten2026-08-30
|
* justfile: deploy model to ~/fluxrec-data, restart via composeSam Scholten2026-08-30
|
* fluxrec: personal Miniflux article recommenderSam Scholten2026-08-30