User (October 2026): "launch plant should be 1x duplex system and 1x
classic". The calculator already did; these two pages did not.
- steam-cooling.html: default case is now "Launch plant" (D1-A, D1-B,
Classic; B-1 and B-2; CH-1 and CH-2: 450 to 540 kg/h on 1,000 kg/h,
391.5 kW on 500 kW). Other cases: Duplex first (commissioning), Second
Duplex (growth option, five presses), One module down (launch plant
with B-2 and CH-2 out). Idle boxes say "reserved position" / "growth
option". Phasing table: launch plant, second Duplex, options;
galvanics cooling is launch scope. Five-press figures labelled as the
growth case or backbone sizing; chiller cost per the CSV 2-module row.
- plant-operation.html: the launch plant: Classic C2 removed everywhere
(press, trimmer, routes, conveyor, lamps, texts), Classic re-centred;
one PDPU (2 cells) as in total-investment; boilers 2 x 500 kg/h,
chillers 2 x 250 kW; title arrivals scaled to three presses; phone
legend in one column.
- Landing entries and README bullets for both pages.
Verified headless (Edge): skill checks pw_sc_check and pw_plant_check
with launch-plant expectations, 90-day runs, perf unchanged; 390 / 1024
/ 1440 px dark and light without page errors or overflow.
New page docs/steam-cooling.html (site /demos/steam-cooling/): the
utility plant as a clickable process diagram. Steam side: raw water,
softener and dosing, feed tank with heat-pump feedwater recovery, feed
pumps, a bank of two 500 kg/h boilers (third for N+1 as an option),
separator and metering, optional accumulator, blowdown, the 10 bar
header with a valved, metered branch and trap per press, drip legs and
condensate return. Cooling side: Newbilt's press outlets are open (max.
2 bar), so returns drain to a warm tank, pass the heat pump, an optional
dry cooler and a plate heat exchanger to a cold buffer tank, and VFD
pumps feed the 20 to 25 C header at ~10 bar to every press, the
extruders and the central hydraulic oil cooler; the chiller loop
(three 250 kW air-cooled modules at 40 C ambient, fourth as option) stays
closed and clean. Galvanics cooling (12 to 20 C) is a separate circuit.
Operating cases (launch, Duplex system 1, five presses, one module down)
show demand against installed capacity; design basis with sources,
equipment schedule, RFQ questions. Static SVG, no per-frame work.
Design basis at Newbilt's per-machine figures: steam 750 to 900 kg/h,
cooling 652.5 kW (625 presses, 15 extruders, 12.5 hydraulics), 305 to
540 l/min circulating. Also found: Newbilt's 53 l/min at ~60 C out is
~140 kW, above its 125 kW peak; listed as a re-quote question.
Re-based in the same commit:
- scale.md: electrical table (chiller bank ~210 to 325 kW electrical,
plant peak ~430 to 700 kW, ~950 to 1,330 kW with electric steam),
grid 800 to 1,000 kVA (1,250 to 1,600 with electric steam, Schedule
4 past 1,000 kW), tariff 4.5M to 6.8M THB/yr, battery ~1 h of chiller
peak, boiler and chiller banks, biomass up to ~550 t/yr at 1.5 M
records, utilities money line.
- sustainability.md, biomass.md: same figures; electric steam 5.2M to
6.0M THB/yr mature, 1.6M to 1.8M early; fuel saving 4.0M to 5.4M.
- utilities CSV: boiler bank, chiller bank with HX and tanks, softener
and loop treatment re-sized; baseline 23.98M-41.63M -> 30.07M-51.33M.
- total-investment.md: re-size as an added-scope row (+185k / +294k
USD); headline 4.7M to 8.9M unchanged until the investment re-base.
- pressing-line, equipment-suppliers, facility-security, fleet
calculator (boiler 1000 kg/h, chiller 750 kW), plant page detail
texts; README, landing page, build.sh.
Every machine box has rounded corners (rx 4), but its header band was
a square rect inset by 1, painted over the box. At both top corners the
band's square corner covered the inside of the curved border, so the
border looked thin and squared off there, most visibly on a selected
box. The band is now a path with top corners of radius 3, concentric
with the box.
Measured on zoomed crops in headless Edge (light theme, selected
border): border thickness along the 45-degree diagonal against the
straight edge was 0.26 to 0.42 on the Traceability box, Classic C1 and
the VEX 50; now 0.9 to 1.13. Full UI check unchanged: all press states,
47 stations, demo buttons, no overflow, canvas alignment, no errors.
The page spent most of each second laying out the SVG, not simulating:
the simulation itself costs ~26 ms per simulated hour. Profiled headless
on Edge (CDP metrics and a timeline trace with invalidation tracking):
- tokens asked the DOM for getPointAtLength right after writing a
transform, which forced a layout of the whole SVG for every token,
every frame (540 to 630 ms/s);
- ~55 CSS stroke-dashoffset animations repainted the drawing all the
time;
- the press platens were SVG rects moved every frame, and any geometry
write re-lays-out the whole SVG with its 275 text labels.
Now the SVG holds only the machines and labels. Pipes, flow dashes and
the conveyor are drawn on a canvas under it; tokens, records, platens,
cakes, the extruder screw and plating bubbles on a canvas over it, both
with the SVG's own viewBox transform, so pan and zoom need nothing extra.
Routes are measured polylines (ptAt) instead of DOM path queries, and
the 5 Hz tag, lamp and KPI writes only touch the DOM when the value
changes.
Headless Edge, 1600 x 900, before -> after:
1x 26 -> 60 fps, layout 842 -> 26 ms/s, long tasks 19 -> 0
60x 19 -> 59 fps, layout 858 -> 29 ms/s
600x 18 -> 60 fps, layout 855 -> 30 ms/s
3600x 33 -> 60 fps, layout 726 -> 29 ms/s
Behaviour unchanged: all press states seen at 3600x, 47 stations open
their detail, steam dip holds and recovers, lot and repress log, no text
overflow at 1600 x 900 and 1258 x 800, canvas and SVG agree within
0.2 px at fit, zoomed, 1258 x 800 and phone size, both themes, no
errors.
User, October 2026: add bright/dark mode to the site for both tools.
- Each page sets data-theme on <html> before first paint: the saved choice
(localStorage "cnx-theme", shared by all cnxvinyl.lol pages) or, without
one, the system setting (prefers-color-scheme), which it keeps following
until the user picks a mode. Toggle: header button (sun / moon).
- Plant overview: light overrides for every SVG class; pipe colours are
now CSS variables (--p-*), used by the pipes and the legend, darkened in
light mode where the dark-mode tints were too pale (DI water, granulate,
stamper sets, cooling return); press state text and the VEX zone fills
use variables instead of inline hex, so they flip with the theme.
- Fleet calculator and landing page: light palettes; input, flag, badge
and ladder-highlight colours moved to variables.
Checked headless in Edge: both system schemes pick the right mode, the
toggle persists across pages, computed colours flip (press text, zones,
pipes, legend), no text overflow in either mode, no JS errors.
Ian Locke's email of 5 October 2026 after Making Vinyl Europe:
- Budget of USD 250k for VSP, VSF and VSC confirmed; his time, spares,
shipping and travel extra; itemised quotation on request. The
total-investment block keeps its estimate until the re-base, the
difference (+190k low case / +80k high case) goes into the
not-yet-rolled-up table.
- Current specifications filed (VSF and VSC 2022, VSP 2023) plus the
VSF/VSP/VSC line-up drawing (4958 x 833 mm); the 2021 issues move to
sibert/specs-2021/. VSC is now 1000 kg with split OD hydraulic / ID
pneumatic forming; VSF 0-30 psi, 4-station head. Crane table, supplier
map, vendor landscape and the plant page details updated.
- Fully automatic VSPa exists; Sibert offers to move features to the VSP.
- Electroforming: OMS (Optical Media Services, Lou Wullms) named next to
Pheenix; added as a third galvanics candidate with open questions.
- Sequencing advice (presses, boilers, operators and live feedback loops
first) recorded in the exhibitor briefing, roadmap item 23, and as
digital-factory design decision 9 (operators see the data first).
Rebuild docs/plant-operation.html from the single P1 press into the mature
plant: Newbilt Duplex (two HRP 12 on a VEX 50, EX 35 for splatter), two
Newbilt Classic automatic presses with edge trimmers, label punch and
Granulator 400; Pheenix Alpha PASU, PPPU, two PDPU and PMPB; Sibert VSF,
VSP and VSC in that order; father and mother archive and the stamper rack.
Time runs at 1x real time with speeds up to 3600x. Press cycles are
Newbilt's (Classic 28 s, Duplex ~30 s), plating follows Faraday's law at
the PDPU current, and the operator steps use the galvanics.md table, with
unpublished times marked as estimates. Titles flow through the three artist
gates in days; test pressings unmount and the presses run approved work
meanwhile; worn stampers and represses come from the archived mothers.
Two shifts, unplanned press stops sized to scale.md's 60 to 70 %
effectiveness, and demos for a steam dip, a new PVC lot and a repress.
The boiler and chiller are shown at 800 kg/h and 500 kW (estimates) and
the detail panels flag that scale.md's 400 kg/h and 250 kW are Duplex
figures; scale.md itself is unchanged.
Also commits the galvanics.md cycle-time table the page runs on (one PDPU
covers demand, the second is redundancy) and updates the README and the
test-site descriptions.
docs/equipment/pheenix-alpha/: the four Pheenix Alpha electroforming flyers
(2024: PASU silvering, PPPU pre-plating, PDPU dual-cell plating, PMPB
passivation bench), renamed from their download hashes.
docs/equipment/sibert/: the VSP, VSF and VSC technical specifications
(2021), plus Sibert's 2008-09 optical-disc SPS literature and the 2008
Blu-ray stamper characteristics paper in sps-optical-disc-2009/. Two
byte-identical duplicates in the download were dropped.
New docs/equipment/galvanics.md, the metal-path counterpart to
pressing-line.md: datasheet tables for both ranges and what they change.
Pheenix is a second turnkey galvanics vendor next to Digital Matrix and
can quote lacquer-to-record as one vendor; neither range includes water
treatment. Utilities from the sheets (~27 kVA connected per line, DI water,
12-20 C cooling water, extraction sizes), ~5.6 m2 of footprint, and a cell
count estimate (one PDPU at the low end, two at the high end). The Sibert
machines are single-phase, 200/250/600 kg on castors, centre manually and
list no data interface; the VSC locates on the punched hole; the finisher's
water carries nickel. Weights, cycle times, prices and mould fit are listed
as quote questions.
Backlinks and small updates: README (bullet, layout tree, vendor list),
roadmap items 6 and 23, vendor landscape, supplier map, exhibitor briefing
(on-file notes, Sibert three-phase question answered), digital factory
(Pheenix PLC data, Sibert data question, RFQ clause 5), quality automation
(hardness on the centre slug, BD paper as the acceptance-spec model),
sustainability (finisher water), total investment block label (numbers
unchanged), scale (galvanics feeder note), crane weight table, process
flow, pressing-line stamper-fit question, plant page detail lines.
docs/equipment/newbilt/flyers-2026/: the six 2026 product flyers
(Classic, Duplex, EX 35, Edge Trimmer, Granulator 400, Label Punch) and
the 2024 Classic print flyer, collected at the booth in Haarlem.
pressing-line.md gets a range table with the flyer figures and what they
change: Classic and Duplex share inserts (one mould family for a
Newbilt-only fleet, Classic now named as automated candidate next to the
Pheenix AD12), edge trim of 20 to 40 g per 12" 180 g record brackets the
~20 % regrind share, the Granulator 400 runs in batches, central
hydraulics is an option, and the EX 35 is not in the 2024 quote.
Sources disagree on the Classic's panel (two 21" vs one 10"), extruder
power (7.5 kW drive in the 2024 flyer vs 15 kW noted earlier) and 10"
support; recorded as re-quote points instead of picking one. Supplier
table and exhibitor briefing corrected to match and given Erwin Neubauer
as a second contact; plant page grinder detail cites the flyer figures.
The header no longer forces a 1,600 px layout: it wraps on tablets and
narrow desktops (all nine KPIs now fit at 1,600 px, one was clipped
before), and on short screens (max-height 560 px, i.e. phones in
landscape) it collapses to one row with a scrolling KPI strip. There the
detail, event log and legend move into a side sheet (Info button, opens
by itself when a station is tapped), so the drawing gets the full height.
The drawing pans and zooms by viewBox, so the sim coordinates are
untouched: pinch and drag on touch, wheel and drag with a mouse, plus
zoom buttons and +/-/0 keys. A drag or pinch never selects the station
under the finger. Uses 100dvh and disables iOS landscape text inflation.
Upright phones get a hint to turn sideways.
Checked in Chrome device emulation at 667x375, 740x360, 844x390,
932x430, 1024x768, 1180x820, 1366x1024, 1258x800, 1600x900, 1920x1080
(no horizontal overflow, zoom controls clear of every station) with real
touch input (tap, tab switching, pinch, drag) and a 10x sim run without
errors.
The docs and the plant page had labelling as a finishing step after the
press. On a record press the bottom label, the cake and the top label go
in between the stampers every cycle and the mold bonds the paper into the
vinyl; the oven only pre-dries them. Corrected everywhere the process is
described:
- process-flow.md: labels are a parallel input to pressing with their own
row (print inspection, oven, lot per cycle); stage 6 loads label, cake,
label; stage 7 is trim, sleeve, shrink
- process-flow.drawio (+ regenerated png/pdf): label input now feeds
stage 6, not stage 7
- README vision list and the business plan source (regenerated docx/pdf):
pressing paragraph explains the pressed-in label, finishing no longer
claims to label
- plant-operation.html: label dry oven station feeds two label discs
into the press with every cake, the cake in the mold shows its labels,
the cycle log records the label lot, finishing is sleeve + shrink
docs/plant-operation.html: one self-contained static page showing the
whole plant running, from PVC intake and the material lab gate through
extruder, press cycle (load/close/steam/cool/open/eject), trimmer, 100%
optical inspection, sampled audio comparison, finishing, packaging
(matrix code vs barcode) and fulfillment. The metal path (audio intake,
mastering, cutting, silvering, father/mother/stamper, stamper prep) runs
above with the three artist gates; utilities (steam, cooling, air,
hydraulics, grinder/regrind, energy, traceability, HVAC) below with
live-looking tags.
Numbers are taken from the repo (Newbilt site requirements, scale.md,
quality-automation.md, process-flow.md). Every station is clickable for
what happens there and the checks that gate it. Two demo buttons show a
steam pressure dip holding the press and a new PVC lot held by the lab
until a test pressing releases it. README links the page.