diff --git a/docs/blog/2023-11-21-ai-assistant.md b/docs/blog/2023-11-21-ai-assistant.md index ac5c8056bcdbb..19e44bbd90c40 100644 --- a/docs/blog/2023-11-21-ai-assistant.md +++ b/docs/blog/2023-11-21-ai-assistant.md @@ -3,7 +3,7 @@ title: Nx Docs AI Assistant slug: 'nx-docs-ai-assistant' authors: [Katerina Skroumpelou] cover_image: '/blog/images/2023-11-21/featured_img.avif' -tags: [nx, docs, AI] +tags: [nx, docs, ai] description: Explore the Nx Docs AI Assistant's architecture, user benefits, and how it enhances documentation accessibility through intelligent search and contextual responses. --- diff --git a/docs/blog/2025-02-17-monorepos-are-ai-future-proof.md b/docs/blog/2025-02-17-monorepos-are-ai-future-proof.md index 26686048fa6e5..376044d40b3c4 100644 --- a/docs/blog/2025-02-17-monorepos-are-ai-future-proof.md +++ b/docs/blog/2025-02-17-monorepos-are-ai-future-proof.md @@ -2,7 +2,7 @@ title: 'Nx Just Made Your LLM Way Smarter' slug: nx-just-made-your-llm-smarter authors: ['Juri Strumpflohner'] -tags: ['nx'] +tags: ['nx', 'ai'] description: 'Learn how monorepos with Nx enhance AI capabilities by providing rich metadata and context, making LLMs smarter and more architecturally aware.' cover_image: /blog/images/articles/monorepos-are-ai-future-proof-bg.jpg youtubeUrl: https://youtu.be/RNilYmJJzdk diff --git a/docs/blog/2025-03-06-making-cursor-smarter.md b/docs/blog/2025-03-06-making-cursor-smarter.md index 21a8e295f1e49..bfc36650e5878 100644 --- a/docs/blog/2025-03-06-making-cursor-smarter.md +++ b/docs/blog/2025-03-06-making-cursor-smarter.md @@ -2,7 +2,7 @@ title: 'Making Cursor Smarter with an MCP Server For Nx Monorepos' slug: nx-made-cursor-smarter authors: ['Juri Strumpflohner', 'Max Kless'] -tags: ['nx'] +tags: ['nx', 'ai'] cover_image: /blog/images/articles/cursor-nx-mcp-heroimg.jpg description: 'Learn how Nx enhances Cursor IDE with a dedicated MCP server, providing AI assistants with rich monorepo metadata for smarter code assistance.' youtubeUrl: https://youtu.be/V2W94Sq_v6A diff --git a/docs/blog/2025-03-19-are-monorepos-the-answer-to-better-aiassisted-development.md b/docs/blog/2025-03-19-are-monorepos-the-answer-to-better-aiassisted-development.md index ba4ce80a4afd3..1ed87bd7e3fdb 100644 --- a/docs/blog/2025-03-19-are-monorepos-the-answer-to-better-aiassisted-development.md +++ b/docs/blog/2025-03-19-are-monorepos-the-answer-to-better-aiassisted-development.md @@ -4,7 +4,7 @@ description: 'In this webinar, Nx CTO Victor Savkin and Senior Engineer Max Kles date: 2025-03-06 slug: 'are-monorepos-the-answer-to-better-aiassisted-development' authors: ['Victor Savkin', 'Max Kless'] -tags: [webinar] +tags: [webinar, ai] cover_image: /blog/images/2025-03-19/March-2025-Webinar-card.avif time: 1pm EDT/5pm UTC status: Past - Gated diff --git a/docs/blog/2025-04-30-are-monorepos-the-answer-to-better-aiassisted-development.md b/docs/blog/2025-04-30-are-monorepos-the-answer-to-better-aiassisted-development.md index 5bb06032c91c5..a812a09752dd8 100644 --- a/docs/blog/2025-04-30-are-monorepos-the-answer-to-better-aiassisted-development.md +++ b/docs/blog/2025-04-30-are-monorepos-the-answer-to-better-aiassisted-development.md @@ -4,7 +4,7 @@ description: 'In this webinar, Nx CTO Victor Savkin and Senior Engineer Max Kles date: 2025-04-16 slug: 'are-monorepos-the-answer-to-better-aiassisted-development' authors: ['Victor Savkin', 'Max Kless'] -tags: [webinar] +tags: [webinar, ai] cover_image: /blog/images/2025-04-30/April-2025-Webinar-Card.avif time: 10:30am ET/2:30pm UTC status: Past - Gated diff --git a/docs/blog/2025-10-14-what-is-the-point-of-generating-code-if-you-cannot-merge-it.md b/docs/blog/2025-10-14-what-is-the-point-of-generating-code-if-you-cannot-merge-it.md index 1f60381d11603..f2fbef4a8ba98 100644 --- a/docs/blog/2025-10-14-what-is-the-point-of-generating-code-if-you-cannot-merge-it.md +++ b/docs/blog/2025-10-14-what-is-the-point-of-generating-code-if-you-cannot-merge-it.md @@ -2,7 +2,7 @@ title: "What's the Point of Generating All This Code If You Can't Merge It?" slug: 'pr-review-is-the-bottleneck' authors: ['Victor Savkin'] -tags: [nx, nx-cloud, self-healing] +tags: [nx, nx-cloud, self-healing, ai] cover_image: /blog/images/articles/self-healing-pr-bottleneck-hero-img.avif description: "AI speeds up code authoring, but PR validation becomes the bottleneck. Learn how Nx's Self-Healing CI automatically fixes broken PRs to keep teams moving." pinned: true diff --git a/docs/blog/2025-10-14-whats-new-in-nx-self-healing-ci.md b/docs/blog/2025-10-14-whats-new-in-nx-self-healing-ci.md index 09efb7497f719..deddb21331b0c 100644 --- a/docs/blog/2025-10-14-whats-new-in-nx-self-healing-ci.md +++ b/docs/blog/2025-10-14-whats-new-in-nx-self-healing-ci.md @@ -2,7 +2,7 @@ title: "What's New in Nx Self-Healing CI" slug: 'whats-new-in-nx-self-healing-ci' authors: ['Juri Strumpflohner'] -tags: [nx, nx-cloud, self-healing] +tags: [nx, nx-cloud, self-healing, ai] cover_image: /blog/images/articles/self-healing-ci-update-blog-hero.avif description: 'Enhanced GitHub integration, interactive diffs, fine-grained task control, auto-apply fixes, and local fix application—discover the latest improvements to Nx Self-Healing CI.' pinned: true diff --git a/nx-dev/ui-blog/src/lib/blog-container.tsx b/nx-dev/ui-blog/src/lib/blog-container.tsx index 152b9b0c2b06c..d84cae6c0e238 100644 --- a/nx-dev/ui-blog/src/lib/blog-container.tsx +++ b/nx-dev/ui-blog/src/lib/blog-container.tsx @@ -61,12 +61,11 @@ export function BlogContainer({ blogPosts, tags }: BlogContainerProps) { const firstFive = sortFirstFivePosts(filteredList); setFirstFiveBlogs(firstFive); - // Get the remaining blogs, sorted by date (unpinned posts after the first 5) - const firstFiveSlugs = new Set(firstFive.map((post) => post.slug)); - const remaining = filteredList - .filter((post) => !firstFiveSlugs.has(post.slug)) - .sort((a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf()); - setRemainingBlogs(remaining); + // Get all blogs, sorted by date + const allBlogs = filteredList.sort( + (a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf() + ); + setRemainingBlogs(allBlogs); } useEffect(() => updateBlogPosts(), [filteredList]); @@ -102,7 +101,7 @@ export function BlogContainer({ blogPosts, tags }: BlogContainerProps) { {!!remainingBlogs.length && ( <>
-

More blogs

+

All blogs

post.slug)); - const remaining = blogPosts - .filter((post) => !firstFiveSlugs.has(post.slug)) - .sort((a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf()); + const allBlogs = blogPosts.sort( + (a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf() + ); const defaultState = { initialFirstFive: firstFive, - initialRest: remaining, + initialRest: allBlogs, initialSelectedFilterHeading: 'All Blogs', initialSelectedFilter: 'All', }; @@ -156,16 +154,13 @@ function initializeFilters( const initialFilter = ALL_TOPICS.find((filter) => filter.value === filterBy); const filteredFirstFive = sortFirstFivePosts(result); - const filteredFirstFiveSlugs = new Set( - filteredFirstFive.map((post) => post.slug) + const filteredAllBlogs = result.sort( + (a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf() ); - const filteredRemaining = result - .filter((post) => !filteredFirstFiveSlugs.has(post.slug)) - .sort((a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf()); return { initialFirstFive: filteredFirstFive, - initialRest: filteredRemaining, + initialRest: filteredAllBlogs, initialSelectedFilterHeading: initialFilter?.heading || 'All Blogs', initialSelectedFilter: initialFilter?.value || 'All', }; diff --git a/nx-dev/ui-blog/src/lib/more-blogs.tsx b/nx-dev/ui-blog/src/lib/more-blogs.tsx index 75d1cc2a61c88..c7c24d82159c7 100644 --- a/nx-dev/ui-blog/src/lib/more-blogs.tsx +++ b/nx-dev/ui-blog/src/lib/more-blogs.tsx @@ -19,9 +19,7 @@ export function MoreBlogs({ blogs }: MoreBlogsProps) { year: 'numeric', } ); - const tags = post.tags.map( - (tag) => `${tag.substring(0, 1).toUpperCase()}${tag.substring(1)}` - ); + const tags = post.tags; return (