▮ Plasma Gases

Gas emitting directly. No phosphor in the stack.

Plasma gases
▯ CRT Phosphors

A beam on a phosphor, which emits and then persists.

CRT phosphors

General purpose · built to be read

Specialized · built for an instrument

Switches

Simulation · never a color

Style & engine · never the hardware

The retrace band is part of the CRT simulation, and there is no sweep across a plasma panel to switch off.

JS Effects need the CRT simulation and a phosphor that holds long enough to see.

State
Technology
PLASMA
Emitter
NEON
Emission
585.2 nm
Mode
PRESET
Engine
CSS + JS
Technology

A gas in a sealed gap, struck by a sustain pulse. It emits directly — no phosphor in the stack — so the panel lights one hue and varies only how hard it is driven.

The gas the plasma panel was actually built on, and what this framework opens to. In a low-pressure glow the 2p→1s array dominates — the lowest excited states that radiate visibly, populated far more heavily than anything above them — so the discharge is one narrow orange-red rather than a mixture. Nixie tubes and the first flat panels ran on it.

A preset sets the display and its simulation. Everything stays adjustable — and Reset puts all of it back, switches, styles and engine alike.
09 AMBER CONSOLE · SYSTEM GUIDE

DEPRECATED

Everything the framework has taken away, everything it is going to take away, and what to write instead. If you are upgrading from 1.x, this is the chapter.

THE SHORT VERSION

The 1.x token names are gone. The 1.x attributes and JavaScript calls all still work. So the upgrade only breaks for people who overrode custom properties — if you linked the stylesheet and wrote your own markup, 2.0 is a drop-in and there is nothing on this page for you.

DEPRECATED Still works, still tested, still shipped. Announced in the CHANGELOG and listed here with the release that removes it. Nothing is removed in a minor or patch release — a deprecation announced in 2.x goes in 3.0 at the earliest, so there is always a whole major cycle to migrate in.
REMOVED Gone from the code. Only ever happens in a major version. And while a feature is listed as deprecated it keeps working as documented — it does not quietly degrade first. There is one deliberate exception, and it is argued below: the custom properties were removed outright rather than aliased, because a silently-ignored alias turned out to be worse than an honest absence.

STATUS AT A GLANCE

FEATURESTATUSDEPRECATED INREMOVED INUSE INSTEAD
Unprefixed tokens — --ink, --gap, …REMOVED2.0--ac-ink, --ac-gap, …
--amber-* ramp tokensREMOVED1.x2.0--ac-emit-100 … --ac-emit-30
--gas-* halo tokensREMOVED1.x2.0--ac-halo-1 … --ac-halo-4
data-ac-style-smearREMOVED2.0Nothing — the smear is automatic now
data-ac-gas="neon" | "amber"Deprecated2.03.0data-ac-tech + data-ac-emitter
data-ac-gas-toggleDeprecated2.03.0[data-ac-display] radios
AmberConsole.afterglow(el)Deprecated2.03.0AmberConsoleEffects.afterglow(el)

REMOVED IN 2.0

EVERY CUSTOM PROPERTY IS NOW --AC- PREFIXED

This is the only breaking change in 2.0, and it fails silently. Setting --ink: lime does not error, does not warn, and does not work — the framework reads --ac-ink and never looks at --ink.

/* 1.x — silently ignored in 2.0 */ :root { --ink: #ffb000; --radius: 0; --leading: 1.4; } /* 2.0 */ :root { --ac-ink: #ffb000; --ac-radius: 0; --ac-leading: 1.4; }

To migrate: put ac- in front of every Amber Console property you set. Values, cascade behaviour and per-palette resolution are all unchanged — this is a rename and nothing more. The complete list of what to rename to is in REFERENCE · EVERY TOKEN.

WHY THEY WERE NOT KEPT AS ALIASES They were, briefly, and it was worse than useless. Nothing in the framework read the old names, so --ink: red did nothing and said nothing — the hardest kind of bug to diagnose. An absent name at least behaves consistently: it does nothing, everywhere, for one obvious reason.
WHY THEY WERE RENAMED AT ALL Not tidiness. dist/amber-console.layer.css exists so the framework can be embedded in an app that owns the page, and cascade layers do not protect custom properties — an unlayered :root { --radius: 12px } in the host beats a layered one. A host that happened to use --radius, --gap or --cols silently re-cornered every button, panel, dialog, input, toggle and meter in the framework. --gap and --cols were near-certain collisions in any real codebase. stylelint enforces the prefix now, so the next token cannot go bare.

--AC-GAP AND --AC-COLS NEED RENAMING AT THE CALL SITE

These two are consumer-set: .ac-row, .ac-stack and .ac-grid read them off your element, not off :root. So there was no framework-level value to bridge, and no alias was possible even in principle. Rename them where you write them.

<!-- 1.x --> <div class="ac-row" style="--gap: 12px"> <div class="ac-grid" style="--cols: 3"> <!-- 2.0 --> <div class="ac-row" style="--ac-gap: 12px"> <div class="ac-grid" style="--ac-cols: 3">

--AMBER-* AND --GAS-*

Deprecated in 1.x, removed here with the rest. --amber-* named a hue rather than a ramp, which stopped being defensible once the catalog held a lavender and a pink. --gas-* named a gas when what it carried was the halo — the light scattered in the glass — which is a property of the emitter, not the fill.

1.X2.0
--amber-100 … --amber-30--ac-emit-100 … --ac-emit-30
--gas-1 … --gas-4--ac-halo-1 … --ac-halo-4

DATA-AC-STYLE-SMEAR

The scroll smear no longer has a switch. It is simply part of what amber-console.effects.js does: on wherever the persistence simulation is running and the engine flag permits it, off everywhere else.

It was a style flag that could only ever be on under CRT — every selector implementing it is scoped to .ac-afterglow, and a plasma cell is driven continuously and has nothing that trails. So it spent most of its life disabled and explaining why, which is a third axis of state for a preference nobody was expressing. prefers-reduced-motion still stops the smear, which was the only accessibility case the flag was actually carrying.

Nothing breaks if you leave the attribute in your markup — it is simply inert. Delete it at your convenience.

The mechanism it was written for did not go with it. A style flag can still declare the frame class it is a no-op without, and the switch will disable itself and say why — data-ac-style-retrace is the flag that uses it now. See SCREEN & BOARD.

DEPRECATED — STILL WORKS, REMOVED IN 3.0

DATA-AC-GAS="NEON" | "AMBER"

The 1.x one-attribute palette switch. It still selects a palette, so a 1.x page keeps rendering.

<!-- Deprecated, works through 2.x --> <html data-ac-gas="neon"> <html data-ac-gas="amber"> <!-- 2.0 --> <html data-ac-tech="plasma" data-ac-emitter="neon"> <html data-ac-tech="crt" data-ac-emitter="p3">

The name was the bug. amber was never a gas — it is P3, a CRT phosphor — and a control that calls a phosphor a gas is exactly the confusion 2.0 exists to remove. An emitter is only meaningful inside its technology, which is why naming a palette now takes two attributes: data-ac-tech is what is making light at all, data-ac-emitter is which gas or which phosphor inside it.

IT IS A PARTIAL ALIAS — THE ONE BEHAVIOURAL DIFFERENCE WORTH KNOWING data-ac-gas carries the colour but not the persistence:
MARKUPINKTAIL
data-ac-tech="crt" data-ac-emitter="p3"#ffae1e25 ms — P3's real decay
data-ac-gas="amber"#ffae1e105 ms — the generic default
So a 1.x page gets P3's amber with the generic plasma tail rather than P3's own. Visually it is a slightly longer afterglow and nothing more; nothing breaks. It is not worth fixing in the deprecated path, because the two-attribute form is right there — but if your page leans on persistence timing, migrate rather than relying on the alias. Migrating also unlocks the other nine palettes: data-ac-gas can only ever reach these two and will not grow to reach more.

DATA-AC-GAS-TOGGLE

The old two-position GAS button hook. Still cycles the same two palettes through the new attributes, so a page using it stays correct while it migrates. It cannot reach the rest of the catalog.

Replace it with one [data-ac-display] radio per palette — the catalog is markup, not a table inside the JavaScript, so you can ship your own rows without touching the module.

<input type="radio" name="ac-display" data-ac-display data-ac-tech="crt" data-ac-emitter="p3" data-ac-sims="crt">

AMBERCONSOLE.AFTERGLOW(EL)

A forwarding shim. Ghosting moved to amber-console.effects.js, because it is an effect and amber-console.js is behaviour — and the two files are independently optional, which only means anything if neither imports the other.

AmberConsole.afterglow(row); // deprecated, still works AmberConsoleEffects.afterglow(row); // 2.0 row.remove();

The shim delegates when the effects module is present and does nothing when it is not — the same no-op it always was with the simulation switched off. Call it before you remove or empty the element: a detached node has no rect, so there is nowhere to pin the ghost.

CHECKING YOUR OWN CODEBASE

Three greps. The first two are the breaking change; the third is the housekeeping.

FIND BARE TOKENS Every line this prints sets or reads an Amber Console property that 2.0 no longer sees. grep -rnE '\-\-(ink|fill|screen|radius|leading|gap|cols|stroke|emit|halo|glow|space|type|tracking|font|border-w|decay|persist|drive|edge|on-fill|mesh|blink|flicker|smear|ghost|afterimage|amber|gas)\b' .
OR LIST THE PROPERTY NAMES THEMSELVES Which also catches any bare token the list above misses. Your own custom properties show up here too, so read it as a shortlist rather than a verdict. grep -rhoE '\-\-[a-z][a-z0-9-]*' . | grep -v '^--ac-' | sort -u
FIND THE DEPRECATED HOOKS These all still work today and go in 3.0. grep -rn 'data-ac-gas\|AmberConsole\.afterglow\|data-ac-style-smear' .

This chapter is the on-site copy of DEPRECATIONS.md in the repository, which is the canonical one and ships in the npm package. CHANGELOG.md has the full reasoning behind each change, per release.