Commit Graph
15 Commits
Author SHA1 Message Date
krisf 92373aa3c6 fix(entrypoint): arm cron worker via self-ping after boot
instrumentationHook is disabled in the standalone build, so node-cron only
arms on POST /api/worker/ping. Without a self-ping, a fresh container or
restart runs zero ingest passes (worker silently never armed) — exactly
what happened on the :8 deploy. Adds the same self-ping block as
technews/finance entrypoints (identical).
2026-08-18 11:22:12 -04:00
krisf 08b9deb3d5 fix(pipeline): dedupe+P2002; add red maple-leaf cover system; replace dead CBC feeds (Google News CN / NatPost Canada); worker dead-letter 2026-08-18 10:24:09 -04:00
krisf 44d3220c4d UI: trim footer boilerplate, header tagline to 'Your Canadian News' 2026-08-16 08:39:24 -04:00
krisf 7a19afb63a llm: forbid source/newsroom attribution in synthesized report 2026-08-16 05:09:56 -04:00
krisf b5a25c1232 ui: remove source attribution + publisher rights notice 2026-08-16 05:01:26 -04:00
krisf b79c439c7f chore(gate): commit pre-push gate (secret -> build -> test, fail-closed)
- scripts/gate/gate.sh: 3-stage gate — 1) gitleaks, 2) build
  (tsc on commit, full next build on push), 3) LLM parse contract
  tests. Fail-closed: setup errors, timeouts, and findings all block.
- scripts/gate/hooks/{pre-commit,pre-push}: exec gate.sh commit|push.
- scripts/install/install-hooks.sh: idempotent installer (verifies repo
  root, bootstraps pinned gitleaks 8.30.1 if absent, wires both hooks).
- scripts/install/bootstrap-gitleaks.sh: pinned per-user install,
  x86_64/arm64, GitHub release download + SHA-less checksum pin.
- .gitleaks.toml: useDefault=true; single allowlist = .env.example
  placeholder lines (secret= and change-me values) by path+regex.
  Real secrets — even inside .env.example — still trip the gate
  (empirically verified: OpenAI/AWS/Slack/GitHub tokens all caught).
- tests/llm-parse.test.ts: pins parse.ts contracts (strict 6-paragraph
  body, headline/scalar/or array rejection, stopword rules, tag
  fallback) — the choke point for LLM output parsing.
- package.json: 'test' script.
- README: 'Commit gate' section (install, stages, verified fail-closed
  modes).

Verified before commit: clean tree PASSes all 3 stages; staged
realistic secret FAILs stage 1 (exit 1); broken type FAILs stage 2;
broken assertion FAILs stage 3; next build exit 0.
2026-08-16 00:27:41 -04:00
krisf 69f84e0bc6 fix(build): commit src/data/feeds.ts — blanket data/ gitignore was hiding committed source, breaking pristine builds 2026-08-15 23:19:37 -04:00
krisf d1bf2962ff final cut: remaining synthesis wording (package.json, Dockerfile env) 2026-08-15 22:52:24 -04:00
krisf 478ff07bc5 drop all synthesis wording + sources box; 3->6 paragraphs, deeper prompt, 1.6k tok 2026-08-15 22:41:35 -04:00
krisf 9ebc3bffab fix: mobile hero overlay — stop Lead-briefing badge clipping 2026-08-15 22:07:56 -04:00
krisf 9210dc8f14 fix(mobile): hide inline header nav below md; add overflow-x:clip guard
Header NavLinks (Top Stories/Canada/National/All) always rendered and
overflowed the ~360-400px viewport, causing whole-page horizontal
scroll + wrapped/bleeding active pill. Now hidden on phones (the
horizontally-scrolling SectionPills row under the header remains the
mobile nav); inline nav returns at md (768px). Added overflow-x:clip on
html as a global NOOP-safe against any future sideways overflow.
2026-08-15 19:52:53 -04:00
krisf cbea5e8fa4 deploy: Dockerfile, entrypoint, standalone output, dockerignore 2026-08-15 18:11:41 -04:00
krisf e709de01d4 merge: fold in Gitea template init 2026-08-15 16:07:18 -04:00
krisf 1010f27f44 MapleBrief: production Canadian news aggregator
Next.js 14 + TypeScript + Tailwind + Prisma/SQLite.
- LLM synthesis abstraction (OpenAI/Anthropic/Ollama) + admin settings UI
- RSS ingestion pipeline (parser + cheerio content) + node-cron worker
- AdSense AdUnit placements (header/in-feed/in-article/sidebar)
- Sources analysis attribution, nofollow links, canonical/OG, sitemap/robots
- Admin auth (ADMIN_API_KEY, timingSafeEqual, fail-closed 401)
- Multi-cell lady-ga-ga marker, sitemap, robots, legal pages
- Comprehensive README (setup, LLM config, AdSense, migrations, deploy)
2026-08-15 16:07:07 -04:00
krisf 9e8e785b1e Initial commit 2026-08-15 14:13:00 -04:00