AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
SurfView.js is a TypeScript library for rendering interactive cortical surfaces
in the browser. It keeps mesh geometry, ordered data overlays, scientific color
mappings, picking, and temporal playback in one typed viewer model built on
Three.js.
Use it when a neuroimaging application needs to own its page and data flow while
SurfView owns the canvas, scene, and GPU resources. Rendering is on demand by
default, and optional controls mount into a container supplied by the host
application.檢視完整 README ↗Guide · API reference · Demo · npm
SurfView.js is a TypeScript library for rendering interactive cortical surfaces in the browser. It keeps mesh geometry, ordered data overlays, scientific color mappings, picking, and temporal playback in one typed viewer model built on Three.js.
Use it when a neuroimaging application needs to own its page and data flow while SurfView owns the canvas, scene, and GPU resources. Rendering is on demand by default, and optional controls mount into a container supplied by the host application.
Runtime boundary: construct a viewer only in a browser with WebGL. The package declares Node.js 22 or newer for build tooling and server-side imports; GPU rendering remains a browser responsibility.
npm install surfview three
three is a required peer dependency. React is optional and is needed only for
the surfview/react or surfview/controls/react entry points.
Add <div id="viewer"></div> to the page, then run the following as a browser
module. The small triangle makes the example self-contained; replace its typed
arrays with a loaded cortical mesh for real data.
import {
DataLayer,
MultiLayerNeuroSurface,
NeuroSurfaceViewer,
SurfaceGeometry
} from 'surfview';
const container = document.querySelector<HTMLElement>('#viewer');
if (!container) throw new Error('Expected a #viewer element.');
const geometry = new SurfaceGeometry(
new Float32Array([-1, -1, 0, 1, -1, 0, 0, 1, 0]),
new Uint32Array([0, 1, 2]),
'left'
);
const surface = new MultiLayerNeuroSurface(geometry, { baseColor: 0xb8bec8 });
surface.addLayer(new DataLayer(
'activation',
new Float32Array([-2, 0, 2]),
null,
'coolwarm',
{ range: [-2, 2] }
));
const viewer = new NeuroSurfaceViewer(container, 800, 600, { preset: 'paper-light' });
viewer.addSurface(surface, 'left-cortex');
window.addEventListener('pagehide', () => viewer.dispose(), { once: true });
Adding the surface schedules one coalesced frame; a permanent animation loop is
not required. viewer.dispose() releases listeners, surfaces, controls,
post-processing objects, renderer resources, and the WebGL context.
This exact example is compiled in strict mode from a clean packed-package consumer. Continue with loading a real surface or the guided first workflow.
| Import | Use | Published format |
|---|---|---|
surfview | Core viewer, surfaces, layers, loaders, and utilities | ESM plus the 2.x CommonJS/UMD compatibility build |
surfview/react | React viewer and hook | ESM |
surfview/controls | Host-mounted scientific controls | ESM |
surfview/controls/react | React controls adapter | ESM |
surfview/report | Portable report-scene mounting | ESM |
The package exports declarations for every entry point. Optional React and controls code is kept out of the core entry and has independent bundle budgets. See Reliability and contracts for exact runtime, loader, numerical, lifecycle, and performance boundaries.
SurfView is a good fit for browser applications that already have cortical
geometry and vertex-aligned data. It does not perform registration, statistical
model fitting, or scientific calibration. Its statistical helpers have narrow,
documented estimands; for example, tToZ(t, df) preserves the signed Student-t
cumulative probability and is not a large-sample substitution of z = t.
WebGL is required. Features that need WebGL2 or particular texture capabilities report unsupported hardware or use a documented CPU path. Loader limits and validation protect the application boundary, but applications still decide which URLs and data are trusted.
Performance numbers are workload- and runner-specific. The repository publishes the exact meshes, layer counts, synchronization method, memory accounting, and checked ceilings in its benchmark report instead of claiming a universal frame rate.
npm ci
npm run type-check
npm run type-check:demo
npm test
npm run docs:build
The full release candidate also runs strict public type contracts, clean packed-package consumers on Node 22 and 24, coverage thresholds, bundle and performance budgets, Chromium WebGL tests, and macOS visual regression. See the CI policy for the distinction between local evidence and hosted release proof.