* fix(content): update description for storage overview section
* fix(content): update references from "The Logos Blog" to "Logos Media" across multiple files
* feat: Refactor blog section to media section
- Created new components for articles and podcasts under the media section.
- Updated routing constants to replace blog with media.
- Adjusted all references in the codebase from blog to media, including links, buttons, and navigation.
- Implemented new layout and design for articles and podcasts to enhance user experience.
- Updated translations and content references to align with the new media section.
* feat(about): replace h1 with AnimatedHeading component in AboutHero section
* fix: update import paths for PodcastsSection and adjust LambdaBadge properties in multiple components
* fix: adjust hover translation values for desktop stack items
- Call setRequestLocale(locale) in the docs page factory so next-intl
renders statically instead of bailing to headers(), which broke
output: export on /security, /privacy-policy, /terms-and-conditions,
/testnet-terms-and-conditions and /testnet-v01-faqs.
- Wrap gray-matter in safeMatter() so an RFP with invalid YAML
frontmatter (e.g. RFP-015's unquoted colon in title) falls back to
body-only heuristics instead of being dropped from the listing.
- Added tech-networking-thumb.webp to the nav-overlay/figma directory.
- Added tech-overview-thumb.webp to the nav-overlay/figma directory.
- Added tech-storage-thumb.webp to the nav-overlay/figma directory.
* fix(sitemap): remove FAQ route from static indexable routes
* feat(web): markdown-managed legal pages + Testnet FAQ & Terms
Introduce a markdown-based system for legal/info documents and add the
two testnet pages on the same docs route pattern.
- Add getLegalDoc loader (gray-matter frontmatter + zod validation) and
LegalMarkdown renderer (react-markdown + remark-gfm) mapped to Logos
design tokens; render legal pages as a server component.
- Refactor docs-page-factory to source content from content/legal/<slug>.md
instead of next-intl namespaces; migrate terms, privacy, and security
from messages/en.json to markdown.
- Add /testnet-v01-faqs and /testnet-terms-and-conditions pages with
content mirrored from logos.co; link the FAQ's testnet-terms references
to the internal route.
- Add Testnet FAQ and Testnet Terms to the docs ToC (remove the dead FAQ
entry); register both routes in the sitemap.
- Align docs content to the standard page gutter by removing the
redundant px-3 on the docs page shell.
* chore: optimise page imagery
* feat(web): link Logos Devs X account in community section
* chore(web): hide 'What you can build today' section on get-started and builders-hub
* refactor: reuse builders hub start sections
* feat(builders-hub): source RFPs from GitHub API at build time
Fetch and parse RFPs from the logos-co/rfp repo (markdown + YAML
frontmatter) at build time instead of local content, so the /rfps
listing and [slug] detail pages render from a single live source.
- add rfps-github lib: GitHub contents fetch, gray-matter frontmatter
parse, stable slug from filename, draft/template exclusion
- detail page renders frontmatter-stripped markdown via LegalMarkdown,
with Apply + View on GitHub CTAs
- widen RFP card/row/listing props to RfpListItem so GitHub data
(no reward/image) and local Rfp both satisfy the UI
- add optional markdown body to BuildersHubDetailLayout
* refactor: share get started sections
* feat(node-programme): refactor signup form and implement submission logic
* fix(web): improve layout and styling of feature cards section
* feat(tech-stack): implement tech stack related articles functionality and update blog article fetching logic
- Introduced a new JSON snapshot for active circles, including details about events and statistics.
- Added a script to sync the active circles snapshot from the live Logos API.
- Updated package.json to include a new build step for syncing active circles.
- Modified footer component to include an interactive newsletter signup form.
- Adjusted various links in content to point to updated resources and initiatives.
- Enhanced link validation to support same-page anchors.
* feat(funnel): route connect through afform-submit
Send /connect submissions to the shared afform-submit endpoint and allowlist afformCircleContactForm.
* fix(civi-crm): make connect civi-only intake
Gate Notion to movement forms, add connect case defaults, and allow missing Notion profile mappings for non-Notion intake forms.
* chore(civi-crm): remove legacy contact endpoint
Drop the old public contact submission route after connect migrated to afform-submit.
* test(civi-crm): cover connect afform-submit path
Assert connect case defaults, Note joins, and CiviCRM-required behaviour when Notion is skipped.
* docs(funnel): add connect to intake flow
Document the fourth form and its CiviCRM-only routing contract in the funnel intake guide.
* fix(web): update afform circle contact form question field
* feat(notion): add scorecard page content to funnel form submissions
heading_2, four bulleted_list_item blocks, and a paragraph for the
overall fit line using proper Notion block types.
* refactor(civi-crm): drop wildcard CORS from afform-submit
Rely on the public-cors middleware for origin allowlisting instead of
emitting Access-Control-Allow-Origin: * and a redundant OPTIONS handler.
* feat(web): rename /connect route to /contact
Updates the ROUTES constant and moves the app directory from
[locale]/connect to [locale]/contact.
* chore(web): exclude /contact from sitemap
Page currently redirects to the homepage, so it should not be indexed.
* docs(funnel): note /connect renamed to /contact and form removed
- Updated hero-section, mountain-section, and parallel-society-section to use min-[1025px] for responsive design.
- Adjusted press-section and social-proof-section for better mobile and desktop handling.
- Enhanced start-building-section and tech-stack-section with new responsive classes.
- Modified use-cases-section to improve scrolling behavior based on breakpoints.
- Refined tech-overview-use-cases and footer components for consistent styling.
* Refactor technology stack integration and update documentation links
- Updated the technology stack links in various components to point to the new GitHub documentation repository.
- Refactored the Lambda Prize page to utilize a shared TechStackSection instead of local tech cards.
- Removed redundant tech stack message copies from the storage and technology stack pages.
- Enhanced the home feature cards section to use Link components for navigation.
- Added tests to ensure the integrity of the new tech stack structure and documentation links.
* feat: integrate social proof stats into home page and update related components
* fix: update Discord URLs to point to the new logosnetwork link
* fix: update navigation links to point to external resources and improve backdrop click handling
* feat: implement Node Programme signup form and update related page content
- Introduced new Basecamp page at `/basecamp` with detailed sections on its features, capabilities, and installation.
- Updated multiple references across the site to link to the new Basecamp page instead of the old technology stack anchor.
- Added new images for Basecamp to the public images directory.
- Modified existing JSON files to reflect the new structure and content for Basecamp.
- Enhanced the navigation to direct users to the Basecamp installation page.
- apps/cms: auto-formatted prettier warnings in scripts and tests
(schema-push-prompts.test.ts, dev.ts, schema-push-prompts.ts).
- apps/web: auto-formatted prettier warnings in lib/press-engine.ts.
- apps/web/lib/__tests__/link-policy.test.ts: drop docs.logos.co
from the blocked-URL list — the live Get Started page now uses it
as the canonical docs entry point via EXTERNAL_URLS.docs.
- apps/cms/.../save-site-content-as-pr.test.ts: footerSchema now
requires a newsletter object; add it to the test fixture so the
builder passes Zod parsing.
- apps/web/package.json: declare tsx as an explicit devDependency so
test:perf / test:static find it under apps/web/node_modules/.bin
after the pnpm 11 lockfile regeneration changed hoisting.
- apps/web/test/performance/budgets.ts: bump maxHtmlBytes 325k -> 430k
to cover homepage growth from recent motion polish and Get Started.
- pnpm-lock.yaml: refresh after adding tsx to apps/web.
Verified: pnpm test:release passes locally end-to-end.
External press/calendar APIs occasionally returned HTML (status 200) instead
of JSON during Vercel prerender, causing pages like /logos-broadcast-network
to fail with an opaque "Unexpected token '<'" JSON.parse error.
- Add Accept: application/json header to all JSON fetches
- Read body as text and surface URL/status/content-type/body snippet on
parse failure so future regressions are diagnosable from build logs
- Retry once with cache: 'no-store' to recover from a cached bad response
- Apply same shape to article HTML fetch and calendar fetch
- Update tests to mock text() responses and assert the new fetch init shape