neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Build accessible, role-based colour systems from seed colours.
[!CAUTION] Node.js 24.12 or later is required. The engine and its plugins also run in browsers.
[!TIP] Choose the smallest package that matches the problem you are solving.
[!NOTE] This README helps you choose a package. Complete usage guidance, APIs, and examples are on GitHub Pages.
The workspace validates public package archives against their staged build contents before release.
Packages are published to GitHub Packages. Add the registry to your project's .npmrc with a token that has read:packages access:
@studnicky:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN}
Install the packages you need:
pnpm add @studnicky/iridis @studnicky/iridis-contrast @studnicky/iridis-stylesheet
The engine resolves seed colours into named OKLCH roles. Adopt the contrast plugin to apply an accessibility standard, then adopt one output plugin for each artifact you need. The pipeline lists the task names to run, in order.
import type { RoleSchemaEntity } from "@studnicky/iridis";
import { Engine, coreTasks } from "@studnicky/iridis";
import { contrastPlugin } from "@studnicky/iridis-contrast";
import { stylesheetPlugin } from "@studnicky/iridis-stylesheet";
export function generateStylesheet(roleSchema: RoleSchemaEntity.Type) {
const engine = new Engine();
for (const task of coreTasks) engine.tasks.register(task);
engine.adopt(contrastPlugin);
engine.adopt(stylesheetPlugin);
engine.pipeline([
"intake:any",
"resolve:roles",
"derive:roleRelations",
"enforce:compliance",
"derive:variant",
"report:compliance",
"emit:cssVars",
]);
const state = engine.run({
bypass: undefined,
colors: ["#8B5CF6"],
contrast: { algorithm: "wcag21", cvdMode: "nudge", extra: undefined, level: "AA", nonMandatoryLevel: "AA" },
emit: undefined,
maxColors: undefined,
metadata: undefined,
roles: roleSchema,
runtime: undefined,
});
return {
css: state.outputs["stylesheet:cssVars"],
report: state.metadata["contrast:complianceReport"],
};
}
enforce:compliance applies the selected standard (WCAG 2.1 AA, WCAG 2.1 AAA, or APCA, chosen through input.contrast) to every declared contrast pair. Roles you state are never changed; unstated roles are recalculated around them. A set of stated roles that cannot meet the standard yields the closest palette and a report whose problemPairs name each failing pair; input.contrast.enableStrictCompliance marks such a report withheld. report:compliance writes the typed contrast:complianceReport.
Two optional settings in input.contrast choose how strictly the engine applies the rest of the checks:
cvdMode — warn (default) reports colour-vision-deficiency failures without changing the palette, nudge corrects unstated roles toward them, and enforce also blocks a palette whose stated roles cannot clear them.nonMandatoryLevel — AA (default) or AAA. For WCAG it selects the standard for declared non-mandatory pairs such as borders and focus rings. With the current APCA schema fallback it selects Lc60 or Lc75 for every Lc60 pair; body text at Lc75 remains mandatory. level governs text pairs.Use it for the engine, OKLCH colour records, role schemas, the core pipeline tasks, and the math primitives that every other package builds on.
Use it when palette roles must meet WCAG 2.1 AA, WCAG 2.1 AAA, or APCA, hold under colour-vision-deficiency simulation, and produce a typed compliance report.
Use it to reduce image pixels to dominant colours, assign them to roles, and harmonise the accent against the frame.
Use it for pure palette math: interpolate between palettes, subtract one from another, find the nearest preset, and detect drift past a tolerance.
Use it to evaluate a palette curve at a progress value with easing, and to re-check declared contrast pairs on every frame.
Use it when an interface has named palette states and you step between them frame by frame.
Use it to map real time, deterministic virtual time, or a scalar such as scroll position onto the progress value that animation consumes.
Use it for a registry of named multi-stop palette trajectories that you resolve at any progress value.
Use it when your application consumes colour as CSS variables, including dark, wide-gamut, and forced-colors blocks.
Use it to generate a Tailwind colors object, a CSS-first companion sheet, and a ready-to-import config.
Use it to generate the CSS custom properties shadcn/ui components read, as OKLCH triples.
Use it to generate a palette object for MUI's createTheme().
Use it to generate color-token scales for Chakra UI's extendTheme().
Use it to drive a Panda CSS token config and an UnoCSS theme from the same resolved roles.
Use it to generate StatusBar configuration, a Material colour map, SplashScreen background, and an Android colors.xml fragment.
Use it to annotate the resolved palette as RDF triples and serialise to Turtle, TriG, N-Quads, or JSON-LD.
Use it to generate a portable theme.json from a framed, tiered seed palette. The plugin consumes the same engine and the same input.contrast configuration as every other output.
Use it to run the engine from a JSON config and write each plugin's output to a file, without writing code.
MIT — see LICENSE.