diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ab33a8f375..91c98b81ff 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -42,6 +42,7 @@ jobs: "PUBLIC_GROWTH_ENDPOINT=${{ secrets.PUBLIC_GROWTH_ENDPOINT }}" "PUBLIC_STRIPE_KEY=${{ secrets.PUBLIC_STRIPE_KEY }}" "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" + "SENTRY_RELEASE=${{ github.event.release.tag_name }}" publish-cloud-stage: runs-on: ubuntu-latest steps: diff --git a/Dockerfile b/Dockerfile index 0e9e98f7e6..352e69e373 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,7 @@ ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN npm i -g corepack@latest RUN corepack enable +RUN corepack prepare pnpm@10.0.0 --activate ADD ./package.json /app/package.json ADD ./pnpm-lock.yaml /app/pnpm-lock.yaml @@ -24,12 +25,14 @@ ARG PUBLIC_APPWRITE_ENDPOINT ARG PUBLIC_GROWTH_ENDPOINT ARG PUBLIC_STRIPE_KEY ARG SENTRY_AUTH_TOKEN +ARG SENTRY_RELEASE ENV PUBLIC_APPWRITE_ENDPOINT=$PUBLIC_APPWRITE_ENDPOINT ENV PUBLIC_GROWTH_ENDPOINT=$PUBLIC_GROWTH_ENDPOINT ENV PUBLIC_CONSOLE_MODE=$PUBLIC_CONSOLE_MODE ENV PUBLIC_STRIPE_KEY=$PUBLIC_STRIPE_KEY ENV SENTRY_AUTH_TOKEN=$SENTRY_AUTH_TOKEN +ENV SENTRY_RELEASE=$SENTRY_RELEASE ENV NODE_OPTIONS=--max_old_space_size=8192 RUN pnpm run sync && pnpm run build @@ -39,4 +42,4 @@ FROM nginx:1.25-alpine EXPOSE 80 COPY docker/nginx.conf /etc/nginx/conf.d/default.conf -COPY --from=build /app/build /usr/share/nginx/html/console \ No newline at end of file +COPY --from=build /app/build /usr/share/nginx/html/console diff --git a/package.json b/package.json index b6069da58f..5244491c71 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", "@stripe/stripe-js": "^3.5.0", - "@ai-sdk/svelte": "^1.1.22", + "@ai-sdk/svelte": "^1.1.24", "analytics": "^0.8.14", "cron-parser": "^4.9.0", "dayjs": "^1.11.13", diff --git a/playwright.config.ts b/playwright.config.ts index 3f39d87611..fe964db382 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -12,7 +12,7 @@ const config: PlaywrightTestConfig = { webServer: { timeout: 120000, env: { - PUBLIC_APPWRITE_ENDPOINT: 'https://console-testing-2.appwrite.org/v1', + PUBLIC_APPWRITE_ENDPOINT: 'https://dlbillingic.appwrite.org/v1', PUBLIC_CONSOLE_MODE: 'cloud', PUBLIC_STRIPE_KEY: 'pk_test_51LT5nsGYD1ySxNCyd7b304wPD8Y1XKKWR6hqo6cu3GIRwgvcVNzoZv4vKt5DfYXL1gRGw4JOqE19afwkJYJq1g3K004eVfpdWn' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ead7df1511..d26f402acc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,7 +9,7 @@ importers: .: dependencies: '@ai-sdk/svelte': - specifier: ^1.1.22 + specifier: ^1.1.24 version: 1.1.24(svelte@4.2.19)(zod@3.24.2) '@appwrite.io/console': specifier: 1.5.2 @@ -2712,13 +2712,13 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.10: - resolution: {integrity: sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==} + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + nanoid@3.3.9: + resolution: {integrity: sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -3712,8 +3712,8 @@ packages: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} - zod-to-json-schema@3.24.4: - resolution: {integrity: sha512-0uNlcvgabyrni9Ag8Vghj21drk7+7tp7VTwwR7KxxXXc/3pbXz2PHlDgj3cICahgF1kHm4dExBFj7BXrZJXzig==} + zod-to-json-schema@3.24.3: + resolution: {integrity: sha512-HIAfWdYIt1sssHfYZFCXp4rU1w2r8hVVXYIlmoa0r0gABLs5di3RCqPU5DDROogVz1pAdYBaz7HK5n9pSUNs3A==} peerDependencies: zod: ^3.24.1 @@ -3731,7 +3731,7 @@ snapshots: dependencies: '@ai-sdk/provider': 1.0.11 eventsource-parser: 3.0.0 - nanoid: 3.3.10 + nanoid: 3.3.9 secure-json-parse: 2.7.0 optionalDependencies: zod: 3.24.2 @@ -3753,7 +3753,7 @@ snapshots: dependencies: '@ai-sdk/provider': 1.0.11 '@ai-sdk/provider-utils': 2.1.13(zod@3.24.2) - zod-to-json-schema: 3.24.4(zod@3.24.2) + zod-to-json-schema: 3.24.3(zod@3.24.2) optionalDependencies: zod: 3.24.2 @@ -6769,10 +6769,10 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.10: {} - nanoid@3.3.7: {} + nanoid@3.3.9: {} + nanoid@5.0.8: {} natural-compare@1.4.0: {} @@ -7672,7 +7672,7 @@ snapshots: yocto-queue@1.1.1: {} - zod-to-json-schema@3.24.4(zod@3.24.2): + zod-to-json-schema@3.24.3(zod@3.24.2): dependencies: zod: 3.24.2 diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index 036cf56c89..260cffe519 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -6,6 +6,7 @@ import { user } from '$lib/stores/user'; import { ENV, MODE, VARS, isCloud } from '$lib/system'; import { AppwriteException } from '@appwrite.io/console'; import { browser } from '$app/environment'; +import { getReferrerAndUtmSource } from '$lib/helpers/utm'; function plausible(domain: string): AnalyticsPlugin { if (!browser) return { name: 'analytics-plugin-plausible' }; @@ -65,6 +66,8 @@ export function trackEvent(name: string, data: object = null): void { }; } + data = { ...data, ...getReferrerAndUtmSource() }; + if (ENV.DEV || ENV.PREVIEW) { console.debug(`[Analytics] Event ${name} ${path}`, data); } else { diff --git a/src/lib/charts/bar.svelte b/src/lib/charts/bar.svelte index a447492d27..9d19e36053 100644 --- a/src/lib/charts/bar.svelte +++ b/src/lib/charts/bar.svelte @@ -13,7 +13,6 @@ {formatted} series={series.map((s) => { s.type = 'bar'; - s.stack = 'total'; s.barMaxWidth = 6; s.itemStyle = { borderRadius: [10, 10, 0, 0] diff --git a/src/lib/charts/index.ts b/src/lib/charts/index.ts index c73108a134..488756ecb5 100644 --- a/src/lib/charts/index.ts +++ b/src/lib/charts/index.ts @@ -1,2 +1,3 @@ export { default as BarChart } from './bar.svelte'; export { default as LineChart } from './line.svelte'; +export { default as Legend, type LegendData } from './legend.svelte'; diff --git a/src/lib/charts/legend.svelte b/src/lib/charts/legend.svelte new file mode 100644 index 0000000000..2e72c14106 --- /dev/null +++ b/src/lib/charts/legend.svelte @@ -0,0 +1,25 @@ + + + + +
+ {#each legendData as { name, value }, index} + {@const formattedValue = typeof value === 'number' ? formatNumberWithCommas(value) : value} + + {name} ({formattedValue}) + + {/each} +
diff --git a/src/lib/commandCenter/panels/ai.svelte b/src/lib/commandCenter/panels/ai.svelte index d958588071..13326ac8eb 100644 --- a/src/lib/commandCenter/panels/ai.svelte +++ b/src/lib/commandCenter/panels/ai.svelte @@ -180,7 +180,7 @@ {#if $isLoading || answer}
-
{getInitials($user.name)}
+
{getInitials($user.name || $user.email)}

{previousQuestion}

@@ -230,7 +230,7 @@