Appearance
Branch history and divergence
Exact pins
- Merge-base (the only result of
git merge-base --all):3e376417a90e400eda3b36ee3da340053182fab2. - Commit/author date: 2026-08-12T11:13:47-07:00, equivalent to 2026-08-12T18:13:47Z.
- Subject: Merge pull request #7 from ManicHD/pv-tracker-kayton.
- Parents:
df096f0a048f0a7ef75a35477ecd5de0cc08a36dand7d08fcab89088fda07ad90f9dae1de1f8c9361dd. - Audited remote main:
ad33ecb44f208d91e69aae215471e70941111483. - Audited remote dev:
7c3f0079f7a4847ff698c508470757ca81e64b36. - Main range has 6 commits, all also main-only relative to dev. Dev range has 104 commits; 84 non-merges, 20 merges; 72 first-parent commits and 32 additional reachable side-branch commits.
Nearby shared history: 1a10279 (July 23, campaign displays/case studies), 8486281 (July 23, live count/site icons), cc9872b (July 23, campaign-display URL fallback), 7557b2f (July 30, PV Tracker page), df096f0 (August 6, tracker chart/controls), then 7d08fca (August 12, review flow/layout) merged at the base. Root dynamic policy predates divergence: 962daba2b6b27cf657af99403618fc7ca58ac957, May 6, “fix(vercel): force dynamic app routes for deployment.”
Readable timeline
text
Aug 12 shared merge-base 3e376417
├─ MAIN
│ Sep 06 27bb998 services offer + Calendly onboarding target
│ Sep 06 f6937f9 Kill Streak proof, navbar/footer cleanup, X icon
│ Sep 15 e192ec0 public route-group redesign + supporting behavior/assets
│ Sep 15 f7f132a design research and earlier-state handoff
│ Sep 15 6f2dda0 final launch: Careers; booking now /contact; remove /book-call
│ Sep 15 ad33ecb final site title/description/social image
└─ DEV
Aug 26 150f65c CODEOWNERS
Aug 27 1c0fbc1 / 4564e85 app → routing/features/surfaces/shared relocation
Aug 28–Sep 05 content-rewards design, groups, auth/admin/support/campaign work
Sep 10–15 analytics, review, Whop identity/payout/funding/staff capabilities
Sep 17–19 canonical budgets/funding, test discovery, CI, legacy payout cleanup
Sep 19 9809f86 retire legacy payout flows
Sep 19 7c3f007 standalone production imageDates retain each commit's original timezone in the tables. A “branch creation time” is not recoverable from this graph; the merge-base identifies common ancestry, not proof of when someone ran git branch.
Every main commit
| SHA | Commit date | Subject | Touched path names |
|---|---|---|---|
| 27bb998466bbe613fd57e40efe09513d3cac5607 | 2026-09-06T17:26:22-07:00 | Update services page and Calendly link | 3 |
| f6937f9b18b99cc58ed6e8f15dc7cb478bc209a3 | 2026-09-06T17:30:59-07:00 | Sync navbar and case studies to live | 4 |
| e192ec0845d70f01fe718b6b9b65dae59fcc003f | 2026-09-15T02:48:52-04:00 | Replace the marketing site and move it onto the live routes | 154 |
| f7f132a17d2cb1bd04d6156d0ab088e1b0e64194 | 2026-09-15T02:48:58-04:00 | Add the redesign notes and the handoff doc | 26 |
| 6f2dda06a550d077dc58ce202b385ba9a8804df3 | 2026-09-15T14:24:23-07:00 | Launch site redesign | 15 |
| ad33ecb44f208d91e69aae215471e70941111483 | 2026-09-15T15:27:23-07:00 | Update site embed metadata | 5 |
Each full diff is preserved in evidence/commits/<short-sha>.patch. The source audit is history-analysis. The complete semantic inventory is 02, not just this commit summary.
27bb998: three files. UGC versus clipping services, service metadata and Calendly onboarding target. Later layout supersedes this implementation; offer semantics carry forward.f6937f9: four files. Kill Streak case/results, nav removes Discord, footer removes ClipsRev referral, platform X icon. Final content must include retained intent.e192ec0: 154 touched names, or 152 change records with two renames. Adds the public route group/content/media, new creator funnel, scoped font layout, global motion and shared changes. Removes old marketing components/live-count route. Auth/dashboard edits are tiny visual/terminology hunks inside old architecture, not permission to restore it.f7f132a: 26 documentation/source-resource files. Research and handoff written before final launch edits.6f2dda0: 15 paths. New Careers, consolidated booking at contact, transient book-call deletion, sitemap change and final clipping/case-card tuning.ad33ecb: five paths. Final identity/title/description/schema/social image. Do not stop analysis at the large redesign commit.
Only transient newly-added path: app/(site)/book-call/page.tsx, added e192ec0 and deleted 6f2dda0. All public asset changes survive into final main. Full touched union is 185 path names; base→main has 184 changed names; rename-aware diff has 182 records (campaignData and guideData moves fold source/destination pairs).
Merges, patch equivalence, squashes and history limits
All six main commits are single-parent commits: no post-base main merge of dev appears. No main change has a patch-equivalent dev non-merge commit: git cherry dev main base returns six plus signs, saved in evidence/patch-equivalence.txt. Therefore “already present” decisions in the manifest are semantic/contract equivalence, not inferred cherry-picks.
The dev range has 20 merge commits. Its 84 non-merge patches also have no equivalent main non-merge patch in the audited range. Expanded first-parent patch-ID analysis has 12 duplicate groups pairing feature commits with the merge commit that incorporated the same change; one merge has an empty first-parent delta. That is normal merge structure, not evidence of repeated cherry-picks or rewritten history.
Several recent dev commits are single-parent commits with PR-number subjects, compatible with squash integration. The graph alone cannot distinguish a squash merge from a normal single-parent commit with that message. Likewise the large single-parent e192ec0 packages a broad redesign, but no unretained concept-branch commit history is proven by it. No rewrite or force-push claim is made without remote event/reflog evidence. See the recorded graph and structured parents/patch IDs in evidence/history-analysis.json.
Every dev commit reachable after the base
This includes side-branch commits, not just first-parent history. Exact parents are in both structured history files; the full readable graph is evidence/branch-graph.txt.
| SHA | Commit date | Subject |
|---|---|---|
| 150f65c031516b1f1b66f4854ca7a926f8adb20b | 2026-08-26T10:24:07-07:00 | Add CODEOWNERS for main review ownership |
| 1c0fbc1154dc9cc1cafcae34dbb1dde539905809 | 2026-08-27T23:27:23+08:00 | refactor(frontend): reorganize app into routing, feature, surface, and shared layers |
| 4564e8515fc588e8688d63620c0f92a1ced1ea95 | 2026-08-27T11:45:31-04:00 | Merge pull request #1 from BloxClips/refactor/frontend-relocation |
| a7333c9a5e813f7961830abacb4348f96229b67c | 2026-08-28T23:22:51+08:00 | refactor: split PV tracker admin page into maintainable components |
| 6703db0892c7ae202795cdc51fc64860e282505f | 2026-08-28T23:25:11+08:00 | docs: document PV tracker feature contracts |
| 5ed7c746f4b70cd582897bedc94ab08c842b35dc | 2026-08-28T11:29:15-04:00 | Merge pull request #2 from BloxClips/refactor/pv-tracker-module |
| b9bf5d698db99bf47d14794a7b6501789fdf5372 | 2026-08-28T23:51:47+08:00 | Add Content Rewards design system page |
| d0c5a8389268d4c5e310cdff7ec64f02d004a539 | 2026-08-29T00:00:15+08:00 | Hide footer on development pages |
| 223098acf63eec1dadbce4298832452b545fba09 | 2026-08-29T11:54:26+08:00 | feat(clipper-groups): add admin UI foundation with fixture-backed data |
| 5d31c86e0459de6d0134eba081222ab3a1a232fc | 2026-08-29T13:46:46+08:00 | feat(clipper-groups): integrate admin UI with live backend API |
| 08aac3be84e5aed71a2f3b7196a8d586c3708fd3 | 2026-08-29T15:14:36+08:00 | Add light theme to design playbook |
| 8c06e1be4ccd6f9ae13040640a5a59799b383157 | 2026-08-29T15:23:19+08:00 | Improve playbook theme contrast |
| 1e1ab0a882cc9f75c8b23dac91f84b4b38083e3f | 2026-08-29T09:00:10-04:00 | Merge pull request #3 from BloxClips/feature/frontend-design-system-playbook |
| 4105e2ed7ccf6aa4e8dd89b8a9ba62859c07fabb | 2026-08-29T09:00:33-04:00 | Merge pull request #4 from BloxClips/feature/clipper-groups |
| bbe6e067374067065323eb17346b6f8e748c7dcb | 2026-08-30T09:42:27+08:00 | Refactor Content Rewards frontend |
| adc217fcbf88f80d1302aaa3ff733f9e0fbc0ca4 | 2026-08-30T09:50:37+08:00 | Fix Content Rewards modal surfaces |
| 2d3e39b12d315c33b73f54349642346cfad37fec | 2026-08-30T09:52:53+08:00 | Refactor Content Rewards frontend architecture (#5) |
| 779b58a0f315020f93d0076f199c87d35c60d708 | 2026-08-30T12:22:30+08:00 | feat(clipper-groups): add campaign-scoped Clipper Groups UX (#6) |
| 6896553a030086c21f5933e88a55c456ed2a0cb0 | 2026-08-30T19:33:48+08:00 | feat(support): replace floating widget with shared Whop support dashboard (#8) |
| 6bad94e38bfa8ad2d7498cf0f110fc519bb03a48 | 2026-08-30T22:06:38+08:00 | feat(campaign-management): add step-by-step create-campaign wizard |
| 24157e1065f4d3c1786943b38c3e05fd406cd173 | 2026-08-30T22:36:56+08:00 | feat(campaign-management): add Draft badge and Launch action |
| 9635eb4040d267fe058077e2ed74fe735ce46a99 | 2026-08-31T11:43:30+08:00 | fix(support): align Whop support workflow (#11) |
| ed5e0ddb0a529c16124a8bf104971e011a49f45f | 2026-08-31T11:57:29+08:00 | Merge remote-tracking branch 'origin/dev' into fix/campaign-card-values |
| 1e123c2e66aa941b730639bd265f16a590ef6536 | 2026-08-31T12:13:22+08:00 | fix(campaigns): correct creator payout displays |
| c49949b1089b721ee4fb10b9b65f5ca232a2ea7f | 2026-08-31T12:14:02+08:00 | Merge pull request #12 from BloxClips/fix/campaign-card-values |
| f4d5fa2fdfda24ae8383c24aa30b880c6ef8d8ae | 2026-08-31T13:14:46+08:00 | feat(campaigns): unify admin campaign management |
| 95f057909e7c615f887b78c4afb9731005c3a974 | 2026-08-31T14:33:54+08:00 | fix(campaigns): polish unified admin experience |
| 673dc8461734537deb8468b02f6663acc1c9ec63 | 2026-08-31T14:34:08+08:00 | Merge pull request #13 from BloxClips/feat/unify-admin-campaigns |
| 3fc5a67d5d833878b9d3a5022da7e1c1293f8435 | 2026-08-31T14:50:15+08:00 | feat(support): finalize Whop support inbox UI (#14) |
| 1bcb13391a5eb4dced1dc620f9d00bda6748cdc1 | 2026-08-31T21:18:44+08:00 | feat(campaigns): add creator discovery and details |
| f0f47f897753e1af1f303c220ef4f28052595126 | 2026-08-31T21:27:33+08:00 | Merge pull request #15 from BloxClips/feat/clipper-campaigns-discovery |
| 430b69511eefef9f324485713143bfcdae2e7265 | 2026-09-01T21:17:48+08:00 | Improve creator clip submission experience |
| 1837d219dbaf7d5d97ce5ab183b335e8e7400d19 | 2026-09-01T21:19:10+08:00 | Merge pull request #16 from BloxClips/feat/creator-submission-flow |
| b4ee2028f49991443eec7386b03049d6acafb5e4 | 2026-09-02T07:29:50+08:00 | feat: add clipper access and refresh login |
| 718bda13f716894f03dbb204df2012edaf9b857c | 2026-09-02T07:30:58+08:00 | Merge pull request #17 from BloxClips/feat/rbac |
| b18865532711fd329f886c159d357f429785dc4c | 2026-09-02T08:05:17+08:00 | fix: scope footer to marketing pages |
| 5649fb6e53f9a0215ef00ae45658786c851413d7 | 2026-09-02T08:06:01+08:00 | Merge pull request #18 from BloxClips/fix/marketing-footer-scope |
| 70364033a909e4322f042e82ba5ca4b9a0e6f9ed | 2026-09-02T12:45:25+08:00 | feat: redesign creator overview |
| db6815bb1d0c59282a076414fcae660d8d6f564e | 2026-09-02T12:48:37+08:00 | Merge pull request #19 from BloxClips/feature/creator-overview-redesign |
| 51a219bcc932b3f42a62711142f7dab89769a16d | 2026-09-02T15:16:55+08:00 | feat(auth): add Whop sign-in option (#20) |
| 4bebb048414c738c9508a7f895703e0ef899ac96 | 2026-09-03T12:46:54+08:00 | feat(auth): add staff dashboard access (#21) |
| db95c80ade878701a7602dc3710df90aaa08e581 | 2026-09-03T20:12:19+08:00 | feat(audit): add generic admin audit viewer |
| 4efa0ad03dd7ebdfcce66f01668fcdb5c1f4c194 | 2026-09-03T20:12:19+08:00 | refactor(audit): decompose admin event viewer |
| ee8684b51c61e287055694ce0d624ae81b224e2b | 2026-09-03T22:04:48+08:00 | feat(rates): expose precise campaign CPM and RPM (#23) |
| 5643f6e3b81f642c127aedcca8766bea80fd4ce2 | 2026-09-04T11:53:59+08:00 | feat(dashboard): refine frosted overview experience (#24) |
| f7adb8e884d3d4a4777d74cecff1e419cb94d582 | 2026-09-04T12:04:04+08:00 | fix(campaigns): support legacy rate responses (#25) |
| f18e36a0e5ccdf6e3768e51e3faeadf932f0843a | 2026-09-05T21:40:14+08:00 | feat(dashboard): refine shell and modal experience (#26) |
| 541dbd1e952c3d7740df7a6cad25d33173b87ed0 | 2026-09-05T22:44:55+08:00 | feat(admin): add shareable sponsor campaign reports |
| 7f93980fefe86a25183b82e67789fa041b0e369c | 2026-09-05T22:50:02+08:00 | test(reports): cover public report requests |
| fcf4809fad4948b5a2e4aea5333bcefeaf207b3c | 2026-09-05T23:06:29+08:00 | Merge sponsor reports and animated campaign menu into dev |
| 3aadc7306c6aaae525ea72c04b1c28606ddaaf5a | 2026-09-05T23:22:07+08:00 | feat(admin): add staff team capability control panel (#27) |
| 5693a823208dac16a8bbbfa7cbd1ab7f54b31ab4 | 2026-09-06T08:55:52+08:00 | feat(admin): add report expiry disclosure |
| 907963f1f440f30a135c952950166d5d4ea469ef | 2026-09-06T08:56:16+08:00 | Merge pull request #30 from BloxClips/feat/report-expiry-disclosure |
| a6b46ce824dae4385b99f20c83d4a187975e524a | 2026-09-10T00:19:17+08:00 | fix: render missing scrape observations as chart gaps |
| 1ec344ad66312140e5f0bddf994f817938c556d3 | 2026-09-10T20:41:44+08:00 | feat(payouts): replace cashout and provider selection with Whop earnings |
| 98e29e4c8b58bb1daf6f91eec9a2f5e51c8638de | 2026-09-11T01:58:52+08:00 | fix(security): patch the Next.js server and matching lint configuration |
| e4b5f5c812d1acabbc731cb7600969051885657e | 2026-09-12T00:51:51+08:00 | feat(review): send idempotent moderation commands (#31) |
| 6fd32abadcd1870232bf905211394ec5c82c285d | 2026-09-12T01:44:52+08:00 | Expose scoped moderation, payout holds and clawback review |
| 8a6a8e69c0b73b7621dd0b3625603037c3159c0f | 2026-09-13T14:08:43+08:00 | feat(review): show committed activity analytics (#33) |
| 8cf1376648ae72d89b7650f7be969787c9afab75 | 2026-09-13T14:35:16+08:00 | feat(admin): add campaign invoice management and client breakdown (#32) |
| d2e7ae3e31805ea305e3f18347a4f8b404b9304f | 2026-09-13T15:34:38+08:00 | docs(config): add complete frontend env example |
| e8d22465f28f5fc8c7cb8824aa9fbd3ae69521fb | 2026-09-13T20:38:51+08:00 | Integrate dev invoice and review UI with scoped payouts |
| cb6f1afa20af6091a4fca663c459920a8f3542ec | 2026-09-13T22:34:06+08:00 | fix(ui): move admin notifications to toast portal |
| a32bc39faecd848f782bf6efb37ccc0f5e5082eb | 2026-09-13T22:34:28+08:00 | Merge pull request #34 from BloxClips/integrate/payout-dev-2026-09-13 |
| fc460adbef9e5b84ec8e2dea0925a0a147f3f1bd | 2026-09-13T22:35:17+08:00 | Merge pull request #35 from BloxClips/fix/floating-toast-wrapper |
| 88a64e7b6435b5e4473e87dad08b94225d6ac7f2 | 2026-09-13T22:55:36+08:00 | Fix admin campaign loading errors and booking contrast |
| bddbf8a1deeabb60b4a323945f36a30579e81c93 | 2026-09-13T22:56:43+08:00 | Merge pull request #36 from BloxClips/fix/admin-load-errors |
| 28846de48f617bc8275738c10e5d5a692148f386 | 2026-09-14T00:02:14+08:00 | Fix dashboard modal clipping and animation flashes |
| 11763e772066437930c2b46b77b43bb6dcda328e | 2026-09-14T00:03:14+08:00 | Merge pull request #38 from BloxClips/fix/dashboard-workflow-pages |
| 15d40863c495d3d429529ce090f06978fe2a8ccc | 2026-09-14T00:40:06+08:00 | feat(admin): reconcile canonical campaign funding UI (#37) |
| 4c42e5afab0c861cff20028d46a79026afb427f9 | 2026-09-14T01:20:39+08:00 | fix: simplify review reasons and stabilize notification timers |
| 4ab9e74300b51e702772ec930e474573fe4cf8bd | 2026-09-14T01:22:22+08:00 | Merge pull request #40 from BloxClips/fix/notification-theme-and-timeout |
| 2969523ea0b07e9a9a390104d7a584be042b55a2 | 2026-09-14T09:25:31+08:00 | fix(payouts): clarify readiness errors (#39) |
| 086bb29115d2eca6e213d9c3a5abf9f1a8960e10 | 2026-09-14T09:45:58+08:00 | feat(overview): restore graphs from recorded history (#41) |
| 9bebb851ce5106a79972dbf5ef7e724757fb38cc | 2026-09-14T11:42:18+08:00 | feat(admin): gate navigation and controls by resolved permissions (#42) |
| 4f757acb779b8aa1f1412caa535af936b8b50d8f | 2026-09-14T11:44:15+08:00 | feat(analytics): add Clipper Group dashboard (#43) |
| 6f620ca06727ea3846909e11c0bd10049f09de1a | 2026-09-14T12:33:29+08:00 | feat(support): redesign inbox and batch message previews (#44) |
| 7d9148a29fede9607674af9b4ff0fbf9b91ba34c | 2026-09-14T13:22:07+08:00 | Fix hidden account verification popup during clip submission |
| 219863fe63e57f34b97b87dd1d16f0cd90c332c4 | 2026-09-14T13:58:24+08:00 | Add local test accounts for admin permission checks |
| 53d992b71822c3d58fc2ec1e70a4c014b7a1f7fe | 2026-09-14T14:16:33+08:00 | Move manual submission to a modal and remove review activity panel (#47) |
| 08ef8036483399f482334fd6ffad9b2219a57c3a | 2026-09-14T14:58:15+08:00 | feat(campaigns): expose private campaign controls (#48) |
| 111f278549ab27c78277d39cefc6dbbc29a1cb03 | 2026-09-14T15:15:12+08:00 | Fix manual campaign dropdown and show YouTube-only requirements (#49) |
| ea6b7ee16fa404aba999fb3ccbf58d7b6935400e | 2026-09-14T21:18:07+08:00 | Move creator moderation to user details (#50) |
| 2edec6e692873474a590466ca12390c2d969befc | 2026-09-14T21:39:45+08:00 | Move clawbacks to admin payouts (#51) |
| 2b2b2a0484da203a9d8dc927a7d7a32541b7216b | 2026-09-14T22:05:32+08:00 | Add hybrid staff capability administration (#52) |
| c976014e9a360b1c2146f5fc8b91ba78c49f60ef | 2026-09-15T13:14:09+08:00 | feat(invoices): expose provider-native fee handling |
| 6db20c05a9f7620209caab13fe83153e3820e915 | 2026-09-15T13:14:09+08:00 | fix(invoices): clarify Whop buyer fee option |
| a2974705e5f54456b08bbfbcf3816090d895fc3b | 2026-09-15T23:19:04+08:00 | feat(groups): configure precise campaign group RPM |
| c3c3926c49cc487a806002bc07ad2038444795c1 | 2026-09-15T23:19:04+08:00 | fix(groups): format group RPM history for readability |
| b799888e0cded805ec3825bfe558cd7a8adf284a | 2026-09-15T23:33:23+08:00 | feat(config): start frontend from verified Whop profiles (#58) |
| 630f0990d3b5ddfd05ee3e398f864a2ad943a57d | 2026-09-15T23:42:30+08:00 | feat(moderation): add server search and paged campaign navigation (#60) |
| a7bf7d2f63a93ade01754feed9b3f9202ae673a8 | 2026-09-15T23:44:22+08:00 | fix(payouts): explain observation-based earning maturity (#56) |
| 33cc5566909f8052f8da975442420f384b9ba8c4 | 2026-09-16T20:17:10+08:00 | feat(config): simplify Whop frontend environment switching (#61) |
| e501dbbb5e135fbeb75541588fd44fb7b8eaeaae | 2026-09-16T22:28:16+08:00 | Link submissions directly to payout and clawback review (#59) |
| 76d7f85f918df765ec9e4d32753ca62fbc49a994 | 2026-09-16T23:37:58+08:00 | feat(marketing): pilot TanStack Query for public marketing reads (#62) |
| f9aa2cb5b2b18183ce7f274c5c15e31642d7e81b | 2026-09-17T12:21:25+08:00 | chore: apply nextjs prompts |
| c8de0c7d6700b59d58602dff5ecd4ed752e59a74 | 2026-09-17T23:52:37+08:00 | docs(fetching): add frontend cache-policy slice (#63) |
| 5a5325a23d9ad0f0bced8f5e32f8d632d44a406c | 2026-09-17T23:53:29+08:00 | feat(funding): build full-page Campaign Funding workflow (#64) (#65) |
| 7e055b4068efa536538ec754c9cd3ec6cdd3ceab | 2026-09-17T23:53:29+08:00 | fix(funding): show remaining budget outside funding page, announce increases (#64) (#66) |
| 24dbd4f5e43748f8a0f0818bdb39b23b7d754fc6 | 2026-09-18T17:29:22+08:00 | fix(campaigns): show canonical remaining budget on public campaign surfaces (#68) |
| b349acbae9bbf282e5173321b160d03deb96fbee | 2026-09-18T18:08:02+08:00 | ci(frontend): attach GitHub Actions gate for test, lint, and build (#69) |
| bf3633966fd55ca8d520aaaba2deccc021c9a56b | 2026-09-18T22:28:48+08:00 | fix(frontend): run nested test files recursively in npm test (#70) |
| 9809f860376538daa224750499aa7eb2e68f094f | 2026-09-19T11:06:16+08:00 | refactor(frontend): remove legacy payout flows (#170) (#71) |
| 7c3f0079f7a4847ff698c508470757ca81e64b36 | 2026-09-19T11:06:33+08:00 | docker(frontend): add portable production Next.js standalone image (#72) |
Authority and freshness
The frontend fetch completed successfully before pins were selected. Primary checkout HEAD and local main/dev refs differ from the remote authority; they were recorded in evidence/primary-before.json and preserved. Do not compare future work to the checkout's current HEAD by accident. A future implementer must fetch inside a new lease and review the delta after the pinned dev SHA before using this plan.
Backend remote branch SHAs were verified separately and are documented in 06. No scraper dependency was established, so no scraper history audit was performed.