Commit Graph
5 Commits
Author SHA1 Message Date
grabowski c6bec71442 Press fleet calculator: target output and specials share to fleet mix and needs
Deploy test site / deploy (push) Successful in 37s
User, October 2026: calculations for the later business plan, starting
from 2 Duplex + 1 Classic at 3 records a minute per Duplex and 2 per
Classic, as an interactive tool on the website: pick the yearly output
and the share of splatter/specials, get the machine mix and all the
requirements (people, hydraulics, power, ...).

docs/fleet-calculator.html (single static page, no dependencies):
- target mode sizes the fleet (specials only on Duplex with its EX 35;
  grow with Classics or with Duplex systems; start fleet as the floor);
  fleet mode takes a fleet and gives its output at the specials share;
- output, capacity, utilisation and the mix bar per machine type;
- needs: people per shift and in total, galvanics operators, machines,
  connected kVA and average kW, MWh/yr, central hydraulics (flow, motor,
  oil, accumulator), steam, cooling and cooling water, compressed air,
  press floor, room climate, compound, trim, titles, electroformed parts
  and plating units; checks against the 400 kg/h boiler, 250 kW chiller
  and the 870 m2 Payap press hall;
- ladder from the start fleet to a full Payap press hall, click to load;
- every assumption editable with its source (Newbilt Duplex site
  requirements V14 and offer 240620-04, scale.md, galvanics.md, revenue
  model, Payap model; estimates labelled), shareable link via the hash.
The Classic counts as one HRP 12 press plus one extruder until Newbilt
states figures (Toolex Alpha leaflet as a cross-check).

Site: DEMOS entry (/demos/fleet-calculator/) and landing-page entry.
README bullet and layout line; backlinks from scale.md (capacity) and
pressing-line.md (current plan).
2026-10-10 18:21:47 +07:00
grabowski b672c58e34 Plant page: mature fleet at real cycle times
Deploy test site / deploy (push) Successful in 34s
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.
2026-10-03 22:47:57 +02:00
grabowski e23be20b13 Plant operation page: work on phones and tablets held sideways
Deploy test site / deploy (push) Successful in 37s
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.
2026-10-02 21:33:04 +02:00
grabowski 52bf35f183 Deploy workflow: check the SSH key and log its fingerprint
Deploy test site / deploy (push) Successful in 36s
A first run failed with "Permission denied (publickey)": s1 accepts only
the blog key (deploy@s1.b4l.co.th, SHA256:o4w7HL...) for the deploy user,
and the secret held a different key. The SSH step now strips CR, refuses
a secret that is not an unencrypted private key, and logs the key's
fingerprint for comparison with authorized_keys. The ssh host alias is
renamed so the masked VPS_USER value no longer hides it in the log.
2026-10-02 21:14:33 +02:00
grabowski 560d073019 Add the cnxvinyl.lol test site with a Gitea deploy workflow
Deploy test site / deploy (push) Canceled after 0s
site/ builds the internal test site: public/ served as is (landing page,
robots.txt, static sites) plus demo pages copied out of docs/ (the plant
operation page at /demos/plant-operation/). build.sh fails on dead
internal links and stamps version.txt.

.gitea/workflows/deploy-site.yml rsyncs site/dist to the buildfor.life
web server with the blog's two-directory rename swap, checks version.txt
on the server, purges Cloudflare when a token is set, and checks the
public URL. Secret names match the blog's workflow.

site/Caddyfile is the virtual host to append on s1 (noindex everywhere,
Cloudflare-only like the blog apex, www redirect). site/README.md has the
one-time setup: DNS, Caddy, web root, secrets, runner.
2026-10-02 20:59:38 +02:00