A mini reboot left searxng stopped, so briefings silently lost the
meta-search source (per-source isolation kept them publishing).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
No US session closes into Monday KST, so Mondays (default 07:00, cron
in the daemon with restart catch-up) now publish a weekly review built
entirely from stored data: the quotes table collapsed into week-over-
week changes and the week's daily briefing headlines as the narrative.
The recap is a BriefingResult kind="weekly" reusing MarketPayload, so
the store, verification pass, all delivery channels (Blogger title
"미국 주간 리뷰 <monday>") and the dashboard (주간 리뷰 badge) work
unchanged. Manual runs via `run-once --weekly [--date <monday>]`.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Blogger themes ship no table styling, so the quote tables rendered as
borderless text. Inline styles survive every theme and the mobile view.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The 9/1 briefing called the US 8/31 session "9월 첫 거래일" - the LLM
was anchoring on the KRX date. Both prompts now pin every temporal
phrase (weekday, first/last trading day, month boundaries) to the US
session date, and the verifier treats a mismatch as a major issue.
BloggerDeliverer now updates the existing post for the same KRX date
instead of creating a duplicate on resends.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Supports web-application OAuth clients with a pre-registered
http://127.0.0.1:<port> redirect URI; desktop clients keep the random
port default.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
BloggerDeliverer posts each briefing (markdown -> HTML, H1 becomes the
post title with the report headline) via the Blogger API v3 using a
long-lived refresh token; `us2kr blogger-auth` runs the loopback OAuth
flow once and prints the BLOGGER_* lines for .env. Enabled only when
all four BLOGGER_* settings are present.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
After summarisation the report is verified against the collected
payload (numbers, directions, unsupported claims) by a second LLM call
with a Verification JSON schema. Major issues trigger one revision and
a re-check; minor-only verdicts are normalized to ok. Failures never
block delivery. The verdict is stored in the result JSON and shown on
the dashboard (badge + 검증 메모). Disable with US2KR_VERIFY_ENABLED.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Drop the "요약 모델" footer from rendered briefings and the model badge
from the dashboard (degraded briefings keep a "요약 없음" chip). The
model is still recorded in the DB/result JSON for diagnostics.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
install-apple-container.sh builds and (re)starts both containers
(dashboard mounts reports/ read-only, port 8090); --boot installs a
LaunchAgent since Apple container has no restart policy. README covers
the new deploy path, SearXNG settings, and the dashboard.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Zero-runtime-dependency Node 24 server + esbuild-bundled client.
Reads reports/*.json only (never the daemon's SQLite/WAL): summary
card, dual Seoul/New York clocks, holiday-gap rows in the briefing
list, per-symbol close chart with table view, error log.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Optional meta-search source (SEARXNG_BASE_URL): per-query isolation,
time_range=day, merged and deduplicated with the RSS feeds. Briefings
still publish on RSS alone if the instance is down.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>