Add full shell, replaceable Omics adapter and bilingual interaction

Implement approved specification #32 and tickets #33-#37. Keep host authentication server-verified and pin session interaction language. Compile scoped base selectors for browser compatibility and retain full gutters during CSS pruning.
This commit is contained in:
Codex
2026-09-13 14:26:39 +02:00
parent 2d1b714ebe
commit d8a29bfbdd
207 changed files with 8570 additions and 2164 deletions
+3 -1
View File
@@ -1,4 +1,5 @@
import type { ReactElement } from "react";
import { useI18n } from "../i18n";
import { SqlViewer, type SqlBlock } from "./SqlViewer";
import { SchemaLinkingViewer, type SchemaLinking } from "./SchemaLinkingViewer";
import { MarkdownView } from "./MarkdownView";
@@ -105,6 +106,7 @@ function humanizeKey(k: string): string {
* visual hierarchy: top-level sections are split by hairline rules, nested fields
* sit tighter, and object-arrays become grouped cards. */
function StructuredValue({ value, depth = 0 }: { value: unknown; depth?: number }): ReactElement {
const { t } = useI18n();
if (value === null || value === undefined || value === "") {
return <p className="text-sm text-muted-foreground">—</p>;
}
@@ -136,7 +138,7 @@ function StructuredValue({ value, depth = 0 }: { value: unknown; depth?: number
}
const entries = Object.entries(value as Record<string, unknown>);
if (entries.length === 0) {
return <p className="text-sm text-muted-foreground">No artifact content available.</p>;
return <p className="text-sm text-muted-foreground">{t("No artifact content available.")}</p>;
}
return (
<div className="flex flex-col">