From dd8c8137a0eab7192e9c833f95b1266341a6f61f Mon Sep 17 00:00:00 2001 From: Rotimi Best Date: Fri, 13 Mar 2026 20:18:46 +0100 Subject: [PATCH] chore: update publish workflow to trigger on main branch and refine slug generation in course settings --- .github/workflows/publish-mcp.yml | 9 ++++++--- .../src/lib/features/course/pages/settings.svelte | 4 ++-- .../course-landing-page/components/editor/editor.svelte | 4 ++-- .../routes/courses/[id]/people/[personId]/+page.svelte | 2 +- .../src/routes/org/[slug]/quiz/[slug]/+page.svelte | 2 +- packages/ui/src/base/chart/chart-container.svelte | 2 +- packages/ui/src/base/copy-button/copy-button.svelte | 7 ++----- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/publish-mcp.yml b/.github/workflows/publish-mcp.yml index a7d362d5..88147b18 100644 --- a/.github/workflows/publish-mcp.yml +++ b/.github/workflows/publish-mcp.yml @@ -3,12 +3,15 @@ name: Publish @classroomio/mcp to NPM on: workflow_dispatch: pull_request: - branches: - - feat/release-v2 paths: - - ".github/workflows/publish-mcp.yml" - "packages/mcp/**" + push: + paths: + - "packages/mcp/**" + branches: + - main + jobs: publish: runs-on: ubuntu-latest diff --git a/apps/dashboard/src/lib/features/course/pages/settings.svelte b/apps/dashboard/src/lib/features/course/pages/settings.svelte index 5e91678f..e23d0f8f 100644 --- a/apps/dashboard/src/lib/features/course/pages/settings.svelte +++ b/apps/dashboard/src/lib/features/course/pages/settings.svelte @@ -25,7 +25,7 @@ import { t } from '$lib/utils/functions/translations'; import { isObject } from '$lib/utils/functions/isObject'; import { snackbar } from '$features/ui/snackbar/store'; - import generateSlug from '$lib/utils/functions/generateSlug'; + import { generateSlug } from '@cio/utils/functions'; import { DeleteModal } from '$features/ui'; import { courseApi } from '$features/course/api'; import { tagApi } from '$features/tag/api'; @@ -190,7 +190,7 @@ const generateNewCourseLink = () => { if (!courseApi.course) return; - courseApi.course.slug = generateSlug(courseApi.course.title); + courseApi.course.slug = generateSlug(courseApi.course.title, { appendTimestamp: true }); hasUnsavedChanges = true; }; diff --git a/apps/dashboard/src/lib/features/ui/course-landing-page/components/editor/editor.svelte b/apps/dashboard/src/lib/features/ui/course-landing-page/components/editor/editor.svelte index 5fe77e97..fd15576f 100644 --- a/apps/dashboard/src/lib/features/ui/course-landing-page/components/editor/editor.svelte +++ b/apps/dashboard/src/lib/features/ui/course-landing-page/components/editor/editor.svelte @@ -31,7 +31,7 @@ import InstructorForm from './instructor-form.svelte'; import { Button } from '@cio/ui/base/button'; import { courseApi } from '$features/course/api'; - import generateSlug from '$lib/utils/functions/generateSlug'; + import { generateSlug } from '@cio/utils/functions'; import * as Sidebar from '@cio/ui/base/sidebar'; import { useSidebar } from '@cio/ui/base/sidebar'; @@ -147,7 +147,7 @@ async function handleSave() { loading = true; - course.slug = course.slug || generateSlug(course.title); + course.slug = course.slug || generateSlug(course.title, { appendTimestamp: true }); console.log('course', course); await courseApi.update(courseId, { diff --git a/apps/dashboard/src/routes/courses/[id]/people/[personId]/+page.svelte b/apps/dashboard/src/routes/courses/[id]/people/[personId]/+page.svelte index 133f3a86..95b36480 100644 --- a/apps/dashboard/src/routes/courses/[id]/people/[personId]/+page.svelte +++ b/apps/dashboard/src/routes/courses/[id]/people/[personId]/+page.svelte @@ -13,7 +13,7 @@ let { data } = $props(); - let userCourseAnalytics: UserCourseAnalytics | undefined = $state(data.userCourseAnalytics ?? undefined); + let userCourseAnalytics: UserCourseAnalytics | undefined = $derived(data.userCourseAnalytics ?? undefined); function getPercentage(a: number, b: number): number { if (b === 0) { diff --git a/apps/dashboard/src/routes/org/[slug]/quiz/[slug]/+page.svelte b/apps/dashboard/src/routes/org/[slug]/quiz/[slug]/+page.svelte index 07eadc63..bf705629 100644 --- a/apps/dashboard/src/routes/org/[slug]/quiz/[slug]/+page.svelte +++ b/apps/dashboard/src/routes/org/[slug]/quiz/[slug]/+page.svelte @@ -32,7 +32,7 @@ } let { data } = $props(); - const { quizId } = data; + const quizId = $derived(data.quizId); // Questionnaire State let currentQuestion: QuizQuestion = $state( diff --git a/packages/ui/src/base/chart/chart-container.svelte b/packages/ui/src/base/chart/chart-container.svelte index 8629b8a2..e492a48b 100644 --- a/packages/ui/src/base/chart/chart-container.svelte +++ b/packages/ui/src/base/chart/chart-container.svelte @@ -17,7 +17,7 @@ config: ChartConfig; } = $props(); - const chartId = `chart-${id || uid.replace(/:/g, '')}`; + const chartId = $derived(`chart-${id || uid.replace(/:/g, '')}`); setChartContext({ get config() { diff --git a/packages/ui/src/base/copy-button/copy-button.svelte b/packages/ui/src/base/copy-button/copy-button.svelte index 4891e790..ccc3df7b 100644 --- a/packages/ui/src/base/copy-button/copy-button.svelte +++ b/packages/ui/src/base/copy-button/copy-button.svelte @@ -22,10 +22,7 @@ ...rest }: CopyButtonProps = $props(); - // this way if the user passes text then the button will be the default size - if (size === 'icon' && children) { - size = 'default'; - } + const resolvedSize = $derived(size === 'icon' && children ? 'default' : size); const clipboard = new UseClipboard(); @@ -34,7 +31,7 @@ {...rest} bind:ref {variant} - {size} + size={resolvedSize} {tabindex} class={cn('ui:flex ui:items-center ui:gap-2', className)} type="button"