Answer
What shipped to Brew, day by day: 884 changes since 12 October.
Today
2026-10-26
- Test: the jam page paints the add sheet's portal after fitting
238fa23 - Jam page: a carousel fits the stage, the add sheet opens centred above the page
96ebcee - Jam page: highlight covers on the profile they live on, no unrelated product, plain tag, chips that fit the part
4f6f55f - Jam page rebuilt as the approved prototype, drops B and C: every layout in its frame, the send sheet, chips that follow
4265f60 - Jam page rebuilt as the approved prototype, drop A: the shell, and an added piece is its own
e17450e - Jam page redesign, second pass: point then ask, one-line checks with Fix it, who the brief went to
3fabacf - Jam page redesign, first pass: the prototype's shell and the fixes under it
9c1b2a7 - promote.sh: an image named by hand is labelled with its own commit and must be one staging ran
45b6a06 - Merge remote-tracking branch 'origin/main' into open-fixes
d6154b3 - Every deliverable under "+": all 228 open as a jam on any card
b9362bc - Merge remote-tracking branch 'origin/clean-names' into open-fixes
f78e495 - Merge remote-tracking branch 'origin/staff-brief-status' into open-fixes
aff50c3 - Merge remote-tracking branch 'origin/db-reset-delete' into open-fixes
c43ed11 - Customer-facing copy: no ShopOS, plays not plays, the product name in one constant
ca2bc7b - Timeouts hold the event loop until they fire or the work settles
4799f78 - Staff status buttons for briefs sent to our team
2eed121 - Postgres brand reset and data-request deletion as brew-ops jobs
e3e0fb4 - CI: run the deploy test gate on every push and pull request
fccf3cb - Edge-case review fixes: no double purchase, no dead jobs, the right product and the right face
a559de6 - Pinterest pins are pictures made in Studio at 2:3; "+" refuses what it can't add
37967fe - Higgsfield, paid safely and briefed fully
91c392b - Jam product truth: the Studio and the words use one product, card first, never a free sample or a sold-out size
f53630f - Studio make: one paid make per board across every instance
b91e364 - tools/audit-layout.mjs: the jam rendered and measured at three sizes, every deliverable, Creative and Brief, every panel tab
bc12997 - Jam: each deliverable tab has its own brief with a real To, team, agency, designer, media buyer, creator, editor, ShopOS,; Brief mode's panel is Chat and Details; one Set-up tab name; one-line ship bar; one scroller per column, nothing cut off, sentence-case labels
9fd1de4 - Jam drafts: the writer gets the checker's claims rule and the Brand Book's approved claims; a fresh draft that slips, unbacked claim, 7.4X, paise, WhatsApp labels and lists, is mended once before anyone sees it
94b332c - Jam product: copy naming a bundle and its pieces gets the bundle, in stock first, at the stated price; 200ml is 200 ml
93ce29a - First drafts: the re-lettering never uses the card's stand-in photo, Zenant's is its logo, and logs the brand it worked on
4e2328c
2026-10-25
- First drafts: the timer mends the saved drafts of a brand with nothing new due, it skipped them before runOne,
c3656de - First drafts: black bars baked into a picture are trimmed before it is fitted under the words, saved drafts set again, HEAD_V 3,
68bcfdb - First drafts: the re-lettering finds the clean picture, the draft's own, the clip's still or the real photo, and logs what it did per brand
6bf7384 - First drafts: saved drafts are mended on every tick, re-lettering and the look check, not only when a new draft is due
8adb842 - First drafts: a still's headline sits in its own panel above the whole picture, saved ones set again for free,; anyone in a draft, static or final is an everyday customer, never an expert, and the look judge fails an expert picture, saved drafts judged again,
be1fd9d - Static ads: the words get their own panel above the whole picture, never a dark band over the product; saved statics are drawn again from their saved scenes when the brand opens, free, layout v2,
1cb274c - Set-up: a set's bar line in plain words too, A 4-slide set (In use, Closeup, …, of
· size) 50b8e8f - Retire Jam v2's own screen, Param,: no ?v=2, jam2.js no longer loaded or shipped, an old #jam2= address opens the feed; every card opens v1's jam, whose Studio set-up keeps v2's engine, routes and shared styles, jam2.css, scene.js,
9ee9d14 - Set-up: the line under the sentence gives Brew's reason only for the style Brew picked; a style you picked says what it looks like
3f87821 - Watcher pictures made before the title fix are swapped for the real product photo once
3ddf689 - Watcher idea pictures: the card's title never goes into the image prompt, the model drew it as words on Cozy's bunny and Bug Muff pictures,; the product and the scene carry the context
0c8290c - Set-up: All styles closes with Done and its tiles match the strip
220304a - Test: the made Set-up says what it was made with as one sentence
55fb0a7 - Every see-through product photo reaches the image model on white, img-norm flat,: under the clear pixels of a store's cut-out packshot sits black and a semi-clear shadow, which a model reads as the product on a dark panel with stair-stepped edges and copies as a paste-up. This was the Arata Damage Defence collage, bottles over a jagged dark panel,; Arata's catalog photos are see-through PNGs, as are many stores'
e20f123 - Set-up v2: one sentence to read and change, Make one In use picture of
with for , as a quick preview, real example pictures on every style, the brand's colour on what is picked, Fine-tune folded; Browse templates fills the tab; the product picker names sit under the photos; the made state reads as one sentence ab9e859 - A background refresh of the numbers, research, live-watch, daily facts, never makes a page wait: it gets the pack in hand while the new one builds; Sloosh stays off production, Param, and production sends no Sloosh readiness alert
0fc7cfc - Draft look judge: a deliberate split-screen passes, doubt passes, only an obvious paste-up fails; email, chat and page mocks are never judged as photographs, staging 25 Oct: Cozy's cold/warm split and a Nutrova page mock were dropped,
0b356a2 - 2.6: a budget, pause or scale card built on Google figures, "Brand Search 22.10x", offers Connect Google Ads while Google isn't connected, not Shift budget
ebf1de4 - Jam guests may press remake again, Param, 25 Oct,; finals, video, listing photos, new pictures, variants and CTA makes stay the team's
bf30637 - v1 jam: a card's deliverables as pills over the stage, and "+" to make the same card as another one, Instagram post, carousel, Stories, short video, WhatsApp, email, the card's own kinds first, each its own jam with its own versions: v2's board tabs, in v1, Param,
1520cba - Product match: a name that is one word once its common words are set aside, 'The Desk Day Kit' → 'desk', is named only when written out whole; 'freezing desk hands' no longer names the kit, Cozy puppy-warmer idea,. Watcher pictures matched again once
9cc3617 - Studio chat on a set: "3 slides" is never read as 3 takes, the reply said "3 takes" on Arata's stories,; the slide count stays the Set-up's
825ec3c - Jam guests: paid makers, pictures, videos, finals, slide redos, variants, say the brand's team makes them, instead of a button the server now refuses; words and drafts stay theirs
9149c3c - Jam stage preview: the whole ad fits above the bar, the post's words show their first lines, as Meta's feed does; the picture sized to what is left, and the stand-in note is one short line
10cafbb - Watcher ideas: a price match needs a rare shared word, 'conditioner', never 'hair',; an idea naming no product the store sells gets no picture at all, never another product's photo, made or healed,
c1ca521 - Studio stills: the words a picture will carry are checked before anything is drawn: a line with a claim the store or Brand Book doesn't back goes, as in films, and so does a price that isn't the product's own; real review quotes stay, QV 25 Oct: Arata's full stories printed "Dermat-approved formulations" and a 15 ml stick's slide "₹601 Special Combo Price",
0285592 - Finals in plain words while Sloosh isn't connected: "Making the final", "made by Brew", and a video or Space that can't be made says so, never which partner isn't connected
cf79df0 - Watcher idea pictures: an idea that states a price picks its product among those at that price, pricedProduct,: Arata's '₹449 conditioner' no longer lands on the styling stick, Cozy's '$44 puppy warmer' on the Pup Warmer; healed cards are matched again once
65f6b66 - Final QV round 3: a staff-claimed brand's own domain joins its team, someone@arata.in,; keyed jam maps, Jam v2 jams, v1 changes, merge in place so a running make keeps the live jam and both sides' takes and marks survive; the finals sheet presses with the quote it showed; a final's credits are taken once even after a crash; a slow token refresh never clears another's claim; a failed alert email gives its claim back; References and the rival read are the team's; a jam guest never makes paid media; Slack approvals and paid yeses need a team member; an expired builder call is an error; Jam v2 links use production's own secret
81fba5e - Jam stage before a make: the whole ad fits above the bar, the stand-in product photo is shown whole and dressed like the style picked, with a line saying it is the photo for now; the bar reads plain, One In use picture of … · size, never orange
ea0e738 - Set-up tab: Escape closes the product picker while typing in its search; a wide panel shows three tiles a row, four were cramped at 1024px,
4eddda1 - Set-up tab: the style picked and its reason come from one rule; tiles show each style; whole names; pickers under their chip; product search; More settings; wider panel on request
cd54f25 - A Studio take lands once, checked where v1 versions live, versionsOf; the route read the wrong list, thanks to the production QV,; phones: the stage's toggle, dots, Creative/Brief and the bar tip get a 44px tap area
2bd3b86 - Draft look check: a blank band along one side, a letterboxed picture-in-picture, is caught for free too
ca4e0fc - First drafts are never collages, Param 25 Oct, Arata: a hair swatch beside three bottles pasted over a dark panel off the frame,: every product picture is judged before it is shown, draft-quality.js: free pixel check + vision judge against the card's words; collage, cropped or off-topic is made once more with the reason, then held back for the real photo,; the reference is the product's cleanest photo, never its designed store card; the creative watcher's idea pictures are made around the product the idea names with the card's words, no generic prompt over the lane photo, no cheap model,; Studio never pastes a raw or jagged cut-out; saved drafts and watcher pictures heal
9cf6178 - Plain words leave web addresses as written, the fact sheet read "arata.in/page list for Google.xml",; the Plays page says plays in its title, counts and out-of-date banner, 3.10,
fabe137 - Test: every partner's home is production again, Param,; the staging-home list stays, empty
41b0258 - Several instances, production,: a revision, picture, video, first draft or remake running on another instance carries its name and a beat on the jam, so this instance never says "Brew restarted… Try again" or clears its spinner while it runs, nobody presses again and pays twice,
29187ae - Every partner's home is production, Param: "would love to onboard users on this production itself",: STAGING_HOME empty on production, staging's moved list has all five again; promote: the partner-page check had commented out the line that adds the leading slash, two releases rolled back on it, fixed
119dc8a - Feed: a post Brew wrote for the brand, an idea card's post, script or thread, is served without its unbacked claims, like every other card; rival ads, shopper threads and evidence stay as quoted, QV 25 Oct: a founder post's preview said "entirely dermat-approved",
e0cfa23 - docs/production.md: what runs where, how a release works, backups, restore steps, database, one brand, files, and the monthly restore test, alerts, outside settings
4746826 - Final QV round 2: setup answers and tuning are written in the locked row and other instances drop their copy; a jam both instances changed merges its nested lists, boards, takes, and never brings back what one side removed; a make on another instance shows as still making, instance name + beat on its mark, never "press it again"; move PDFs are read from storage, never a stale disk copy, and get their cover from storage; the Brand Book's building state is shared and a forced rebuild isn't swallowed; a builder click nobody waits for is dropped and repeat clicks join the open one; Sloosh credits are taken before the paid call and given back on refusal; voice notes have a day cap; a slow token refresh is still written when nobody wrote a newer one; the onboarding stream in the Shopify admin keeps its viewer; the promote lock's age parses on python 3.9
2f5bb19 - Jam QV 25 Oct: one count on the bar and in Details, fields too,; made Studio listings, A+ and print get the made-piece bar; Make the full one is pressed where its price shows and says why when it can't; one paid make at a time; a restored version re-seeds the set-up; arrows never move slides under the game or a menu; Enter never sends mid-word; no History menu or send leaks into the next jam; slide dots wrap on phones; tooltips escaped once; a final runs the quote it showed and is never called failed while Sloosh still makes it; a Studio take lands once; a chat-asked video length is the length made
7ed54e3 - Arata and Nutrova live on staging again, Param, 26 Oct onboarding,: staging's moved list drops them; production lists them in STAGING_HOME and leaves them alone, no background work, sends muted, people sent to staging, Slack relayed, sign-ins renewed by staging only,
deb7d90 - Final QV round 2, config,: the release checks the new worker holds the background lease, its connection names its revision,; the clean gate checks production's own secrets, sign-in and access settings, skips brands still building and accepts a closed store's team-only answer; a partner page is checked through the load balancer; alerts still send when the database can't answer and say which site; uncaught exceptions are logged; production handoff links use its own secret only; the Slack manifest matches the live app
bb61cb3 - Final QV round 1: a Shopify sign-in is never staff and must be verified, hop links single-use, tokens out of API addresses,; visitors list root-only; Sloosh finals beat while in flight and the worker collects abandoned ones every 10 minutes; a job failure never resets another run's claim; slow builder clicks get their own queue; web instances alert when no worker holds the lease or jobs wait 10+ min; heals at load are written by the lease holder only and only go forward; a jam two instances changed keeps both sides' new items; parted reads in one snapshot; a slow token refresh never overwrites a newer one; promote takes a lock, refuses an unknown rollback target, says when a rollback fails, waits on its own backup
e919324 - Promote: the GitHub check retries and says why it stopped, a network drop on the releasing machine once ended a release with no message,
6313149 - QV Phase 6: staging never renews a moved brand's rotating sign-in or emails its expiry; a moved brand's people and Slack hear nothing from staging, send guard,; its pages, files, Brand Book and API go to production; no on-demand research or rival pre-read there; the copy strips simulated connector data, and the gate refuses it, finds zips, PDFs and voiceovers, never puts a secret in an error; promote rolls the worker back to the revision that served
d37631b - Promote: the new worker revision gets the traffic by name and the gate checks it, one rollback had left production's worker on the morning's code,; a read-only sign-in check, db/connector-ping.mjs,; staging's smoke check includes a brand that stays
c4591f2 - Staging: Arata is moved to production too, its connectors keep reading on both sites,
ea48815 - Staging: the four copied partners are moved to production, MOVED_TO_PROD,; the pack rebuilds when research, live-watch or daily facts change, so the feed never quotes counts older than the brand's files
c05a271 - Partner copy: plain-word arguments, gcloud mangles repeated flags in a job's args, and tools/partner-copy.sh to run it with staging's image
26abe06 - Phase 6: the partner copy, staging → production, dry run first, testing left behind, sign-ins re-encrypted, never over production's own changes, and the moved-brand rule on staging, its people go to production, no background spend or email there,
02cebf7 - Promote: each load-balancer check gets 5 tries, so a network blip on the releasing machine doesn't roll back a healthy release
18f99c2 - Slack on two sites: production takes the Brew Slack app's events and buttons and relays workspaces it doesn't serve to staging untouched, signature intact,; Sloosh's client registration names the site it runs on
9e9ed0d - The stage as a stage: a lit backdrop, the piece centred and lifted; a set of slides shows one big at the stage's height, arrows, numbered dots, arrow keys, or All N side by side; the slide picked on the stage and in Set-up is the same
8a73df3 - Promote: gate the web candidate before traffic, the new worker right after it is deployed, it judged the old worker's settings,
587d5ec - QV round 3, Phase 5,: promote fails closed and rolls back, traffic pinned to the promoted revision, worker only after the gate, finished backup; production runs as its own account behind the load balancer only; the gate smoke-tests from inside the VPC and checks image, roles, ingress, account and migrations; private cache rule for setHeader too
4cca3ce - Details checklist: a check's fix sits on its own line under it
138a6d2 - The made Studio piece: stage is the piece, Set-up is Studio only, Chat speaks Studio, Make the full one
9c57c25 - A notice of this instance's own write that arrives before the write returns waits for it, it rebuilt the pack once more under load,
ca179ae - Production edge: every answer not marked public is private, the CDN never keeps one viewer's seed.js or PDF for another,; the clean gate refuses when it has no services to check; promote waits for the database to take a backup
6f7bc21 - Phase 5: production release tooling, tools/promote.sh, staging's exact image to feed.joinsquareup.com: backup, migrations job, worker, web behind a no-traffic tag, smoke test, clean gate, traffic, tools/prod-env.sh, one production config, db/prod-clean.mjs, nothing dummy, demo, mock or test on production,; Delete my data worded as the honest request it is
c561438 - A pack's own heals saved while it is built never make it stale, and an instance ignores the notice of its own write, one write, one rebuild at most,
4202bf2 - Warm every ready brand up to the cap, packs only, nothing paid,: partners not opened lately waited for their first build
ded5a7b - Staging: a drafts tick no longer rebuilds packs, only drafts/cards.json is part of the pack,; a startup probe holds traffic until the brands are warm, /healthz/ready, at most 90 s,
97a77b6 - db/status.mjs --recent: recent writes and database connections, to see what keeps a pack changing
b7d4d2c - Build progress: a reset and a line that land while the history loads are never shown twice, race found by the suite under load, pinned by a deterministic test
4098a82 - A made piece that needs a look says what on the bar, the low-res preview, a claim to back, never just "Needs a look · 1"
07e44d4 - Studio's product: the jam's words, then the card's own product, then the first draft's; a stale draft never beats the card, Arata stories: the card names the styling stick, an older draft showed a shampoo,
13b321d - QV round 2, Phase 4,: fix every finding from the cache and HTTP reviews and the live checks
2701ddb - Draft view keeps the product its pictures show, draftView dropped it, so the plan and Studio never saw it,
03f0d80 - Studio sets up the product the first draft shows: the plan's copy of the draft kept every field but its product, Arata stories: a shampoo draft set up a styling stick,; PLAN_V 5
ed22442 - Warm every ready brand at boot, most recently opened first, a partner not opened lately waited for its first build,
0d64c3e - Phase 4 speed: version-checked pack read cache, cheaper evidence and claims, warm brands at boot, no long waits in a request, async compression, Server-Timing on every answer
271a8fb - Ad account change: a card's source row, "From: Upload (Audit.pdf,") is never a campaign; with the account, the card's own words pick it
8f1a2ce - Replies and answers are words: no empty photo box, "None (Text reply,"), no photo tool or Change the photo chip under them
4b99f5e - QV round 1, Phases 1-3,: fix every finding from three independent reviews and the live checks
7cc86d4 - Stage QA round 2: narrow-stage bar, set redo once, calls to action, organic titles, review replies
4edd1a6 - Ad account change: a row named after a platform, "Meta", "All campaigns", is the team's pick, never a campaign name
7f9f6c0 - Feed: a workspace play card's status badge follows the move on load, 'Being updated' stuck on Scrubroom m20-1 after its flag cleared,
b68aa9f - db/status.mjs: read-only health, protected brands' connections, table sizes, for the ops job
d428647 - Retailer wording: a retailer's plays say 'store' where a writer called the store itself a brand, Scrubroom 27 after two rewrites,; at load, so page, cards and PDFs agree; PDF_V 12
647408c - Stage QA pass: safe campaign heal, one step strip, organic videos, pack offers, review replies, draft shapes
d89c0e0 - Phase 3 on Postgres: locked team and connection edits, one token refresh, Arata's connections protected, sessions that end, shared jams, part-wise plays and workspaces
5e80035 - Rewrite: a move rewritten after its flag is cleared at boot, and when its cut-off cards are written, Scrubroom 20, 33 kept 'Being updated' after deploys,
a38083d - Assortment: when a retailer's category is asked again and changes, plays that still call it the old category's maker, 'an apparel brand', are rewritten
6dcc3d1 - One stage for every deliverable: one name, only the piece, one next step
039586f - Web and worker roles on Postgres: a background lease, a job queue, shared day caps, build progress from any instance
c65c98e - Jam reset on Postgres: clear v1 jams, Studio jams and remix takes for every brand, or one, archived, connections never touched
15a80aa - docs: mis-typed cards fixed
a03c6f7 - Ship the bucket import in db/, tools/ is not in the image,
d5b47c4 - Storage on Postgres: structured objects become rows in Cloud SQL behind the same packs/workspace/cache stores, STORAGE=pg,
542c6fe - Cards: where a piece goes decides what it is; Reddit/forum posts are never Instagram posts, printed cards never image ads
50cc01a - docs: reseller read fixed
19929fb - Jam close-out: collection covers square on the stage, Studio and the pack; free pictures keep the Brand Book's no-people rule; X threads open post 1, copy the whole thread and catch posts over 280; search, post, outreach, setup and print briefs ask their own questions; one-off emails aren't written as flow steps; the FAQ knob tops out at 10
6138af0 - Assortment v2: a retailer's category is asked again by its whole catalog, Scrubroom stayed 'Apparel' with 53% stethoscopes,; heal stamps per version
58b8179 - Reseller read: a store selling mostly other brands is read as a curated retailer with its own label, for every brand
e419432 - Deep round 4: message drafts follow the card's channel and moment, cart, win-back, welcome, enquiry, placeholders and channel needs count as missing, real as-of dates, review replies go to the reviews app, tracking fixes to the tool the card names, WhatsApp broadcasts name the brand's tool, the team brief reads the Brand Book, Brand Book edits reach writers at once, today's counts in every writer, no paid make of a sold-out product, never-say words out before a film is bought, the free look shows the jam's own words, long film lines warned
3e45723
2026-10-24
- Deep round 3, words and ops,: the ship bar never says Ready over a failing check or unticked own checks, Brew's checks travel with the brief and are asked before it goes, product markup from the catalog, search ads meet Google's minimums, an Ads Editor file that imports paused, Sent only when it went, and Send vN after a change, the templates download, questions vs changes read right, real thread links first, choice fields match loosely with lead-gen buttons
406bd24 - Deep round 2, creative,: carousel cards link to the made product, print artwork in the pack and checked, Stories checked as stories, no free pictures over a Studio take, chat opens the set-up, the made size and words become the package's, listing keeps photos and A+, A+ cards open on A+, batches say made when all are in, video packs ship the film and its cover
9e00afa - Deep round 1: one product for the copy and the picture, one claim source, the viewer's pack, for every check, writers get the workspace's facts and Brand Book, Studio reads the fact brief, card evidence and the v1 team's notes, reviews and claims only for their own product, health claims say how to back them
c6d2bed - docs: design-partner audit 24 Oct, what was found, fixed and left open
a7e1810 - PDFs are drawn from the loaded brand, not a peek: after a deploy the cover check, stat-check.js, runs too; PDF_V 11
e4de167 - Design-partner audit fixes: cover numbers must mean what their label says; COD title adds up; team PDFs redraw on rule changes
09578c5 - Budget card: saved cards keep today's move, mismatched drafts take the card's move, readable bars, simulated account carries its move
167ebdf - Test: the packshot's cut-out is quoted per engine, Brew's own is free,
672531c - Jam audit leftovers: A+ wide and banner pictures fitted whole, packshot priced on the cut-out that runs, every caption line kept and burned, offers and prices in any currency, the picked slide outlined on A+ and listing frames, publish parts edit from the keyboard, chat set-up changes kept in the jam's thread
14c6eb0 - Jam audit 4: a v1 jam reopens only a Studio jam of its own kind; a ratio is never read as a count, "4:5 static" made 5,
191fd15 - Own ads: the daily tracker reads the page the read found, by id; a tracker that found no page never shows as 0
2b3dc8d - Feed: the background rebuild waits for the page's first calls
ec8384a - Jam audit 3: restores keep photos and sets, cleared fields stay cleared, no empty versions, late rewrites never overwrite newer edits, a timed-out chat changes nothing, every family takes jam edits, prices in any currency, the brief and pack carry every Studio file, safer teleprompter, Redo priced and disabled while making, one ready toast, escaped brand names
d8e10dd - Jam audit 2: the Brand Book reaches every v1 writer, offline drafts use the product people call it, first in-stock product when the card names none, whole-word cuts, no team notes on slides, no 'To confirm' placeholders, outreach jams build again
7a450f6 - Jam audit 1: one Studio jam per v1 jam, the jam's action picks what is made, typing in the composer is saved, slow paid jobs resume, prices match the make, words come from the jam's copy, only this product's reviews, cast faces sent, checks fixed
750a6c5 - Feed: log why a load built the feed fresh
89af611 - Feed cache: only the saved viewer, connections and plan count as a change
f05e8cd - Heal: a saved read with no social links counts as outdated until its accounts search has run
b645858 - Feed cache: page-open calls no longer mark the workspace changed; budget withdrawn check tested
591a414 - Films: a site that links no Instagram or YouTube gets its accounts found by search, for every brand
a48bd27 - Round 2 partials: withdrawn budget check, AI-count labels, instant repeat feed, abandoned-cart product, rival take rules, free first look
3135dd2 - Founder storyboard: the sketch names the person, without their role
580ccac - Reading page fills in what a dropped stream missed; logo comes from the site header, not a drawer template's
29f7481 - Founder storyboard: a writer row holding every shot is split into one frame per shot, and the writer is told one shot per row
4fdb65b - Opening a brand no longer rebuilds its whole pack twice: the Brand Book check reloads the pack only when it wrote a new book, 1.7,
d8c4f45 - Film brief jams: never open on the card's video draft, a founder-first fallback with short lines, and log why the writer's draft was dropped
0d28752 - Connector reads no longer rebuild the pack, it only asks connections.json whether Shopify is on,; log pack drops while diagnosing 1.7
8ec619f - Video jams offer "Brief a film instead": the same card opens as the founder storyboard
6da0f94 - Log the writes that make a recently loaded pack rebuild, diagnosing the 1.7 seed delay,
09ffcbf - A pack a page loaded lately is rebuilt in the background right after it changes, so the next page load finds it ready, 1.7,
65e5d6d - Seed timing keeps the team gate in its checked form
f866155 - Seed route reports where its time goes, Server-Timing: load, team, render, to finish the 1.7 speed work
f376781 - QA round 3c: background note and grade writes after a load no longer force the next page load to rebuild the pack
f6a92b4 - QA round 3b: page and section builds sit in Catalog; only files a pack is built from make its next load rebuild, so page-open logs no longer cost 2.8 s
787c162 - Founder storyboard: frames use the theme's surface colour in dark mode
3df6e22 - QA round 3: today's 10 first, Deck columns by what a card changes, seed served at once, card voice and labels, connect step in plain words
6d99777 - Founder storyboard on the creative stage: timed frames per shot, the script edits in place, a teleprompter over the camera that records on the device, storyboard.md/script.txt/captions.srt in the pack
64f0c74 - QA audit round 8: founders come from the about page the home page links to, Arata: /pages/about-arata,; brands already tried read it once more
e1c8e42 - QA audit round 7: an approved claim backs only what is on the Brand Book's list, not the same words elsewhere in the brand's copy
fabce8b - Play while it brews: an optional Catch the beans game while a creative is made
a4b88da - QA audit round 6: the fact brief backs claims one fact at a time
3e1d2f0 - QA audit round 5: a health endorsement's proof must sit in the same fact, product or review; the brand's own tagline alone doesn't back it
f2de4e8 - Creative stage: changing who is on camera rewrites the direction's sentence about the cast, so the direction never says two people
bccc769 - QA audit round 4: a card's claims are checked against the store's own words only, never the ad plan or move that wrote them
733347b - Creative stage: 'made' means this v1 jam holds a Studio version, so the chat still changes the set-up when the card's Studio jam has older takes; those takes, made earlier in Studio, already paid for, are offered as Use it and land here free
443c096 - QA audit round 3: a health endorsement needs the store's proof, study, test, certificate, or the Brand Book's approval; the founders repair runs inside the daily heal
55f5ca6 - Creative stage: remember picks for the brand, chat changes the set-up, and the Adjust tab explains every slot
59c2afe - QA audit round 2: one job per topic whatever channel a card names, near-repeats compared by the title the feed shows, deck columns say why they rank where they do
ccf4a6b - QA audit fixes: near-repeat cards hidden, saved claims cleaned on serve, setup ordered by best sellers, founders healed, speed
88fc4ab - Studio films never cast an AI expert, no doctor, dermatologist or scientist, no lab coat or clinic, unless the brand's own consented one, and never say a claim the store doesn't make; a caption that doesn't name the product shown is flagged to be rewritten
e3d213e - Live check fixes: the shelf shows each jam's own picture, the queue link opens cold, connect offers and urgency only on the brand's own cards, account spend formatted
cfcc14f - Recreate never runs on someone else's video: swapping a product into a creator's or rival's footage keeps their people, face, voice and words, so it is only for the brand's own videos; a viral or rival card opens on a Viral short in the post's shot pattern with the brand's cast. A Recreate take already made is a hard stop in the publish check.
fd86e3c - Section C: rank by urgency and money at stake, budget bars with Ads Manager links, connect preview, guided yes calls, swipe tuner, product shelf, rivals pages, running jobs, prices in the brand's money
c35d8bc - Moves are called Plays wherever a person reads them, 3.10,: labels, page titles, source lines, emails, PDF covers; ids, routes and files keep move
b277ec7 - Section B: plain rival errors, connect offers for unconnected platforms, the brand's own messaging tool, message export, one chat rule, stock, live page
1165c3b - Recreate: a reference video Higgsfield's safety filter refuses says so in plain words, nothing charged, and points to the Viral short, which follows the same shots without sending their footage
d579c1a - Recreate runs as long as its reference: no length to pick, and its price line says it remakes the reference video
ce597b3 - Section A: read-only copy everywhere, onboarding counts match the feed, one card per job and no opposite cards, revisions as jobs
49d5ef0 - Claims checked on every surface: short forms of health claims, measured results need the store's study, approved Brand Book claims count
27510fb - Fact Sheet as the one truth: a metric named on a card takes the account's number, budget drafts move what the card says, setup reads connected Shopify, Brand Book numbers chapter
33756a8 - Recreate is priced on the real reference video, Higgsfield charges by its length, and a price Higgsfield can't give says it is Brew's estimate; the composer says why Recreate and the viral short were picked; the viral short is a TikTok-style video in its price line
8953c48 - Test: the catalog ad frame carries the editable headline too, three Meta previews,
d089427 - Recreate, viral shorts, batches, collection and catalog ads on the creative stage
174851d - Films: where one caption ends and the next begins only the next shows, one frame had both,; a made board's composer opens on the set-up its take was made with, so Redo makes that again at its price
c8c1bb1 - A film's captions, .srt, and GIF are served like every made file; a captions file a take holds but the store can't find is written again from its captions
d1b90c9 - SCOPE: What Brew watches, source health and the router
fe6c2f2 - Listening: a brand not on Trustpilot is 'not on Trustpilot', never an error; posts that tag the brand keep the mention in its own field so the AI tags them, and saved ones heal,
45c526f - Creative stage: On camera shows only for a style with people in it, never for a motion clip or a packshot
d57f5fb - Videos ready to post on the creative stage
4968b15 - Ready to publish: a review count in the picture or the words, "from 226 reviews", must be the brand's own too, not only the star score
44ee3bd - Sets: the frame keeps the slide picked in the strip in view through every repaint
38ad41d - Sets on the stage: picking a slide swipes the frame to it, Redo the set prices the set as it is now, after a drop or an add, set versions are named, Carousel · 3 slides, and their alt text says what the set is
a02f6aa - Heard: the couldn't-read note reads naturally for any source name
eaed495 - Amazon reviews in the listing's own country: an amazon.in listing came back 'no such product' from an amazon.com read and counted as 0 reviews, for every Indian brand
0f649b4 - Brand Book: the instant-paint copy is read-only until the fresh book arrives, the composer stays, so no tap lands on old data
d16782c - A Studio make a restart stopped says so: the v1 jam and its Work item turn Failed with the reason, the composer shows it after a reload, and a set that kept slides since the last try doesn't use up its restarts
2a34fdc - Brand Book fonts: the picker always offers the site's own fonts, so an uploaded font never loses the way back
5dbabf1 - Studio sets survive restarts without paying twice: each finished slide is written on the board as it lands, and a set a deploy cut off resumes at the next slide, reusing the slides already made
51310a0 - What Brew watches is for the brand's team, like Heard and the plays, it was readable signed out,
6470144 - What Brew learned tiles: just the name and title, no descriptions, a round arrow; What Brew watches shows four stickers in a 2x2
5e575e2 - Brand Book fonts: every weight and style kept, family/weight/style read from the file, pick headings/body/both on the card and in the kit, remove a file, Studio loads every weight, brand kit ZIP carries the font files + fonts.css
cbb1c94 - Outside data: source health and a router, store links from the brand's own site, Amazon weekly in every market, Seen-in on cards, couldn't-read on Heard
e57a02e - What Brew learned: the two entry tiles are small posters of what they open. Brand Book is a cover in the brand's own colours, type and mark, Aa, swatches that fan out,; What Brew watches is a paper board of tilted source stickers with a live dot
98212b0 - Creative stage: a post's time reads like a person says it, never the writer's machine date, the composer header no longer prints 'undefined', and a preview slide's words sit under a catalog photo instead of over it
6f98144 - Sets and Amazon A+ on the creative stage
fd0fe70 - Brand Book share: book prefetched when the sheet opens; ChatGPT/Claude also copy the whole book, paste fallback,; Gemini opens before copying so it's never blocked; fonts fall back to their own kind, Geist is sans,
d732388 - What Brew learned: Brand Book and What Brew watches as matching tiles, icon tile + chevron on top, title, one short line,; watched sources as a 2x2 mark grid
0a64545
2026-10-23
- Pack for a Studio take: the words in the picture and what Studio made, not the free draft's overlay and brief; UTM campaign cut at a whole word, pack v5,
8449a10 - Brand Book guards: all-brands audit tool, tools/audit-brand-book.mjs, and guard tests for every 23 Oct issue class; CLAUDE.md says to run them
3ea1007 - What Brew learned: Brand Book and What Brew watches side by side; 'most talked about' names subjects, never a kind of post
ec0fb17 - Meta fatigue card names its level, 'Campaign
showed…',; the plain-words guard also reads the card's row labels, so a saved 'ad set' rewrite is served as 'campaign' 2116855 - Every placement: a picture with its own words is set whole on a blurred copy of itself, pack and preview, never centre-cropped through its headline; check lines keep their icon, pack v4,
501afff - Brand Book: hero products fall back to the catalogue picture; 'See 30 of 3,025' when the catalogue read is partial; the AI reply says what it would change
1eee0a8 - Plain words keep the ad platform's level words: a rewrite that called a campaign an 'ad set', Arata's Meta fatigue card, is put back when served, saved rewrites included; the prompt says the levels differ
b5edd19 - Ready to publish: every word set on the picture is kept for the check; a picture whose words weren't kept says to check it, never 'no problems'
d74dad5 - What Brew watches for you: shelves, marketplaces, traffic and tagged posts through Apify where treg has nothing
0639102 - Brand Book: Undo after Use these, puts back exactly what the card replaced, cover tagline shows its edited/Undo chip, a change card is titled with what the team typed
69f1dc1 - Ready to publish: a Studio take shows every part the platform needs and the check
c16dad2 - Connectors: a read a restart cut off, 10 min on 'syncing', reads again at once, not at its next cadence; Sync now can restart it after 10 minutes. A day of deploys every few minutes left Arata's Shopify 'reading' for hours
77c65a2 - Brand Book: brand.json carries the rules; numbers never show 0 before the count-up, PDF, background tabs,; complaints styled apart from avoided words; cleaner page breaks in the PDF
0e916b2 - Stage frames lay words over a picture only when Brew made it word-free: catalog and card photos, uploads, Studio takes and rival/viral remakes carry their own words, Arata 23 Oct: "Cleanse. Hydrate. Glow." twice on a rival remake,
8c1130b - test: stem-match case
be0286e - Brand Book uploads: proposals, colours, fonts and never-say must be in the file, groundProposals,; a lost request times out with a retry message
d9ec365 - Creative stage after a make: a Studio take is the final, Set up · Made · Send, no Sloosh step, Redo shows its price, and the frame lays no headline over a picture that has its own words
9bad669 - Studio: a safety-filter refusal, refunded, falls back to the next image maker within the price already shown, and a failed make says so in plain words
9fdb3f7 - Brand Book: chapter jumps scroll instead of navigating; attachments: per-type limits that match the server, clear advice for .doc/.ppt/.key/.heic, any SVG is a logo, paste a screenshot into the bar
13d21c8 - Brand Book: a dismissed or used change card never returns from the instant-paint copy
00684c6 - Creative stage preview: the frame shows the chosen product photo before anything is made; the preview badge sits above the frame
8d60c7d - Brand Book: Not now on a change card is remembered, dismissUpload, so it doesn't return on reload
daf46c8 - Creative stage: the frame and the composer scroll together on the stage; the chat's next step says Generate, not Share the brief
fd0d647 - Creative stage in the v1 jam: pictures, sets and videos are set up from the card and made by Brew Studio on the stage
a9926a0 - Brand Book: select any line → Change with Brew / Rewrite / Remove, the composer gets the line and its chapter,; naming line punctuation
86adfc4 - Brand Book UI: composer as one panel, ideas inside, one swipeable row, fade behind, in-book pill pickers instead of OS dropdowns, platform cards with marks and handles, market as passport stamps
7ceb24c - Final Meta + Shopify audit round, 23 Oct,
19adf7d - Brand Book Rules: plain-sentence rules in four groups, Must/Warn, where each applies, Brew's suggestions by category and market
29b3d2e - Shopify COD card plays to Signals next to the checkout card, storefront cards are off, so it never showed,; saved copies follow a live card's section and seats
8abba24 - Brand Book: the All products page sits on the page body with the book's colours; leaving the book closes it
ba5325b - Shopify edge cases + resumed rewrite record
35c2915 - Brand Book: All products page, whole catalogue, filter by price step, brand named instead of 'they', price tags unclipped
0938cbb - Rewrites: a move a run writes leaves every rewrite queued before the run and the pot's waits, so a hand rewrite of plays waiting for next week's pot is never written, or paid for, twice
7cfceab - Brand Book: a fun book in their colours, spreads, collage cover, chips, stamps, stickers, shelf, trading cards, notes, play mocks,
8649384 - v1 jam for creatives: picture and video buttons open v1's own jam, stage + Chat/Adjust/Brief, never Studio; Studio stays v2-only, ?v=2,; an old #jam2 address in v1 opens the feed
eefb904 - Shopify COD: two facts, cancelled, shipped-but-unpaid, instead of one 'failed' rate; rewritten plays read 'COD failed' as returns
004d58e - Shopify cards: 'its ads' for one product; best sellers from a sample say how many days they cover
5e0949c - Shopify: a store whose orders come through a checkout app, GoKwik, 96% at Arata, no longer adds Shopify's checkouts left to orders as 'started'; the card, ledger label and health ring say these are only the carts that reached Shopify's own checkout
19c87c6 - Shopify COD card: says cancelled vs shipped-but-unpaid, never that unpaid orders failed, Shopify can't tell a returned parcel from cash nobody marked paid; Arata: 2% cancelled, 37% unpaid,
04571a2 - Shopify: order counts use exact UTC timestamps; date windows overlapped, Shopify reads <DATE as the end of that day, and doubled Arata's 30 days
60300fd - Shopify: a count Shopify can't finish in time is counted in 5-day windows; shop.brand is gone from the Admin API, read the store's description; read-only tools/shopify-audit.mjs
22a2b75 - Shopify QA: big stores' orders counted by Shopify, sold out means can't buy, own app kept safe
e947732 - Meta winners: the known-good creative fields are asked on their own; the poster and the 1080px thumbnail are asked apart, so a refused field never loses the picture; refusals are logged
525bdeb - Shopify: an own app from another organization connects by the store's approve screen
019083c - Meta winners: the creative's own full-size picture, a video's poster, a link ad's picture, a dynamic ad's first asset, else the thumbnail at 1080px, never the 64px default
ef68491 - Meta winners: the 30-day ad report is retried, then 14 days, then the 7-day ad rows, Meta answered 'Service temporarily unavailable' for Arata,; winners file v3 so every brand's pictures are fetched sharp once
a40619d - Meta winners: a read Meta refused keeps the last winners and their version, so the next good read still fetches the sharp pictures
76a14d5 - Brand Book: only a change card that just arrived pops in; a repaint, the book being written, never replays it
88f935a - Brand Book: a change not taken yet keeps its proposal, before → after, so its card comes back after a reload
308e813 - Brand Book composer: change cards and the half-typed ask survive the page refreshing itself, they vanished while a book was being written,; only real kit changes are proposed; the composer sits above the phone tab bar
b53177a - Merge branch 'jam-v2' into HEAD
621c8a4 - Button words take whichever colour contrasts more with the brand colour, WCAG,: Arata's light blue gets dark words
2a42b8c - Brand Book is edited in words: one composer under the book, tell Brew anything, paste a link, drop files anywhere, answered with change cards before → after, taken in one tap; × on every list item; a share sheet on the book's own cover whose tiles say they worked, and show the link when the clipboard is blocked,; ratings to one decimal, a summed marketplace shown once
3e54577 - Meta winners: a video ad's largest frame, not the 64px thumbnail, one creative listed once, short proof sticker with spend and click rate in the caption
017287e - Merge branch 'jam-v2' into HEAD
88aac22 - QA audit fixes for Studio, the Brand Book and v1, about 60 findings from three reviews,
129b585 - Brand Book: a font, logo or colour upload is applied, never left waiting, a family's newer font file replaces the older; a product's photos also serve its packs; shorter Add photos button
5ad77fc - Meta winners: one read per winning ad for its creative, Graph v26 refuses the ?ids= batch, so Arata's winners came back empty,
182db31 - Brand Book drives every picture: uploaded font files render in Studio files and the canvas, and older pieces move to the latest fonts on their next edit,; each product takes its own extra photos, back, side, close-up, from the Brand Book, read into its profile and given to every shoot; a 360 turn with no back photo says so before any spend
15113d7 - Merge remote-tracking branch 'origin/main' into jam-v2
bb05dfa - Cut-outs saved before the see-through fix are made again, versioned cache key, so no jam keeps a black-fringed product
2f0d050 - Cut-outs saved before the see-through fix are made again, versioned cache key, so no jam keeps a black-fringed product
b9b499a - Cut-outs: a catalog photo that is already see-through is used as it is, cutting it again turned the transparency black,; the writer keeps a customer's words as a quote, never the brand's own claim
d18e876 - Cut-outs: a catalog photo that is already see-through is used as it is, cutting it again turned the transparency black,; the writer keeps a customer's words as a quote, never the brand's own claim
60a93b6 - Studio marketplace sets: the main image is the real product cut out on pure white at 85%, free, never redrawn,; benefits and scale slides are drawn by Flare around the real product photos and checked; marketplace images carry no button or promo; a failed check names its real reason
39f8141 - Studio marketplace sets: the main image is the real product cut out on pure white at 85%, free, never redrawn,; benefits and scale slides are drawn by Flare around the real product photos and checked; marketplace images carry no button or promo; a failed check names its real reason
9220863 - Studio for every card and v1: each picture, set and video deliverable opens on its own styles/sizes/length, sets for carousels, stories, listings, PDP sets, photoshoots: one style per slide on one board,; Redo makes it again through Studio; films delivered at the placement's exact pixels, Kling Pro native 1080p, others upscaled,; v1 buttons that make a picture/set/video open Studio; failed slides named, their spend counted
3841f7e - Studio for every card and v1: each picture, set and video deliverable opens on its own styles/sizes/length, sets for carousels, stories, listings, PDP sets, photoshoots: one style per slide on one board,; Redo makes it again through Studio; films delivered at the placement's exact pixels, Kling Pro native 1080p, others upscaled,; v1 buttons that make a picture/set/video open Studio; failed slides named, their spend counted
37ba08d - Brand Book: Shopify's own brand settings lead the kit and cover, Meta's winning ads, 30-day return, lead the library and every new ad's references, and the book downloads as a PDF, also in the kit,
696b10b - Studio layout: in a top or bottom band the proof badge and the button share one row, so the words stop short of the product, Nutrova,
41d9c09 - Jam v2: every jam call loads the brand pack first, so Studio never refuses the brand's own product right after a restart
79de7f4 - Studio layout: in a top or bottom band the proof badge and the button share one row, so the words stop short of the product, Nutrova,
e73fd8b - Jam v2: every jam call loads the brand pack first, so Studio never refuses the brand's own product right after a restart
ed21cf2 - Studio casts for the brand's market: art direction knows where the brand sells, askMarket, and UGC films go through the same art direction as photos, cast, places, taste, not the style's look alone
27e7b7a - Jam v2: a finished Studio video or designed picture offers no Render it / retype chips
94debc4 - Studio casts for the brand's market: art direction knows where the brand sells, askMarket, and UGC films go through the same art direction as photos, cast, places, taste, not the style's look alone
e95d20a - Jam v2: a finished Studio video or designed picture offers no Render it / retype chips
434e9d2 - Brand Book cover never shows a search title, the read's h1/meta, falls back to the brand's own tagline from its evidence; one creative listed under several ad ids is one reference
e09050a - Studio designed pieces are read back before anyone sees them: same product, every printed word backed by our facts, a review style quotes a real review word for word; one fix-up retry, else an honest failure
9e3b451 - Studio designed pieces are read back before anyone sees them: same product, every printed word backed by our facts, a review style quotes a real review word for word; one fix-up retry, else an honest failure
a25e263 - Brand Book enrichment reads Instagram and TikTok lists at most 2 hours old: a day-old cached list carried expired signed picture links, 403 for Arata,; a run whose pictures all failed retries next day
5e7939c - Studio ads read like real ads: words go to the calm side measured on the photo, no panel, button and badge under the words, logo in the free side; a picture never ships without a headline; composer contrast + product-photo tiles
44f6e99 - Studio ads read like real ads: words go to the calm side measured on the photo, no panel, button and badge under the words, logo in the free side; a picture never ships without a headline; composer contrast + product-photo tiles
efc7f04 - Brand Book v2: every saved book is written again with the week's enrichment
182512e - Brew Studio: one composer for every image and video deliverable
89767b7 - Brew Studio: one composer for every image and video deliverable
f6d1734 - Brand Book enrichment: this week's Instagram posts and reels, with plays, pictures and top reel videos saved, TikToks and the words spoken in the top films; shared treg client, $0.50 cap a brand, saved once, weekly; a failed source stays an error
6f3fc60 - Access fixes: an outsider can't start a paid read of a brand it can't open, pointed to the demo stores, can't sign up for the plays emails; a jam guest gets back in without the link; the email log skips brands that don't exist
0d511a7 - Brand Book keeps itself current: a signature of what it is made from, ads, posts, films, products, kit, brief, rewrites it when anything changes, 6h floor, 14-day refresh,; no doubled full stops or repeated one-liner in brand.md and the makers' blocks
70e6012 - The check page is the main step after every brand read again
4b212ee - Batch cards open their N finished ads: v1's batch view is reached for real brands' public and team sets, the client's test matched only an old path, and a single package was made from the first picture before the batch check, old single-package jams open the batch too, the team set reads its private words; v2 opens one tab per finished ad, nothing made again
87fab94 - Access: starting a read opens nothing, only the brand's own email, an invite or SquareUp,; a starter on another email hears nothing about the brand; every email that opens a brand is recorded, GET /api/admin/visitors,
8f21262 - Brand Book lives inside What Brew learned, no rail icon,: a back link, the Learned tab stays lit, and a v2 jam's Brand Book button opens the same full book
d3d3a80 - Brand Book page in v1, bring-your-own import, one-click share and the free AI-ready kit
1418025 - Brand Book: the brand's whole profile, built from evidence and read by every maker
51bd412 - Read keeps what the brand publishes: every own ad poster, own top videos, carousels named, every Instagram picture and YouTube thumbnail saved, CDN links expire, product descriptions kept; offers/guarantee reader shared
5ba735e - Product profiles: each product read once by vision and kept, what it is, real colours, kit items, printed words, size, the cleanest reference photo,; the shoot anchors on that photo and names every kit item, the art director uses the facts, and a product with no usable photo is asked for before anything is spent. Higgsfield's 75 ad styles saved, data/higgsfield-styles.json,
9d9ebb0 - Team wall: the work-email button sits centred under the demo stores one
3b79920 - Connectors stay fresh: cadence by how fast each plays, a re-read when the team opens the brand, stale by cadence
9c3e241 - YouTube: when Google's API quota runs out, listening and the Films step read through treg for the rest of the day
597e957 - Higgsfield, all of it: the whole API catalog, 83 workflows with input schemas, tools/hf-catalog.mjs, one runner that fits every request to its schema, prices from Higgsfield's /estimate, or its published formula, and a job → best-offering table, product shot, ad concepts, type poster, brand graphic, people, image edit, product motion, shots from refs, transitions, UGC, extend, edit, restyle, motion copy,; video shots go to Kling 3.0 first
622b866 - Outsiders on a brand, Gmail or another domain, get one wall pointing to the demo stores, not an empty feed; AI answers stay with the team
8091a1d - Fact sheet: every connector is the truth, not only Shopify
db3d40c - Rivals: an enquiry brand's rivals are read by their offerings and written prices; rival prices that failed are read again on heal, once a day
5fb23fe - Higgsfield on: API keys from Secret Manager in the deploy; shoots go to Marketing Studio Flare first, 2K, kept a 3-item kit exact where Gemini didn't, ~$0.10, Gemini 3 Pro Image the fallback, quoted at the ceiling
b45b919 - Fact sheet: one connected truth per viewer that refreshes itself
fc4e0b0 - Rivals: a light, 30-second price read per rival, the stage timed out on Puma,; listen nudges inside the debounce are kept, not dropped
1c61301 - Jam v2 creative: the Brand Book steers every shoot: its own best posts ride as look references, after the product photos, copy nothing, and art direction follows who may be on camera, the brand's places and cast, and the taste it learned
1fbb0cf - Jam v2 creative: pills and the logo plate fit their content; headline space is real background, never a painted band, and the critic marks bands and paste-ups as not shot
152e7e9 - Needs you only when it waits on you: a reply in the studio chat answers a tag; an OK you asked of someone sits With teammate for you
7291382 - Jam: a draft built from templates because no AI writer is coming says so, never passed off as written work
3e3900b - Brief stays in step: every change stamps it so a teammate's open jam reloads it; stage edits go into the jam brief, Brief tab, in the background
46a5118 - Jam v2 creative: words over a shot get a CTA button and the proof badge under the headline, not floating over the picture,; the art director never describes the product's look
c9a5c4e - Listening starts once a brand's read is done, while its plays are written; ideas still wait for the plays
642e63f - Work board: Needs you is personal; a jam where a teammate tagged you and you have not replied since sits in your Needs you lane
f12f7aa - Brief follows the chat and the ad: a follow-up about the brief's facts edits the brief; a new ad version reloads it
65541f3 - Jam v2 creative engine: statics are shot around the real product, catalog photos as references, checked by a vision critic and set in real type; other sizes extend the same photo, priced,; the cut-out composite only when no shot keeps the product
f491b4f - Brief chat is context-driven: only a line that names the brief or sets one of its facts edits it, on either side
2ef2efd - Brief: select any part, or tap a section, and change it with AI; a chat line on the Brief side, or one setting a brief fact, edits the brief
ae87991 - Listening: a run stamped before the in-flight marker with no result is cut off; CLAUDE.md: every brand, every platform
90bc474 - Jam v2 @mention: the chat says Emailed only when the email really went out
9788e20 - Jam v2 test guide: restarts, the video budget and the costs seen on live
1326d63 - Jam: the brief starts writing when the jam opens; Send to ShopOS asks what's missing at once and keeps its spinner through repaints
f109e59 - Jam v2: a video render checks the day's video budget for every shot it still needs before spending anything; a job's error outlives a restart
f32b279 - Send PDF: Open in Gmail or a Mail / Outlook draft, with a proper brief email
cfc5424 - Studio header: Assign and the faces become one people pill, faces, then add-person; opens Assign,
c4fc0bc - Brief mode makes the PDF and files ready while the brief is read, so Send opens the email at once
082de90 - Jam v2: an approved shot change a restart cuts off resumes on the same video when the jam is next opened
100a6f3 - Test: the font helper's contract after the merge
601f97a - AI questions: data-backed set at read time, asked from the brand's market and language, both brand names, enquiry phrasing; listening survives deploys; any platform's sitemaps and names
790c3c9 - Team brief: rule lines that restate the final words are dropped, TB_V 3,
6a2374e - Jam v2 Change this shot: only the shot's background is edited and the real cut-out is placed again, the image model redrew the frame with other catalog products,; renders keep each shot's background for this
fd755cb
2026-10-22
- Downstream for any platform: daily checks and catalog watch read product pages, honest counts and scorecard, enquiry brands, platform-aware connectors, browser UA on photo fetches, CDN resizing
d2ef727 - Reader: learn product URLs on any platform, enquiry-led brands, true review detection, size-picking walk, base brand name, one slug
bbbf81d - Team brief: the evidence follows Why, the rules never repeat the copy, Done when is the hand-back, TB_V 2 rewrites saved ones,
0fb117b - Jam v2 video: a resumed render's cost counts the shots paid before the restart
7474bcd - Brief mode: the team brief on the stage, editable, as a PDF or an email draft
7297a0a - Read steps: a brand step saved with the font's Google Fonts weights shows the family only
b48b094 - Brand kit: the font is its family name only, and a long name never runs out of the card
90661de - Jam v2: a paid render, or a free every-product run, a restart cut off resumes when the jam is next opened, at the price already approved, with the shots already made kept; otherwise the board keeps a note to press it again
b14abd8 - Remind the team by email when a new brand's plays wait on the first feed open
61c8d95 - Jam brief cleanup also knows the fact sheet's own sections, so a brief loaded outside a prompt is cleaned
2bab379 - Jam brief: the brand fact sheet never ends up inside a jam's brief
043bdaa - Jam v2: a job a restart cuts off says so instead of vanishing; a render keeps each paid shot on the board and an interrupted one picks them up again free
5a2fa48 - A new brand's plays start on the first open of its feed after onboarding
aed0f69 - Jam: comment on the brief and AI fixes it; screenshots in the studio chat
ed8cdfb - Jam v2 video: each shot's scene is drawn from an empty-setting rewrite of its line, no AI-drawn products,; the product sits above the caption bar
499462b - Jam v2 video: scenes show only the place, an image model asked for the shot's products drew its own, shot motion adds nothing new, a failed cut-out is never kept on the storyboard, the end logo sits on the still overlay so a camera move can't crop it
8c37f7f - Video: an overloaded Veo is not read as a content filter, no plain-motion rewrite,; a jam render retries the quoted fast model instead of moving to the dearer one; a re-made shot keeps the voiceover
bef2297 - Jam v2 video: the price shown includes the voice and the music, it is the ceiling a render may spend,; the line says music, not the partner's name
5ae7361 - Jam v2 Every product: a renamed headline leaves the line under it as just the price; test guide covers team, Slack, Ask Brew, Drop, Memory, every product, recipes, pick a day and video
5fcfbc2 - Jam v2 Every product: a line with the source product's price or name becomes each product's own name and catalog price, no Bestie Box price on the slippers,; a product-specific badge is hidden, store-wide shipping stays
8e93070 - Jam v2: cut-outs run in a worker thread, one at a time, a batch took the site down with 429s,; parallel cut-outs no longer fail while the library loads; Every product retries remake every product, free, not a paid carousel; an open jam picks up brief status and Slack replies every 15 s
9c88f6f - Jam v2 Pick a day: date-only posts give best days, never a made-up midnight hour, times in the brand's own zone; Slack channel shows one #
71bd286 - Jam v2: the free cut-out works on live, the library refused bare bytes as an unknown format, so every product photo failed,
21fa915 - Budget card judges only running campaigns past Meta's learning phase, 14 days, and says when windows differ; tired ads are running ones; tools/private-cleanup.mjs plays old team-card pages and rewrites out of shared files
4e0b186 - Connector card: the account name keeps room to be read; the buttons wrap below it on a narrow card
cf243e5 - A card from a real connected account is never tagged Dummy: only simulated accounts' cards, demo rows and a pack's sample cards are
5c654a6 - Disconnect hides only the plays that account's area feeds, Meta: the paid plays, not every move written while it was on
1d7d994 - test: pin the new demo-sync scans
2afacee - demo-sync: the canary skips scraped rival pages, their prices aren't ours, and checks campaigns by bare name; local scans instead of one cat per file
7f45184 - Cards: rules cards get "Set up the rules", no button invents an asset, and counts follow today's facts
ec181c6 - Meta connector truth + the team's numbers stay with the team, Arata post-connect QA,
6e4b5e4 - Jam v2 complete: team, Slack, Ask Brew, Drop, Memory, upload, every product, recipes, price alerts, pick a day, real video
4152ff0 - Shopify own app: popup matches the Dev Dashboard form, scopes on the create page, sign in as the store's owner, and Shopify's wrong-organization and wrong-key errors come back in plain words
56a154c - Shopify own-app guide: give the App URL to paste and say to untick Embed; Shopify won't create the app without a URL
fd9e39d - Jam v2 test guide: what works and how to test each part
b6f4f6d - Jam v2 exhaustive QA: real-AI safety, budgets, no blanked Brand Book, Finish with approvals, Back and reload
57f4c05 - Jam storage never writes over a list it couldn't read; v2 canvas parts reachable by keyboard; word changes say free
4b5714a - Jam v2 QA fixes: brief links work on live, scenes can't carry script, partners see the picture
397269f - Jam v2 behind ?v=2: chat + selectable canvas for every feed button
1e41a82
2026-10-21
- Onboarding sounds: a product pick selects, Not a rival / a product's x sweeps, Build my feed sends
99b832b - Shopify review doc: submitted 21 Oct, screencast link, what to do after approval
ecb98c1 - shop/redact after a reinstall leaves the new Shopify connection alone: Shopify sends it 48 hours after an uninstall even when the store installed Brew again since
91d955b - Shopify listing: app icon, screenshots and feature image; review doc says where the submission stands
b730ec5 - One version: remove ?ui=2, ?v=2, ?stack=1 and ?split=0 and everything behind them
9311ea0 - Sounds, tested tap by tap: every cue audible on a phone or laptop speaker, levelled, and the silent moments wired
85de6bb - Inside the Shopify admin, the "Opening Brew…" hand-off finishes: the embed script runs in , so it now looks for the box once the page is parsed, it looked before the body existed and the page stayed on Opening Brew…,
495a857 - Research test stays off the network: a treg that can't answer, so the news read fails as the test needs wherever treg has credit
fdf9a07 - Sounds: designed earshot cues replace the synth beeps, and the silent moments get one
d510d64 - YouTube clip downloads on 2 GB with 240s, 1 GB stalled the downloader,; timeouts and gateway errors retry next tick
91186d4 - YouTube clip downloads run one at a time on 1 GB, Apify caps all runs' memory at once,; a memory-limit failure retries next tick
b84eeba - Viral clip heal: a clip that failed for want of APIFY_TOKEN is retried as soon as the key is set, not a day later
84923c5 - YouTube viral clips through an Apify downloader: treg's YouTube stream URLs are locked to the provider's IP
2f178a1 - Audience-interest viral videos take every other seat in the feed, they score below category hits and never surfaced,
fce87f6 - Viral finder also searches what the brand's buyers watch beyond its category, at the same spend
d56a267 - Send brief for Make our version carries the reference: watch link, saved clip and Brew's read of how it's made; card source link fixed; Copy the caption beside a final
ab988c4 - Make the final stays locked from the tap until the final lands or fails; the bell says when it's ready
a2ac653 - Reel beat list shows 'On screen:' and 'Sound:' labels instead of the script's raw tags
70bfafb - A reel's first frame uses the product its script names over an auto-picked photo; the team's own pick still wins
fca05d4 - Reels open on the product the script names, not the lane photo,; viral reads pick the catalog product that fits the video and the card carries it
65a41ba - Draft clips never speak or show the script's tags: voiceover says beat 1's words, its on-screen words go over the clip, the phone preview shows clean text; ', Sound effect: …,' read as a sound
f670cba - A Sloosh final picked up after a restart says it is still being made, and its wait clears when it lands, no stuck 'Making the final',
5d7e0d9 - Video finals: on-screen spelling read back and checked, text-check.js,; the jam says what is wrong and where, never remakes by itself; free re-check route
c872e56 - GA4 proof: the myshopify redirect check goes with the reader's browser user agent, Shopify answers 429 to Node's own,
e50db96 - Finals: a brand's 'No text' avoid line never cancels on-screen words that were asked for
f1875ed - GA4 proof: a store's other myshopify address counts when Shopify redirects it to the brand's site, Cozy's stream is cozysnugglet.myshopify.com, the store is hnhdsm-mc,
16f1779 - Reel finals: a script line with a sound and on-screen words keeps both
caf2cfe - Reel finals take their pictures from the beats, never an image brief left from an earlier take
8fdcf4c - Google consent lists only Brew's scopes: drop include_granted_scopes, an old cloud-platform grant showed on the screen and failed Google's scope review,
1afb9ba - Sloosh sign-in server read from Sloosh's metadata, it moved to clerk.sloosh.ai on 21 Oct; every token from the old one was refused,
923a083 - Reel finals: on-screen lines shown as exact words, sounds as sounds; a viral clip gives only its timing, new room, clothes, props,; the writer sets it somewhere else
68cbd21 - Finals: a reel fits the brand's own credit share too, 720p, then shorter,; over the share says what it costs and what is left, not 'used up'
4d28ad9 - Viral cards keep Make our version, fitCta, saved cards heal,; the writer is told which words are the creator's
044ff03 - Viral YouTube: one search a read, quota, Gemini reads the Short by its URL, files 403, its own player in References; a failed source retries tomorrow
1447bd0
2026-10-20
- Research refresh route can run viral on request
2b98d7d - Viral: a video cross-posted on two platforms is one pick; search terms deduped ignoring case
9295dbc - Tests: viral reference cards, the clip as a Sloosh video reference, labels
8550590 - Viral: card label, reads into play 60's video signals, SCOPE
8fbe458 - Viral cards, the viral read in every jam writer, View references in every make-our-version jam, the viral clip as a Sloosh video reference
ec3a951 - Viral finder: TikTok, Reels and Shorts far above their creator's usual views, gated for every brand, read weekly into research
9c2abc0 - Weekly video read: accept listening items' link and prefixed ids, every read was failing, re-read once for every brand
00817b1 - Brew loader alignment: in the icon's exact place, its own tag, buttons never resize
358a592 - The Brew loader on every wait: the b mark fills like a cup and steams
a528461 - Send brief: the button spins, Sending… / Copying…, until the brief is out, in the studio and its ship menu
a4b49a3 - PDF_V 9: tidied plays and readable PDF names redraw
b98f73f - QA P2s: one Redo it, no second redo chip, Copy link / Send to… instead of three Shares; no em dashes in drafts or placeholders; {{1}} reads 'first name'; popovers close on Escape and route change; phone studio header, greeting tiles and health ring; no zero rows or tab counts; readable amber badge; budget note on the first make, not a 12s overlay; no empty Lessons, topics not listed twice; no broken-image flash; one Send brief wording; ad note without the caption's hook; connect toast says when connecting is off; plays fold per group with a line each; jam redo names whole; offline packages without header rows, doubled brand, team notes or chip text; a post with no thread copies the post; the fact check always names its number; plays tidy at load, one date stamp, no machine to-confirm lines, empty blocks, zero/repeated covers, doubled units,; move numbers once on cards and PDF names; plain words in plan headings and points; no vendor names on Build
5e99fab - Reels: Veo draws no words, fills 9:16, keeps one person
a90307c - Moves and PDFs: Brew drafts, the brand's team ships. Saved plays read the brand's roles instead of Brew people, 'your growth analyst', 'your team',; the PDF ending and footer say so; new plays are written that way; PDF_V 7 redraws every PDF
2307f85 - outreach email offline template: no 'the product' placeholder
8f93a1c - QA feed #9 #14, plays #15: same-ask groups the same ask worded another way; Title Case with lower-case small words is sentence cased, names kept,; SEO title tails and '.' go
1180576 - QA feed #15, plays USD: a brand with no country gets the one its own words name, never a market to confirm,; no currency means no ₹; SEO tools' dollars read in the brand's currency, healed in saved plays
30d9399 - QA plays: claims in table cells, captions, gives and live marked as the team's call; title/cover claims and banned words go to To confirm; the index is rebuilt from today's plays, no phantom rows, one count, whole-word labels,; private plays and PDFs get the page's load fixes; hero lines in plain words
b90160a - svg logo: keep the symbol's viewBox
35834a9 - QA: a header logo saved as an empty svg sprite reference is inlined from the page or skipped; a saved one is served as the brand's site icon
c5d4a33 - QA J-09, J-07, J-17: pitches open as one outreach email, to, company, subject, body; no Klaviyo, review requests as the review ask; the title's job beats a loose button or format; jam checks drop 'Names a number', unconnectable tools and the false 'nothing ships' failure
919b68f - Reels and image ads: a first draft that already has its headline set in the picture never gets a second headline laid over it, draftView.wordsIn → pkg.wordsIn; saved jams heal on open,
a8d326e - Ops: one-off rewrite of named plays, OPS_REWRITE=
:<n,n>;..., run once per move via a marker, queued while a build runs 5139da4 - QA plays: a price 50x off in one day is a unit slip, never a change; 'Out of date' reasons today's store contradicts are hidden; unbacked or wordy cover stats give way to the summary
025b724 - QA UI: the proof sheet shows a number once whatever its format, and never says 'no source found' for a number a sourced row shows
9c6f498 - QA J-08: a card that names Reddit, Quora, LinkedIn, X, a group or Pinterest for a post opens as that platform's post, with Copy and open, never an Instagram caption
e34a8e7 - QA: Heard cards say counts under 20 mentions, '3 of 4 negative', 'under 1%' never '0%', and skip themes named for what they are, 'complaint', 'feedback',
f412a39 - QA: no ', to confirm,' planning marks on card faces; paise dropped from prices of 100 or more and 'Rs' reads ₹; 'retargeting ads' and schema type words swap cleanly; 'live 1 day'
d3c05f1 - QA: a reading taken again on another day and a rival's repeated ad show once; cards that only repeat a better card's ask are no longer served at the end of the feed
eb4b98c - QA: the team's private statics batch heals like the shared one, Open the batch, download for the team; never queued or run by Brew,
6587dd8 - QA: trend stories on empty data never become cards; idea cards read cleanly, own channel named, no thread keys, 'Backed by' a reason, post time as written and ahead of today, titles without internal prefixes,
f3781c7 - QA: move sources and evidence written as bare hosts link with https; text that is no address is no link
8df7c34 - QA: a brand with no known market gets no country's holidays, never the US calendar by default
bad3ed9 - QA UI: health rows never print /undefined, connected readings say 'from your account', zero readings stay quiet,; markdown marks read as plain words everywhere
91fe53c - QA UI: Open the jam always opens it, joins a jam this viewer doesn't hold yet,; a post being planned keeps Copy and open
2c541c1 - QA UI: the Moves tab no longer calls the missing weekly-history route, 404 on every visit,
665f062 - QA J-11: every knob makes one new take, never several versions at once, page and server,
f7824fa - QA J-12: numbers on the store's own product pages count as backed
042b995 - QA J-13/J-10: X threads on one line split into posts, stage and Copy and open share one splitter,; our version of a rival's video ad is a Meta video ad
700771a - QA J-06/J-14: listening cards open on ads or the product page, never a pause; ad money only when the words ask; navigation cards take the title's job; sold-out ad cards pause; build cards open the plays
7f158e7 - QA J-15: the jam's main button says what it does: the card's label only when it makes the thing, else 'Make the draft', saved plans healed on the page,
32b5151 - QA J-02/04/05: Fix it with AI fixes instead of answering; banned check skips quotes and denials; Reads wrong skips quotes, store acronyms, currency codes, brand words, Title Case; pet and food brands get their own banned list, healed at load,
5b13043 - QA: test and duplicate listings never become card photos, draft or lane products, healed at load,; a card that names no product keeps the lane photo, never a random product
7a9f8a3 - QA: festival plans after their festival are marked Ended and their cards leave the feed; festival countdowns count from today
532412d - QA: PDF covers name the move once, Move 05 / Weekly play 4 / Timely move, never 'OF 50'; PDF_V 6 redraws saved PDFs
a7555cd - QA: a move missing any of its six sections is asked for again and never saved half-written
3e885cf - QA J-01: a brew or told card in the catalog sector no longer crashes the jam, sector actions use the sector's agent; unknown jobs dropped,
acb0d9d - QA: buttons follow the card: one-off emails and messages draft, flows approve, other-format and off-topic buttons give way; 'Pause the ads for these'; banned-word regex flags
31ae5ea - QA: card headers for ideas, build news, first-read, live and own-ad cards; a failed banned-word check names the word
953042a - shopify.app.toml: the new public app Brew, SquareUp partner org, 437593374721, and webhooks API 2026-10
365cd6f - A Reddit reply shows as a reply on the jam stage, even when an AI fix gave it a title
37ff9ec - Copy and open: a reply stays a reply after an AI fix
898c32a - Copy and open: a ready community post copies itself and opens the place to post it
a1fae3b - Card headers say where a card came from, not which team it was routed to
936c90f - PDFs open for the brand's team inside the Shopify admin: a PDF link, Open the PDF, the move's PDF icon, Download the PDF, named PDFs, carries a fresh session token as it is pressed, right-clicked or middle-clicked, so teamRead sees the staff member instead of nobody; a token older than 45 s is asked for again in a tab opened inside the tap. Outside the admin nothing changes
270a037 - Only the plays run on a higher model: GEMINI_MOVES_MODEL, Pro, writes plays, the brief, ideas and everything else run on Gemini Flash
bea8e04 - A store not open yet is its team's only: a brand read from its Shopify admin while the storefront is behind the password page shows its page, seed, facts, PDFs, status, cards and jams to its members and Brew's own people; everyone else gets a plain "This store isn't open yet" page, never a 404, never demo mode, until a heal finds it open
cc29191 - Live on Gemini, Pro plays, Flash rest, while the Anthropic key has no credit
b2b07ab - One card per ask, tighter: channel and audience words, carousel, WhatsApp, buyers, and pronouns never make two cards one ask; checked on Arata's live seed, 11 pack-price cards, one shown, and Cozy
16fe2fd - A finished build's tab says it is done: the plays page Build tab showed only its step chips after a build, the activity log lives in memory, so a restart empties it, and looked half loaded. It now says all plays are written, with links to the plays and Updates, and the PDF step reads "PDFs on download", done with the plays, instead of a grey "PDFs · 0", since PDFs are made when someone downloads one.
3c0dba0 - One card per ask: cards from different plays that ask for the same thing show once
c2539a4 - A team's lift or step back holds only while the card still says what it said: a rewritten move reuses card ids, so old learnings no longer bury or lift new cards nobody judged
cfec125 - A restart between a rewritten move and its cards no longer leaves the old move's cards: cardsDue in updates.json, written at boot, healCards,
86e2678 - A move whose spec is gone, a festival move after its window, is left as it is instead of crashing the whole rewrite; the fresh reload finishes when only those remain
ed34f45 - The embedded home loads: /shopify-home.js and /shopify-embed.js are public files, not Shopify app routes, the app claimed every /shopify* path and answered them 404, so the home inside the admin never opened,
6f64257 - A store behind Shopify's password page is read from its Admin API, so a Shopify reviewer's development store gets a real read, plays and feed
18c9cab - Proof sheet: a market pulse line backs a plain count only when the card's move used it; a specific number also needs the rival or subject words on the card
4dce4da - Moves keep the team's guardrails; the proof sheet finds rival search numbers; the drop sheet numbers its lines
4fe0811 - Shopify app review: the submission pack, dashboard steps, protected data answers, listing, screencast, reviewer notes, and the dev-store password gap
a5ea07f - Brew inside the Shopify admin, ready for Shopify's app review
de3dcdc - Proof sheet: what the team told Brew is proof; the label only on cards that rest on it; brand-wide words are not relevance
29e1225 - Fresh reload rewrites every playbook move, not only 1-50,; a first connect writes the plays its accounts touch first, so the weekly pot never leaves those for next week
983b938 - Told cards read cleanly: a long row value stacks under its label, the header says From your team once, file names shown plainly
05eb59d - Production setup: Brew live runs on Claude, Anthropic key, again, Gemini Pro as the deep fallback
c19fc0d - Learnings: a minimum by length and numbers kept in digits
bb91eae - Listening beyond the brand, for every brand: communities pass a gate, about the category, in the market, not deals, swaps, replicas, general chat or a city's own sub, big enough, and the category's main communities are found through Reddit's search; rival complaints and category questions become feed cards, real complaint themes, three conversations, quotes in the market's language, with a first-screen seat; the ideas writer gets trends, on-category rising searches, industry and rival news, rivals' long-running ads, the market pulse and the rival/category listening as cited evidence
1f96f85 - drop/read: the read cache uses the brand-file store, GP,; a cache that fails is only a miss
b64aaa0 - Drops of several long files fit whole: 600k characters a drop, 200k a file; a file read once is not read or paid again
e045e44 - Community picks pass one gate for every brand: replies go to Reddit threads active in the last 14 days, in the brand's market, no r/Nepal_Skincare for an Indian brand, no Romanian threads for an English market, open, that ask something or name the brand; reply counts are Reddit's own, PullPush floor, then the live count through treg, never "0" when unknown; Quora answers go to real question pages listening or one web search found, never a search link; a reply has to be about what its thread asked. Saved ideas and heard cards heal at load, community-gate.js,
4103dee - PDF reads copy, never summarise; several dropped files are read one by one
23044f0 - A workspace copy that lost its ratio reads 4:5 again, "4:one static" was saved before the ratio fix, and margin notes speak plainly, "index all 7 sitemaps",
c0e2bc2 - Learnings read the whole plan: every section, quotes checked by their runs of words and numbers
cc3699c - Pages load as fast as before: the claims check normalises a brand's own words once per text, a brand page took 12-50 s when every move block and card lower-cased the whole catalog again,
5c5a556 - A final collected after a restart lands as the team, a member context with no email, so a staff-made jam's change is found
9b67313
2026-10-19
- Community cards get a first-screen seat: a reply or post in a community from what listening heard, a heard thread, a Reddit or Quora idea, sits at 3; the picture post keeps 7 and what people talk about plays to 9. Scored alone they sat near 100, under every move
5cb8176 - Learnings take any plan as strategy and the drop sheet is rebuilt
ce795d6 - A final collected after a restart reaches its card: finalDone waits for the team's jams to load, and a done run that found no card is tried again on the next boot, three times at most,
b033520 - Merge remote-tracking branch 'origin/main' into final-sweep
cf1814d - A source line drops a plan's numbering with several numbers too, Move 28 · Phase 1 and 2: …,
6449622 - Saved finals are found after a restart: listFiles lists a folder with its trailing slash, every name came back as /x.json and was dropped, so reconcileAll never collected a paid Sloosh run left open by a deploy,
0c1ed55 - Merge origin/main into the final QA pass
b00aec6 - Merge the feed fixes of the final QA pass
0a7249e - Margin note eyebrows stay in the note's own lowercase, "weekly play 6", and a move's source line drops its internal Decision 1: numbering like Loop and Phase
7c48e2d - Merge branch 'final-access' into final-sweep
c61ba24 - A market left "To confirm" stays unknown: no US, USD, Black Friday or New York time is saved for it; cards, prompts and watchers say "your market" and skip the market-only reads, city weather, TikTok Shop,; saved settings with the old US default heal on load, and the to-confirm self-heal clears the settings as well as the profile
53d9580 - The three-new-brands-a-day limit holds across deploys: it counts each brand's saved start, private/created.json, not only what this server remembers
6aeaedd - Test follows the build card's source line heal, the old team name reads the agreed one before move labels,
2a7d709 - Demo visitors no longer see a Sign out that did nothing; Start again covers it
76bdb1c - Stores not on Shopify no longer show a connector called "Custom": the Tools step, the cards, "Connect Shopify to see this", and the connect sheet all say Shopify, what connecting does; saved seeds heal on load
9cf4da1 - "Is this right?" is a setup step like the others: a refresh reopens the check page instead of replaying the whole read, and a quiet Skip for now, Skip to my feed once set up, sits top right
2beb86e - "Brew starts writing at
- One card count in setup: the preview shows the feed's real total as "N cards", was "8 new ideas" next to "44 cards in your feed",; with no cards yet the ready card says they are still being written and that each lands as its move is done, with no 0 tiles
6ef3563 - A store that could not be read stops there: the header says "We couldn’t read …" instead of "Reading …", Skip ahead is gone, and no skip, v1 or v2, leads into an empty "Your feed is ready… 0 cards"
fd51785 - A read started from a capitalised link keeps the link in lower case on the brand's status, https://arata.in/…,
2e72cd4 - brew.joinsquareup.com/index.html opens the landing instead of a plain "no"; an address typed in capitals, ARATA.IN, WWW.Footshop.COM, https://Arata.In/…, starts the read like the landing says it will; a dropped network on the landing says "That address did not open" instead of TypeError: Failed to fetch
6eecbc9 - The Work board says Made for you on our own ads, like the feed, and the studio names a version the way the feed labels its card, Made for you, From your ads, instead of from "card title"
0e80efc - The Work board says Made for you on our own ads, like the feed, and the studio names a version the way the feed labels its card, Made for you, From your ads, instead of from "card title"
afddcf7 - AI-answers gap cards keep the question's closing quote: a long question is shortened inside its quotes instead of losing the end of the title
08ac2d4 - Every health row says when it was checked: Creative rows show the day the ads were read and AI-answers rows the day of the check, like Storefront's
3a3f258 - Jam emails name the jam by its card's title, as the jam shows it, an assign email said a draft's headline,; the Assign menu opens leftward so it stays inside the side pane
90d6794 - Demo: right after Looks right, the feed's plays line and the banner count the same, 0 of 64, never All 64 written beside it,: the feed reads the tour session as it was just saved
0b7d1b3 - One name for the team: "the ShopOS team, Brew's build crew" replaces "Brew deployment team" on the build card, the plays index and saved move docs, and says who they are in the briefs popover, the hand-off memo and the jam's needs-a-person line
029785a - Trend stories only show a search chart when there is one: an AI-written trend slide with no search series, "We currently have 0 live Meta ads" under Search interest, is gone; festival countdowns and rising searches stay
2d48952 - News stories say the right thing for the brand: the headline decides, so Google Ads and Meta ads news says how the brand's ads can run, with Start the tests, a stake or buyout reads as a bigger player moving in, and neither gets the rival-launch line
c4226b6 - Studio, final QA pass: claims are checked wherever shoppers read, reel scripts, remake scripts and slides; first drafts and jam drafts drop an invented code, guarantee or timed result and never set a flagged headline on the picture; saved draft captions heal; a paid final waits until Fix this first is done; saved plays and their PDFs mark such a claim Proposed (team decides,). A team static opens on the product in its photo, Draft the listing opens a marketplace listing or the card's own format, Add photos uses only that product's photos, an offline page draft never lists team steps as benefits, every draft button says Free draft, plans say Review it on the stage
4e2c6b7 - With Storefront hidden, jam replies on catalog cards are signed Catalog manager instead of Storefront manager, in new replies, saved ones and the app
3e8ab7f - Buttons say what the card does: Make our version only on cards built on a rival's ad, an email or our own ad gets its own button, Draft the listing only on marketplace cards, a video card with nothing made yet says Make the video instead of Queue the ads, and the demo's low-star card says Draft the replies and its thin-photos card Add the photos, saved cards heal,
14c20fa - Plain words with no stutter: "Add Product schema structured data" reads "Add search-friendly product info", once, no stray "structured", meta.json, collections.json and rich snippets in everyday words, "Page section" reads "Page" in draft names and jam plans, "913 SKU" reads "913 products", and the proof sheet's lead line, reasons and How Brew worked it out are plain too
ccf92ac - Margin notes never carry a stale count: each note is checked against its card as it reads now, All 65 written no longer says only 1 of 52 done, and build and live-account cards get no note
29e1a80 - Move numbers read like the rest: timely plays say "Timely move" instead of "Move 966" beside Move 01, 65, a margin note says "weekly play 6" instead of "MOVE 1006", and the build log names new cards by the same label
7e1332b - Asking for the evidence in a jam, "what's the evidence for this?", "show me the proof", "evidence for the price", answers with the card's own proof, the same lines its shield shows, in the jam room, the card chat and the studio; it never makes a new version, goes to the team or lands in the brief as a note
969db72 - Assigning a jam is said in the chat as a tag from whoever assigned it, "@Sai this one's yours." / "@Sai can you OK v2?", so the chat, its Slack thread and the email tell the same story; the tag's email is the assign email, never a second one; you see your own @name highlighted too
4853cec - The copy check knows the store's names, brand and product titles, as written, instead of every word the store uses: ARATA, USB or a list of products is theirs, a shouted NOT is still flagged; cleanDraftClaims drops every unbacked claim from a draft made with nobody watching
17c8471 - Buttons match the card: Shift budget only on cards about ad money, a crawl-budget card no longer gets it, a pause-on-sold-out card says Pause what points there, a fix card, tracking, links, checkout, keeps no asset its words never mention, and Fix the markup is Add the search info, studio actions in plain words; saved cards and jams heal,
a732bb2 - Plain words reach every line a person reads: card fact rows, SKUs, sitemaps, schema, headless, the asset line, meta description, H1, markup, the move name under a card, no Loop 3 / Pillar 2 / Phase 1, draft and jam names; a 4:5 asset line no longer reads 4:one static
725b9bb - The copy check never flags the brand's own words: a real product name that repeats a word, Onion Hair Oil with Onion Oil, or a store banner in capitals reads right; only a word twice in a row or a doubled name word the writer made up is flagged
dda8a13 - Drop anything here: files become brand learnings, brief, memory, plays, feed,; PDFs, Word, PowerPoint, Excel and photos read; prefs read as more/less; told label on every learned card
db80d4e - Assign menu: each person's name sits over its status line, no more wrapping beside the avatar,; the Give it to / Ask for OK toggle stays on one line
84d6247 - A studio reel's final is 9:16 like its draft and first frame, a 4:5 post format was snapped to 3:4 and cropped the opening frame,
0e35c5a - A reel still over the day's limit at 720p is made shorter to fit, every beat kept, never under 6 s, before it goes to Veo; the product a reel's script names labels the card's own photo
3e072af - Finals: every Sloosh quote attempt kept for the ops page, ?final=1 takes seconds,; the product is named from its photo, a ?v= query no longer turns the card's title into its name,; planning notes, Measure:, Goal:, never reach a picture brief
c0125c2 - Hotfix: a workspace loads with its Sets and Maps whatever shape the file holds, reset-jams.sh had blanked acted to {} and every Arata feed threw "t.acted is not iterable",; the reset tool now writes a tagged empty Set
20021f6 - Finals re-read a reused Sloosh asset's link with get_asset, free, instead of the saved one; an asset Sloosh lost is imported again
b4b69c3 - Emails, links and domains keep their name: the ShopOS rename no longer turns sai@shopos.ai into sai@brew.ai
6071f87 - Ops: ?final=1 runs finals.quote on a studio-shaped reel and image, live fit, refs, start frame, 720p retry,; free
8c6275f - The stock cards' buttons use the new names, Pause what points there, Restart what was paused, and the writer's button list has only Publish the campaign; saved cards keep healing through the rename map
df20d31 - The website field offers "Use name.com" only for a name of a word or two; a sentence gets "That doesn't look like a website"
bba5f06 - A topic button stays on a card with no words to judge it by, and the copy checks follow Another take's Free draft label
da6a93a - On a phone the jam's ship bar stacks in one column and never runs off the screen: the steps sit above, the buttons share the row, and Redo it keeps its Free draft note in the tooltip
49bb230 - A card whose asset is a landing page opens on a landing page draft: a hero with one button, three benefit blocks with the brand's product photos and a real review quote when the read has one, made free from the pack
3e821be - The ShopOS team is named the same way everywhere a brief is sent to them: the ShopOS team, Brew's build crew
1ca565d - A sent brief says when it went, Sent 4:12 pm, beside its ticket and status, and the share sheet's WhatsApp button opens the same WhatsApp isn't connected sheet as the jam, never wa.me unchecked
23237e1 - Change an ad's headline in one step: click it on the preview, type, Enter saves a new version, Esc puts it back,
aa18ecb - Every draft button says Free draft before it runs, the jam's make button, Make the video with how long it takes, Redo it, Fix it, Another take, the chips,; only the final shows credits
b8f9032 - Add photos never ends in a written shot list: where no photo can be made, demo, AI offline, the listing gets the store's own product photos, tagged Dummy, and with none the shots stay as the Photo brief
0fd751a - The studio opens quieter: two chips and More, the mic that says Talk instead of typing, the box, and the case's plan folded under one line
2fe28c2 - Every ad says whose it is: a rival's ad reads Seen on
, our version drawn on it reads Our version of 's ad in the feed, studio and Work board, and our own ads read Made for you 8787029 - Card buttons say what they do: the out-of-stock card pauses what points there, a topic button like Fix tracking stays only on a card about it, Publish the campaign is sentence case, and a video-ad card's button makes the video; saved cards and jams heal
ca462c8 - A reel's script never runs over itself in the phone: the hook and caption are clamped, the phone keeps its shape with no photo, and the long Video to add note sits under the phone
e6128e8 - The studio's status follows the job that is really running: no Ready or Draft beside a spinner, a skipped repaint keeps polling, and a take's picture clears its own spinner without clearing another's
2c06068 - Sloosh finals fit the live model: settings, sound, refs, start frame; the approved draft rides along; reels requote at 720p before Veo
a6bcd48 - The status-route test follows the plays count that never goes down within a build
e46e4fe - The end of the feed is a calm finish line: "You're done for today", what tomorrow morning brings, Find more as a quiet link, and a folded Yesterday list of the cards you saw or acted on the day before
572cd24 - Store health no longer jumps when PageSpeed fails: the last good reading stays with its date, each row says when it was checked, and a ring whose score changed says what changed
9135309 - Weekly plays read "Weekly play 11", badge W11, everywhere a person sees a move number, never "Move 1011", from one shared label; counts of SKUs and product pages read plural
ccd26da - Counts read one source: the Need your yes tile is redrawn from its own list on every refresh, plays written never goes down within a build, and the demo's Your plays line follows the same replayed build as its Brewing card
79d533c - Every rival and news story ends on one "For
" line and one button, news can become an idea card, story rings with nothing to show are hidden, and trend slides name the brand's own market instead of India ca855d9 - Each AI-answers gap card says its own fix: the question, the rival named instead, the brand's page that fits, and one specific change, comparison, proof, ingredients or price FAQ, headline first on what the brand gets; saved gap cards heal
2920f30 - Catalog cards read product · issue · fix, one line each, best sellers first, and say by what, with one label everywhere and one stock-out card that names the products our ads point to; saved cards heal
f68584d - Storefront is hidden everywhere for V1, not only in the deck: its cards, its Store health row, its agent and its tag, ?storefront=1 still shows it all,
3ad3864 - Source lines, fact rows, the make chip and the campaign button speak plainly: "your product list" not products.json, "Store page" or "Product page" not Page section, "Publish the campaign" in sentence case
e5ae6e2 - Signals cards that rest on an account say so in one line with one Connect, and jam plans, cards and demo visitors never see GMC, webhook, products.json, JSON-LD, llms.txt or custom pixel
990a55c - Sloosh refusals keep every word of why, are logged, and the ops page runs free reel quotes
9501bc2 - The demo's floating Demo pill now sits beside the rail instead of over its Your account button, at every width that shows the rail
1d408a4 - A brand page loads faster: its seed and facts are no longer rebuilt on every load but reused until something is written to the pack, at most a minute, about 0.35 s to 0.01 s for a big pack locally
cbc2786 - Two starts of the same brand at once make one paid read: a second tab joins the run already starting on this instance, and a short-lived marker in the pack makes another instance join it instead of starting or resuming a second one
5127496 - Everyone's account menu, staff or not, signed in or not, now has Help, an email to us naming the brand, Privacy & terms, and Delete my data, a plain sheet that emails the request with the brand and your address, Dummy: the team deletes by hand,
b44b963 - The selling market is no longer picked from hreflang ties: EU currencies and domains and the site's own language count, hreflang shares one vote, rivals never count, and a close call is left "To confirm" on the check page, saved guesses heal to it, with nothing rewritten,
9126e73 - A store with no catalog Brew could read, or one not on Shopify, now says so in one plain line on the check page and the ready card, only when the read really ran: a failed read is never called empty, for saved reads too
8934d5f - "Brew starts writing at" no longer drifts later on every visit: the first open of the check page sets the time once per build, and a revisit never plays it
e1cc889 - A refresh in the middle of setup opens the same step again, role, focus, tools or team, saved per brand in this browser, instead of dropping back
b281173 - The Your feed is ready card always shows numbers: it counts the cards from the loaded feed, never 0 before it loads, the plays from the plan, never a blank, and names them the same way the feed does: cards in your feed, plays in your plan
1cf5087 - A store that can't be read no longer lights up the agents: only a step that found something wakes its agent, the rows say Nothing read, and the error says its reason once
f2f0aa1 - The landing field checks the address before a read starts: a bad address or any refusal, the daily limit included, stays under the field with its reason, a brand name gets one website guess to fill in, and the landing and check page say who may run Brew and that sign-in is Google only for now
49e3b28 - Unknown pages and API paths now get a real 404, a plain page with a link home, JSON for /api, and Brew has short preview Privacy and Terms pages linked from the landing and the demo landing
d846b9c - A picture that comes out washed yellow is pulled back toward its own product photo's colour, a warm product keeps its colour, on every image Brew makes
3abae8e - Line breaks are real and ₹ is never ‹ wherever words are written, jam and studio replies too, and saved workspaces and brand files heal both as they load
ec09114 - Drafts never invent a discount code, guarantee or timed result: the studio flags any the store doesn't say, PURE25, "takes exactly 7 days", and copy that reads wrong, shouting caps, "days a week", a doubled product word, for every brand; the writers' prompts carry the rule
b2b62a8 - Sloosh errors keep their whole reason, code, message, details, field, and a refused quote is logged with what was asked, model, refs, ratio, length,
961256c - tools/reset-jams.sh: reset every jam of one brand on live, stop marker, empty jams.json, strip workspace jam state, keeping everything else
afc7ddf - One, always, healed everywhere it is read; a Meta video ad is an ad; a final never shows a raw Sloosh error
d800123 - Hotfix: feed-service imports PLAN_V, the plan-v2 heal in workOut0 threw for any jam with a saved plan,
e87d9c2 - One, always, everywhere a person reads: no "three variations" loader, no option tabs or "Pick one" on old jams, no "Other options" in the brief; saved plans rebuild
af869c5 - Setup words box: three lines that grow, the placeholder never clips or scrolls, mic at its corner, product chips above it, and chip photos only when each product has its own
75246bd - Feed payload test allows the cards the feed keeps on purpose, open team jams, pins, saves,
8e988ab - Code a writer fences is code everywhere: the markup jam shows its JSON-LD as a code block, with no product photos
b242573 - One version, always: every make step leads with one, and Redo it makes the next take, never 3 options to pick from,
fa270a6 - v1 loaders like Make it yours: the chip or button that asked spins, the other chips go quiet, until the answer is in
6a85466 - The setup answers follow the person, not the browser: a new browser, a private window or a phone never asks them again
d312602 - Cut asset lines drop the dangling stop before … and catch lines cut at a space
99afa6f - Asset lines end on a whole word with …, saved ones were cut mid-word at 100 characters, and an AI answers count never wraps away from its name
4c44d01 - Jam tells the card's story: the starting draft, the first photo, the make button and the jam's name follow the card, for every card type
ab0fd3e - Card fact lines as one quiet stack: the asset line wraps, no grey box, no cut-off, and never repeats its format, the AI line is small, the source drops the code font
216518f - Move page: the agent face beside a feed card stays 30px, it stretched into a big purple bar,
55434bd - Merge remote-tracking branch 'origin/main' into v1-questions
ae93dc1 - v1 onboarding as the prototype: the read once, five full-screen questions while it carries on, then back to the read
338221e - A card that lists its ideas, More like what you liked, makes exactly those as the options, in order and named as the card names them; One more makes the idea still missing
80c8da7 - Make it yours shows what will ship, never a rival's ad; Another take answers at once; slow buttons show a loader
7430a6c - Options: a plan that promises 3 makes 3, the writer is asked again for any it left out, and One more adds an option tab beside the others
1a86443 - Options heal: an old "Video added" clip goes back to the version it was made for, the chat line names it, so the right option shows the video
3e7aa5f - Merge branch 'refs/heads/v1-answers-server' into v1-questions
00ccc70 - Merge remote-tracking branch 'origin/main' into v1-questions
92382be - v1 voice pick goes up with the workspace, tapi, as the /voice route needs
c6d59ab - v1 asks v2's questions during the read; Another take on every card; the health ring opens the AI answers sheet
8d96ce2 - Studio: pick one option, then draft → final on Sloosh → send, with one main button
3d64854 - Setup answers change the feed: channels and ad pace in the ranker, a whitelist for the answers, the team's voice pick in every draft prompt
ac1e136 - Connect sheets redesigned for every connector: solid sheet, header and buttons pinned with only the body scrolling, numbered step timeline, keys grouped in one panel, quiet read-only line, firmer scrim, bottom sheet on phones
27ce984 - AI answers sheet at one glance: the score as a big number and a dot per answer, the biggest gap, you against the brands AI names, and a question × AI tool grid with search demand bars
5773ce6 - AI answers ring from one check: score, rows, finding and rival panel all count the newest check's answers
93eb200 - AI answers sheet, simpler: the result in one sentence, each question as a row with its score, each AI tool on one line
b335d6f - AI answers card: on a tie for the last row, a rival the read already knows keeps it, Pilgrim on Arata,
db1fa4f - Cards say Brew saw only what Brew holds: writers get the brand's evidence kinds, one small rewording for cards that claim more, plain words never turn an idea into a sighting
fd71bf8 - AI answers card compares with the brands the answers name; a new brand's weekly check waits for its sourced questions
c63a7d9 - Move page weighted for the brand, drawn from the move itself; outdated plays refresh on their own within the week's pot
309e6fa - Proof proves the claim: the card's own review, no price or plan as proof, claims that need an account say so and ask to connect
f23e1a6 - Proof is the real evidence, never the move: customer voice and the pages Brew read; the move is only Brew's write-up
4dce7ef - AI answers: questions earned by real searches, one set everywhere, and a proof sheet with every AI's own answer
98a985b - Move page at one glance: Move NN · topic, the title, the one number, You get / In 30 days, one line each for trust and freshness
8fa74e8 - Proof sheet, simpler: one reason, each number once with its site, one link to the plan; prices never read "‹1,499"
8f27e3d - AI answers: "Named most often" says which answers it counts when they differ from the rival rows above
d726961 - AI answers show who they name most, beside the known rivals; the card line, card page and deck render again
25cbe3b - Signals says what it needs first, the steps and what you get; AI answers show where each rival stands
0381d7a - Store health: "Open the move" works again, its click listener had been merged inside toggleSave,
c935ff1 - Stories and Recap in plain words; the plain-words pass never keeps a half answer
9c5446c - Proof on every card, plain words on every card, and making buttons that make
eaeaac9 - Store health card says one finding and opens the move that fixes it; the asset line no longer breaks; v2 counts findings once
a1b5b05
2026-10-18
- v2: on narrow screens the read rail hides as v1's showcase does; the status line carries the read
3ecadb9 - v2 drawn in Brew's own design language: v1's onboarding shell, tiles, reading rail, feed card and liquid button
9eaf083 - v2 morning stack behind FEED_STACK: the day's top cards as the swipe stack before the feed, once a day per workspace
a50a1ed - v2 onboarding keeps the read stream open for 12 quiet seconds after ready, so a paced replay's late findings still land
6e4ff1f - v2 hero on a brand's own page, the demo tour, plays that brand's read instead of starting a new one
c28a45f - v2 "the morning": onboarding as the loading screen, a review stack, the gate and Make it yours, behind one flag
2998170 - A final with its words set in the picture shows them once: the studio stops laying the headline over it
ef1445d - on-connect test waits for the run's wrap-up instead of a fixed 400 ms, failed twice under the full suite in deploy,
d62629c - Sloosh finals: our version keeps the rival's composition, a final finished across a restart lands on its card, and staff see Sloosh's health
ee60ade - Rival ad reads save and pre-read again: the feed's
packsis the loaded-pack cache with no getJSON/put, so every read failed to save and the hourly pre-read failed for every brand, live log 17 Oct,; use the brand-file store, o.globalPacks, like jams, tuning and references doc97b65b
2026-10-17
- Reels fill the feed card: a 9:16 draft shows whole, centred over a blurred copy of itself in a full-width 4:5 frame
b96ff43 - Engagement and retention pass: a feed that leads with ready ads and feels new, drafts that hook, a jam that is the team's room, and a reason to come back
0d590f9 - Make our version: the read of the rival's ad is richer, saved, read ahead and shown to the team
0b2e8c2 - Make our version draws from the rival ad's written breakdown, never its picture
6d5ea80 - Make our version always remakes the reference, and video works: from the live audit of 17 Oct
c299ef3 - Saved briefs heal their "null" cells at load, the brief is the AI's system prompt for every jam, picture cap 400 a day, three brands used all 120 on 16 Oct, mostly background drafts, which would starve a client's jam, and the repo docs say what the code does: connectors are real, health is real, Make our version, the Signals sample is demo-only, Gemini is the default provider, the live bucket and the rollback rule.
05d3683 - Go-live fixes for the first design partner, from the final-run audit
9dfd681
2026-10-16
- deploy.sh: Pro, gemini-3.1-pro-preview, is the live site's default deep model now that the data is flushed; a deploy from any session keeps it, the one at 14:23 UTC had put Flash back,. The demo stays on Flash
8a18963 - Finals carry a provider, sloosh | gemini | dummy, and the Gemini fallback covers video too: a video final is Veo on a Gemini still, media.js makeVideo, counted in the video budget, with the draft's own motion prompt; the fallback quote names gemini-3-pro-image or veo-3.1-fast, skips the four-minute rule and the credits budget; the version reads "Final: made with Gemini, Sloosh not ready:
,", the sheet says Sloosh isn't available yet and its button reads Make it with Gemini; the Sloosh path is unchanged when the workspace can pay, tested both ways,. SCOPE.md. 580dc1c - The rewrite-pot tests ignore the shell's GEMINI_DEEP_MODEL: a Pro deploy sets it, the pot followed it, and the Flash numbers the tests pin failed twice tonight; the Pro case keeps its own explicit env
967302e - deploy.sh runs the suite once more before refusing, and names the failing tests: two sessions deploying at the same time tripped each other's port and temp-file tests twice tonight while the suite passed on its own
98642e7 - Sloosh on its real schemas, and Gemini until the workspace can pay. The OAuth token must name the MCP server, RFC 8707 resource on authorize and token; without it Sloosh answers 401 invalid_token,. tools/list read on 2026-10-16 and pinned in data/sloosh-tools.json, 41 tools,: ALIASES in sloosh-mcp.js now map Brew's words onto the real keys, modelConfig.modelName/aspectRatio/resolution/duration/generateAudio, uploadedAssets [{kind,id,url,type,role}], generationCount, quoteId + idempotencyKey + confirmed, operationId, spaceId + input, nodeId/runKey/expectedRerunCount, a top-level oneOf, get_asset, is flattened, and a closed schema drops what it has no key for. States read as Sloosh gives them, state settled, owner.phase/terminalStatus, outputs [{generationId,status,url}], errorCode, checkpoints with decisionPending,; reconcile by operationId, and a record with no id replays the same quote and key, never a second charge,. finals.js readers, quoteId, operationId, asset.reference, access.url, credits/expectedCredits/maximumReservedCredits, chargedCredits, get_connection's millicredit budget and spendingEnabled, import_asset with a name, typed references with their urls, checkpoints by node. Real model ids, gemini-3-pro-image-preview, gemini-3.1-flash-image-preview, ideogram-4.5, flux-2-pro, gpt-image-2.5-sunburst, seedance-2.5/2.0, gemini-omni-1.1-flash; no Veo on Sloosh, with each model's ratios and resolutions snapped before the quote. Spaces pinned by real title and id, Product Poster / Ad Creative, 3x3 Product Ad Grid, …, and the canvas form read from widget_props steps, field id keys, an https url for an image field,. Until Brew's workspace has credits, free plan, an image final is made on Gemini with the same brief at zero credits and the version says Final, Gemini,; video and Spaces say Sloosh is needed. tools/sloosh-call.mjs for one-off calls on the probe's kept session. Tests on the real shapes, plus one that fills every required key of every tool finals calls.
46c9793 - Drafts on the cheap models: every first picture is made on gemini-2.5-flash-image, Pro image only as the fallback; a premium picture is an explicit Make the final on Sloosh, video and voice stay on the fast models. A slow studio reply shows what it is doing: the step, reading, writing vN, checking against the facts, and the clock, polled while it waits, instead of a bare spinner
9b057d3 - Cards know the brand and the feed: the move and cadence writers pass the profile, config, learned.json and the cards already in the feed to cards-gen.fromMove, so the creative catalog's style, learnings and no-repeat lines render with real content instead of neutral fallbacks
51028d9 - Sloosh, batch 5: Make the final on the studio's versions, createStudioFinals in finals-routes.js: status, quote, run, checkpoint; the result is the next version labelled Final, with Revise the final after it, the sheet opens through the app's modal like Choose a photo, the simulated final falls back to the picked product photo, Sloosh errors show verbatim in the action row; the studio's photos and the creative watcher draw their words from the shared brief builder; DUMMY.md row 8, SCOPE.md Jam and References rows, CLAUDE.md on reconcile, the handover model table.
48d7ccd - Sloosh, batches 2, 4: References, the creative catalog, and Make the final in the jam. References, references.js,: a brand uploads any photo, past ad, look, logo, person or clip with a label, a job and a keep note, brands/
/private/references.json, files under refs/,; a fourth Library tab and a second section in the photo picker; Drop anything can file into it. Creative catalog, creative-catalog.js, data/creative-catalog.json,: the card, move and idea writers know what can be made, Brew's own formats, Sloosh models and Spaces, with example pieces lines, must name a concrete asset backed by the brand's context, learnings, evidence or listening, and never repeat format + product + angle in a feed; tools/audit-cards.mjs checks every brand. Finals, finals.js, finals-routes.js, public/finals.js,: quote → the team's yes → generate or run a Space → poll → bytes in gen/; the record is written before the paid call and reconciled at boot, so a restart never pays twice; budget.js counts Sloosh credits with a site cap and a per-brand share; the Space form is read from its schema and prefilled, the sheet asks for what the brand still has to upload; on the demo site the final is the draft's own picture at zero credits, DUMMY,. The jam's ready drafts get Make the final / Revise the final; chat never spends. 22271d2 - server.js as d18c138 left it, Sloosh batch 1 plus the SIGTERM stop,; dfca4e1 had put back an older copy that imported sloosh from media.js, which no longer exports it, so the container could not start
149b2dd - Sloosh, batch 3a: one brief behind every picture, sloosh-prompt.js,. Drafts on Gemini and finals on Sloosh now share a builder written the way the model makers ask: subject, setting, look and use in plain sentences, references named by position with a job and a keep line, text only as exact quoted words with a place and a lettering, the ratio in the settings and never in the words, a revision as 'change only X, keep the rest', Seedance beats in whole seconds with no gaps. A deny list strips the words that make a picture read as AI, 4k, cinematic, premium, sparkles, floating, splashes, from what the plan model writes, and the plan schemas ask for things you can see instead. Wired into the jam drafts, the carousel slides, the Veo clip, the background drafts, with the brand's own style and avoid lines, the statics and the how-to stories.
e0ab67d - server.js back to what runs: 522662c swept another session's unfinished Sloosh work, imports of files not yet in the repo, into the commit and the container could not start; only the SIGTERM stop, line stays
dfca4e1 - Sloosh, batch 1: Brew's own workspace signs in over OAuth, Clerk, PKCE, dynamic client registration; tokens in the _brew vault, refreshed before they run out, and sloosh-mcp.js speaks its MCP server directly, initialize, tools/list, tools/call as JSON or SSE, a 401 refreshed once; argsFor maps Brew's words onto each tool's real schema and fails loudly on a required key it can't fill,. Staff routes /api/ops/sloosh{,/connect,/callback,/disconnect}, the ops-route half landed in 522662c,. The placeholder Sloosh step leaves every draft chain: Sloosh makes finals only, behind a button, in a later batch. tools/sloosh-probe.mjs signs in from this computer and pins the unpublished tool schemas into data/sloosh-tools.json.
d18c138 - Deploy guard removed: deploys are continuous and never wait. The going instance gets SIGTERM, builder.stop, lets no new move start and every run leaves its brand unfinished; the next instance's resumeAll carries on from the saved plays, so a deploy costs only the plays in flight at that second
522662c - Deploy guard: a read waiting for the owner's check is not paid work; it counted as a running build and held every deploy for as long as the brand waited, a day for Gully Labs,
d175f01 - The measure-families card test skips when there are no local packs: it reads .brands/, which a clean deploy worktree doesn't have, so deploy.sh refused a correct tree
e22d4e7 - Ready for the Pro switch and a clean start: deploy scripts pass AI_PROVIDER / GEMINI_DEEP_MODEL / GEMINI_FAST_MODEL through, Pro is gemini-3.1-pro-preview, checked on Vertex, the weekly rewrite pot and move estimate grow with a Pro deep model, tools/flush-live.sh starts the live site over; the brand calendar no longer dies on a tried-only confirmed entry, "Invalid time value" on every brand, AI replies and saved jams get real line breaks instead of "\n", and the health card says when its rings read the team's accounts
7e59e22 - Top bar 39px at every width and in every view; Feed | Deck loses its drop shadow so it matches the pills
fb0bf93 - Deploy guard: drop the 20-minute gap between deploys; it still waits for paid work to finish, FORCE=1 skips,
3ca7739 - Deck loads again for brands with a connected Shopify: the Signals column skipped no source and read the removed WhatsApp connector's name, which threw and left the deck empty; now a source with no connector is skipped. Top bar controls all 39px.
22d40ec - Work board reworked: Needs you first, the background AI lane last and slim with many plays as one row, no side panel, a slim header keeps New jam and Library, empty lanes fold thin, every work item wears its exact feed card under a stage strip; top bar all 42px and no line under it on Work and Deck
da8cb70 - Pro paywall off for now, PAYWALL = false,: the deck opens for everyone, Pro buttons go where they lead, the capped plays button reads Write the rest; nothing switches S.pro on
cb8aa7c - Studio: one photo button, Choose a photo; the duplicate New photo button hides under it,; Download all takes the photo the preview shows when none is made, and one picture that won't load never sinks the rest; ad text is never cut
bc57404 - What we heard, audit pass: "What people talk about most" up top, five topics with share bars, tap to filter,; hashtag-only posts hidden and hashtag tails trimmed; captions name the person once with platform and date, fancy-Unicode names read plain; cards lift with an arrow on hover; N more is a chip
14bd2f4 - Fact sheet and What we heard, ui=1, cleaned up: fact groups as soft cards with a scrollable pill nav and source pills; heard has a small count, sources in one scrolling row, ten topics and N more, a picked topic always shows, quotes as cards in two columns
1146c7f - ui=1: Feed back on the rail and Learned at the foot; account popup loses setup/demo/start over; the What people say row opens again; the big drop box returns on What Brew learned; connector footers on one slim row, long values wrap
4d8fa88 - Team pill collapses to the icon and the count; "with the team" slides out on hover, focus and while its list is open
78fd02d - deploy: PAGESPEED_API_KEY from Secret Manager, so the Storefront ring gets its mobile speed part
02dac56 - Trust gaps for every brand: one source for the numbers, dated, grounded jam answers, move citations with one claim-check bar, sturdier connected accounts
2d8e3f2 - Honest copy and no stalled brands: measured time left, Slack posts, team sign-in, real links; reminders when a read waits on its check
dfd477c - Connect tests follow the settle rule: a later account rewrites the plays it changes once; a repeated full run and a re-read pay nothing; the run waits for every first read
1e400e0 - Ops guards before clients: one rewrite per move when accounts connect, per-brand daily budgets that count every image, deploys that wait for paid work, ops alerts
d878317 - Health card: the line under the score gives the fix for the ring the headline names
99893f1 - deploy: dummy/ is gone, health rings are real since 8c057e5, so the deploy scripts and the image stop asking for it
2dad975 - Slack membership gate taken back out, Param: the Slack behaviour is fine as is,; the GA4 property-ID lock stays
0a35055 - Health rings are real: each ring scored from the read, Ad Library vs rivals, checkout walk + photos + site reviews + PageSpeed, real AI answers,; unread parts left out, not zero; saved dummy scores replaced at load
cd6a491 - Top bar a size up on desktop: Feed | Deck, the team pill, Viewing as and the theme switch, 34 to 42px, 15.5px text,
afc1e83 - Selling market, not registered country: a brand gets the playbook for where its customers are
334546e - Slack acts only for the brand's team; GA4 by property ID is locked to its brand
b8297aa - Connectors, ui=1, as a bento: the richest third of connected sources span two tiles with numbers beside what it's doing, numbers are small stat tiles, account on its own line, actions pinned to the foot
fc73374 - The team's private card rewrites and connector cards get the same fitting as shared cards: photo of the product they name, the asset's own button; saved workspace copies heal
1702208 - ui=1: no brand menu. The account popup is the menu, on desktop and phones
e50bb8f - What Brew learned, ui=1,: one even 14px gap between the cards
19d1430 - What Brew learned, ui=1,: header with Upload and drop-anywhere instead of the big drop box, an overview row of tiles that open their part, none empty, every part in the same card, an empty Lessons card, team notes fold after four, forming rules say how far along
3d2eae2 - Card assets match the card's words, for every brand: the product a card names, title, then its asset line, picks its photo and first-draft reference; the asset line's scene goes into every picture prompt; a guard stand-in photo counts as failed and is retried; saved drafts on another product are made again; a Meta asset card never keeps the Google 'Launch the ad group' button
c0e554f - Work board cards wear the feed card: the full-width picture, .media.portrait, instead of a small framed thumbnail, the feed's body spacing
5ed0ce3 - ui=1 rail: keep the account icon, its own popover, drop the brand menu button from the rail
74b2aa6 - ui=1 rail: labels become hover tooltips, like the UI2 rail, rail back to 60px
398b278 - ui=1 reads at full size: every font size and px line height up a little, +1px to 16px, ~6% above, icons +1px, feed column 500→530px
b37aa74 - ui=1 rail: logo on top, Work / Learned / Alerts centred, Connectors and You at the foot, all labelled
5f6581e - What Brew learned: hide "What Brew knows about
" and "What it read lately" a0663be - ui=1: Connectors is the card grid it always was, the searchable list stays UI2 only,; Your feed plays from the rail into the account popover, above Sign out
c39bd5e - ui=1: the "N with the team" pill is the same chip as Viewing as, height, frosted fill, edge, centred, count in bold
bea255e - ui=1: the jam's pack, impact and remake chips come first in the row, they sat off-screen after the quick asks,; the Drop anything sheet gets its size and padding
d8aee33 - ui=1 gets the UI2 features: pack, projected impact and remake chips in the jam; Send brief with its sent status and a "N with the team" pill in the top bar; Your feed, topics, per-agent Less/Normal/More, picked-up signals, on the rail and in the menu; Drop anything at the top of What Brew learned, memory or my preferences; "just this once" stays with Ask Brew,; You're caught up + Find more; the searchable connectors list; the new Profile menu with ui=1's own rows. The feature styles in ui2.css are no longer scoped to .ui2; the re-skin still is
7efee48 - Recap ring: what happened since your last visit, second in the story row
25ebc17 - Connector approvals: mark Google submitted, Meta in review, Slack listing parked
56d107a - One weekly rewrite pot a brand: every automatic move rewrite draws from it, best kind first
fd57188 - Jam product and channel: packages, remakes and packs are about the product the card, or the package, names, not the first product of its lane; a card whose title names Meta or Google opens on that channel even when its button makes ads elsewhere; spend is exactly a week of the package's daily budget, the 1,000 floor turned $15/day into "About $1,000 a week", an ad with no budget says "A budget to confirm", saved changes heal on open and packs are made again, PACK_V 2,; a product written out by its own name wins over loose word overlap in matchProduct
cd3cce3 - Ops: OPS_TEAM_PROBE=<slug,...> runs a one-off paid check of the team-only views for a brand with real accounts, one weekly automation run, public and team; one team ideas run; the team statics from its Move 21, once per brand, cost kept in private/ops-team-probe.json; builder.teamStatics makes the team set from the saved team Move 21
5535539 - Static ads for the team: the team's private rewrite of Move 21 makes its own set once, kept under private/statics/ and served only to signed-in members at /b/
/team/statics/, 401 signed out, 403 off the team, never cached,; its cards go to private/cards.json and the public set steps aside for members; the public set is unchanged ca7dbc3 - Ideas for the team: a brand with real accounts connected also gets the team's own ideas stream, private/ideas/, whose evidence holds the connected facts; members see those idea cards next to the public ones, visitors never; the public stream never reads private facts; the team's run waits under the same daily cap
d0dc197 - Scorecard for the team: GET /plays/cadence gives members the private scorecard, scored again from today's account rows when missing or older, visitors and non-members the public one; the team's paid area reads the connected Meta account whenever it is connected, live ads too, so an idle account never falls back to the Ad Library,; the feed now knows a weekly card's move, m1004-1, so the shared card steps aside for the team's copy
a4b63a8 - Stock: a size variant out of stock never marks the plays built on the full-size product; old marks heal once
3a2d86e - Slack: asset copy in Slack's own formatting, headings and bold as x, bullets as •, not raw Markdown
a987c70 - Weekly plays for the team: with real accounts connected, each weekly family also gets a private run, paid area scored from the Meta account, routines from the Klaviyo flows on and off, saved to private/ with -p cards for members only; retiring a run retires its team copy; visitors keep the public run
77b0530 - Learnings, tuned on a simulated Cozy upload: high-impact plays never wait; cards by what did not work, one view of the market, no maybe-hides
eae9cc1 - Live and demo checks: a brief is only 'sent' when the email went out, the demo site and a failed send said sent and stamped it,; the demo tour carries ?ui=; the demo tour's read no longer throws, brand packs have no getJSON,
95e1641 - Slack: a video draft the video model refused posts as the picture with the reason, never as 'New video'
02967cd - Live paid checks: a remade reel, carousel or picture now shows on the stage, it was stored on the draft and never drawn,; a remake waits for a photo already being made, and no photo starts during a remake, a photo landed on top of the reel as a newer version without it,; busy chip while media is made; a draft already a carousel isn't offered as one; money projections read $15, $40; Rules hides the learned intro
35bc710 - UI2: style the Slack live-thread line and Brew's proposal card, Make it / Not now, in the jam
ebc0411 - UI2 QA round 2: fixes found by reviewing the round-1 fixes
a7e6cdd - Slack proposals read plainly: 'Ready to change this: …' / 'Ready to make a 6-second vertical video, …,'
c0d62ea - Live cards without rows or detail no longer throw on every request, clone of undefined broke Cozy Snugglet's whole workspace on live,
7682fc2 - Ranker: the team's own cards and the cards learnings lift come first; a card they contradict steps off the top
620ec80 - Saved team views heal at startup: a brief from an older account read is built again from today's rows
8a1e3a0 - Learnings: rewrite every move they really change by impact, within a $30 cap, no count of 6,; the feed changes at once
dcac339 - Jam live on Slack: the thread talks to Brew, chatter folds into the brief; a change or a paid image/video is proposed with Make it / Not now and runs once, from Slack or Brew, studio images, videos, remakes and versions post to the thread, Jam on Slack replaces the demo-only Jam with team, thread link on the jam
9965ed1 - The team's brief and profile follow every changed account number
805e5ad - UI2 QA: fix makeover bugs found in review and a full walkthrough
abff1c6 - Connecting: only the brand's first account rewrites every move; a later one rewrites only the plays it touches; 30-minute settle
9b48df0 - A connected run settles from the plays themselves, so a restart can't lose its wrap-up
68074ba - Connectors: a live card says only what its real read is doing, never the demo promises
6f1e861 - Slack: the bot joins the picked channel, channels:join, so thread replies reach Brew; Disconnect keeps you on the page you were on, with Slack's own what-happens list
ebf16bc - Connectors: live cards never keep demo numbers; Meta finds the brand's Page by name and labels whole-account spend; Google Ads money in its own currency
8b5cf04 - Stock is a state: every catalog pass hands stockSignal what is out and what is in
0ac4876 - Connectors: the reviews connector is named after its app, Judge.me, Loox,
aacc07c - Slack: every new jam asset, draft image, video, voice, carousel, version, posts to the jam's Slack thread for review with Approve; Approve works on a thread message; real Slack posts drop the paste-it-back line; events are logged
18a4bdf - Out-of-stock and removed products mark every move naming them out of date at once; 'what we tried' learnings, in every brief and rewrite
51e39a1 - deploy: the Brew Slack app's keys, SLACK_CLIENT_ID, SLACK_CLIENT_SECRET, SLACK_SIGNING_SECRET,
944e598 - Connectors: the domain-name rule no longer adds a second 'Reviews on'
b4fef9a - tools/slack-app.mjs: make and update the Brew Slack app from its manifest with the Slack CLI sign-in; keys go straight to Secret Manager
6406cfa - UI2 polish: brief sheet with From / To / Due / Ref and a status stamp; the shared /h/ brief as a paper page with the same memo row; invite, access and email-settings pages in one Brew shell, small-page.js,; emails in the app's ink, type and radii under a dark Brew band; Profile menu with you and the brand, account and team, seat, Deck, Memory and settings
cb21032 - Slack is real: one-click sign-in, channel picked on Slack's screen, Share and Take it to Slack post for real with an Approve button, thread replies and Approve come back into the jam, signed /slack/events, /slack/actions,; demo site stays simulated
94650f4 - Connectors: no more 'Reviews on Reviews on judge.me', new seeds and saved ones,
1c2caa3 - Connectors: reviews tile finds its app from the live account and the read, not only the name
5d34498 - Connected re-reads flag every affected move on a 10% move since it was written; flags rewrite once a week, capped
6fab0a3 - UI2 wiring: Send brief really sends, and says so, the top-bar pill lists each brief's status, the jam's Post to / Get the files pack, Projected impact, Make it a reel / carousel and Ask Brew about this chips, the Ask Brew panel, replaces the global jam on the phone tab, Your feed tuning, signals, topics, agents Less/Normal/More, preferences, Drop anything with photos and text files. Fix: a reply whose status is a word, 'sent', was used as the HTTP code and failed
b8e622e - Connectors: Judge.me shows its own app icon, reviews tile picks the brand's review app mark,
cb17128 - Klaviyo: '1 person', no zero flow tile, 'None of the 5 key flows are live yet'
d68dce0 - Test: jam guests reach their change's chips through guestAllows, never discard or restore
8dfb624 - Merge branch 'refs/heads/jam-chip-endpoints'
97f4d04 - Merge branch 'refs/heads/ui2-service-backend'
36f2273 - Jam chips backend: publish pack, projected impact, remake in any format
b3d5661 - Klaviyo: accept real private keys, strip copied whitespace, Klaviyo judges past pk_,; Judge.me: real review total from /reviews/count, no zero tiles, no drafted-reply promise
46dc648 - UI2 phone: tab bar Home, Deck, Ask Brew, Memory, Connectors
7867394 - UI2 backend: Send brief with tracked status, Ask Brew, Your feed tuning, Drop anything; guests can't discard a studio change
62aa253 - UI2 phase 9, landing,: centred URL entry, 'Get a team for your brand that works while you sleep', Build my team; same form, sign-in and build flow
b5a6435 - UI2 phase 8: connectors as the design's searchable list, Store and ads / Customers and team, + to connect, what it unlocks folds into the row; same connect sheet, sync and disconnect
ff45f7e - Judge.me: one-click OAuth sign-in, on as soon as JUDGEME_CLIENT_ID/SECRET are set; pasting a token stays as the fallback
5ac822e - UI2 phase 7: Memory. Drop anything here, brand memory / my preferences / just this once, tabs What we learned, lessons, what the team told Brew, the plays, Your feed, picked up from your choices, your seat, Rules, rules, checks and the fact sheet together, Heard
7635e14 - Rewrites of 3+ plays no longer throw, total is not defined,; a connected run that errors retries in an hour
530c0fc - UI2 phase 4, first pass,: the jam as one page per card. Studio: agent and status chip, the draft with its versions, Where / Post at / Budget / Backed by / Measure, the chat with option chips, View brief, the card's next step, Fix, Swap the image, quick asks, More like this, Adjust, the brief as a paper sheet with Send brief, Adjust as an overlay. The card drawer jam restacks into the same single column, CSS only,
e8b3e20 - UI2 phase 3: Deck as Yours, In progress, Needs your yes, Shortlisted, Jams, Briefs sent, plus one column per agent area with what it is drafting; no Pro gate
342567e - UI2 phase 2: feed greets by name, counts move to Deck, cards headed by agent · time, caught-up state with Find more
f9c1b68 - UI2 makeover, phase 0-1: ?ui=2 flag, opening rail, Home, Memory, Connectors; Tune, Notifications, Profile, top bar with brief pill and Ask Brew; Deck opens without the Pro gate in UI2
a28d5c6 - Connect: an account not yet matched to the brand is re-checked on each read
d12c513 - Google Ads: Performance Max landing pages count for ownership, spend labels say Google Ads not search, connect sheet shows each connector's real refresh cadence
f5909f9 - Google Ads: move off the retired API v21, every call 404'd, shown as 'no Ads account', to v26, and say why no Ads account came back
9063a94 - Connecting a real account rewrites every move with its numbers for the team
6db2825 - Connectors re-read on their own cadence, 6h ads/store, 12h default, 3h retry,; Google Ads sheet with no Ads account offers Analytics alone
650f8e9 - Connect routes accept connector ids with digits, ga4,
6286200 - Connector popups: one quiet glass box for every connector, its states swap in place
ede1d34 - Connect: the connectors page and feed repaint as soon as an account connects, without a page refresh
db2d1fe - Google Analytics and Google Ads are separate connectors
30dd96e - Marketplaces: the connector is off for now; the connectors page shows the real marketplaces as Coming soon cards with their logos
8e491d0 - Google: one-click sign-in for Google Ads + GA4 on, consent screen and callback set up,
69c8139 - Google Ads: list ad accounts under a manager account and read them through it
fe77386 - deploy: keep Google OAuth, Ads + GA4, on for Brew
8ba661e - Guided connect: each account is a short numbered checklist with the link to the right page, copy and paste buttons; after a connect, the rest are one tap away
8df1410 - GA4: a stream on the store's Shopify domain counts as the brand's; cards need enough visits and purchases
0f6d100 - Popular ads: a rival whose page has another name is found through the brand read's page or its site link, then read by page id
ad52a08 - Meta: money in the ad account's currency; a shared ad account counts only the ads for the brand's own Page
9011bb5 - Connect sheets: back from a platform sign-in lands on the step it left; clearer account picker; only admins connect or disconnect
90c1746 - Popular ads never go stale: every rival read, loose page names, top and newest ads, deeper pages when unseen run low; every 2 hours up to 4 never-shown ads, round-robin across rivals
4b1b599 - Account picker: only the picked account shows a tick
acb507c - Meta: use the Brew Ads Read login setup, user token with ads_read,
b950f08 - Rising searches show +N% or Breakout, never Google's raw value
65a049d - Store: write workspaces still inside the save debounce on SIGTERM
96a7001 - How-to ids come from what the story says, so a later read the same day can't pass an old story off as new
fa28927 - Stories: rings topped up to 3 from the data, breakouts never quoted as numbers, zero-base jumps dropped, a first read that failed says so instead of loading forever
6b7e3a4 - Shopify: no zero lines in what changed
6d7a400 - Onboarding: say read-only on the live site, demo only on the demo site
f0b3cb7 - Ideas stream: keep why a run dropped ideas in social state
98cb687 - Stories quote only numbers that are in their data; a bare rise reads as a percent; kept stories meet the same bar
481ce4b - Live site: a real account's switch follows the server, not an old simulated switch in the browser
bfbe0a6 - All five story rings always show: an empty ring reads its source again and shows its best recent stories meanwhile
df3c12a - Live site: a simulated account saved before the real connectors counts as not connected; approvals checklist
cf58b85 - Popular ads ring no longer empties while rivals advertise: ads not shown in 3 days go first
a8713c5 - Real connected accounts on the live site: Shopify, Meta Ads, Google Ads + GA4, Klaviyo, Judge.me, Marketplaces
5f8ef21 - Stories: saved stories served without paise; stories from one rising list are not merged
5f57121 - Stories: near-duplicates judged on the subject, not shared verbs; also deduped when the rings are drawn
120e0e8 - Checkout walk: check the cart after add to cart, refill it through Shopify's cart API when empty, SITE_V 3,
a1aa0d4 - Docs: stories row after the no-AI fallbacks and cleanup
57ea7ba - Stories keep coming without AI, and read cleaner
9aca4f7 - Read: checkout walk works on script-heavy stores; shopper questions no longer need AI
d8150ed
2026-10-15
- AI on Gemini 3.5 Flash via Vertex while we build, Google credits,; AI_PROVIDER=anthropic switches back
8497ea5 - Content honesty: no source-method talk in plays, no instruction in briefs, no namesakes in Heard, no empty versions
dc56dcb - One number, one source: live ads, products, plays, need-your-yes and AI visibility read the same everywhere
944d6c6 - Live privacy and polish: outsiders no longer get a brand's read through the onboarding stream, nor its move titles, files and spend through status; no 'Evening, You' placeholder greeting; the demo pill is a small icon on phones so it never covers a card's buttons
8a0cc22 - Audit cleanup: honest AI pause, notify gate, safe photo fetches, dead code out
df24f8e - Team: an admin can remove another admin from the team, as long as one admin stays, nobody removes themselves,
098fc2b - Team sheet: the only admin's menu says a brand always has an admin and offers Hand admin to
right there bed06a1 - Jam @: search by any name or email, show who's already in the jam, and tag a new email to invite them, they get the jam email, join the team on sign-in with the tagger's views, and land in the jam,
5a6da5f - Emails: one designed layout for everything Brew sends, invites, team changes, plays ready/updated, jam and ShopOS emails,: logo, brand line, headline, real button, quoted messages, preheader, footer
c19827c - Views: on a brand's team the invited views apply to everyone, Brew's own people too; teammates see the team and invite people to their own views, account menu and onboarding,; 'They see' is multi-select
05d017b - Invite step: 'They see' is a multi-select menu, so one invite can give several views
67d8957 - Invite step, cleaner: one email field with chips, type, paste a list, Enter or comma, one 'They see' picker, Invite N; quiet people list, the email warning shown once
5512ab4 - Invite step: invite several people at once, one row each, Add another, paste a list, one Send invites, failed rows stay marked; cleaner layout
b4d877e - Merge team-only live into the lean pipeline: one count stays the playbook total; PDFs drawn on download sit behind the same team-only check as saved ones
4d3a2d8 - Team-only on live, honest ship copy: a brand's plays, PDFs, read, facts, Heard and stories are for its team on live, the demo stays open, outsiders get a brand-only seed and an empty feed, the brand list shows only your brands; at most 20 new workspaces an hour per address outside a team, 64-bit workspace ids; the leftover 'ShopOS team ships it / Brew ships it automatically / Usually 12 to 24 hours' copy is gone and old stages read 'Brief shared'; build progress says core plays
dde4af4 - Merge branch 'main' into lean-pipeline
a37e917 - Merge the live fix batch, 876424a, and team jams into the lean pipeline: one count stays the playbook total, PDF rules version 3 forgets old PDFs so they redraw on download
6efe58a - Team jams: jams belong to the brand's team, with real people, tags and email
f12fbfc - Merge branch 'main' into lean-pipeline
af38585 - Team jams: jams belong to the brand's team, with real people, tags and email
179e380 - Deploys never upload a local worktree, .wt/,
2aa8b10 - Moves page, count heal, PDF names: the Moves page counts the whole playbook, listening-era and dynamic plays sit in their groups; only weekly plays are 'new this week',; a brand finished before the one count gets its total from the plays it has; a PDF's name in the download header carries ₹ and em dashes safely, ASCII name plus the real one,
1eb6072 - Media: one provider chain per asset kind, media.js,. Images: Sloosh once connected, then Vertex Gemini, both models, then OpenAI gpt-image-1; video: Sloosh, Veo 3.1 fast, then Veo 3.1, a filtered clip is not retried,; voice: Sloosh, Gemini TTS, then OpenAI TTS. Sloosh is off until SLOOSH_URL is set. A rewrite of Move 21 keeps its finished static batch instead of paying for eight more pictures
e87e340 - Cadence: a priority rewrite queue, what the team told Brew first, then a big change, then the weekly check, so a learning is never turned away while other work runs and starts the moment the brand is free. A rival's price move or launch, market pulse, rewrites the one move it hits hardest, at most once a day. The weekly check rewrites up to 6 high-priority plays of the whole playbook and writes the plays whose evidence has newly appeared. A move the evidence overtook says 'Being updated' and steps off the first screen until its rewrite lands; a rewritten one says 'Updated' for three days. Weekly auto cap 10
5f91dd8 - PDFs on download: a move's PDF is drawn the first time someone opens it, one shared Chromium, closed when idle, kept per move version and drawn again only after a rewrite or a PDF rule change. Builds, rewrites, weekly plays and heals no longer draw PDFs or zips ahead of time; members' private rewrites keep their own PDF
285dba2 - Evidence: fetch once, reuse everywhere. treg and Apify answers are kept by signal, reviews, search, AI answers and profiles a week, company data a month, ads, news and prices a day, and identical calls in flight share one answer; Apify runs are cached for the first time. A re-read of a known brand, the weekly check, keeps its rivals, category searches and AI questions, so it re-reads their stores and answers instead of paying to rediscover them, and weeks compare. Moves use the read's stored searches and ads instead of buying them again, Ad Library through adCall,. Rising searches come from DataForSEO, SerpApi only as fallback
9ba88ff - Moves: same plays, a fraction of the cost. Opus at medium effort with a 2,800-3,800 word target, every table, rule and finished asset kept, repetition cut,; the system and the brand block, brief, whole ledger, every signal line, profile, are identical for every move and cached for an hour, so each move reads them at a tenth of the price; web search runs only when the stored evidence for a discipline is thin; the claim check reads the lines the move rests on, the fix is Sonnet, and the index is written once with its overview at the end. Build cap 45, concurrency 8
2731b1f - Moves: one count everywhere. The playbook is every move the build writes, core, listening-era once their evidence exists, dynamic, never the index or weekly plays; the engine saves it as status.total and the build, progress card, Build tab, emails, feed and UI all read it instead of 51
2f5e83f - Fix-today batch, my files,: outbound fetches reach only the public internet, reader and pasted links,; one move count, core build is N of 51, the index has no drifting count,; old move text heals, 'Brew re-reads/watches/ships', 'we pause/revert', and PDFs redraw, PDF_V 3,; exemplars say BREW DRAFTS; a billing error pauses metered AI for 15 min instead of retrying every few seconds; a stalled reload stays stopped; deploys keep the newest 3 revisions and label the git SHA; demo-sync copies referenced generated images
876424a - Sign in before a read: a store read, about $6, starts only for someone signed in, who gets 3 new brands a day; the landing page signs them in and starts the read when they come back
809bed1 - Security hotfix: a PDF name is a file name only, and a pack file never leaves its brand folder, ../ and absolute names read and write nothing,. /b/
/pdf/..%2F.. read any server file, live. fa6a270 - Docs: what was fixed for real clients, and what is still open
2b0b10d - Ops: the day's AI and treg usage survives restarts and deploys; service-level max instances pinned to 1; Brew runs as its own service account, its 9 secrets, its 2 buckets, Vertex AI, logs, instead of the default compute account
ec3d653 - First drafts: a rewritten move reusing a card id never shows the old card's draft, same id, format and idea only; a reworded title keeps it,
00cb526 - Feed: the Creative agent's three a day are per brand, not per workspace; card pages are kept in the pack, paid once, not after every reload,; Heard lists only real failures, skipped-on-purpose sources apart, and a video review is not a question; a paid ideas run that makes nothing is flagged
50cc038 - Jam and feed: a shared brief is frozen, the read-only page shows it as shared, with when, BR numbers run per brand, both shares carry the read-only link; the composer's link option says Brew doesn't open it; watcher and Creative cards use the brand's own product lines; QA rules no longer carry Arata's hair claims or 'other serums'
ef6bd7e - Read and plays, honest states: onboarding handles a store that won't open and gives empty steps a dash, not a tick; the check page says when a lookup failed and splits reviews by source; the ledger records how rivals and ads were really found, ADS_V 4,; plays show 'Numbers checked · N claims to review' and the team sees what was flagged; the index respects the budget and the reload loop stops when a pass rewrites nothing
9b87c2b - Feed: a card that rests on what the team told Brew carries a 'From what your team told Brew' label, feed and quiet rows, shown to whoever may see the told list
d5edae8 - Fix the broken and clear the cut: move passages read generated plays, blocks, write_moves.mjs removed, dead routes deleted, /api/jams, WhatsApp, /api/slack, /api/ai/*, card versions, no Live/shipped-by-Brew row, measure text says the team watches, old onboarding text is brand-neutral
0f98266 - Deploy: mount HANDOFF_SECRET, shared links no longer depend on the Anthropic key,
2f7f450 - Access for real clients: a shared jam link lets anyone look and, once signed in, take part in that one jam as a guest, never the team,; brand memory and what the team told Brew are team-only; the mic needs sign-in; facts and asked threads need the team or the brand's work email; a paid heal of the saved read needs sign-in; share links verify with HANDOFF_SECRET or the old key
cfab9aa - Rewrite resume: a move this run already wrote counts as done wherever it was saved, private/plays.json too, so a restart never starts the run over
7aaad57 - Reel on the stage: its own player, sound toggle, tap to pause, progress line, clean caption, glass Change photo; a new photo asks to remake the clip
b7592de - DUMMY.md and handover docs: what the honesty fixes changed
b81f8a2 - Feed: the two make seats hold things the brand can make, no rival ads, two different groups, a finished static takes one,; the told lift needs learnings, counts only plays written after them, and is not saved on cards; QA no longer drops an AI-answer gap because the shopper's own question uses a banned word
f775c2e - PDFs: one writer per brand for status.pdfs, no lost entries, a failed render is tried again, and saved PDFs heal at boot, missing ones drawn, retired ones dropped, text redrawn with the honest kickers, zips rebuilt,
c821b14 - Counts that line up: kickers say MOVE NN without a total that drifted, MOVE 65 OF 64, saved plays heal on read, no hard-coded 51 in the welcome, work card or ready email; ad and review stats say what they count
c71245c - Festival is always the next one, from the calendar, Diwali in India, Black Friday elsewhere,; saved configs re-pick it at load, so seasonal cards never go stale after 27 Nov
c7075a0 - Honest copy: no Do-it-now promises on watcher cards, landing or onboarding; plays say what to watch, the team checks, and BREW DRAFTS; saved packs heal on read; composer names Veo
12ea8cc - Honesty: no canned sign-offs, asking a teammate copies the question, simulated replies change nothing and leak nowhere, simulated account numbers are never evidence
284d127 - Handover docs for engineering and product; Brew's team emails are in scope, prepare-pack keeps notify.json,
76e953e - Studio menu: Discard and Start fresh work in the split view, the jam goes with its package; Undo brings both back,
9885b5d - Make the video makes a video: short-video posts get a real 6s clip, first frame, Veo, voiceover,; a jam's video button never falls back to a still
5db072f - What Brew learned shows what the team told Brew; cards that rest on it rank higher
ea6cfd7 - Feed: one card per trend widget, one festival idea from the Creative agent, idea titles never quote prices their text doesn't
7002bcc - Feed: price cards saved before the paise fix that show no change are never shown
e273ca7 - QV fixes: no false price-change cards, no link-preview titles as rival hooks, Pro card tagged Dummy without the cut cap tile, brief summary and checkout caption cleaned
dee01c5 - Studio stage: the Meta ad is sized like an Instagram feed post, 470px, photo 1.91:1 to 4:5, not stretched taller
7e1f1dd - Studio stage: the ad and Instagram frames never shrink below 480px
4023dca - Studio photo: no second picture stacked above an ad or post; a photo lost to a restart clears and says to make it again
63d41d3 - Demo controls: jumps keep the brand path; drop the cut Changes call on the connectors page
9a420e9 - Demo controls: accounts connect without a reload, jumps stay in place, slow runs say so
5eb0307 - Onboarding: connecting an account stays on the Tools step instead of reloading to the first screen
5616e50 - Move the prototype to brew.joinsquareup.com, PUBLIC_URL, links, docs,
76ae4da - Landing copy: hand it over in one brief, not one tap to go live; no results promised
d512a23 - Brew prototype: read → plays → feed → jam → share the brief
779ef2d
Tomorrow
Not applicable to a generated document: it is rewritten from its sources on every build.
How we do it
Generated by handbook/tools/gen.mjs on every build. Change the source, never this file.
Numbers
Not applicable to a generated document: it is rewritten from its sources on every build.
Open
Not applicable to a generated document: it is rewritten from its sources on every build.