{"slug":"agent-ad-network","total":12,"limit":100,"offset":0,"since":null,"commits":[{"hash":"bc7c166","date":"2026-08-30 23:54:36 -0700","author":"Steve Abrams","subject":"add .deploy.conf (data-excluded) for guard deploy (TK-10984)","body":""},{"hash":"c065b88","date":"2026-08-30 22:58:27 -0700","author":"Steve Abrams","subject":"add creds-in-URL fetch guard to gated pages (TK-10984)","body":""},{"hash":"ae1dde9","date":"2026-08-04 11:54:52 -0700","author":"Steve Abrams","subject":"Add DW Display Network admin UI (/admin/display): KPIs, live slot preview, embed generator, promo/site/paid tables + /admin/api/display aggregator + site/slot event logging","body":""},{"hash":"d6af20e","date":"2026-08-04 11:09:05 -0700","author":"Steve Abrams","subject":"Add DW-network web display surface: /serve/display + /embed.js + /cp promo clicks + DW cross-promo pool (all ad links rel=nofollow sponsored)","body":""},{"hash":"eb5205f","date":"2026-08-02 07:09:51 -0700","author":"Steve Abrams","subject":"README: public landing surface + domain-ownership note (ads.agentabrams.com = this app; dashboard stays on ads.dw)","body":""},{"hash":"3ffe56e","date":"2026-08-02 07:06:47 -0700","author":"Steve Abrams","subject":"public landing page: no-auth / with anonymized numbers-only three.js ad galaxy (opaque HMAC ids, no copy/sponsor/url leak), live totals via new public /api/galaxy, advertiser self-serve curl walkthrough, public /assets/three.min.js; /admin unchanged behind auth (TK-10131)","body":""},{"hash":"2428013","date":"2026-08-02 06:39:21 -0700","author":"Steve Abrams","subject":"live-viz dashboard: three.js ad galaxy (advertiser hubs, status-colored orbiting ad nodes, impression pulses, drag/zoom) + live charts (60-min traffic, unique users, status donut) via new /admin/api/timeseries; ip on impression/click events; vendored three.min.js r147 served same-origin (CSP intact) (TK-10131)","body":""},{"hash":"32129f3","date":"2026-08-02 01:32:49 -0700","author":"Steve","subject":"security hardening: pending-until-approved moderation gate, ANSI/control-char sanitization, URL validation at create+click, per-IP rate limits, timing-safe auth, admin XSS escaping, security headers/CSP, bounded events reads + rotation, capacity caps (TK-10131)","body":""},{"hash":"e3ccc11","date":"2026-08-02 01:12:40 -0700","author":"Steve Abrams","subject":"README: live at ads.agentabrams.com + Stripe TEST rails status","body":""},{"hash":"bbba5de","date":"2026-08-02 01:12:06 -0700","author":"Steve Abrams","subject":"Stripe TEST-mode billing: checkout + signature-verified webhook + balance credit + setup script; https clickUrl","body":""},{"hash":"d3d3416","date":"2026-08-02 01:08:34 -0700","author":"Steve Abrams","subject":"accept dbrown second admin credential (standing rule)","body":""},{"hash":"27f2afe","date":"2026-08-02 00:14:04 -0700","author":"Steve Abrams","subject":"initial scaffold: agent ad network MVP — ad server + self-serve API + waitad SDK + admin (TK-10131)","body":""}]}