graph: new default render tuning — blur 40, labels until zoom (release polish 6)
Two defaults moved by owner ruling (2026-10-07): the region blur doubles 20 → 40 (softer, wider cluster tints) and labelZoom drops 4 → 1 (node labels hidden at the overview, shown once the camera reaches fit zoom or closer). Stored values are untouched — only the absent-field fallbacks moved. The dead-center ladder law gains two owner-moved exceptions (labelZoom index 1, regions.blur index 7); every other default stays stop #5. 1428 tests, tsc, lint, build green.
This commit is contained in:
@@ -157,7 +157,8 @@ export interface RegionTuning {
|
||||
export const REGION_BITMAP_OPTIONS = [128, 192, 256, 384, 512] as const;
|
||||
export const DEFAULT_REGION_TUNING: RegionTuning = {
|
||||
dilation: 20,
|
||||
blur: 20,
|
||||
// New default 40 (owner, 2026-10-07): softer, wider region tints.
|
||||
blur: 40,
|
||||
bitmap: 256,
|
||||
edgeAlpha: 0.2,
|
||||
enabled: true,
|
||||
@@ -260,7 +261,9 @@ export const DEFAULT_RENDER_SETTINGS: GraphRenderSettings = {
|
||||
nodeSize: 2,
|
||||
edgeWidth: 1,
|
||||
arrowLength: 2,
|
||||
labelZoom: 4,
|
||||
// New default 1 (owner, 2026-10-07): labels hidden at the overview,
|
||||
// shown once the camera reaches fit zoom or closer.
|
||||
labelZoom: 1,
|
||||
labelSize: 3,
|
||||
clusterLabels: true,
|
||||
clusterLabelSize: 14,
|
||||
|
||||
@@ -190,9 +190,9 @@ describe("sanitizeRenderSettings", () => {
|
||||
assert.equal(DEFAULT_RENDER_SETTINGS.edgeWidth, 1);
|
||||
assert.equal(DEFAULT_RENDER_SETTINGS.arrowLength, 2);
|
||||
assert.equal(DEFAULT_RENDER_SETTINGS.labelSize, 3);
|
||||
assert.equal(DEFAULT_RENDER_SETTINGS.labelZoom, 4);
|
||||
assert.equal(DEFAULT_RENDER_SETTINGS.labelZoom, 1); // labels only at fit zoom or closer (owner, 2026-10-07)
|
||||
assert.equal(DEFAULT_REGION_TUNING.dilation, 20);
|
||||
assert.equal(DEFAULT_REGION_TUNING.blur, 20);
|
||||
assert.equal(DEFAULT_REGION_TUNING.blur, 40); // new default (owner, 2026-10-07)
|
||||
assert.equal(DEFAULT_REGION_TUNING.edgeAlpha, 0.2);
|
||||
assert.equal(DEFAULT_REGION_TUNING.bitmap, 256);
|
||||
});
|
||||
@@ -237,10 +237,17 @@ describe("ladder mapping (11 stops, default-centered)", () => {
|
||||
["regions.edgeAlpha", REGION_EDGE_ALPHA_LADDER, DEFAULT_REGION_TUNING.edgeAlpha],
|
||||
];
|
||||
|
||||
test("every ladder has 11 stops; every default is stop #5 (dead-center)", () => {
|
||||
// The dead-center law held until the owner moved two defaults
|
||||
// off-center by ruling (2026-10-07): labelZoom 1 (index 1 — labels
|
||||
// only at fit zoom or closer) and regions.blur 40 (index 7 — softer,
|
||||
// wider tints). Every other default stays dead-center.
|
||||
const OFF_CENTER: Record<string, number> = { labelZoom: 1, "regions.blur": 7 };
|
||||
|
||||
test("every ladder has 11 stops; defaults dead-center except the two owner-moved", () => {
|
||||
for (const [name, ladder, dflt] of LADDERS) {
|
||||
assert.equal(ladder.length, 11, name);
|
||||
assert.equal(ladder[5], dflt, name); // default at index 5 → position 50
|
||||
const idx = OFF_CENTER[name] ?? 5;
|
||||
assert.equal(ladder[idx], dflt, name); // default at index 5 → position 50
|
||||
}
|
||||
});
|
||||
|
||||
@@ -334,7 +341,7 @@ describe("physics sliders (fine-grained log, unchanged 2026-09-17)", () => {
|
||||
// span, so a value tuned on a big graph read far too sharp on a
|
||||
// small one. It's a canonical world reach now — any stored value
|
||||
// snaps to the nearest stop.
|
||||
assert.equal(DEFAULT_REGION_TUNING.blur, 20);
|
||||
assert.equal(DEFAULT_REGION_TUNING.blur, 40); // new default (owner, 2026-10-07)
|
||||
assert.equal(sanitizeRegionTuning({ blur: 3.7 }).blur, 4); // nearest stop
|
||||
assert.equal(sanitizeRegionTuning({ blur: 7.2 }).blur, 7.5);
|
||||
assert.equal(sanitizeRegionTuning({ blur: -5 }).blur, REGION_BLUR_LADDER[0]);
|
||||
|
||||
Reference in New Issue
Block a user