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
625 changes: 191 additions & 434 deletions bun.lock

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions docs/quality/verification.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ unsafe because Vinxi, Vite, Nitro, and the database tools require different
release lines. Recheck the reachability and remove each exception when its
upstream dependency advances.

The `brace-expansion` override keeps all transitive consumers on the patched
5.0.8 implementation. Its Bun patch preserves the callable CommonJS and default
ESM exports required by older `minimatch` releases; keep the patch until those
consumers adopt the current named-export API.

Run focused tests while iterating, then use the broad commands appropriate to
the changed risk. Tests and E2E must use fixtures and temporary database,
store, and git paths rather than external websites or real application data.
Expand Down
6 changes: 6 additions & 0 deletions docs/references/design-system/verification.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ tests cannot fully prove:
- Source and translated reader routes.
- `/memories` tablet.
- `/memories` mobile.
- `/moments` mobile with long source URLs.
- `/settings` mobile.

Check:

Expand All @@ -115,6 +117,10 @@ Check:
- Phone `Primary tabs` render every rail item and use tab-bar-only horizontal
scrolling when constrained.
- Phone tab labels are visually hidden while role names remain available.
- Settings cards and native selects remain within the phone viewport when model
or language option labels are long.
- Moment rows keep long source URLs inside the phone viewport while the URL text
remains independently scrollable.
- On phone, Memories read-state tabs stay as one sticky equal-width header row
and the obsolete List/Grid view controls are absent.
- Tablet uses the compact icon rail and does not duplicate brand/filter header
Expand Down
48 changes: 48 additions & 0 deletions drizzle/0022_calm_speed.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
PRAGMA foreign_keys=OFF;--> statement-breakpoint
CREATE TABLE `__new_app_settings` (
`id` text PRIMARY KEY NOT NULL,
`translation_target_language` text DEFAULT 'ja-JP' NOT NULL,
`codex_translation_model` text,
`codex_translation_reasoning_effort` text,
`created_at` integer NOT NULL,
`updated_at` integer NOT NULL,
CONSTRAINT "app_settings_id_check" CHECK("id" = 'default'),
CONSTRAINT "app_settings_translation_target_language_check" CHECK("translation_target_language" in ('ja-JP', 'en-US', 'en-GB', 'ko-KR', 'zh-CN', 'zh-TW', 'fr-FR', 'de-DE', 'es-ES', 'pt-BR')),
CONSTRAINT "app_settings_codex_translation_reasoning_effort_check" CHECK("codex_translation_reasoning_effort" is null or "codex_translation_reasoning_effort" in ('none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max', 'ultra'))
);
--> statement-breakpoint
INSERT INTO `__new_app_settings`("id", "translation_target_language", "codex_translation_model", "codex_translation_reasoning_effort", "created_at", "updated_at") SELECT "id", "translation_target_language", "codex_translation_model", "codex_translation_reasoning_effort", "created_at", "updated_at" FROM `app_settings`;--> statement-breakpoint
DROP TABLE `app_settings`;--> statement-breakpoint
ALTER TABLE `__new_app_settings` RENAME TO `app_settings`;--> statement-breakpoint
PRAGMA foreign_keys=ON;--> statement-breakpoint
CREATE TABLE `__new_translation_jobs` (
`job_id` text PRIMARY KEY NOT NULL,
`memory_id` text NOT NULL,
`lang_code` text NOT NULL,
`source_hash` text NOT NULL,
`model` text,
`reasoning_effort` text,
`prompt_policy_version` text NOT NULL,
`chunker_version` text NOT NULL,
`status` text NOT NULL,
`chunk_count` integer DEFAULT 0 NOT NULL,
`output_path` text,
`output_hash` text,
`error` text,
`completed_at` integer,
`created_at` integer NOT NULL,
`updated_at` integer NOT NULL,
FOREIGN KEY (`memory_id`) REFERENCES `memories`(`id`) ON UPDATE no action ON DELETE cascade,
CONSTRAINT "translation_jobs_status_check" CHECK("status" in ('pending', 'running', 'stale', 'cancel_requested', 'canceled', 'unavailable', 'stitching', 'committing', 'complete', 'failed')),
CONSTRAINT "translation_jobs_source_hash_check" CHECK("source_hash" glob 'sha256:*'),
CONSTRAINT "translation_jobs_output_hash_check" CHECK("output_hash" is null or "output_hash" glob 'sha256:*'),
CONSTRAINT "translation_jobs_reasoning_effort_check" CHECK("reasoning_effort" is null or "reasoning_effort" in ('none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max', 'ultra')),
CONSTRAINT "translation_jobs_chunk_count_check" CHECK("chunk_count" >= 0)
);
--> statement-breakpoint
INSERT INTO `__new_translation_jobs`("job_id", "memory_id", "lang_code", "source_hash", "model", "reasoning_effort", "prompt_policy_version", "chunker_version", "status", "chunk_count", "output_path", "output_hash", "error", "completed_at", "created_at", "updated_at") SELECT "job_id", "memory_id", "lang_code", "source_hash", "model", "reasoning_effort", "prompt_policy_version", "chunker_version", "status", "chunk_count", "output_path", "output_hash", "error", "completed_at", "created_at", "updated_at" FROM `translation_jobs`;--> statement-breakpoint
DROP TABLE `translation_jobs`;--> statement-breakpoint
ALTER TABLE `__new_translation_jobs` RENAME TO `translation_jobs`;--> statement-breakpoint
Comment thread
nonnil marked this conversation as resolved.
CREATE UNIQUE INDEX `translation_jobs_current_complete_idx` ON `translation_jobs` (`memory_id`,`lang_code`,`source_hash`) WHERE "translation_jobs"."status" = 'complete';--> statement-breakpoint
CREATE UNIQUE INDEX `translation_jobs_active_idx` ON `translation_jobs` (`memory_id`,`lang_code`,`source_hash`) WHERE "translation_jobs"."status" in ('pending', 'running', 'cancel_requested', 'stitching', 'committing');--> statement-breakpoint
CREATE INDEX `translation_jobs_memory_lang_idx` ON `translation_jobs` (`memory_id`,`lang_code`,`updated_at`);
Loading
Loading