63 Commits
Author SHA1 Message Date
jinhojang6 3e2dfbd08f feat(web): switch roadmap images by release tab 2026-08-11 04:00:54 +09:00
jinhojang6 a5bf23599b fix(web): align roadmap copy and links 2026-08-11 04:00:54 +09:00
jinhojang6 920e6dd8c0 feat: update roadmap release layout 2026-08-11 04:00:54 +09:00
jinhojang6 56121ea905 fix(roadmap): address review feedback 2026-08-11 04:00:54 +09:00
jinhojang6 99fea5a4be feat: update roadmap timelines 2026-08-11 04:00:54 +09:00
jinhojang6 d15bed55b7 fix: address roadmap review feedback 2026-08-11 04:00:54 +09:00
jinhojang6 1360bd70df feat: add roadmap page 2026-08-11 04:00:54 +09:00
Jinho Jang 3e36fc9790 Increase small text to 12px (#114)
* fix: increase small text to 12px

* fix: use initiative CTA label

* refactor: use Tailwind text-xs utility

* fix: make homepage banner dismissible

* fix: update Discord links and banner text

* fix: refresh Discord invite links
2026-07-23 20:58:59 +09:00
jinhojang6 1f4709aa40 feat: add operators sunset disclaimer 2026-07-13 22:49:37 +09:00
jinhojang6 5188f321f6 feat: add operators legal tabs 2026-07-13 22:49:37 +09:00
jinhojang6 5faae8601f feat: add operators closure page 2026-07-13 22:49:37 +09:00
Jinho Jang 96be50d8d0 refactor: make @repo/content the single source for home, get-started & movement page copy (#62)
* docs: add page-copy single-source spec and implementation plan

* feat(content): add typed home section schemas and migrate home copy into content

Add 7 bespoke home* section schemas (+ techStack ctas) to the page section
union and populate content/pages/en/home.json with home copy moved verbatim
from messages.

* refactor(web): source home page copy from @repo/content; drop home namespace from messages

Feed every home section from content via findSection/data props (replacing
next-intl getTranslations), remove the home namespace from messages/en.json,
and add a regression guard plus content-based tests. Render output unchanged.

* docs: add get-started/movement page-copy dedup spec and plan

* feat(content): add get-started & movement section schemas and content docs

Move get-started/movement page copy verbatim into content/pages so it is
single-sourced in @repo/content.

* refactor(web): source get-started/movement copy from content; drop those namespaces from messages

Feed both pages from content via findSection/data props (replacing next-intl),
switch them to content-based metadata, delete pages.getStarted/movement from
messages, and add content-based tests + ownership guard. Render unchanged.

* docs: add navbar-pages CMS copy spec and plan

* feat(content): add navbar page section schemas + Pages docs (book, brand-kit, research, node-programme, lambda-prize, manifesto, media, podcast, broadcast, tech-stack explorer)

* refactor(web): source navbar pages copy from content; drop those namespaces from messages

Migrate book, brand-kit, research (incl. rich-text via a tagged-text renderer),
node-programme, lambda-prize, manifesto, media, podcast, logos-broadcast-network,
and the tech-stack explorer to read copy from content via findSection/data props
and content-based metadata; remove the migrated pages.* namespaces from messages;
update guards + contracts. Render output unchanged.

* feat(web): source activist/coalition pages copy from content (CMS title/description)

Migrate activistBuilder, activistLeaderSteward, and coalitionPartner page
metadata from next-intl messages.pages.* into @repo/content PageCopy JSON,
following the established bookCopy pattern.

- Add activistBuilderCopySectionSchema, activistLeaderStewardCopySectionSchema,
  coalitionPartnerCopySectionSchema to packages/content/src/schemas/pages.ts
  and wire them into the pageSectionSchema discriminated union
- Create content/pages/en/activist-builder.json,
  activist-leader-steward.json, coalition-partner.json with verbatim
  title/description/heading values from the old messages namespace
- Switch all three route pages from createTranslatedPageMetadata to
  createPageMetadata(ROUTE), removing the NAMESPACE constant
- Remove activistBuilder, activistLeaderSteward, coalitionPartner from
  apps/web/messages/en.json pages object
- Add schema parse tests, renderToStaticMarkup page tests, messages ownership
  guards, and content-route contract entries for all three pages

* chore(web): remove dead faq (pages.faq + unused FaqSection components)

* fix: remove stale faq links

* fix: pass payload env through turbo build

* fix: preserve lambda prize support labels

* fix: preserve live copy after master rebase

* fix: address page copy review feedback

* refactor: move design guide copy to content

* feat: add schemas for home and page copy sections

- Introduced home section schemas including homeSocialProof, homeChoosePath, homeDecide, homeStartBuilding, homeAbout, homeUseCases, and homeBuilderPortal.
- Added page copy section schemas such as getStartedCopy, movementCopy, bookCopy, designGuideCopy, activistBuilderCopy, activistLeaderStewardCopy, coalitionPartnerCopy, researchCopy, nodeProgrammeCopy, lambdaPrizeCopy, mediaCopy, podcastCopy, broadcastCopy, and manifestoCopy.
- Created shared schema for section keys to maintain consistency across sections.

* chore(web): remove dead pages.faq from messages

* fix: resolve page copy migration conflicts

* fix: source connect form page copy from content

* fix: remove duplicated afform page copy exports

* fix: stop generating afform page copy exports

* fix(cms): require only server actions key

* fix(cms): load env files before build validation

* fix(cms): make env loader available during build

* fix(cms): load next env via require

* test(cms): isolate missing env validation

* feat: add homepage testnet highlight

* fix: restore lambda prize support links
2026-07-06 19:09:02 +09:00
jinhojang6 9fee890432 feat: add homepage testnet highlight 2026-07-03 12:27:07 +09:00
jinhojang6 5de6f4fbe3 refactor(field-guide): manage UI labels and SEO copy in the content manifest
Keep all Field Guide copy in one content source rather than hardcoded strings
plus next-intl keys, per the project's content-single-source direction.

- schema: add `ui` (chrome labels) and `seo` (title/description/chapter
  description template) blocks to fieldGuideManifestSchema
- manifest.json carries the actual values
- FieldGuideShell reads chrome labels via a new `ui` prop (no hardcoded
  pager text or aria-labels)
- index/[slug] generateMetadata read manifest.seo; remove the now-unused
  pages.fieldGuide next-intl keys
2026-06-30 02:29:00 +09:00
jinhojang6 78619e28dc feat(field-guide): add Logos Field Guide at /field-guide
Port the 16-chapter Logos Field Guide from the standalone reference site
into logos.co as content-driven pages, discoverable from the footer and
the global nav.

- content/field-guide/en: manifest (TOC) + chapter Markdown bodies
- @repo/content: fieldGuide schema + loaders, readText fs helper
- /field-guide index + /field-guide/[slug] routes (static export)
- FieldGuideShell (sidebar, pager, keyboard nav) + FieldGuideContent
  (react-markdown to design tokens); light theme, site header retained
- Footer "Brand Guidelines" group and nav Explore > Resources links
- sitemap, routes constant, i18n metadata, loader/integrity tests

Closes #65
2026-06-30 02:29:00 +09:00
jinhojang6 df025284b2 feat(web): add circles map attribution component and integrate into circles map section; update settings and tests 2026-06-19 17:34:59 +09:00
Jinho Jang 707a364fc7 fix(content): update winnable issues and initiative details for movement page (#41) 2026-06-11 00:03:40 +09:00
jinhojang6 7a1ef08cf8 feat(web): update external URLs and improve link handling in various components 2026-06-04 20:06:36 +09:00
JulesFILIOT b1c2abdfc3 fix(web): require two fingers to pan map on touch
Single-finger drag previously panned the homepage map, trapping page
scroll on mobile. Touch devices now pan/zoom only with two fingers and
show a transient hint when a one-finger drag is attempted.
2026-06-03 21:12:51 +09:00
jinhojang6 1acdba0f5f refactor(blog): rename all Press identifiers/files to Blog, ROUTES.blog
Follow-up to the LPE→Blog rename: purge "Press" from code symbol and file
names and make every consumer use ROUTES.blog instead of a hardcoded path.

- ROUTES: key press -> blog (value /blog); all consumers use ROUTES.blog
- Rename files: lib/press-engine.ts -> lib/blog-engine.ts (+ test),
  blog/_sections/press-atoms.tsx -> blog-atoms.tsx,
  home/press-section.tsx -> blog-section.tsx,
  public/images/press-engine/ -> public/images/blog-engine/
- Rename code symbols: PressArticleRow/PressPodcastRow/PressHero/PressCopy/
  PressRowLink/PressSection/PressCard(Props)/PressPage, getLatest*Press*,
  getPressPageData, getPress*Image*, PRESS_ORIGIN/PRESS_HERO_IMAGE, pressT, etc.
- Rename code-referenced data keys: i18n namespace pages.press -> pages.blog
  (removed stale orphan pages.blog stub), section key home.press -> home.blog,
  DOM id press -> blog
- packages/ui: NavOverlayPressItem -> NavOverlayBlogItem, press/pressSeeAllHref
  -> blog/blogSeeAllHref (rebuilt dist); navigation.json + site schema press -> blog

Intentionally kept (not LPE branding): circles "press" date-format surface
(formatPressDate/event date style), image asset filenames (press-*.webp,
press-hero.jpg), and link-policy legacy-fixture guards.

Verified: web tsc clean, 61 web tests pass, content types + 29 validations pass,
@acid-info/logos-ui rebuilds clean.
2026-06-03 02:04:35 +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
jinhojang6 9e8ffc1c84 refactor: update responsive styles and improve layout across multiple components 2026-06-02 00:58:34 +09:00
Jinho Jang ede23c2cc2 Refactor: centralize content width with ContentWidth component + align layouts to Figma (#24)
* fix(builders-hub): align ideas page details to Figma

Match exact Figma specs for the Builder Ideas page (desktop 121:11657,
mobile 121:11581):

- idea-row: desktop index weight Regular (was medium); mobile title
  width 179px; mobile Apply CTA square corners (drop rounded-[4px]) and
  left-aligned at x=298 (right-[22px])
- bottom CTA: heading H3 (36px desktop / 30px mobile) instead of H2
  (56px); restore text-h3-serif line-height 1 / -0.03em; gap 24px

* fix(builders-hub): align RFP page details to Figma

Match exact Figma specs for the Builder RFPs page (desktop 121:11577,
mobile 121:11489):

- rfp-card: title letter-spacing -0.01em (H4 Sans) instead of
  tracking-tight (-0.025em)
- rfp-list-row: apply the same Row-entry corrections as the ideas row —
  desktop index weight Regular (was medium), mobile title width 179px,
  Learn More CTA square corners (drop rounded-[4px]) and left-aligned at
  x=298 (right-[22px])
- listing grid (RFP branch only): desktop top margin 138px so the first
  card lands at Figma y=374 (was 160px -> 396px, 22px too low); ideas
  and list-view branches untouched

Text copy verified against Figma (titles/taglines match, British
spelling kept where Figma used American). Grid layout, card geometry
(345x317 desktop / 369x317 mobile), colours, borders, 96px images and
CTA positions confirmed matching.

* fix(get-started): align spacing, colours, and copy with Figma

- Correct 04 heading copy to "What you can build today"
- Swap community row alternating backgrounds (row 0 = grey-01)
- Restyle community row labels to 14px (sans-medium number + serif name)
- Underline community row "Learn more" CTA (border-b)
- Build card body: Public Sans 14px instead of mono 10px
- Fix install/docs section top padding (install pt-24, docs pt-40 on desktop)
- Add 6px gap between install card image and text panel

* fix(basecamp): align spacing, padding, and text gaps with Figma design

- Fixed HowItWorksSection: md:py-3 → md:py-10 (was reducing padding on desktop)
- Fixed LocalFirstSection: py-3 → py-10 for proper vertical spacing
- Increased gap spacing from 3 to 4 across card components and sections
- Added uppercase styling to LocalFirstSection eyebrow
- Added opacity-0 to footerLabel for layout consistency
- Adjusted ModularSection vertical padding: py-10 → py-12 mobile, py-10 desktop
- Added flex flex-col gap-4 to ModularSection body text
- CapabilitiesSection: py-6 → py-10 mobile for consistent spacing
- ResourcesSection: py-10 → py-12 mobile for alignment with other sections
- Improved internal spacing in ResourceCard (gap-3 → gap-4, mt-3 → mt-4)

All changes verified against Figma desktop design at node-id=146-15527

* refine(basecamp): fine-tune section spacing and padding alignment

- HeroSection: pb-12 mobile, pb-10 desktop (better spacing at section break)
- HowItWorks title gap: mb-6 → mb-8 (increased spacing to content)
- ModularSection: removed inconsistent py-12, standardized to py-10
- CapabilitiesSection heading: mb-10 → mb-12 (better visual hierarchy)
- ResourcesSection: removed inconsistent py-12, standardized to py-10

All sections now maintain consistent padding pattern: py-10 with device-specific overrides where needed

* fix(lambda-prize): align spacing, padding, and gap with design

- HowItWorks: gap-3 → gap-4 mobile, gap-6 desktop, added md:px-3 md:py-10
- HowItWorks titles: mb-6 → mb-8 for both sections
- FeaturedPrizes: mt-6 → mt-10 mobile, mt-12 desktop, gap-3 → gap-4, moved px-3 to section level
- AboutProgramme: gap-3 → gap-4 mobile, gap-6 desktop, added md:px-3 md:py-10
- Support: pt-10 → py-10 mobile, py-12 desktop, added px-3, removed redundant px-3 from grid

All sections now have consistent spacing patterns aligned with Figma design specifications

* fix(lambda-prize): precision spacing refinements - standardize padding and margins

- DataRows: increase py-1.5 → py-3 for better vertical spacing
- FeaturedPrizes: reduce excessive padding pt-[100px] → pt-10, md:pt-[200px] → md:pt-12
- Hero: standardize margins mb-[60px] → mb-12, mt-[60px] → mt-12
- Support: standardize margin-top mt-[35px] → mt-6, md:mt-[91px] → md:mt-8

* fix(research): align section heights with Figma design

- Change hero section from min-h-[447px] to h-[447px] (fixed height)
- Change overview section from min-h-[670px] to h-[670px] (desktop)
- Change resource rows from min-h-[50px] to h-[50px] (fixed height)
- Change contribute section from min-h-[262px] to h-[262px] (desktop)

These fixed heights match the Figma design specifications for precise
layout control across all breakpoints.

* fix(research): revert to min-h for responsive design

Responsive design requires minimum heights (min-h) instead of fixed
heights (h) to accommodate content overflow on various screen sizes.
Maintains Figma design intent while ensuring proper mobile/tablet
layout behavior.

* fix(press): align PressHero padding with Figma design

Change PressHero section padding from pt-6 (24px) to pt-10 (40px)
to match Figma design specifications where section starts at y=40.

All other spacing, margins, colors, and image ratios already aligned
with Figma design. Press page now 100% design-compliant.

* fix(podcast): add wrapper padding for consistent page layout spacing

* fix(podcast): align top padding with Figma design (pt-20/80px)

* fix(broadcast-network): align padding with Figma design specs

* fix(technology-stack): align hero padding with design specifications

* fix(technology-stack): center hero section on desktop to fix left alignment

* fix(technology-stack): make architecture image responsive and prevent clipping

* fix(technology-stack): constrain all sections to 1440px max-width on desktop

* refactor: centralize max-width layout at page level to eliminate duplication

- Add SectionLayout wrapper to all technology-stack pages (main, blockchain, networking, storage, messaging)
- Move 1440px max-width constraint from individual section components to page-level layout
- Remove mx-auto max-w-360/max-w-[1440px] from tech-stack sections and shared components
- Reduces code duplication and centralizes layout management

* refactor: simplify layout by inlining max-width constraint

- Remove SectionLayout function definitions from each page
- Use simple div wrapper at page return level
- Reduces code duplication and improves maintainability

* refactor: revert page-level layout constraint, keep section-level management

- Remove max-width wrapper from page returns
- Each section maintains full-width background
- Section components manage internal 1440px constraint
- Preserves visual hierarchy from Figma design

* refactor: centralize content width constraints with ContentWidth component

- Create ContentWidth component for 1440px max-width constraint
- Remove layout-level max-width from main element to allow full-width sections
- Apply ContentWidth to all home page sections for consistent layout
- Convert absolute positioning to flex/grid layouts in:
  * Parallel Society (gallery display)
  * Tech Stack (title and metadata centering)
  * Feature Cards (3-column grid)
  * Circles CTA (vertical layout)
  * Press Section (flex grid)
  * Social Proof (4-column grid)
  * Start Building (2-column layout)
  * About Section (centered closing text)
- Implement responsive sizing with Tailwind classes
- Update technology-stack page section for proper centering

This enables full-width background colors while constraining content to 1440px max-width, improving design system consistency across all pages.

* refactor: make social proof section full-width without 1440px constraint

Remove ContentWidth wrapper from the stat cards section to allow it to span full screen width while maintaining proper padding.

* fix: add line break in 'The Logos Technology Stack' title

Match Figma design by breaking 'The Logos' and 'Technology Stack' onto separate lines.

* fix: add line break in Basecamp title

Match Figma design by breaking 'Basecamp is our' and 'Exit Guide.' onto separate lines.

* fix: add line break to tech stack title on mobile view

Use <br /> instead of literal newline for proper HTML rendering of 'The ... Technology Stack' title.

* fix: add width constraints to AppInstall paragraph text

Match container width (260px mobile, 464px desktop) to ensure text wrapping aligns with Figma design.

* Revert "fix: add width constraints to AppInstall paragraph text"

This reverts commit 184efed9421b0b8c006d5121f26da72b7d015491.

* fix(tech-stack): constrain desktop title to 464px to match Figma

Desktop h2 used w-full, so 'The Logos Technology Stack' stayed on one
line at wide/4K viewports. Figma node 121:6875 sets it to 464px, which
wraps it to two lines. Parent is items-center so the fixed width centers.

* refacor: refactor layout components to use ContentWidth for consistent styling

- Updated various sections across the application to wrap content in the ContentWidth component for improved layout consistency.
- Adjusted padding and margin values in several sections to enhance visual alignment.
- Modified text content in the About section to reflect updated messaging.
- Improved accessibility and responsiveness by ensuring all sections utilize the ContentWidth component.

* feat: integrate ContentWidth component for layout consistency across various sections

* feat: update StorageAccess component with new card data and CTA buttons for improved user interaction

* feat: update MessagingIntro and related tests for improved layout and responsiveness based on Figma specifications

* Refactor code structure for improved readability and maintainability

* Refactor code structure for improved readability and maintainability

* Refactor technology stack detail layout and hero components

- Introduced `TechStackDetailPage` and `TechStackDetailSection` components for consistent layout across technology stack pages.
- Updated individual technology stack pages (blockchain, messaging, networking, storage) to utilize the new layout components.
- Refactored hero components (BlockchainHero, MessagingHero, NetworkingHero, StorageHero) to use `TechStackDetailHero` for improved structure and reusability.
- Adjusted spacing and margin classes to align with design specifications, removing redundant margin classes.
- Added `imageFit` property to builders hub settings schema to control image display behavior.
- Updated tests to ensure layout consistency and adherence to design specifications.

* feat: enhance layout and responsiveness of articles and podcasts sections based on Figma specifications

* fix: prevent messaging delivery image clipping

* feat: update article and podcast layouts for improved responsiveness and alignment with Figma designs

* test: remove ui implementation contracts
2026-05-31 04:06:32 +09:00
jinhojang6 7428f15db8 fix(builders-hub): align home page to Figma
- Idea cards use grey-01 fill instead of brand-yellow (matches Figma spec)
- Rename section 02 + journey link to "Install Basecamp"
- Unify mobile/desktop app install title by removing mobileTitle override
  (drop field from settings, schema, and component)
2026-05-30 11:44:29 +09:00
jinhojang6 0c1a483858 feat: add reading time property to articles and update schema 2026-05-29 08:57:05 +09:00
Jinho Jang 2be089a6a9 feat: add messaging layout contract tests and update UI components based on Figma design (#16) 2026-05-27 14:15:02 +09:00
Jinho Jang 1a37cf1f22 fix: use British English for public copy and paths (#5) 2026-05-26 19:22:57 +09:00
jinhojang6 cb7675db1b fix(env): update GitHub owner and repository names for consistency 2026-05-26 17:04:28 +09:00
jinhojang6 8ca1951c57 feat(promotion): change merge method to 'squash' for pull requests 2026-05-26 16:38:57 +09:00
jinhojang6 14a3f45809 feat(basecamp): add footer label to Local First section and update schema 2026-05-23 00:58:03 +09:00
jinhojang6 6463494e96 feat: Add Basecamp page and update links throughout the site
- 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.
2026-05-23 00:04:32 +09:00
jinhojang6 ca887f85ae chore: downgrade @types/node to ^24.12.4 across multiple packages 2026-05-20 14:42:29 +09:00
jinhojang6 36eaa9d827 fix: enhance tech stack section with details and improve card interactions 2026-05-19 19:36:22 +09:00
jinhojang6 94baf77713 chore: pin node 24 and pnpm 11 2026-05-19 17:57:00 +09:00
jinhojang6 e302b207c2 fix: align technology stack with figma 2026-05-19 16:31:38 +09:00
jinhojang6 ac44a013ea feat: match blockchain page figma design 2026-05-19 16:07:24 +09:00
jinhojang6 83a8917309 feat: update technology stack page design 2026-05-19 16:01:30 +09:00
jinhojang6 9c889919b8 feat: update nav overlay design 2026-05-19 15:52:58 +09:00
jinhojang6 45a6d535c2 feat: enhance GitHub App private key handling and add schema push automation tests 2026-05-18 18:50:32 +09:00
jinhojang6 209697bbce test: cover content fixture loaders 2026-05-18 14:36:56 +09:00
jinhojang6 9b37ea8582 feat: Add prize link to Builders Hub settings and update related schemas 2026-05-14 21:40:13 +09:00
jinhojang6 d090c1c3ee feat: Refactor press article handling by removing static content and updating loaders to fetch from Logos Press Engine 2026-05-14 21:12:59 +09:00
jinhojang6 a96eb1e06d feat: Implement site content management with new collections for site settings, navigation, and footer
- Added new collections for site settings, navigation, and footer with pull request hooks for saving changes.
- Introduced media collection for managing uploaded assets.
- Updated page management to include route validation and JSON schema compliance.
- Refactored existing code to accommodate new site content structure and ensure proper data handling.
- Enhanced link policy tests to prevent shipping of placeholder or broken links.
2026-05-14 20:48:12 +09:00
jinhojang6 9bf5f1bc6d feat: enforce GitHub App authentication and remove personal access token support 2026-05-12 19:27:17 +09:00
jinhojang6 9890df1c7d feat: enhance pull request handling with draft status and related UI updates 2026-05-12 19:15:40 +09:00
jinhojang6 a60dd26318 feat: add recent pull request loading and error handling to ContentPrSaveButton 2026-05-12 19:15:39 +09:00
jinhojang6 9ed8a74267 feat: add production sync panel and merge PR functionality
- Implemented a new ProductionSyncPanel component for managing production branch synchronization.
- Added API routes for merging pull requests and syncing production to staging.
- Created services for merging content pull requests and syncing production branches.
- Enhanced RecentPrBanner with merge functionality for pull requests.
- Refactored CirclesMap to use Leaflet for better map handling.
- Updated ESLint configuration to ignore next-env.d.ts.
- Added tests for branch sync decision logic.
2026-05-12 17:52:45 +09:00
jinhojang6 144aa13950 feat(press): enhance Press section with navigation and content updates
- Updated PressHero component to accept copy props for dynamic content.
- Added navigation links for articles, podcasts, and broadcasts in PressHero.
- Introduced ArticlesHeading and ArticlesCta components for better structure.
- Enhanced PodcastHero with localized copy for media, hero title, and descriptions.
- Implemented BroadcastSection to display broadcast articles with localized content.
- Updated translations in en.json to include new keys for Press and Podcasts.
- Refactored PodcastEntry to display episode numbers and listen on app labels.
- Added ArrowIcon component for consistent navigation styling.
- Updated BuildersHubHero to improve layout and responsiveness.
- Added mobileTitle to appInstallSchema for better content management.
2026-05-12 15:19:00 +09:00
jinhojang6 95e60baf73 feat: implement Builders Hub Home component and update page structure 2026-05-12 15:00:37 +09:00
jinhojang6 9c97802363 feat: implement GitHub App authentication for CMS pull requests and add delete functionality for content types 2026-05-11 15:19:24 +09:00