Genfeed.ai

Changelog

What's new in Genfeed.

Features

  • oauth: add Cancel to the Instagram account picker (#7668)
  • app: redesign the 404 page and center it in the viewport (#7683)
  • reply-bot: add an X warm-up reply queue and draft account-monitor replies (#7673)
  • settings: move rail order and home app to personal settings (#7688)
  • studio: put type tabs and Auto/Advanced in the prompt bar (#7684)
  • studio: mark video tiles in the playground grid (#7678)
  • discord: post storyboard stills and videos to one thread per storyboard (#7692)
  • reply-bot: discover and monitor X accounts for warm-up replies (#7691)
  • analytics: remix a winner straight from the Winners view (#7698)
  • analytics: notify the team when a post breaks out and offer a remix (#7700)
  • app: replace the agent bubble with a full-height side panel (#7701)
  • app: open chats as tabs in the agent side panel (#7703)
  • onboarding: one output-first page that drafts the first posts (#7711)
  • website: add software JSON-LD and stop dating sitemap URLs as now (#7721)
  • website: name competitors correctly and answer which fits on /vs pages (#7724)
  • website: add /best guides for open-source, social and video AI tools (#7726)
  • studio: add a cheap video draft next to Generate (#7729)
  • pricing: taper generation margin above $0.50 and raise agent chat to 2.0x (#7728)
  • app: start the agent panel under a full-width topbar (#7722)
  • ui: spring and press-stretch animation on Switch, consolidate toggles (#7736)
  • workspace: group inbox rows by day (#7739)

Fixes

  • e2e: follow the Filters menu and sidebar remix brief in Library and Discovery specs (#7661)
  • e2e: update analytics specs for the subbar and card-grid UI (#7662)
  • e2e: follow the row-sidebar / name-link table contract in 7 specs (#7665)
  • e2e: update admin org and voices specs to the breadcrumb-title UI (#7664)
  • e2e: follow the setup menu, model chips and channel menu in shard 5 and 7 specs (#7666)
  • prompt-bar: remove the top-fade gradient and guard against shadows and fades (#7677)
  • studio: fix the 0.2.12 production QA findings (price confirmation, wallet, editor, rewrite, Plan mode)
  • learning: mark X posts organic or paid and pinned for rewards (#7633)
  • studio: open / edit presets in edit mode, add money journeys (#7693)
  • app: scope brand overview to the selected brand (#7669)
  • api: return full overview KPIs from the brand analytics endpoint (#7696)
  • mobile: extend the expo tsconfig by its exported .json path (#7699)
  • studio: keep the Model chip reachable beside the type bar at narrow widths (#7697)
  • workflows: show a review gate rejection once (#7702)
  • app: keep the narrow topbar fitting beside the agent toggle and point specs at the side panel (#7709)
  • ui: ellipsize closable tab titles instead of clipping them (#7710)
  • agent: set chat message text to 14px to match the composer (#7712)
  • app: align check-email card description with the card edge (#7714)
  • ui: run the content block flush with the agent panel (#7716)
  • agent: anchor the composer to the bottom of short conversations (#7717)
  • agent: move the thread row status dot to the right and drop the time (#7720)
  • ui: match switcher trigger avatar to the dropdown item tile (#7715)
  • brand-kit: move tabs and actions into the shared subbar (#7737)
  • ui: raise dim text contrast, fix heading levels, drop filler titles and descriptions (#7735)

Performance

  • db: index activity polling, the unread-messages badge and the publishing calendar (#7624)

Refactoring

  • pricing: rename the Agencies plan to Scale (#7670)
  • onboarding: remove the agent onboarding client (#7713)
  • agent: delete agent onboarding server code (#7723)
  • flags: make Storyboard, Turbo, Motion, Clips and Editor their own app modules

Documentation

  • seo: drop competitor names from the dispositions reasons (#7734)

Tests

  • content-eval: expect link-missing to warn, not block, in the scoring-surface test (#7690)
  • e2e: stop expecting the removed agent onboarding routes to render under /agent (#7731)

Build and CI

  • release: replace a stale unpublished draft instead of failing on it (#7667)
  • add path-filtered Playwright core smoke on app PRs (#7671)
  • add one-click hosted SaaS rollback workflow (#7685)
  • release: require green Playwright Full and Learning Runtime on the release SHA (#7686)

Dependencies

  • deps: weekly deps:update (#7694)

Maintenance

  • remove legacy storyboard stored-config variants (#7659)
  • api: drop legacy pay-as-you-go ledger source match (#7655)
  • agent: remove the scripted onboarding tools and payment CTA card (#7733)

Features

  • rail: reset rail in settings; desktop admins open Admin in browser (#7512)
  • admin: show the system workflow catalog and list workflows as tables (#7518)
  • agents: let autopilot write X threads under earned auto-publish (#7517)
  • fonts: ship Google fonts as static TTFs and seed font families (#7538)
  • ui: row opens the right sidebar, name opens the page (#7544)
  • admin: move platform settings to a Settings rail group with a page per tab (#7531)
  • elements: system blacklists any organization can pick (#7542)
  • admin: clean up agent failures table with resolve and GitHub issue actions (#7533)
  • pricing: give the free tier API access at 60 requests per minute (#7547)
  • admin: list every organization's agents on an admin Agents page (#7545)
  • ui: shared nested FilterMenu, adopted by Admin models filters (#7515)
  • admin: shared date picker and collapsible registry on System Emails (#7528)
  • admin: list every organization in the admin library (#7552)
  • publishing: channel filter lists connected accounts first with platform icons (#7556)
  • observability: sample 5% of production requests for Sentry traces (#7550)
  • fonts: load the brand fonts in the browser for kit previews (#7559)
  • admin: add Economics category with revenue, cost and coverage reports (#7534)
  • admin: user avatars, row overlay, user page and email actions (#7527)
  • fonts: render the chosen font in video text overlays (#7566)
  • posts: read a pasted X post link before drafting a remix (#7568)
  • analytics: show posts as a paginated card grid with a compact subbar (#7574)
  • studio: agent-written proposals API for Playground and Storyboard (#7575)
  • studio: open an empty Playground on the agent's drafts (#7586)
  • storyboard: open the create page on the agent's briefs and shot plans (#7587)
  • mcp: announce the sent prompt and packs in generate result text (#7591)
  • studio: record agent-authored prompts in the generation receipt (#7612)
  • ui: row opens the right sidebar, name opens the detail page in every table (#7589)
  • storyboard: record whether a storyboard brief was the agent's (#7625)
  • mcp: add social share image to the MCP setup page (#7654)

Fixes

  • storyboard: stop sketch stills failing at the quote-group bind (#7489)
  • prompt-bar: remove the outer shadow from every prompt bar (#7490)
  • voices: speed up the voice library load (#7492)
  • profile: show latest 3 articles and a 3-across preview row (#7496)
  • media: send image and video models a clean template prompt (#7495)
  • studio: hide retired and legacy models from the model picker (#7491)
  • mcp: let OAuth sessions connect on tiers without API access (#7498)
  • ci: notify webhooks when production deploy succeeds (#7497)
  • brands: merge social and links cards, add Google Ads logo (#7499)
  • voices: keep the catalogue in the picker for orgs with their own voices (#7501)
  • avatar: let the agent pick the avatar video format from the platform (#7502)
  • storyboard: refund failed stills at once and report them to Sentry (#7509)
  • publishing: show the Source filter on the Posts library page (#7508)
  • website: unique article page metadata and drop unrated schema (#7510)
  • admin: default ingredients to All and fix list width (#7514)
  • admin: show the voice catalogue as a paginated table with players (#7519)
  • admin: paginate the users, subscriptions, roles and referral rewards lists (#7516)
  • admin: paginate announcements, warmup, credit usage, unit economics and leaderboards server-side (#7548)
  • app: paginate in-app task, agent, run, clip, editor and memory lists server-side (#7549)
  • api: paginate org-scoped list endpoints in the database (#7551)
  • admin: price every model Fix all pricing can reach, and move its buttons (#7522)
  • publishing: X failed-publish reason, Sentry capture, thread reply retry, published post page (#7543)
  • admin: paginate bots, workflows, tags and trainings lists (#7540)
  • studio: list system presets in the setup picker and soft-delete blank presets (#7524)
  • templates: paginate the templates list on the server (#7513)
  • admin: land Administration on Organizations instead of Users (#7526)
  • brand-os: generate from approved brands without saved rules (#7555)
  • agent: give every workspace-task agent turn a thread (#7541)
  • agent: end a tool-heavy turn with an answer instead of exceeding the round budget (#7546)
  • agent: align thread ui-action and input-response contracts with their producers (#7539)
  • api: list and count workflow executions without a join per arm (#7557)
  • website: fix profile sign-up CTA, empty state and missing public avatar (#7558)
  • drop success toasts on list load and refresh (#7521)
  • admin: lock flag toggles while saving, drop toggle toasts, pack flag cards (#7530)
  • prompt-bar: pin post editor prompt bar to the view bottom (#7554)
  • admin: move org analytics sort to the subbar and count real members (#7525)
  • admin: one Subscriptions list with every organization and credit balance (#7529)
  • brand-kit: stop proposing the profile picture as banner (#7560)
  • branded-text: keep short posts from spending their budget on reasoning (#7561)
  • templates: stop null columns shadowing config category and isActive (#7562)
  • app: stop duplicate activity, inbox and version requests (#7563)
  • publishing: order posts toolbar refresh, dropdowns, views, CTA (#7564)
  • campaigns: remove explainer sentence from list page (#7565)
  • analytics: Performance dataset counts and Top Posts media (#7569)
  • admin: move Economics prop types out of route files (#7570)
  • green master CI after the merge train (#7577)
  • streaks: render the creation heatmap as a 90-day week grid (#7571)
  • paginate the skills list on the server (#7572)
  • paginate creative patterns in the database (#7573)
  • analytics: scope accounts and brands lists to the selected brand, paginate, use avatars (#7576)
  • clear lint and ratchet regressions from the last merged PRs (#7580)
  • page the release group list in one SQL statement (#7578)
  • paginate strategy opportunities in the database (#7579)
  • cli: report API rate limiting as a rate limit, not an invalid key (#7581)
  • drop stale runtime-complexity baseline entry (#7583)
  • media: mint authorized URLs for generation sources, masks and references (#7592)
  • posts: keep AI Rewrite from being cut off mid-sentence (#7608)
  • app: deliver adminAgents and brandSocialMedia to the routes that use them (#7610)
  • analytics: clean up Insights, Hooks, Outliers, Breakouts and Performance Lab (#7588)
  • media: authorize workflow provider inputs right before the provider call (#7593)
  • media: project ingredient-referencing rows and authorize generated-media notifications (#7594)
  • repair master E2E, Playwright Full discovery and i18n ratchet failures (#7609)
  • analytics: Brands, Posts and Accounts filters use the shared filter menu (#7590)
  • ci: green master after bulk merge (locale + runtime baseline) (#7621)
  • workers: keep the metadata refresh method under its complexity baseline (#7617)
  • images: log which brand-identity integrity check stopped enhancement (#7618)
  • ci: lower stale runtime-complexity baseline (#7623)
  • update scheduler parity markers after CLI alias removal (#7653)
  • brand-os: make brand Policy post caps atomic across concurrent publishes (#7652)
  • app: use the canonical Publishing path in the chat CTA e2e fixture (#7658)

Performance

  • prisma: index workflow executions by status for the review inbox (#7511)
  • admin: gate /admin on the JWT claim, not the full bootstrap (#7520)
  • agent: look thread executions up through the indexed jsonb path (#7553)
  • api: resolve paid-module hint only when a client asks for it (#7582)
  • inbox: poll the rail badge for the unread count only (#7585)
  • credits: aggregate usage metrics in the database (#7611)
  • analytics: read the window plus one baseline row, not the whole history (#7613)
  • app: load prompt-bar and element catalogs on demand and memoize context values (#7616)
  • app: skip refetches when a tab is revisited after a short glance (#7619)
  • turbo: stop polling the project while the tab is hidden (#7622)

Refactoring

  • studio: clean up prompt bar options menu (#7523)
  • admin: rename Warm-Up Accounts page to Concierge Accounts (#7532)
  • ui: move Library, calendar, Discovery, Skills and list filters onto FilterMenu (#7567)
  • ui: replace record overlays with the right context sidebar (#7584)
  • admin: open the user record in the right sidebar instead of a sheet (#7615)
  • rename misnamed legacy publish webhook emitters (#7651)
  • app: remove the dead API keys free-tier lock (#7634)

Tests

  • fix master's spec typecheck, baseline and unit test drift (#7635)

Build and CI

  • selfhosted: fail the Community boot check when platform schedules are missing (#7620)

Maintenance

  • agent: remove machine-local skill cache links (#7504)
  • contracts: neutral wording in engagement rule enum comment (#7597)
  • analytics: remove dead outlier drawer and refresh untranslated-string baseline (#7614)
  • remove legacy compat paths from desktop app (#7639)
  • remove legacy JSON:API type aliases from CLI (#7640)
  • remove legacy storyboard run migration (#7643)
  • remove studio playground settings migration (#7646)
  • remove one-off legacy data backfill scripts (#7644)
  • remove legacy env file import from env:sync (#7645)
  • remove legacy migrations from browser and IDE extensions (#7637)
  • remove workflow bezier edge migration and -content color aliases (#7647)
  • remove dead organization settings routes (#7638)
  • remove legacy agent href, draft and runtime fallbacks (#7642)
  • remove posts:create API key scope alias (#7648)
  • remove legacy row-compat readers from api (#7650)
  • remove legacy URL redirects and param spellings (#7649)
  • remove legacy knowledge backfill (#7641)
  • remove legacy presets and gallery from the IDE extension (#7657)
  • remove the error color alias in favor of destructive (#7656)
  • api: remove superseded brand default kit backfill script (#7660)

Features

  • studio: connect source-bound inspector transforms (#7244)
  • app: right-click rail items to move or unpin, set home app in personal settings (#7274)
  • prompt-bar: rest on scroll, presets in / and a context row inside the bar (#7285)
  • admin: shared admin page shell and Fix pricing on Models (#7315)
  • admin: administration pages on the shared admin shell (#7318)
  • admin: posts list as table rows with the filters in the subbar (#7317)
  • content-eval: test org and brand context for every generation type (#7335)
  • admin: configuration pages on the shared admin shell (#7321)
  • agents: one Agent object with one-click hire and brief-pinned proactive runs (#7450)
  • admin: automation pages on the shared admin shell (#7319)
  • library: make the org Library the brand Library across all brands (#7314)
  • admin: open an activity detail view instead of linking into the account (#7316)
  • admin: templates through the admin shell, with seeded system templates (#7322)
  • review: one review inbox for agent drafts, workflow gates and MCP approvals (#7451)
  • agents: latest report and per-run posts on the agent home (#7454)
  • studio: show Advanced setup as one row of section chips in the prompt bar (#7360)
  • agents: earned auto-publish on the agent page (#7455)
  • admin: merge Prompts into a Generations ledger with row detail sheet (#7324)
  • api: autonomous media and brand context in every autonomous path (#7452)
  • prompt-bar: move every remaining prompt surface onto the shared composer (#7460)
  • brand-os: enforce a brand publishing Policy at the publish gate (#7453)
  • publishing: 15 X posts a day, with a thread counted once (#7469)
  • agents: default X strategies to two posts a day from trends and evergreen (#7470)
  • app: two-column OAuth consent with org and access dropdowns (#7472)
  • admin: send a test message to each Discord bot channel (#7471)
  • mcp: switch organizations inside one connection with an org dropdown card (#7477)

Fixes

  • oauth: ignore the port when matching loopback redirect URIs (#7227)
  • replicate: restore authenticated callback completion (#7252)
  • webhooks: bound outbound acknowledgement handling (#7260)
  • studio: fence generation metadata by owner (#7258)
  • studio: discard gallery history across owner changes (#7253)
  • studio: isolate personal preset operations by owner (#7249)
  • twitter: guard media downloads and bound transfers (#7230)
  • linkedin: bound publisher media source downloads (#7234)
  • images: guard and bound nft image downloads (#7223)
  • telegram: bound workflow media downloads (#7240)
  • skills: enforce pack limits during download (#7246)
  • knowledge: enforce document limits while streaming (#7239)
  • knowledge: release bounded fetch readers safely (#7233)
  • media: release download readers without masking errors (#7222)
  • downloads: cancel abandoned attachment fetches (#7216)
  • deps: patch pinned Underscore dependency (#7257)
  • deps: resolve patched fast-uri with existing override (#7214)
  • mcp: keep descriptions valid for every tool view (#7204)
  • mastodon: pin destinations and reject unsafe redirects (#7199)
  • leonardo: isolate request credentials across generation (#7210)
  • deps: patch IP parser used by rate limiting (#7217)
  • deps: resolve patched seroval through solid override (#7207)
  • workflows: trust configured media origin for self-hosted X replies (#7270)
  • hooks: isolate member organizations by query owner (#7264)
  • scraper: bound social HTML reads and request lifetime (#7268)
  • files: bound remote download error bodies (#7278)
  • saved-ads: recover concurrent snapshot restoration (#7287)
  • hooks: isolate admin stats by authenticated owner (#7281)
  • twitter: reuse valid credentials for mention pages (#7280)
  • messages: find lifecycle-published posts and register every inbox sync workflow (#7275)
  • mcp: serve the card view for earlier builds and drop internal origins from the card CSP (#7296)
  • posts: fix TikTok live link and show media in post preview (#7283)
  • api: guard and bound Whisper media downloads (#7212)
  • ci: track aggregate Full Suite failures on current trunk (#7205)
  • deps: refresh Hono and DOMPurify security pins (#7263)
  • deps: patch scoped tooling parsers and ZIP handling (#7229)
  • api: finalize avatar videos that finish after the timeout (#7308)
  • notifications: report the Discord models channel in admin status (#7309)
  • workflows: accept a system job a worker already failed during enqueue (#7323)
  • workflows: condition branch data and TikTok video/query (#7295)
  • ui: make refresh spokes and small spinners actually animate (#7286)
  • 0.2.10 QA defects (model allowlists, brand-kit redirect, rewrite 500, downloads) (#7291)
  • ui: tidy failed, generating and video tiles in Library and Studio (#7271)
  • api: call notifications webhook route under /v1 (#7307)
  • apify: cut trend scraping to fit the $19 limit (#7320)
  • content-performance: honest, replay-safe performance feedback and winners in branded briefs (#7449)
  • cli: use design-system colors on the sign-in page, shell prompt and TUI (#7457)
  • ci: give the import-cycle scan room for the grown API workspace (#7462)
  • api: quote input-megapixel models at the 9 MP reference allowance (#7459)
  • drop client-aborted uploads from Sentry and finish #7191 MCP follow-ups (#7461)
  • mcp: answer 503 instead of 401 when the identity check is unavailable (#7467)
  • twitter: collect X metrics with the account's OAuth2 token (#7463)
  • twitter: refresh X tokens per credential and only when expiring (#7464)
  • agents: write X drafts within X's length and hold over-length ones (#7468)
  • api: send the Hailuo 2.3 Fast first frame as first_frame_image (#7476)
  • ci: build serializers before the app and count the new agent runtime cases (#7478)
  • api: send Kling Avatar V2 portrait as image with its audio input (#7480)
  • ci: build serializers before the desktop app-shell Next build (#7483)
  • e2e: scope Configure section buttons to the setup popover (#7484)
  • e2e: update stale clips and studio draft specs (#7482)
  • e2e: repair Playwright Full nightly shards 3, 7 and 8 (#7485)
  • e2e: repair Playwright Full nightly shard 7 (feedback timing, touch setup) (#7486)
  • desktop: drop build-time file-trace lists from the packaged app shell (#7487)
  • studio: keep the generation setup button out of the toolbar scroller (#7488)

Performance

  • workers: bound YouTube sweep existence preflight (#7247)
  • notifications: bound agent brand authorization reads (#7238)
  • workers: bound discovery activity reads (#7224)
  • app: split page translations by route (#7225)
  • workflows: batch workflow library favorite reads (#7202)
  • api: aggregate optimization statistics in the database (#7200)
  • hooks: index workspace inbox unread receipts (#7292)
  • workers: bound atomic transcript purge batches (#7294)
  • credentials: batch account health evidence reads (#7198)
  • services: defer client request serializers (#7218)

Refactoring

  • workers: index trend health scope reconciliation (#7245)
  • posts: slim the post details rail (#7293)
  • security: share one bounded download routine (#7290)
  • api: use shared bounded download in Whisper (#7336)
  • articles: match the slim post layout in the article editor (#7329)
  • api: move prompt params resolution out of video preparation (#7481)

Documentation

  • boundary: allow autonomous agent runs on self-hosted Community (#7345)

Tests

  • pages: isolate model list modal fixture (#7266)
  • app: keep the template detail translator stable (#7456)

Maintenance

  • ci: notify release watch and QA webhooks when a Release run succeeds (#7465)

Features

  • website: agencies-first pricing page (#7021)
  • library: warn before deleting an asset used as a character reference (#7028)
  • characters: add, reorder and remove character reference images (#7029)
  • workflows: add showcase templates, favorites and usage (#7065)
  • add an X player card on the public website (#7070)
  • website: add a sign-up CTA with the owner's ref code to public profiles (#7075)
  • admin: add Folders to the Content menu (#7091)
  • workers: drop platform sweep runs that waited past their cycle (#7096)
  • admin: open individual apps for one organization (#7099)
  • admin: show or hide any app for one organization (#7106)
  • workers: expire the cron-queued sweeps that a later tick supersedes (#7130)
  • agent: charge draft_thread the flat text price (#7135)
  • credits: bill product text calls to two decimals, no 1-credit floor (#7139)
  • app: rename Store to Explore and give Workspace its own icon (#7146)
  • workers: drain the pre-expiry sweep backlog once on deploy (#7155)
  • studio: add thumbnails to Playground starter cards (#7151)
  • brand: thumbs up/down and reason chips on branded generations (#7167)
  • organizations: hide only Storyboard for new cloud organizations (#7153)
  • cli: add genfeed admin login, pricing and system-brand commands (#7172)
  • admin: read-only organization apps report and gf admin org-apps (#7169)
  • app: reorder the app rail, add More menu and configurable home app (#7182)
  • models: derive per-resolution clip lengths from reviewed provider rates (#7174)
  • cli: add admin seed and pricing sync commands (#7186)
  • pricing: price sync lipsync-2 and lipsync-2-pro per second (#7187)
  • mcp: clean user-facing MCP responses with names, cards and honest errors (#7191)

Fixes

  • admin: clean up the Models toolbar and scope filters (#7020)
  • make brand moves asynchronous and preserve committed results (#7019)
  • studio: require the avatar voice provider before quoting or generating (#7025)
  • contexts: share one protected bootstrap cache key (#7026)
  • workflows: price Topaz upscale nodes from stored source media (#7030)
  • clean up unused i18n keys, dropdown casing and legacy media grid (#7031)
  • publishing: polish overview, hover previews, and details motion (#7032)
  • website: list only public articles in the sitemap (#7041)
  • shell: match sidebar motion and remove right inset (#7044)
  • messages: reuse connected accounts and compact inbox filters (#7040)
  • curate Hailuo Fast and Wan I2V and activate discovered catalog drafts (#7042)
  • mcp: give org owners admin scope on OAuth consent, add list_orgs and e2e suite (#7034)
  • download original and watermarked media as files (#7043)
  • accept tiktok_app on scheduled post action contracts (#7054) (#7061)
  • keep original image formats in download filenames (#7064)
  • keep YouTube audience narrow and resolve legacy releases (#7066)
  • open organization settings in the current tab (#7067)
  • keep library publishing on the confirmed schedule (#7062)
  • import owned YouTube comments for published videos (#7063)
  • retire unapproved Brand OS default kits without violating approval metadata (#7071)
  • apply scanned brand kit logo, copy, and social links (#7068)
  • ignore stale organization lists after a switch (#7072)
  • admin: single-level cards and section topbar on admin pages (#7077)
  • lock concurrent brand-kit social link writes (#7079)
  • heygen: isolate voice clones, serve stock voices from the DB, add gender filter (#7073)
  • resolve legacy group ids before schedule and publish now (#7081)
  • publish Cloud help article covers and OG cards (#7083)
  • brands: flatten the brand kit preview and collapse revision fields (#7084)
  • masonry: load videos that only have the generic placeholder thumbnail (#7085)
  • ai-actions: charge agent text tools stopped after a provider attempt (#7086)
  • brands: treat customer-logos style directories as third-party marks (#7087)
  • admin: back button instead of home, clean divider and active menu item (#7088)
  • agent: pin onboarding in the agent shell (#7089)
  • close managed API key minting and unsigned X webhook intake (#7094)
  • ci: green the master regressions from admin-merged PRs, weekly Coverage and Desktop QA (#7098)
  • e2e: follow current UI in stale full-tier specs and unblock expert onboarding links (#7095)
  • api-keys: stop API keys granting more than they hold (#7097)
  • brands: let a physical brand stay physical next to an app or hiring mention (#7092)
  • assets: require the caller to own the parent before reparenting or retiring brand assets (#7107)
  • deps: bump undici and fast-uri overrides to patched releases (#7108)
  • webhooks: fail closed when Telegram or Vercel secrets are unset and reject stale Slack requests (#7109)
  • security: send Ghost, RSS and Unipile requests through the destination guard and restrict hook-remix URLs (#7110)
  • security: require auth for voice-to-speech, bind compose ports to loopback, reject the placeholder auth secret, restrict IDE links (#7111)
  • audit follow-ups for sync contract, sitemap fallback and env template (#7114)
  • models: keep registry-rejected models inactive when the seed curates drafts (#7127)
  • ci: green Desktop QA, API spec typecheck and the protected sidebar test on master (#7113)
  • voices: deactivate HeyGen voices dropped from the provider catalog (#7128)
  • security: check the target key's limits on scope updates (#7112)
  • post-groups: invalidate publish approval when a target's audience changes (#7131)
  • ci: namespace the brand relocation queue in the production turn acceptance (#7129)
  • ui: resolve date-time picker times across DST changes (#7132)
  • security: remove the Postgres TLS-verify opt-out (#7134)
  • security: run the multi-service Docker image as non-root on a pinned Bun tag (#7142)
  • notifications: stop dropping Discord alerts silently and show Discord status in admin (#7136)
  • workflows: export WorkflowExecutionsModule so the execution processors resolve in the learning runtime (#7145)
  • website: reveal top bar CTA after the hero CTA and close mobile menu gap (#7143)
  • messages: sync a specific credential regardless of the active brand (#7141)
  • security: make the local terminal opt-in instead of on in development (#7147)
  • api: stop the carousel position race spec from timing out under load (#7149)
  • security: desktop refuses to store sign-in without an OS keychain (#7154)
  • brands: stop polling a brand move after a definite rejection (#7152)
  • studio: allow submitting another prompt while a generation is running (#7156)
  • agent: treat a missing brand on OAuth connect as validation, not an exception (#7157)
  • api: bind a legacy post to one release under concurrent resolution (#7158)
  • api: quote Hailuo 2.3 Fast at a provider-supported duration (#7159)
  • library: point the empty media library at the Playground when the organization has it (#7160)
  • brands: stop replaying an old finished brand move (#7162)
  • e2e: keep the Electron fixture signed in and follow the Explore rename (#7165)
  • api: cap Hailuo 1080p at the 6 s Replicate allows (#7163)
  • brands: show the last-brand delete refusal without reporting it (#7171)
  • app: don't pin an empty Clips topbar (#7173)
  • org-context: tag why a routed organization switch failed and skip transport failures (#7183)
  • close the remaining master audit findings (#7181)
  • realtime: report a socket token refresh failure only after three in a row (#7185)
  • ui: ignore non-string watched resolution in prompt bar durations (#7189)
  • close the low and DRY findings from the master audit (#7188)
  • api: make the model-pricing specs typecheck after the price sync endpoint (#7192)
  • contracts: count the lipsync model keys in the ModelKey member test (#7193)

Refactoring

  • remove the Pro subscription tier (#7024)
  • finish the master audit leftovers (#7190)

Documentation

  • env: tag every env var as REQUIRED or OPTIONAL (#7023)
  • clarify voluntary unpaid contributions (#7049)

Tests

  • app: pin motion/react to page-menu icons (#7080)
  • api: match the media prompt call shape in the launch-path contract (#7093)
  • api: pin the Gemini 3.8 Flash product-text quote (#7161)
  • e2e: make the Library edit reload test wait for its draft (#7168)

Maintenance

  • agents: preserve grok comment-prune workflow (#7039)
  • drop comments that restate the next line (#7090)
  • ci: ignore the empty-env docs example in the gitleaks full-ref scan (#7133)
  • env: fail env:check on .env.example drift and block committing env files (#7140)

Features

  • mcp: serve the stateless 2026 protocol with SDK v2 (#6983)
  • articles: add Cloud help articles and repoint retired docs links (#6998)

Fixes

  • mcp: address Claude directory review findings (#6982)
  • selfhost: select the published amd64 image on arm hosts (#6989)
  • billing: recover failed credit balance reads (#6987)
  • mcp: make tool results readable and keep identifiers structured (#6992)
  • selfhost: clean install can sign up and run a first generation (#6996)
  • website: social landings show one CTA at the top, hero art under it (#6994)
  • api: stop tokenless requests resolving to the seeded local admin (#6999)
  • hooks: allow clean-install QA through an explicit override (#6985)
  • self-host: clear missing-provider-key error and docs for first run (#6995)
  • prepare real QA sessions over HTTPS (#7011)
  • preserve credit balance recovery after API failures (#7012)
  • complete localhost QA, character references, and model refresh (#6993)
  • release: verify the default Community authentication flow (#7015)

Performance

  • app: lighter boot, smoother Library scroll, keyset paging for older assets (#6997)

Tests

  • e2e: clear post prompts through editor keyboard commands (#6984)
  • app: cover protected hydration and library restoration (#6990)
  • studio: follow video sources through the inspector (#7014)

Maintenance

  • prune narration comments and stub tests (#6980)

Features

  • onboarding: receipt-backed first tweet (#6866)
  • posts: receipt-backed draft generation in the composer (#6865)
  • storyboard: run page on the shared shell, with prompt-bar drafting (#6891)
  • voice: add Studio Voice model choice and HeyGen Voice speech (#6895)
  • admin: one rail icon per admin category (#6892)
  • avatar: add HeyGen Avatar IV/V engines with estimate-then-settle billing (#6897)
  • storyboard: generate per-shot sketch stills with FLUX.2 klein 4B (#6898)
  • voices: bind ElevenLabs account voices to their owning connection (#6893)
  • workers: run enrichment sweeps only for active Discovery orgs (#6913)
  • workers: skip execution rows on empty sweep ticks, purge cleanup children (#6922)
  • studio: tabbed avatar/voice picker that requires both (#6918)
  • email: merge lifecycle email sweeps into one hourly per-org run (#6926)
  • agents: set up content agents from the conversation (#6917)
  • website: name free tools and comparisons for agents (#6938)
  • brands: add Genfeed system brand and bill stopped dispatches (#6939)
  • desktop: generate cloud content through the receipt-backed draft route (#6943)
  • website: add Postiz, Higgsfield, Argil, and Arcads comparisons (#6945)
  • mcp: require brandId on generation tools (#6931)
  • workflows: receipt-backed postGen and publish hold for unattended runs (#6942)
  • studio: stop media generation when brand prompt enhancement fails (#6940)
  • seeds: reconcile reference data at deploy time (#6959)
  • website: compact homepage models teaser linking to /models (#6967)
  • posts: receipt-backed account and thread generation (#6941)

Fixes

  • admin: consistent Trainings/Bots icons; resolve contracts/enums in pages tests (#6864)
  • publishing: stream YouTube originals and isolate processing jobs (#6870)
  • accounts: constrain settings dialog and scroll health content (#6881)
  • e2e: scope failed-publish assertion to its Needs-you row (#6871)
  • brands: return an empty Brand OS handoff when none is claimed (#6873)
  • posts: compact positions after legacy carousel deletes (#6877)
  • studio: quote music Auto and Lyria from the existing tariff (#6878)
  • publishing: preserve creator TikTok photo captions (#6872)
  • seo: retire the test article and unique about and docs headings (#6874)
  • messages: show module restrictions before inbox work (#6883)
  • youtube: explain a missing channel on OAuth connect (#6879)
  • ui: show hover actions on touch devices (#6886)
  • publishing: send Dev.to articles through the scheduler guards (#6887)
  • studio: single-select type picker with a stable Auto/Advanced layout (#6889)
  • storyboard: align E2E with the sidebar layout and restore manual shots (#6904)
  • ui: collapse search after the click that blurs it (#6910)
  • ui: collapse search after the click event (#6912)
  • price the Gemini 3.8 Flash product-text fallback (#6919)
  • show the API key cap instead of reporting it (#6921)
  • ui: hold the search width until the click lands (#6925)
  • price HeyGen photo animation per second (#6920)
  • brands: keep the default kit marker on an unedited save (#6929)
  • studio: show avatar cost estimates and correct the pricing page (#6947)
  • credits: settle externally billed avatar renders at the real duration (#6946)
  • brands: mark the default kit however Brand OS seeds it (#6960)
  • billing: hold unbilled HeyGen photo renders and remove persona render routes (#6948)
  • agent: reuse receipt drafts and restore social generation context (#6969)
  • avatar: meter audio holds, cap overruns and re-price late avatar charges (#6944)
  • deploy: stabilize metadata clients before rolling Files (#6974)
  • distinct compose container names and document contributor prerequisites (#6968)
  • seeds: bootstrap hosted and self-host reference sync (#6978)

Refactoring

  • website: one CDN layout, no versions or dates in asset names (#6868)
  • brands: stop selecting the retired social history import flag (#6884)
  • modules: release modules from Admin flags; module switches only hide apps (#6894)
  • workers: skip engagement sweep on empty ticks (#6924)
  • ai-actions: receipt every agent text tool (#6936)

Documentation

  • self-host-only docs.genfeed.ai and honest /self-hosted page (#6970)
  • document self-host requirements; fail fast on unsupported Node in @genfeedai/create (#6966)
  • correct Debian 13 Compose package guidance (#6976)

Tests

  • library: follow the filters popover contract (#6875)
  • playground: cover rejected image writes and More zoom (#6885)
  • e2e: reveal the library select control from the tile (#6899)
  • e2e: match calendar events inside the day cell (#6907)
  • posts: lock enhancements credits pricing to the seeded registry row (#6961)
  • release: restore funded billing and module-access acceptance (#6972)

Dependencies

  • deps: weekly deps:update (#6867)

Maintenance

  • add a comment-prune project agent (#6928)

Features

  • post-modal: aligned destination cards, hide Restream from post targets (#6752)
  • extension: capture LinkedIn posts and replies written with the extension (#6759)
  • extension: preview-first proofread and brand-voice rewrite (#6762)
  • publishing: filter Publish and analytics by extension source (#6763)
  • website: one connect CTA, #connect deep link and platform-logo heroes on social landings (#6770)
  • publishing: deliver composer Articles and Newsletters to connected long-form accounts (#6761)
  • extension: platform-aware reply options with tone variants (#6772)
  • website: open the Claude app from the connect dialog on mobile (#6777)
  • website: hide the topbar CTA on phones while the hero CTA is on screen (#6778)
  • studio: show only output type in auto mode and route for top quality (#6775)
  • extension: save sources to Imported sources and cut the legacy import paths (#6781)
  • extension: remix a saved source with an explicit quote and approval (#6785)
  • posts: rebuild post composer, review AI rewrites, strip HTML in previews (#6783)
  • brand-validation: run vision checks in a background job with a cold-start budget (#6811)
  • organizations: opt-ins for breakout responses, auto-publish and brand vision checks (#6813)
  • posts: one composer prompt bar with post presets, thread drafts and a single inspector (#6807)
  • cli: gf host native-messaging bridge for local AI providers (#6814)
  • extension: cloud-first text actions with a local fallback through the gf host (#6819)
  • brand-validation: fact-check draft claims against approved brand evidence (#6820)
  • library: one Filters popover, applied-filter chips and a curtain sidebar collapse (#6818)
  • visual-code: stage approved brand fonts into the renderer (#6823)
  • posts: store carousel slide order in an explicit position join table (#6830)
  • agent: draft and add X thread posts with review before saving (#6822)
  • agent: move page help from the topbar into the conversation agent (#6851)
  • email: replace raw trial-email URL with a secondary button (#6837)
  • brands: seed every brand with the Genfeed default style kit (#6853)
  • brands: provisional brand mode for branded text (#6855)
  • ui: animate icons on hover and give every page one consistent icon (#6860)
  • workers: sweep expired branded dispatch windows (#6854)

Fixes

  • ui: capitalize sidebar menu item labels via class (#6751)
  • api: close member role escalation and tighten free-trial credit checks (#6756)
  • publishing: restore video drafts and TikTok consent (#6754)
  • ci: qualify immutable v0.2.6 release recovery (#6766)
  • website: clarify integration and audience landing copy (#6771)
  • extension: treat an empty runtime reply as a failed publication capture send (#6774)
  • release: publish npm from the pinned release SHA after master advances (#6776)
  • brand-validation: decode Python repr escapes in Florence-2 OCR answers (#6808)
  • shell: show only the credit number in the topbar below 360px (#6817)
  • visual-code: bind placed-asset evidence to the media a node painted (#6826)
  • heygen: classify provider catalog failures instead of returning 500 (#6827)
  • studio: let Auto video keep a start and end frame together (#6825)
  • ci: treat column and table renames as migration contracts (#6824)
  • ci: treat enum type renames as migration contracts (#6832)
  • heygen: answer rejected credentials with 502 HEYGEN_CREDENTIALS_INVALID (#6835)
  • publishing: save youtube privacy and finalize tiktok posts (#6784)

Refactoring

  • onboarding: remove dead starter-assets, proactive and preview code (#6852)

Tests

  • e2e: realign nightly full-tier specs with current UI contracts (#6812)
  • e2e: find the post rewrite prompt by its label (#6815)
  • e2e: follow the post composer prompt bar and the pinned When dock (#6816)
  • e2e: follow the pinned When dock in the failed-publish loop spec (#6821)

Maintenance

  • dev: pin Portless ports per worktree and log workflow executors once (#6850)

⚠ Upgrade note

Breaking changes for self-hosters. Read before upgrading.

  • rename Batch to Turbo as a hard cut (#6678) — rename Batch to Turbo as a hard cut (#6678)

Features

  • promptbar: one prompt bar for Agent and Studio, Advanced Mode in the bar (#6501)
  • discovery: add native timelines and playable trend content (#6510)
  • agents: separate posting targets and draft reserves (#6522)
  • website: add a free AI model selector for content creation (#6532)
  • auth: enforce cloud member brand access across entrypoints (#6512)
  • brands: move brands between organizations from the org Brands page (#6606)
  • outliers: respond to own-account breakouts while they are hot (#6600)
  • models: retire MusicGen, make Lyria 3 Pro the music default (#6612)
  • website: highlight Done for you alongside PAYG pricing (#6617)
  • models: add HeyGen Voice speech as a priced, routable voice model (#6623)
  • apps: add native app catalog and personal installation (#6642)
  • onboarding: add audience, offer and competitor cards with credits (#6650)
  • agent: show live brand context in the onboarding panel (#6651)
  • receipts: record Studio image and video generations as receipts (#6657)
  • receipts: show Studio media outputs in the receipts list (#6658)
  • receipts: record quoted Crun image and video generations as receipts (#6663)
  • apps: replace More with the Apps launcher and a Store (#6647)
  • messages: reduce Messages to Overview and a typed Inbox (#6662)
  • analytics: classify winners on any signal against its baseline (#6665)
  • apps: refuse founder-only modules outside release preview (#6649)
  • publishing: make approvals a Posts view and drop the Approval queue route (#6652)
  • library: reduce the Library menu to Assets and References (#6660)
  • analytics: add a Winners view with evidence to Analytics Posts (#6668)
  • billing: 3-day free trial with 75 stacked trial credits (#6666)
  • nav: show Campaigns and experimental Analytics only on release preview (#6664)
  • library: add the Library Overview as the Library home (#6661)
  • billing: free-trial nudge emails and relative low-credit threshold (#6667)
  • agent: ask one missing brand context field in-flow after onboarding (#6670)
  • turbo: rename Batch to Turbo as a hard cut (#6678)
  • workflows: capture the schedule initiating actor server-side (#6682)
  • analytics: authorize breakout capture from the pinned workflow actor (#6684)
  • outliers: execute detected breakout responses through a system-only action (#6683)
  • outliers: gate breakout publication on the pinned live actor (#6690)
  • outliers: publish a breakout draft as the member who schedules it (#6705)
  • posts: admit breakout responses at dispatch before the YouTube upload (#6715)
  • outliers: generate and publish every supported visual breakout format (#6721)
  • contracts: add the brand render evidence manifest type (#6729)
  • brand-validation: admit image and video for review only (#6731)
  • brand-validation: prove palette colors from image and video pixels (#6736)
  • visual-code: bind render evidence to every exported artifact (#6730)
  • brand-validation: read mandatory and avoid literals from image and video pixels (#6737)
  • brand-validation: match approved logo and product assets in detected regions (#6741)
  • brand-validation: persist approved-brand receipts for breakout visuals and decide fonts from the render manifest (#6742)
  • brand-validation: select brand vision models from the catalog instead of env vars (#6744)

Fixes

  • analytics: preserve x breakout exposure evidence (#6506)
  • ci: qualify immutable v0.2.5 release recovery (#6509)
  • resolve all-pages QA findings across app and Library (#6533)
  • consolidate Studio, Clips and agent QA repairs (#6537)
  • repair combined master runtime and acceptance failures (#6588)
  • app: gate unpaid agent-first orgs on credits instead of looping (#6607)
  • app: keep locked rail items on their own route (#6614)
  • speech: record dictation in a format the browser supports (#6610)
  • models: review Seedance tariffs and bind MCP quote consent (#6598)
  • website: simplify Done for you pricing readability (#6627)
  • qa: unify Studio controls and organization module access (#6578)
  • studio: hydrate persisted failed cards so they offer recovery (#6629)
  • app: say which generations write receipts in the empty state (#6630)
  • musics: let stale brand/org music defaults fall through to the registry (#6633)
  • workers: roll rate-sheet verifiedAt forward on identical Fal refresh (#6635)
  • scheduler: ignore cancelled posting-set picker loads (#6634)
  • ui: hoist component styles so extensions cannot break hydration (#6638)
  • website: serve llms-full.txt model list from the live public catalog (#6636)
  • merge: make transition merges work and surface failures (#6639)
  • qa: repair defects found by #6631 live acceptance checks (#6643)
  • app: format dates in the viewer's time zone (#6645)
  • content-pipeline: resolve text-to-music steps through the music registry (#6646)
  • settle double-failed workflows and surface clip failure reasons (#6659)
  • app: paywall unpaid orgs when onboarding credits run out (#6644)
  • analytics: cap winners on posts and refuse unknown platforms (#6669)
  • repair master Full Suite failures after the #5502 and trial merges (#6677)
  • apps: open founder-only apps by release preview, not super admin (#6674)
  • studio: make revealed card actions clickable and recover previews (#6671)
  • billing: add free-trial rollout grace and exempt operator comps (#6673)
  • billing: relative low-credit threshold for paid emails and the banner (#6676)
  • knowledge: bind refresh schedules to the knowledge actor (#6687)
  • workflows: require the schedule actor at scheduled run in Cloud (#6692)
  • brands: bind the saving user to schedule saves from the agent config (#6704)
  • workflows: run seeded system workflows under platform authority in Cloud (#6703)
  • brands: pause schedules and keep org-only children when a brand changes organization (#6702)
  • brands: reset persona sharing when a brand changes organization (#6707)
  • workflows: grandfather legacy schedule actors and drop duplicate seeds (#6709)
  • workflows: keep customer template rows, grandfather schedule actors only (#6710)
  • app: qa pass for apps store, org settings split and topbar order (#6693)
  • outliers: build the breakout generation attribution scope from the schema's keys (#6716)
  • agents: bind accepted transfers, reviewer approvals and strategy turns to a schedule actor (#6718)
  • outliers: send a paid breakout draft that needs brand review to the review queue (#6719)
  • workflows: mark canonical seeded workflows as platform seeds automatically (#6714)
  • brands: drop strategy schedule actors when a brand changes organization (#6720)
  • outliers: wire the acceptance execution harness to the visual-capable services (#6726)
  • workers: fail a breakout target the fence denies at dispatch instead of throwing into the sweep (#6724)
  • analytics: assert brand access before storing breakout evidence (#6723)
  • outliers: keep pacing from refusing the follow-up steps of a funded breakout plan (#6725)
  • workers: publish carousel slides in group order (#6739)
  • e2e: repair the Release Frontend E2E shards after the Turbo rename and QA pass (#6746)
  • ci: repair release Full Suite backend jobs (API E2E, runtime acceptance, visual protocol) (#6747)
  • ci: repair the Release runtime-acceptance dataset typecheck heap and publisher contract (#6755)
  • admin: keep platform settings rendering without brand vision options (#6757)

Refactoring

  • auth: share automatic workflow actor parsing and live refresh (#6611)
  • agent: share one Genfeed agent identity across system prompts (#6648)
  • brands: extract agent schedule validation to restore the size ratchet (#6708)

Documentation

  • skills: drop reference to nonexistent openclaw-integration skill (#6641)

Tests

  • api: restore branded text E2E artifact binding (#6628)
  • prisma: canonicalize the renderer caller path for symlinked tmpdirs (#6632)
  • e2e: align nightly specs with intentional product changes (#6637)
  • tasks: scope task detail heading assertions to the page heading (#6640)
  • e2e: restore the saved draft in the image-editing nightly spec (#6672)
  • studio: prove More menu and preview recovery in the browser (#6681)
  • brands: cover Cloud brand access in font asset service (#6685)
  • outliers: connected breakout acceptance on PostgreSQL (lane M) (#6722)
  • outliers: connected acceptance for image, carousel, video and short breakout outputs (#6728)
  • mcp: assert approval estimates come from the model quote and resolve_approval stays admin-gated (#6750)

Maintenance

  • dev: drop the repo-local worktree helper (#6688)

Features

  • api: approved-brand receipts on direct post drafts (#6482)
  • guard public MCP tool references (#6496)
  • ci: emit executable guard wall-time diagnostics (#6502)
  • heygen: save native identities and freeze submission provenance (#6499)
  • content-learning: gate policy activation on pilot enrollment and queue rebuilds (#6504)

Fixes

  • studio: refresh Library after polled generation failure (#6489)
  • workers: preserve unresolved HeyGen generation holds (#6488)
  • harmonize Meta v26 APIs and workflow contracts (#6487)
  • ci: build contract exports before v0.2.5 checks (#6491)
  • api: restrict organization member mutations to managers (#6497)
  • e2e: report authenticated Motion in its actual lane (#6500)

Tests

  • api: add real-database acceptance for the branded text seam (#6481)
  • content-learning: add hosted generation loop acceptance (#6503)

Dependencies

  • deps: refresh workspace packages and Action pins (#6498)

Features

  • library: move shelves and trash into the status filter (#6400)
  • models: add Replicate google/nano-banana-2.1 (#6401)
  • models: persist routing tiers and keep FLUX.1 legacy in production (#6406)
  • models: import provider schemas and pricing as pending contracts (#6414)
  • api: branded text generation orchestrator seam (#6471)

Fixes

  • tasks: switch sidebar content without closing the panel (#6378)
  • move rejected assets to their own Library shelf (#6380)
  • agent: contextual approval recovery and live expiry (#6383)
  • api: stop invalid Prisma writes on brand scan and org settings (#6382)
  • inbox: load read state without a session organization (#6385)
  • app: explain a stale Studio motion revision (#6387)
  • app: apply the saved account theme over the browser cache (#6386)
  • api: accept library picture uploads on the ingredients route (#6390)
  • dev: keep the MCP debug port off the API port (#6388)
  • release: recover verified drafts after npm source drift (#6395)
  • release: allow verifier to read unpublished drafts (#6396)
  • agent: show tool results as short sentences (#6394)
  • mcp: require approval and honest credit metadata for spending tools (#6384)
  • website: send the home CTA to the sign-up page (#6402)
  • library: show deleted failed assets in Trash (#6392)
  • mcp: show callable generation model keys (#6405)
  • studio: keep the source ratio when editing an image (#6408)
  • price provider models from their public list rates (#6403)
  • library: tell soft-delete it goes to Trash and refresh failed rows (#6407)
  • studio: keep the generate prompt bar stable and usable (#6404)
  • ci: require real validation after draft promotion (#6410)
  • mcp: require a workspace choice at OAuth consent (#6413)
  • agent: collapse completed steps and smooth conversation editing (#6443)
  • migrate HeyGen integration to API v3 (#6441)
  • library: recover persisted video failures in Studio (#6429)
  • retain saved personal settings after refresh (#6445)
  • keep the workspace inbox mounted when read state has no reads (#6447)
  • restore Discovery desk source tabs (#6449)
  • library: restore single-asset delete (#6448)
  • studio: keep the source ratio on Edit image handoff (#6451)
  • settings: restore brand voice and agent defaults headings (#6446)
  • agent: seed concise output refinement references (#6453)
  • upgrade Meta Marketing and Graph API defaults to v26 (#6456)
  • ci: import design-eval record guard from contracts source (#6460)
  • point mobile client at live publish-review contracts (#6459)
  • workflows: close system workflow wiring sweep coverage gaps (#6462)
  • e2e: select FLUX.3 from the generation setup summary (#6458)
  • workflows: accept the inputs persona, voice and influencer workflows deliver (#6463)
  • e2e: follow the consolidated Brand Kit into review and its canonical route (#6464)
  • research: keep a just-selected filter when a debounced search fires (#6470)
  • social-sources: classify collector rejections and fail truthfully (#6469)
  • api: preserve identity across selected tenant reads (#6415)
  • api: finish organization isolation and collector error handling (#6480)

Performance

  • reduce CI contention and repeated validation work (#6416)
  • ci: retain API shard timing diagnostics (#6442)

Refactoring

  • finish shared record and string reader consolidation (#6452)

Tests

  • analytics: preserve brand scope when navigating to overview (#6412)
  • desktop: repair local cost and runtime tooltip fixtures (#6417)
  • assert exclusive Studio recovery actions (#6457)

Build and CI

  • recover missing hosted CLA statuses on PR heads (#6409)

Dependencies

  • deps: weekly deps:update (#6362)

Features

  • library: add guided failed-asset recovery and quick Trash actions (#6352)
  • mcp: reuse social previews with account avatars and media (#6344)
  • models: unify identity badges and clarify pricing (#6361)

Fixes

  • app: restore hosted navigation with resolved tenant routes (#6305)
  • mcp: preview all generated caption variations (#6316)
  • agent: repair batch approvals and align standby threads (#6324)
  • app: select Serwist caching for the Desktop build profile (#6318)
  • mcp: render previews with shared product UI (#6327)
  • agent: compact shortcut tooltips and calm composer border (#6325)
  • agent: ground review suggestions in the latest queue result (#6326)
  • library: restore fast review and separate asset inspection (#6333)
  • restore image quotes, pricing drift and onboarding recovery (#6334)
  • website: align copy and simplify agent connection setup (#6328)
  • preserve selected brand in analytics and Messages navigation (#6338)
  • discovery: brand-relevant grid with muted hover previews (#6341)
  • ui: use short spokes while refreshing (#6350)
  • preserve brand scope in actions and task navigation (#6349)
  • admin: consolidate model catalog and normalize provider batch prices (#6346)
  • app: give the chatbubble a stable conversation panel (#6357)
  • library: align recovery rows and preserve saved Studio inputs (#6360)
  • agent: remove notice fade and explain expired approvals (#6375)

Refactoring

  • consolidate Brand Kit, agent settings and Library characters (#6354)
  • ui: clean up Studio promptbar and consolidate config picker (#6335)

Tests

  • align switcher row and keyboard focus assertions (#6371)
  • e2e: align consolidated Studio and shell contracts (#6381)

Features

  • mcp: brand the Genfeed server identity in agent clients (#6135)
  • mcp: render the content calendar, post previews and media players in MCP Apps (#6138)
  • library: organize the Library with tags (#6123)
  • library: show model, prompt and file details in the asset inspector (#6178)
  • library: give references their own shelf and tidy the inspector prompt (#6182)
  • admin: tab platform settings and group flags into module cards (#6219)
  • website: reposition marketing copy around the content agent (#6221)
  • onboarding: scan_brand_url, save_onboarding_answers and button-only question cards (#6222) (#6243)
  • oauth: sign in or sign up on the MCP consent page (#6273)
  • mcp: onboard new users inside their own agent (#6269)
  • onboarding: deliver agent-first brand conversation and guarded routing (#6222) (#6286)
  • add skills install and local-agent setup prompts (#6294)
  • enforce Claude content connector and Studio handoff (#6296)

Fixes

  • ci: delegate the learning runtime specs out of shared API E2E Full (#6124)
  • members: run access discovery as an explicit cross-org read (production login outage) (#6132)
  • personas: admit shared avatars on image edit and require PersonasService in Crun quotes (#6126)
  • workers: keep per-tenant trend health incidents separate while global refresh is healthy (#6129)
  • brands: scope brand deletion by organization and re-read revoked grants under lock (#6122)
  • crun: scope model deactivation to the affected organization (#6137)
  • mcp: show connected agents and animate connection success (#6133)
  • crun: compensate partial image and video dispatch failures (#6139)
  • oauth: accept MCP resource values that carry ?profile= or ?toolsets= (#6142)
  • system-events: persist an explicit failed state when an event hits the lease cap (#6131)
  • prisma: run lazy Prisma queries inside the crossOrgUnsafe scope (#6146)
  • tenancy: make every handler query pass the CLOUD tenant guard (#6120) (#6152)
  • discovery: give Trends and Trend Turnover the shared page chrome (#6181)
  • seed: keep the model catalog reconcile past a failing entry and fix the FLUX.3 Edit endpoint collision (#6180)
  • organizations: name-only org creation with shared schema and brand scan (#6177)
  • llm: keep valid items when one structured-output item is malformed (#6165)
  • onboarding: light COST-priority first-run image and translated org-switcher loading text (#6159)
  • credits: never release a credit hold when HeyGen status is unknown (#6160)
  • extension: save only extension-written posts and keep the token on-device (#6161)
  • brands: release brand-from-url credit holds on every failure and cap scraped HTML (#6162)
  • ci: redact credential values in acceptance evidence, single-pass sqlTokens (#6163)
  • autopilot: reset credit windows at fixed UTC boundaries (#6167)
  • learning: fence credential and brand patches per organization (#6170)
  • votes: idempotent add, explicit remove, unique active vote per user and entity (#6171)
  • votes: prove vote lookups tenant-scoped with platformOrTenantScope (#6183)
  • restore master static checks after the audit merges (#6184)
  • pricing: stop refusing never-reviewed models over a synced pending contract (#6179)
  • desktop: build integrations for qa:release and resolve the Electron webServer cwd (#6190)
  • desktop: load sanitize-html under Bun with a CommonJS htmlparser2 (#6189)
  • credits: back off unknown-status hold recovery so it cannot starve other holds (#6188)
  • desktop: green Desktop QA with cloud and local Electron acceptance tests (#6193)
  • reddit: skip native trends without app credentials and use the Apify fallback (#6215)
  • apify: remove app-side run caps and per-run charge ceiling (#6211)
  • apify: replace dead Pinterest and X trends actors (#6213)
  • linkedin: read trend posts from logged-out activity card commentary (#6218)
  • harness: keep copywriting rules out of media generation prompts (#6201)
  • notifications: default the Resend sender to the verified send.genfeed.ai domain (#6210) (#6225)
  • trends: build Instagram trends from post hashtags and save rows independently (#6212)
  • onboarding: unblock the brand step scan, member role and signup prefill (#6216) (#6223)
  • autopilot: route auto-publish through the shared publish policy (#6226)
  • e2e: realign Playwright full-tier specs and mocks with current contracts (#5768) (#6235)
  • studio: show the server admission quote as the Studio estimate (#6208)
  • shell: mount mobile nav drawer only while open; restore inspector details action (#5768) (#6233)
  • email: align system email with app UI; stop blank /onboarding for signed-out clicks (#6228)
  • e2e: resolve workspace utils in API full and dedicated acceptance (#6239)
  • test: support scoped proactive execution fixture reads (#6246)
  • ci: record scheduled learning runtime recovery (#6238)
  • tenancy: honor the pinned superadmin tenant on list and path-param reads (#6176) (#6240)
  • library: keep previews on tag change, add tag colors, fix inspector layout (#6250)
  • ci: count distinct scheduled greens for recovery (#6248)
  • signup-prefill: use the shared readString helper instead of a local copy (#6267)
  • pricing: refresh provider rates instead of expiring them and alert on price changes (#6196, part 1) (#6217)
  • ci: clear the contracts import cycle and the marketplace serializer-drift error (#6283)
  • e2e: repair retained-route duplicates, admission-quote mock, referrals mock and instant-navigation URL (#5768) (#6277)
  • desktop: return to the page that started a browser sign-in (#6280)
  • e2e: address #6233/#6235 review follow-ups (#5768) (#6278)
  • mcp: validate brand generation and improve image delivery and previews (#6251)
  • pricing: resolve Replicate variant tiers from dispatched inputs (#6271)
  • ingredients: restore Library bulk delete and metadata operations (#6272)
  • inbox: add read controls and consistent unread dots (#6275)
  • tasks: recover workspace rollup after terminal executions (#6265) (#6285)
  • desktop: avoid loading sanitizer for provider sleep (#6290)
  • ci: refresh proactive acceptance fixture identity (#6299)
  • desktop: avoid repeating the translation catalog in prerenders (#6301)
  • visual: retry raw-query serialization aborts (#6300)

Performance

  • content-learning: batch the dependency graph walk per level (#6140)
  • dataset: restore the 100k consented snapshot under the 60s budget (#6187)
  • dataset: 75s consented 100k budget and cheaper projection copy (#6209)
  • app: prerender studio page shells for instant navigation (#6227) (#6229)
  • app: convert params-only pages to client routes under static shells (#6227) (#6281)

Refactoring

  • content-learning: split LearningRunService.reconcileDispatch (#6130)
  • agent: per-thread run records and transitionRun in the chat store (#6143)
  • agent: stream runtime writes run state through transitionRun (#6145)
  • share stableStringify and sha256Hex for integrity hashes (#6144)
  • crun: share quote input, DTO and endpoint logic between image and video (#6151)
  • agent: remove the global run fields; run state lives only in runsByThread (#6166)
  • crun: share preview-quote and generation dispatch lifecycles (#6186)
  • api: consolidate local isRecord/readString/readRecord copies (#5909, slice 1) (#6185)
  • consolidate remaining local isRecord/readString/readRecord copies (#5909, slice 2) (#6207)
  • migrate workflow contentHash and logical-write key to shared stableStringify (#6202)
  • crun: derive DTO model enums from one model-key tuple (#6214)

Tests

  • actions: lock the list_assets characterIds schema (#6121)
  • ingredients: pass BaseQueryDto instances in relationships controller spec (#6173)
  • billing: defer optional Postgres fixtures until suite hooks (#6288)
  • repair master media and onboarding race fixtures (#6292)

Build and CI

  • statically check changed migrations for deploy-time safety (#6125)
  • run runtime-acceptance contract tests in executable contracts (#6169)
  • run the server image PR guard on every PR so it can be a required check (#6194)
  • run learning runtime acceptance nightly as its own group (#6200)

Other

  • "fix(desktop): load sanitize-html under Bun with a CommonJS htmlparser2" (#6189) (#6192)

Features

  • admin: manage runtime settings and notification destinations (#5832)
  • analytics: add accessible metric definition tooltips (#5844)
  • skills: import bounded packages through API, app and CLI (#5853)
  • skills: read authorized immutable versions (#5856)
  • skills: inspect immutable versions in app and CLI (#5861)
  • brands: preview approved identity in settings and receipt inspector (#5864)
  • remix: finish external remix handoff coverage and crun quote guard (#5919)
  • posts: extract draft generation and expose accountless learning availability (#5879)
  • contracts: add saved-ad source allocation validation contract (#5878)
  • content-learning: log, bind and reward learning decisions for account-generated posts (#5944)
  • evals: golden set v1 exporter, anonymiser and synthetic pack (#5942)
  • extension: connect workspaces and capture posts and sources (#5855)
  • website: add noindex Turbo signup landing page (#5957)
  • brand: create brands from website URLs through agent and MCP tools (#5967)
  • receipts: add branded generation receipt completion ABI (#5952)
  • publishing: genfeed.ai-only articles, article public page, unified composer, brand switcher links (#5984)
  • discovery: move Trends and Trend Turnover from Analytics to Discovery (#5982)
  • media: authorize tenant grants and prepare protected previews (#5981)
  • desktop: make Genfeed Desktop cloud-only behind a local-mode flag (#5987)
  • desktop: put macOS window controls in the shell topbar (#5986)
  • content-eval: judge calibration suite and scoring-surface gate (#4924) (#5991)
  • brand-validation: persist receipt validation through the completion adapter (#6002)
  • admin: one Flags page with Studio surface flags (#6003)
  • onboarding: auto-scan, auto-save and approval-gated Continue in the brand step (#6013)
  • personas: share characters across brands (#6025)
  • library: show made-from and used-in references (#6026)
  • library: record permanent asset origin (#6027)
  • actions: merge media generation into one generate tool and load it by default (#6041)
  • mcp: merge discovery, scheduler, article and X read tools (#6048)
  • library: filter the Library by character (#6051)
  • mcp: merge media transforms, generation options and content generation tools (#6055)
  • personas: grant characters across organizations (#6063)
  • workflows: give scheduled-post sweep publishing its own queue and worker (#6104)

Fixes

  • workflows: preserve recorded actor across resume paths (#5849)
  • app: restore credits and streamline Messages, Studio, and Library (#5866)
  • workers: resolve the full DI graph in PR tests and wire PlatformSettingsModule (#5872)
  • workflows: accept ordering edges into for-each nodes (#5875)
  • ci: restore master E2E after admin runtime settings (#5874)
  • lifecycle-emails: emit contract-shaped delivery records (#5870)
  • agent-tools: redeem org-admin approved MCP actions and tenant-scope rate_ingredient votes (#5934)
  • storyboard: require subscription for character replacement (#5880)
  • analytics: post the per-post refresh to the registered route (#5928)
  • desktop: list brand-context and generation tools in CLI agent turns (#5920)
  • credits: make credit deductions idempotent across retries (#5877)
  • security: workflow resume membership, agent-tools context whitelist, untrusted-content gate gaps (#5940)
  • credits: charge late generation completions and expire stale intent holds (#5933)
  • skills: enforce edit capability on legacy skill writes (#5871)
  • harden presigned uploads, email verification and public article slugs (#5939)
  • validate ingredient ownership on POST /votes (#5963)
  • home: make attention, publishing and activity rows actionable (#5965)
  • remove hosted Apify billing-period budget gate (#5964)
  • deploy: verify serving clients and boot before schema contracts (#5962)
  • organizations: validate create-organization body against a request DTO (#5968)
  • admin: bind every admin surface to ADMIN_ALLOWED_IPS (#5966)
  • posts: edit X posts in the rich text editor on post detail (#5969)
  • security: make proxy trust deployment-aware (#5970)
  • learning: fence learning state per organization and never republish after provider success (#5938)
  • workers: run cron specs in CI and repair the rotted cron suite (#5956)
  • messages: list Messages pages above the inbox threads (#5975)
  • trends: record failed Apify fallbacks as failures (#5983)
  • publishing: keep successful scheduled publishes from ending FAILED (#5971)
  • admin: refuse to attribute loopback forwards to the admin allowlist (#5973)
  • extension: rename browser extension to GenFeed (#5985)
  • learning: take NO KEY UPDATE on organization rows in learning mutations (#5958)
  • admin: never attribute app-server API calls to the admin allowlist (#5976)
  • agent: raise prompt contrast and align the Outputs sidebar (#5974)
  • agent: title threads from the first intent only (#5989)
  • publish: never fail an unheld or unknown publish occurrence (#5993)
  • api: pass the new dependency in the library asset lifecycle spec (#5996)
  • publishers: verify uncertain provider text publishes before retrying (#5995)
  • admin: never attribute MCP and notifications API calls to the admin allowlist (#5994)
  • media: scope derivative variant bulk writes to the organization (#6000)
  • test: repair master spec typecheck after #5981 and #5982 (#6004)
  • api: repair master static contracts after #5981 (#6015)
  • repair master unit tests after today's admin merges (#6017)
  • ui: route original ingredient downloads through the caller handler (#6006)
  • test: persist the workflow execution the isolated publish lane links to (#6018)
  • ci: allow media rollout gates, review public media discovery, prune resolved spec entries (#6020)
  • content-eval: harden calibration evidence after #5991 review (#5999)
  • credits: recover stuck media holds with audited controls (#5997)
  • files: guard URL-upload downloads against SSRF (#5998)
  • notifications: render error toasts verbatim instead of appending "failed" (#6005)
  • ui: render the solid TikTok badge black instead of accent red (#6007)
  • app: translate the admin credit holds panel (#6023)
  • settings: org-scoped brands and members, brand usage attribution, settings cleanup (#6014)
  • api: scope single-brand access to the session organization (#6022)
  • api: align credit usage semantics across usage reports (#6024)
  • architecture: update protected route inventory counts after #6003 (#6028)
  • personas: restore master static checks after #6025 and #6014 (#6030)
  • ci: relocate cross-org-unsafe baseline lines after #6024 and #6027 (#6031)
  • personas: org-check character modify access and finish master static checks (#6034)
  • library: reclassify UNKNOWN origins when an upload completes (#6032)
  • mcp: disable PostHog model capture that breaks tool calls (#6033)
  • api: repair master Full Suite (api lint, generation integration spec) (#6042)
  • api: repair agent-orchestrator type error and repurpose spec after #6041 (#6044)
  • actions: keep generate cards, music models and type redirects consistent (#6047)
  • elements: restore platform default Studio elements (#6049)
  • api: scope list_assets and get_brands lookups correctly (#6052)
  • ci: restore master Full Suite (portless pin, extension routing, E2E) (#6054)
  • api: scope and bill MCP content generation and video merges (#6056)
  • api: never charge generate_content for an empty draft (#6057)
  • elements: scope default element writes for the CLOUD guard and address review (#6058)
  • library: harden the Library character filter after review (#6059)
  • personas: close character sharing gaps (#6060)
  • test: build the persona id with testId after #6060 (#6061)
  • test: wire personasService into the brand remix paid-draft integration graph (#6062)
  • mcp: drop the unused readNonEmptyString helper (#6064)
  • personas: use explicit is relation filters on persona grants (#6065)
  • test: align API specs with #6014 brand attribution and #6056 MCP brand resolution (#6068)
  • repair master static contracts and spec typecheck after the v0.2.1 merges (#6066)
  • ci: refresh Crun acceptance pins and provision the skill import test database (#6071)
  • presets: keep preset edits on the service patch mapping and refresh element caches (#6072)
  • test: align runtime acceptance fixtures with the media delivery queue and per-organization learning fence (#6074)
  • personas: record the character on every generated output (#6076)
  • personas: admit storyboard sources, narrow content exemption and serialize brand deletion (#6077)
  • personas: close character revocation bypasses (#6078)
  • personas: normalize internal media URLs before admission (#6080)
  • test: type the Crun quote personas mocks and register the quote services for admission coverage (#6081)
  • personas: serialize grants and brand deletion, refuse revoked linked outputs and link admitted characters (#6087)
  • personas: import the org lock helper used by grant creation (#6102)
  • test: type the transaction client with $queryRaw in the persona grants spec (#6112)
  • workers: bound trend ingestion health lookups and aggregate alerts (#6097)
  • system-events: harden outbox retries, held events and status logging (#6098)
  • workers: keep unverifiable unconfirmed publishes recoverable (#6088)
  • deploy: treat CREATE TRIGGER EXECUTE FUNCTION as static SQL in the migration safety guard (#6113)
  • billing: normalize Skills Pro buyer email and record receipt before provisioning (#6101)
  • logger: make sensitive-value redaction total (bounded depth, cycle-safe, error-aware) (#6083)
  • ci: declare @genfeedai/helpers at the root so nightly Playwright specs resolve it (#6108)
  • presets: enforce platform preset key uniqueness and scope findByKey (#6095)
  • workflows: retry transaction-start timeouts and isolate scoped trends tenants (#6084)
  • workflows: clear known unresolved system workflow wiring (#6099)
  • uploads: probe audio when confirming presigned uploads (#6086)
  • videos: fail orphaned records when a batch interpolation pair throws (#6096)
  • website: stop turning article fetch failures into cached 404s (#6091)
  • test: follow the reply post-watch scheduling into ScheduledPostPublishFollowUps (#6116)
  • test: count the scheduled-publish queue in the listening attribution fixture (#6117)
  • repair master typecheck and skill URL validation after the batch merge (#6118)
  • test: give the CLI skill import command test a 15s budget (#6119)

Performance

  • website: lazy-load the agent connect dialog (#6094)

Refactoring

  • workflows: drop the no-op replaceTerminalJob option (#5873)
  • agent: extract tool-round dispatch to restore the complexity ratchet (#6046)
  • agent: bring four orchestrator methods under the runtime-complexity limit (#6093)
  • agent: make the action catalog the single source of agent tools (#6100)
  • content-eval: drop evaluations.service from the text scoring surface (#6089)
  • studio: share one scoped offline outbox between draft and editor saves (#6105)
  • skills: share skill import limits and validators across app, CLI and API (#6106)
  • workflows: resolve the system workflow dispatch class by lookup (#6115)

Documentation

  • mcp: correct bare-URL toolset claim in saved remix handoff (#5867)

Tests

  • server: resolve each app's full DI graph in PR tests (#5876)
  • ci: refresh the branded receipt integration spec pin after #5958 (#5992)
  • workflows: typecheck the workflow engine adapter spec (#6085)
  • brands: cover the brand-kit mutation fence against stale history reads (#6082)

Build and CI

  • reduce runner pressure and add strict owner merging (#5863)
  • owner-merge: authenticate as the Genfeed bot GitHub App (#5918)
  • reporters: mint failure-reporter tokens from the Genfeed bot App (#5927)
  • full-suite: run on demand and at release, not on every master push (#5990)
  • keep the runtime acceptance owner contract in code instead of a repo variable (#6107)
  • write plaintext runtime acceptance evidence and drop the public key variable (#6111)

Dependencies

  • deps: refresh dependencies and migrate Stripe to 2026-09-30.endive (#6036)

Maintenance

  • ci: delete the owner merge queue controller (#5951)
  • skills: resync mirror for the unified generate tool (#6045)

Features

  • shell: inset rounded content panel, account in the rail, rounded cards (#5596)
  • agent: push per-thread run status over the agent-chat channel (server, phase 1) (#5640)
  • workflows: show example output on featured templates (#5498) (#5641)
  • studio: rename the Studio Edit surface to Editor (#5461) (#5639)
  • agent: apply pushed thread run status in the sidebar, with metrics and hardening (phases 2-3) (#5651)
  • workflows: pin Featured workflows from admin (#5511) (#5638)
  • studio: autosave, undo and ordered video seeding for the Editor (#5461) (#5660)
  • studio: list storyboard runs and move remix runs into Storyboard (#5464) (#5652)
  • agents: brand-colored bubble avatars for the Add agent marketplace (#5616)
  • agent: end ancient runs on the thread; refetch on focus only while the push channel is down (#5656)
  • website: add dedicated social growth OG cards (#5688)
  • agent: animate the empty new-conversation prompt border (#5701)
  • website: illustrate secondary pages and tailor agent installation (#5686)
  • trends: record provider refresh health and missed-window alerts (#5713)
  • website: dedicated founder OG cards and editorial headers (#5714)
  • studio: show honest generation estimates and available credits (#5722)
  • credits: settle async generation credits on completion, priced from the model row (#5661)
  • generate visual assets from code (#5698)
  • billing: add learning attempt ledger identity (#5736)
  • desktop: integrate runtime-aware generation costs and wallet scope (#5727)
  • storyboard: persist scoped drafts and preserve imported recovery (#5724)
  • research: bound paid competitor research scans (#5739)
  • eval: persist persuasion projection onto current master (#5741)
  • settle workflow generation credits on completion (#5745)
  • learning: pin 26-kind lineage and close run recovery races (#5742)
  • agent: hide dock for page bubble overlay (#5746)
  • mcp: add open_in_editor for the Studio Editor handoff (#5753)
  • models: add Higgsfield Genjutsu and HeyGen Video (#5749)
  • shell: put the topbar on the chrome plane (#5758)
  • agent: read the Studio generation estimate and balance (#5757)
  • storyboard: remix an owned video and replace a shot character (#5759)
  • studio: restore starter ideas on an empty generate session (#5776)
  • onboarding: pin first-run quality and add generation reviews (#5764)
  • add brand artifact fixtures and exact RGBA comparison (#5791)
  • retain bounded stylesheet evidence during brand extraction (#5794)
  • add brand generation contracts and onboarding support (#5793)
  • harness: compile immutable brand context and project receipts (#5797)
  • add agent source policy, candidate validation and reservation leaf (#5809)
  • add baseline materialization projection helper (#5817)
  • persist scoped website scan drafts (#5805)
  • persist brand generation receipts and add bounded storage reads (#5810)
  • add byte-bound brand artifact validation core (#5806)
  • review durable brand guides during onboarding (#5815)
  • api: compile pinned brand context with source receipts (#5804)
  • retain compiler replay inputs and saved brand guidance (#5818)
  • inspect saved brand generation receipts and prompts (#5814)
  • crun: integrate image and video generation with schema-driven controls (#5790)
  • learning: fence publication capture and materialize scoped baselines (#5796)
  • add scoped saved-ad source reader (#5836)
  • prepare turn-bound Knowledge citation resolution (#5843)
  • expose scoped Learning status and safety controls (#5837)
  • support scoped skill edits and personal forks (#5847)
  • add reviewed direct media clients and contracts (#5841)
  • articles: add resources, traffic history and reviewed MCP publishing (#5834)
  • website: connect agents in place from social landings (#5852)
  • knowledge: open authorized source recovery links (#5851)
  • recover saved storyboard character replacement receipts (#5839)
  • validate distinct direct media credentials and OpenAI images (#5848)
  • brands: review saved rules and preview pinned identity (#5838)

Fixes

  • desktop: merge the macOS title bar strip with the app shell (#5595)
  • e2e: exclude public platform-flags read from routed-org tenant request checks (#5597)
  • e2e: stop studio projects double-load and update list-page specs (#5599)
  • app: always show dock and inspector toggles; slim the agent dock (#5589)
  • agent: make Stop work on a hung tool and stop threads jumping on open (#5590)
  • campaigns: align status filter and New Campaign button (#5617)
  • workflows: allow now in the credit-reset discovery output contract (#5618)
  • agent: keep running threads in Working across thread switches (#5620)
  • workflows: isolate agent turns on their own queue and fail stuck turns loudly (#5623)
  • library: select-first asset click, tile label overflow, selection ring gap (#5624)
  • workflows: make every catalog template runnable (#5533) (#5635)
  • publishing: retry hidden-mirror write conflicts and sweep due posts every minute (#5626)
  • uploads: accept lowercase extensions; derive from content type (#5627)
  • workers: retry system-run jobs only on transient errors (#5637)
  • shell: open the task composer from any route; tidy rail tooltips and shortcut chips (#5645)
  • images: resolve reference ids to URLs in compiled dispatch (#5625)
  • credits: bill music and avatar video generation exactly once (#5654)
  • desktop: use the animated G mark as the only loader (#5632)
  • workflows: keep autopilot chain outputs within their action contracts (#5621)
  • oauth: tidy consent page and unlock after native-app handoff (#5619)
  • activity: show the credits a generation cost on its activity row (#5655)
  • ci: repair master after batch admin merge (#5664)
  • workflows: carousel arrows in the section header; Templates as ?view= tab (#5591)
  • ci: repair release-upgrade fixtures and E2E specs after today's merges (#5666)
  • deps: update supported releases and synchronize Remotion contracts (#5677)
  • ui: clean up card-wall localization and dead code (#5682)
  • e2e: escape exact chat thread URL assertions (#5707)
  • workers: retain evidence for recurring BullMQ stalls (#5712)
  • deploy: restore Marketplace API and frontend release lane (#5711)
  • harden Studio draft recovery and clip source boundaries (#5710)
  • resolve email review follow-ups and Studio gallery pagination (#5690)
  • react: repair audited hook lifecycles and enforce frontend lint guards (#5680)
  • library: bound asset rows and unify inspector opening (#5719)
  • agent: send brand-scoped picked posts as context (#5709)
  • workflows: make seeded template instantiation idempotent (#5723)
  • actions: isolate approval hashing from browser imports (#5732)
  • retain untrusted content audit origin (#5733)
  • apify: expose run settlement acknowledgement (#5735)
  • quote brand context and gate native MCP results (#5731)
  • visual-code: validate renderer config and prove library flow (#5734)
  • storyboard: show real shot previews and named outputs (#5721)
  • storyboard: catalog user-visible copy (#5743)
  • api: validate clip, trend and optimization model output (#5737)
  • storyboard: add CAS conflict matcher and funding-store interface (#5738)
  • reject disabled idea-batch quote, start, and retry (#5750)
  • credits: isolate BYOK quotes, bind dust, and reservation expiry (#5752)
  • shell: explain disabled dock and inspector toggles (#5755)
  • visual-code: narrow renderer URLs and publish generation MCP tools (#5751)
  • app: show a loader while switching organizations (#5754)
  • videos: reject unsupported zoom on MCP merge (#5756)
  • release: remove Marketplace deployment ownership (#5761)
  • restore Motion, storyboard, agent, and bootstrap regressions (#5775)
  • onboarding: require saved brand context for first drafts (#5783)
  • harden merge responses and parallelize Studio history (#5784)
  • recover genuine auth context and CI contracts (#5800)
  • storyboard: persist and recover character replacement intents (#5799)
  • allow unsubscribed platform admins to create organizations (#5802)
  • learning: bound dataset snapshot queries (#5792)
  • unify workspace chrome, activity and asset review (#5777)
  • unblock visual renderer readiness and add connected acceptance (#5795)
  • agents: authorize trusted supervised text drafts (#5819)
  • automation: preserve proactive runs and show platform approval progress (#5803)
  • e2e: align browser fixtures with current app contracts (#5822)
  • api: align integration fixtures with runtime dependencies (#5823)
  • workflows: route compensation only through active failure paths (#5824)
  • ci: repair final connected acceptance setup and evidence (#5825)
  • ci: validate visual exclusions and unallocated Crun cleanup (#5826)
  • ci: align runtime fixtures and preserve deferred Crun frames (#5828)
  • ci: migrate isolated acceptance databases in canonical schemas (#5827)
  • ci: repair final-master connected acceptance fixtures (#5831)
  • repair final release acceptance and review expiry (#5842)
  • ci: expose master SHA verdict and reject stale green release evidence (#5846)
  • accept Library HEIC uploads without preview hangs (#5850)
  • repair master agent, dataset and learning acceptance failures (#5854)
  • ci: repair combined master fixtures and image download (#5860)
  • reject unsafe skill ZIP packages before import (#5840)
  • workers: unblock v0.2.0 production worker boot (#5865)

Refactoring

  • agent: make the thread summary the only run-state source for the sidebar (#5628)
  • pricing: introduce authoritative media quotes and private pricing reconciliation (#5696)
  • split MCP and agent dispatch under complexity caps (#5762)
  • ci: clean up and consolidate GitHub workflows (#5830)

Tests

  • analytics: run the top-content SQL against a real Postgres (#5575) (#5631)
  • restore dock and batch review lock E2E (#5705) (#5708)
  • replace bulk pruning with reproducible fixture witnesses (#5659)
  • e2e: align workflow gallery routes and rail avatar (#5729)

Build and CI

  • consolidate bounded hosted runtime acceptance (#5811)

Dependencies

  • deps: weekly deps:update (#5662)

Maintenance

  • prisma: drop the retired organization_settings.isFastlaneEnabled column (#5567) (#5630)

Features

  • agent: brand context parity, voice from own posts, CLI runtime and chat pricing
  • website: add X growth landing page at /x-growth (#5170)
  • publishing: full-page post composer with overlay preview (#5174)
  • website: offer self-serve and book-a-call on every landing page (#5175)
  • publishing: schedule a day of tweets and get notified of replies (#5176)
  • pricing: split platform margin into generation and agent-chat knobs (#5178)
  • onboarding: auto-onboard from the work email domain (#5179)
  • skills: pin all free content skills from genfeedai/skills (#5260)
  • content-eval: add harness foundation with spend cap and provenance (#5247)
  • media: perceive assets into frames, OCR, transcript and scene description (#5251)
  • skills: reject app procedures that are also published upstream (#5276)
  • media: classify perceived media for moderation behind a provider adapter (#5258)
  • media: persist typed vision flags and make media gates tighten the publish policy (#5262)
  • media: run text decisions on transcripts and scene descriptions (#5267)
  • media: benchmark, threshold policy and outage drill for media gates (#5269)
  • knowledge: pick Knowledge in the shared Library picker in Agent and Studio (#5266)
  • tenancy: make billing-account scope a first-class, guard-visible tenant scope (#5231)
  • notifications: link the bell and Messages for X replies (#5195)
  • ci: scope spec typecheck to changed workspaces (#5244) (#5273)
  • billing: gate BYOK behind Pro and remove the BYOK platform fee (#5264)
  • source-collector: register YoutubePublicProvider for public YouTube collection (#5159) (#5297)
  • articles: add Meta Muse, Grok Bot and Claude Code MCP connector articles (#5359)
  • website: add Meta Muse and Grok Bot connector pages, SEO-upgrade agent client pages (#5321)
  • shell: persistent app rail and Codex-style inset shell (#5346)
  • website: 154 client × channel SEO pages, OAuth-first /agent hub, refreshed /mcp copy (#5354)
  • website: add per-platform growth landing pages for social bio links (#5370)
  • move manual create, rewrite and reply actions off the agent chat (#5349) (#5367)
  • shell: app rail follow-ups — registry, shortcuts, palette, analytics, badges (#5310) (#5369)
  • workflows: route background system-workflow producers off the interactive queue (#5378)
  • website: move social growth pages to short platform URLs (#5382)
  • review: run batch rewrite as a background job with in-page progress (#5385)
  • notifications: one recording API with policy-derived alerts (#5386)
  • shell: selection-driven context sidebar with the Studio asset panel (#5409)
  • website: agent-first CTAs, one done-for-you page with booking (#5411)
  • platform-settings: move product feature switches from env to admin (#5421)
  • shell: show Library, Publishing review and Ads detail in the context sidebar (#5429)
  • shell: show Knowledge sources and workflow runs in the context sidebar; move scoped export to the analytics toolbar (#5438)
  • brands: edit the brand handle inline with a uniqueness check (#5470)
  • integrations: per-account settings dialog; ask to import on connect (#5490)
  • ui: define collection layout rules (#5487)
  • shell: put the agent in a bottom dock on product routes (#5500)
  • api: persisted Studio batch projects (#5491)
  • consolidate interrupted sessions and recovery fixes (#5551)
  • ui: apply detail hierarchy to record pages (#5483) (#5569)
  • enforce email verification only when a mailer is configured (#5579)
  • publishing: reschedule a post from the context sidebar (#5580)

Fixes

  • agent: pin switched threads above the prompt bar (#5163)
  • default the hosted SSM ignore list to empty (#5156)
  • collapse changelog releases and quiet help FAQ borders (#5160)
  • studio: align clips chrome, split batch history, list editor projects (#5165)
  • agent: show labeled typed models and honor Admin text default (#5167)
  • api: complete product text through OpenRouter, not Replicate (#5166)
  • admin: make the models catalog table usable (#5168)
  • oauth: return to the originating page after provider connect (#5169)
  • skills: allow exporting the system catalog version (#5173)
  • api: lock billing fields and target org on organization settings (#5177)
  • knowledge: accept etag/lastModified in URL source extract contract (#5180)
  • workflows: stop silent job drops and fix Proactive Agent Strategies contract gap (#5181)
  • agent: remove Jev from auto-model routing, cap task/pattern decisions at shadow (#5182)
  • trends: deserialize JSON:API trend detail response on the client (#5183)
  • api: fall back to original prompt when enhancement fails (#5184)
  • tooling: stop Bun auto-install from resolving TypeScript 7 in guards (#5200)
  • billing: create a user, receipt link, and CRM lead for Skills Pro and subscription purchases (#5196)
  • publishing: strip stored HTML from release titles on rail, grid, list and queue (#5190)
  • e2e: fix nightly prefilled-remix failures (stale spec + watchlist crash) (#5201)
  • cli: load command modules at collection time in command tests (#5216)
  • workers: notify the owner when a scheduled publish fails before the provider (#5192)
  • text-gen: resolve drafts, enhancement, and article text through Admin default model (#5185)
  • credits: scope CreditBalance reads on the reservation-release path (#5191)
  • ci: make native issue metadata triage best-effort on permission errors (#5224)
  • publishing: link next-24h queue items to their release drawer (#5218)
  • skills: tolerate transient skill resolution failures and neutralize duplicate-skill wording (#5226)
  • scheduler: validate channel targets on every path that schedules a post (#5202)
  • agent: keep onboarding threads on the org-scoped route (#5230)
  • credits: type the wallet query-shape spec client (#5237)
  • agent: settle cancelled handoffs and skip redundant cache evictions (#5229)
  • publishing,changelog: link home releases correctly, scope heading removal to tag (#5225)
  • trends: keep uncovered platforms visible in Source health (#5235)
  • brands: classify brand-scrape failures with stable error codes (#5199)
  • batch,clips: guard batch detail id mismatch, full-width history rows, stable Clips chrome (#5221)
  • agent: scope automatic chat retrieval to the thread brand and cite it (#5198)
  • content-intelligence: make generation inputs satisfy their workflow contracts (#5261)
  • credits: tag a wallet with a billing account only after attachment is proven (#5256)
  • ci: stop superseded pull request runs from painting Tests Gate red (#5233)
  • hooks: keep workflow execution history resilient to stats failures (#5220)
  • i18n: make byok-usage credit category an ICU-safe selector (#5223)
  • research-access: bound collection recovery matching and reconcile unmatched starts (#5222)
  • test: repair E2E fixture drift breaking scheduled API E2E Full (#4375) (#5253)
  • knowledge: refresh the Library list while sources are processing (#5257)
  • workflows: mark the webhook trigger endpoint @Public() (#5248)
  • knowledge: ground Agent drafts in the selected Knowledge and show receipts (#5255)
  • prompts: enhance prompts with the Admin default text model (#5268)
  • credits: bill prompt enhancement at its fixed price and stop masking guard errors (#5272)
  • stop proactive-agent-strategies sweep from starving interactive agent turns (#5252)
  • settings: harden agent model defaults and policy override persistence (#5228)
  • api: reject surplus fields in presented Bearer authorization headers (#5227)
  • remix: recover stuck scene stages and bill only usable scene output (#5245)
  • brands: require an explicit brand for generation; per-member current brand (#5232)
  • workers: register the workflow-execution queue for the schedule registry (#5278)
  • app: await the email-sent state in auth form tests (#5279)
  • architecture: repair check:architecture and wire it into CI (#5285)
  • billing,notifications: notify the operator on every revenue event (#5286)
  • analytics: filter the signup->checkout funnel alert on paid plan intent (#5288)
  • prisma: backfill member currentBrandId for orgs without a live brand (#5298)
  • prisma: repair three Postgres migration tests and run them in CI (#5305)
  • billing: grant BYOK paid access via billing account or operator tier (#5301)
  • brands: make brand delete atomic and remove soft-delete bypass (#5312)
  • billing-accounts: authorize the cross-org step when linking a second organization (#5300)
  • terminal: reject malformed Bearer headers before cookie fallback (#5348)
  • brands: resolve API-key generation brand through a single resolver (#5299)
  • analytics: point Insights page at routes InsightsController actually serves (#5303)
  • billing: keep operator revenue alerts accurate and nonblocking (#5353)
  • analytics: keep signup and onboarding funnel events consistent (#5356)
  • shell: align chrome rows, panel tabs, and topbar controls (#5320)
  • websockets: reject malformed Bearer header instead of falling back to auth.token (#5351)
  • media-assessment: preserve vision gate safety and recovery (#5360)
  • agent-orchestrator: reject unusable agent model overrides consistently (#5358)
  • analytics: enforce HTTPS and detect failed server funnel capture (#5352)
  • ci: cover affected app and UI specs in spec typecheck (#5364)
  • billing: thread the resolved BYOK key into Replicate/Fal dispatch (#5307)
  • workflow-executions: page stale-pending recovery with a keyset cursor (#5355)
  • ui: stack footer links in one column on phones (#5368)
  • ci: unblock Static Checks and spec typecheck on master after #5346 and #5361 (#5371)
  • billing-accounts: scope the full snapshot to billing-account roles (#5377)
  • billing: thread the resolved BYOK key into text-completion dispatch (#5379)
  • website: mobile menu reaches log in, pricing first, footer mirrors topbar (#5383)
  • billing: route remaining text generation through one BYOK resolution (#5390)
  • website: mobile spacing, heading sizes, contrast and tap targets (#5392)
  • auth: return opaque user IDs from whoami (#5410)
  • workflows: show batch runs in customer execution history and lift the automation quarantine (#5405)
  • agent: send the routed organization header on agent API requests (#5396)
  • review: bill a batch rewrite item exactly once across worker crashes (#5420)
  • app: canonicalize bare protected paths under the Playwright bypass (#5414)
  • services: send the routed organization header from every raw tenant client (#5423)
  • workers: stop the deploy drain cancelling live jobs and fix X reply pagination stall (#5432)
  • media: isolate translation keys, gate moderation on minors evidence, send media to OpenRouter (#5430)
  • settings: refresh saved org settings past both bootstrap caches and lift the settings quarantine (#5428)
  • ci: alias contracts subpaths to source in the scripts/ci vitest config (#5437)
  • desktop: keep local CLI agent turns inside the Genfeed boundary (#5431)
  • ci: build every package when a frontend-graph workspace is in spec typecheck scope (#5435)
  • content-eval: accurate spend reservation, Fal completion polling, calibration gate, reference-aware judging, match-scoped disagreement (#5434)
  • publishing: route release titles and account-clear resets correctly (#5433)
  • api: complete BYOK Replicate runs, schedule release videos, accept completed enqueues, track read-receipt cursors (#5436)
  • agent: scope task links, reconcile ui-action results and lift the agent E2E quarantine (#5441)
  • api: poll BYOK continuations with the org key, skip the platform training webhook for BYOK, recompute release target category (#5439)
  • analytics: repair analytics endpoints and lift the analytics E2E quarantine (#5440)
  • analytics: one IPlatformComparison contract for platform comparison (#5442)
  • ui: set secondary text in the muted token so it reads on dark cards (#5457)
  • props: stop props type-check pulling agent and ui components (#5509)
  • videos: scope resize source lookup and publish completion event (#5516)
  • app: translate the brand overview copy and pin the workspace credits locale (#5538)
  • brands: bring brand relocation back under its complexity ratchet (#5545)
  • release: read the publish guard version from the environment, not argv (#5542)
  • videos: scope portrait and caption source lookups to the caller organization (#5535)
  • users: restrict PATCH /users/:userId/settings to the caller or a superadmin (#5539)
  • videos: scope the caption lookup in createVideoWithCaptions to the caller organization (#5536)
  • videos: skip soft-deleted captions in the createVideoWithCaptions fallback (#5541)
  • seo: reconcile metadata and preserve crawl evidence (#5537)
  • turbo: hash alias-reached sources in type-check inputs (#5513)
  • api: accept opaque Better Auth user IDs in DTO validation (#5512)
  • editor: open template projects read-only with Duplicate to edit (#5489)
  • api: scope integration and user-settings writes to the caller (#5546)
  • app: clear the spec typecheck and page-contract failures left by #5551 (#5563)
  • clear the tenant-scope, import-cycle and route-inventory contract failures on master (#5564)
  • api: register the batch idea dispatch action and repair batch-generation specs (#5568)
  • app: repair the master unit tests and app spec typecheck (#5570)
  • test: give the Button tooltip preload hook an explicit timeout (#5574)
  • evaluations: sweep evaluation frames again after a sampling timeout (#5573)
  • workers: persist the deploy drain's cancel intent so an outage never counts as a strategy failure (#5577)
  • clips: refuse an upload prepared for a brand outside the organization (#5578)
  • analytics: count saves as engagement in per-post time series and top content (#5575)
  • agent: guard plan updates by plan identity so a stale approved plan cannot replace a newer one (#5576)
  • workflows: count custom negative-prompt terms once in the selector summary (#5583)
  • ci: give the Coverage workflow the services and aliases its jobs need (#5584)
  • agent: block local-CLI thread sends on web with a switch-to-hosted action (#5582)
  • clear the file-size ratchet failure #5577 left on master (#5586)

Performance

  • website: render marketing pages on the server (#5401)
  • website: take auth, toaster and hero animation off the critical path (#5452)
  • website: load Sentry and the logger after the page, fix the bundle collector (#5486)
  • website: cut route-specific first-load JavaScript on the heavy routes (#5544)

Refactoring

  • mcp: simplify the mcp.genfeed.ai setup page, add Muse/Grok Bot and other-client tabs (#5347)
  • website: drop legacy redirects (#5384)
  • prompts: share the prompt brand-context and text helpers (#5412)
  • website: remove the /dfy landing page (#5408)
  • shell: delete the legacy workspace inspector so the context sidebar is the only right column (#5496)
  • batch: retire Fastlane and gate idea batches with the batch_ideas flag (#5565)

Tests

  • api: fix master spec typecheck in the proactive sweep fixture (#5275)
  • e2e: read brand memory retrieval from KnowledgeContentRetrievalService (#5280)
  • e2e: give every seeded org a real brand for currentBrandId (#5219) (#5282)
  • e2e: pass every PlatformSchedulesProcessor argument explicitly in the proactive runs spec (#5284)
  • contexts: cover unscoped/loading, switch-verification, and cross-tab races (#5283)
  • credits: match insufficient-credits refusal fields instead of a second instance (#5287)
  • e2e: restore API E2E after operator revenue notifications (#5289)
  • e2e: detect handled application ErrorBoundary failures in route smoke checks (#5302)
  • e2e: align nightly onboarding, usage, studio edit and accounting specs with the shipped UI (#5363)
  • prisma: give the AdPerformance Postgres migration cases a 60s timeout (#5366)
  • e2e: catch late ErrorBoundary fallbacks in route checks and fix the routes that render them (#5361)
  • ci: guard spec-typecheck scope query against filter regression (#5373)
  • e2e: delete the never-baselined visual regression spec (#5394)
  • e2e: align discovery specs with the shipped desk and lift their quarantine (#5402)
  • review: wait for rendered rewrite progress, not the refresh callback (#5413)
  • e2e: align publishing, calendar and error-state specs with the shipped desk and lift their quarantine (#5422)
  • e2e: assert the settled calendar view, not the pre-redirect breadcrumb (#5453)
  • e2e: align the Playwright suite with the reframed library, clips and routes (#5566)
  • restore integrations and workflows coverage thresholds (#5581)
  • e2e: scope the schedule button to the sidebar card after #5569 (#5585)
  • e2e: assert the visible brand switcher in the release workspace smoke (#5587)

Build and CI

  • cut runner waste and make master validation finish (#5362)
  • validate trunk on push, diff PRs against their real base, split workspace tests (#5376)
  • typecheck: select tsconfig-alias consumers in PR type-check (#5534)

Maintenance

  • contexts: remove unreachable global ModalPost instance (#5189)
  • contracts: remove ModalEnum.POST, keep ModalPost's live openers (#5194)
  • changes: list @genfeedai/client in the analytics platform contract note (#5456)
  • release v0.1.77 (#5469)
  • ci: remove the package API changenote check and .changes/ (#5508)
  • memory: keep only decisions and process in repo memory (#5514)

Features

  • mcp: emit tool annotations on every MCP tool (#4987)
  • website: add per-agent connect pages and llms.txt (#4988)
  • cli: finish PKCE login status, logout, and private credentials (#4999)
  • mcp: add named toolset profiles for the bare MCP URL (#4990)
  • mcp: replace legacy iframe responses with portable content cards (#5031)
  • mcp: add media upload and get_post tools (#4992)
  • unify prompt enhancement across Studio, Agent and MCP (#5015) (#5030)
  • notifications: add durable standalone signup and billing alerts (#5037)
  • onboarding: deliver brand content before account setup (#5027)
  • campaigns: create plans with AI and make campaign controls usable (#5047)
  • ads: search and remix competitor visual ads in app (#5088)
  • add public YouTube adapter and remove fabricated LinkedIn trends (#5094)
  • remix: resolve destination identity and guard source media (#5097)
  • remix: save an editable concept before generation (#5113)
  • research: enforce paid access, recovery, and cost reconciliation (#5116)
  • skills: capture immutable scoped skill versions (#5112)
  • add durable multi-scene brand remix (#5137)
  • agents: connect recurring content feedback and supervised review (#5136)
  • add external remix quote and MCP handoff (#5134)

Fixes

  • onboarding: forward referral ref onto app sign-up links (#4986)
  • app: improve navigation and card-level content loading (#4993)
  • api: bound cumulative PDF stream decompression (#5002)
  • e2e: reject malformed Expert Path item reviews (#5003)
  • scripts: keep serializer drift parsing through comments (#5001)
  • workers: stop OAuth client cleanup when a batch deletes nothing (#5000)
  • api: use public origin for external API URLs (#5005)
  • mcp: return brand, media, and workflow fields agents can use (#5017)
  • agent: hide follow-up chips while the task panel owns the composer slot (#5018)
  • api: allow the console origin to call the API (#5023)
  • app: fresh conversation for New post; publishing toolbars stay on one row (#5020)
  • mcp: clarify ads list errors and align LinkedIn connection status (#5025)
  • workflows: stop Daily Trends Digest from reporting no-trends when topics exist (#5026)
  • app: show connected accounts in agent sidebar; align Integrations table with settings pages (#5021)
  • actions: repair nested input contracts across agent and MCP tools (#5024)
  • brands: autofill empty brand logo and banner from social and website (#5022)
  • workflows: compile advertised tool schemas once in nested contract spec (#5038)
  • auth: align email confirmation icon with its message (#5028)
  • discovery: remove duplicate platform logos from follow results (#5041)
  • mcp: resolve brand interview and ads research in the API (#5043)
  • credentials: invalidate access bootstrap cache on credential writes (#5039)
  • api: persist storage identity for direct uploads (#5053)
  • config: reject partial media signing configuration (#5055)
  • publishing: restore manual drafts and direct post generation (#5049)
  • api: protect ingredient ownership and tag assignments (#5056)
  • agent-ui: remove divider behind inspector composer (#5067)
  • security: close untrusted live mode and retain scoped audits (#5058)
  • agent: close mutation admission and mode persistence gaps (#5059)
  • agent: show preparation progress before context resolution (#5054)
  • ads: enable public competitor discovery without ad accounts (#5046)
  • agents: restore proactive scheduling and run accounting (#5061)
  • publishing: align account identities and badges with integrations (#5068)
  • models: use sourced provider logos across the catalog (#5074)
  • workflows: register analytics sync through its domain owner (#5083)
  • uploads: reject remote redirects and preserve platform labels (#5084)
  • knowledge: handle unreachable sources during refresh (#5086)
  • agent: track agent runs per run, not per thread (#5040)
  • agent: emit historical acceptance before worker execution (#5089)
  • billing: allow funded free generation and harden credit grants (#5079)
  • agent: follow concurrent thread streams independently (#5090)
  • keep fabricated sources out of saved Discovery reads (#5096)
  • make hosted Apify budget reservations atomic (#5098)
  • skills: preserve configuration through edits and forks (#5101)
  • browse saved ads without triggering paid collection (#5103)
  • skills: pin and validate the public product catalog (#5107)
  • skills: contain invalid catalog identity discovery (#5110)
  • skills: preserve selected skills across media generation (#5106)
  • skills-pro: redeem a purchase without an app session (#5111)
  • save web and extension post imports as sources (#5115)
  • imports: preserve remix context and scoped import results (#5119)
  • skills: authorize personal skills and pin executed versions (#5122)
  • auth: reject malformed optional authorization headers (#5120)
  • research: fence collection starts and reconcile provider usage (#5123)
  • activity: explain what credits were used for (#5130)
  • notifications: deliver signup alerts from the hosted notifications task (#5140)
  • app: use query parameters for frontend list filters (#5135)
  • credits: record and explain every ledger balance change (#5138)
  • automation: centralize customer activity labels, visibility and counts (#5129)
  • scheduler: align publishing readiness with channel support (#5131)
  • keep workflow run history mounted when statistics are not a summary (#5141)

Refactoring

  • app: remove orphaned workflow and snapshot UI (#5066)
  • app: remove unused legacy LLM settings store (#5073)
  • app: remove unused workflow JSON validator (#5076)
  • remove private catalogs and operator knowledge from public source (#5052)
  • app: remove the unused Replicate client (#5139)

Documentation

  • record import boundaries and feature inventory (#5109)

Tests

  • e2e: assert Publishing New post by accessible name (#5048)
  • align launch contract with shared media enhancement (#5062)
  • contexts: cover explicit organization switch boundaries (#5060)
  • e2e: align config and event fixtures with runtime contracts (#5057)
  • e2e: return contract-correct cost summary fixtures (#5071)
  • e2e: align onboarding voice fixture with selected brand (#5085)

Dependencies

  • deps: refresh workspace packages and action pins (#5118)

Maintenance

  • release v0.1.76 (#5142)

Features

  • app: use the shared command palette in settings (#4701)
  • integrations: accounts table with a Connect account modal (#4708)
  • mcp: opt-in toolsets and discovery meta tools for tools/list (#4709)
  • agent: add Auto, Manual and Plan agent modes (#4710)
  • musics: add Eleven Music, Lyria 3 Pro, and Mureka V9 providers (#4704)
  • studio: add lyrics, vocals, and duration controls for music (#4706)
  • agent: hand off Agent generations to Studio (#4716)
  • brand-os: persist approved identity and portable design exports (#4787)
  • analytics: calculate deterministic account outlier baselines (#4797)
  • video: send Seedance identity stills as reference images (#4810)
  • analytics: persist account outlier baselines (#4812)
  • workflows: attach locked identity refs on clip-chain segments (#4820)
  • videos: accept character handles on clip-chain runs (#4845)
  • workflows: gate clip-chain segments on continuity QA (#4853)
  • analytics: ship outlier filter surfaces and replication loop (#4848)
  • agent: carry brand identity into Studio handoff (#4847)
  • knowledge: automate Knowledge in workflows (#4849)
  • skills: surface the skill catalog in the composer / palette (#4840)
  • agent: complete the external content journey (#4850)
  • oauth: make MCP OAuth interoperable with any spec-compliant client (#4891)
  • harness: pack activation receipts and SSM-fed profile seed task (#4859)
  • publishing: add per-platform media readiness checks (#4900)
  • ai: add typed-decision contract, service and providers (#4901)
  • expert-path: ship the Expert Path onboarding and distribution loop (#4905)
  • content-intelligence: type pattern analyzer labels with typed decisions (#4914)
  • ai: make the typed-decision provider an admin setting (#4913)
  • agent: gate untrusted tool results on an injection decision (#4918)
  • media: sign media URLs from object keys and migrate the ingredient batch path (#4939)
  • workers: classify discovered model category with a typed decision (#4915)
  • tasks: decide routing output type with a typed decision (#4917)
  • agent: decide auto-routing tier with a typed decision (#4929)
  • reply-bot: classify comment intent with a typed decision (#4930)
  • signup: record where each new user came from (#4955)
  • workers: delete abandoned OAuth dynamic client registrations (#4958)
  • media: sign CDN media URLs at the response boundary (#4972)
  • website: rebuild /about as a structured company profile (#4960)

Fixes

  • youtube: request minimum OAuth scopes and disclose Google data use (#4699)
  • agent: keep selected brand when opening Agent (#4674) (#4687)
  • shell: route Studio menu entry to Studio (#4671) (#4690)
  • library: play music and voice assets in list and grid views (#4691)
  • analytics: scope the analytics inspector to the route brand (#4692)
  • workflows: separate edge selection from node config (#4693)
  • app: hide org/brand switchers on personal settings routes (#4694)
  • workflows: stop duplicate/empty-save bugs, keep clone's source brand (#4700)
  • musics: honor the selected music model at execution time (#4697)
  • billing: stop Stripe invoice webhooks 500ing on credit grants (#4711)
  • studio: brand voice and prompt enhance (#4703)
  • analytics: keep cross-organization superadmin reads aggregated (#4714)
  • instagram: resolve the authorized account on connect (#4705)
  • settings: keep API key mint enabled on empty or failed list (#4719)
  • e2e: register ProviderAccountPurgeService in E2ETestModule (#4721)
  • workflows: let UI own store error logs (SLOP-067) (#4761)
  • ui: report swallowed client errors (SLOP-041) (#4757)
  • api: allow database keywords in literal content (#4789)
  • ci: separate nightly tracker and project credentials (#4791)
  • api-keys: enforce authorized organization scope (#4792)
  • api: index workflow snapshot lookups by thread identity (#4793)
  • settings: restore palette destinations and anchor navigation (#4794)
  • music: enforce model settings and secure provider URLs (#4795)
  • cli: recover media waits from durable status (#4800)
  • analytics: validate route brands before adapter binding (#4801)
  • workflows: preserve durable autosave edits and clone scope (#4802)
  • command-palette: refresh results after registry changes (#4804)
  • studio: close the remaining Studio handoff review findings (#4798)
  • billing: validate stripe callback identity before writes (#4808)
  • models: preserve curated legacy selection and valid qualities (#4807)
  • agent: persist approvals and enforce current generation estimates (#4811)
  • credentials: safely settle Instagram and provider identities (#4809)
  • ui: improve generation recovery and shared interactions (#4806)
  • music: guard model metadata before case normalization (#4816)
  • brands: classify invalid generated brand profiles as 422 (#4814)
  • models: repair stale quality values and propagate catalog lifecycle (#4815)
  • billing: acknowledge deterministic stripe failures and pin grants (#4818)
  • billing: classify subscription preview failures with typed exceptions (#4819)
  • billing: align generation quotes with charging through one pricing contract (#4821)
  • billing: expect identity_stale for guarded-write misses in the E2E grant spec (#4827)
  • billing: classify plan-change failures and scope the subscription lookup (#4829)
  • billing: stop collapsing subscription read failures into a generic 500 (#4832)
  • billing: show the classified subscription failure in the plans card (#4830)
  • workflows: make the package type-check and clear its 218 errors (#4837)
  • billing: grant subscription.created credits by normalizing status (#4835)
  • brands: show the classified brand voice failure in the agent card (#4838)
  • bots: consume callback context atomically (#4843)
  • ci: let nightly reporters update trackers (#4841)
  • rebuild the Higgsfield provider against the documented REST catalog (#4839)
  • e2e: stop Tests Gate from auto-closing nightly Playwright trackers (#4844)
  • onboarding: guard brand-page DOM insertion races (#4846)
  • billing: reserve clip-chain credits before the first segment (#4842)
  • video: allow 1080P on h3-max routes (#4852)
  • agent: consume brand-identity proposals under the generation lock (#4851)
  • billing: reserve live-session credits against a ceiling (#4855)
  • knowledge: keep last-good chunks and finish failed refresh runs (#4856)
  • knowledge: retire superseded chunks and type transcript credit holds (#4857)
  • agent: stub better-auth/react so agent tests stop leaking session cleanup timers (#4892)
  • music: align Mureka with its published API contract (#4860)
  • knowledge: repair defects found in the post-merge review of Knowledge automation (#4897)
  • brands: refuse relocation while the brand has an open live session (#4899)
  • onboarding: shrink the ungated signup grant and dedupe mission rewards (#4861)
  • harness: request overall in persuasion prompts and normalize scores (#4894)
  • credits: match unsettleable holds by type, not by message (#4904)
  • billing: gate clean ingredient exports behind a paid entitlement (#4893)
  • ai: send the TypeSafe System One request shape the API accepts (#4910)
  • ci: stop secretlint rejecting /root path segments (#4919)
  • api: break the harness-profile seed's barrel import cycle (#4941)
  • ci: clear pre-existing secretlint findings in test fixtures (#4942)
  • api: only send credit balance alerts to organizations that have paid (#4947)
  • oauth: unblock Cursor and Grok Bot MCP OAuth (#4954)
  • app: keep the PostHog project token through the privacy scrub (#4956)
  • media: keep storage identity server-owned and preserve encoded keys (#4973)
  • media: derive ingredient media URLs and drop the stored column (#4975)
  • media: restore the external-media fallback and store AI-influencer images before GENERATED (#4985)
  • test: give the E2E ConfigService mock a media URL config (#4994)

Refactoring

  • videos: move background music from generation to the Studio editor (#4702)
  • api: type selected models on requests (SLOP-034) (#4740)
  • workflows: reuse image input schema predicate (SLOP-026) (#4741)
  • config: simplify environment file selection (SLOP-050) (#4742)
  • api: unify credit pricing branches (SLOP-033) (#4756)
  • auth: remove unused Clerk compatibility exports (SLOP-064) (#4745)
  • api: centralize optional provider lookup (SLOP-032) (#4747)
  • workflows: unify executor record guards (SLOP-055) (#4758)
  • workflows: flatten partial execution planning (SLOP-073) (#4760)
  • helpers: split mobile deep links by platform (SLOP-073) (#4762)
  • api: separate X Ads reporting traversal and totals (SLOP-073) (#4764)
  • discord: clear remaining backend lint warnings (#4769)
  • slack: clear remaining backend lint warnings (#4770)
  • telegram: clear remaining backend lint warnings (#4772)
  • files: remove dead utilities and lint warnings (#4774)
  • mcp: clear remaining backend lint warnings (#4776)
  • simplify transfer statuses and warmup actions (SLOP-048) (#4744)
  • modals: share global modal props (SLOP-069) (#4752)
  • workflows: use canonical analytics brand config (SLOP-056) (#4759)
  • api: remove unused state and simplify optional checks (#4771)
  • api: narrow runtime values and remove unused AWS wrapper (#4777)
  • api: simplify stateless filter utility exports (#4778)
  • api: simplify stateless validation and parsing helpers (#4780)
  • api: finish shared utility warning cleanup (#4781)
  • client: remove model interface bridges (SLOP-045) (#4765)
  • workflows: type comment trigger seeds (SLOP-044) (#4746)
  • ui: share icon component contract (SLOP-047) (#4749)
  • hooks: remove unused abort helpers (SLOP-068) (#4743)
  • api: remove Prisma JSON double-casts (SLOP-046) (#4763)
  • api: remove migrated document bridges (SLOP-030) (#4767)
  • align modal and media reference contracts (SLOP-057) (#4768)
  • api: validate remaining inline bodies (SLOP-031) (#4753)
  • services: replace custom response validation with zod (SLOP-062) (#4755)
  • mcp: share list tool response formatting (SLOP-070) (#4748)
  • client: share storage evaluation and ingredient loading (#4766)
  • unify posting set picker contracts and views (SLOP-063) (#4779)
  • share web error boundary retry handling (SLOP-042) (#4775)
  • api: extract webhook media path into a leaf module (#4817)
  • models: collapse the registry deprecation flags onto lifecycle (#4836)
  • ai: enforce schemas on LLM structured output (#4902)

Documentation

  • env: describe email verification as an email/password gate (#4854)
  • memory: point harness audit gaps at the content evals epic (#4931)
  • agent-surface: correct curated action counts to match the catalog (#4974)

Tests

  • api: remove non-null assertions from API specs (#4773)
  • helpers: colocate remaining helper suites (SLOP-075) (#4750)
  • api: align Ghost publish fixtures with site identity (#4785)
  • e2e: align execution history assertions with the run table (#4783)
  • e2e: align nightly journeys with current UI contracts (#4786)
  • e2e: handle Agent work-object action fallbacks (#4788)
  • e2e: stabilize empty-agent creation check (#4803)
  • expert-path: add the onboarding E2E journey and bound PDF inflation (#4909)

Maintenance

  • api: restore explicit-any lint enforcement (#4754)
  • github: set native issue types from the issue forms (#4722)
  • server: enforce cleared backend lint rules (#4782)
  • env: retire TYPED_DECISION_PROVIDER from the env spec (#4971)
  • bump version to 0.1.75 (#4989)

Rolling electron-updater feed, currently serving desktop-v0.1.2. Install from the newest desktop-v* release; this release only serves auto-updates.

Features

  • unify generation status, previews, and live activity (#4603)
  • add lifecycle email workflows and admin outcome attribution (#4604)
  • harness: add viral-psychology persuasion pack (#4615)
  • website: restructure the public top bar, and fix the plan grids it exposed (#4613)
  • upload remix source media as a Library ingredient (#4624)
  • add GPT Image 2.5 Flare and Sunburst (#4622)
  • publishing: delay a scheduled comment, carry media on it, and show real caption limits (#4626)
  • website: sell the job, not the format, and give articles the site shell (#4627)
  • website: render the public bench at /benchmark (#4630)
  • auth: grandfather existing accounts before email verification can gate sign-in (#4631)
  • agent-memory: enforce org memory scope (#4634)
  • memory: finish org memory governance (#4649)

Fixes

  • guards: fail on unparseable input instead of reporting a file clean (#4605)
  • test: remove wall-clock flake from waitFor helper spec (#4606)
  • pages: run packages/pages in CI and repair its 152 unrun specs (#4618)
  • ci: keep website topbar out of the app i18n ratchet (#4628)
  • put agent pick-one cards in the conversation column (#4625)
  • 2026-09-09 QA pass for remix, shell, and automation (#4620)
  • ci: restore master Static Checks and spec typecheck (#4633)
  • ci: type inbox hrefs and accept analytics empty-state in core e2e (#4635)
  • ci: type KnowledgeMemoryScope writes after org-memory merge (#4636)
  • ci: type remix source platforms and AdsPlatform spec calls (#4637)
  • ci: type inbox run ids and restore workflow/sitemap tests (#4638)
  • ci: keep remix source platform strings unique for zod (#4639)
  • ci: refresh executable-contract ratchets after trunk merges (#4640)
  • ci: note props AgentTypeIcon surface in .changes (#4641)
  • ci: update product route inventory counts for /benchmark (#4642)
  • ci: align package tests with merged catalog and chrome (#4643)
  • ci: keep catalog lifecycle operator-owned and expose analytics ports (#4644)
  • ci: wire array catalog connections through object script ports (#4645)
  • ci: match talking-head adapter ports to catalog handle extraction (#4646)
  • ci: keep content-loop handles on catalog extraction (#4650)
  • tighten the agent composer, notification inbox, workspace, and public site (#4655)

Refactoring

  • give form spacing one owner per level (#4657)

Maintenance

  • bump version to 0.1.74 (#4661)

Features

  • actions: curate Brand Knowledge actions for the Agent and MCP surfaces (#4517)
  • knowledge: migrate legacy bookmarks and context sources into Knowledge (#4516)
  • library: add the Knowledge destination with capture, retry and source management (#4515)
  • knowledge: ground generations on selected sources and persist receipts (#4513)
  • knowledge: integrate the Brand Knowledge MVP with an end-to-end gate (#4514)
  • social-sources: import a connected account's history on connect (#4512)
  • website: play generated video on the homepage, and fix the page furniture around it (#4556)
  • agent: complete structured work and durable recovery contracts (#4584)
  • complete video, knowledge capture, onboarding, and help QA (#4587)

Fixes

  • ci: pin Vitest 5 blob reports to .vitest-reports (#4524)
  • models: enforce registry visibility in findAll and shrink tenant-scope baseline (#4510)
  • restream: accept numeric profile id during OAuth verify (#4525)
  • pages: repair drifted trends tests and restore the socials filter test id (#4543)
  • ui: make Searchbar the single debounced search input across the monorepo (#4528)
  • app: skills settings toggle 404 and detail overlay consistency (#4527)
  • discovery: rebuild source health on shared cards, add a per-platform Following deck, and fetch Desk signals on mount (#4529)
  • coverage: restore the nightly Coverage workflow (#4552)
  • qa: page titles, Library empty states, and a Turbopack cache pruner (#4555)
  • build: let a regenerated Prisma client invalidate its own build (#4581)
  • ci: isolate bundle comment token and retry public releases (#4582)
  • ci: merge and validate Playwright coverage evidence (#4585)
  • ci: retain full-tier coverage and audit promotion evidence (#4586)
  • agent: prevent onboarding work-response crashes (#4594)

Refactoring

  • api: reuse generation brief compiler helpers (#4565)
  • share Studio preset mappings (#4566)
  • cli: simplify request bodies and option access (#4567)
  • api: share ComfyUI input mappings and types (#4570)
  • notifications: share Discord webhook delivery handling (#4568)
  • api: remove obsolete Replicate callback service (#4569)
  • remove verified dead code and redundant tests (#4558)
  • share ComfyUI endpoint client through transport adapter (#4576)
  • remove redundant fixture tests and unused wiring (#4572)
  • helpers: share equivalent duration formatters (#4577)
  • generation: type image and video request payloads (#4578)

Build and CI

  • pr-title: stop cancelling in-progress runs so a cancelled check cannot block a green PR (#4546)

Dependencies

  • deps: weekly deps:update (#4583)

Maintenance

  • docs: purge stale MongoDB/Clerk guidance and delete dead tooling (#4554)

Features

  • close the agent failure feedback loop (#4478)
  • notifications: add in-app notification inbox (#4482)
  • app: show version, channel, and release changelog (#4486)
  • workflows: persist estimates and reconcile actual costs (#4480)
  • workflows: complete daily account publishing (#4502)
  • per-brand watermarked image and video downloads (#4501)
  • knowledge: ingest sources into canonical records with cited retrieval (#4509)
  • workflows: add dynamic video localization and composition (#4503)

Fixes

  • notifications: restore inbox and CI reporter contracts (#4487)
  • extension: route actions to current API contracts (#4491)
  • e2e: use canonical outreach routes in nightly checks (#4490)
  • repair shared page retries and bulk action cleanup (#4488)
  • show empty publishing calendar without duplicate toolbar (#4493)
  • preserve approved action outcomes during persistence retry (#4489)
  • trends: expose provider health and keep reads cache-only (#4479)
  • inspector: add closable panel tabs and full asset previews (#4495)
  • qa: repair asset previews and workflow run context (#4485)
  • media: consolidate asset previews and playback across product surfaces (#4494)
  • agent: make required approvals actionable and enforce safe defaults (#4496)
  • messages: brand-scope outreach sequence navigation (#4505)
  • ingredients: reject watermark logos without an image MIME type (#4508)
  • app: polish shell, tasks, runs, library, integrations, settings, and sentry paths (#4504)

Tests

  • e2e: publishing shell contract expects the new post menu (#4519)

Features

  • models: integrate MiniMax H3 Max and Replicate contracts (#4206)
  • messages: make inbox conversation-first (#4230)
  • models: add lifecycle-aware OpenRouter routing (#4236)
  • website: make product and output the proof (#4228)
  • library: rebuild the asset browser grid, inspector, and canvas view (#4318)
  • discovery: signal desk overview with light table view (#4317)
  • publishing: overview as a next-24h operations desk (#4325)
  • workspace-shell: stack the inspector rail instead of tabbing it (#4326)
  • ui: per-platform post preview renderers (#4331)
  • publishing: list and board view modes (#4335)
  • publishing: release drawer with per-target actions and URL selection (#4327)
  • publishing: wire per-platform preview renderers into review, post editor, and drawer (#4336)
  • campaigns: add the publish content campaign domain and REST collection (#4339)
  • publishing: add account grid view and overview health card (#4353)
  • copy: reserve Campaign for Publish content programs (#4365)
  • publishing: add the Publish Campaign desk (#4366)
  • campaigns: run publish content campaign lifecycle (#4367)
  • campaigns: wire generate, start, pause, and complete on the Publish desk (#4377)
  • actions: agent tool mutation policy (#4380)
  • agent: FR-1 run state, cross-thread runs, and decision UI (#4379)
  • analytics: add account fleet analytics (#4384)
  • workspace: triage-deck overview with shared ListRow and darker card surface (#4400)
  • workflows: run Brand Remix generation as a workflow execution (#4401)
  • website: reveal homepage sections on scroll (#4411)
  • skills: add Genfeed brand showcase render prompt (#4413)
  • ui: apply interface-feel audit fixes (#4415)
  • knowledge: model scoped sources and spaces (#4449)
  • connect: default MCP setup to browser authorization (#4471)

Fixes

  • ci: reuse in-flight full suite evidence (#4211)
  • ui: unify sidebar collapse and navigation spacing (#4215)
  • app: synchronize organization across tabs (#4216)
  • app: keep Automation usable without a selected brand (#4227)
  • users: show admin activity dates (#4229)
  • remediate production Sentry errors (#4231)
  • studio: preserve edited highlight content during clip generation (#4232)
  • library: unify scoped asset browser (#4214)
  • ci: restore combined master baseline (#4235)
  • agent: route explicit media without chat inference (#4226)
  • ci: provide message catalog in MessagesPage tests (#4239)
  • models: refresh lifecycle metadata contracts (#4238)
  • ci: type studio preview ambient wash intensity (#4241)
  • ci: restore post-merge executable contracts (#4244)
  • models: align public catalog spec contracts (#4242)
  • ci: refresh public route inventory counts (#4246)
  • ci: reconcile post-merge production contracts (#4250)
  • stripe: validate billing portal return path (#4252)
  • ci: deduplicate scheduled failure trackers (#4253)
  • dev: skip automatic worktree dependency installs (#4255)
  • workflows: restore truthful publish controls (#4256)
  • playwright: sanitize execution JSON:API resources (#4257)
  • auth: restore authorized overview shell after login (#4258)
  • ci: repair E2E report artifact merge (#4259)
  • repair residual data and service contracts (#4260)
  • oauth: gate Threads connect on readiness (#4261)
  • security: contain upload source paths (#4262)
  • agent: restore truthful terminal journeys (#4263)
  • prisma: align immutable workflow migration with executors (#4264)
  • ci: restore full-suite permission ceiling (#4267)
  • ci: reconcile runtime complexity ratchet (#4271)
  • agent: restore local image generation (#4277)
  • workflows: restore tenant-scoped execution updates (#4288)
  • ci: stop padding changed-coverage observations (#1849) (#4300)
  • website,docs: remove retired intelligence route and stale ContentRun docs (#4321)
  • lifecycle-emails: keep terminal delivery state on replay (#4311)
  • workflows: abort on lost lease and never strand delay-resumed executions (#4320)
  • billing: replay-safe credit flags and full-page proration (#4316)
  • workers: finalize recurrence and streak when TikTok confirms asynchronously (#4315)
  • app: reject off-origin return_to after OAuth verify (#4314)
  • workflows: stabilize action idempotency keys (#4303)
  • master: repair the three build and ratchet breaks blocking every PR (#4328)
  • ci: align enum, hook, and publishing page specs with the merged #4318 and #4319 behaviour (#4330)
  • agent: make tool confirmation server-owned for create_post and install_official_workflow (#4324)
  • dev: stabilize Portless and restore sidebar logo hover (#4265)
  • ci: green the UI package suite after preview wiring (#4337)
  • e2e: mock brand account-health as a bare array (#4351)
  • stop API and MCP keys inheriting implicit org-admin (#4358)
  • security: close remaining code-scanning alerts (#4359)
  • analytics: isolate tenant analytics reads by organization (#4360)
  • workflows: typed retry, shared topo-sort, AgentRun doc purge (#4362)
  • security: drop revoked Telegram keys and test MCP URL rejection (#4364)
  • workflows: generate action nodes from catalog and drop YouTube agent special-case (#4368)
  • api: shrink tenant-scope baseline and clear master Static Checks debt (#4370)
  • ci: unblock spec-typecheck after Effect removal (#4372)
  • ci: restore master Full Suite after the contracts fold (#4374)
  • ci: resolve authed e2e boot and desktop action types (#4385)
  • use the official Genfeed mark on mobile and IDE (#4388)
  • give PWA maskable icons a real Android safe zone (#4395)
  • ci: resolve combined trunk typecheck and spec fallout (#4396)
  • local QA closeout for shell, PostCSS, and app switcher (#4397)
  • ci: accept snapshot run statuses in stream hooks (#4399)
  • ci: restore trunk format, remotion pin, and model metadata (#4407)
  • app: keep theme CSS contract off marketing-site paths (#4408)
  • ci: restore Static Checks after Campaign and Brand Remix merges (#4410)
  • app: restore Turbopack for local dev and delete dead webpack config (#4416)
  • app: repair agent, composer, and Studio QA (#4414)
  • ci: repair merged master integration (#4430)
  • ci: restore master validation gates (#4431)
  • ci: preserve scheduled failure identities (#4434)
  • articles: parse HTML before text extraction (#4432)
  • workflows: preserve migrated batch identities (#4435)
  • publishing: enforce review contracts (#4433)
  • models: preserve catalog runtime contracts (#4437)
  • publishing: retry TikTok finalization (#4436)
  • campaigns: enforce membership scope (#4440)
  • analytics: isolate account UI request state (#4439)
  • analytics: preserve account metric integrity (#4438)
  • deps: sync UI Lucide peer range in lockfile (#4441)
  • test: wire isolated publish dependencies (#4443)
  • api: bound public YouTube workflow failures (#4445)
  • prisma: index tenant-scoped ad mapping lookups (#4448)
  • ci: allow empty coverage for unchanged surfaces (#4447)
  • complete application-wide QA and consistency pass (#4444)
  • ci: reuse verified artifacts and strengthen release checks (#4469)
  • ci: restore nightly tests and recovery (#4454)
  • ci: report executed E2E evidence accurately (#4462)
  • repair review regressions and remove runtime leftovers (#4456)

Refactoring

  • scheduling: hard cut recurring scheduler split (#4210)
  • workflows: route skills through immutable executions (#4266)
  • cadences: split copy and validation boundaries (#4272)
  • media: split generation and transformation stages (#4278)
  • retire public media runtime scaffolds (#4280)
  • workflows: decompose execution services (#4283)
  • video: decompose batch interpolation controller (#4284)
  • files: extract processing helpers (#4285)
  • integrations: split OAuth refresh orchestration (#4286)
  • integrations: split authorized signal evidence mapping (#4290)
  • batch-generation: split service phases (#4291)
  • workflow-executions: split runtime helpers (#4292)
  • post-groups: extract target operations (#4293)
  • post-groups: split target persistence (#4294)
  • credits: split ledger mutation cores (#4295)
  • brands: split service phases (#4296)
  • llm: split streaming aggregation helpers (#4297)
  • agent: decompose context assembly (#4298)
  • posts: split API generation workflows (#4302)
  • publishing: one posts route with query filters (#4319)
  • post-groups: relocate release-target update phase (#4352)
  • fold @genfeedai/server back into api (#4354)
  • remove re-export compat shims and deslop the last 48h of merges (#4356)
  • finish the api fold leftovers (#4357)
  • remove the Effect runtime (#4371)
  • remove deprecated compatibility surfaces (#4453)
  • ui: consolidate shared controls and workflow dialogs (#4455)
  • ui: unify shared page states and selection UX (#4470)

Documentation

  • update managed inference adapter inventory (#4287)
  • agents: load detailed memory on demand (#4474)

Tests

  • models: seed lifecycle transition guard fixture (#4249)
  • ci: repair coverage ratchet evidence (#4270)
  • ui: provide query client to AgentPanel tests (#4273)
  • ci: restore full-suite coverage gates (#4275)
  • api: restore image generation integration wiring (#4279)
  • workflows: cover remaining branch paths (#4281)
  • agent: provide query client fixtures (#4282)
  • update protected route inventory counts (#4289)
  • release: follow the project memory catalog (#4477)

Build and CI

  • enforce shrinking runtime-complexity debt (#4268)

Maintenance

  • memory: require a ready PR for every fix branch (#4254)
  • memory: record i18n deferral in the catalog rule (#4304)

Other

  • Fold shared type packages (#4369)
  • Drop conventional-commit prefixes from issue titles (#4393)
  • Record the stacked-PR merge-target rule (#4398)

Features

  • video: ship creative actions (#3870)
  • credits: finish reservation adoption (#4011)
  • cli: build terminal content workspace (#4017)
  • website: rebuild the homepage around published output (#4061)
  • app: unified Generation Setup picker + platform-pinned chat model (#4071)
  • trends: prefer native platform discovery (#4091)
  • migrate planning metadata to native issue fields (#4095)
  • skills-pro: expose authenticated metadata registry (#4090)
  • ads: add brand swipe-file snapshots (#4098)
  • add native referral credit rewards (#4097)
  • skills-pro: enforce tenant entitlements and installs (#4179)
  • app: make Workspace the returning-user home (#4181)
  • tiktok: add native app publish handoff (#4180)
  • threads: add signed account deletion callbacks (#4187)

Fixes

  • ci: report every failing package in test lanes (#3884)
  • ui: normalize dropdown trigger and overlay borders (#3885)
  • agent: prevent duplicate actions across scope changes (#3886)
  • desktop: preserve migration directory errors (#3889)
  • mobile: surface offline queue failures (#3888)
  • api: validate Medium OAuth configuration (#3896)
  • frontend: surface analytics load failures (#3897)
  • frontend: surface workflow node action failures (#3899)
  • frontend: surface task detail action failures (#3900)
  • frontend: surface editor project failures (#3901)
  • ci: isolate parallel server Sentry sourcemaps (#3921)
  • api: scope creative pattern queries (#3913)
  • api: preserve tenant boundaries in optimized queries (#3923)
  • e2e: stabilize full-tier chat and organization flows (#3925)
  • test: use valid creative pattern type (#3926)
  • e2e: persist completed chat actions (#3927)
  • test: align enabled config mock with query (#3930)
  • agent: retain UI action completion by id (#3928)
  • agent: complete source actions on response (#3932)
  • logger: declare async module imports (#3934)
  • build: add Nest webpack checker peer (#3936)
  • desktop: align verified PGlite release pin (#3938)
  • stripe: align API pin with SDK (#3941)
  • stripe: narrow invoice billing reasons (#3945)
  • app: isolate agent brand switches (#3947)
  • api: honor Leonardo generation contract (#3949)
  • agent: translate generation mode labels (#3952)
  • api: decode ElevenLabs audio response (#3953)
  • ci: align product route inventory counts (#3957)
  • workers: align ad sync logger spec types (#3962)
  • test: repair backend spec mocks (#3963)
  • workers: import Vitest mock type (#3966)
  • workers: cast logger constructor mock (#3968)
  • api: complete bot media generation (#3970)
  • ci: prune bot spec baseline (#3972)
  • server: import Vitest mock type (#3974)
  • api: scope clip generation patches and lock OpenAPI metadata (#3975)
  • agent: align package specs with conversation behavior (#3978)
  • files: align Remotion renderer contract (#3981)
  • mcp: track split clip generation controller (#3986)
  • agent: retain completed UI actions across message rebuilds (#3991)
  • api: preserve tenant boundaries in optimized queries (#3992)
  • e2e: isolate full API fixtures (#3994)
  • e2e: intercept unauthenticated bootstrap (#3996)
  • types: restore monorepo verification boundaries (#3997)
  • desktop: fall back to cloud when local startup fails (#4010)
  • qa: consolidate Agent, Studio, and shell fixes (#4013)
  • qa: restore verification after consolidation (#4015)
  • api: make desktop thread sync atomic (#4005)
  • sources: reject posts without external ids (#4006)
  • agent: isolate brand voice action status (#4007)
  • agent: restore the canonical runtime baseline (#4012)
  • trends: restore real content in the trend digest email (#4037)
  • analytics: bucket post analytics dates in UTC (#4068)
  • normalize small correctness contracts (#4079)
  • bots: sanitize bot manager error logs (#4080)
  • trends: calibrate viral scoring curves (#4081)
  • workflows: retire seeded mirrors during version cutover (#4076)
  • stabilize voice clone paths and terminal session effects (#4083)
  • agent: gate campaign transitions on confirmation (#4085)
  • workers: reject relation alias helper reads (#4092)
  • dev: centralize rolling Bun environments (#4089)
  • billing: use real Stripe proration previews (#4096)
  • agent: harden local QA and runtime workflow execution (#4099)
  • clear Project 12 bug regressions (#4114)
  • prisma: keep postinstall as prisma generate for server image (#4116)
  • remediate confirmed 14-day review findings (#4117)
  • oauth: send flat connect and verify request bodies (#4172)
  • sentry: disable performance tracing (#4141)
  • trends: make social ingestion native-first (#4170)
  • workflows: recover stale claims and gate system visibility (#4175)
  • close agent and workspace QA regressions (#4150)
  • ci: restore authenticated and core app smoke (#4184)
  • prisma: match retired system workflow provenance (#4192)
  • workflows: remove legacy template steps contract (#4195)
  • article-editor: remove duplicate preview and enhance flow (#4188)
  • agent: remove undispatched run tool (#4196)
  • article-editor: complete retired enhancement cleanup (#4200)
  • ci: raise environment scan command buffer (#4199)
  • prisma: preserve retired workflow history in v70 migration (#4208)

Performance

  • api: batch desktop thread lookups (#3893)
  • api: aggregate subscription attribution analytics (#3902)
  • api: parallelize creator imports (#3903)
  • frontend: bound workflow batch uploads (#3904)
  • api: aggregate BYOK usage in Postgres (#3905)
  • api: parallelize reference lookups (#3890)
  • api: batch auth organization resolution (#3891)
  • api: aggregate tracked link click stats (#3894)
  • api: filter ad mappings in Postgres (#3907)
  • api: target skill receipt lookups (#3909)
  • api: target default profile updates (#3910)
  • api: target preset key lookups (#3911)
  • api: filter ad optimization queries (#3912)
  • api: filter agent strategy queries (#3914)
  • api: filter stored forecasts in Postgres (#3915)
  • api: target customer instance routing (#3917)
  • api: target monitored account lookup (#3918)
  • api: paginate ad upload jobs in Postgres (#3919)
  • api: aggregate article analytics in Postgres (#3920)
  • api: filter active trends in Postgres (#3922)
  • ci: halve per-PR compute and make full-suite the single master-push pipeline (#4036)
  • web: remediate the 2026-08-29 frontend performance audit (#4054)
  • app,website: add route-segment loading shells (#4078)

Refactoring

  • api: remove unused platform comparison entity (#3895)
  • frontend: remove commented-out code (#3898)
  • api: remove scalar type escapes (#3955)
  • api: split clip project generation controller (#3969)
  • workflows: hard cut to action-backed workflow executions (#4057)
  • remove provable no-ops and dead code (#4084)
  • deduplicate literal implementations (#4086)
  • centralize files and workers error messages (#4088)
  • remove low-value narrated comments (#4094)
  • app: shell-first loading across the product app (#4102)
  • config: share Google OAuth credentials (#4173)

Documentation

  • repair generation setup hook link (#4093)
  • oss: retire GitHub Sponsors CTA (#4119)
  • specify agent fleet runtime API (#4164)
  • add OAuth provider provisioning runbook (#4171)

Tests

  • api: restore Stripe webhook E2E providers (#4101)
  • e2e: assert workflow controls before modal menu (#4186)
  • design: add matched DESIGN.md evaluation seed (#4194)

Dependencies

  • deps: hold @sentry/* at 10.71.0 (#4075)
  • deps: weekly deps:update (#4073)

Maintenance

  • e2e: simplify Playwright global setup (#3887)
  • mcp: remove stale clip mode comment (#3990)
  • commands: file /bug issues without a confirmation step (#4056)
  • repo: remove dead tunnel URLs and exports (#4077)

Features

  • ui: enforce the DESIGN.md foundation contract (#3633)
  • billing: add agency cost reporting (#3652)
  • workflows: add timed talking-head scripts (#3692)
  • scheduler: complete API surface parity (#3693)
  • generation: persist categorized run references (#3694)
  • clips: gate remaining clips on hook approval (#3698)
  • agent: add cross-thread conversation transfers (#3700)
  • add vision continuity QA (#3702)
  • api: collect listening topic evidence (#3703)
  • listening: add attributable theme signals (#3707)
  • ci: add scheduled failure tracker contract (#3710)
  • brand: add source-backed Brand OS preview (#3711)
  • listening: add social intelligence inbox (#3718)
  • add secure Brand OS preview funnel (#3726)
  • listening: attribute content outcomes (#3727)
  • studio: add brand-scoped saved looks (#3744)
  • clips: replace Opus workflow end to end (#3792)
  • studio: route Fastlane schedule through release groups (#3825)
  • scheduler: posting sets UI and agent schedule card parity (#3831)
  • billing: unify multi-organization billing accounts (#3833)
  • scheduler: finish remaining post scheduler loop (#3834)
  • e2e: prove isolated-DB publish path (#3842)
  • generation: compile remaining briefs and unlock Strict fidelity
  • generation: compile remaining briefs and unlock Strict fidelity (#3844)

Fixes

  • auth: recover sessions and pin login callbacks (#3626)
  • e2e: repair scheduled Playwright full tier (#3597)
  • oauth: fail closed on social configuration (#3602)
  • ui: correct OAuth connection catalog (#3593)
  • ui: align button, badge, and global motion with the DESIGN.md contract (audit wave 1) (#3603)
  • ui: repair alert foundation contract (#3622)
  • auth: restore production app proxy (#3624)
  • e2e: isolate nightly clip and API fixtures (#3594)
  • x-ads: migrate connector to OAuth 1.0a (#3599)
  • billing: resolve subscription credits from the Stripe price (#3627)
  • agent: make production generation durable (#3628)
  • website: sanitize public article bylines (#3636)
  • billing: repair master after #3627 and wire browser checkout price IDs (#3638)
  • agent: validate image generation results (#3639)
  • api: harden Higgsfield billing and dispatch (#3640)
  • instagram: return actionable OAuth verification failures (#3641)
  • onboarding: recover fresh account setup (#3642)
  • ci: let weekly dependency updates open one PR (#3644)
  • ci: repair master contract and harness drift (#3643)
  • api: carry sourceActionId through the ingredient write path (#3645)
  • restore localization and package test boundaries (#3647)
  • analytics: preserve cloud funnel telemetry (#3646)
  • generation: preserve canonical brief contracts (#3648)
  • app: synchronize routed organization context (#3649)
  • billing: reconcile Stripe checkout and subscription state (#3650)
  • cli: restore OAuth signal typecheck (#3651)
  • cli: isolate Node runtime types (#3653)
  • ci: repair remaining master typecheck contracts (#3654)
  • ci: type recursive translation stub lookup (#3655)
  • e2e: enforce full-tier Playwright contracts (#3656)
  • config: remove deprecated TypeScript baseUrl (#3657)
  • ci: restore master static and API spec contracts (#3658)
  • e2e: scope Clip Factory routes to mocked brand (#3660)
  • ci: restore remaining master contracts (#3661)
  • e2e: hold logout feedback in pending state (#3662)
  • ci: apply CI tracker labels authoritatively (#3663)
  • ci: restore exact-master test contracts (#3666)
  • api: align MusicDocument with the ingredient row shape (#3665)
  • ci: make Tests Gate cover the spec typecheck ratchet (#3668)
  • ci: remove stale music projection contract (#3670)
  • release: wire Scale checkout price (#3673)
  • app: scope cost usage value assertions (#3674)
  • app: complete integrations icon mock (#3677)
  • workspace: keep inspector closed during route cleanup (#3680)
  • config: keep e2e alias compatible with TypeScript 7 (#3686)
  • agent: restore package CI contracts (#3687)
  • api: restore final CI contracts (#3689)
  • studio: align saved look timestamps (#3782)
  • workflows: preserve video QA URL narrowing (#3784)
  • api: resolve continuity files client (#3785)
  • services: normalize listening inbox queries (#3786)
  • ci: reconcile master contracts and test drift (#3790)
  • clips: guard submitted approval before status access (#3791)
  • ci: reconcile master executable contracts (#3794)
  • ci: repair final master gate failures (#3796)
  • ci: resolve UI token aliases in package tests (#3797)
  • ci: dedupe unlabeled master Tests Gate trackers (#3826)
  • workflows: hydrate canvas edge style from the saved preference (#3828)
  • posts: mint publish approval on every scheduled write (#3832)
  • ci: map billing Prisma enums onto domain types (#3841)
  • workers: keep rebased master crons off @api
  • server: stop @genfeedai/server importing @api
  • api: retarget master files onto moved server helpers
  • server: move leftover siblings webpack could not resolve
  • api: retarget remaining @api imports after sibling moves
  • app: drop duplicate ReleaseGroupsService.create after rebase
  • ci: give server type-check 6GB after the domain move
  • generation: unshadow publish policy and add Schnell ablation
  • generation: read REPLICATE_KEY for Schnell live ablation
  • generation: run Schnell live ablation outside mocked fetch
  • generation: poll Schnell predictions without Prefer wait
  • generation: retry Schnell live predictions on empty output
  • generation: align remaining-brief types and stale CI tests
  • workflows: stop cloning daily trends digest on every deploy
  • workflows: stop cloning the system catalog on every deploy
  • workflows: stop cloning system workflows on every deploy (#3852)
  • desktop: paste source-checkout sign-in codes into the app
  • desktop: stop local mode from hanging with no feedback
  • desktop: send local mode to /desktop/local instead of a blank brand step
  • desktop: hide the titlebar strip on login
  • desktop: do not quit on uncaught write EPIPE
  • desktop: persist PKCE so pasted sign-in codes survive restarts
  • auth: allow unauthenticated desktop PKCE exchange
  • ci: map billing Prisma enums onto domain types
  • ci: split duplicate agent publish policy bindings
  • ci: drop duplicate ReleaseGroupsService.create
  • ci: align scheduler merge types for workers type-check
  • ci: parse engagement Prisma enums and prune stale spec baseline
  • ci: accept Fastlane brandId and baseline remaining spec debt
  • ci: allowlist new system sweeps and record inherited ratchet debt
  • ci: expect reservation settlement in credit deduction jobs
  • ci: typecheck remaining api specs instead of fingerprinting them
  • ci: mock login i18n and align inherited scheduler tests
  • desktop: paste source-checkout sign-in codes into the app (#3809)
  • ci: repair type-check after batch merges
  • e2e: repair isolated-publish imports and agent util export
  • ci: unblock v0.1.69 release without a version bump (#3855)
  • e2e: unblock v0.1.69 release gates (#3871)
  • auth: provision signup member before billing account (#3875)
  • workers: fail release smoke on Nest bootstrap errors (#3877)
  • workers: restore release-proven Nest module graph (#3878)
  • workers: import global cache graph (#3880)
  • deploy: pass API URL into app build (#3883)

Refactoring

  • api: split analytics admin transport (#3691)
  • integrations: decompose platform runtimes (#3695)
  • server: extract OpenRouter integration (#3696)
  • server: extract Hedra integration (#3697)
  • server: extract X Ads domain (#3699)
  • server: add typed credential provider port (#3701)
  • server: extract Beehiiv provider domain (#3704)
  • server: extract Threads service domain (#3705)
  • server: extract Reddit service domain (#3706)
  • server: extract Pinterest service domain (#3709)
  • server: extract Facebook service domain (#3713)
  • server: move Google Ads into server domain (#3716)
  • organizations: split controller operations (#3719)
  • server: extract Mastodon service domain (#3722)
  • server: extract Instagram service domain (#3728)
  • tasks: split planning controller (#3729)
  • api: split posts retry controller (#3731)
  • server: extract TikTok service domain (#3732)
  • api: split clip project highlights controller (#3734)
  • server: extract TikTok Ads service domain (#3735)
  • api: split outreach campaign target operations (#3736)
  • server: extract Higgsfield service domain (#3738)
  • api: split Brands setup controller (#3740)
  • server: extract Fleet service domain (#3743)
  • api: split Prompts transformation operations (#3747)
  • server: extract LinkedIn service domain (#3749)
  • api: split Assets ingestion operations (#3750)
  • api: split Images resize operation (#3752)
  • server: extract Twitter service domain (#3754)
  • files: split audio overlay operation (#3755)
  • api: split Ads Gateway write operations (#3758)
  • api: split Credentials publishing operations (#3760)
  • server: extract YouTube service domain (#3762)
  • api: collapse Agent Workflow transitions (#3764)
  • api: execute action runs via patch (#3766)
  • server: extract publisher domain kernel (#3769)
  • api: extract music generation orchestration (#3772)
  • api: cancel agent runs via patch (#3773)
  • api: split clip project ingestion controller (#3774)
  • api: activate organizations via patch (#3776)
  • images: extract reframe orchestration (#3778)
  • api: patch credential health overrides (#3779)
  • api: split images upscale controller (#3829)
  • api: split videos merge controller (#3830)
  • server: stop workers importing API integration modules
  • server: move worker helper leaves out of API
  • server: move worker kernel types, cache, and provenance
  • server: empty worker @api import baseline
  • server: delete leftover API extraction shims
  • server: empty remaining worker @api imports (#3843)

Documentation

  • infra: correct Redis eviction policy contract (#3675)

Tests

  • playwright: repair full-tier route and mock regressions (#3667)
  • playwright: repair remaining full-tier assertions (#3672)
  • e2e: align remaining full-tier interactions (#3676)
  • e2e: settle final shard interactions (#3678)
  • contexts: hold organization transition state (#3679)
  • ci: restore exact-master unit harness contracts (#3681)
  • api: provide media cost service in image controller (#3683)
  • agent: resolve shared status token aliases (#3684)
  • workspace: mirror committed task query state (#3685)
  • prisma: exercise first-party skill catalog migration (#3690)

Build and CI

  • adopt fair PR validation budget contract (#3592)

Dependencies

  • deps: weekly deps:update (#3637)

Maintenance

  • memory: hold trend reminders until Trends is live
  • memory: hold trend reminders until Trends is live (#3851)
  • ci: update spec-typecheck baseline after batch merges

Other

  • apply biome format to files CI format:check flagged

Features

  • agent: chat UX polish — stick-to-bottom, autofocus, live thread title, code copy (#3542)
  • generation: route every generation surface through the canonical brief (#3533)
  • models: add Higgsfield Soul + Kling video to the model catalog and generation dispatch (#3549)
  • discover: generic competitor paid-creative pool across every ad archive (#3559)
  • ci: fold changed coverage into test shards and consolidate static checks (#3560)
  • credentials: multiple accounts per platform per brand (#3563)

Fixes

  • youtube: record missing data scope as missing_scope (#3529)
  • e2e: finish the nightly full-tier repair across onboarding, library, and calendar (#3530)
  • app: settings shell, org switch, PWA worker, and array-only mutation APIs (#3546)
  • agent: align orchestrator host thread-title callback with the util contract (#3552)
  • architecture: align route-inventory counts with the settings shell pages (#3551)
  • contexts: restore the promptbar catalog tests' logger double (#3554)
  • app: align voices + editor tests with the array-only modal callbacks (#3553)
  • app: qa closeout for composer, model settings, and org workspace chrome (#3555)
  • close the defects found by the RDS freeable-memory audit (#3556)
  • types: reconcile the GallerySelectItem union with the gallery modal contract (#3557)
  • ci: restore reusable workflow permission ceilings (#3562)
  • constants: declare the free chat row instead of inferring it from a zero price (#3568)
  • api: stop killing the API when a peer microservice is cold (#3569)
  • apify: stop hammering Apify after an account usage-limit refusal (#3571)
  • infra: declare the Redis noeviction parameter group in tofu (#3564)
  • ci: repair consolidated master regressions (#3580)
  • auth: pin hosted app origin (#3567)
  • app: wait for auth before OAuth verify (#3572)
  • ui: repair and categorize model picker (#3573)
  • oauth: hide unapproved Reddit connection (#3577)
  • fanvue: request post publishing scope (#3578)
  • infra: import the existing Redis parameter group into state (#3579)
  • e2e: block service workers in mocked app suite (#3581)
  • ui: restore model selector type safety (#3582)

Performance

  • apify: cap actor runs and stop the trend layer re-scraping (#3575)

Refactoring

  • collapse the last dual singular/plural mutation APIs (#3550)

Tests

  • e2e: fix Playwright full-tier locators and mock brand scope (#3528)
  • api: align credential account mocks (#3583)
  • api: finish multi-account spec migration (#3585)
  • api: complete credential argument migration (#3586)
  • agent: align setup platforms with OAuth catalog (#3588)

Build and CI

  • close the release-tier validation gap (continuous master Full Suite, parallel E2E, refactor-proof contracts) (#3524)

Maintenance

  • bump repo version to 0.1.68 (#3584)

Features

  • ads: add X Ads connected distribution channel (#3399)
  • settings: add Cmd+K search and unclip the chat model picker (#3426)
  • onboarding: share brand setup across Cloud and Desktop (#3429)
  • workflows: add clip-chain system template and video stitch executor (#3448)
  • workflows: add JSON prompt authoring and structured output (#3451)
  • workflows: add video pilot-run gate and retry ceiling (#3454)
  • load first-party skills into the in-app agent (#3452)
  • discover: add X trends and public competitor ads inspiration (#3400)
  • workflows: add UGC amateur-realism video prompt presets (#3447)
  • workflows: add deterministic video-QA node (#3450)
  • cinematic prompting and named characters (#3453)
  • discover: add DSA transparency notice on X ads (#3473)
  • generation: compile image briefs for every selectable model family (#3513)
  • add YouTube guided channel warm-up (#3511)
  • harden calendar slot density (#3499)
  • studio: runs, recipe rail, and Vary on /studio/generate (#3491)
  • generation: extend model-aware briefs to the video path (#3500)
  • execute scheduled outreach blasts at their due time (#3498)
  • add channel posting time slots (#3497)
  • color publish calendar cards from the first tag (#3489)
  • confirm republish on calendar drag (#3494)

Fixes

  • api: create missing org settings so model toggles can persist (#3398)
  • api: preserve brand-kit tenant scope and agent-config CAS (#3411)
  • api: restore tenant-scoped outreach execution (#3412)
  • env: document X Ads OAuth client variables (#3415)
  • api: video Quality Run and Generate Caption were failing on playable files (#3421)
  • api: send Quality/Caption fetches to the public CDN, never the files host (#3424)
  • api: bind tenant list filters to the session organization (#3414)
  • api: refuse Twitter OAuth when secrets are placeholders (#3418)
  • library: video posters, muted type pills, multi-select Type filter (#3420)
  • desktop: restore local workspace behind a PostHog flag (#3425)
  • realtime: stop production sockets from disconnect-looping (#3419)
  • workflows: let operators pause schedules and name runs (#3422)
  • seo: correct docs and auth metadata (#3449)
  • discover: stop pinning public ads to the session org (#3455)
  • ci: unblock master typecheck and bump 0.1.67 (#3471)
  • api: enforce paused-only ads writes and lock down paid-media routes (#3472)
  • release: harden recovery digest and output identity checks (#3474)
  • workflows: scope execution tenants and reset library bulk state (#3475)
  • api: reject unusable saved remix voices before generation (#3476)
  • validate Hailuo first-frame input before Replicate (#3477)
  • settings: align notification contracts, translations, and anchors (#3478)
  • reserve outreach reply slots atomically across windows (#3479)
  • preserve Library operation errors without duplicate Sentry groups (#3480)
  • api: restore workflow-backed outreach campaign dispatch (#3481)
  • server: place tenant-scope suppressions on the line the guard reads (#3484)
  • wire Meta ad-set and ad listing through the ads gateway (#3487)
  • ci: restore spec typecheck ratchet for api and workers (#3503)
  • ci: restore remaining Full Suite jobs blocking v0.1.67 (#3509)
  • api: scope reference image lookups to the caller organization (#3504)
  • stop stale-organization onboarding 403 cascades (#3505)
  • harden brand-remix UI fallbacks and regression coverage (#3495)
  • validate ads insight date ranges before platform fan-out (#3488)
  • enforce tenant-owned outreach campaign and target persistence (#3493)
  • ci: restore master typecheck and executable contracts after merge burst (#3516)
  • api: prefer missing_scope over LinkedIn org-page selection (#3519)
  • remaining Full Suite reds blocking v0.1.67 (#3520)
  • prisma: provision cinematic-prompting skill catalog stub (#3521)
  • e2e: API E2E encryption key and post-watch contract (#3522)

Refactoring

  • extract article generation orchestration (#3510)
  • extract scheduled-post delivery from CronPostsService (#3508)
  • extract X authorized-signal refresh pipeline (#3507)
  • decompose brand-remix run orchestration (#3492)
  • drop @shipshitdev/ui and the .ship-ui class scope (#3490)

Documentation

  • add coding-agent install prompt and fix contributor dev path glossary (#3482)

Tests

  • onboarding: use shared Button for step-completion control (#3486)
  • api: member-only LinkedIn org-page evidence stays missing_scope (#3517)
  • api: member LinkedIn org snapshots require page selection (#3518)

Features

  • auth: enable user activity tracking (#3206)
  • agent: show last generated assets in the thread list (#3231)
  • analytics: sync PostHog identity across the auth lifecycle (#3221)
  • ui: add system, light, and dark appearance across apps (#3223)
  • context: retrieve brand knowledge by default on generation paths (#3246)
  • mcp: expose scheduler capability tools (#3253)
  • add warm-up invitation lifecycle actions (#3263)
  • review: assign queue items to team members (#3264)
  • agent: add per-channel release review card (#3265)
  • compile FLUX Schnell image generation briefs (#3267)
  • scheduler: persist posting sets and signatures (#3270)
  • optimization: execute A/B suggestions as attributed variation arms (#3245)
  • publish: project cadence slots and fill (#3271)
  • publish: skip, article slots, and cadence mutation (#3283)
  • website: headline-only article social card (#3288)
  • studio: consolidated /studio/generate playground for every asset type (#3298)
  • design: Geist-style readability pass and true-neutral light theme (#3293)
  • library: one asset browser on three axes — type, shelf, folder (#3309)
  • models: add Replicate Nano Banana 2 Lite and MiniMax H3 (#3322)
  • models: make Fal provider-aware (#3325)
  • content: add durable prefilled remix workflow (#3342)
  • raise public agent-readiness score (#3358)
  • notifications: add durable workflow status emails (#3360)
  • models: synchronize Fal schemas and pricing (#3361)
  • complete brand remix delivery (#3367)

Fixes

  • app: remove the sub-xl conversation/inspector sub navbar
  • app: keep Demo FUD News scope and Auto allowlist after #3083
  • workflows: persist prompts and confirm official install
  • app: translate voice catalog actions (#3201)
  • ci: resolve changed-coverage commit IDs (#3182)
  • close 24h retro holes in purge, shell, OpenRouter, and hosted SaaS (#3204)
  • files: drain Nest and BullMQ on SIGTERM (#3215)
  • stabilize master after 13-PR burst (#3220)
  • remaining 24h retro holes after Grok+Opus audit (#3224)
  • import ConfigService in model catalog seed spec (#3225)
  • scope PostAnalytics through post is-filter (#3232)
  • api: skip empty allowlist 403 on auto generate (#3233)
  • recover vendor-prefixed generate tools and empty-library voice cards (#3234)
  • align analytics toggle tests with themed token classes (#3235)
  • ci: restore Tests Gate after theming and thread-list fields (#3239)
  • oss: detect the Markdown issue template on Community Profile (#3238)
  • e2e: rebind bootstrap mocks after automation workflow routes (#3240)
  • ui: initialize EditableText draft state neutrally (#3242)
  • workflows: guard the full workflow API contract (#3243)
  • security: harden hosted SaaS deploy trust boundaries (#3249)
  • enums: replace production literals with existing members (#3266)
  • prisma: replace Json as-never with InputJsonValue helper (#3268)
  • queues: raise files lock duration and ECS stopTimeout (#3248)
  • credentials: map Prisma platform onto domain posts (#3269)
  • ci: grant contents write to the self-hosted publisher (#3281)
  • ci: repair combined master after PR dump (#3277)
  • seo: close the 2026-08-19 Ahrefs site-audit findings (#3284)
  • assets: point brand assets at the live CDN host (#3285)
  • app: restore leftover generate, run, and brand home (#3286)
  • publish: enforce API-key scopes on cadence fills (#3282)
  • prisma: lowercase posts.platform backfill (#3276)
  • types: replace remaining production as-never casts (#3279)
  • ci: restore cadence skip/article after dump-merge (#3291)
  • agent: hide disabled org models from generate picker (#3289)
  • studio: restore storyboard frames and opus-style clips list (#3296)
  • automate: nest agents under /automate/agents and make workflow pause visible (#3295)
  • llm: Grok 4.6 in the picker, stop silent Grok 4.5 defaults (#3299)
  • types: narrow clip project JSON:API attributes (#3306)
  • studio: correct avatar generation and guard the model race in /studio/generate (#3308)
  • persist sound auto-select and drop cadence spec null casts (#3313)
  • types: align suppression directive policy (#3314)
  • website: truncate OG headlines by Unicode code point (#3315)
  • agent: repair thread activity tooltip and asset ordering (#3316)
  • admin: isolate warm-up invitation request state (#3317)
  • api: harden posting cadence transitions (#3318)
  • ci: repair combined master contracts (#3321)
  • models: complete Fal provider identity contracts (#3326)
  • ci: align workflow specs with tenant scope (#3329)
  • qa: harden studio automation and tenant scope (#3343)
  • api: repair spec types flagged by the spec-typecheck ratchet (#3347)
  • api: unblock brand-kit apply and prune stale spec-typecheck baseline (#3348)
  • release: add fail-closed recovery mode for partially published releases (#3349)
  • ci: unblock Release Full Suite gates that adaptive PR CI skipped (#3351)
  • release: poll until draft CHANGELOG has a sha256 digest (#3352)
  • enums: bump MODEL_KEYS length ratchet to 115 (#3353)
  • ci: clear remaining Release Full Suite app and packages gates (#3355)
  • onboarding: prevent stale-org Sentry 403 cascade (#3357)
  • ui: align prompt chrome and test contracts (#3375)
  • api: enforce library brand authorization (#3374)
  • studio: repair Fastlane avatar generation (#3377)
  • release: recover incomplete published release (#3370)
  • credits: accept stored model providers (#3383)
  • tests: align merged service contracts (#3385)
  • app: refresh skill catalog on brand change and restore Full Suite contracts (#3390)
  • e2e: align Release Full Suite contracts after 66 recut (#3391)
  • e2e: keep clip review from hydrating as generating (#3392)
  • e2e: open studio surfaces on the branded storyboard path (#3393)
  • release: do not mix tofu -target and -exclude (#3396)
  • release: register hosted-SaaS task defs without mutating Redis AUTH (#3397)

Performance

  • web: close the Lighthouse mobile gaps on website, studio, and docs (#3287)

Refactoring

  • linkedin: extract trend derivation policy
  • workflows: remove unused list projection
  • workflows: remove superseded app hydration utilities
  • bots: extract livestream session data boundary
  • api: consolidate JSON record guards
  • ui: extract platform preview data boundary
  • workflows: split ComfyUI prompt builders
  • workflows: extract API contract types
  • workflows: split legacy node registry
  • seo: extract text analysis utilities
  • prompt-builder: extract Kling input mappings (#3177)
  • api: extract shared organization credits gates (#3205)
  • api: share provider catalog response envelope (#3210)
  • server: ratchet explicit-any to zero (#3212)
  • api: share ads insights date-range helpers (#3213)
  • serializers: move content-intelligence response mapping (#3214)
  • ui: flatten the model picker into a ranked command list (#3294)
  • app: remove orphaned frontend surfaces (#3331)
  • server: remove shadows and restore global trends (#3332)
  • api: decompose thread UI actions (#3336)
  • agent: decompose media generation handler (#3337)
  • api: extract base query normalization (#3335)

Documentation

  • oss: restore Community Profile coverage (#3211)
  • add mocked README product captures (#3262)

Tests

  • e2e: harden full-tier assertions (#3219)
  • articles: lock ownership-id error precedence (#3244)
  • remove explicit any from hot specs (#3278)
  • agent: open reference menu through pointer event (#3372)
  • hooks: restore copy prompt fixture (#3368)
  • e2e: mock aggregate elements payload (#3378)
  • app: reconcile shard 4 contracts (#3380)
  • api: align brand remix concurrency fixtures (#3387)
  • api: normalize persisted remix fixtures (#3389)

Build and CI

  • actions: enforce immutable action pins (#3381)

Maintenance

  • cla: record the agent-account allowlist in the CLA ADR (#3178)
  • extension: remove stale workspace dependencies (#3202)
  • bump repo version to 0.1.66 (#3254)
  • lint: ratchet videos collection explicit-any to zero (#3241)
  • types: ban production as any and ts-ignore (#3255)
  • ci: refresh Fal model spec baseline (#3327)
  • repo: remove superseded guidance and planning artifacts (#3330)

Other

  • Queue follow-up conversation prompts (#3272)

Features

  • pricing: dynamic-pricing audit follow-ups — margin audit trail, cost passthrough, media vendor-cost ledger (#3041)
  • close the content feedback loop end-to-end (#3045)
  • content: prepare scheduled SEO article rollout (#3053)
  • release: add public monorepo hosted SaaS deploy lane (#3088)
  • release: parameterize hosted SaaS from GitHub environment vars (#3110)
  • workers: purge soft-deleted agent transcripts after 30 days (#3130)

Fixes

  • agent: agent surface audit — org context, duplicate response, reconnect churn, thread-switch remount, first-card blank (#2994)
  • messages: social-inbox sync partial failure, X cursor, LinkedIn timeout (#3049)
  • workflows: wire content-loop analytics hooks, avoids, and posting times (#3047)
  • optimization: query real worst performers and feed them as anti-patterns (#3037)
  • agent: do not restore a snapshot over a live local run on reconnect (#3055)
  • agent: invalidate the thread list from the store instead of window events (#3039)
  • e2e: unblock Playwright full-tier admin 404s and stale IA (#3048)
  • seo: preserve launch articles in sitemap (#3054)
  • optimization: apply suggestion payloads instead of only logging BrandMemory (#3043)
  • e2e: dedicated authenticated Playwright banner marker (#3044)
  • default local and e2e to cheapest image, video, and chat models (#2993)
  • telemetry: explicit Sentry replay mask and no default PII (#3028)
  • images: document trained-model safety-checker bypass (#3031)
  • agent: keep scope guardrail on every prompt path (#3033)
  • agent: rate-limit turns and bound prompt length (#3035)
  • agent: fence untrusted prompt input on the chat path (#3036)
  • release: pin marketplace deployment SHA (#3067)
  • agent: add jailbreak and prompt-extraction hardening (#3038)
  • content: serve article cards from CDN (#3069)
  • seo: close remaining crawl correctness gaps (#3073)
  • e2e: clean leftover Playwright full-tier failures (#3074)
  • e2e: close remaining full-tier leftover specs (#3077)
  • app: close Demo / FUD News QA blockers for sell-this-week (#3083)
  • auth: await email provider acceptance (#3084)
  • voices: surface catalog when org library is empty (#3089)
  • clear unresolved Sentry production errors (#3090)
  • release: run hosted SaaS deploy in the public repo (#3105)
  • release: accept provided marketplace SHA without private API (#3107)
  • release: run hosted SaaS deploy fully in the public repo (#3108)
  • api: assert StripeCoreModule import graph in spec (#3112)
  • ranking: exclude soft-deleted posts before LLM selection (#3114)
  • admin: require trusted env for Playwright admin bypass (#3115)
  • queues: identify and harden recurring BullMQ stalls (#3119)
  • models: restore cloud-production fallback defaults (#3120)
  • infra: unblock tofu init variable description (#3127)
  • realtime: isolate socket identity across token rotation (#3118)
  • e2e: align leftover full-tier locators with current IA (#3117)
  • release: validate marketplace SHA and stop secret inherit (#3131)
  • api: set OpenRouter zdr and deny data collection (#3129)
  • ci: use GITHUB_TOKEN only and allowlist transcript purge (#3139)
  • ci: preserve full-tier shard reports (#3147)
  • ci: scan merge-queue entries with the gitleaks CLI (#3152)
  • files: keep remotion pins, catalog, and patches on one version (#3157)
  • e2e: restore authed onboarding and execution history (#3160)

Refactoring

  • content-performance: delete unused generateNextBatchPrompts (#3042)
  • billing: open-source billing under AGPL and drop ee/ (#3093)
  • api: drop one-way Nest forwardRef wrappers (#3095)
  • api: split remaining Nest rings to zero forwardRef (#3102)
  • api: use ModuleRef in model controller specs (#3121)
  • brands: share controller access assertion (#3123)
  • articles: extract input boundary guards (#3135)
  • server: extract artifact material canonicalization (#3133)
  • workers: extract scheduled-post publish error policy (#3142)
  • agent: split cloud tool registry extensions (#3151)

Documentation

  • oss: Contributor-ready document set — glossary, ADRs, community files, README/CONTRIBUTING rewrite (#3003)
  • record agent prompt moderation stance (#3032)
  • oss: resolve review follow-ups on contributor docs and CI Node default (#3079)
  • oss: adopt FLA 2.1 CLA via CLA Assistant, retire DCO (#3092)
  • oss: version CLA acceptance once per account per CLA version (#3128)
  • oss: rewrite README hero, quick start, and agents section (#3137)

Tests

  • generate spec entity ids with testId() and guard high-entropy literals (#3015)
  • app: lock Agents settings href to /settings/policy (#3085)
  • app: lock /admin/organization redirect to live org analytics (#3086)
  • content: drop duplicate launch articles from artwork fixture (#3111)
  • content: assert both optimization-cycle findMany scopes (#3113)
  • restore client function and models branch coverage (#3116)

Build and CI

  • declare least-privilege token permissions in every workflow (#3075)
  • run required checks on merge_group for the master merge queue (#3145)

Dependencies

  • deps: bump the patch-and-minor group across 1 directory with 34 updates (#3124)
  • deps: replace Dependabot with deps:update Action bumps (#3136)
  • deps: bump workspaces to latest and move the PGlite pin to 0.5.5 (#3150)

Maintenance

  • media: discard orphan prod media dataset (#3046)
  • automation: ignore local SEO reports (#3051)
  • worktrees: pin agent worktrees to /.worktrees/ (#3004)
  • oss: exempt org members from the DCO check (#3068)
  • memory: one closing keyword per issue in PR bodies (#3076)
  • bypass Vercel image optimization (#3078)
  • de-slop the monorepo (unused imports, dead lint comments, commented-out code) (#3081)
  • bump repo version to 0.1.65 (#3104)
  • oss: unify issue-form EARS wording and intake labels (#3138)

What's Changed

Full Changelog: https://github.com/genfeedai/genfeed.ai/compare/v0.1.63...v0.1.64

What's Changed

Full Changelog: https://github.com/genfeedai/genfeed.ai/compare/v0.1.62...v0.1.63

What's Changed

New Contributors

Full Changelog: https://github.com/genfeedai/genfeed.ai/compare/v0.1.61...v0.1.62

What's Changed

Full Changelog: https://github.com/genfeedai/genfeed.ai/compare/v0.1.6...v0.1.61

What's Changed

Full Changelog: https://github.com/genfeedai/genfeed.ai/compare/v0.1.5...v0.1.6

What's Changed

Full Changelog: https://github.com/genfeedai/genfeed.ai/compare/v0.1.3...v0.1.4

Highlights

  • Ships the complete post-v0.1.2 master state, including the July live-QA route, shell, navigation, inspector, composer, settings, library, workspace, and design-system corrections.
  • Adds evergreen scheduling controls, scheduler release analytics, canonical generation briefs, social-inbox lifecycle contracts, and hardened agent publishing behavior.
  • Strengthens tenant scoping, authentication boundaries, filesystem and outbound-request security, webhook validation, and API contracts.
  • Stabilizes the release path with adaptive PR validation, exact-head E2E coverage, self-hosted build verification, OpenAPI drift checks, and deterministic route coverage.
  • Includes backend, worker, desktop, media, billing, workflow, and performance consolidation accumulated since v0.1.2.

Full changelog: https://github.com/genfeedai/genfeed.ai/compare/v0.1.2...v0.1.3

Promotes staging → master (#568). Production release.

Highlights

  • ee/billing decoupled from the AGPL self-hosted image; hardened self-hosted Docker (#563).
  • Self-hosted release E2E against the shipped image (#558).
  • Link-check CI: website link/orphan gate + docs dead-link check; repaired stale internal links and archived-repo references across docs and website (#566, #559).
  • Core-loop docs: repointed source permalinks from the deleted develop ref to master (#569).

Notes

  • No breaking API changes — patch bump over v0.1.1.
  • Branch hygiene: repo auto-delete-head-branch disabled; develop/staging/master now protected from deletion and force-push.

Patch release promoting accumulated develop fixes through staging to master.

Fixes

  • fix(api): normalize app enums for prisma filters
  • fix(api): normalize RDS filters for library queries
  • fix(app): serve pwa icons locally
  • fix(ci): restore organization typecheck
  • fix(ci): ignore ui-only package changes for backend deploys
  • fix(ci): use ui-excluding package glob for backend deploys
  • fix(ci): diff manual deploys against selected branch
  • fix(deploy): require master for production deploys

Chore

  • chore(ci): add Dependabot config targeting develop (npm/bun, github-actions, docker)

Verification

  • Full CI green on develop and staging→master PRs (Format, Typecheck, Lint, Gitleaks, Secretlint, all Test API/App shards, Build & Boot)
  • Mac Studio: typecheck + 59/59 test tasks green

First tagged release of the genfeed.ai monorepo. Publishing this release triggers the production deploy.

Highlights

  • All 13 production Sentry issues root-caused and fixed — newsletters Prisma reconciliation (schema + data-preserving migration, applied to prod), exception-filter chain repair (4xx noise no longer pages Sentry), Clerk webhook 400s, Google Ads config optional, files-service EACCES, website RSC fn-prop serialization / hydration / extension noise / interceptor error shape.
  • Deploy pipeline restored after the cloud→genfeed.ai migration broke it: recovered build-unified-image action, SSH/SSM config fixes, SSM multiline-check bug, bun x migrate runner, hoisted bun install so runtime requires resolve in the production image.
  • Production-readiness remediation: dead package deletion, S3/Job dedup into shared libs, Mongo residue removal, workflow boundary cleanup, bot-manager dedup, CI dedup.
  • Pipeline features: ReDoS-proof regex evaluation (#475), bot engagement/monitoring/publishing sub-schemas (#483), workflow abortSignal + bounded maxConcurrency (#479).
  • 12 test files repaired after the org-scoped URL refactor; full app suite 1630/1630 green.

What's Changed

Full Changelog: https://github.com/genfeedai/genfeed.ai/commits/v0.1.0