From 49508c2a13dde17497dc57fc20c0d5901486fac9 Mon Sep 17 00:00:00 2001 From: martbost Date: Sun, 6 Sep 2026 07:51:28 -0500 Subject: [PATCH] Banner ads: required IAB size picker (width/height stored, shown in row, maps to NAS) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also lands dormant server-side scaffolding for video ads (type, tiers, validation) — not yet exposed in UI. Co-Authored-By: Claude Fable 5 --- ads.js | Bin 33318 -> 35660 bytes db.js | 2 ++ public/assets/my.js | 9 +++++++-- public/contract.html | 8 ++++---- public/index.html | 10 +++++----- public/ledger.html | 8 ++++---- public/my.html | 11 ++++++----- public/tx.html | 6 +++--- public/view.html | 4 ++-- public/wall.html | 6 +++--- server.js | 2 +- 11 files changed, 37 insertions(+), 29 deletions(-) diff --git a/ads.js b/ads.js index 915b9e262443c5305b3d63ef0667fc743b1dd959..0f79f88c99ea191da9f41a25cbadc653456c894e 100644 GIT binary patch delta 2013 zcma)7&u`pR5EhYAk%&r!ly0B|2C39`;&?ZkkRQ9+R!Q1Jr6#1^R*6WK$ZNl@AMx7e zy|>wBbL7B*Q@LNH{;LW ze>wE?w?jWZ9d4PUfWK@OnznGf84=D9n+0${T@r%r@&f)H5GE)m3?l06bFhJt&l;2w zHwglt1U2EA(DbO|o#SyLI0%nGMA*y$B~6GJbx2X&$ur^+yTt-7J-`X;kx#@qrb1Cg z+^2+L6+7w%;4yIG;CVJ@Vhk4rm@~1Srp;Wugp;J7uHRh8Z?Wr_@A%#904{VKXY*ap zc{ovtD+#WuXiGA+W=ETZ-L#JiuoOQX{;6exrmR|}IEr*~VFxZ21-DmLfzwBX!*5T% z0qSz7+Yy?XO>3S25yHkw8F&;1JY+~XG^s1RtVfhtkEjcIW7I*jfYp_aja&Ej%C|qh zRfdw{=d077E*+{ zT<$RcVTynUg@6}bh;`!9Mjgp^u(z5|0KLvmWeftfkfs!AeqrfwAqB!`1ti%$FJ;vZ z0-QLS&Q8&cu0eLqPK7}f$tx2huLy*&`H9y27&UuK>3#dm3uJq3S$6b z4k0>(qzHX{gjI?x_=?%Fgj$R_J5`K~wl^=_zqkdsrE+v~1#o1&6SN-Ez|}dFt^>Dl z%%xHZ%7W3Lrqdv52usBrAA_bDMp3OHeF*yd@;biz#`xMMzK-}dRuewuwS{aZo*~Ao zO~Rzg(kz0!OZO_h^xEHzKN)^i!iuAa#4ldE6#soG6F)0nnBdI8*uH|)g2yoaPW;Qr zWc<&_gi)E^we)&4f7~S1x}oph*!g6aSEh^`#?>sf1mQwQ9K#rm_cEE*gUAnU7wiDm zH|Mikq`GcGh_YgHL9h`QHN_F&2@!GdX|N9@aFGt60a%zs`dTtkf19*!*T@6r%TAe7 zlwzg|1s*n-LxADNC@G46&0LPh-dr95BsFOGelh+tv%M`)VK7!_mI_mXBRzI1MlvEH zM}*@*;ZZ}{Xw<8Or9)D>Sw>Uej3lOJ6EAMgqf9*i)*rKKmkZ#eOPvl7eh iF@C;1**3Gk-+eE6*UR#IQUKkMi`gqF?bkoQ{K~&=^>&f~ delta 59 zcmV-B0L1^ymI9`P0 '').join(''); soloHint(); $('rateLine').textContent = 'Available to spend: ' + r.availableCredits.toLocaleString() + (r.earnedCredits ? ' (' + r.purchasedCredits.toLocaleString() + ' purchased + ' + r.earnedCredits + ' earned)' : '') @@ -337,7 +340,8 @@ tbl.className = 'tablewrap'; tbl.innerHTML = '' + '' - + r.campaigns.map(c => '' + + r.campaigns.map(c => '' + + '' + '' + '' + '' @@ -405,6 +409,7 @@ $('cType').addEventListener('change', () => { const t = $('cType').value; $('cImageRow').hidden = t !== 'banner'; // only banners carry a creative; login frames its URL + $('cSizeRow').hidden = t !== 'banner'; $('cTitleRow').hidden = t !== 'text' && t !== 'solo'; $('cBodyRow').hidden = t !== 'text'; $('cSoloRow').hidden = t !== 'solo'; @@ -417,7 +422,7 @@ let soloBody = $('cSoloEd').innerHTML; if ($('cSoloRaw') && !$('cSoloRaw').hidden) soloBody = $('cSoloRaw').value; await api('/api/my/campaigns', { type: $('cType').value, name: $('cName').value, - targetUrl: $('cTarget').value, imageUrl: $('cImage').value, + targetUrl: $('cTarget').value, imageUrl: $('cImage').value, size: $('cSize').value, title: $('cTitle').value, body: $('cType').value === 'solo' ? soloBody : $('cBody').value, ctaLabel: $('cCtaLabel').value, diff --git a/public/contract.html b/public/contract.html index 6ae6db0..911a3fa 100644 --- a/public/contract.html +++ b/public/contract.html @@ -5,7 +5,7 @@ The contract | InstantAdPay - +
@@ -129,8 +129,8 @@
Advertising services with a performance referral program. Not an investment product; no income guarantees. Crypto transactions are irreversible. Never spend what you cannot afford.
- - - + + + diff --git a/public/index.html b/public/index.html index 4ddbdc1..b996ea1 100644 --- a/public/index.html +++ b/public/index.html @@ -5,7 +5,7 @@ InstantAdPay: advertise and earn, locked in code - + @@ -410,9 +410,9 @@ - - - - + + + + diff --git a/public/ledger.html b/public/ledger.html index f08472c..cc51b11 100644 --- a/public/ledger.html +++ b/public/ledger.html @@ -5,7 +5,7 @@ Live ledger | InstantAdPay - +
@@ -25,8 +25,8 @@
- - - + + + diff --git a/public/my.html b/public/my.html index 9533bbc..3b1afe8 100644 --- a/public/my.html +++ b/public/my.html @@ -4,7 +4,7 @@ Member area | InstantAdPay - + @@ -254,6 +254,7 @@ ad viewer, so those URLs must allow framing — we check them the moment you submit. Login and solo links open in a fresh tab, so any working page is fine.

+ - - - - + + + + diff --git a/public/tx.html b/public/tx.html index 3920062..1a7de7b 100644 --- a/public/tx.html +++ b/public/tx.html @@ -4,7 +4,7 @@ Transaction | InstantAdPay - + @@ -33,7 +33,7 @@

← Back to the live ledger · Read the contract review

- - + + diff --git a/public/view.html b/public/view.html index ec53a64..9892991 100644 --- a/public/view.html +++ b/public/view.html @@ -4,7 +4,7 @@ Viewing ad — InstantAdPay - +
NameTypeViewsClicksSpentBudgetStatus
' + c.name + '' + c.type + '
' + c.name + '' + c.type + (c.type === 'banner' && c.width ? ' ' + c.width + '×' + c.height + '' : '') + '' + c.imps.toLocaleString() + '' + c.clicks + '' + c.spent + '' + c.budget + '' + (c.status === 'out' ? 'budget spent' : c.status) + '