mirror of
https://github.com/simstudioai/sim.git
synced 2026-04-06 03:00:16 -04:00
* fix(core): consolidate ID generation to prevent HTTP self-hosted crashes crypto.randomUUID() requires a secure context (HTTPS) in browsers, causing white-screen crashes on self-hosted HTTP deployments. This replaces all direct usage of crypto.randomUUID(), nanoid, and the uuid package with a central utility that falls back to crypto.getRandomValues() which works in all contexts. - Add generateId(), generateShortId(), isValidUuid() in @/lib/core/utils/uuid - Replace crypto.randomUUID() imports across ~220 server + client files - Replace nanoid imports with generateShortId() - Replace uuid package validate with isValidUuid() - Remove nanoid dependency from apps/sim and packages/testing - Remove browser polyfill script from layout.tsx - Update test mocks to target @/lib/core/utils/uuid - Update CLAUDE.md, AGENTS.md, cursor rules, claude rules Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * update bunlock * fix(core): remove UUID_REGEX shim, use isValidUuid directly * fix(core): remove deprecated uuid mock helpers that use vi.doMock --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
42 lines
1.3 KiB
Plaintext
42 lines
1.3 KiB
Plaintext
---
|
|
description: Global coding standards that apply to all files
|
|
alwaysApply: true
|
|
---
|
|
|
|
# Global Standards
|
|
|
|
You are a professional software engineer. All code must follow best practices: accurate, readable, clean, and efficient.
|
|
|
|
## Logging
|
|
Import `createLogger` from `@sim/logger`. Use `logger.info`, `logger.warn`, `logger.error` instead of `console.log`.
|
|
|
|
## Comments
|
|
Use TSDoc for documentation. No `====` separators. No non-TSDoc comments.
|
|
|
|
## Styling
|
|
Never update global styles. Keep all styling local to components.
|
|
|
|
## ID Generation
|
|
Never use `crypto.randomUUID()`, `nanoid`, or the `uuid` package directly. Use the utilities from `@/lib/core/utils/uuid`:
|
|
|
|
- `generateId()` — UUID v4, use by default
|
|
- `generateShortId(size?)` — short URL-safe ID (default 21 chars), for compact identifiers
|
|
|
|
Both use `crypto.getRandomValues()` under the hood and work in all contexts including non-secure (HTTP) browsers.
|
|
|
|
```typescript
|
|
// ✗ Bad
|
|
import { nanoid } from 'nanoid'
|
|
import { v4 as uuidv4 } from 'uuid'
|
|
const id = crypto.randomUUID()
|
|
|
|
// ✓ Good
|
|
import { generateId, generateShortId } from '@/lib/core/utils/uuid'
|
|
const uuid = generateId()
|
|
const shortId = generateShortId()
|
|
const tiny = generateShortId(8)
|
|
```
|
|
|
|
## Package Manager
|
|
Use `bun` and `bunx`, not `npm` and `npx`.
|