Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 2 additions & 6 deletions .agents/repo.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,10 @@ Tale is a monorepo on Bun workspaces; every workspace script runs through

## Repo-specific boundaries

- **Never run `bun run setup:clean`** (wipes `services/platform/.convex/local/`) unless the user
explicitly asked to delete their local Convex dev data — automatic dev maintenance handles module
bloat; the clean script requires typing `delete local convex` on purpose.
- **Org configuration is files, not tables** — per-org config is JSON/YAML under
`$TALE_CONFIG_DIR/<org>/<domain>/` (Zod schemas in `lib/shared/schemas/`), never a Convex table
or DB row.
`$TALE_CONFIG_DIR/<org>/<domain>/` (Zod schemas in `lib/shared/schemas/`), never a DB row.
- **Tenant isolation — nothing org-owned is shared across organizations** — any new org-owned data
(a Convex table or field, an org config domain, a cache, a DB pool, an egress/browser-session
(a table or column, an org config domain, a cache, a DB pool, an egress/browser-session
store, the RAG/crawler corpora `private_knowledge`/`public_web` + their embeddings) MUST be
scoped and queried per organization. Per-org knowledge routing is
`getKnowledgePoolForOrg(orgSlug)`, never the deployment-default `getKnowledgePool()`; introducing
Expand Down
1 change: 0 additions & 1 deletion .commitlintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
"ai",
"claude",
"cli",
"convex",
"db",
"deps",
"designs",
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ jobs:

# yt-dlp + deno + ffmpeg + the bgutil plugin are self-provisioned by the
# live YouTube ingestion test via `ensureVideoToolchain()` in a
# `beforeAll` (convex/video_links/ytdlp_toolchain.ts). It still runs here
# `beforeAll` (backend/core/video_links/ytdlp_toolchain.ts). It still runs here
# because GitHub runners are datacenter IPs — the environment where
# YouTube's bot wall appears — so a green run proves the shipped anti-bot
# stack actually gets past it.
Expand Down
12 changes: 5 additions & 7 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,17 +81,15 @@ jobs:
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: services/platform/dist
key: e2e-dist-${{ runner.os }}-${{ hashFiles('services/platform/app/**', 'services/platform/lib/**', 'services/platform/convex/**', 'services/platform/public/**', 'services/platform/*.json', 'services/platform/*.ts', 'packages/ui/src/**', 'packages/ui/*.json', 'bun.lock') }}
key: e2e-dist-${{ runner.os }}-${{ hashFiles('services/platform/app/**', 'services/platform/lib/**', 'services/platform/backend/core/**', 'services/platform/public/**', 'services/platform/*.json', 'services/platform/*.ts', 'packages/ui/src/**', 'packages/ui/*.json', 'bun.lock') }}

# Serve a production build instead of the Vite dev server. `vite dev`
# transpiles on the fly — the dominant CPU consumer that, on the 4-vCPU
# runner, starved the local Convex backend into flooding its hard 1s
# function-execution timeout and flaking the suite. A prebuilt dist/ makes
# the webServer (scripts/dev.ts, TALE_E2E_SERVE_BUILD=1) serve via
# `vite preview`: static assets + Convex proxy only, no transpilation.
# runner, starved the backend into flaking the suite. A prebuilt dist/
# makes the webServer (scripts/dev.ts, TALE_E2E_SERVE_BUILD=1) serve via
# `vite preview`: static assets + API proxy only, no transpilation.
# Built here (not inside the webServer) so the boot stays inside the
# Playwright webServer timeout. The committed convex/_generated lets the
# client bundle build without a live backend. Skipped on a dist-cache hit.
# Playwright webServer timeout. Skipped on a dist-cache hit.
- name: Build platform (prod bundle for E2E preview)
if: steps.dist-cache.outputs.cache-hit != 'true'
working-directory: services/platform
Expand Down
11 changes: 0 additions & 11 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion compose.web.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Tale Web (Marketing site) — Standalone Docker Compose
# =============================================================================
# The marketing site at www.tale.dev runs independently of the platform stack
# (services/platform, convex, db, knowledge-db, proxy, sandbox) and has its own
# (services/platform, db, knowledge-db, proxy, sandbox) and has its own
# environment file at services/web/.env.example.
#
# Usage:
Expand Down
4 changes: 2 additions & 2 deletions compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ services:
# Where the BROWSER reaches the store: the site origin, behind which the
# proxy forwards `/<bucket>/*` verbatim. Presigned URLs are signed
# against this, the internal endpoint above is what the backend itself
# uses — see `browserFacing` in convex/lib/storage/object_store.ts.
# uses — see `browserFacing` in backend/core/lib/storage/object_store.ts.
OBJECT_STORE_PUBLIC_ENDPOINT: ${OBJECT_STORE_PUBLIC_ENDPOINT:-${SITE_URL:-http://localhost}}
env_file:
- path: .env
Expand Down Expand Up @@ -500,7 +500,7 @@ services:
# Where the BROWSER reaches the store: the site origin, behind which the
# proxy forwards `/<bucket>/*` verbatim. Presigned URLs are signed
# against this, the internal endpoint above is what the backend itself
# uses — see `browserFacing` in convex/lib/storage/object_store.ts.
# uses — see `browserFacing` in backend/core/lib/storage/object_store.ts.
OBJECT_STORE_PUBLIC_ENDPOINT: ${OBJECT_STORE_PUBLIC_ENDPOINT:-${SITE_URL:-http://localhost}}
env_file:
- path: .env
Expand Down
16 changes: 6 additions & 10 deletions knip.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,16 +53,12 @@ export default {
// Bun production server — invoked by docker-entrypoint.sh, not from
// package.json scripts, so knip can't auto-detect it via the npm plugin.
'server.ts',
// Platform-only: Convex backend (separate runtime, not reachable via the
// SPA's import graph) and platform-specific app subtrees.
'convex/**/*.ts',
'!convex/_generated/**',
'!convex/betterAuth/_generated/**',
// 0.5 Postgres backend — same shape as Convex: a separate Node runtime
// not reachable via the SPA's import graph. Domain files are the public
// surface (name-dispatched via the `internal.x.y.z` shim); knip cannot
// see that second graph, so they must be entries. Covers
// `backend/integration-check.ts` (invoked by `backend:integration`).
// Postgres backend — a separate Node runtime not reachable via the
// SPA's import graph. Domain files are the public surface
// (name-dispatched via the `internal.x.y.z` shim); knip cannot see
// that second graph, so they must be entries. Covers the ported
// logic under `backend/core/` and `backend/integration-check.ts`
// (invoked by `backend:integration`).
'backend/**/*.ts',
'app/features/**/*.{ts,tsx}',
'app/hooks/**/*.{ts,tsx}',
Expand Down
2 changes: 0 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,6 @@
},
"packageManager": "bun@1.3.10",
"patchedDependencies": {
"convex-helpers@0.1.114": "patches/convex-helpers@0.1.114.patch",
"@convex-dev/agent@0.6.1": "patches/@convex-dev%2Fagent@0.6.1.patch",
"linkedom@0.18.13": "patches/linkedom@0.18.13.patch"
},
"scarfSettings": {
Expand Down
2 changes: 1 addition & 1 deletion packages/ui/src/i18n/tests/checks/usage-missing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export function findMissingKeyRefs(config: MissingKeyRefsConfig): Finding[] {
const {
serviceRoot,
messagesDir = path.join(serviceRoot, 'messages'),
scanRoots = ['app', 'components', 'hooks', 'lib', 'convex'],
scanRoots = ['app', 'components', 'hooks', 'lib', 'backend'],
allowlistPath = path.join(serviceRoot, 'lib/i18n/keys-dynamic.yml'),
baseFiles = ['en.yml', 'global.yml'],
} = config;
Expand Down
2 changes: 1 addition & 1 deletion packages/ui/src/i18n/tests/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export interface I18nTestsConfig {

/**
* Source roots scanned by the usage check for `t()` / `useT()` / dotted
* literals. Defaults to `['app', 'components', 'hooks', 'lib', 'convex']`;
* literals. Defaults to `['app', 'components', 'hooks', 'lib', 'backend']`;
* missing roots are skipped without error.
*/
scanRoots?: string[];
Expand Down
4 changes: 2 additions & 2 deletions packages/ui/src/i18n/tests/usage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ interface MessagesUsageConfig {
/**
* Top-level directories to scan for `t()` / `useT()` usage. Missing
* directories are skipped. Defaults to `['app', 'components', 'hooks',
* 'lib', 'convex']` so the same list works across services with different
* 'lib', 'backend']` so the same list works across services with different
* layouts.
*/
scanRoots?: string[];
Expand Down Expand Up @@ -460,7 +460,7 @@ export function defineMessagesUsageTests(config: MessagesUsageConfig): void {
const {
serviceRoot,
messagesDir = path.join(serviceRoot, 'messages'),
scanRoots = ['app', 'components', 'hooks', 'lib', 'convex'],
scanRoots = ['app', 'components', 'hooks', 'lib', 'backend'],
allowlistPath = path.join(serviceRoot, 'lib/i18n/keys-dynamic.yml'),
baseFiles = ['en.yml', 'global.yml'],
} = config;
Expand Down
27 changes: 0 additions & 27 deletions patches/@convex-dev%2Fagent@0.6.1.patch

This file was deleted.

13 changes: 0 additions & 13 deletions patches/convex-helpers@0.1.114.patch

This file was deleted.

13 changes: 1 addition & 12 deletions services/platform/.oxlintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
}
},
{
"files": ["convex/**/*.ts"],
"files": ["backend/core/**/*.ts"],
"rules": {
"unicorn/filename-case": [
"error",
Expand Down Expand Up @@ -73,17 +73,6 @@
"typescript/no-unsafe-type-assertion": "off",
"typescript/no-unnecessary-type-assertion": "off"
}
},
{
"files": [
"convex/migrations/versions/**/*.ts",
"convex/migrations/framework/runner.ts",
"convex/migrations/framework/entrypoints.ts"
],
"rules": {
"typescript/no-unsafe-type-assertion": "off",
"typescript/no-explicit-any": "off"
}
}
],
"ignorePatterns": [
Expand Down
Loading
Loading