kairee
e40905da24
feat(web): unify home published/growth cards with heat-strip vertical layout
2026-11-01 17:18:42 +08:00
kairee
7907216c1b
feat(web): add interactions-per-hour stat to up page
2026-11-01 17:09:25 +08:00
kairee
84ce1e41e8
feat(web): visit 204 response, up page header/sort, trim system page
2026-11-01 17:06:26 +08:00
kairee
e3bd2e601b
fix(web): always drain visit request body to keep keep-alive connections aligned
2026-11-01 15:41:47 +08:00
kairee
b215f8eb09
feat(web): report page views via sendBeacon and show stats on system page
2026-11-01 15:36:42 +08:00
kairee
3c16caac1a
feat(stats): buffer visits in memory and expose POST /api/visit + /api/stats
2026-11-01 15:34:53 +08:00
kairee
cdd11823b9
feat(stats): add migration v7 visit table and client-ip helpers
2026-11-01 15:29:43 +08:00
kairee
b0c53e8a2f
fix(ingest): raise ref cap to 50 and clarify invalid bvid error
2026-11-01 15:05:17 +08:00
kairee
b5bf7d9b8f
feat(web): drop decoupled folder badge from video detail
2026-11-01 14:45:28 +08:00
kairee
5d7521075a
feat(web): show first-RE time on up page, drop decoupled folder badges
2026-11-01 14:41:32 +08:00
kairee
2ff3e7952b
feat(web): up avatars, follower count, and dedupe views/avg secondary
2026-11-01 14:34:23 +08:00
kairee
1ed3746f4b
feat(web): clickable home stats, drop recent-ingest panel, rename watch link
2026-11-01 14:19:27 +08:00
kairee
bfde231b90
feat(cli): capture up follower on manual ingest
2026-11-01 14:10:05 +08:00
kairee
6c4287b43a
refactor(sync): drop favorite-folder tracking and deal
2026-11-01 13:59:10 +08:00
kairee
62abbd7ea1
feat(ingest): db-only library ingest and telegram manual ingest
2026-11-01 13:50:03 +08:00
kairee
d2adb65e08
feat(ingest): parse video refs and fetch detail by bvid
2026-11-01 13:46:46 +08:00
kairee
e903c49921
fix(up): hard timeout and progress for follower capture
2026-11-01 13:24:56 +08:00
kairee
98cf42a113
style(web): cap ranking search box at 320px
2026-11-01 12:59:38 +08:00
kairee
d00fcd5c38
feat(web): inline toolbar with label sort, compact time, icon search
2026-11-01 12:56:37 +08:00
kairee
9be7d1cab2
feat(web): dropdown sort and time filters with year support
2026-11-01 12:45:40 +08:00
kairee
bc3bef0743
fix(analytics): shrink video efficiency and gate noisy boards by views
2026-11-01 12:25:27 +08:00
kairee
e7034cfb84
feat(analytics): lower maturity window to 2 days and reword about page
2026-11-01 12:07:47 +08:00
kairee
c0b0286395
feat(web): split video and up rankings and add about page
2026-11-01 11:33:15 +08:00
kairee
5a656d42a8
feat(web): add duration efficiency rankings and about payload
2026-11-01 11:21:42 +08:00
kairee
519fc39fca
feat(up): capture follower snapshots at ingest and backfill history
2026-11-01 11:18:06 +08:00
kairee
4942d1d161
feat(db): add video pages and up follower snapshot schema
2026-11-01 11:14:36 +08:00
kairee
9fd277c05f
feat(web): cache dashboard aggregations with version invalidation
2026-11-01 03:27:49 +08:00
kairee
6aefe9ce87
feat(web): require login only for candidates and system
2026-11-01 03:09:21 +08:00
kairee
028b3337b0
fix(web): keep fan range picker open until apply
2026-11-01 02:47:31 +08:00
kairee
917a93ab92
feat(web): use a range calendar picker for fan dates
2026-11-01 02:44:33 +08:00
kairee
274eccba93
feat(web): add fan date range modes and delta column
2026-11-01 02:36:48 +08:00
kairee
d8e9a7b0f0
feat(web): show cumulative fan range and limit recent records
2026-11-01 02:14:10 +08:00
kairee
b6a9f598b5
fix(web): avoid skeleton flicker and cache overview while filtering
2026-11-01 02:02:26 +08:00
kairee
52a8d90c47
feat(web): use history routing and preserve scroll on filter changes
2026-11-01 01:55:37 +08:00
kairee
1b08854b25
fix(web): revalidate app assets and rename compose example
2026-11-01 01:42:26 +08:00
kairee
eff4b0149d
fix(web): show exact trend values and integer axis ticks
2026-11-01 01:37:55 +08:00
kairee
c2ef998720
feat(web): refresh palette, simplify ranking toolbar and drop export
2026-11-01 00:37:20 +08:00
kairee
f9a5478800
fix(web): fix UP card layout and fan delta semantics
2026-11-01 00:06:43 +08:00
kairee
7fcd1db987
fix(web): count initial import from tracked videos
2026-10-31 23:54:56 +08:00
kairee
456e06f105
chore(web): finalize scroll behavior and preview assertions
2026-10-31 23:54:01 +08:00
kairee
60d7b0f24f
fix(web): center active filters and compact mobile cards
2026-10-31 23:50:19 +08:00
kairee
cbba405271
feat(web): add mobile-first read-only dashboard frontend
2026-10-31 23:46:55 +08:00
kairee
257fbe009b
fix(web): align trend ranges, next runs and preview task records
2026-10-31 23:46:49 +08:00
kairee
19572171b8
feat(web): add read-only dashboard server and query layer
2026-10-31 23:13:54 +08:00
kairee
8ffac5103f
feat(analytics): add heat, growth and interaction metrics
2026-10-31 23:03:20 +08:00
kairee
5b22ed1c5d
feat(http): use httpx with pooled connections and browser headers
...
Add httpx and route Bilibili and Telegram requests through pooled clients with keepalive and explicit timeouts. Align Bilibili headers with data/raw-request.txt: Chrome 155 UA, sec-ch-ua, space.bilibili.com origin, folder-specific referer, and priority header. Close replaced clients when credentials change. Add transport contract tests and live read-only validation for nav, folder sync, WBI search, and Telegram getUpdates.
2026-10-31 22:28:32 +08:00
kairee
71a0e8c1d6
fix(telegram): back off on transient polling failures
...
Give getUpdates a wider HTTP timeout than the long-poll window, log transient SSL/network disconnects as warnings, apply exponential backoff with recovery logging, and only escalate to error after five consecutive failures.
2026-10-31 22:01:05 +08:00
kairee
2d42d8ed55
fix(telegram): handle expired callback queries gracefully
...
Parse Telegram HTTP error bodies so the real description is logged, fall back to a normal message when answerCallbackQuery rejects an expired callback ID, and remove inline buttons after a successful action.
2026-10-31 21:59:04 +08:00
kairee
e2e4dc3336
fix(telegram): dedupe candidates before sending
...
Deduplicate candidates by aid at the notifier boundary so duplicate queue entries cannot produce repeated message bodies and button rows. The discovery layer already deduped by aid; this adds defense in depth with a regression test.
2026-10-31 21:55:10 +08:00
kairee
d971e718e9
feat(p3): add discovery, telegram notifications, and one-click favorites
...
Implement WBI video search with legacy fallback, classification scoring, candidate pool, permanent seen-aid dedupe, blacklist filtering, and batched Telegram notifications. Add write client for fav deal/sort, target-folder selection, insertion position calculation, read-back verification, fav_action locking, retry on failure, ignore and blacklist actions. Wire discovery, candidate cleanup, Telegram long polling, and new discover/candidates CLI commands into the scheduler. Add migration v3 for candidate duration and index stats.
2026-10-31 21:23:12 +08:00