mirror of
https://github.com/cline/cline.git
synced 2026-09-24 23:20:16 +08:00
* dev: PostHog config to use separate API keys for telemetry and error tracking - Update PostHogErrorProvider to use dedicated errorTrackingApiKey - Add comprehensive documentation and type definitions - Support environment variables with fallback to public keys - Improve code organization with clearer naming conventions * changeset added * Update GitHub Workflow * debug * revert debug and set process env for browser * undefined environment variables fallback to public keys * update workflow * update provider factories with config validation and no-op logging - Add PostHog config validation to determine provider type - Replace "none" type with "no-op" for consistency - Enhance NoOpProvider implementations with actual logging - Update factory logic to use validated config checks - Improve error handling and fallback behavior * Update .github/workflows/publish.yml Co-authored-by: Dennise Bartlett <bartlett.dc.1@gmail.com> * Update workflow * clean up * update env vars in vite config * Fix error handling recursion and update PostHog configuration - Prevent infinite recursion in ClineError.transform() by checking for existing ClineError instances - Use errorTrackingApiKey instead of apiKey for PostHog error provider initialization - Replace Logger calls with console methods in NoOpErrorProvider to avoid circular dependencies - Update dev environment detection logic to exclude CI check for more reliable configuration * Remove console.error from unsupported error provider fallback Remove unnecessary error logging when falling back to NoOpErrorProvider for unsupported error provider types in ErrorProviderFactory. * Update PostHog config to handle local and test environments - Change dev environment detection to include local environment - Add test environment detection for E2E and unit tests - Disable PostHog validation in test environments to enable mocking * add fallback back * remove hardcoded keys * Posthog secrets to Nightly workflow --------- Co-authored-by: Dennise Bartlett <bartlett.dc.1@gmail.com>
115 lines
3.1 KiB
TypeScript
115 lines
3.1 KiB
TypeScript
/// <reference types="vitest/config" />
|
|
|
|
import { writeFileSync } from "node:fs"
|
|
import tailwindcss from "@tailwindcss/vite"
|
|
import react from "@vitejs/plugin-react-swc"
|
|
import { resolve } from "path"
|
|
import { defineConfig, type Plugin, ViteDevServer } from "vite"
|
|
|
|
// Custom plugin to write the server port to a file
|
|
const writePortToFile = (): Plugin => {
|
|
return {
|
|
name: "write-port-to-file",
|
|
configureServer(server: ViteDevServer) {
|
|
server.httpServer?.once("listening", () => {
|
|
const address = server.httpServer?.address()
|
|
const port = typeof address === "object" && address ? address.port : null
|
|
|
|
if (port) {
|
|
const portFilePath = resolve(__dirname, ".vite-port")
|
|
writeFileSync(portFilePath, port.toString())
|
|
} else {
|
|
console.warn("[writePortToFile] Could not determine server port")
|
|
}
|
|
})
|
|
},
|
|
}
|
|
}
|
|
|
|
const isDevBuild = process.argv.includes("--dev-build")
|
|
|
|
// Valid platforms, these should the keys in platform-configs.json
|
|
const VALID_PLATFORMS = ["vscode", "standalone"]
|
|
const platform = process.env.PLATFORM || "vscode" // Default to vscode
|
|
|
|
if (!VALID_PLATFORMS.includes(platform)) {
|
|
throw new Error(`Invalid PLATFORM "${platform}". Must be one of: ${VALID_PLATFORMS.join(", ")}`)
|
|
}
|
|
console.log("Building webview for", platform)
|
|
|
|
export default defineConfig({
|
|
plugins: [react(), tailwindcss(), writePortToFile()],
|
|
test: {
|
|
environment: "jsdom",
|
|
globals: true,
|
|
setupFiles: ["./src/setupTests.ts"],
|
|
coverage: {
|
|
provider: "v8",
|
|
reportOnFailure: true,
|
|
},
|
|
},
|
|
build: {
|
|
outDir: "build",
|
|
reportCompressedSize: false,
|
|
// Only minify in production build
|
|
minify: !isDevBuild,
|
|
// Enable inline source maps for dev build
|
|
sourcemap: isDevBuild ? "inline" : false,
|
|
rollupOptions: {
|
|
output: {
|
|
inlineDynamicImports: true,
|
|
entryFileNames: `assets/[name].js`,
|
|
chunkFileNames: `assets/[name].js`,
|
|
assetFileNames: `assets/[name].[ext]`,
|
|
// Disable compact output for dev build
|
|
compact: !isDevBuild,
|
|
// Add generous formatting for dev build
|
|
...(isDevBuild && {
|
|
generatedCode: {
|
|
constBindings: false,
|
|
objectShorthand: false,
|
|
arrowFunctions: false,
|
|
},
|
|
}),
|
|
},
|
|
},
|
|
chunkSizeWarningLimit: 100000,
|
|
},
|
|
server: {
|
|
port: 25463,
|
|
hmr: {
|
|
host: "localhost",
|
|
protocol: "ws",
|
|
},
|
|
cors: {
|
|
origin: "*",
|
|
methods: "*",
|
|
allowedHeaders: "*",
|
|
},
|
|
},
|
|
define: {
|
|
__PLATFORM__: JSON.stringify(platform),
|
|
process: JSON.stringify({
|
|
env: {
|
|
NODE_ENV: process?.env?.IS_DEV ? "development" : "production",
|
|
CLINE_ENVIRONMENT: process?.env?.CLINE_ENVIRONMENT ?? "production",
|
|
IS_DEV: process?.env?.IS_DEV === "true",
|
|
IS_TEST: process?.env?.IS_TEST === "true",
|
|
CI: process?.env?.CI === "true",
|
|
// PostHog environment variables
|
|
TELEMETRY_SERVICE_API_KEY: process?.env?.TELEMETRY_SERVICE_API_KEY,
|
|
ERROR_SERVICE_API_KEY: process?.env?.ERROR_SERVICE_API_KEY,
|
|
},
|
|
}),
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
"@": resolve(__dirname, "./src"),
|
|
"@components": resolve(__dirname, "./src/components"),
|
|
"@context": resolve(__dirname, "./src/context"),
|
|
"@shared": resolve(__dirname, "../src/shared"),
|
|
"@utils": resolve(__dirname, "./src/utils"),
|
|
},
|
|
},
|
|
})
|