26 Commits
Author SHA1 Message Date
Jules 4a32420ddf fix(web): build through turbo instead of rebuilding shared deps
* fix(web): build through turbo instead of rebuilding shared deps

The app build re-ran the logos-ui build, whose `tsup --clean` wiped
packages/ui/dist while logos-crm compiled against it in parallel. The deploy
now runs the same turbo build as CI, so only the ui task writes that dist.
`out/**` joins the build outputs since turbo owns the export now.

* docs(web): build the app through turbo

* fix(web): build on Vercel through turbo

Vercel ran the app build directly, which no longer builds
@acid-info/logos-ui and failed to resolve it. vercel.json pins the deploy to
the same turbo command Jenkins runs.
2026-08-25 00:19:01 +09:00
Jules bc30c4cede refactor(civi-crm/web): drop CiviCRM integration
* refactor(civi-crm): remove case management pages and API

The Circle Case UI, its API routes and the CiviCRM query layer they used
are gone. Keeps the app shell out entirely: no pages remain, so the
layout, styles and UI dependencies go with them.

* refactor(civi-crm): drop CiviCRM write from the intake endpoint

Submissions now go to Notion and, for the steward form, n8n. The legacy
afformCircleContactForm name was CiviCRM-only and is no longer accepted;
the fields[] payload is ignored.

* chore(web): remove CiviCRM afform generator scripts

They fetched form definitions from the CiviCRM API, which is gone. The
generated files under lib/civicrm are hand-maintained from now on.

* refactor(web): trim funnel form definitions and move to lib/funnel-forms

Fields keep only what renders the form: formKey, label, inputType,
required, repeatable. The CiviCRM entity/join/fieldName plumbing and the
fields[] POST payload are gone, along with the unused circle contact
form.

country was marked required but exempt from validation through its
CiviCRM Address join, so it is now enforced like every other required
select.

* docs: rewrite civi-crm and funnel docs for the intake-only app

Drops the CiviCRM API guide and the case management architecture, and
updates the funnel reference to the Notion + n8n flow.
2026-08-13 22:44:23 +09:00
Jules a7e5eedf35 feat: add "How did you first hear about Logos?" field to funnel forms
* feat: add @repo/funnel package for shared hear-about constants

Single source of truth for the "How did you first hear about Logos?"
question, options, and id -> label map used by apps/web and apps/civi-crm.

* feat: map hear-about answer to a Notion select on intake

Unknown option ids are dropped so tampering cannot create new select
options; field defs without a CiviCRM fieldName are skipped in
buildAfformValues so the Afform payload is unchanged.

* feat: add required hear-about field to the three funnel forms

Injected below the chat name/service row on coalition-partner,
activist-builder and activist-leader-steward. Web/Notion-only: defs
without a fieldName are filtered out of the CiviCRM fields payload.

* docs: document hear-about field in funnel reference

* refactor: extract resolveHearAboutLabel from Notion builder

Share the option-id -> label resolution so the route can reuse the
builder's exact accept/write predicate.

* fix: enforce required hear-about field server-side

Reject funnel submissions whose hear-about answer is missing or not a
known option id, instead of relying on client-side validation alone.
2026-07-08 19:39:42 +09:00
jinhojang6 a45401568e feat(field-guide): match reference site layout, fonts, and dark mode
Port the reference guide's chrome verbatim so /field-guide is visually
identical to logos-brand-protocol.vercel.app, including dark mode.

- field-guide.css: reference tokens + styles scoped under .fg-shell,
  with the Paper/Ink dark theme on .fg-shell[data-theme="dark"]
- FieldGuideShell: reference DOM (lambda header, page reference, theme
  toggle, GitHub, print, chapter sidebar, prev/next pager, mobile menu)
- render chapter Markdown into .fg-article via rehype-raw so headerless
  tables, <kbd>, and <strong> render faithfully
- hide the global site header/footer on /field-guide so the guide owns
  the full viewport (SiteHeaderGate + new SiteFooterGate)
- Public Sans / Fira Code via next/font; Times serif headings
2026-06-30 02:29:00 +09:00
JulesFILIOT c274ded8d5 fix(web): support old iOS Safari via browserslist
Next.js 16 defaults to Safari 16.4+, emitting ES2022 class static
blocks that iOS 14/15/16.0-16.3 cannot parse, breaking all client JS.
Lower the target to safari/ios_saf 14 so Turbopack down-levels syntax.
2026-06-19 16:44:24 +02:00
Jinho Jang 97589cb5c5 Update Builders Hub, Get Started, legal pages, and RFP sourcing (#36)
* 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
2026-06-04 18:34:29 +09:00
jinhojang6 43b18f3232 feat: implement newsletter signup functionality with react-query; refactor footer components to integrate new newsletter form 2026-06-02 22:44:34 +09:00
jinhojang6 26913b012f feat: add active circles snapshot and sync script; update footer with newsletter form
- 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.
2026-06-02 22:06:36 +09:00
FelicioandJulesFILIOT ee04d72683 add forms for CRM funnels
* add forms for CRM funnels

* a

* set profile and lead source

- https://civicrm.logos.co/civicrm/admin/afform/submissions#/?name=afformActivistBuilder
- https://civicrm.logos.co/civicrm/contact/view?reset=1&cid=1000
- https://civicrm.logos.co/civicrm/contact/view?reset=1&cid=1000
- https://civicrm.logos.co/civicrm/contact/view/case?reset=1&id=388&cid=1000&action=view&context=case&selectedChild=case&key=CRMCaseFormSearch3vjNUK027Z0YMdmpnTbHyNePydwogixSnFN3Z2YluYYR4_8939

* default checkboxes to true

* remove titles

* u

* add policy

* t

* fix(civi-crm): avoid readonly env writes in CORS test

Use a keyed env helper in the public CORS test so cleanup and setup no longer rely on delete or readonly typed env properties.

* fix(web): align node programme route keys

Rename node program route/message keys to node programme and update links, metadata, sitemap entries, and contract tests.

---------

Co-authored-by: JulesFILIOT <dev@julesfiliot.com>
2026-06-01 17:59:37 +09:00
jinhojang6 113902fc3a fix(ci): get pnpm test:release fully green end-to-end
- 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.
2026-05-21 20:24:54 +09:00
jinhojang6 ca887f85ae chore: downgrade @types/node to ^24.12.4 across multiple packages 2026-05-20 14:42:29 +09:00
jinhojang6 390822216f fix: build web workspace dependencies 2026-05-18 15:44:15 +09:00
jinhojang6 6af1a9c9bc test: add static accessibility navigation smoke 2026-05-18 14:52:33 +09:00
jinhojang6 48bb1ae0d8 test: add web performance smoke 2026-05-18 14:49:14 +09:00
jinhojang6 e1fa2612b7 test: smoke static web export 2026-05-18 14:44:25 +09:00
jinhojang6 e319fdc696 feat: publish Logos packages to npm 2026-05-15 20:01:59 +09:00
jinhojang6 9aeb1993b2 Refactor code structure for improved readability and maintainability 2026-05-07 09:57:22 +09:00
jinhojang6 594171050d feat: implement ContentNotFoundError for better error handling in loaders and update related components 2026-05-07 09:56:06 +09:00
jinhojang6 8f3da4c607 feat: integrate circles map and events functionality with dynamic loading 2026-04-29 22:06:36 +09:00
jinhojang6 a573bbf969 feat: add Builders Hub implementation plan and Figma specs for home page 2026-04-28 16:25:32 +09:00
jinhojang6 08606373b1 feat: add schemas for circles, press articles, and site settings 2026-04-28 00:45:24 +09:00
jinhojang6 cc000b6aa0 feat: add blockchain and networking sections with related articles and features 2026-04-25 02:24:34 +09:00
jinhojang6 9bd1a097fe feat: update internationalization routing and static export handling, remove unused proxy and OG route 2026-04-24 02:53:03 +09:00
jinhojang6 ee30a72f1c feat: add footer and navigation overlay components with icons 2026-04-22 00:29:40 +09:00
jinhojang6 856ea90979 feat: add design tokens for colors and typography 2026-04-20 23:42:00 +09:00
Jinho Jang c0cb0ff0ed Initial commit 2026-04-20 22:24:39 +09:00