v0.1.0 — first release: Sentry root-cause fixes + deploy pipeline restoration
·
2510 commits
to master
since this release
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 xmigrate 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
- chore(pages): delete verified-dead modules from TO_REVIEW ledger by @VincentShipsIt in #143
- refactor(tier2): normalize cross-package imports for services/models/props/providers/utils by @VincentShipsIt in #152
- feat(tasks): consolidate WorkspaceTask into Task by @VincentShipsIt in #153
- feat(agents): cross-agent memory via .agents/memory/ by @VincentShipsIt in #142
- chore(pages): verify posts subtree — clear TO_REVIEW ledger by @VincentShipsIt in #155
- fix(integrations): wire BEEHIIV_API_URL and HEDRA_URL from ConfigService (#90) by @VincentShipsIt in #156
- feat(files): wire StorageProvider into upload service (#111) by @VincentShipsIt in #157
- feat(models): provider auto-discovery — sync from Replicate, Fal, HuggingFace (#93) by @VincentShipsIt in #158
- fix(self-hosted): stop LOCAL mode redirect loop on /onboarding (#141) by @VincentShipsIt in #154
- chore(cleanup): phase A — drop workflow-cloud + empty EE/extension stubs by @VincentShipsIt in #162
- chore(phase-d): close TO_REVIEW.md ledger + Studio barrel dead-code sweep by @VincentShipsIt in #165
- refactor(ee): Phase C Layer 1 — billing service contracts + scaffold by @VincentShipsIt in #163
- fix(tasks): PR review batch 1 — identifier/linkedIssueId/facecam/ConfigService/syncedKeys/sync JSON:API by @VincentShipsIt in #169
- fix(proxy): narrow LOCAL mode OAuth redirect — platform callbacks must not redirect by @VincentShipsIt in #170
- fix(config/workers): HEDRA_URL allow empty, text-to-music discovery, publish clean-tree guard by @VincentShipsIt in #171
- feat: top-bar app switcher + workspace sidebar cleanup by @VincentShipsIt in #172
- fix(build): unblock CI — TS6 ignoreDeprecations, storage tsconfig, files missing dep by @VincentShipsIt in #175
- refactor(packages): absorb deserializer into helpers, providers into contexts by @VincentShipsIt in #173
- feat(fleet): CustomerInstance schema + CRM dead code removal by @VincentShipsIt in #174
- fix(test): remove extra expect.anything() from AbortError logger assertion by @VincentShipsIt in #176
- chore(publish): mark workflow-engine + workflow-saas as publishable by @VincentShipsIt in #177
- fix(packages): add license + repository fields to workflow-engine and workflow-saas for npm publish by @VincentShipsIt in #178
- feat(serializers): add workspace-task serializer + publishConfig for npm by @VincentShipsIt in #179
- [codex] Fix CI lockfile and test resolution issues by @VincentShipsIt in #218
- feat(content): extend content run lifecycle and publish attribution by @VincentShipsIt in #217
- Fix tabs semantics to align with shadcn primitives by @VincentShipsIt in #228
- Codebase cleanup: tooling, dead code, and error-handling fixes by @VincentShipsIt in #229
- WIP: fix CI drift on content run attribution branch by @VincentShipsIt in #219
- refactor(api): complete Mongoose → Prisma migration by @VincentShipsIt in #240
- fix(ui): consolidate web-tokens.scss, delete orphaned SCSS, fix rich-editor DaisyUI vars by @VincentShipsIt in #243
- fix(api): replace invalid prisma.workspaceTask delegate with prisma.task by @VincentShipsIt in #246
- fix(api): workspace-task Prisma delegate, missing DTOs, bookmark export, PGlite offline boot by @VincentShipsIt in #247
- fix(ci): close release workflow gaps by @VincentShipsIt in #248
- fix(ci): optimize weekly api coverage job (~25min → ~6-8min) by @VincentShipsIt in #252
- Finalize shell cleanup and canonical settings routing by @VincentShipsIt in #253
- fix: PR review followups — CI, workspace dashboard, dep bumps by @VincentShipsIt in #254
- refactor: remove GrowthBook SDK, use provider-agnostic feature flags by @VincentShipsIt in #263
- perf: optimize 5 critical performance bottlenecks by @VincentShipsIt in #266
- Remove placeholder specs by @VincentShipsIt in #267
- refactor: dedupe workflow routing and fix secretlint hook by @VincentShipsIt in #268
- Remove empty Storybook scaffold TODOs by @VincentShipsIt in #269
- Merge open develop PRs by @VincentShipsIt in #270
- Refactor MCP social platform validator by @VincentShipsIt in #271
- [codex] Fix CI test step expectations by @VincentShipsIt in #265
- [codex] Extract shared query stage assertions by @VincentShipsIt in #282
- Slim mobile date formatting utility by @VincentShipsIt in #279
- Dedupe desktop session test setup by @VincentShipsIt in #274
- Dedupe notifications spec cleanup by @VincentShipsIt in #281
- [codex] Dedupe CLI generation flow by @VincentShipsIt in #275
- refactor: dedupe date parsing helper by @VincentShipsIt in #272
- [codex] Deduplicate agent JSON:API test mocks by @VincentShipsIt in #276
- Dedupe content plan data helpers by @VincentShipsIt in #278
- Dedupe issue icon class helpers by @VincentShipsIt in #273
- [codex] Dedupe desktop boot screen shell by @VincentShipsIt in #277
- [codex] Refactor mobile async data request helpers by @VincentShipsIt in #280
- [codex] Desktop Genfeed credits access by @VincentShipsIt in #284
- [codex] Improve app and desktop terminal performance by @VincentShipsIt in #283
- feat: add website retargeting pixels by @VincentShipsIt in #293
- refactor: dedupe desktop test sorting by @VincentShipsIt in #290
- refactor: reuse analytics format helpers by @VincentShipsIt in #297
- docs: define core cloud execution boundaries by @VincentShipsIt in #300
- refactor: dedupe page metadata helper by @VincentShipsIt in #285
- feat: close content loop gaps by @VincentShipsIt in #286
- fix: address workflow review feedback by @VincentShipsIt in #291
- Harden workflow CI and onboarding/desktops by @VincentShipsIt in #294
- fix: Z-Image Turbo split loading (#58) by @VincentShipsIt in #295
- test: Flux 2 PuLID upscale pipeline verification (#61) by @VincentShipsIt in #296
- feat(api): add managed inference credits by @VincentShipsIt in #299
- fix(api): align prisma filter tests by @VincentShipsIt in #301
- docs/199 trend oss surface by @VincentShipsIt in #302
- docs/200 trend wiring by @VincentShipsIt in #303
- docs/201 trend write audit by @VincentShipsIt in #304
- test(api): add trend ingestion smoke path by @VincentShipsIt in #305
- docs/203 analytics inventory by @VincentShipsIt in #306
- docs/204 analytics boundaries by @VincentShipsIt in #307
- docs/205 analytics ingestion pipeline by @VincentShipsIt in #308
- test(api): add analytics dashboard smoke path by @VincentShipsIt in #309
- docs: document provider registry by @VincentShipsIt in #310
- docs: document generate tool surface by @VincentShipsIt in #311
- test(api): verify stable provider media path by @VincentShipsIt in #312
- feat: show provider balances in topbar by @VincentShipsIt in #292
- feat: prepare MVP release surfaces by @VincentShipsIt in #298
- fix: scope agent tool hrefs by organization by @VincentShipsIt in #325
- Replace desktop SQLite local store with PGlite by @VincentShipsIt in #336
- Show BYOK provider balances in the topbar by @VincentShipsIt in #335
- [codex] Complete Threads publishing support by @VincentShipsIt in #333
- fix(website): complete retargeting pixel event plumbing by @VincentShipsIt in #337
- Implement desktop offline sync backbone by @VincentShipsIt in #326
- fix: security audit — CRITICAL SSRF + HIGH ACL/IDOR/secrets/authz fixes by @VincentShipsIt in #346
- fix: remediate 6 deferred architectural security findings by @VincentShipsIt in #354
- fix: patch 36 security vulnerabilities from deepsec AI scan by @VincentShipsIt in #339
- refactor: migrate useResource/useCrud to TanStack React Query v5 by @VincentShipsIt in #355
- fix: resolve lint and type-check errors in app package by @VincentShipsIt in #356
- refactor: React Doctor cleanup — forwardRef removal, Tailwind shorthands, perf fixes by @VincentShipsIt in #357
- refactor: migrate packages/hooks to TanStack React Query v5 by @VincentShipsIt in #358
- chore: recover WIP snapshot — agent, desktop, workflows, skills by @VincentShipsIt in #359
- [codex] Repair CI gates by @VincentShipsIt in #365
- [codex] Fix next-config source exports by @VincentShipsIt in #361
- [codex] Fix merged PR security review risks by @VincentShipsIt in #360
- [codex] Merge remaining local work to develop by @VincentShipsIt in #366
- [codex] Preserve security refactor cleanup by @VincentShipsIt in #367
- fix: stabilize SWC circular dependency checks by @VincentShipsIt in #368
- feat: wire conditional EE/OSS billing DI override (#87) by @VincentShipsIt in #369
- feat: move subscription billing into EE package by @VincentShipsIt in #371
- refactor: reuse shared UI class combiner by @VincentShipsIt in #370
- refactor: unify agent + MCP tool registry (phases 1-3) by @VincentShipsIt in #372
- fix(ci): green all develop CI gates by @VincentShipsIt in #373
- feat(app): add managed credits checkout UX by @VincentShipsIt in #374
- fix(docker): align server image with current services by @VincentShipsIt in #377
- fix(docker): remove stale configs workspace by @VincentShipsIt in #378
- fix: install native build tools for server Docker image by @VincentShipsIt in #379
- fix: include CA certificates in server Docker image by @VincentShipsIt in #380
- fix: harden managed credits checkout flow by @VincentShipsIt in #381
- fix: exclude desktop packages from server Docker install by @VincentShipsIt in #382
- fix: include Prisma schema during server Docker install by @VincentShipsIt in #383
- fix(server-docker): skip root postinstall in image deps by @VincentShipsIt in #384
- fix(server-docker): build shared dist packages first by @VincentShipsIt in #386
- fix(server-docker): preserve build order before parallel batch by @VincentShipsIt in #387
- fix(server-docker): use actual workspace filter names by @VincentShipsIt in #388
- fix(server-docker): expose bunx in base image by @VincentShipsIt in #389
- fix(server): apply swc decorator options to shared libs by @VincentShipsIt in #390
- fix(docker): include ee billing in server image by @VincentShipsIt in #391
- fix(ci): verify current server bundle list by @VincentShipsIt in #392
- promote: develop to staging by @VincentShipsIt in #376
- promote: staging to master by @VincentShipsIt in #393
- refactor(workers): move BullMQ processors out of API by @VincentShipsIt in #395
- [codex] Migrate monorepo packages and apps to ESM by @VincentShipsIt in #396
- fix(frontend): resolve real react-doctor findings + migrate training tabs to react-query by @VincentShipsIt in #397
- fix(api): unblock localhost boot — articles ESM circular-dep TDZ + cache tsbuildinfo in turbo by @VincentShipsIt in #398
- feat(build): migrate Next.js builds to Turbopack + pin file-tracing root by @VincentShipsIt in #399
- [codex] Consolidate settings scopes and brand routes by @VincentShipsIt in #401
- Fix local self-hosted app boot without Clerk keys by @VincentShipsIt in #402
- refactor: dedupe assets upload tests by @VincentShipsIt in #408
- refactor: share analytics date range formatting by @VincentShipsIt in #407
- feat(reply-bot): prefilter candidate opportunities by @VincentShipsIt in #406
- refactor: dedupe asset prompt builder by @VincentShipsIt in #405
- refactor: dedupe orchestration skill filters by @VincentShipsIt in #404
- refactor: dedupe mobile ingredients service tests by @VincentShipsIt in #403
- feat(content): add top performer prompt context by @VincentShipsIt in #409
- fix: address actionable PR review feedback by @VincentShipsIt in #410
- refactor: share editor time formatting by @VincentShipsIt in #412
- feat(automation): add daily Claude pattern miner by @VincentShipsIt in #411
- Add issue 10 verification artifacts by @VincentShipsIt in #413
- refactor: reuse shared cn helper by @VincentShipsIt in #415
- Refactor prompt bar output button by @VincentShipsIt in #418
- Refactor service operation wrappers by @VincentShipsIt in #419
- feat(trends): add cold-start bootstrap fallback by @VincentShipsIt in #416
- feat(integrations): add provider framework foundation by @VincentShipsIt in #417
- refactor: reuse shared cn helper by @VincentShipsIt in #414
- refactor: share desktop asset mapper by @VincentShipsIt in #422
- refactor: share yt-dlp command runner by @VincentShipsIt in #423
- fix: normalize malformed workflow inputs error by @VincentShipsIt in #427
- Fix React Doctor config filename by @VincentShipsIt in #426
- docs: define corpus launch health targets by @VincentShipsIt in #428
- refactor(interfaces): dedupe 4 identical interface files via re-export by @VincentShipsIt in #429
- Refactor browser storage cache helpers by @VincentShipsIt in #424
- Refactor workflow execution preflight by @VincentShipsIt in #425
- fix(tracked-links): harden redirect/geo SSRF guards and tenant-scope writes by @VincentShipsIt in #430
- fix(cli): workflow list --json empty output + whoami spinner cleanup (clawpatch) by @VincentShipsIt in #431
- chore(config): remove unused Mastodon/Ghost default-endpoint env vars (#90) by @VincentShipsIt in #432
- docs: define skills memory boundary by @VincentShipsIt in #420
- feat(content): add weighted campaign rotation by @VincentShipsIt in #421
- fix(api): reconcile list-filter fields with Prisma schema + additive migration by @VincentShipsIt in #433
- fix: resolve CodeRabbit/Codex review findings from merged PRs (#412–#430) by @VincentShipsIt in #434
- test(e2e): real-Clerk authenticated route smoke (storageState) by @VincentShipsIt in #435
- test(e2e): clear Turbopack dev cache in global teardown by @VincentShipsIt in #436
- ci(e2e): run workflow weekly and manually only by @VincentShipsIt in #437
- test(e2e): code + route coverage harness and ~80% coverage expansion by @VincentShipsIt in #438
- feat(desktop): add release artifact manifest by @VincentShipsIt in #440
- fix(desktop): harden auth callback flow by @VincentShipsIt in #442
- refactor(hooks): type voice recognition boundary by @VincentShipsIt in #441
- refactor(services): type link tracking gtag access by @VincentShipsIt in #443
- feat(desktop): add workspace switching and asset import UX by @VincentShipsIt in #444
- fix(desktop): persist composer controls by @VincentShipsIt in #445
- refactor(hooks): tighten speech recording boundaries by @VincentShipsIt in #446
- ci(react-doctor): skip on promotion PRs, pin action + drop dead inputs by @VincentShipsIt in #452
- promote: develop → staging (177 commits — e2e overhaul, ffmpeg retry, prisma-7 fix) by @VincentShipsIt in #451
- ci(deploy): make staging deployment dispatch-only by @VincentShipsIt in #454
- promote: staging → master (178 commits) by @VincentShipsIt in #455
- ci: retry inline bun install (3-attempt backoff) to absorb ffmpeg-static CDN flakes by @VincentShipsIt in #456
- refactor(helpers): expose memory cache size by @VincentShipsIt in #453
- feat(desktop): add trend brief handoff by @VincentShipsIt in #457
- refactor(hooks): make music playback normalization pure by @VincentShipsIt in #448
- feat(integrations): add optional Unipile provider by @VincentShipsIt in #449
- chore: consolidate open PRs #458–#465 + format/desktop fixes → develop by @VincentShipsIt in #466
- fix(analytics): resolve GA client id from async gtag callback by @VincentShipsIt in #458
- ci(desktop): add release QA gate by @VincentShipsIt in #459
- refactor(services): type heygen generation response by @VincentShipsIt in #460
- refactor(props): type image-to-video prompt props by @VincentShipsIt in #461
- feat(desktop): add resilience states by @VincentShipsIt in #462
- refactor(hooks): type topaz enhance payloads by @VincentShipsIt in #464
- feat(trends): add prelaunch corpus backfill by @VincentShipsIt in #465
- fix(deploy): prod-schema reconciliation + data-preserving migration + migrate-on-deploy by @VincentShipsIt in #467
- promote: develop → staging (consolidated PRs #458–#465 + deploy hotfix #467) by @VincentShipsIt in #468
- promote: staging → master (consolidated PRs + deploy hotfix + data-preserving migration) by @VincentShipsIt in #469
- promote: develop → staging (Sentry root-cause fixes + docs) by @VincentShipsIt in #489
- release: staging → master (Sentry root-cause fixes) by @VincentShipsIt in #495
- fix(ci): restore build-unified-image action — prod deploys broken since migration by @VincentShipsIt in #502
- fix(credits): run balance read/write/ledger inside the Prisma transaction by @VincentShipsIt in #470
- fix(billing): allocate renewal credits on invoice.paid + atomic webhook idempotency by @VincentShipsIt in #471
- fix(services): stop posting internal API calls to hardcoded localhost by @VincentShipsIt in #472
- fix(mobile): add asset set referenced by app.config.js to unblock EAS builds by @VincentShipsIt in #473
- fix(security): close unauthenticated webhook + service surfaces by @VincentShipsIt in #488
- fix(security): SSRF blocklist, ReDoS guards, unbounded query limit, OAuth redirect allowlist by @VincentShipsIt in #492
- fix(app): route org-scoped navigation through useOrgUrl; repair dead links by @VincentShipsIt in #494
- fix(security): spoofable Leonardo IP check, Telegram token leak, billing plan-change gaps by @VincentShipsIt in #496
- build: fail loud when tsc --build skips emit (turbo cache poisoning guard) by @VincentShipsIt in #497
- fix(devops): remove ghost fanvue/llm services, add postgres to selfhosted, add staging migrations by @VincentShipsIt in #487
- chore(migration): remove Mongo/Mongoose residue post-Prisma migration by @VincentShipsIt in #499
- refactor(workflow): P2-E package boundary cleanup — shim, credit registry, SaaSNodeType, dead stores by @VincentShipsIt in #500
- refactor(media): deduplicate S3/Job services into shared libs; fix storage ContentType by @VincentShipsIt in #501
- refactor(packages): delete dead packages + unify duplicate utilities (P2-D) by @VincentShipsIt in #503
- fix(deploy): SSM multiline check false-positives kill every prod deploy by @VincentShipsIt in #506
- refactor(devops): deduplicate CI bun-install blocks and deploy scripts by @VincentShipsIt in #498
- refactor(bots): deduplicate discord/slack/telegram bot managers by @VincentShipsIt in #504
- fix(deploy): prisma migrate container used bunx, which the image doesn't ship by @VincentShipsIt in #507
- fix(docker): prisma config unresolvable in prod image (isolated installs) by @VincentShipsIt in #508
- promote: develop → staging (full remediation + deploy-pipeline fixes) by @VincentShipsIt in #509
- fix(workflow-engine): ReDoS-proof regex evaluation via recheck static analysis (#475) by @VincentShipsIt in #510
- feat(bots): add engagement/monitoring/publishing sub-schemas + validation DTOs (#483) by @VincentShipsIt in #491
- feat(workflow-engine): honor abortSignal cancellation + bound maxConcurrency (#479) by @VincentShipsIt in #490
- promote: develop → staging (pipeline PRs #510/#491/#490 + test-drift repairs) by @VincentShipsIt in #511
- release: staging → master (everything-release for v0.1.0) by @VincentShipsIt in #512
Full Changelog: https://github.com/genfeedai/genfeed.ai/commits/v0.1.0