Marketing Command Center
Search the build
-
8ebc0702026-09-26 auto-data-snapshot: 2026-09-26T17:20:23 (1 data files) — public/ig-activity.json -
9638cdc2026-09-26 auto-data-snapshot: 2026-09-26T16:49:35 (1 data files) — public/ig-activity.json -
614fb5e2026-09-26 auto-data-snapshot: 2026-09-26T16:19:05 (1 data files) — public/ig-activity.json -
21ef6a42026-09-26 auto-data-snapshot: 2026-09-26T15:18:06 (1 data files) — public/ig-activity.json -
5cf26b12026-09-26 auto-data-snapshot: 2026-09-26T14:47:36 (1 data files) — public/ig-activity.json -
736f6032026-09-26 auto-data-snapshot: 2026-09-26T14:17:06 (1 data files) — public/ig-activity.json -
9cd25832026-09-26 auto-data-snapshot: 2026-09-26T13:46:36 (1 data files) — public/ig-activity.json -
2b74b8d2026-09-26 auto-data-snapshot: 2026-09-26T13:16:02 (1 data files) — public/ig-activity.json -
b1173c42026-09-26 auto-data-snapshot: 2026-09-26T12:44:57 (1 data files) — public/ig-activity.json -
367ae592026-09-26 auto-data-snapshot: 2026-09-26T12:14:18 (1 data files) — public/ig-activity.json -
f1a8d442026-09-26 auto-data-snapshot: 2026-09-26T11:43:40 (1 data files) — public/ig-activity.json -
8b241fc2026-09-26 auto-data-snapshot: 2026-09-26T11:13:09 (1 data files) — public/ig-activity.json -
c0f87762026-09-26 auto-data-snapshot: 2026-09-26T10:42:21 (1 data files) — public/ig-activity.json -
933b1212026-09-26 ig-activity: use shared ordered Norma auth (IG_AGENT_AUTH -> agent .env -> NORMA_IG_PASS) instead of stale NORMA_IG_PASS (TK-12342) -
25c76782026-09-26 auto-data-snapshot: 2026-09-26T09:40:15 (1 data files) — public/ig-activity.json -
af0204b2026-09-26 TK-11856 rc-propagation (RSYNC): mcc-clients-refresh propagates extract/crawl/enrich/manifest/rsync rc -
f88c44a2026-09-26 follow-counts: read Norma auth from secrets-manager IG_AGENT_AUTH first, fall through on 401/403 to instagram-agent .env then NORMA_IG_PASS (TK-12327) -
c82763c2026-09-26 auto-data-snapshot: 2026-09-26T08:50:16 (3 data files) — data/com.steve.dw-follow-counts.plist.bak-TK-12008 data/follow-counts-history.json.bak-TK-12008 public/ig-activity.json -
8377f042026-09-26 follow-counts: write no row on failure + exit 2 (no SIMULATED nulls, TK-11431 class); timestamp every attempt; job 06:05->07:05 clear of 5am fleet restart (TK-12008) -
14cd75b2026-09-26 auto-data-snapshot: 2026-09-26T08:19:11 (1 data files) — public/ig-activity.json -
84614b42026-09-26 auto-data-snapshot: 2026-09-26T07:48:27 (1 data files) — data/vendor-linkedin-cache.json -
a8b9d6f2026-09-25 auto-data-snapshot: 2026-09-25T20:06:56 (1 data files) — public/ig-activity.json -
fb20d032026-09-25 auto-data-snapshot: 2026-09-25T19:36:29 (1 data files) — public/ig-activity.json -
80835d32026-09-25 auto-data-snapshot: 2026-09-25T19:06:05 (1 data files) — public/ig-activity.json -
dfaa4872026-09-25 auto-data-snapshot: 2026-09-25T18:05:08 (1 data files) — public/ig-activity.json -
d014dcc2026-09-25 auto-data-snapshot: 2026-09-25T17:34:43 (1 data files) — public/ig-activity.json -
da31ada2026-09-25 auto-data-snapshot: 2026-09-25T17:04:17 (1 data files) — public/ig-activity.json -
c02d39f2026-09-25 auto-data-snapshot: 2026-09-25T16:33:34 (1 data files) — public/ig-activity.json -
f232ea22026-09-25 auto-data-snapshot: 2026-09-25T14:28:14 (1 data files) — public/ig-activity.json -
bd903cd2026-09-25 follow-counts: read Norma instagram-agent .env for Basic-auth (stale NORMA_IG_PASS caused 403 'Invalid credentials'); retry boot-race connection errors (TK-12008) -
f9ac1122026-09-25 auto-data-snapshot: 2026-09-25T13:56:04 (1 data files) — public/ig-activity.json -
73a194a2026-09-25 auto-data-snapshot: 2026-09-25T13:25:27 (1 data files) — public/ig-activity.json -
e97e3e72026-09-25 auto-data-snapshot: 2026-09-25T12:54:38 (1 data files) — public/ig-activity.json -
b09f4d72026-09-25 auto-data-snapshot: 2026-09-25T11:23:40 (1 data files) — public/ig-activity.json -
686d4932026-09-25 auto-data-snapshot: 2026-09-25T10:52:57 (1 data files) — public/ig-activity.json -
36bf0272026-09-25 auto-data-snapshot: 2026-09-25T10:22:25 (1 data files) — public/ig-activity.json -
a607b9d2026-09-25 auto-data-snapshot: 2026-09-25T09:51:23 (1 data files) — public/ig-activity.json -
c498a932026-09-25 auto-data-snapshot: 2026-09-25T08:43:42 (1 data files) — public/ig-activity.json -
d1034c32026-09-25 auto-data-snapshot: 2026-09-25T07:42:43 (1 data files) — data/vendor-linkedin-cache.json -
8703d2d2026-09-24 auto-data-snapshot: 2026-09-24T19:59:12 (1 data files) — public/ig-activity.json -
382c5ef2026-09-24 auto-data-snapshot: 2026-09-24T18:58:12 (1 data files) — public/ig-activity.json -
d2731742026-09-24 auto-data-snapshot: 2026-09-24T18:27:35 (1 data files) — public/ig-activity.json -
2a1dba12026-09-24 auto-data-snapshot: 2026-09-24T17:57:06 (1 data files) — public/ig-activity.json -
89aaf782026-09-24 auto-data-snapshot: 2026-09-24T15:23:04 (1 data files) — public/ig-activity.json -
563029a2026-09-24 auto-data-snapshot: 2026-09-24T14:52:05 (1 data files) — public/ig-activity.json -
22b0d162026-09-24 auto-data-snapshot: 2026-09-24T14:21:31 (1 data files) — public/ig-activity.json -
72665672026-09-24 auto-data-snapshot: 2026-09-24T13:51:00 (2 data files) — public/ig-activity.json scripts/.li-cma-watch-seen.json -
26dbf492026-09-24 auto-data-snapshot: 2026-09-24T12:49:23 (1 data files) — public/ig-activity.json -
c28abd42026-09-24 auto-data-snapshot: 2026-09-24T12:18:37 (1 data files) — public/ig-activity.json -
4d87f3a2026-09-24 auto-data-snapshot: 2026-09-24T11:48:03 (1 data files) — public/ig-activity.json -
701cd392026-09-24 auto-data-snapshot: 2026-09-24T11:17:31 (1 data files) — public/ig-activity.json -
d0880062026-09-24 auto-data-snapshot: 2026-09-24T10:15:55 (1 data files) — public/ig-activity.json -
a2628342026-09-24 auto-data-snapshot: 2026-09-24T09:44:11 (1 data files) — public/ig-activity.json -
db9d9c52026-09-24 auto-data-snapshot: 2026-09-24T09:12:24 (1 data files) — public/ig-activity.json -
2fd31972026-09-24 auto-data-snapshot: 2026-09-24T08:40:54 (1 data files) — public/ig-activity.json -
3a8a3822026-09-24 auto-data-snapshot: 2026-09-24T08:09:22 (1 data files) — data/vendor-linkedin-cache.json -
145b5072026-09-24 auto-data-snapshot: 2026-09-24T07:37:57 (1 data files) — data/vendor-linkedin-cache.json -
945fee52026-09-23 auto-data-snapshot: 2026-09-23T19:33:27 (1 data files) — public/ig-activity.json -
aa031c92026-09-23 auto-data-snapshot: 2026-09-23T19:02:06 (1 data files) — public/ig-activity.json -
0877d2d2026-09-23 auto-data-snapshot: 2026-09-23T18:30:30 (1 data files) — public/ig-activity.json -
cd8cc6d2026-09-23 auto-data-snapshot: 2026-09-23T17:59:00 (1 data files) — public/ig-activity.json -
debd90b2026-09-23 auto-data-snapshot: 2026-09-23T16:24:32 (1 data files) — public/ig-activity.json -
bad37ba2026-09-23 auto-data-snapshot: 2026-09-23T15:21:10 (1 data files) — public/ig-activity.json -
151b7062026-09-23 auto-data-snapshot: 2026-09-23T14:48:42 (1 data files) — public/ig-activity.json -
d06528d2026-09-23 auto-data-snapshot: 2026-09-23T14:17:00 (1 data files) — public/ig-activity.json -
e5a77c32026-09-23 auto-data-snapshot: 2026-09-23T13:45:21 (1 data files) — public/ig-activity.json -
bc843462026-09-23 auto-data-snapshot: 2026-09-23T12:42:16 (1 data files) — public/ig-activity.json -
244b6372026-09-23 auto-data-snapshot: 2026-09-23T12:09:58 (1 data files) — public/ig-activity.json -
f4e33e12026-09-23 auto-data-snapshot: 2026-09-23T11:38:28 (1 data files) — public/ig-activity.json -
44558382026-09-23 auto-data-snapshot: 2026-09-23T11:06:44 (1 data files) — public/ig-activity.json -
a32a3942026-09-23 auto-data-snapshot: 2026-09-23T10:35:16 (1 data files) — public/ig-activity.json -
4a39a882026-09-23 auto-data-snapshot: 2026-09-23T10:03:20 (1 data files) — public/ig-activity.json -
b01016e2026-09-23 auto-data-snapshot: 2026-09-23T08:59:35 (1 data files) — public/ig-activity.json -
708aba52026-09-23 auto-data-snapshot: 2026-09-23T08:28:09 (1 data files) — public/ig-activity.json -
7b35d8c2026-09-23 auto-data-snapshot: 2026-09-23T07:56:48 (1 data files) — data/vendor-linkedin-cache.json -
09fefec2026-09-22 auto-data-snapshot: 2026-09-22T20:24:44 (1 data files) — public/ig-activity.json -
5e417532026-09-22 auto-data-snapshot: 2026-09-22T19:53:25 (1 data files) — public/ig-activity.json -
42ac55a2026-09-22 auto-data-snapshot: 2026-09-22T18:50:47 (1 data files) — public/ig-activity.json -
53697fa2026-09-22 auto-data-snapshot: 2026-09-22T18:19:13 (1 data files) — public/ig-activity.json -
c46917a2026-09-22 auto-data-snapshot: 2026-09-22T17:47:37 (1 data files) — public/ig-activity.json -
b17577e2026-09-22 auto-data-snapshot: 2026-09-22T17:15:32 (1 data files) — public/ig-activity.json -
920fcdb2026-09-22 auto-data-snapshot: 2026-09-22T16:42:26 (1 data files) — public/ig-activity.json -
1eac83b2026-09-22 auto-data-snapshot: 2026-09-22T16:09:18 (1 data files) — public/ig-activity.json -
2899c2b2026-09-22 auto-data-snapshot: 2026-09-22T15:36:13 (1 data files) — public/ig-activity.json -
5c2363c2026-09-22 auto-data-snapshot: 2026-09-22T14:27:31 (1 data files) — public/ig-activity.json -
cfa77b72026-09-22 auto-data-snapshot: 2026-09-22T13:54:25 (1 data files) — public/ig-activity.json -
1f60b472026-09-22 auto-data-snapshot: 2026-09-22T13:21:57 (1 data files) — public/ig-activity.json -
302d8d42026-09-22 auto-data-snapshot: 2026-09-22T12:49:04 (1 data files) — public/ig-activity.json -
78074542026-09-22 auto-data-snapshot: 2026-09-22T12:15:47 (1 data files) — public/ig-activity.json -
fb77fd92026-09-22 auto-data-snapshot: 2026-09-22T11:43:24 (1 data files) — public/ig-activity.json -
50a11712026-09-22 auto-data-snapshot: 2026-09-22T11:11:00 (1 data files) — public/ig-activity.json -
1a7a0282026-09-22 auto-data-snapshot: 2026-09-22T07:25:22 (2 data files) — data/vendor-linkedin-cache.json public/ig-activity.json -
49731042026-09-21 auto-data-snapshot: 2026-09-21T20:34:48 (1 data files) — public/ig-activity.json -
f7cbe122026-09-21 auto-data-snapshot: 2026-09-21T19:40:08 (1 data files) — public/ig-activity.json -
ed128242026-09-21 auto-data-snapshot: 2026-09-21T17:27:28 (1 data files) — public/ig-activity.json -
f3fabc12026-09-21 auto-data-snapshot: 2026-09-21T16:51:55 (1 data files) — public/ig-activity.json -
744570b2026-09-21 auto-data-snapshot: 2026-09-21T15:52:40 (1 data files) — public/ig-activity.json -
7069bd22026-09-21 auto-data-snapshot: 2026-09-21T15:19:42 (1 data files) — public/ig-activity.json -
b415c7b2026-09-21 auto-data-snapshot: 2026-09-21T14:47:29 (1 data files) — public/ig-activity.json -
9fcdc472026-09-21 auto-data-snapshot: 2026-09-21T14:14:31 (1 data files) — public/ig-activity.json -
72ebb5d2026-09-21 auto-data-snapshot: 2026-09-21T13:42:13 (1 data files) — public/ig-activity.json -
f039e842026-09-21 auto-data-snapshot: 2026-09-21T13:09:50 (1 data files) — public/ig-activity.json -
bebba412026-09-21 auto-data-snapshot: 2026-09-21T12:37:32 (1 data files) — public/ig-activity.json -
2c6dd582026-09-21 auto-data-snapshot: 2026-09-21T11:31:47 (1 data files) — public/ig-activity.json -
ab3179f2026-09-21 auto-data-snapshot: 2026-09-21T10:26:58 (1 data files) — public/ig-activity.json -
16f64ae2026-09-21 auto-data-snapshot: 2026-09-21T09:54:10 (1 data files) — public/ig-activity.json -
08ab26a2026-09-21 auto-data-snapshot: 2026-09-21T09:21:33 (1 data files) — public/ig-activity.json -
d824a022026-09-21 auto-data-snapshot: 2026-09-21T08:49:26 (1 data files) — public/ig-activity.json -
8c7619a2026-09-21 auto-data-snapshot: 2026-09-21T07:45:09 (1 data files) — data/vendor-linkedin-cache.json -
36d7a9e2026-09-20 auto-data-snapshot: 2026-09-20T07:48:13 (1 data files) — data/vendor-linkedin-cache.json -
58653af2026-09-20 auto-data-snapshot: 2026-09-20T05:34:32 (1 data files) — public/data/clients-manifest.json -
8005c872026-09-19 auto-data-snapshot: 2026-09-19T20:05:42 (1 data files) — public/ig-activity.json -
8076dc72026-09-19 auto-data-snapshot: 2026-09-19T19:32:43 (1 data files) — public/ig-activity.json -
ae60c862026-09-19 auto-data-snapshot: 2026-09-19T18:59:45 (1 data files) — public/ig-activity.json -
980dddf2026-09-19 auto-data-snapshot: 2026-09-19T18:28:04 (1 data files) — public/ig-activity.json -
8de94042026-09-19 auto-data-snapshot: 2026-09-19T17:24:27 (1 data files) — public/ig-activity.json -
4fe202c2026-09-19 auto-data-snapshot: 2026-09-19T15:17:08 (1 data files) — public/ig-activity.json -
81ecf6a2026-09-19 auto-data-snapshot: 2026-09-19T14:45:24 (1 data files) — public/ig-activity.json -
b631ca52026-09-19 auto-data-snapshot: 2026-09-19T14:13:49 (1 data files) — public/ig-activity.json -
39382792026-09-19 auto-data-snapshot: 2026-09-19T13:09:57 (1 data files) — public/ig-activity.json -
22ac35f2026-09-19 auto-data-snapshot: 2026-09-19T12:38:08 (1 data files) — public/ig-activity.json -
fb4030d2026-09-19 auto-data-snapshot: 2026-09-19T12:06:31 (1 data files) — public/ig-activity.json -
31796572026-09-19 auto-data-snapshot: 2026-09-19T11:34:41 (1 data files) — public/ig-activity.json -
265e34f2026-09-19 auto-data-snapshot: 2026-09-19T11:03:02 (1 data files) — public/ig-activity.json -
b6c92892026-09-19 auto-data-snapshot: 2026-09-19T10:31:17 (1 data files) — public/ig-activity.json -
ff97b0b2026-09-19 auto-data-snapshot: 2026-09-19T09:59:20 (1 data files) — public/ig-activity.json -
4d5a9742026-09-19 auto-data-snapshot: 2026-09-19T08:55:30 (1 data files) — public/ig-activity.json -
d7fe16e2026-09-19 auto-data-snapshot: 2026-09-19T08:23:45 (1 data files) — public/ig-activity.json -
81985d42026-09-19 auto-data-snapshot: 2026-09-19T07:52:01 (1 data files) — data/vendor-linkedin-cache.json -
67853252026-09-18 auto-data-snapshot: 2026-09-18T20:12:47 (1 data files) — public/ig-activity.json -
eb75c3a2026-09-18 auto-data-snapshot: 2026-09-18T19:41:16 (1 data files) — public/ig-activity.json -
40cc5362026-09-18 auto-data-snapshot: 2026-09-18T19:09:31 (1 data files) — public/ig-activity.json -
ff8b2a02026-09-18 auto-data-snapshot: 2026-09-18T18:37:36 (1 data files) — public/ig-activity.json -
d1eba832026-09-18 auto-data-snapshot: 2026-09-18T18:05:41 (1 data files) — public/ig-activity.json -
de4ea652026-09-18 auto-data-snapshot: 2026-09-18T17:33:52 (1 data files) — public/ig-activity.json -
c179d0a2026-09-18 auto-data-snapshot: 2026-09-18T15:26:25 (1 data files) — public/ig-activity.json -
f20ab7a2026-09-18 auto-data-snapshot: 2026-09-18T14:54:24 (1 data files) — public/ig-activity.json -
beb580b2026-09-18 auto-data-snapshot: 2026-09-18T14:19:46 (1 data files) — public/ig-activity.json -
fccbad62026-09-18 auto-data-snapshot: 2026-09-18T13:45:34 (1 data files) — public/ig-activity.json -
e3e23c72026-09-18 auto-data-snapshot: 2026-09-18T13:12:29 (1 data files) — public/ig-activity.json -
34234e72026-09-18 auto-data-snapshot: 2026-09-18T12:06:20 (1 data files) — public/ig-activity.json -
da894d62026-09-18 auto-data-snapshot: 2026-09-18T11:33:43 (1 data files) — public/ig-activity.json -
1a37b7a2026-09-18 auto-data-snapshot: 2026-09-18T11:01:55 (1 data files) — public/ig-activity.json -
5e0a7ee2026-09-18 auto-data-snapshot: 2026-09-18T10:30:02 (1 data files) — public/ig-activity.json -
293f89e2026-09-18 auto-data-snapshot: 2026-09-18T09:58:36 (1 data files) — public/ig-activity.json -
04baea42026-09-18 auto-data-snapshot: 2026-09-18T09:26:51 (1 data files) — public/ig-activity.json -
5a84b952026-09-18 auto-data-snapshot: 2026-09-18T08:54:50 (1 data files) — public/ig-activity.json -
b3d725b2026-09-18 auto-data-snapshot: 2026-09-18T07:49:41 (1 data files) — data/vendor-linkedin-cache.json -
887fa3d2026-09-17 auto-data-snapshot: 2026-09-17T20:05:20 (1 data files) — public/ig-activity.json -
90ce9582026-09-17 auto-data-snapshot: 2026-09-17T19:01:39 (1 data files) — public/ig-activity.json -
d0b77452026-09-17 auto-data-snapshot: 2026-09-17T18:29:30 (1 data files) — public/ig-activity.json -
5dcea362026-09-17 auto-data-snapshot: 2026-09-17T17:57:46 (1 data files) — public/ig-activity.json -
3bc18512026-09-17 auto-data-snapshot: 2026-09-17T17:25:36 (1 data files) — public/ig-activity.json -
da916942026-09-17 auto-data-snapshot: 2026-09-17T15:48:34 (1 data files) — public/ig-activity.json -
a41a3472026-09-17 auto-data-snapshot: 2026-09-17T15:16:40 (1 data files) — public/ig-activity.json -
6d4ed402026-09-17 auto-data-snapshot: 2026-09-17T14:12:57 (1 data files) — public/ig-activity.json -
5b44e382026-09-17 auto-data-snapshot: 2026-09-17T13:41:27 (1 data files) — public/ig-activity.json -
02ccc4a2026-09-17 auto-data-snapshot: 2026-09-17T13:09:20 (1 data files) — public/ig-activity.json -
fcfbe992026-09-17 auto-data-snapshot: 2026-09-17T12:37:18 (1 data files) — public/ig-activity.json -
c281ef62026-09-17 auto-data-snapshot: 2026-09-17T12:05:07 (1 data files) — public/ig-activity.json -
f631b752026-09-17 auto-data-snapshot: 2026-09-17T11:32:24 (1 data files) — public/ig-activity.json -
faabcf52026-09-17 auto-data-snapshot: 2026-09-17T10:59:25 (1 data files) — public/ig-activity.json -
00f01562026-09-17 auto-data-snapshot: 2026-09-17T09:53:49 (1 data files) — public/ig-activity.json -
4a796c02026-09-17 auto-data-snapshot: 2026-09-17T09:20:48 (1 data files) — public/ig-activity.json -
ce7d5af2026-09-17 auto-data-snapshot: 2026-09-17T08:48:40 (1 data files) — public/ig-activity.json -
43e4c372026-09-17 auto-data-snapshot: 2026-09-17T08:16:42 (1 data files) — public/ig-activity.json -
ecd25f92026-09-17 auto-data-snapshot: 2026-09-17T07:44:57 (1 data files) — data/vendor-linkedin-cache.json -
74498892026-09-16 auto-data-snapshot: 2026-09-16T20:01:35 (1 data files) — public/ig-activity.json -
54874442026-09-16 auto-data-snapshot: 2026-09-16T19:29:54 (1 data files) — public/ig-activity.json -
7fbab202026-09-16 auto-data-snapshot: 2026-09-16T18:58:01 (1 data files) — public/ig-activity.json -
b8fa8362026-09-16 auto-data-snapshot: 2026-09-16T18:26:15 (1 data files) — public/ig-activity.json -
bc060532026-09-16 auto-data-snapshot: 2026-09-16T17:53:57 (1 data files) — public/ig-activity.json -
9f6db142026-09-16 auto-data-snapshot: 2026-09-16T17:20:14 (1 data files) — public/ig-activity.json -
10153d72026-09-16 auto-data-snapshot: 2026-09-16T15:11:20 (1 data files) — public/ig-activity.json -
d037e322026-09-16 auto-data-snapshot: 2026-09-16T14:34:47 (1 data files) — public/ig-activity.json -
19c4d3a2026-09-16 auto-data-snapshot: 2026-09-16T13:57:01 (1 data files) — public/ig-activity.json -
7895f612026-09-16 auto-data-snapshot: 2026-09-16T13:25:12 (1 data files) — public/ig-activity.json -
205a9fc2026-09-16 auto-data-snapshot: 2026-09-16T12:52:52 (3 data files) — .gitignore data/cc-import-fm-clients-mailable.json public/ig-activity.json -
cc4fa742026-09-16 auto-data-snapshot: 2026-09-16T12:19:41 (1 data files) — public/ig-activity.json -
d30e16d2026-09-16 auto-data-snapshot: 2026-09-16T11:47:18 (1 data files) — public/ig-activity.json -
c814f522026-09-16 auto-data-snapshot: 2026-09-16T11:14:29 (1 data files) — public/ig-activity.json -
5ec86702026-09-16 auto-data-snapshot: 2026-09-16T10:07:35 (1 data files) — public/ig-activity.json -
2d179492026-09-16 auto-data-snapshot: 2026-09-16T09:33:20 (1 data files) — public/ig-activity.json -
b45bcf22026-09-16 auto-data-snapshot: 2026-09-16T08:57:47 (1 data files) — public/ig-activity.json -
ee4b93b2026-09-16 auto-data-snapshot: 2026-09-16T08:24:08 (1 data files) — public/ig-activity.json -
91fb5092026-09-16 auto-data-snapshot: 2026-09-16T07:52:09 (1 data files) — data/vendor-linkedin-cache.json -
5aa408e2026-09-15 auto-data-snapshot: 2026-09-15T19:39:01 (1 data files) — public/ig-activity.json -
688db722026-09-15 auto-data-snapshot: 2026-09-15T19:06:59 (1 data files) — public/ig-activity.json -
6d524322026-09-15 auto-data-snapshot: 2026-09-15T18:34:22 (1 data files) — public/ig-activity.json -
5f42e932026-09-15 auto-data-snapshot: 2026-09-15T18:00:40 (1 data files) — public/ig-activity.json -
9afc3602026-09-15 auto-data-snapshot: 2026-09-15T16:53:16 (1 data files) — public/ig-activity.json -
d0f88f52026-09-15 auto-data-snapshot: 2026-09-15T15:48:53 (1 data files) — public/ig-activity.json -
24cdd532026-09-15 auto-data-snapshot: 2026-09-15T15:16:50 (1 data files) — public/ig-activity.json -
bb377de2026-09-15 auto-data-snapshot: 2026-09-15T14:44:34 (1 data files) — public/ig-activity.json -
9624e012026-09-15 auto-data-snapshot: 2026-09-15T14:13:07 (1 data files) — public/ig-activity.json -
ff31ecf2026-09-15 auto-data-snapshot: 2026-09-15T13:40:09 (1 data files) — public/ig-activity.json -
dd8415e2026-09-15 auto-data-snapshot: 2026-09-15T13:06:09 (1 data files) — public/ig-activity.json -
1e2665b2026-09-15 auto-data-snapshot: 2026-09-15T12:33:48 (1 data files) — public/ig-activity.json -
96fe5ff2026-09-15 auto-data-snapshot: 2026-09-15T12:00:25 (1 data files) — public/ig-activity.json -
bc5a6052026-09-15 auto-data-snapshot: 2026-09-15T11:25:48 (1 data files) — public/ig-activity.json -
5f3690d2026-09-15 auto-data-snapshot: 2026-09-15T10:20:50 (1 data files) — public/ig-activity.json -
25121692026-09-15 auto-data-snapshot: 2026-09-15T09:48:56 (1 data files) — public/ig-activity.json -
ec2b7d72026-09-15 auto-data-snapshot: 2026-09-15T09:16:55 (1 data files) — public/ig-activity.json -
39aa96c2026-09-15 auto-data-snapshot: 2026-09-15T08:44:47 (1 data files) — public/ig-activity.json -
72b8ca22026-09-15 auto-data-snapshot: 2026-09-15T07:41:08 (1 data files) — data/vendor-linkedin-cache.json -
39f23472026-09-14 auto-data-snapshot: 2026-09-14T19:58:15 (1 data files) — public/ig-activity.json -
d7640e42026-09-14 auto-data-snapshot: 2026-09-14T19:26:33 (1 data files) — public/ig-activity.json -
8b2ba332026-09-14 auto-data-snapshot: 2026-09-14T18:54:45 (1 data files) — public/ig-activity.json -
25532da2026-09-14 auto-data-snapshot: 2026-09-14T17:51:11 (1 data files) — public/ig-activity.json -
dcf3ad12026-09-14 auto-data-snapshot: 2026-09-14T17:18:57 (1 data files) — public/ig-activity.json -
01f69372026-09-14 auto-data-snapshot: 2026-09-14T16:46:18 (1 data files) — public/ig-activity.json -
92326af2026-09-14 auto-data-snapshot: 2026-09-14T16:13:45 (1 data files) — public/ig-activity.json -
ba4d2352026-09-14 auto-data-snapshot: 2026-09-14T15:41:36 (1 data files) — public/ig-activity.json -
a85c6622026-09-14 auto-data-snapshot: 2026-09-14T15:08:48 (1 data files) — public/ig-activity.json -
1c1ff582026-09-14 auto-data-snapshot: 2026-09-14T14:36:24 (1 data files) — public/ig-activity.json -
a4f8adf2026-09-14 auto-data-snapshot: 2026-09-14T14:02:07 (1 data files) — public/ig-activity.json -
ccf341c2026-09-14 auto-data-snapshot: 2026-09-14T13:27:58 (1 data files) — public/ig-activity.json -
d54192f2026-09-14 auto-data-snapshot: 2026-09-14T12:23:25 (1 data files) — public/ig-activity.json -
68f776f2026-09-14 auto-data-snapshot: 2026-09-14T11:51:41 (1 data files) — public/ig-activity.json -
35c27f72026-09-14 auto-data-snapshot: 2026-09-14T11:19:45 (1 data files) — public/ig-activity.json -
152c4582026-09-14 auto-data-snapshot: 2026-09-14T10:47:22 (1 data files) — public/ig-activity.json -
5383da62026-09-14 auto-data-snapshot: 2026-09-14T10:14:59 (1 data files) — public/ig-activity.json -
8cacbd52026-09-14 auto-data-snapshot: 2026-09-14T08:53:29 (1 data files) — public/ig-activity.json -
e4e4e112026-09-14 auto-data-snapshot: 2026-09-14T08:21:43 (1 data files) — public/ig-activity.json -
3cdac652026-09-14 auto-data-snapshot: 2026-09-14T07:49:56 (1 data files) — data/vendor-linkedin-cache.json -
6124ffb2026-09-13 auto-data-snapshot: 2026-09-13T08:07:44 (1 data files) — data/vendor-linkedin-cache.json -
d43ac462026-09-13 auto-data-snapshot: 2026-09-13T07:34:50 (1 data files) — data/vendor-linkedin-cache.json -
28130462026-09-12 auto-data-snapshot: 2026-09-12T19:54:34 (1 data files) — public/ig-activity.json -
65400932026-09-12 auto-data-snapshot: 2026-09-12T19:22:21 (1 data files) — public/ig-activity.json -
405d9cf2026-09-12 auto-data-snapshot: 2026-09-12T18:49:52 (1 data files) — public/ig-activity.json -
03bfc832026-09-12 auto-data-snapshot: 2026-09-12T18:17:16 (1 data files) — public/ig-activity.json -
8e280ee2026-09-12 auto-data-snapshot: 2026-09-12T17:44:46 (1 data files) — public/ig-activity.json -
6d2a4712026-09-12 auto-data-snapshot: 2026-09-12T15:35:41 (1 data files) — public/ig-activity.json -
2bea8012026-09-12 auto-data-snapshot: 2026-09-12T15:03:15 (1 data files) — public/ig-activity.json -
82387672026-09-12 auto-data-snapshot: 2026-09-12T14:31:21 (1 data files) — public/ig-activity.json -
cc91ebc2026-09-12 auto-data-snapshot: 2026-09-12T13:59:14 (1 data files) — public/ig-activity.json -
159a00c2026-09-12 auto-data-snapshot: 2026-09-12T13:27:22 (1 data files) — public/ig-activity.json -
3c681492026-09-12 auto-data-snapshot: 2026-09-12T12:53:51 (1 data files) — public/ig-activity.json -
3bd00562026-09-12 auto-data-snapshot: 2026-09-12T12:21:53 (1 data files) — public/ig-activity.json -
531a9042026-09-12 auto-data-snapshot: 2026-09-12T11:49:26 (1 data files) — public/ig-activity.json -
17359732026-09-12 auto-data-snapshot: 2026-09-12T10:45:06 (1 data files) — public/ig-activity.json -
d46c7972026-09-12 auto-data-snapshot: 2026-09-12T10:01:53 (1 data files) — public/ig-activity.json -
e111b4b2026-09-12 auto-data-snapshot: 2026-09-12T09:28:54 (1 data files) — public/ig-activity.json -
02b91c72026-09-12 auto-data-snapshot: 2026-09-12T08:55:55 (1 data files) — public/ig-activity.json -
d1e4e962026-09-12 auto-data-snapshot: 2026-09-12T08:20:59 (2 data files) — data/vendor-linkedin-cache.json public/ig-activity.json -
d422e452026-09-12 auto-data-snapshot: 2026-09-12T07:18:58 (1 data files) — data/vendor-linkedin-cache.json -
5f43df12026-09-11 auto-data-snapshot: 2026-09-11T20:13:51 (1 data files) — public/ig-activity.json -
a2bf4c22026-09-11 auto-data-snapshot: 2026-09-11T19:40:57 (1 data files) — public/ig-activity.json -
256dafe2026-09-11 auto-data-snapshot: 2026-09-11T19:08:01 (1 data files) — public/ig-activity.json -
43058352026-09-11 auto-data-snapshot: 2026-09-11T18:34:41 (1 data files) — public/ig-activity.json -
a7f863b2026-09-11 auto-data-snapshot: 2026-09-11T18:01:28 (1 data files) — public/ig-activity.json -
989377a2026-09-11 auto-data-snapshot: 2026-09-11T15:49:18 (1 data files) — public/ig-activity.json -
ec8e5b72026-09-11 auto-data-snapshot: 2026-09-11T15:15:48 (1 data files) — public/ig-activity.json -
e52a78b2026-09-11 auto-data-snapshot: 2026-09-11T14:39:38 (1 data files) — public/ig-activity.json -
32d2a352026-09-11 auto-data-snapshot: 2026-09-11T13:57:49 (1 data files) — public/ig-activity.json -
5518a4f2026-09-11 auto-data-snapshot: 2026-09-11T13:23:02 (1 data files) — public/ig-activity.json -
e235bac2026-09-11 auto-data-snapshot: 2026-09-11T12:47:38 (1 data files) — public/ig-activity.json -
545f47b2026-09-11 auto-data-snapshot: 2026-09-11T12:03:30 (1 data files) — public/ig-activity.json -
c9268292026-09-11 auto-data-snapshot: 2026-09-11T11:23:31 (1 data files) — public/ig-activity.json -
a4c96ac2026-09-11 auto-data-snapshot: 2026-09-11T10:49:53 (1 data files) — public/ig-activity.json -
599661d2026-09-11 auto-data-snapshot: 2026-09-11T10:08:53 (1 data files) — public/ig-activity.json -
309b8642026-09-11 auto-data-snapshot: 2026-09-11T09:31:49 (1 data files) — public/ig-activity.json -
0a0e2882026-09-11 auto-data-snapshot: 2026-09-11T08:57:34 (1 data files) — public/ig-activity.json -
3ccc6aa2026-09-11 auto-data-snapshot: 2026-09-11T07:43:45 (1 data files) — data/vendor-linkedin-cache.json -
5485fa82026-09-10 auto-data-snapshot: 2026-09-10T19:39:42 (1 data files) — public/ig-activity.json -
fc147e32026-09-10 auto-data-snapshot: 2026-09-10T18:53:21 (1 data files) — public/ig-activity.json -
527c1c22026-09-10 auto-data-snapshot: 2026-09-10T18:07:04 (1 data files) — public/ig-activity.json -
5a272152026-09-10 auto-data-snapshot: 2026-09-10T17:34:11 (1 data files) — public/ig-activity.json -
09808ff2026-09-10 auto-data-snapshot: 2026-09-10T17:00:45 (1 data files) — public/ig-activity.json -
2b3e9142026-09-10 auto-data-snapshot: 2026-09-10T16:27:35 (1 data files) — public/ig-activity.json -
f31a3fb2026-09-10 auto-data-snapshot: 2026-09-10T14:47:21 (1 data files) — public/ig-activity.json -
ad375792026-09-10 auto-data-snapshot: 2026-09-10T14:13:31 (1 data files) — public/ig-activity.json -
4f189292026-09-10 auto-data-snapshot: 2026-09-10T13:39:50 (1 data files) — public/ig-activity.json -
908324f2026-09-10 auto-data-snapshot: 2026-09-10T13:02:09 (1 data files) — public/ig-activity.json -
23302132026-09-10 auto-data-snapshot: 2026-09-10T12:25:41 (1 data files) — public/ig-activity.json -
76c44dc2026-09-10 auto-data-snapshot: 2026-09-10T11:43:04 (1 data files) — public/ig-activity.json -
1c634b12026-09-10 auto-data-snapshot: 2026-09-10T11:08:25 (1 data files) — public/ig-activity.json -
b4274dd2026-09-10 auto-data-snapshot: 2026-09-10T10:34:55 (1 data files) — public/ig-activity.json -
ffb510e2026-09-10 auto-data-snapshot: 2026-09-10T10:01:38 (1 data files) — public/ig-activity.json -
d5aac392026-09-10 auto-data-snapshot: 2026-09-10T09:22:46 (1 data files) — public/ig-activity.json -
bc474c42026-09-10 auto-data-snapshot: 2026-09-10T08:48:14 (1 data files) — public/ig-activity.json -
a5881812026-09-10 auto-data-snapshot: 2026-09-10T08:12:39 (2 data files) — data/vendor-linkedin-cache.json public/ig-activity.json -
4244dc02026-09-10 auto-data-snapshot: 2026-09-10T07:33:05 (1 data files) — data/vendor-linkedin-cache.json -
229f73f2026-09-09 auto-data-snapshot: 2026-09-09T20:06:23 (1 data files) — public/ig-activity.json -
cbc65a22026-09-09 auto-data-snapshot: 2026-09-09T19:32:54 (1 data files) — public/ig-activity.json -
c53c3262026-09-09 auto-data-snapshot: 2026-09-09T18:59:42 (1 data files) — public/ig-activity.json -
9fa18ec2026-09-09 auto-data-snapshot: 2026-09-09T18:26:03 (1 data files) — public/ig-activity.json -
18ba33e2026-09-09 auto-data-snapshot: 2026-09-09T17:52:57 (1 data files) — public/ig-activity.json -
afb9cb72026-09-09 auto-data-snapshot: 2026-09-09T15:02:32 (1 data files) — public/ig-activity.json -
47398432026-09-09 auto-data-snapshot: 2026-09-09T14:29:35 (1 data files) — public/ig-activity.json -
f63b4e52026-09-09 auto-data-snapshot: 2026-09-09T13:56:45 (1 data files) — public/ig-activity.json -
d95a6c32026-09-09 auto-data-snapshot: 2026-09-09T13:23:51 (1 data files) — public/ig-activity.json -
0b4f8032026-09-09 auto-data-snapshot: 2026-09-09T12:49:50 (1 data files) — public/ig-activity.json -
9ceda0d2026-09-09 auto-data-snapshot: 2026-09-09T12:16:55 (1 data files) — public/ig-activity.json -
95c84b72026-09-09 auto-data-snapshot: 2026-09-09T11:42:56 (1 data files) — public/ig-activity.json -
595f0432026-09-09 auto-data-snapshot: 2026-09-09T11:09:48 (1 data files) — public/ig-activity.json -
adc33fe2026-09-09 auto-data-snapshot: 2026-09-09T10:37:25 (1 data files) — public/ig-activity.json -
9ab31932026-09-09 auto-data-snapshot: 2026-09-09T09:32:15 (1 data files) — public/ig-activity.json -
28043ec2026-09-09 auto-data-snapshot: 2026-09-09T08:59:31 (1 data files) — public/ig-activity.json -
ea8a9fa2026-09-09 auto-data-snapshot: 2026-09-09T08:26:36 (1 data files) — public/ig-activity.json -
7b1b5f62026-09-09 auto-data-snapshot: 2026-09-09T07:54:04 (1 data files) — data/vendor-linkedin-cache.json -
a392a9a2026-09-08 auto-data-snapshot: 2026-09-08T20:11:26 (1 data files) — public/ig-activity.json -
94738172026-09-08 auto-data-snapshot: 2026-09-08T19:39:23 (1 data files) — public/ig-activity.json -
dc205f72026-09-08 auto-data-snapshot: 2026-09-08T19:07:26 (1 data files) — public/ig-activity.json -
9b19a8f2026-09-08 auto-data-snapshot: 2026-09-08T18:35:21 (1 data files) — public/ig-activity.json -
70c42552026-09-08 auto-data-snapshot: 2026-09-08T18:03:25 (1 data files) — public/ig-activity.json -
f2e1d6c2026-09-08 auto-data-snapshot: 2026-09-08T15:35:04 (1 data files) — public/ig-activity.json -
a7ceb7f2026-09-08 auto-data-snapshot: 2026-09-08T14:56:20 (1 data files) — public/ig-activity.json -
8a7a7fb2026-09-08 auto-data-snapshot: 2026-09-08T14:18:02 (1 data files) — public/ig-activity.json -
77d4cf42026-09-08 auto-data-snapshot: 2026-09-08T13:39:29 (1 data files) — public/ig-activity.json -
a01d6182026-09-08 auto-data-snapshot: 2026-09-08T12:55:25 (1 data files) — public/ig-activity.json -
2a4b6d62026-09-08 auto-data-snapshot: 2026-09-08T12:16:02 (1 data files) — public/ig-activity.json -
b5d4ff12026-09-08 auto-data-snapshot: 2026-09-08T11:37:41 (1 data files) — public/ig-activity.json -
f1fc0282026-09-08 auto-data-snapshot: 2026-09-08T10:58:37 (1 data files) — public/ig-activity.json -
92506f32026-09-08 auto-data-snapshot: 2026-09-08T10:19:39 (1 data files) — public/ig-activity.json -
53bf9a42026-09-08 auto-data-snapshot: 2026-09-08T09:40:47 (1 data files) — public/ig-activity.json -
3c48a8e2026-09-08 auto-data-snapshot: 2026-09-08T09:02:39 (1 data files) — public/ig-activity.json -
85185ac2026-09-08 auto-data-snapshot: 2026-09-08T07:45:26 (1 data files) — data/vendor-linkedin-cache.json -
c49cb642026-09-07 auto-data-snapshot: 2026-09-07T19:41:38 (1 data files) — public/ig-activity.json -
e5cf09c2026-09-07 auto-data-snapshot: 2026-09-07T19:03:42 (1 data files) — public/ig-activity.json -
8aa51862026-09-07 auto-data-snapshot: 2026-09-07T18:25:33 (1 data files) — public/ig-activity.json -
a0e914d2026-09-07 auto-data-snapshot: 2026-09-07T17:47:47 (1 data files) — public/ig-activity.json -
b58e9fe2026-09-07 auto-data-snapshot: 2026-09-07T17:09:46 (1 data files) — public/ig-activity.json -
609dbf92026-09-07 auto-data-snapshot: 2026-09-07T16:31:47 (1 data files) — public/ig-activity.json -
cfe94022026-09-07 auto-data-snapshot: 2026-09-07T15:53:48 (1 data files) — public/ig-activity.json -
a37391f2026-09-07 auto-data-snapshot: 2026-09-07T15:15:55 (1 data files) — public/ig-activity.json -
bc410c02026-09-07 auto-data-snapshot: 2026-09-07T14:38:12 (1 data files) — public/ig-activity.json -
d9e1b0c2026-09-07 auto-data-snapshot: 2026-09-07T14:00:10 (1 data files) — public/ig-activity.json -
4e3d6bf2026-09-07 auto-data-snapshot: 2026-09-07T13:22:13 (1 data files) — public/ig-activity.json -
818b4412026-09-07 auto-data-snapshot: 2026-09-07T12:38:54 (1 data files) — public/ig-activity.json -
d7a36e92026-09-07 auto-data-snapshot: 2026-09-07T12:00:23 (1 data files) — public/ig-activity.json -
cf41e902026-09-07 auto-data-snapshot: 2026-09-07T11:21:50 (1 data files) — public/ig-activity.json -
a5ef7812026-09-07 auto-data-snapshot: 2026-09-07T10:43:18 (1 data files) — public/ig-activity.json -
32998cd2026-09-07 auto-data-snapshot: 2026-09-07T10:04:46 (1 data files) — public/ig-activity.json -
322d5f52026-09-07 auto-data-snapshot: 2026-09-07T09:25:49 (1 data files) — public/ig-activity.json -
7d2fbd32026-09-07 auto-data-snapshot: 2026-09-07T08:47:31 (1 data files) — public/ig-activity.json -
e8702462026-09-07 auto-data-snapshot: 2026-09-07T08:09:05 (2 data files) — data/vendor-linkedin-cache.json public/ig-activity.json -
881187d2026-09-06 auto-data-snapshot: 2026-09-06T07:47:41 (1 data files) — data/vendor-linkedin-cache.json -
f18b8232026-09-06 auto-data-snapshot: 2026-09-06T04:34:41 (1 data files) — public/data/clients-manifest.json -
f4985112026-09-05 auto-data-snapshot: 2026-09-05T20:16:42 (1 data files) — public/ig-activity.json -
9cb91d32026-09-05 auto-data-snapshot: 2026-09-05T19:38:25 (1 data files) — public/ig-activity.json -
7ff89852026-09-05 auto-data-snapshot: 2026-09-05T19:00:09 (1 data files) — public/ig-activity.json -
3cbb2fa2026-09-05 auto-data-snapshot: 2026-09-05T18:21:36 (1 data files) — public/ig-activity.json -
968e6a82026-09-05 auto-data-snapshot: 2026-09-05T17:43:09 (1 data files) — public/ig-activity.json -
4d164172026-09-05 auto-data-snapshot: 2026-09-05T15:09:59 (1 data files) — public/ig-activity.json -
730f0cf2026-09-05 auto-data-snapshot: 2026-09-05T14:31:27 (1 data files) — public/ig-activity.json -
472a3be2026-09-05 auto-data-snapshot: 2026-09-05T13:53:26 (1 data files) — public/ig-activity.json -
9bebe5a2026-09-05 auto-data-snapshot: 2026-09-05T13:15:00 (1 data files) — public/ig-activity.json -
5f9f4132026-09-05 auto-data-snapshot: 2026-09-05T12:36:37 (1 data files) — public/ig-activity.json -
a0b79fe2026-09-05 auto-data-snapshot: 2026-09-05T11:58:24 (1 data files) — public/ig-activity.json -
f5046f72026-09-05 auto-data-snapshot: 2026-09-05T11:20:09 (1 data files) — public/ig-activity.json -
4e911ca2026-09-05 auto-data-snapshot: 2026-09-05T10:42:02 (1 data files) — public/ig-activity.json -
1c94c422026-09-05 auto-data-snapshot: 2026-09-05T10:03:39 (1 data files) — public/ig-activity.json -
9fedb962026-09-05 auto-data-snapshot: 2026-09-05T09:24:41 (1 data files) — public/ig-activity.json -
273c4692026-09-05 auto-data-snapshot: 2026-09-05T08:46:42 (1 data files) — public/ig-activity.json -
56d15e82026-09-05 auto-data-snapshot: 2026-09-05T08:08:29 (1 data files) — data/vendor-linkedin-cache.json -
19f79982026-09-04 snapshot before restart: preserve in-flight work -
36435902026-09-04 auto-data-snapshot: 2026-09-04T19:59:19 (1 data files) — public/ig-activity.json -
abb66d32026-09-04 auto-data-snapshot: 2026-09-04T19:20:56 (1 data files) — public/ig-activity.json -
9bd03332026-09-04 auto-data-snapshot: 2026-09-04T18:42:47 (1 data files) — public/ig-activity.json -
7abb3022026-09-04 auto-data-snapshot: 2026-09-04T18:04:25 (1 data files) — public/ig-activity.json -
bce6d3d2026-09-04 auto-data-snapshot: 2026-09-04T17:26:14 (1 data files) — public/ig-activity.json -
9eb5f8d2026-09-04 auto-data-snapshot: 2026-09-04T15:31:50 (1 data files) — public/ig-activity.json -
67406c32026-09-04 auto-data-snapshot: 2026-09-04T14:52:10 (1 data files) — public/ig-activity.json -
f319c012026-09-04 auto-data-snapshot: 2026-09-04T14:13:19 (1 data files) — public/ig-activity.json -
463eeea2026-09-04 auto-data-snapshot: 2026-09-04T13:35:12 (1 data files) — public/ig-activity.json -
0d6b66e2026-09-04 auto-data-snapshot: 2026-09-04T12:55:58 (1 data files) — public/ig-activity.json -
0cdca412026-09-04 auto-data-snapshot: 2026-09-04T12:10:54 (1 data files) — public/ig-activity.json -
80202992026-09-04 auto-data-snapshot: 2026-09-04T11:31:34 (1 data files) — public/ig-activity.json -
1688cd62026-09-04 auto-data-snapshot: 2026-09-04T10:48:46 (1 data files) — public/ig-activity.json -
2c585082026-09-04 auto-data-snapshot: 2026-09-04T10:10:38 (1 data files) — public/ig-activity.json -
47fbb5c2026-09-04 auto-data-snapshot: 2026-09-04T09:31:20 (1 data files) — public/ig-activity.json -
62e4ac72026-09-04 auto-data-snapshot: 2026-09-04T09:09:45 (1 data files) — public/ig-activity.json -
35d6eaa2026-09-04 auto-data-snapshot: 2026-09-04T07:48:37 (1 data files) — data/vendor-linkedin-cache.json -
9a5bdc92026-09-03 auto-data-snapshot: 2026-09-03T20:10:09 (1 data files) — public/ig-activity.json -
7092e2b2026-09-03 auto-data-snapshot: 2026-09-03T19:32:13 (1 data files) — public/ig-activity.json -
5b2bb842026-09-03 auto-data-snapshot: 2026-09-03T18:54:12 (1 data files) — public/ig-activity.json -
8263e372026-09-03 auto-data-snapshot: 2026-09-03T18:17:45 (1 data files) — public/ig-activity.json -
baf94a02026-09-03 auto-data-snapshot: 2026-09-03T17:39:42 (1 data files) — public/ig-activity.json -
19ea0b62026-09-03 auto-data-snapshot: 2026-09-03T15:45:08 (1 data files) — public/ig-activity.json -
e492dee2026-09-03 auto-data-snapshot: 2026-09-03T15:07:41 (1 data files) — public/ig-activity.json -
ecc2c7c2026-09-03 auto-data-snapshot: 2026-09-03T14:29:24 (1 data files) — public/ig-activity.json -
527ee992026-09-03 auto-data-snapshot: 2026-09-03T13:47:49 (1 data files) — public/ig-activity.json -
bdaea5d2026-09-03 auto-data-snapshot: 2026-09-03T13:07:42 (1 data files) — public/ig-activity.json -
e5f8ac82026-09-03 auto-data-snapshot: 2026-09-03T12:32:21 (1 data files) — public/ig-activity.json -
5430cac2026-09-03 auto-data-snapshot: 2026-09-03T11:49:57 (1 data files) — public/ig-activity.json -
da0f1f82026-09-03 Add separate Showroom picker area to Make-a-post so showroom-only lines (PJ) stay out of the general pool with correct language -
d3e2d6d2026-09-03 auto-data-snapshot: 2026-09-03T11:10:51 (1 data files) — public/ig-activity.json -
64b7fcf2026-09-03 quickpost picker: inline nav-agent controls — density slider + Grid/List/Details(kv) views -
23750b02026-09-03 auto-data-snapshot: 2026-09-03T10:32:28 (1 data files) — public/ig-activity.json -
797b41c2026-09-03 auto-data-snapshot: 2026-09-03T09:53:05 (1 data files) — public/ig-activity.json -
98c9c002026-09-03 auto-data-snapshot: 2026-09-03T09:14:19 (1 data files) — public/ig-activity.json -
e749ba22026-09-03 auto-data-snapshot: 2026-09-03T08:35:39 (1 data files) — public/ig-activity.json -
fd5cb672026-09-03 auto-data-snapshot: 2026-09-03T07:56:56 (1 data files) — data/vendor-linkedin-cache.json -
124469d2026-09-02 auto-data-snapshot: 2026-09-02T19:55:31 (1 data files) — public/ig-activity.json -
abe8dc12026-09-02 auto-data-snapshot: 2026-09-02T19:17:50 (1 data files) — public/ig-activity.json -
bba46732026-09-02 auto-data-snapshot: 2026-09-02T18:39:50 (1 data files) — public/ig-activity.json -
63117372026-09-02 auto-data-snapshot: 2026-09-02T18:02:03 (1 data files) — public/ig-activity.json -
ad9c8c72026-09-02 auto-data-snapshot: 2026-09-02T16:03:42 (1 data files) — public/ig-activity.json -
c4ba9632026-09-02 auto-data-snapshot: 2026-09-02T15:21:07 (1 data files) — public/ig-activity.json -
30690562026-09-02 auto-data-snapshot: 2026-09-02T14:42:45 (1 data files) — public/ig-activity.json -
01098482026-09-02 auto-data-snapshot: 2026-09-02T14:03:59 (1 data files) — public/ig-activity.json -
c0a1f432026-09-02 auto-data-snapshot: 2026-09-02T13:25:17 (1 data files) — public/ig-activity.json -
2042c302026-09-02 auto-data-snapshot: 2026-09-02T12:46:36 (1 data files) — public/ig-activity.json -
c64b0dc2026-09-02 auto-data-snapshot: 2026-09-02T12:07:47 (1 data files) — public/ig-activity.json -
1cb26172026-09-02 auto-data-snapshot: 2026-09-02T11:28:31 (1 data files) — public/ig-activity.json -
57e7e6d2026-09-02 auto-data-snapshot: 2026-09-02T10:48:45 (1 data files) — public/ig-activity.json -
5d18fd32026-09-02 auto-data-snapshot: 2026-09-02T09:35:20 (1 data files) — public/ig-activity.json -
aa79d002026-09-02 auto-data-snapshot: 2026-09-02T09:04:08 (1 data files) — public/ig-activity.json -
56ac3882026-09-02 auto-data-snapshot: 2026-09-02T08:25:36 (1 data files) — public/ig-activity.json -
f36bd8d2026-09-02 auto-data-snapshot: 2026-09-02T07:48:02 (1 data files) — data/vendor-linkedin-cache.json -
75d892a2026-09-01 auto-data-snapshot: 2026-09-01T19:53:19 (1 data files) — public/ig-activity.json -
bcea6962026-09-01 auto-data-snapshot: 2026-09-01T19:16:04 (1 data files) — public/ig-activity.json -
f3ddc8b2026-09-01 auto-data-snapshot: 2026-09-01T18:38:25 (1 data files) — public/ig-activity.json -
dd330252026-09-01 auto-data-snapshot: 2026-09-01T18:00:51 (1 data files) — public/ig-activity.json -
cecb8092026-09-01 make Quick Post music honest and verify publish safety -
ba9ebc42026-09-01 auto-data-snapshot: 2026-09-01T17:22:42 (6 data files) — public/ig-activity.json screenrecord/quickpost/rec/run0/page@544d43a6ff2a10b8cb3e83cbcc4d56de.mp4 screenrecord/quickpost/rec/run1/page@d10a227ebe0a4f40d039440b59598320.mp4 screenrecord/quickpost/rec/run2/page@eb90353e6de8eba25641923003da52ff.mp4 screenrecord/quickpost/rec/run3/page@504411666a3211af05bc80dce17ed577.mp4 -
9594fa62026-09-01 prove Quick Post across browsers and click orders -
10ebd672026-09-01 auto-data-snapshot: 2026-09-01T16:07:10 (1 data files) — public/ig-activity.json -
935c5822026-09-01 auto-data-snapshot: 2026-09-01T15:29:45 (1 data files) — public/ig-activity.json -
c6f10b62026-09-01 auto-data-snapshot: 2026-09-01T14:52:01 (1 data files) — public/ig-activity.json -
3d82bb82026-09-01 auto-data-snapshot: 2026-09-01T14:14:21 (1 data files) — public/ig-activity.json -
8ea018e2026-09-01 auto-data-snapshot: 2026-09-01T13:36:10 (1 data files) — public/ig-activity.json -
a162aa22026-09-01 auto-data-snapshot: 2026-09-01T12:55:30 (1 data files) — public/ig-activity.json -
b07efa82026-09-01 Add Glitter & Sequin exclusivity email draft (TK-11075) — send-ready CC campaign, all links live-verified 200 -
f9cdfa02026-09-01 auto-data-snapshot: 2026-09-01T12:16:45 (1 data files) — public/ig-activity.json -
52c40452026-09-01 auto-data-snapshot: 2026-09-01T11:38:20 (1 data files) — public/ig-activity.json -
c6836e52026-09-01 auto-data-snapshot: 2026-09-01T10:56:56 (1 data files) — public/ig-activity.json -
73c4d572026-09-01 auto-data-snapshot: 2026-09-01T10:19:15 (1 data files) — public/ig-activity.json -
8d308b42026-09-01 auto-data-snapshot: 2026-09-01T09:42:16 (1 data files) — public/ig-activity.json -
5c994032026-09-01 auto-data-snapshot: 2026-09-01T09:05:22 (1 data files) — public/ig-activity.json -
59999772026-09-01 new-arrivals-reel: distinct-colorway heroes (URL-keyed cache + byte-distinct assert) + SKU lower-third -
b7ffb5f2026-09-01 auto-data-snapshot: 2026-09-01T07:51:05 (1 data files) — data/vendor-linkedin-cache.json -
d28190e2026-09-01 Add New Arrivals 9:16 short-form video builder (local, $0) -
9a0aa082026-08-31 auto-data-snapshot: 2026-08-31T20:06:26 (1 data files) — public/ig-activity.json -
7f2c4262026-08-31 auto-data-snapshot: 2026-08-31T19:29:32 (1 data files) — public/ig-activity.json -
c6bc26f2026-08-31 auto-data-snapshot: 2026-08-31T18:52:39 (1 data files) — public/ig-activity.json -
b58a7d12026-08-31 auto-data-snapshot: 2026-08-31T18:15:28 (1 data files) — public/ig-activity.json -
a4681db2026-08-31 auto-data-snapshot: 2026-08-31T17:38:21 (1 data files) — public/ig-activity.json -
78e62b12026-08-31 auto-data-snapshot: 2026-08-31T16:59:21 (1 data files) — public/ig-activity.json -
d8f62cb2026-08-31 auto-data-snapshot: 2026-08-31T16:22:16 (1 data files) — public/ig-activity.json -
b4d6d2e2026-08-31 auto-data-snapshot: 2026-08-31T15:44:48 (1 data files) — public/ig-activity.json -
2534ddf2026-08-31 auto-data-snapshot: 2026-08-31T15:07:00 (2 data files) — data/vendor-linkedin-cache.json public/ig-activity.json -
6c4b6cf2026-08-31 ingest-checker: re-export staleness reminder to steve-personal via George (env/keychain auth, no hardcoded secret) -
793ca1d2026-08-31 auto-data-snapshot: 2026-08-31T14:28:57 (1 data files) — public/ig-activity.json -
3bf588c2026-08-31 vendors: robust auto-updating social pipeline — weekly social-refresh (IG API + local LinkedIn OG harvest→prod sync + contact regen + heartbeat) & standing export-ingest checker (watcher-only) -
e39578f2026-08-31 vendors: paced LinkedIn follows slug-resolver (OG probe + variant fallback, rate-wall guard); 210 confident / 95 review / 93 unresolved -
67ef2f12026-08-31 auto-data-snapshot: 2026-08-31T13:51:21 (1 data files) — public/ig-activity.json -
f5354e12026-08-31 vendors panel: '👥 My vendor contacts (N)' button + /contacts + /contacts/sheet routes (internal contact sheet in the command center; hidden if no data) -
2e93a4c2026-08-31 vendors: strict LinkedIn-connection x vendor_registry contact-sheet generator (who I know inside each DW vendor); PII outputs gitignored -
8f46fdc2026-08-31 vendors: LinkedIn Connections.csv importer + network-firms rollup (INTERNAL/PII gitignored) -
0cc700b2026-08-31 auto-data-snapshot: 2026-08-31T13:13:14 (1 data files) — public/ig-activity.json -
0d655272026-08-31 vendors: LinkedIn 'Company Follows' CSV importer + auto-merge into the LinkedIn amplify harvester (firms Steve follows) -
4bbd2442026-08-31 auto-data-snapshot: 2026-08-31T12:34:16 (10 data files) — data/vendor-linkedin-cache.json demo/out/frame-000.png demo/out/frame-001.png demo/out/frame-002.png demo/out/frame-003.png -
be836bb2026-08-31 vendors: harden fetchLiOg — linkedin-host guard, redirect:manual, content-type check (codex-check fold-in) -
b8fe12e2026-08-31 vendors panel: add 'Pull ALL vendor accounts' + IG coverage note + LinkedIn amplify section (reference/attribution-amplify, no <a>-wrapped cards); licdn img-proxy allowlist -
6ccae802026-08-31 vendors: add LinkedIn vendor→company mapping + public OG harvester (reference/attribution-amplify, no API/auth) -
d56a62c2026-08-31 TK-10519: safe no-publish TikTok integration demo video (recorder + mp4) for portal Save -
6bd3d5c2026-08-31 auto-data-snapshot: 2026-08-31T11:55:57 (9 data files) — demo/out/frame-000.png demo/out/frame-001.png demo/out/frame-002.png demo/out/frame-003.png demo/out/frame-004.png -
320353a2026-08-31 auto-data-snapshot: 2026-08-31T11:17:15 (1 data files) — public/ig-activity.json -
7f577a12026-08-31 auto-data-snapshot: 2026-08-31T10:38:49 (1 data files) — public/ig-activity.json -
6eeba612026-08-31 auto-data-snapshot: 2026-08-31T10:06:07 (1 data files) — public/ig-activity.json -
3bdf1e02026-08-31 auto-data-snapshot: 2026-08-31T09:29:05 (1 data files) — public/ig-activity.json -
1ea7c372026-08-31 auto-data-snapshot: 2026-08-31T08:52:01 (1 data files) — public/ig-activity.json -
e7499152026-08-31 auto-data-snapshot: 2026-08-31T08:15:07 (1 data files) — public/ig-activity.json -
ae6f6ab2026-08-30 deploy-safety: exclude data/ from rsync (TK-10984) -
0e518482026-08-30 add creds-in-URL fetch guard to gated pages (TK-10984) -
b18c9212026-08-30 Record Codex launchd validation comparison -
d5e756d2026-08-30 prove every Quick Post control across browsers -
092a26c2026-08-30 Add --dry-run readiness self-test to calendar snapshot publisher -
d54ceab2026-08-30 auto-data-snapshot: 2026-08-30T09:05:58 (4 data files) — cta/CTA-REPORT.md screenrecord/quickpost/DEBUG-REPORT.md screenrecord/quickpost/debug-log.jsonl verification/e2e-proof.json -
772ed7d2026-08-30 auto-data-snapshot: 2026-08-30T04:46:23 (1 data files) — public/data/clients-manifest.json -
7268a712026-08-29 auto-data-snapshot: 2026-08-29T20:09:38 (1 data files) — public/ig-activity.json -
165d43f2026-08-29 auto-data-snapshot: 2026-08-29T19:32:52 (1 data files) — public/ig-activity.json -
553a4e52026-08-29 auto-data-snapshot: 2026-08-29T18:56:11 (1 data files) — public/ig-activity.json -
a4cb4762026-08-29 auto-data-snapshot: 2026-08-29T18:19:19 (1 data files) — public/ig-activity.json -
eb8b6002026-08-29 auto-data-snapshot: 2026-08-29T17:42:33 (1 data files) — public/ig-activity.json -
ff521a32026-08-29 add true no-write fanout inspection -
17c61d42026-08-29 auto-data-snapshot: 2026-08-29T15:52:29 (1 data files) — public/ig-activity.json -
5d09e352026-08-29 auto-data-snapshot: 2026-08-29T15:15:52 (1 data files) — public/ig-activity.json -
db8976b2026-08-29 auto-data-snapshot: 2026-08-29T14:38:58 (1 data files) — public/ig-activity.json -
e52ce142026-08-29 auto-data-snapshot: 2026-08-29T14:01:46 (1 data files) — public/ig-activity.json -
dd7ead82026-08-29 auto-data-snapshot: 2026-08-29T13:24:48 (1 data files) — public/ig-activity.json -
4b81a122026-08-29 auto-data-snapshot: 2026-08-29T12:47:37 (1 data files) — public/ig-activity.json -
71ebcfd2026-08-29 auto-data-snapshot: 2026-08-29T12:10:50 (1 data files) — public/ig-activity.json -
aecd04c2026-08-29 auto-data-snapshot: 2026-08-29T11:33:46 (1 data files) — public/ig-activity.json -
998fae52026-08-29 auto-data-snapshot: 2026-08-29T10:56:48 (1 data files) — public/ig-activity.json -
231b6e32026-08-29 auto-data-snapshot: 2026-08-29T10:19:53 (1 data files) — public/ig-activity.json -
db204072026-08-29 auto-data-snapshot: 2026-08-29T09:43:04 (1 data files) — public/ig-activity.json -
ce6476e2026-08-29 auto-data-snapshot: 2026-08-29T09:06:18 (1 data files) — public/ig-activity.json -
7a096d22026-08-29 auto-data-snapshot: 2026-08-29T08:29:29 (1 data files) — public/ig-activity.json -
98d5e1d2026-08-28 auto-data-snapshot: 2026-08-28T20:07:34 (1 data files) — public/ig-activity.json -
e044b6d2026-08-28 auto-data-snapshot: 2026-08-28T19:30:46 (1 data files) — public/ig-activity.json -
b3f94d12026-08-28 auto-data-snapshot: 2026-08-28T18:53:51 (1 data files) — public/ig-activity.json -
d31a9132026-08-28 auto-data-snapshot: 2026-08-28T18:16:57 (1 data files) — public/ig-activity.json -
818c3102026-08-28 auto-data-snapshot: 2026-08-28T17:39:54 (1 data files) — public/ig-activity.json -
ca3e8662026-08-28 auto-data-snapshot: 2026-08-28T15:48:59 (1 data files) — public/ig-activity.json -
da31cd62026-08-28 auto-data-snapshot: 2026-08-28T15:12:09 (1 data files) — public/ig-activity.json -
61a29b62026-08-28 auto-data-snapshot: 2026-08-28T14:34:59 (1 data files) — public/ig-activity.json -
61d9ee22026-08-28 keep social board images durable -
dec35e12026-08-28 auto-data-snapshot: 2026-08-28T13:58:10 (1 data files) — public/ig-activity.json -
17164822026-08-28 auto-data-snapshot: 2026-08-28T13:21:26 (1 data files) — public/ig-activity.json -
3162ffc2026-08-28 auto-data-snapshot: 2026-08-28T12:44:16 (1 data files) — public/ig-activity.json -
44233912026-08-28 auto-data-snapshot: 2026-08-28T12:07:22 (3 data files) — cta/CTA-REPORT.md public/ig-activity.json screenrecord/debug-log.jsonl -
9d239072026-08-28 auto-data-snapshot: 2026-08-28T11:30:23 (1 data files) — public/ig-activity.json -
21e3d212026-08-28 refresh final click-through evidence -
6f64f442026-08-28 auto-data-snapshot: 2026-08-28T10:53:29 (1 data files) — public/ig-activity.json -
5de9f9e2026-08-28 record final MCC proof commit -
193bd342026-08-28 make MCC first run simpler and verify quick post -
2f5e1c42026-08-28 auto-data-snapshot: 2026-08-28T10:16:39 (1 data files) — public/ig-activity.json -
7bf7cfa2026-08-28 ignore generated CTA screenshots -
5b4d4632026-08-28 finish cross browser quick post proof -
def5ea92026-08-28 make quick post choices clearer and safer -
00e262c2026-08-28 add honest cross browser CTA harness -
337477c2026-08-28 auto-data-snapshot: 2026-08-28T09:39:28 (1 data files) — public/ig-activity.json -
ef2303b2026-08-28 record MCC UX verification evidence -
8cbe82e2026-08-28 simplify MCC navigation and expand quick post assets -
3a9133d2026-08-28 make quick post asset picking simpler -
a34711a2026-08-28 snapshot before MCC click-through debug -
4c82b972026-08-28 make social posting simple and credential safe -
2fd6afa2026-08-28 snapshot before kid-friendly post creator -
fb2eec32026-08-27 auto-data-snapshot: 2026-08-27T20:01:28 (1 data files) — public/ig-activity.json -
1b36b7e2026-08-27 auto-data-snapshot: 2026-08-27T19:24:37 (1 data files) — public/ig-activity.json -
6a3a3612026-08-27 auto-data-snapshot: 2026-08-27T18:47:45 (1 data files) — public/ig-activity.json -
b947c5e2026-08-27 auto-data-snapshot: 2026-08-27T18:10:50 (1 data files) — public/ig-activity.json -
83330f02026-08-27 auto-data-snapshot: 2026-08-27T17:33:56 (1 data files) — public/ig-activity.json -
d90cd5f2026-08-27 auto-data-snapshot: 2026-08-27T15:43:16 (1 data files) — public/ig-activity.json -
2a84d3d2026-08-27 auto-data-snapshot: 2026-08-27T15:06:17 (1 data files) — public/ig-activity.json -
89ad2662026-08-27 auto-data-snapshot: 2026-08-27T14:29:15 (1 data files) — public/ig-activity.json -
4b39e102026-08-27 auto-data-snapshot: 2026-08-27T13:51:49 (1 data files) — public/ig-activity.json -
0e7f2342026-08-27 auto-data-snapshot: 2026-08-27T13:15:02 (1 data files) — public/ig-activity.json -
1e777472026-08-27 auto-data-snapshot: 2026-08-27T12:38:09 (1 data files) — public/ig-activity.json -
7048f8f2026-08-27 auto-data-snapshot: 2026-08-27T12:01:15 (1 data files) — public/ig-activity.json -
ce4139f2026-08-27 auto-data-snapshot: 2026-08-27T11:24:00 (1 data files) — public/ig-activity.json -
e0f24f82026-08-27 auto-data-snapshot: 2026-08-27T10:47:06 (1 data files) — public/ig-activity.json -
5e15df42026-08-27 auto-data-snapshot: 2026-08-27T10:10:28 (1 data files) — public/ig-activity.json -
dd4eb662026-08-27 auto-data-snapshot: 2026-08-27T09:33:34 (1 data files) — public/ig-activity.json -
e0e946d2026-08-27 auto-data-snapshot: 2026-08-27T08:56:28 (1 data files) — public/ig-activity.json -
e672b7f2026-08-27 auto-data-snapshot: 2026-08-27T08:19:36 (1 data files) — public/ig-activity.json -
e125f372026-08-27 TK-10844: fix 0/35 postable IG accounts — add postable flag to build-dw-accounts.js -
e10eae72026-08-26 auto-data-snapshot: 2026-08-26T20:07:56 (1 data files) — public/ig-activity.json -
8d5cfbe2026-08-26 auto-data-snapshot: 2026-08-26T19:31:35 (1 data files) — public/ig-activity.json -
406ad8c2026-08-26 auto-data-snapshot: 2026-08-26T18:55:11 (1 data files) — public/ig-activity.json -
6be9d7c2026-08-26 auto-data-snapshot: 2026-08-26T18:18:32 (1 data files) — public/ig-activity.json -
1df66322026-08-26 auto-data-snapshot: 2026-08-26T17:42:06 (1 data files) — public/ig-activity.json -
34da8f52026-08-26 auto-data-snapshot: 2026-08-26T17:05:40 (1 data files) — public/ig-activity.json -
a2a6b932026-08-26 auto-data-snapshot: 2026-08-26T16:29:03 (1 data files) — public/ig-activity.json -
bb707aa2026-08-26 auto-data-snapshot: 2026-08-26T15:52:28 (1 data files) — public/ig-activity.json -
f3a50e42026-08-26 auto-data-snapshot: 2026-08-26T15:16:03 (1 data files) — public/ig-activity.json -
fcc4a432026-08-26 auto-data-snapshot: 2026-08-26T14:39:25 (1 data files) — public/ig-activity.json -
8bd716d2026-08-26 auto-data-snapshot: 2026-08-26T14:02:58 (1 data files) — public/ig-activity.json -
b258ba02026-08-26 auto-data-snapshot: 2026-08-26T13:25:11 (1 data files) — public/ig-activity.json -
19d867f2026-08-26 Suede Edit v3: swap Phillip Jeffries -> Hollywood in Explore commercial row (hollywood-wallcoverings, 200, no Momentum/Versa leak); CC drafts recreated -
c79dd5b2026-08-26 auto-data-snapshot: 2026-08-26T12:47:56 (1 data files) — public/ig-activity.json -
63b11af2026-08-26 Suede Edit v2: 2-line hero (How to Specify Faux Suede) + Explore=6 commercial brands (Koroseal/Wolf-Gordon/Carnegie/Innovations/Phillip Jeffries/Maya Romanoff); 22/22 links 200; CC drafts recreated -
624d90e2026-08-26 Add The Suede Edit CC campaign (Novasuede + Ultrasuede, benefits, collection links) — built, verified 16/16 links 200, contrarian-passed; send gated -
498ed362026-08-26 auto-data-snapshot: 2026-08-26T12:08:58 (2 data files) — data/campaign-drafts/BRIEF-suede-edit.md public/ig-activity.json -
dae221f2026-08-26 auto-data-snapshot: 2026-08-26T11:30:17 (1 data files) — public/ig-activity.json -
4a5c25f2026-08-26 auto-data-snapshot: 2026-08-26T10:53:15 (1 data files) — public/ig-activity.json -
bb9113e2026-08-26 auto-data-snapshot: 2026-08-26T10:15:42 (1 data files) — public/ig-activity.json -
b1a75bf2026-08-26 auto-data-snapshot: 2026-08-26T09:38:32 (1 data files) — public/ig-activity.json -
6bb98c42026-08-26 auto-data-snapshot: 2026-08-26T09:01:00 (1 data files) — public/ig-activity.json -
7186df02026-08-26 Composer: 'Build this reel' handoff to Reel Studio + fix reels-proxy POST body -
fb74fe62026-08-25 auto-data-snapshot: 2026-08-25T20:06:24 (1 data files) — public/ig-activity.json -
24298ac2026-08-25 auto-data-snapshot: 2026-08-25T19:29:44 (1 data files) — public/ig-activity.json -
a6183142026-08-25 auto-data-snapshot: 2026-08-25T18:53:12 (1 data files) — public/ig-activity.json -
60d01932026-08-25 auto-data-snapshot: 2026-08-25T18:16:26 (1 data files) — public/ig-activity.json -
e5979ba2026-08-25 auto-data-snapshot: 2026-08-25T17:39:55 (1 data files) — public/ig-activity.json -
4230a052026-08-25 auto-data-snapshot: 2026-08-25T17:03:18 (1 data files) — public/ig-activity.json -
9e7eef72026-08-25 auto-data-snapshot: 2026-08-25T16:26:17 (1 data files) — public/ig-activity.json -
17ce2dd2026-08-25 auto-data-snapshot: 2026-08-25T15:49:32 (1 data files) — public/ig-activity.json -
0c05ad72026-08-25 auto-data-snapshot: 2026-08-25T15:12:26 (1 data files) — public/ig-activity.json -
99745a12026-08-25 auto-data-snapshot: 2026-08-25T14:34:54 (1 data files) — public/ig-activity.json -
33772172026-08-25 auto-data-snapshot: 2026-08-25T13:58:08 (1 data files) — public/ig-activity.json -
5e61b4d2026-08-25 auto-data-snapshot: 2026-08-25T13:21:24 (1 data files) — public/ig-activity.json -
23aefba2026-08-25 auto-data-snapshot: 2026-08-25T12:44:18 (1 data files) — public/ig-activity.json -
cd7a2c52026-08-25 Add durable regenerate+publish job for calendarhub activation snapshot -
23020812026-08-25 auto-data-snapshot: 2026-08-25T12:06:42 (1 data files) — public/ig-activity.json -
55e8f262026-08-25 Board: show format + song chips on staged social cards -
81fe0b82026-08-25 auto-data-snapshot: 2026-08-25T11:28:19 (2 data files) — data/vendor-posts-cache.json public/ig-activity.json -
3a6c04f2026-08-25 Nav: ⌘K command palette + regroup + relabels + collapsible groups -
33e88402026-08-25 chore: v1.11.0 (session close) — vendor-amplify + Make-it-ours feature set -
796eba12026-08-25 Add /posts/refresh-one endpoint: fresh IG image on 'Make it ours' click (kills stale-URL 403); reuses bulk-refresh path, handle-allowlisted, graceful degrade -
3c85e992026-08-25 Composer: one create flow — photo → details → song → decide reel-or-what -
4a911a52026-08-25 assets: background catalog warmer (boot + 6h) + manual refresh endpoint + UI freshness signal -
4c5fac62026-08-25 Route settlement vision gate to local $0 ollama qwen2.5vl (both paid vision keys depleted); fail-closed preserved, env-overridable -
88aa02b2026-08-25 Owned·DW Fleet: apply contrarian fixes (sort actionability + NaN/URL guards) -
7064e7c2026-08-25 Re-route Make-it-ours off Gemini: settlement vision → Claude, room render → Replicate SDXL -
834187d2026-08-25 auto-data-snapshot: 2026-08-25T10:46:10 (1 data files) — public/ig-activity.json -
96908672026-08-25 Owned·DW Fleet: add 7-day cadence + 'slowing' signal -
f91859a2026-08-25 Refine Owned·DW Fleet: surface dormant + repetition health signals + sort -
6b6da552026-08-25 Add "Make it ours" DW-original creative system to #vendors amplify -
c12730b2026-08-25 Show last 6 posts per owned account in the #vendors Owned·DW Fleet section -
37ff9a82026-08-25 mcc: credential-safe fetch guard in shell (inoculate root-relative /api/* fetches) -
3b784fd2026-08-25 Guard: suppress amplify controls for never-front-facing brands (Schumacher) on #vendors panel -
7e55f1a2026-08-25 Add per-post "Post from" account selector + "Make unique" per-account captions to #vendors amplify -
96ae5572026-08-25 auto-data-snapshot: 2026-08-25T10:08:44 (3 data files) — data/quickpost-drafts.json data/vendor-amplify-drafts.json public/ig-activity.json -
e2c57402026-08-25 Add per-post vendor-amplify controls (X Post / Copy kit / Amplify) to #vendors panel -
107e3292026-08-25 Make the IG account pickers real: persist handle server-side + guard follow-counts -
82a90862026-08-25 auto-data-snapshot: 2026-08-25T09:32:22 (1 data files) — public/ig-activity.json -
093bb572026-08-25 Embed all 35 DW-owned Instagram accounts across every social/account panel -
aa6a4592026-08-25 auto-data-snapshot: 2026-08-25T08:55:17 (1 data files) — public/ig-activity.json -
059034e2026-08-25 MCC IG re-pull: hourly 6am-6pm cron cadence (was daily), board staleness threshold 14h -
0fd30522026-08-24 auto-data-snapshot: 2026-08-24T20:06:56 (1 data files) — public/ig-activity.json -
79232452026-08-24 auto-data-snapshot: 2026-08-24T19:34:57 (1 data files) — public/ig-activity.json -
a735d602026-08-24 auto-data-snapshot: 2026-08-24T18:33:36 (1 data files) — public/ig-activity.json -
992a8242026-08-24 auto-data-snapshot: 2026-08-24T18:03:09 (1 data files) — public/ig-activity.json -
28339812026-08-24 auto-data-snapshot: 2026-08-24T17:32:43 (1 data files) — public/ig-activity.json -
f6d39c92026-08-24 auto-data-snapshot: 2026-08-24T17:02:17 (1 data files) — public/ig-activity.json -
6e9798f2026-08-24 auto-data-snapshot: 2026-08-24T16:31:44 (1 data files) — public/ig-activity.json -
f6514dc2026-08-24 auto-data-snapshot: 2026-08-24T15:30:55 (1 data files) — public/ig-activity.json -
e7347502026-08-24 auto-data-snapshot: 2026-08-24T15:00:29 (1 data files) — public/ig-activity.json -
6874f812026-08-24 auto-data-snapshot: 2026-08-24T14:29:57 (1 data files) — public/ig-activity.json -
2c4768e2026-08-24 auto-data-snapshot: 2026-08-24T13:59:29 (1 data files) — public/ig-activity.json -
b776f782026-08-24 auto-data-snapshot: 2026-08-24T13:25:50 (1 data files) — public/ig-activity.json -
c7aba342026-08-24 auto-data-snapshot: 2026-08-24T12:55:01 (1 data files) — public/ig-activity.json -
c115ac82026-08-24 auto-data-snapshot: 2026-08-24T12:20:25 (1 data files) — public/ig-activity.json -
ce597a12026-08-24 auto-data-snapshot: 2026-08-24T11:12:29 (1 data files) — public/ig-activity.json -
1db75a22026-08-24 auto-data-snapshot: 2026-08-24T10:40:26 (1 data files) — public/ig-activity.json -
4594a512026-08-24 auto-data-snapshot: 2026-08-24T10:08:33 (1 data files) — public/ig-activity.json -
7ec64f12026-08-24 auto-data-snapshot: 2026-08-24T09:36:43 (1 data files) — public/ig-activity.json -
37d1c6a2026-08-24 auto-data-snapshot: 2026-08-24T09:04:34 (1 data files) — public/ig-activity.json -
88a6a152026-08-24 auto-data-snapshot: 2026-08-24T08:30:43 (1 data files) — public/ig-activity.json -
cc01a1b2026-08-23 auto-data-snapshot: 2026-08-23T03:47:15 (1 data files) — public/data/clients-manifest.json -
63a39942026-08-22 auto-data-snapshot: 2026-08-22T20:21:39 (1 data files) — public/ig-activity.json -
868808e2026-08-22 auto-data-snapshot: 2026-08-22T19:49:55 (1 data files) — public/ig-activity.json -
442b9832026-08-22 auto-data-snapshot: 2026-08-22T18:46:26 (1 data files) — public/ig-activity.json -
74fee512026-08-22 auto-data-snapshot: 2026-08-22T18:14:40 (1 data files) — public/ig-activity.json -
268e0302026-08-22 auto-data-snapshot: 2026-08-22T17:42:55 (1 data files) — public/ig-activity.json -
f7323ed2026-08-22 auto-data-snapshot: 2026-08-22T17:10:07 (1 data files) — public/ig-activity.json -
e88d4562026-08-22 auto-data-snapshot: 2026-08-22T16:38:17 (1 data files) — public/ig-activity.json -
82f668c2026-08-22 auto-data-snapshot: 2026-08-22T16:06:34 (1 data files) — public/ig-activity.json -
3dbf80d2026-08-22 auto-data-snapshot: 2026-08-22T15:34:47 (1 data files) — public/ig-activity.json -
cd4e2872026-08-22 auto-data-snapshot: 2026-08-22T14:31:07 (1 data files) — public/ig-activity.json -
8ff7acd2026-08-22 auto-data-snapshot: 2026-08-22T13:59:22 (1 data files) — public/ig-activity.json -
19d42ec2026-08-22 auto-data-snapshot: 2026-08-22T13:27:36 (1 data files) — public/ig-activity.json -
0ef1eb52026-08-22 auto-data-snapshot: 2026-08-22T12:55:46 (1 data files) — public/ig-activity.json -
e0b84522026-08-22 auto-data-snapshot: 2026-08-22T12:23:53 (1 data files) — public/ig-activity.json -
2f68ea22026-08-22 auto-data-snapshot: 2026-08-22T11:52:06 (1 data files) — public/ig-activity.json -
31431522026-08-22 auto-data-snapshot: 2026-08-22T11:19:22 (1 data files) — public/ig-activity.json -
47287572026-08-22 auto-data-snapshot: 2026-08-22T10:47:10 (1 data files) — public/ig-activity.json -
07d072a2026-08-22 auto-data-snapshot: 2026-08-22T10:15:24 (1 data files) — public/ig-activity.json -
aac70302026-08-22 auto-data-snapshot: 2026-08-22T09:43:39 (1 data files) — public/ig-activity.json -
1ae9a0c2026-08-22 auto-data-snapshot: 2026-08-22T09:11:56 (1 data files) — public/ig-activity.json -
c31ae822026-08-22 auto-data-snapshot: 2026-08-22T08:40:11 (1 data files) — public/ig-activity.json -
45a25a62026-08-21 auto-data-snapshot: 2026-08-21T19:54:30 (1 data files) — public/ig-activity.json -
2c356502026-08-21 auto-data-snapshot: 2026-08-21T19:22:48 (1 data files) — public/ig-activity.json -
2e106b02026-08-21 auto-data-snapshot: 2026-08-21T18:19:14 (1 data files) — public/ig-activity.json -
6c8a09c2026-08-21 auto-data-snapshot: 2026-08-21T17:47:31 (1 data files) — public/ig-activity.json -
6f37b852026-08-21 auto-data-snapshot: 2026-08-21T17:15:45 (1 data files) — public/ig-activity.json -
fd3dfa62026-08-21 auto-data-snapshot: 2026-08-21T16:12:08 (1 data files) — public/ig-activity.json -
c3f15192026-08-21 auto-data-snapshot: 2026-08-21T15:40:21 (1 data files) — public/ig-activity.json -
b5d22192026-08-21 auto-data-snapshot: 2026-08-21T15:08:36 (1 data files) — public/ig-activity.json -
dc9723f2026-08-21 auto-data-snapshot: 2026-08-21T14:05:07 (1 data files) — public/ig-activity.json -
e1da0da2026-08-21 auto-data-snapshot: 2026-08-21T13:33:25 (1 data files) — public/ig-activity.json -
a49891c2026-08-21 auto-data-snapshot: 2026-08-21T13:00:36 (1 data files) — public/ig-activity.json -
7e47c322026-08-21 auto-data-snapshot: 2026-08-21T12:28:01 (1 data files) — public/ig-activity.json -
232ca922026-08-21 auto-data-snapshot: 2026-08-21T11:56:19 (1 data files) — public/ig-activity.json -
69099f12026-08-21 auto-data-snapshot: 2026-08-21T11:24:34 (1 data files) — public/ig-activity.json -
bffa73a2026-08-21 auto-data-snapshot: 2026-08-21T10:52:53 (1 data files) — public/ig-activity.json -
63784012026-08-21 auto-data-snapshot: 2026-08-21T09:49:18 (1 data files) — public/ig-activity.json -
622e6492026-08-21 auto-data-snapshot: 2026-08-21T09:17:35 (1 data files) — public/ig-activity.json -
537bf0e2026-08-21 auto-data-snapshot: 2026-08-21T08:45:49 (1 data files) — public/ig-activity.json -
476d5e92026-08-20 auto-data-snapshot: 2026-08-20T20:00:17 (1 data files) — public/ig-activity.json -
e3f06202026-08-20 auto-data-snapshot: 2026-08-20T19:28:34 (1 data files) — public/ig-activity.json -
b8b8a3f2026-08-20 auto-data-snapshot: 2026-08-20T18:56:52 (1 data files) — public/ig-activity.json -
bf65f442026-08-20 auto-data-snapshot: 2026-08-20T17:52:14 (1 data files) — public/ig-activity.json -
a1773ab2026-08-20 auto-data-snapshot: 2026-08-20T17:19:08 (1 data files) — public/ig-activity.json -
a34a89c2026-08-20 auto-data-snapshot: 2026-08-20T15:43:22 (1 data files) — public/ig-activity.json -
ad663e12026-08-20 auto-data-snapshot: 2026-08-20T15:11:42 (1 data files) — public/ig-activity.json -
c003bb12026-08-20 auto-data-snapshot: 2026-08-20T14:39:47 (1 data files) — public/ig-activity.json -
65c7b6b2026-08-20 auto-data-snapshot: 2026-08-20T14:07:04 (1 data files) — public/ig-activity.json -
12f11932026-08-20 auto-data-snapshot: 2026-08-20T13:34:43 (1 data files) — public/ig-activity.json -
2f49bbb2026-08-20 auto-data-snapshot: 2026-08-20T13:00:52 (1 data files) — public/ig-activity.json -
4a27c052026-08-20 auto-data-snapshot: 2026-08-20T12:27:13 (1 data files) — public/ig-activity.json -
e9daffa2026-08-20 auto-data-snapshot: 2026-08-20T11:53:54 (1 data files) — public/ig-activity.json -
cf895182026-08-20 auto-data-snapshot: 2026-08-20T11:21:15 (1 data files) — public/ig-activity.json -
352cd282026-08-20 auto-data-snapshot: 2026-08-20T10:47:55 (1 data files) — public/ig-activity.json -
14ba93b2026-08-20 auto-data-snapshot: 2026-08-20T10:13:33 (2 data files) — package-lock.json public/ig-activity.json -
940696a2026-08-20 chore: v1.10.4 — meta-token-health retry/expiry hardening (session close) -
169f8b12026-08-20 auto-data-snapshot: 2026-08-20T09:38:44 (2 data files) — data/vendor-posts-cache.json public/ig-activity.json -
87182692026-08-20 meta-token-health: retry transient Graph blips + only prescribe token-paste on true expiry (fix 8/20 false alarm) -
62c9b252026-08-20 auto-data-snapshot: 2026-08-20T09:06:02 (1 data files) — public/ig-activity.json -
a5809822026-08-20 auto-data-snapshot: 2026-08-20T08:33:21 (1 data files) — public/ig-activity.json -
0e84e132026-08-20 nav-agent: sync v1.3 (host left-sidebar collapse on load) -
e3b286d2026-08-19 auto-data-snapshot: 2026-08-19T20:02:37 (1 data files) — public/ig-activity.json -
f4553d92026-08-19 auto-data-snapshot: 2026-08-19T19:30:02 (1 data files) — public/ig-activity.json -
20a99872026-08-19 auto-data-snapshot: 2026-08-19T18:57:31 (1 data files) — public/ig-activity.json -
0229a782026-08-19 auto-data-snapshot: 2026-08-19T18:24:30 (1 data files) — public/ig-activity.json -
b1a31ce2026-08-19 auto-data-snapshot: 2026-08-19T17:51:58 (1 data files) — public/ig-activity.json -
260774e2026-08-19 auto-data-snapshot: 2026-08-19T15:07:55 (1 data files) — public/ig-activity.json -
7bee9822026-08-19 auto-data-snapshot: 2026-08-19T14:34:38 (1 data files) — public/ig-activity.json -
8e114fc2026-08-19 nav-agent: List data full-width tight columns (grid) — layout fix -
0eb7d462026-08-19 Refresh nav-agent to v1.2 (adds kv-list compact List view, default-off) -
ce97a742026-08-19 auto-data-snapshot: 2026-08-19T14:01:25 (1 data files) — public/ig-activity.json -
5f3811d2026-08-19 auto-data-snapshot: 2026-08-19T13:27:48 (1 data files) — public/ig-activity.json -
91883072026-08-19 auto-data-snapshot: 2026-08-19T12:54:53 (1 data files) — public/ig-activity.json -
8504ad62026-08-19 auto-data-snapshot: 2026-08-19T12:22:10 (1 data files) — public/ig-activity.json -
5466aea2026-08-19 auto-data-snapshot: 2026-08-19T11:48:49 (1 data files) — public/ig-activity.json -
6a2b7ba2026-08-19 auto-data-snapshot: 2026-08-19T11:14:55 (1 data files) — public/ig-activity.json -
2ee91c62026-08-19 auto-data-snapshot: 2026-08-19T10:40:44 (1 data files) — public/ig-activity.json -
4d55ade2026-08-19 auto-data-snapshot: 2026-08-19T10:08:05 (1 data files) — public/ig-activity.json -
4de36be2026-08-19 auto-data-snapshot: 2026-08-19T09:03:01 (1 data files) — public/ig-activity.json -
e6ace9c2026-08-19 auto-data-snapshot: 2026-08-19T08:31:04 (1 data files) — public/ig-activity.json -
9ef8dfa2026-08-18 auto-data-snapshot: 2026-08-18T19:51:40 (1 data files) — public/ig-activity.json -
d04ee542026-08-18 auto-data-snapshot: 2026-08-18T19:20:00 (1 data files) — public/ig-activity.json -
7f9f7d82026-08-18 auto-data-snapshot: 2026-08-18T18:48:21 (1 data files) — public/ig-activity.json -
2d2532b2026-08-18 auto-data-snapshot: 2026-08-18T17:44:33 (1 data files) — public/ig-activity.json -
cb7879c2026-08-18 auto-data-snapshot: 2026-08-18T17:12:33 (1 data files) — public/ig-activity.json -
bbb5bca2026-08-18 auto-data-snapshot: 2026-08-18T15:36:46 (1 data files) — public/ig-activity.json -
585fd5b2026-08-18 auto-data-snapshot: 2026-08-18T15:04:50 (1 data files) — public/ig-activity.json -
ca13b0c2026-08-18 auto-data-snapshot: 2026-08-18T14:32:35 (1 data files) — public/ig-activity.json -
69c38452026-08-18 auto-data-snapshot: 2026-08-18T13:28:17 (1 data files) — public/ig-activity.json -
7aa25da2026-08-18 auto-data-snapshot: 2026-08-18T12:56:03 (1 data files) — public/ig-activity.json -
2bfd3082026-08-18 auto-data-snapshot: 2026-08-18T12:24:13 (2 data files) — data/campaign-drafts/the-classics-VERIFIED-2026-08-18.png public/ig-activity.json -
907af992026-08-18 auto-data-snapshot: 2026-08-18T11:49:58 (2 data files) — data/campaign-drafts/the-classics-collective-2026-08-18.png public/ig-activity.json -
215f4432026-08-18 auto-data-snapshot: 2026-08-18T11:17:58 (1 data files) — public/ig-activity.json -
62b3f172026-08-18 auto-data-snapshot: 2026-08-18T10:46:23 (1 data files) — public/ig-activity.json -
fd2b38a2026-08-18 auto-data-snapshot: 2026-08-18T10:14:32 (1 data files) — public/ig-activity.json -
a3948d22026-08-18 auto-data-snapshot: 2026-08-18T09:42:51 (1 data files) — public/ig-activity.json -
88db0cf2026-08-18 auto-data-snapshot: 2026-08-18T09:11:00 (1 data files) — public/ig-activity.json -
0eb138c2026-08-18 auto-data-snapshot: 2026-08-18T08:40:41 (1 data files) — public/ig-activity.json -
d53796d2026-08-17 auto-data-snapshot: 2026-08-17T20:02:38 (1 data files) — public/ig-activity.json -
cdbb8802026-08-17 auto-data-snapshot: 2026-08-17T19:32:24 (1 data files) — public/ig-activity.json -
b4cfce12026-08-17 auto-data-snapshot: 2026-08-17T18:31:52 (1 data files) — public/ig-activity.json -
d2244d62026-08-17 auto-data-snapshot: 2026-08-17T18:01:33 (1 data files) — public/ig-activity.json -
ab282072026-08-17 auto-data-snapshot: 2026-08-17T17:31:10 (1 data files) — public/ig-activity.json -
8f8f42f2026-08-17 auto-data-snapshot: 2026-08-17T17:00:51 (1 data files) — public/ig-activity.json -
7576dff2026-08-17 auto-data-snapshot: 2026-08-17T16:30:27 (1 data files) — public/ig-activity.json -
2d898c52026-08-17 auto-data-snapshot: 2026-08-17T15:29:38 (1 data files) — public/ig-activity.json -
0a636ab2026-08-17 auto-data-snapshot: 2026-08-17T14:59:21 (1 data files) — public/ig-activity.json -
03d771a2026-08-17 auto-data-snapshot: 2026-08-17T14:29:06 (1 data files) — public/ig-activity.json -
68b69b52026-08-17 auto-data-snapshot: 2026-08-17T13:58:50 (1 data files) — public/ig-activity.json -
c56ea492026-08-17 auto-data-snapshot: 2026-08-17T12:27:54 (1 data files) — public/ig-activity.json -
dc4f4552026-08-17 auto-data-snapshot: 2026-08-17T11:57:38 (1 data files) — public/ig-activity.json -
9013d422026-08-17 auto-data-snapshot: 2026-08-17T11:27:07 (1 data files) — public/ig-activity.json -
490cea02026-08-17 auto-data-snapshot: 2026-08-17T10:56:53 (1 data files) — public/ig-activity.json -
1b23c662026-08-17 auto-data-snapshot: 2026-08-17T10:26:39 (1 data files) — public/ig-activity.json -
baa6ac72026-08-17 auto-data-snapshot: 2026-08-17T09:04:04 (1 data files) — public/ig-activity.json -
c2bf2e62026-08-17 snapshot before restart: preserve in-flight work -
679a39e2026-08-17 ig-activity: honest banner when Norma delete-host unreachable (e.g. from Kamatera); disable delete buttons there -
4fd1cb42026-08-17 ig-activity: IG Posts panel — show all fleet IG posts + per-post delete proxied to Norma's gated/serialized delete -
0c84eb52026-08-17 copy: consolidate onto shared lib/fetch-timeout.js (drop duplicate helper) -
f6af2dd2026-08-16 auto-data-snapshot: 2026-08-16T09:54:36 (1 data files) — public/ig-activity.json -
ee1e9242026-08-16 modules: hard-timeout all remaining unguarded external fetches -
c683e162026-08-16 copy: hard-timeout the Anthropic/Gemini fetches (no more infinite hang) -
6b14b132026-08-16 auto-data-snapshot: 2026-08-16T03:49:55 (1 data files) — public/data/clients-manifest.json -
5869a282026-08-15 engine: make GET /today non-blocking + add generation run-lock -
a30458a2026-08-15 auto-data-snapshot: 2026-08-15T20:14:06 (1 data files) — public/ig-activity.json -
630b4182026-08-15 auto-data-snapshot: 2026-08-15T19:12:38 (1 data files) — public/ig-activity.json -
357aa6c2026-08-15 auto-data-snapshot: 2026-08-15T18:52:36 (1 data files) — public/ig-activity.json -
7e2e9252026-08-15 auto-data-snapshot: 2026-08-15T18:22:11 (1 data files) — public/ig-activity.json -
17012b72026-08-15 auto-data-snapshot: 2026-08-15T17:51:45 (1 data files) — public/ig-activity.json -
fa2c9e72026-08-15 auto-data-snapshot: 2026-08-15T17:21:18 (1 data files) — public/ig-activity.json -
00921d82026-08-15 auto-data-snapshot: 2026-08-15T16:50:52 (1 data files) — public/ig-activity.json -
8754f8d2026-08-15 auto-data-snapshot: 2026-08-15T16:20:27 (1 data files) — public/ig-activity.json -
4d01b4f2026-08-15 auto-data-snapshot: 2026-08-15T15:50:00 (1 data files) — public/ig-activity.json -
9907a592026-08-15 auto-data-snapshot: 2026-08-15T14:18:43 (1 data files) — public/ig-activity.json -
2bd45d62026-08-15 auto-data-snapshot: 2026-08-15T13:48:16 (1 data files) — public/ig-activity.json -
bad79a12026-08-15 auto-data-snapshot: 2026-08-15T13:17:24 (1 data files) — public/ig-activity.json -
16d890b2026-08-15 auto-data-snapshot: 2026-08-15T12:46:51 (1 data files) — public/ig-activity.json -
fd4a4f82026-08-15 auto-data-snapshot: 2026-08-15T11:45:53 (1 data files) — public/ig-activity.json -
1bc9a302026-08-15 auto-data-snapshot: 2026-08-15T10:44:53 (1 data files) — public/ig-activity.json -
becccd52026-08-15 auto-data-snapshot: 2026-08-15T10:14:23 (1 data files) — public/ig-activity.json -
754a8102026-08-15 auto-data-snapshot: 2026-08-15T09:43:56 (1 data files) — public/ig-activity.json -
b9e5b7f2026-08-15 auto-data-snapshot: 2026-08-15T09:13:26 (1 data files) — public/ig-activity.json -
2531f812026-08-15 auto-data-snapshot: 2026-08-15T08:12:28 (1 data files) — public/ig-activity.json -
87346482026-08-14 auto-data-snapshot: 2026-08-14T19:30:43 (1 data files) — public/ig-activity.json -
03d918d2026-08-14 auto-data-snapshot: 2026-08-14T19:00:16 (1 data files) — public/ig-activity.json -
439b3632026-08-14 auto-data-snapshot: 2026-08-14T18:29:45 (1 data files) — public/ig-activity.json -
239a9112026-08-14 auto-data-snapshot: 2026-08-14T17:28:57 (1 data files) — public/ig-activity.json -
833b32b2026-08-14 auto-data-snapshot: 2026-08-14T11:23:02 (1 data files) — public/ig-activity.json -
1985b402026-08-14 auto-data-snapshot: 2026-08-14T10:52:23 (1 data files) — public/ig-activity.json -
cb2cbac2026-08-14 auto-data-snapshot: 2026-08-14T08:19:45 (1 data files) — public/ig-activity.json -
062bb9e2026-08-13 auto-data-snapshot: 2026-08-13T19:38:43 (1 data files) — public/ig-activity.json -
d1a2ddd2026-08-13 auto-data-snapshot: 2026-08-13T19:08:13 (1 data files) — public/ig-activity.json -
ad6dd0a2026-08-13 auto-data-snapshot: 2026-08-13T18:37:41 (1 data files) — public/ig-activity.json -
7aa1f7d2026-08-13 auto-data-snapshot: 2026-08-13T18:07:15 (1 data files) — public/ig-activity.json -
8d790fe2026-08-13 auto-data-snapshot: 2026-08-13T17:06:27 (1 data files) — public/ig-activity.json -
7eaa41f2026-08-13 nav-agent: universal grid-controls drop-in on internal dashboard/command-center pages (STRONG-only) -
9c6fd712026-08-13 auto-data-snapshot: 2026-08-13T08:21:55 (1 data files) — public/ig-activity.json -
22e1fa72026-08-12 auto-data-snapshot: 2026-08-12T19:37:30 (1 data files) — public/ig-activity.json -
3fdad132026-08-12 auto-data-snapshot: 2026-08-12T19:06:56 (1 data files) — public/ig-activity.json -
bed8a932026-08-12 tiktok: align OAuth scope to draft-mode (video.upload,user.info.basic) + add DW Marketing app icon asset -
de9aaf32026-08-12 auto-data-snapshot: 2026-08-12T18:36:17 (1 data files) — public/ig-activity.json -
960ca432026-08-12 auto-data-snapshot: 2026-08-12T18:04:53 (1 data files) — public/ig-activity.json -
cc56d382026-08-12 auto-data-snapshot: 2026-08-12T17:03:39 (3 data files) — package-lock.json public/ig-activity.json scripts/.li-cma-watch-seen.json -
aaf52792026-08-12 deploy: /channels/health probe + Quick Post token dots live (v1.10.3) -
f874f5b2026-08-12 channels: consolidated /health probe (fb/ig/tiktok/linkedin/threads/bluesky/youtube) + Quick Post per-platform token dots -
a89c0052026-08-12 channels: add read-only GET /tiktok-health token-validity probe (creator_info; token never leaves server) -
941504a2026-08-12 auto-data-snapshot: 2026-08-12T16:33:05 (2 data files) — data/quickpost-drafts.json package-lock.json -
311ff852026-08-12 Quick Post live path: + Threads/Bluesky, 'Publish live' hands off to Composer (prefill + targeted account + dry-run+confirm) — no direct live post -
a03f7e32026-08-12 deploy: Easy Post buttons live on marketing.dw (v1.10.0) -
f8591dc2026-08-12 Easy Post buttons: shared stage-a-draft component + Quick Post panel + Compose row + asset-card buttons (gated) -
eacbee82026-08-12 MCC promo v3: DTD fix — hub screenshots as intentional app-windows, zoom-cropped to read on phone (9:16+4:5+1:1) -
517468b2026-08-12 Stage MCC streamline promo social DRAFTS (TikTok/IG/FB) — captions finalized to DW luxe voice, draft-only -
7e7292e2026-08-12 auto-data-snapshot: 2026-08-12T15:01:25 (1 data files) — videos/mcc-streamline-promo/.media/audio/narration.wav -
1444bf72026-08-12 MCC deploy: exclude churning videos/*/renders build artifacts (rsync code-24 aborted reload) — TK-10504 -
dee3f1f2026-08-12 MCC promo v2: hook-first, tighter (15.9s), new hook line; 9:16 + 4:5 + 1:1 aspects -
79e17982026-08-12 MCC LinkedIn Network Feed: paste-URL curation board (the working populate path) — TK-10504 -
1749ce42026-08-12 MCC LinkedIn Network Feed: mark EXPERIMENTAL — scrape non-functional vs LinkedIn's current feed (TK-10504) -
2a3f00f2026-08-12 HyperFrames social promo for streamlined MCC (9:16 + 1:1, cloned VO + captions) -
7c9bd032026-08-12 auto-data-snapshot: 2026-08-12T14:30:58 (20 data files) — package-lock.json videos/mcc-streamline-promo/.media/audio/narration.wav videos/mcc-streamline-promo/.media/preferences.json videos/mcc-streamline-promo/AGENTS.md videos/mcc-streamline-promo/BRIEF.md -
189b7f72026-08-12 MCC deploy: protect remote linkedin-feed.json harvest output from rsync clobber (TK-10504) -
46e18c82026-08-12 MCC LinkedIn: Network Feed — openclaw harvest of own feed + gated reshare + download-to-assets -
454644c2026-08-12 deploy: Insights hub live on Kamatera (v1.9.1) -
70147842026-08-12 Collapse 8 Preview panels into a single Insights hub (tabbed, single-pane swap); nav now 6 groups (v1.9.1) -
39e86ec2026-08-12 auto-data-snapshot: 2026-08-12T14:00:30 (1 data files) — package-lock.json -
0e5e9052026-08-12 deploy: streamlined MCC (6 groups, Compose+Calendar hubs) live on Kamatera (v1.9.0) -
574b2062026-08-12 Streamline MCC: 28 tabs → 6 calendar-led groups; merge engine+composer → Compose (tabs+sound wiring) and calendars+calendar → Calendar hub; hide 8 mock panels under Preview (v1.9.0) -
75ad81c2026-08-12 auto-data-snapshot: 2026-08-12T12:59:45 (1 data files) — package-lock.json -
985e4092026-08-12 deploy: social-selection bar live on marketing.dw #sounds (v1.8.3) -
13b12092026-08-12 Sounds: drag songs (or tap +) into a social-selection bar — chips, dedupe, remove, Copy list, localStorage-persisted (v1.8.3) -
488e0052026-08-12 chore: refactor (drop unused param), v1.8.2 (session close) -
0b8eb412026-08-12 Sounds panel: move assets into left panel with in-panel iframe preview, no link-out -
12f7c092026-08-12 auto-data-snapshot: 2026-08-12T11:28:02 (1 data files) — public/ig-activity.json -
9e113062026-08-12 auto-data-snapshot: 2026-08-12T10:57:24 (1 data files) — public/ig-activity.json -
409d4bd2026-08-12 auto-data-snapshot: 2026-08-12T10:26:55 (1 data files) — public/ig-activity.json -
9696abb2026-08-12 auto-data-snapshot: 2026-08-12T09:25:42 (1 data files) — public/ig-activity.json -
bb5951c2026-08-12 auto-data-snapshot: 2026-08-12T08:54:38 (1 data files) — public/ig-activity.json -
8bf16c62026-08-12 auto-data-snapshot: 2026-08-12T08:23:24 (1 data files) — public/ig-activity.json -
9bbf4232026-08-11 auto-data-snapshot: 2026-08-11T13:51:52 (1 data files) — public/ig-activity.json -
bcab1e92026-08-11 auto-data-snapshot: 2026-08-11T13:21:01 (1 data files) — public/ig-activity.json -
eba12172026-08-11 auto-data-snapshot: 2026-08-11T11:45:12 (1 data files) — public/ig-activity.json -
7f4de3c2026-08-11 auto-data-snapshot: 2026-08-11T10:12:37 (1 data files) — public/ig-activity.json -
fb98d9a2026-08-11 auto-data-snapshot: 2026-08-11T09:10:52 (1 data files) — public/ig-activity.json -
1ec99402026-08-11 IG activity panel: grid/list toggle + sort by all columns (dropdown + clickable headers) -
1ccbe052026-08-11 Add IG Network Activity panel (what's posted + where, per-card date/time, sort+density) -
a9240732026-08-09 auto-data-snapshot: 2026-08-09T04:37:25 (1 data files) — public/data/clients-manifest.json -
4ff6ad32026-08-02 auto-save: 2026-08-02T04:12:02 (1 files) — public/data/clients-manifest.json -
eb627092026-07-30 auto-save: 2026-07-30T15:49:17 (1 files) — package-lock.json -
37441d32026-07-30 fix(linkedin): blank media title default + video-wins when both media refs given (Cody-verified) -
60ffd0e2026-07-30 chore: lint+refactor, fix channels postLinkedIn video routing, vN (session close) -
ef6776b2026-07-30 linkedin(mcc): incorporate native image/video posting into the command center -
42fc9c32026-07-30 auto-save: 2026-07-30T14:48:53 (1 files) — docs/submissions/linkedin-cas-11523819-followup.md -
39fcdef2026-07-27 MCC bluesky: fail loud if image can't embed — never silently post text-only -
f4429c82026-07-27 auto-save: 2026-07-27T15:21:37 (1 files) — data/cc-warmup-seed-200.json -
a9436a52026-07-27 auto-save: 2026-07-27T14:51:27 (1 files) — data/cc-import-activities-audit.jsonl -
d530fe42026-07-27 auto-save: 2026-07-27T14:21:14 (2 files) — data/cc-import-fm-clients-hold.json data/cc-import-fm-clients-mailable.json -
747d83a2026-07-26 auto-save: 2026-07-26T04:40:35 (1 files) — public/data/clients-manifest.json -
38e14e72026-07-22 auto-save: 2026-07-22T12:44:11 (1 files) — package-lock.json -
85f35662026-07-22 chore: version bump (session close) -
5d1c41b2026-07-22 chore(mcc): move IG re-pull schedule from Mac2 launchd to Kamatera-local cron -
6b2db252026-07-22 auto-save: 2026-07-22T12:13:58 (1 files) — data/ig-repull-status.json -
21be5cc2026-07-22 feat(mcc): board shows IG re-pull health at a glance + Run-now fix button -
6d2f55b2026-07-22 chore(mcc): daily launchd job for the IG media re-pull (Mac2 → Kamatera SSH) -
214b1bb2026-07-22 fix(mcc): IG re-pull only touches at-risk images, never clobbers stable URLs -
971082a2026-07-22 feat(mcc): IG Graph API re-pull to restore durable thumbnails for published IG posts -
2ffb36f2026-07-22 fix(mcc): durable local cache for expiring IG/fbcdn post images + graceful placeholder -
243d9c52026-07-22 fix(mcc): guard panel-router race that blanked panels + untrack screen-record videos -
5a92b902026-07-22 auto-save: 2026-07-22T10:13:11 (5 files) — scripts/repro-run3.js screenrecord/DEBUG-REPORT.md scripts/probe-403.js scripts/verify-fix.js scripts/verify-fix2.js -
c073e612026-07-22 auto-save: 2026-07-22T09:43:01 (8 files) — public/app.js screenrecord/ scripts/nav-map.js scripts/probe-403-and-posts.js scripts/repro-race.js -
355b7302026-07-22 auto-save: 2026-07-22T08:42:49 (1 files) — package-lock.json -
0eff96e2026-07-22 chore: v1.7.0 (session close — Threads un-gate, image+SKU generation, honest postable status, /publish skip) -
29d1ff22026-07-22 channels: /publish skips non-postable + media-mismatched channels -
69af9fe2026-07-22 channels: add honest 'postable' status — connected != can-actually-post -
d84dc2a2026-07-22 engine: untrack runtime engine-queue.json + protect it on deploy -
d9e22d32026-07-22 engine: image-grounded captions (vision) + always include DW SKU -
7ff5d7c2026-07-22 deploy: ship Threads un-gate to Kamatera MCC (app 69 reloaded, health 200) -
25452732026-07-22 engine: stop birth-gating Threads suggestions (DW is a Meta tester, publishes without App Review) -
5459b682026-07-21 LinkedIn: filed Developer Support ticket CAS-11523819 to unblock CMA (auto-added defaults on app 257140099) -
aae7c9c2026-07-21 LinkedIn: record CMA self-serve blocker (auto-added default products grey Request access; app 257140099 created+verified, client 86z1h5ic86lw65, org 3090253) -
2becbe52026-07-21 submissions: Facebook pages_manage_posts App Review package (dashboard steps + use-case + screencast script + reviewer repro) -
eb16f002026-07-21 submissions: LinkedIn dedicated-app + Community Management API request package (new-app spec + email-verify + post-approval finish) -
4e9c4252026-07-21 submissions: TikTok production App Review package (fields + scope text + demo shot-list + submit steps) -
33d51742026-07-21 chore: v1.6.3 (session close — FB page names fix) -
3779b0f2026-07-21 engine: add LinkedIn as 7th channel — image-upload adapter (initializeUpload→PUT→post), status entry, trade-voice captions, channel backfill for already-generated days -
71a303c2026-07-21 5x: Engine panel verified clean on live marketing.dw (0 app defects; 2 harness fixes, 1 phantom discarded) -
024a26b2026-07-21 channels: show real Facebook Page names instead of raw IDs in status panel -
0210a802026-07-21 engine: contrarian fixes — YT approve defaults private, edit routed through CAS (double-post guard), TZ pinned PT, productUrl in outbound content (+bluesky budget), LLM claim-grounding -
0b738312026-07-21 engine: brain (candidates+llm+generate), scheduler (CAS tick+crash sweep), Engine panel UI -
0938d512026-07-21 engine: core module (store/config/skeleton) + channels.postLive + leak-deny lib -
e8501e82026-07-21 assets: local qwen2.5vl vision enrichment (aiTags) + search -
70479a42026-07-21 youtube: add force-ssl scope for videos.update (visibility control) -
e10410d2026-07-21 youtube: add /youtube/visibility endpoint (flip private↔public via videos.update) -
85d08d72026-07-21 youtube: build resumable videos.insert upload pipeline (postYouTube) + token refresh -
ed9e2e22026-07-21 channels: derive TikTok + YouTube account handles from env (accounts rail was blank for both) -
ca60a5c2026-07-21 chore: v-bump (session close — TikTok token-mirror fix) -
34ea50f2026-07-21 TikTok App Review: mark posting pipeline VERIFIED (creator_info ok); demo needs only a hosted video + gated test-post -
a9c34db2026-07-21 Add TikTok App Review submission package (production fields + demo script + posting-pipeline prereq) -
63d0cd02026-07-20 TikTok: mirror OAuth token into env on callback (fixes Bearer undefined on post) + demo recorder scaffold -
9a142fd2026-07-20 auto-save: 2026-07-20T15:02:48 (1 files) — package-lock.json -
76de9532026-07-20 chore: v1.6.1 (session close — Schumacher calendar filter) -
5ea8d242026-07-20 calendars: filter Schumacher (internal-only) out of both calendar layers at source -
540ae082026-07-20 chore: lint + refactor + v1.6.0 (session close — reel/FB-page picker hardening) -
97dcfe72026-07-20 Composer: add reel/story asset picker + Facebook Page selector -
02a76e02026-07-19 auto-save: 2026-07-19T07:55:24 (1 files) — package-lock.json -
947d85f2026-07-19 chore: v1.5.0 (session close — Clients & Prospects panel, Threads accounts, gated CC import staging) -
861cc692026-07-19 auto-save: 2026-07-19T04:54:45 (1 files) — public/data/clients-manifest.json -
d77d6ee2026-07-17 chore: lint, refactor (drop dead env()), v1.4.0 (session close) -
c1d7a1d2026-07-17 instagram: poll media container status until FINISHED before publish — fixes 'Media ID is not available' (Meta processes images async) -
47459ec2026-07-17 cc-import: stage gated FM-client → Constant Contact import (34,825 contacts; scraped list excluded); upload drafted to pending-approval (DTD verdict A) -
c3336242026-07-17 auto-save: 2026-07-17T09:46:05 (2 files) — modules/channels/index.js public/panels/composer.js -
19aea362026-07-17 bluesky: rich-text FACETS — #hashtags + links now clickable (UTF-8 byte-offset aware per docs.bsky.app) -
c16d1382026-07-17 Vendor IG: mark BN Walls 'none found' (no Business-Discovery-readable IG); drop orphan cache entry -
3c657302026-07-17 auto-save: 2026-07-17T09:16:00 (1 files) — package-lock.json -
01590c12026-07-17 chore: lint (with-open autofix), refactor (none needed), v1.3.0 → v1.3.1 (session close) -
959a2f02026-07-17 Vendor IG Reporting: wire never-expiring page token, page-token discovery, standalone refresh CLI; populate 33/34 vendors -
b69f9932026-07-17 MCC Clients: server-side notes store so notes sync across devices -
87381732026-07-17 deploy: exclude live-authoritative runtime data (outbox/tokens/pages/assets) from rsync — deploys were clobbering the live Meta token, staged posts, and UI-added assets -
2888aa42026-07-17 board UX: add 'Clear staged' — dismisses stale staged/pending/failed cards (keeps posted history) via new POST /api/channels/outbox/clear; Compose links to Composer -
075ec0c2026-07-17 Vendor IG Reporting: render last 3 posts inline per vendor (was 10-photo grid) -
922c32f2026-07-17 clients panel: chip clicks open target in a right-side drawer (website embeds live; LinkedIn/IG show one-click card since they block framing) -
2aac0932026-07-17 MCC Clients: per-contact notes field below each firm card -
30afe182026-07-17 MCC Clients: show full address + phone + real domain + best contact/follow per firm -
7877a922026-07-17 composer: banner preview respects template aspect-ratio (#2) + warns when no asset selected (#3) — contrarian findings. Font-fail finding (#1) verified PHANTOM (allow-same-origin loads fonts), dropped. -
01d65e12026-07-17 composer: Banners tab renders a LIVE banner preview (real /api/layouts/render HTML in the middle zone) instead of a dead deep-link -
a4a92b12026-07-17 layouts: fix malformed placeholder SKUs — DW-GL-001 → DWGL-100001 (real DW format DW<code>-######) -
48778372026-07-17 5x: contrarian gate resolved — generate+publish now functionally verified end-to-end -
f3e51292026-07-17 composer: Generate copy now sends kind=instagram (was 'social' → silently degraded to headline). Contrarian catch. -
27b2af22026-07-17 5x: composer clean-twice report -
917acca2026-07-17 5x sweep 4: add inline SVG favicon — kills the app-wide /favicon.ico 404 (last console error) -
c5779ce2026-07-17 5x sweep 2: composer drops broken asset thumbnails (dead URLs no longer 404-spam the console or show broken tiles) -
8b2fd012026-07-16 composer: new central board — combine asset/banner + copy → publish to all connected socials at once -
5e38c362026-07-16 clients panel: one-click 'Copy not-actioned emails' (respects search+filters, skips already-actioned) -
05fccc42026-07-16 clients panel: 'not actioned' filter + LinkedIn/Instagram actioned timestamp columns in CSV export -
88eb92d2026-07-16 clients panel: inline LinkedIn/Instagram Follow chips under each name + date-time stamp on Follow/message click (persisted per contact/channel) -
bb5f3042026-07-16 docs: IG fleet connect checklist (35 live + convert/link steps for the rest) -
bec82b02026-07-16 channels: add /ig-audit — enumerate ALL Instagram accounts (page-linked + business owned/client), not just the 34 page-linked -
a8a21662026-07-16 auto-save: 2026-07-16T16:43:46 (1 files) — package-lock.json -
25362f42026-07-16 chore: lint, refactor, v1.3.0 (session close) -
1473c682026-07-16 auto-save: 2026-07-16T12:13:12 (1 files) — public/data/clients-manifest.json -
57231262026-07-16 clients panel: coverage summary (contacts/emails/IG/LinkedIn across all groups); manifest carries per-group counts -
b1d1fc72026-07-16 clients panel: dedup + field-merge in All Prospects (LA groups overlap; keeps richest contact record) -
d544ba12026-07-16 clients panel: merged ★ All Prospects group (search/sort/filter/export across all ~5.9k firms; each tagged by city) -
63885bc2026-07-16 clients panel: quick filters (email/IG/LinkedIn/uncontacted), Copy-all-emails, IG+LinkedIn count pills, density toggle (completes sort+density rule) -
d8851312026-07-16 auto-save: 2026-07-16T11:43:05 (1 files) — public/data/clients-manifest.json -
1a674412026-07-16 clients panel: search across ALL fields + sort dropdown (name/city/state/has-email/IG/LinkedIn), persisted -
e0ae6f52026-07-16 clients: browser+local-model contact enrichment (direct Instagram/LinkedIn + email gap-fill) -
ad37a602026-07-16 refresh-clients.sh: read CSVs from project data/sources (launchd can't read ~/Downloads — TCC), nullglob rsync -
87dc4412026-07-16 calendars: decouple launched layer so it stays live where bulk_fivefield_worklist is absent (Kamatera) -
c1ee3c82026-07-16 clients panel: per-group CSV export (respects filter; includes emails + LinkedIn/IG URLs; local download, not CC) -
b50489a2026-07-16 refresh-clients.sh: mkdir lock (macOS has no flock) -
09230f02026-07-16 refresh-clients.sh: pin PATH for launchd (node/python/homebrew) -
2ba021c2026-07-16 register clients module in registry so the panel mounts in the nav -
0ed9d952026-07-16 clients panel: FM client DB (43k) + CSV prospect groups, LinkedIn+Instagram discovery -
bfbe2222026-07-16 followlist: add build:followlist refresh script + CRCP broker section -
e347c432026-07-16 linkedin panel: add Follow list mode (ported from li-clicklist.html) -
063dc282026-07-16 All Calendars: add Launched layer — already-live products on their launch date, own modal, v1.2.0 -
d28f0d12026-07-16 PR naturals mailer: SISAL search link to page 1 (verified 1002 results, sisal SKUs on top) -
b3300df2026-07-16 PR naturals mailer: point SISAL tile at sisal search (page 5), keep pr-naturals UTMs -
f2866e62026-07-16 chore: harden calendars module (pool error log, load() try/catch, fieldvis merge), v1.1.0 (session close) -
a83ad8f2026-07-15 Place All Calendars in the Planning nav group (next to Marketing Calendar) -
b93e4e12026-07-15 Untrack regenerable 13MB activation snapshot (gitignored — was committed by add -A) -
c3e1ea52026-07-15 All Calendars: front-end panel (facet rail + multi-layer month grid + drag reschedule) -
bd251862026-07-15 channels: resolve IG per-page (bulk field dead) + add /meta-token paste-ingest route to bypass blocked OAuth redirect -
fea8d922026-07-15 All Calendars module: backend (activation projection + shopify enrichment + marketing/campaign overlays) -
81c03cf2026-07-15 channels: Meta connect now upgrades short→long-lived token + re-caches all 80 Pages so the whole IG fleet comes back permanent (not 1-hour) -
9ef59f02026-07-15 Add deploy/apply-cutover.sh — paste-safe one-command nginx cutover/restore (backup+install+test+reload+verify) -
4a030442026-07-15 accounts panel: use live Meta token-health so a dead token flips to needs-creds instead of showing green -
a26137e2026-07-15 Fix staged vhost: MCC front door + public /reels/*.mp4 + /privacy + /terms passthroughs to reels app (:9848) — restores media/legal fetch after the domain flipped to the MCC without them -
49dbc5c2026-07-15 chore: v1.0.2 (session close — PR naturals draft iterations) -
eb096692026-07-15 Stage DW-marketing consolidation (DTD verdict A): nginx vhost swap → MCC on DW domain + agentabrams 301 + CUTOVER runbook (staged, not applied) -
98f32bf2026-07-15 PR naturals v3 design: uniform 620x620 tiles (grasscloth source was 527px, CDN can't upscale -> swapped to full-size original) -
e98234f2026-07-15 texture tiles → vendor+tag collection links (browser-verified via CTA agent) -
a71c5e92026-07-15 naturals mailer: swap hero to Bellagio Weave roomset (pattern repeat issue on flat swatch) -
a7aea852026-07-15 PR naturals v3 — logo masthead, 888 phone, appointment banner, uniform square tiles, minimal footer -
1a545542026-07-15 PR naturals v2 mailer — 6 material categories from the July drop, dark editorial layout -
778a3752026-07-15 Phillipe Romano naturals campaign draft — Bellagio roomset hero + 6-series grid -
b904d732026-07-15 grasscloth campaign draft — Zoffany Kensington hero + Designtex colorway grid -
0f129eb2026-07-15 add reels module — embed dw-marketing-reels console via same-origin proxy (Range passthrough for video seek); add fix-connie-creds.sh -
0f46bdd2026-07-15 auto-save: 2026-07-15T11:36:14 (1 files) — scripts/fix-connie-creds.sh -
f2636e32026-07-15 channels: Instagram-account selector — pick 1-to-all IG accounts -
df1e6232026-07-14 chore: lint fixes (jget r.ok guard, .env value quoting per unquoted-sourcing rule, comment typo), v1.0.1 (session close) -
f872cf02026-07-14 channels: three-valued is_valid guard so a Graph rate-limit/error can't false-flip a valid Meta token to needsReconnect -
c60d8ff2026-07-14 Expand Sounds catalog: +6 royalty-free libraries & SFX, live TikTok trending-sounds link, Grateful Dead essential-eras section (30 sources) -
8bb0bc52026-07-14 Add Sounds & Assets panel: curated free/royalty-free music + TikTok assets, brand-safety badged (Grateful Dead archive listen-only) -
fa0d1c12026-07-14 deploy: ship Accounts panel to Kamatera; fix .deploy.conf HEALTH_URL to :9662 (was pointing at vendor-scrapers on 9661) -
3b13d2e2026-07-14 Add Accounts panel: Amazon-style social-account filter rail with connection status + inline how-to-fix credentials -
897ebac2026-07-03 chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew) -
67b4c0c2026-06-30 auto-save: 2026-06-30T12:40:24 (1 files) — scripts/cc-agent-discover.js -
fa747ed2026-06-24 deploy.conf: fix MCC health URL to :9661 + guard gitignored follow-counts data from rsync --delete -
90978c92026-06-24 Add Followers/Following tab to DW Marketing Command Center -
eac09ca2026-06-24 CC module: proxy Connie cc-agent when no local CTCT token (DTD verdict C) -
88a51a72026-06-22 Social: real approval pipeline + instant posting + truthful live/simulated UX -
fe2afd82026-06-17 meta-token-health: fix dead George alert URL (HTTPS flip 2026-06-17) -
de6eb5f2026-06-16 Security: remove browser-shipped basic-auth password from client boot-error (was the now-rotated DWMarketing2026!) — gitleaks-flagged browser-shipped cred in public/app.js -
ad0fc2a2026-06-16 Add META token health canary (Council #4): GET /me liveness + expiry warn + heartbeat stamp; alerts CNCP+George on expiry (the silent failure that darkened the Vendor IG panel) -
938df842026-06-16 Code-health: gitignore *.bak + runtime social-queue.json (untrack it), add rel=noopener to activation-page link -
78312e82026-06-16 Vendor IG roster: add web-confirmed @schumacher1889 (was 'no IG found'); 34/38 now have IG -
96afa0a2026-06-16 Vendor IG roster: add last-10-posts grid per vendor via Instagram Business Discovery (server-side, cached, graceful degrade on expired token) -
8e940082026-06-15 Channels: add Bluesky (live, app-password) + Threads (review-gated) publishers; board shows them as real columns -
e76aecd2026-06-15 Add Meta App Review prep doc (System-User route + full review steps, paste-ready justifications) -
54357362026-06-15 Channels: add Facebook/Instagram Page picker — select WHICH of your 80 Pages (+ 11 linked IG) to post to. -
a32a8892026-06-15 Add Streams Board — Hootsuite-style column view (social channels + Constant Contact) -
535807b2026-06-15 MCC polish: publish-time caveats for half-wired channels (TikTok private-only, YouTube uploads-not-wired) on chips + confirm dialog, created date+time + sort on Channels outbox, float CC import+ranked-opens above mock live cards -
9968bde2026-06-14 MCC should-fix sweep: unify Kravet block (lib/kravet.js, server+client single source, caption/name-aware, button disabled on block), add CA §17529.5 subject/from screening, origin-absolute fetches in assets+CC panels, align OAUTH_REDIRECT_BASE default, add 5th LinkedIn template -
da767262026-06-14 MCC officer-review fixes: fail-closed auth (remove hardcoded password default), HttpOnly/Secure cookie, gitignore runtime-state files, fix Wallpaper->Wallcovering leak -
4715bb62026-06-14 MCC QA fixes: re-render #3 (Anemone Blush, was off-theme) + #5 (statement mural, was tiled); soften mural copy to drop false 'no repeats' claim -
2a5b5592026-06-14 Channels: bake the Meta 4-step setup doc into the Meta card (Ads-app gotcha + Other/Business → Instagram+FB Login products → App Review Standard Access → then mint token); Meta parked -
744335b2026-06-14 MCC: approve + schedule the 8 launch social posts (Bold Blush 6/15-16, Custom Mural 6/17-18); LinkedIn drafts marked ready (manual) -
e0f2be02026-06-14 MCC: swap in AI room-renders for the 8 launch drafts (Gemini 2.5 flash image, hosted on product galleries); drafts stay unapproved/unscheduled -
eaee6962026-06-14 MCC: attach on-theme product imagery to the 8 staged Bold Blush + Custom Mural drafts (Shopify CDN URLs, Meta-fetchable) -
5d49b722026-06-14 MCC: stage Bold Blush + Custom Mural launch posts — 8 social drafts (IG/Pinterest/TikTok/FB) + 2 LinkedIn trade drafts, all unapproved/unscheduled (scheduler-safe), awaiting imagery + Meta token -
54fd8bb2026-06-13 CC Phase 1 (DTD verdict A): CSV import (contacts/campaigns/opens, no token) + ranked opens (campaigns by open-rate, most-engaged contacts) — normalized ctct-store, same shape the live v3 API will write -
0c63f9f2026-06-13 Image Bank: finish Repost UI — gated modal (image preview, required @credit, rights-confirm + #ad, wallpaper-ban) → stages via /repost, never auto-posts -
923cb9c2026-06-13 LinkedIn module (DTD verdict A): draft-first composer w/ DW B2B templates + char counter + wallpaper word-ban + copy/deep-link manual post + saved drafts; gated official-API publish (never auto-fires, Phase 2 token) — nav under Social Media -
c04d2b72026-06-13 Image Bank: gated STAGE-ONLY /repost endpoint (rights-confirm + Kravet-block + auto-credit + wallpaper-word-ban + #ad) + /reposts list — UI button pending -
961a1bb2026-06-13 Image Bank: Instagram ingest — public-permalink og:image grab (no token, tagged uncleared) + our/vendor IG roster (33 accounts) with regram allow/review/block (Kravet-family blocked) + instagram source filter -
267a4bb2026-06-13 Asset Library = Image Bank: add GDrive (folder rclone-import + file share-link), Harvest-from-campaign-HTML, Constant Contact library (Phase 2 gated) ingesters + sort + source filter -
bdfc3522026-06-13 Channels: self-serve Activate page — paste app creds in-browser (written to .env, never echoed), copy redirect URIs, portal links, one-click Connect; /setup + guarded /config endpoints -
2b266332026-06-13 MCC shell: fetch against location.origin so embedded-URL credentials don't throw 'URL includes credentials' -
c79449d2026-06-13 MCC shell: fix auth-cookie so fetch() works (was hanging on Loading), grouped hamburger nav w/ Social Media leading, hardened boot + error states -
c6baf4f2026-06-12 social: add validated meta-go-live.sh (Graph-verify token → deploy to Kamatera → confirm backend:meta); gitignore meta-creds.env -
0f9d5962026-06-12 social: add free Meta Graph (IG+FB) publish backend behind ayrsharePost abstraction -
751cc472026-06-12 gitignore transient social-publish-log.json -
cfea2d72026-06-12 social: Ayrshare live-publish + scheduler scaffold (gated, off by default) -
a9053722026-06-10 backsync: pull Yuri's 10 CRM features from prod (RFM, send-times, ab-tests, profiles, segment-perf, templates, journeys, browse-abandon, copy-scoring, playbook) — Mac2 source now matches live 18-panel build -
57a572a2026-06-10 vendors module: prefer headless-verified follower counts + verifiedLive flag; BN Walls recheck -
1cc10062026-06-10 Vendor IG: headless-verified follower counts (33 live, real numbers) — Rebel Walls 361K, Phillip Jeffries 527K, exact small-account figures -
a57c5b82026-06-10 Channels OAuth connect machinery: per-platform connect/callback (YouTube/Google, TikTok, Meta FB+IG) + token store + one-click Connect buttons; reads app client creds from env -
b546fbd2026-06-10 Copy panel: Gemini path (preferred over dead Anthropic) → real AI copy via valid Gemini key -
a85f5b22026-06-10 Channels publishing engine: FB/IG/TikTok/YouTube adapters (real Graph/TikTok API behind credential gates) + Connections+Composer panel + staged outbox until accounts authorized. The posting-machine spine. -
dc913ce2026-06-10 Vendor IG Reporting panel: DW + 37 vendor Instagram accounts roster (33 found, ~4.5M combined reach), sortable, for social/competitive reporting -
d54875f2026-06-10 3 more panels (parallel agents): Performance dashboard (KPIs+SVG charts+GA4 path), Social Scheduler (queue board, gated publish), Audience Segments (RFM-ready rule builder) — 8 panels total -
7207cc92026-06-10 assets: full-catalog search via Shopify predictive search (suggest.json) -
06963492026-06-10 assets: image Asset Library module (upload / URL / live DW-catalog pull) + Layouts picker -
0f49e0b2026-06-10 load .env file in server.js so PORT/creds come from file (fixes prod EADDRINUSE on default 9661) -
4b6184a2026-06-10 deploy config → port 9662 (9660/9661 taken on Kamatera) -
e8363ce2026-06-10 4 panels built (parallel agents): Constant Contact (mock+gated sends), Marketing Calendar, Suggested Copy, On-Demand Layouts — all mount + smoke-tested -
de565762026-06-10 scaffold: modular marketing command center shell (express, basic-auth, panel loader, module contract)
Authors
- auto-commit-fleet720
- Steve280
- steve21
Agents used
- secrets-manager1
Skills used
- /ig-activity681
- /vendor-linkedin-cache32
- /data14
- /clients-manifest12
- /out9
- /channels9
- /publish9
- /claude8
- /code8
- /quickpost8
- /assets6
- /index6
- /rec5
- /mcc-streamline-promo5
- /feed5
- /page4
- /reels4
- /catch4
- /fbcdn4
- /cache4
- /pages4
- /panels4
- /com3
- /campaign-drafts3
- /video3
- /render3
- /social3
- /calendar3
- /accounts3
- /today3
Creative ideas + design notes
933b121 · 2026-09-26 · ig-activity: use shared ordered Norma auth (IG_AGENT_AUTH -> agent .env -> NORMA_IG_PASS) instead of stale NORMA_IG_PASS (TK-12342)
- lib/norma-auth.js: extract follow-counts' ordered-credential helper + normaFetch (401/403 falls through) - follow-counts now imports the shared helper (no behavior change) - ig-activity delete-status/delete use normaFetch; auth rejection now 502 ok:false, not 200 ok:true - oc-status timeout 8s -> 20s (openclaw probe takes 5-14s) - scripts/norma-auth-check.js: read-only check, exit 1 on auth fail, 2 unreachable Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GEE4jWy9RBmz5QnR2xcvno
af0204b · 2026-09-26 · TK-11856 rc-propagation (RSYNC): mcc-clients-refresh propagates extract/crawl/enrich/manifest/rsync rc
Exit-code ONLY, no behavior change (Steve ruling 2026-09-26 Q1/Q2): every step still runs as before; the wrapper now exits with the first nonzero rc of its side-effecting step(s) instead of swallowing it, so cron-fire-canary's exit corroboration can see a failed run. No heartbeat file added. Revert: git -C /Users/macstudio3/Projects/marketing-command-center revert <this sha> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YaiWjfgEuKQLTb5cdDreS3
f88c44a · 2026-09-26 · follow-counts: read Norma auth from secrets-manager IG_AGENT_AUTH first, fall through on 401/403 to instagram-agent .env then NORMA_IG_PASS (TK-12327)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RZxSBvMaQ2irhbKdpmgRPj
8377f04 · 2026-09-26 · follow-counts: write no row on failure + exit 2 (no SIMULATED nulls, TK-11431 class); timestamp every attempt; job 06:05->07:05 clear of 5am fleet restart (TK-12008)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C29dMTKDo1Ff3goeJgr2XY
bd903cd · 2026-09-25 · follow-counts: read Norma instagram-agent .env for Basic-auth (stale NORMA_IG_PASS caused 403 'Invalid credentials'); retry boot-race connection errors (TK-12008)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D7LB6rCwpA7ubJTqYzqXEX
19f7998 · 2026-09-04 · snapshot before restart: preserve in-flight work
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011gbmuMHgCLDEPM4TpfAr4G
da0f1f8 · 2026-09-03 · Add separate Showroom picker area to Make-a-post so showroom-only lines (PJ) stay out of the general pool with correct language
Backend (modules/assets/index.js): read the canonical showroom-vendors.json at runtime (60s memo, default [Phillip Jeffries]); carry vendor + a showroom flag through both catalog maps; add GET /api/assets/showroom that surfaces showroom lines via on-site search (they are absent from browse by design); include the canonical vendor list in catalog responses. Keyed off the list, never a hardcoded name. Frontend (quickpost.html/js): new 'Showroom' filter chip; showroom assets are EXCLUDED from All ideas / DW picks and shown ONLY under Showroom; each showroom card carries a Showroom pill; a persistent correct-language reminder banner (invite to the DW showroom / book a visit -- never shop now / buy online) shows when the Showroom area is active or a showroom picture is selected, and again in the review step. Grid/List/Details + density + click-to-select preserved. Verified headless: 18/18 checks (no PJ under All ideas/DW picks; Showroom chip shows badged PJ cards + banner; 3 views + density; selection; zero console errors). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018GDFjK9hKdrY7ExEupvWGr
64b7fcf · 2026-09-03 · quickpost picker: inline nav-agent controls — density slider + Grid/List/Details(kv) views
The 'Make a post' picture picker was a fixed cramped grid with no way to space out or re-view the images. Add an inline control row (matching the wizard's kid-simple styling): a Grid/List/Details view toggle and a density slider that drives --cols on the grid so cards spread out. Details is the nav-agent kv-list third view (thumb + name + KIND/TAGS chips). Selection works in every view and persists across view/density re-renders; choices persist to localStorage. Verified headless across all 3 views, density, selection, persistence — zero console errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018GDFjK9hKdrY7ExEupvWGr
5999977 · 2026-09-01 · new-arrivals-reel: distinct-colorway heroes (URL-keyed cache + byte-distinct assert) + SKU lower-third
Fixes the two v1 bugs: (1) index-keyed image cache reused shared/wrong-colorway heroes — now reads correct_image_url, keys the cache by URL hash, and asserts all 10 heroes are byte-distinct before rendering; (2) adds a SKU lower-third line (DW/Shopify SKU primary in cream + Sanderson article secondary). Reads /tmp/na10-verified.json. $0 local (ffmpeg + ImageMagick). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
d28190e · 2026-09-01 · Add New Arrivals 9:16 short-form video builder (local, $0)
Reusable ffmpeg+ImageMagick reel generator: title card -> per-product editorial beats (framed swatch + DW wordmark / New Arrival lower-third) -> CTA card, over a locally-synthesized ambient music bed. TikTok/Reels/ Shorts ready (1080x1920). No paid API, no publish. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
092a26c · 2026-08-30 · Add --dry-run readiness self-test to calendar snapshot publisher
Regenerate + full validation gate, then stop before the rsync/ssh publish + cache-bust so anyone can re-prove the job is healthy without touching Kamatera prod. Additive, gated behind --dry-run/--check/DRY_RUN=1; the launchd plist passes no args so the scheduled 6:30 PT run is unaffected. TK-10893. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
7186df0 · 2026-08-26 · Composer: 'Build this reel' handoff to Reel Studio + fix reels-proxy POST body
Finish the create flow's last link — a composed photo + song + caption now actually RENDERS to a reel. The composer's photo+song+reel hint became a 'Build this reel ->' button that POSTs the recipe to /api/reels/ui/api/build-photo-reel (proxied to the reels app) and opens Reel Studio to watch the render. Fix (found in verification): the reels reverse-proxy did req.pipe(up), but express.json had ALREADY consumed the POST body upstream — so every proxied POST forwarded an EMPTY body and the reel endpoint 400'd on a valid request. Now re-serializes the parsed body + sets Content-Length; GET/video streams still pipe raw. Verified: proxied POST → 202 (body arrives); the button appears on photo+song+Reel; a real mp4 with the song comes out the far end. Note: render only runs on the studio host (ALLOW_BUILD=1); prod serves reels, so it reports that honestly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
cd7a2c5 · 2026-08-25 · Add durable regenerate+publish job for calendarhub activation snapshot
Timeline activation layer froze at 2026-08-16 (~a week) because prod (Kamatera) can't project bulk_fivefield_worklist (Mac2-only, split-ownership) and nothing regenerated+redeployed the snapshot file. This Mac2 job regenerates from the live worklist, HARD-validates (activation_live + count floor + window anchored to today+1), atomically publishes the single file to Kamatera, and busts prod cache. launchd plist staged but NOT installed (scheduled-job install is gated). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
55e8f26 · 2026-08-25 · Board: show format + song chips on staged social cards
Close the create-flow loop — a post composed as a Reel with a song now shows its 🎬 Reel / 📱 Post / 📖 Story / 🎠 Carousel format + 🎵 song as chips on the Streams Pipeline, so 'assemble → stage → review' is visible instead of the recipe vanishing into the outbox JSON. Reads the format/song the composer now persists on each outbox entry; additive (cards without them are unchanged). Verified: staged reel+song → board shows 🎬 Reel + 🎵 song chips; no page errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3a6c04f · 2026-08-25 · Nav: ⌘K command palette + regroup + relabels + collapsible groups
Make the Command Center easy to navigate (Steve: 'is the UI easy to navigate?'). Design merged from two parallel review lenses (ui-ux-designer + general), then contrarian-hardened. - ⌘K / Ctrl-K command palette (public/cmd-palette.js) — fuzzy jump to any of 33 panels, ↑↓ wrap + Enter, matches title AND group, includes hidden/merged panels with a 'via Host' breadcrumb; a 'Search panels…' trigger in the sidebar - Regroup (app.js GROUPS): Calendar · Compose · Plan · Library · Insights · Accounts&Email — un-strands 'IG Posts' from the dead 'More' bucket into Insights - TITLE_OVERRIDES (rail label only, never touches the module a peer session owns): vendors→'IG Account Health' (it now holds the Owned·DW Fleet view), board→'Streams Pipeline', layouts→'Layouts' - Collapsible nav groups, expanded by default, persisted (localStorage mcc_nav_collapsed) Contrarian fixes (Cody, FIX FIRST): - palette z-index 2001→10001 so it wins over the 9999 clients drawer / amplify popover / quickpost toast - route() highlights a hidden panel's HOST nav item (was leaving the sidebar blank) - Tab now dismisses+restores focus (ARIA combobox) instead of swallowing the key - '/' shortcut only fires from a non-interactive context Verified: palette opens/filters/navigates, Ctrl+K + Tab + arrows, no 'More' orphan, relabels render, collapse persists, hidden-panel nav highlights host, z-index 10001, no page errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3c85e99 · 2026-08-25 · Composer: one create flow — photo → details → song → decide reel-or-what
Turn the Composer into the single 'pick a photo, add details, add a song, decide the format' flow Steve wants, instead of hopping between Assets / Sounds / Reels / Social panels. - Format selector (📱 Feed post / 🎬 Reel / 📖 Story / 🎠 Carousel) in the assembly column - Song picker sourced from the Sounds library (/api/sounds/catalog, 30 tracks) — search + in-place preview + selected-track chip with remove - Smart coupling: adding a song auto-switches format→Reel (a photo can't carry audio as a feed post); picking a reel VIDEO also sets format→Reel - Contextual hint: a still photo + song = a video → assemble here, then 'build in Reel Studio' (#reels) which renders the photo over the track - format + song carried through /api/channels/publish and persisted on the outbox entry (additive, like handles) so the recipe survives for review/render Verified: 4 format pills, 30-track picker, song→auto-Reel, chip renders; backend round-trip persists format=reel + song on the outbox; no page errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
88aa02b · 2026-08-25 · Owned·DW Fleet: apply contrarian fixes (sort actionability + NaN/URL guards)
Cody the Contrarian red-team caught 3 real issues: - Attention sort was backwards: a DEAD (dormant) account that was also repetitive outranked a LIVE account spamming the same product right now. Re-scored by ACTIONABILITY — active-repetitive(4) > went-dark-with-history(3) > slowing(2) > never-posted/no-creds(1) > healthy(0). Now the fixable-right-now accounts top the list, not the structurally-dead ones. - repetitive now requires !dormant (a dead account repeating old posts is not actionable) — also removes the noisy '↻ same' badge from dormant rows. - NaN guard: an unparseable ledger ts no longer yields daysOld=NaN (which read as 'healthy' and broke the sort comparator) — treated as no-date → dormant. - permalink href now rejects non-http(s) URIs (javascript:/data:) defensively. - recent sort reuses the guarded daysOld instead of raw Date math. Verified: computed vs rendered attention order match (scores 4,2,1,0 monotonic); active-repetitive tops the list; 0 dormant rows show repetitive; 0 unsafe hrefs; no page errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
9690867 · 2026-08-25 · Owned·DW Fleet: add 7-day cadence + 'slowing' signal
Next refinement on the health view: distinguish 'posting daily' from 'posted once 10 days ago' among the non-dormant accounts. - week7: posts in the last 7 days, shown per account as '· N/7d' - 🐢 slowing flag (blue): non-dormant but ≤1 post in the last 7 days — catches accounts trailing off BEFORE they cross the 14-day dormant line - summary now leads with 'active this week' + a slowing count - attention-sort weighting: dormant(3) > repetitive(2) > slowing(1) Verified: summary '27/35 active this week · 6 dormant · 2 slowing · 2 repetitive'; /7d recency renders; no page errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
f91859a · 2026-08-25 · Refine Owned·DW Fleet: surface dormant + repetition health signals + sort
Turn the owned-account posts view from a flat alpha list into an at-a-glance health
read, operationalizing the two real problems the data showed:
- 💤 dormant flag: 0 posts or none in >14 days (the 6 no-creds accounts, plus any
that go quiet); the row is tinted so it stands out
- ↻ N× same flag: ≥4 of the last 6 posts share one product title (catches
@asseeninhotels posting the same SKU 6×, @suedewallpaper 4×)
- summary line: 'X/35 posting · Y dormant · Z repetitive'
- per-account recency ('N posts · Xd ago')
- sort control (Needs attention [default] / Recent activity / Most posts / A→Z),
localStorage-persisted per the standing sort rule
Verified: summary 29/35 · 6 dormant · 2 repetitive; flags render; attention-sort puts
flagged accounts first; re-sort works; no page errors.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
6b6da55 · 2026-08-25 · Add "Make it ours" DW-original creative system to #vendors amplify
Per-post "✦ Make it ours" button transforms a vendor pattern into a genuinely DW-original branded asset (never reposts the vendor raw photo). Treatment 1 "Branded card" ($0, client Canvas compositor -> 1080x1080 + 1080x1350, DW wordmark + hairline frame + availability strip + pattern name). Treatment 2 "Room setting" reuses the existing DW room-setting-generator pipeline (:8106, gemini-2.5-flash-image ~$0.03/render, cost shown before generating). Every asset runs the settlement post-gen-vision gate (canonical checker port, fail-safe -> NEEDS_REVIEW) before save; BLOCK is not saved. Restricted (never-front-facing) brands get no creative controls. Assets save to public/amp-assets/ (gitignored + rsync-excluded) and REPLACE the raw vendor photo in the staged draft (draft.dwAsset). No IG/Meta publish call anywhere; engine-queue/channels-outbox/meta-pages untouched. Same-origin img-proxy (allowlisted) lets the Canvas compositor read CORS-tainted IG images. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
c12730b · 2026-08-25 · Show last 6 posts per owned account in the #vendors Owned·DW Fleet section
The owned-fleet section only showed name + link. Now each of the 35 owned accounts renders its last 6 Instagram posts inline (thumb + title + date · type), sourced from the fleet post ledger (/api/ig-activity/posts — same data as the IG Activity panel), reusing the existing .ig-li styling the external-vendor rows use. Best-effort: rows still render if the ledger is unreachable; the 6 no-creds accounts show 'No posts yet'. Verified: 35 blocks, 170 post rows, 6 empty-states, thumbnails + styling applied, no page errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
37ff9a8 · 2026-08-25 · mcc: credential-safe fetch guard in shell (inoculate root-relative /api/* fetches)
Same creds-in-URL trap as the reels fix: opening the command center with credentials in the URL poisons document.baseURI, so root-relative fetches (/api/social/*, /api/calendar/*, /api/templates/*, /api/segments, /api/send-times) throw synchronously. location.origin-prefixed calls were already safe; this guards the rest by resolving every non-absolute request URL against the creds-free location. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
7e55f1a · 2026-08-25 · Add per-post "Post from" account selector + "Make unique" per-account captions to #vendors amplify
Feature A: compact "Post from ▾" popover (searchable checkbox list of the 35 owned DW IG accounts, All/None), count badge, selection persisted in localStorage keyed by a stable post id (permalink, djb2-hash fallback), rebuilt on render. Body-appended popover rides a document-level delegated listener; the in-row triggers ride the existing #vend-rows listener — both survive re-render. Feature B: "✦ Make unique" generates a deterministic unique caption per selected account (seeded by postId+handle so stable across renders, distinct per account, different per post) — same photo, varied hook/emoji/hashtag-order/sentence-order, always vendor credit + DW CTA with the vendor-amplify UTM link. Editable textarea per account (edits persisted on input), per-account copy, regenerate. "Stage drafts" POSTs to a NEW data/vendor-amplify-drafts.json via a small validated, atomic-write endpoint — never the live engine-queue/channels-outbox/ meta-pages files. No auto-post; publishing stays Steve-gated. Generation is $0 local (deterministic client-side engine, no API, no network). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
e2c5740 · 2026-08-25 · Add per-post vendor-amplify controls (X Post / Copy kit / Amplify) to #vendors panel
Each Instagram post in postList now renders a compact right-aligned control row (sibling of the post anchor inside an .ig-item wrapper — valid HTML, no <button> nested in the <a>): 𝕏 Post opens the X composer with a DW visit link, ⧉ Copy kit copies a paste-ready caption block (clipboard API -> textarea/execCommand -> window.prompt fallback, never silently no-ops), ⚡ Amplify does both. Raw kit text and X URL are stored in a per-post ampKits map (keyed by data-amp-id) so clipboard text pastes as clean human text, not HTML entities. A single delegated click listener bound to #vend-rows survives every re-render. Campaign-level UTM only (utm_campaign=vendor-amplify, utm_medium=social, utm_source=x|copy).
107e329 · 2026-08-25 · Make the IG account pickers real: persist handle server-side + guard follow-counts
Contrarian (Cody) red-team found the composer/social/quickpost account pickers were UI-only — the selected account was sent client-side but every backend built its persisted entry WITHOUT the handle, so the selection was silently dropped. Fix: persist it additively (gated publish behavior untouched). - modules/social: entry now carries handle (@ stripped) → the card renders @handle - modules/quickpost: draft + publish entries carry handle - modules/channels: /publish records handles[] on the outbox entry (live + staged) - board.js: IG stream filter now matches the handles[] array, not just singular - follow-counts.js: guard window.MCC_ACCOUNTS so a failed helper load degrades to the /accounts rows instead of throwing and killing the panel Verified: POST→read-back shows handle persisted on all three; 7/7 browser smoke green, no page errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
093bb57 · 2026-08-25 · Embed all 35 DW-owned Instagram accounts across every social/account panel
Add one canonical accounts source (data/dw-ig-accounts.json, built from Norma's registry by scripts/build-dw-accounts.js) served at GET /api/dw-accounts and read by a shared public/dw-accounts.js helper. Retrofit the 9 social/account panels (ig-activity, accounts, channels, composer, social, follow-counts, quickpost, vendors, board) to union the canonical 35 with each panel's dynamic data so every owned account shows everywhere — not just the ones with posts/data on a surface. No new nav panel (endpoint mounts directly like clients-notes). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
059034e · 2026-08-25 · MCC IG re-pull: hourly 6am-6pm cron cadence (was daily), board staleness threshold 14h
Change the ig-media-repull job from daily 06:40 to hourly 06:00-18:00 (0 6-18 * * *) so published-IG board thumbnails stay durable through the workday and refresh again each morning at 6am. Board health-strip staleness threshold 36h->14h (tolerates the intended 18:00->06:00 overnight sleep; errors still show red). Doc carries the exact apply + revert crontab one-liners for Kamatera. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ee1e924 · 2026-08-16 · modules: hard-timeout all remaining unguarded external fetches
Node's global fetch has no default timeout, so a stalled upstream would hang the awaiting request forever. Added lib/fetch-timeout.js (shared AbortController wrapper, 45s, MCC_FETCH_TIMEOUT_MS override) and routed the last 5 unguarded external calls through it: playbook → Gemini generateContent performance → GA4 Data API runReport follow-counts → Norma :9810 monitor profiles → Constant Contact v3 segments → Constant Contact v3 Abort throws an error each caller's existing try/catch already handles (error surface / mock fallback). Completes the fetch-timeout sweep started in engine + copy. (copy keeps its earlier local helper; identical behavior.)
c683e16 · 2026-08-16 · copy: hard-timeout the Anthropic/Gemini fetches (no more infinite hang)
Node's fetch has no default timeout, so a stalled upstream would hang POST /generate and /score forever, spinning the user's button. Added a shared fetchWithTimeout (AbortController, 45s, COPY_LLM_TIMEOUT_MS override) and routed all three external LLM calls through it. Abort throws an AbortError the existing callers already handle (500 for generate, heuristic fallback for score). Mirrors the guards engine/llm.js already had.
5869a28 · 2026-08-15 · engine: make GET /today non-blocking + add generation run-lock
GET /api/engine/today would run the full local-LLM caption batch inline
(sequential candidates x qwen3 vision+chat, 45s/90s per-call timeouts), so
the default endpoint blocked for minutes. The panel already dodged this via
?generate=0, but the bare endpoint hung any direct/health caller.
- generate.js: coalesce concurrent generateToday() onto one in-flight run
(run-lock) + export isGenerating(); prevents parallel batches hammering Ollama.
- index.js /today: default now kicks generation in the background and returns
current items immediately with {generating}. ?wait=1 keeps the old sync
behavior; ?generate=0 (panel poll) unchanged.
bed8a93 · 2026-08-12 · tiktok: align OAuth scope to draft-mode (video.upload,user.info.basic) + add DW Marketing app icon asset
Drop video.publish (Direct Post) from the requested TikTok scope — the DW Marketing app grants only user.info.basic + video.upload (draft mode), so requesting video.publish would fail OAuth with unauthorized_scope. Draft-mode also fits the human-gated posting workflow. Adds a generated 1024x1024 on-brand app icon (Chrome-headless render). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
79e1798 · 2026-08-12 · MCC LinkedIn Network Feed: paste-URL curation board (the working populate path) — TK-10504
Paste a LinkedIn post URL -> official LinkedIn embed iframe (video plays inline) + gated Reshare-from-DW-Page + Download-to-assets (when the public post exposes an og:video licdn URL). Backend: urnFromUrl parser (activity/ugcPost/share, incl. url-encoded), best-effort OG enrichment (6s timeout, graceful degrade), curated store data/linkedin-feed-curated.json (gitignored + rsync-protected). Reuses the existing gated reshare + licdn-guarded download routes. The experimental openclaw auto-harvest scaffold stays below, clearly labeled. TOS-clean: no scraping. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1749ce4 · 2026-08-12 · MCC LinkedIn Network Feed: mark EXPERIMENTAL — scrape non-functional vs LinkedIn's current feed (TK-10504)
Per Steve's call: keep the harvester + routes scaffold, relabel the live button '↻ Refresh (experimental)', add an honest in-panel banner explaining LinkedIn now serves automation Chrome a stripped feed (hashed classes, no DOM URNs, blob video), and document the empirical finding in the harvester header. Download-to-assets + gated Reshare remain functional when a card is present. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
46e18c8 · 2026-08-12 · MCC LinkedIn: Network Feed — openclaw harvest of own feed + gated reshare + download-to-assets
- scripts/linkedin-feed-harvest.mjs: manual openclaw real-Chrome harvest of Steve's own LinkedIn home feed -> data/linkedin-feed.json (video posts + progressive mp4 sources). Login-guarded single-run research aid; never an auto-poster. - modules/linkedin: GET /feed, POST /feed/harvest(+status), /feed/download (licdn-only SSRF guard -> shared Asset Library), /feed/reshare (gated: confirm+ approved+connected, honest API result). - panel: third 'Network feed' mode — poster cards, Download to assets, gated Reshare from DW Page. TK-10504. LinkedIn has no feed-read API; reads Steve's logged-in session locally per his authorization. Deploy to Kamatera is gated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
37441d3 · 2026-07-30 · fix(linkedin): blank media title default + video-wins when both media refs given (Cody-verified)
- linkedin/index.js: media.title defaults to '' not the literal 'video'/'image' (junk on public posts). - channels/index.js: postLinkedIn isVideo = !!videoUrl so a video isn't silently dropped when a thumbnail image is also passed. - NOTE: Cody's 'uploadedPartIds should be uploadPartId' finding was VERIFIED FALSE against LinkedIn's Videos API docs (uploadedPartIds ARE the PUT ETags) — no change made there.
60ffd0e · 2026-07-30 · chore: lint+refactor, fix channels postLinkedIn video routing, vN (session close)
- channels postLinkedIn: route videoUrl → /rest/videos (init+multipart PUT+finalize) instead of the images endpoint; add Content-Type octet-stream to image PUT. (lint-flagged critical: 'video' in mediaTypes exposed the image-only path.) - linkedin/index.js: drop dead ETag case-fallback (Fetch headers are case-insensitive). - version bump.
ef6776b · 2026-07-30 · linkedin(mcc): incorporate native image/video posting into the command center
Port the linkedin-api CLI's media flow (initializeUpload → PUT part(s) →
finalizeUpload → post-with-URN) into the MCC LinkedIn adapter so it posts
text + native image/video (was text-only). /publish accepts {video|image|url}
(local path or http URL, e.g. the reels /reels/<file>.mp4); still fully gated
(confirm+approve+connected). channels POSTABILITY: linkedin mediaTypes now
include video. Verified: staged path returns the media ref, posts nothing
until a token lands.
39fcdef · 2026-07-27 · MCC bluesky: fail loud if image can't embed — never silently post text-only
postBluesky() previously swallowed any image fetch/uploadBlob failure and posted text-only anyway (embed left undefined), which slips past the route-level text-only guard (content.mediaUrl was truthy upstream) and violates Steve's 2026-07-17 'DW never posts text-only' rule — silently, on ok:true. Now aborts the post with a loud error on any fetch/upload failure. Found by /contrarian gating TK-8. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5d1c41b · 2026-07-22 · chore(mcc): move IG re-pull schedule from Mac2 launchd to Kamatera-local cron
The re-pull's script AND data both live on Kamatera, so a Mac2 launchd job SSHing in was a needless cross-machine dependency (Mac2 asleep / SSH hiccup at 06:20 would silently skip it — the exact drift the job exists to prevent). Now a self-contained root crontab entry on Kamatera (06:40 daily). Removed the Mac2 wrapper + plist; added scripts/ig-repull-SCHEDULE.md documenting the cron. Verified: cron present, a manual Kamatera run wrote a fresh healthy status, Mac2 job booted out + gone. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
21be5cc · 2026-07-22 · feat(mcc): board shows IG re-pull health at a glance + Run-now fix button
The daily IG media re-pull (com.steve.mcc-ig-repull) had no surface — you couldn't see if it was running or stale. Now the Streams Board shows a health strip above the columns: green/amber/red dot + last-run time + result, and a "Run now" button. - ig-media-repull.js: writes data/ig-repull-status.json every run (ranAt/mode/ recovered/graphErr/downloadDead/unrecoverable/ok). - channels: GET /api/channels/ig-repull-status (reads it) + POST /api/channels/ ig-repull-run (triggers --apply as a guarded child; 409 if already running). - board.js: #bd-repull-health strip — amber if never-run or stale (>36h), red on graph/download errors, green when clean; "Run now" POSTs then refreshes. Verified locally: status write, GET, POST trigger, concurrent-run 409 guard, and the strip renders (green dot, timestamp, Run-now button). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
6d2f55b · 2026-07-22 · chore(mcc): daily launchd job for the IG media re-pull (Mac2 → Kamatera SSH)
scripts/ig-repull-cron.sh: wrapper the LaunchAgent runs — SSHes to Kamatera and runs ig-media-repull.js --apply, logging to ~/.claude/logs/mcc-ig-repull.log. scripts/com.steve.mcc-ig-repull.plist: reference copy of the installed LaunchAgent (runs daily 06:20; the live copy lives in ~/Library/LaunchAgents). Matches the DW scheduled-ops pattern (launchd on Mac2 SSHing to Kamatera, like the canaries). Bootstrapped + kick-tested end-to-end: SSH → --apply → exit 0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
214b1bb · 2026-07-22 · fix(mcc): IG re-pull only touches at-risk images, never clobbers stable URLs
The re-pull was over-eager — it would refresh a published-IG post even when its mediaUrl is already a durable cdn.shopify.com image, downgrading a full-res photo to a square IG thumbnail. Now it only targets items whose current mediaUrl is missing or an expiring ig/fbcdn signed URL; stable non-IG hosts are left alone. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
971082a · 2026-07-22 · feat(mcc): IG Graph API re-pull to restore durable thumbnails for published IG posts
scripts/ig-media-repull.js: for every outbox item successfully published to Instagram (detail[].id = media id, detail[].igId = business account), fetch the media object's CURRENT media_url/thumbnail_url from Graph v23.0 — a fresh live URL — and cache the bytes locally keyed by the STABLE media id, then rewrite the item's mediaUrl to the /cache/media path. Makes published-IG thumbnails durable regardless of future signed-URL rotation. Token resolved per-igId from meta-pages.json (per-Page token), falling back to META_ACCESS_TOKEN/IG_ACCESS_TOKEN. Dry-run by default (read-only Graph calls + report); --apply caches + rewrites the outbox after backing it up. Items with a dead IG url but NO media id (failed cross-posts) are reported unrecoverable — the placeholder tile is correct for those. lib/media-cache.js: factor out fetchImageBuffer + writeAtomic; add exported cacheAs(url, keyBase) for explicit-key (media-id) caching used by the re-pull. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2ffb36f · 2026-07-22 · fix(mcc): durable local cache for expiring IG/fbcdn post images + graceful placeholder
Board post thumbnails embed raw Instagram/fbcdn CDN URLs whose _nc_ohc/oh/oe
signature is time-boxed; once it expires the URL 403s for everyone (verified:
even a bare server-side fetch 403s), so the <img> failed and the old
onerror hid it -> blank tile ("posts all blank").
- lib/media-cache.js: localize() maps an IG/fbcdn URL to /cache/media/<sha1(path)>.<ext>,
serving a cached local copy if present and background-downloading (best-effort,
6s timeout, SSRF host-allowlist, atomic write) any missing one so the next load
self-heals. Cache key is the media PATH (not the rotating signed query) so one
media = one file. Never blocks the response.
- channels /api/outbox: localizeItems() the outbox before serving.
- board.js: on img error, swap to an inline branded "image unavailable" SVG tile
instead of hiding — a dead/uncached image now reads as intentional, not blank.
- .gitignore: public/cache/ (locally-cached media, not source).
Verified end-to-end: outbox GET returns the localized /cache/media path and the
file serves 200; download pipeline writes valid image bytes. Deploy held (gated).
Note: images whose URL already expired before caching can't be recovered here —
fully restoring those needs a re-pull of fresh media from the IG Graph API (follow-up).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
243d9c5 · 2026-07-22 · fix(mcc): guard panel-router race that blanked panels + untrack screen-record videos
route() in public/app.js had no concurrency guard across its two awaits (fetch panel HTML, load panel JS), so rapid panel switching interleaved two route() calls that both wrote the shared #panel — a stale one landed after the fresh render and wiped it (title stays, zero cards/API/errors = "posts all blank"). Added a latest-wins token: after each await, bail if a newer nav superseded. Verified via /screenrecord (5-run order-varied recording, run3 reproduced the all-blank cascade) + a fixed-app.js-over-live-data proxy A/B. Deploy held (gated). Also .gitignore screenrecord/rec/ + *.webm and untrack the 10 committed webm recordings (7.5MB) an auto-save hook had pulled into history going forward. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
29d1ff2 · 2026-07-22 · channels: /publish skips non-postable + media-mismatched channels
A full-fan-out publish used to FIRE every connected channel and collect guaranteed errors (FB App-Review #200, LinkedIn 401, TikTok/YouTube image-as- video). Now /publish consults the postable signal + media-type fit and SKIPS (stages with a clear reason) any channel that can't actually take this post, firing only the ones that will land. Result rows carry skipped:true + reason. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
69af9fe · 2026-07-22 · channels: add honest 'postable' status — connected != can-actually-post
The status endpoint reported connected:true for channels that cannot post (Facebook needs pages_manage_posts App Review; LinkedIn token is unscoped/dead; TikTok/YouTube are video-only), which misled callers twice. Added a POSTABILITY map encoding the known structural blocks and surface per channel: postable — connected AND not structurally blocked (the real signal) mediaTypes — what it accepts (image caller must check; TikTok/YouTube = video-only) postableNote — the why (App Review / dead token / video-only) Also corrected the stale Threads caveat (tester-mode posts live without App Review). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
d84dc2a · 2026-07-22 · engine: untrack runtime engine-queue.json + protect it on deploy
engine-queue.json holds live approve/arm/post status mutated only by the running MCC — it was git-tracked (a latent trap: every deploy/commit carried a stale snapshot). Untracked it + gitignored (its sibling engine-config.json already is), and added it + engine-config.json to .deploy.conf RSYNC_EXTRA_EXCLUDES so a --delete rsync can never clobber the live queue. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
d9e22d3 · 2026-07-22 · engine: image-grounded captions (vision) + always include DW SKU
Two changes to daily post-suggestion generation: 1. VISION-GROUNDED COPY — captionsFor() now runs a vision pass (qwen2.5vl:7b) on the actual product image first, producing a factual visual brief (motif, scale, color, texture) that grounds the qwen3:14b copy. Old captions were text-only from title/tags and read generic; new ones describe what the image actually shows. Graceful: image fetch / vision failure (incl. non-Mac hosts that can't reach ollama) resolves to '' and captions fall back to text-only. One vision call per product (not per channel). Source label gains '+vision'. 2. ALWAYS INCLUDE THE DW SKU — candidates.resolveSku() fills dwSku from dw_sku || sku || variant_sku (strips the '-Sample' suffix; dw_sku is often empty on the mirror). llm.withSku() then guarantees the SKU in every caption, sized so channel limits never truncate it, and strips any dangling '· SKU' tail when no code exists. SYSTEM/userPrompt updated to request it (belt) with withSku as the deterministic backstop (suspenders). Verified end-to-end on the real Onda image: vision read the wave motif, all 7 channels carried '· SKU DWTT-73419' within limits; empty-SKU + broken-image edge cases degrade cleanly. $0 (local ollama). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2545273 · 2026-07-22 · engine: stop birth-gating Threads suggestions (DW is a Meta tester, publishes without App Review)
Threads posts live in tester mode (proven: postThreads() succeeded this batch), but generate.js was stamping every new Threads item status:gated from the static GATED_CHANNELS map. Removed threads from that map so items are born 'suggested' and approvable; the per-post approve->schedule step is still the real publish gate. TikTok stays gated (genuinely SELF_ONLY until app audit). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
File tree
- .deploy.conf
- .env.example
- .gitignore
- 5x/REPORT.md
- README.md
- assets/tiktok-app-icon/dw-marketing-icon-1024.png
- assets/tiktok-app-icon/icon.html
- assets/tiktok-app-icon/render.js
- cta/CTA-REPORT.md
- data/ab-tests.json
- data/browse-abandon-config.json
- data/browse-abandon-events.json
- data/calendar-dates.json
- data/calendar-schedule.json
- data/campaign-drafts/BRIEF-suede-edit.md
- data/campaign-drafts/build-classics.mjs
- data/campaign-drafts/build-suede-edit.mjs
- data/campaign-drafts/the-classics-VERIFIED-2026-08-18.html
- data/campaign-drafts/the-classics-VERIFIED-2026-08-18.png
- data/campaign-drafts/the-classics-collective-2026-08-18.html
- data/campaign-drafts/the-classics-collective-2026-08-18.png
- data/campaign-drafts/the-suede-edit-2026-08-26.html
- data/campaign-drafts/the-suede-edit-2026-08-26.png
- data/cc-import-activities-audit.jsonl
- data/cc-import-fm-clients-hold.json
- data/cc-import-fm-clients-mailable.json
- data/cc-warmup-seed-200.json
- data/com.steve.dw-follow-counts.plist.bak-TK-12008
- data/dw-ig-accounts.json
- data/follow-counts-history.json.bak-TK-12008
- data/ig-repull-status.json
- data/journeys.json
- data/playbook.json
- data/quickpost-drafts.json
- data/segments.json
- data/vendor-amplify-drafts.json
- data/vendor-instagram.json
- data/vendor-linkedin-cache.json
- data/vendor-linkedin.json
- data/vendor-posts-cache.json
- demo/dw-tiktok-integration-demo.mp4
- demo/out/frame-000.png
- demo/out/frame-001.png
- demo/out/frame-002.png
- demo/out/frame-003.png
- demo/out/frame-004.png
- demo/out/frame-005.png
- demo/out/frame-006.png
- demo/out/frame-007.png
- demo/record-tiktok-demo-safe.mjs
- demo/record-tiktok-demo.mjs
- deploy/CUTOVER.md
- deploy/apply-cutover.sh
- deploy/com.steve.dw-follow-counts.plist
- deploy/com.steve.marketing-calendar-snapshot.plist
- deploy/nginx/marketing.agentabrams.com.conf
- deploy/nginx/marketing.designerwallcoverings.com.conf
- docs/META-APP-REVIEW.md
- docs/ig-fleet-checklist.md
- docs/submissions/facebook-app-review.md
- docs/submissions/linkedin-app-review.md
- docs/submissions/linkedin-cas-11523819-followup.md
- docs/submissions/tiktok-app-review.md
- docs/tiktok-app-review-package.md
- drafts/commercial-edit-source.html
- drafts/glitter-sequin-exclusive/README.md
- drafts/glitter-sequin-exclusive/build-email.mjs
- drafts/glitter-sequin-exclusive/campaign.html
- drafts/glitter-sequin-exclusive/connie-create.sh
- drafts/glitter-sequin-exclusive/connie-create2.sh
- drafts/glitter-sequin-exclusive/draft-payload.json
- drafts/glitter-sequin-exclusive/draft-response.json
- drafts/glitter-sequin-exclusive/kamatera-create.sh
- drafts/grasscloth-2026-07-15.html
- drafts/mcc-promo-facebook-2026-08-12.md
- drafts/mcc-promo-instagram-2026-08-12.md
- drafts/mcc-promo-tiktok-2026-08-12.md
- drafts/new-campaign-template.html
- drafts/pr-naturals-2026-07-15.html
- drafts/pr-naturals-v2-2026-07-15.html
- drafts/pr-naturals-v3-2026-07-15.html
- lib/brand.js
- lib/fetch-timeout.js
- lib/kravet.js
- lib/leak-deny.js
- lib/media-cache.js
- lib/norma-auth.js
- lib/room-render.js
- lib/settlement-gate.js
- modules/ab-tests/index.js
- modules/accounts/index.js
- modules/assets/index.js
- modules/board/index.js
- modules/browse-abandon/index.js
- modules/calendar/index.js
- modules/calendar/store.js
- modules/calendarhub/index.js
- modules/calendars/index.js
- modules/calendars/lib.js
- modules/channels/index.js
- modules/clients/index.js
- modules/compose/index.js
- modules/composer/index.js
- modules/constant-contact/index.js
- modules/copy/index.js
- modules/engine/candidates.js
- modules/engine/config.js
- modules/engine/generate.js
- modules/engine/index.js
- modules/engine/llm.js
- modules/engine/scheduler.js
- modules/engine/store.js
- modules/follow-counts/index.js
- modules/ig-activity/index.js
- modules/insights/index.js
- modules/journeys/index.js
- modules/layouts/index.js
- modules/linkedin/index.js
- modules/performance/index.js
- modules/playbook/index.js
- modules/profiles/index.js
- modules/quickpost/index.js
- modules/reels/index.js
- modules/registry.js
- modules/segment-perf/index.js
- modules/segments/index.js
- modules/send-times/index.js
- modules/social/index.js
- modules/sounds/index.js
- modules/templates/index.js
- modules/vendors/index.js
- package-lock.json
- package.json
- public/amp-assets/.gitkeep
- public/app.js
- public/cmd-palette.js
- public/data/clients-manifest.json
- public/data/linkedin-followlist.json
- public/dw-accounts.js
- public/ig-activity.html
- public/ig-activity.json
- public/index.html
- public/nav-agent/nav-agent.css
- public/nav-agent/nav-agent.js
- public/panels/ab-tests.html
- public/panels/ab-tests.js
- public/panels/accounts.html
- public/panels/accounts.js
- public/panels/assets.html
- public/panels/assets.js
- public/panels/board.html
- public/panels/board.js
- public/panels/browse-abandon.html
- public/panels/browse-abandon.js
- public/panels/calendar.html
- public/panels/calendar.js
- public/panels/calendarhub.html
- public/panels/calendarhub.js
- public/panels/calendars.html
- public/panels/calendars.js
- public/panels/channels.html
- public/panels/channels.js
- public/panels/clients.html
- public/panels/clients.js
- public/panels/compose.html
- public/panels/compose.js
- public/panels/composer.html
- public/panels/composer.js
- public/panels/constant-contact.html
- public/panels/constant-contact.js
- public/panels/copy.html
- public/panels/copy.js
- public/panels/engine.html
- public/panels/engine.js
- public/panels/follow-counts.html
- public/panels/follow-counts.js
- public/panels/ig-activity.html
- public/panels/ig-activity.js
- public/panels/insights.html
- public/panels/insights.js
- public/panels/journeys.html
- public/panels/journeys.js
- public/panels/layouts.html
- public/panels/layouts.js
- public/panels/linkedin.html
- public/panels/linkedin.js
- public/panels/performance.html
- public/panels/performance.js
- public/panels/playbook.html
- public/panels/playbook.js
- public/panels/profiles.html
- public/panels/profiles.js
- public/panels/quickpost.html
- public/panels/quickpost.js
- public/panels/reels.html
- public/panels/reels.js
- public/panels/segment-perf.html
- public/panels/segment-perf.js
- public/panels/segments.html
- public/panels/segments.js
- public/panels/send-times.html
- public/panels/send-times.js
- public/panels/social.html
- public/panels/social.js
- public/panels/sounds.html
- public/panels/sounds.js
- public/panels/templates.html
- public/panels/templates.js
- public/panels/vendors.html
- public/panels/vendors.js
- public/quickpost-music/bright-reveal.mp3
- public/quickpost-music/quiet-texture.mp3
- public/quickpost-music/soft-showroom.mp3
- public/quickpost.js
- public/style.css
- screenrecord/DEBUG-REPORT.md
- screenrecord/debug-log.jsonl
- screenrecord/quickpost/DEBUG-REPORT.md
- screenrecord/quickpost/debug-log.jsonl
- screenrecord/quickpost/rec/run0/page@544d43a6ff2a10b8cb3e83cbcc4d56de.mp4
- screenrecord/quickpost/rec/run1/page@d10a227ebe0a4f40d039440b59598320.mp4
- screenrecord/quickpost/rec/run2/page@eb90353e6de8eba25641923003da52ff.mp4
- screenrecord/quickpost/rec/run3/page@504411666a3211af05bc80dce17ed577.mp4
- screenrecord/quickpost/rec/run4/page@62f1b5cde54e0a0ebdcc54c5b1e54327.mp4
- scripts/.li-cma-watch-seen.json
- scripts/backfill-address-from-csv.py
- scripts/build-clients-manifest.js
- scripts/build-dw-accounts.js
- scripts/build-followlist.js
- scripts/build-vendor-contact-sheet.mjs
- scripts/cc-agent-discover.js
- scripts/cc-import-fm-preview.js
- scripts/com.steve.mcc-clients-refresh.plist
- scripts/crawl-csv-emails.py
- scripts/cta-quickpost.js
- scripts/enrich-contacts-browser.mjs
- scripts/fix-connie-creds.sh
- scripts/follow-counts-snapshot.js
- scripts/ig-media-repull.js
- scripts/ig-repull-SCHEDULE.md
- scripts/import-linkedin-connections.mjs
- scripts/import-linkedin-follows.mjs
- scripts/ingest-linkedin-exports.mjs
- scripts/li-cma-watch.py
- scripts/linkedin-feed-harvest.mjs
- scripts/meta-go-live.sh
- scripts/meta-token-health.js
- scripts/nav-map.js
- scripts/new-arrivals-reel.mjs
- scripts/norma-auth-check.js
- scripts/probe-403-and-posts.js
- scripts/probe-403.js
- scripts/probe-business-discovery.js
- scripts/publish-calendar-snapshot.mjs
- scripts/quickpost-test-lib.js
- scripts/refresh-clients.sh
- scripts/refresh-vendor-posts.js
- scripts/repro-race.js
- scripts/repro-run3.js
- scripts/resolve-follows.mjs
- scripts/screenrecord-posts.js
- scripts/screenrecord-quickpost.js
- scripts/social-refresh.mjs
- scripts/verify-fix.js
- scripts/verify-fix2.js
- scripts/verify-proxy.js
- server.js
- verification/e2e-proof.json
- verification/tk-10893-codex-e2e-proof.json
- videos/mcc-streamline-promo/.media/audio/narration.wav
- videos/mcc-streamline-promo/.media/preferences.json
- videos/mcc-streamline-promo/AGENTS.md
- videos/mcc-streamline-promo/BRIEF.md
- videos/mcc-streamline-promo/CLAUDE.md
- videos/mcc-streamline-promo/SCRIPT.md
- videos/mcc-streamline-promo/assets/img/calendar.png
- videos/mcc-streamline-promo/assets/img/compose-m.png
- videos/mcc-streamline-promo/assets/img/compose-s.png
- videos/mcc-streamline-promo/assets/img/insights.png
- videos/mcc-streamline-promo/assets/img/nav.png
- videos/mcc-streamline-promo/capture/after-nav-calendar.png
- videos/mcc-streamline-promo/capture/hub-calendar-plan.png
- videos/mcc-streamline-promo/capture/hub-compose-manual.png
- videos/mcc-streamline-promo/capture/hub-compose-suggested.png
- videos/mcc-streamline-promo/capture/hub-insights.png
- videos/mcc-streamline-promo/hyperframes.json
- videos/mcc-streamline-promo/index.html
- videos/mcc-streamline-promo/meta.json
- videos/mcc-streamline-promo/package.json