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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
`services/ai/worldScriptCompletionFetch.ts` and `createLanguageModelForWorldScript`'s `LanguageModel`
return type in `services/ai/providerFactory.ts` are unaffected. Verified with `pnpm run typecheck`,
`pnpm run lint`, and the full AI-provider/completion-fetch test suites (all passing).
- **Biome upgraded to 2.5.4** (from 2.4.16), migrated cleanly. Two new rules the version enables
required real fixes, not suppressions: `lint/correctness/noUnsafeOptionalChaining` (4 test files —
`(x?.[n] as T).prop`-style patterns split into a separate variable assignment so an optional-chain
short-circuit can no longer throw at the point of use) and `lint/suspicious/noUndeclaredEnvVars`
(16 environment variables used across scripts/config/tests weren't declared in `turbo.json`'s
`globalEnv`, so Turborepo's cache correctness couldn't account for them — now declared). Also ran
`biome migrate` for the `linter.rules.recommended` → `linter.rules.preset` config rename ahead of
Biome's next major version.

- **Settings hygiene.** Removed stale Experimental-category search hints (`plot board`, `codex`,
`cross project` — retired/promoted flags) in favor of current features; `ProForgeDashboard` now
Expand Down
4 changes: 2 additions & 2 deletions biome.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "https://biomejs.dev/schemas/2.4.16/schema.json",
"$schema": "https://biomejs.dev/schemas/2.5.4/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
Expand Down Expand Up @@ -37,7 +37,7 @@
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"preset": "recommended",
"style": {
"noNonNullAssertion": "off",
"useImportType": "error"
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@
},
"devDependencies": {
"@axe-core/playwright": "^4.11.0",
"@biomejs/biome": "^2.4.16",
"@biomejs/biome": "^2.5.4",
"@lhci/cli": "^0.15.1",
"@playwright/test": "^1.61.0",
"@storybook/addon-a11y": "^10.4.5",
Expand Down
74 changes: 37 additions & 37 deletions pnpm-lock.yaml

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

3 changes: 2 additions & 1 deletion tests/unit/collaborationService.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,8 @@ describe('collaborationService encryption', () => {
// The call from _setAwarenessUser in connect() should pass an __enc object, not a plain user
const awarenessCall = calls.find((c: unknown[]) => c[0] === 'user');
expect(awarenessCall?.[1]).toHaveProperty('__enc');
expect(typeof (awarenessCall?.[1] as Record<string, unknown>)['__enc']).toBe('string');
const awarenessPayload = awarenessCall?.[1];
expect(typeof (awarenessPayload as Record<string, unknown>)['__enc']).toBe('string');
});

// QNBS-v3: Plaintext mode — awareness is stored as plain CollaborationUser object.
Expand Down
6 changes: 4 additions & 2 deletions tests/unit/hooks/useManuscriptView.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,8 @@ describe('handleMoveSection', () => {

const call = mockDispatch.mock.calls.find((c) => c[0]?.type === 'project/setManuscript');
expect(call).toBeDefined();
const newOrder = (call?.[0] as { payload: StorySection[] }).payload;
const action = call?.[0];
const newOrder = (action as { payload: StorySection[] }).payload;
expect(newOrder[0]?.id).toBe('s2');
expect(newOrder[1]?.id).toBe('s1');
});
Expand Down Expand Up @@ -257,7 +258,8 @@ describe('handleDragSort', () => {

const call = mockDispatch.mock.calls.find((c) => c[0]?.type === 'project/setManuscript');
expect(call).toBeDefined();
const newOrder = (call?.[0] as { payload: StorySection[] }).payload;
const action = call?.[0];
const newOrder = (action as { payload: StorySection[] }).payload;
expect(newOrder[0]?.id).toBe('s2');
expect(newOrder[2]?.id).toBe('s1');
});
Expand Down
3 changes: 2 additions & 1 deletion tests/unit/ragVectorMigration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,8 @@ describe('runRagVectorMigration', () => {
expect(ragCall?.[0]).toBe('proj-1');
expect(ragCall?.[1]).toBe(manuscript);
expect(typeof ragCall?.[2]).toBe('function');
expect((ragCall?.[2] as () => boolean)()).toBe(true);
const migrateGate = ragCall?.[2];
expect((migrateGate as () => boolean)()).toBe(true);
expect(mockExec).toHaveBeenCalledWith(expect.stringContaining('rag_vectors_v2_migrated'));
});

Expand Down
18 changes: 18 additions & 0 deletions turbo.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
{
"$schema": "https://turbo.build/schema.json",
"globalEnv": [
"ANALYZE",
"BASE_URL",
"CF_PAGES",
"CF_PAGES_BRANCH",
"CF_PAGES_SKIP_WRANGLER",
"CLOUDFLARE_MANUAL_DEPLOY",
"CLOUDFLARE_PAGES_PROJECT",
"DEPLOY_TARGET",
"DEV",
"GRAPHIFY_SKIP",
"PLAYWRIGHT_REUSE_SERVER",
"PLAYWRIGHT_SKIP_VRT",
"RUN_DEEP_E2E",
"RUN_MOBILE_E2E",
"RUN_REAL_VOICE_E2E",
"SMOKE_PORT"
],
"tasks": {
"build": {
"dependsOn": ["^build"],
Expand Down
Loading