4728a821f2f6c73f4f101705bc642eba6f5290f6
19
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
22f04ee9a1 |
Plant assistant mockup: operator, management, sales
Deploy test site / deploy (push) Successful in 24s
docs/plant-assistant.html (test site /demos/plant-assistant/): the plant assistant on vinyl-ai as three roles see it. Operator at the C1 press kiosk in Thai or English with push to talk (non-fill rejects explained from cycle rows, lot change and press hall humidity, the stamper change procedure quoted from the approved version, a lot on hold, a refused price question, a safety question answered word for word); management at a desk (output and yield per press against the plan basis, steam per record against scale.md, orders at risk, the weekly note, payroll refused); sales on a phone (order status and ship window, repress feasibility from archived mothers and the standby calendar, repress leads, a test pressing status, fans' addresses refused). Each answer carries numbered sources; the side panel shows the tool calls (ERPNext as the asker's role, the PostgreSQL replica, VictoriaMetrics, documents, event log) on premises with the internet not used; action buttons create drafts only. Deep links #role=<role>&q=<id>, light and dark theme. Invented data; names match the factory console demo. plant-assistant.md: mockup link; sales and customer service row in "Who asks what"; sales drafts (quotation, CRM opportunity, message). README, site index and site/build.sh link and publish the page. |
||
|
|
744a56d22b |
Order tool: fan funding; deck: light and dark, 60/40 shareholding
Deploy test site / deploy (push) Successful in 1m2s
User, 20 Oct 2026: can the deck also be made in a light and dark mode; the new order tool should also offer fan funding, so the platform screenshots match and use the same calculator; the main investor holds at least 60 %, so 40 % is for sale. Order tool (docs/order.html, /demos/order/): - New step 15 "How to pay": pay the plant directly (deposit) or let fans fund it; step 16 becomes "Review & launch" with the campaign simulation and its three outcomes. - Campaign maths ported from make-a-record (fan price, length, cap, own copies, VAT; fans needed = max(100, break-even); keep at the goal and with more fans; price hint); R gains fee (3.5 %), VAT and campaign length with sources; no price changed. - Quote card shows fan price, fans needed and the artist's keep on the fan route; route and campaign in the #q= hash; deep links #s=<step>&p=<preset>&route=fans. - Parity with make-a-record: 206/206 checks over 40 configurations; default quotes unchanged (37,836 / 217 / 102,936 THB; partner mastering 43,676). Investor deck (docs/pitch/): - Light and dark theme like the other site pages (cnx-theme, T key and button), presenter and overview follow; charts from CSS variables; text pairs at WCAG AA in both themes; tool screenshots in both themes. - Two PDFs: dark and light (print-friendly), each ~1.5 MB. - Platform slide: both pictures from the order tool (Splatter 12" order step and its fan-funding view: 100 fans at 1,200 THB, break-even 46, ~480 THB a copy kept). - BOI and financing slide: shareholding bar, lead investor at least 60 %, at most 40 % for co-investors (~32M / ~22M THB at the ~54M equity floor, arithmetic only); the ask offers up to 40 %. Docs: artist-platform.md (fan funding in the order tool), README and landing page entries. |
||
|
|
81de64c8a1 |
Investor deck rebuilt around Plan B (16 slides)
Deploy test site / deploy (push) Successful in 59s
User, 19 Oct 2026: build the deck again but focus on Plan B, the main investor wants to go with that. - Proposes Plan B, ~217M THB at the midpoint (~6.56M USD), labelled ~215M; Plan A (~182M) only as the comparison. Every running footer, source line and speaker note now presents Plan B. - New slide 9 "Why Plan B": ownership and control, not a higher modelled return (owned roof PV and battery instead of a PPA, full metrology from the first release, corridor and tours from day one, cassette and CD-R, bought crane, Thai utilities; ~34.5M THB together); Plan A has the better modelled return, owning the array earns no BOI tax benefit. - Investment by block for Plan B with low-high ranges, the "what Plan B buys" table, no contingency (~30M at 15 %); operating picture, cash curve (payback ~4.2, IRR ~22 %, NPV ~4.7M USD) and BOI slide (equity at least ~54M THB at 3:1, owned PV and battery as collateral) for B; B-specific risks; the ask with the Plan B tranches only. - Plan B renders replace the Plan A ones; PDF regenerated, 16 pages, 1.5 MB. - README and landing page entries say 16 slides and Plan B. - Checks: every slide at 1920/1440/1280/390 px without overflow, navigation and presenter sync, PDF pages and text, no em dashes. |
||
|
|
40c049ae15 |
Investor deck: 15 web slides with presenter view, plus PDF
Deploy test site / deploy (push) Successful in 55s
User, 19 Oct 2026: build a high-end investor pitch deck; the whole plant, web slides on the test site with presenter mode plus a PDF, 12 to 15 slides, both plans, for a BOI / bank / institutional reader. - docs/pitch/index.html (site /pitch/): title, opportunity, the chain under one roof, how a record is made (9 stages, 3 gates, traceability, ERPNext), platform, site and building, sustainability and region, investment A vs B by block with the six levers (no contingency in either price), operating picture with the adverse case, ten-year cash and returns (calculator presets), BOI promotion and the 3:1 debt-to-equity condition (financing structure to be agreed), schedule, risks, team and vendors, the ask (phase 0 then tranches). - Every figure carries a source line (business plans draft 0.3 and the owning docs); speaker notes per slide; P opens a synced presenter window, O the overview, F fullscreen, #n deep links. - img/: six WebP pictures (calculator renders, order tool, fan funding, record passport); CNX-Vinyl-Investor-Deck.pdf, 15 pages 16:9, images re-encoded to 1.5 MB. - site/build.sh copies docs/pitch/ to /pitch/ (new DIRS list); the deploy also triggers on docs/pitch/**; landing page and README entries. - Checks: 15 slides at 1920/1440/1280/390 px without overflow, navigation, presenter sync both ways, PDF pages and text, no em dashes. |
||
|
|
7d6a47e6d0 |
Order tool v2: step-by-step configurator after mobineko.com/order
Deploy test site / deploy (push) Successful in 51s
User, 19 Oct 2026: build a new version of the order tool like mobineko.com/order; it should also offer selectable mastering like brandenburgmastering.com at 60 USD a track. - New docs/order.html (site /demos/order/): 15-step rail, step panel, large live SVG record (colour per disc, translucent, split, splatter, marble, colour-in-colour; label, dead wax, jacket view), floating quote card with price, ship window and quantity; phone strip and bottom bar. Review lists what is missing, itemised quote with basis badges, deposit, lead time, ERPNext touchpoints on the simulated order. Disabled-not-hidden options with reasons. - Mastering choice: none, in-house vinyl mastering (5,000 THB a side, default), or partner studio (Brandenburg Mastering, Amsterdam, example, not contracted) at 60 USD a track (team figure), replacing the in-house line. - Same R list and quote() as artist-order: defaults reproduce 37,836 THB per title and the per-copy figures; new lines (repress stamper, colour effects, printed inner, finish, obi, bag, shipping) are estimates. - artist-platform.md: the page and the mastering choice; README, landing page and site/build.sh entries. - Checks: pw_order.py 96 checks (parity, partner mastering, 15 steps at 1440/1024/768/390 dark and light, disabled force-clicks, render sizes and fills, uploads, audio readers, share link, place order). |
||
|
|
f7e20e1015 |
Make a record: USD / THB / EUR selector and English / Thai language switch
Deploy test site / deploy (push) Successful in 1m45s
User (October 2026): currency selector on the first page (USD / THB /
EUR) and a language selector for Thai on the make-a-record demo.
- Top bar: one currency control (replaces the THB/USD switch on the
price step) and an EN / Thai control, visible from step 1; both persist
(localStorage, #cur= / #lang= in the URL, hash wins). Prices stay
computed in THB: USD = THB / 33, EUR = THB / 38.115 (1 EUR = 1.155
USD); the fan price is entered in the chosen currency and stored in
THB, the campaign rule max(100, break-even) unchanged.
- Thai: every visible string, tooltip, aria label, file check, quote
line, production update, passport, investor note and tour caption
(dictionary T = {en, th}, t(key, vars), data-i18n attributes; 636
keys), system Thai fonts, Thai dates with Gregorian years, and a footer
note that the Thai is a draft translation for review. Template PDFs
stay English (Helvetica has no Thai glyphs).
- Top bar wraps to two rows below 1000 px (steps were cut off between 761
and 990 px before).
- README and landing entries mention the currencies and Thai.
Checks (headless Edge): doc example unchanged in THB (37,836 per title,
232 per copy at 100, break-even 41, goal 100, ~548 kept, 640 hint);
conversions exact; 390 / 768 / 1024 / 1440 px, light and dark, EN and
TH, all currencies, steps 1 to 5: no page errors, overflow or untranslated
leftovers; tour in Thai; node --check; no em dashes.
|
||
|
|
d7380919e4 |
Steam and cooling, plant operation: show the launch plant (1 Duplex + 1 Classic)
Deploy test site / deploy (push) Successful in 43s
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. |
||
|
|
485b3b630a |
Plant and business plan calculator: configuration, investment, budget, ten-year cash
Deploy test site / deploy (push) Successful in 44s
User request (October 2026): an interactive business plan calculator where the plant configuration is chosen and everything follows. Built into the fleet calculator (same page and URL, one model): - Plant configuration card: galvanics in-house or bought stampers (and Pheenix estimate vs OMS reference), mastering and cutting in-house or outsourced, metrology full or launch tier, cassette and CD-R, solar buy / PPA / none, electric or biomass steam, Thai or Chinese utilities, crane buy or rent, visitor corridor now or later, ramp-up reserve; stamper supply to other plants; disabled-not-hidden controls. - Investment built from the total-investment blocks (low / mid / high, sources and kind badges); boiler and chiller modules sized from the fleet and flagged past the four positions; phase 2 building past the 870 m2 press hall. Default reproduces 160.9 / 226.7 / 292.5M THB. - Budget card against 180M and 216M THB; "Investor levers" preset gives 193.6M mid, 203.6 to 213.6M with the reserve. - Money follows the configuration: outsourced title steps passed through at cost (fee split 51.1 / 37.0 / 11.9 %), electric steam energy and demand charge, PPA power price, optional cassette/CD-R revenue. - Ten-year cash view: editable ramp and discount rate, payback, NPV, IRR, chart and table; pre-tax, pre-financing sketch. - Presets: launch plant, investor levers, lean, five-press, full hall. - Verified headless on Edge: 62 checks, 390 / 1024 / 1440 px, dark and light, no overflow, no page errors. Business plan 9.4 cross-check updated to the calculator's figures (EBITDA 1.68M, payback 4.1 yr; cash payback year ~5.7, IRR ~13 %); docx and pdf rebuilt. README and landing entry renamed. |
||
|
|
f9b8407561 |
Factory console: work orders for the operators
Deploy test site / deploy (push) Successful in 51s
New "Work orders" section in the factory console (#work), derived from the same simulated records as the rest of the page, one work order per station and job: - order stages: mastering, lacquer cutting, electroforming, stamper prep, test pressings, press run, packing, dispatch - stamper changes (planned when a set nears its life, in progress during the change), fault clearing on a stopped press (maintenance) - material lab: lab gate per compound lot, release test pressing, and the held lot's re-dry and retest (button starts it) - audio QC: each sampled copy's listening check Board: In progress (press floor first) / Next up (planned press runs and stamper changes with time and press, jobs arriving at the next station) / Done today, filter per station, KPIs. Each work order opens a kiosk view: the steps an operator follows (badge in, scan what the step asks for, with the IDs to scan, confirm), confirmation times and who did it, the order, lot or press it belongs to, and what it writes to the log. Order detail lists the order's work orders by station. Mastering and cutting are booked to the engineers, the lab, QC and maintenance to technicians, the rest to numbered operators; jobs finishing at night are booked to the late shift. README, digital-factory.md demo paragraph and the landing page mention the work orders. |
||
|
|
dd7b749af9 |
Factory console: demo fleet of one Duplex system and one Classic
Deploy test site / deploy (push) Successful in 51s
Three presses for now (D1-A, D1-B on one Newbilt Duplex system, C1 Classic) instead of the plan's two Duplex systems. Order arrivals scaled to the smaller fleet (about 3,000 to 4,600 good records a day); press row fills the width; landing page text updated. |
||
|
|
9ed51f4b22 |
Factory console and customer order status: investor demo
Deploy test site / deploy (push) Successful in 51s
New page docs/factory-console.html (site /demos/factory/): the factory application of digital-factory.md on a simulated plant day, with a switch to the customer portal of the same orders. Factory console (sidebar: Floor, Orders, Quality, Lab, Metal, Ledger): - floor: five presses of the launch fleet (two Newbilt Duplex systems, one Classic) with the mounted order, live good / rejected counters, stamper plays against life, cycle time and steam; KPIs for the day; live optical inspection stream with record keys; alerts (stops, lab holds, stampers near end of life, listening reviews, long gate waits); stations (cutting, galvanics, stamper prep, lab, packing); orders by stage; good records per day - orders list with stage filters and search; order detail with stage track, approvals, metal genealogy and stamper metrology, press run telemetry, compound lot certificate, rejects by reason, audio samples, packing and shipping, and the order's events - press detail with telemetry sparklines; quality (rejects by reason, yield per press, audio comparison); lab (compound lots with results against illustrative limits, one lot on hold with re-dry and retest, regrind batches, hoppers); metal (baths, mounted stampers, metrology, archive); hash-chained event log Customer portal (four demo customers: pressing now, waiting to approve the test pressing, in plating, delivered): progress through every step and the three gates, copies pressed so far with the latest copies and their record keys, approving the test pressing books the press slot (greedy plan of the queue gives the start time and press), and a quality report that fills in step by step: files, lacquers, metal parts with metrology, test pressings, the compound lot's lab results, pressing and inspection, listening checks, packing. Simulation: 60 days warmed up at load (about 0.7 s), then 1x to 3600x. Stages and durations from the production timeline, Newbilt cycle times, two shifts 06:00 to 22:00, unplanned stops, stamper life 1,000 to 2,000 plays, audio sampling first-off plus about 1 in 50 (1 in 25 near end of life), compound lots through the lab gate and release test pressing. All orders, values and IDs are simulated; limits are illustrative. Linked from digital-factory.md (the factory application), traceability.md (customer-facing view), the README and the landing page. |
||
|
|
607f6631a7 |
Make a record: investor demo of the artist platform, end-user flow
Deploy test site / deploy (push) Successful in 53s
New static page docs/make-a-record.html (test site /demos/make-a-record/): the artist platform as a customer would see it, polished for presenting. - five steps (design, music and art, price, fan funding, track) with a sticky stage: to-scale mock-up (record spins at 33 1/3 or 45 rpm on hover), spec chips, price per copy, ship month and the next action - design as option cards and swatches; options that do not apply stay visible and disabled (weight and gatefold off 12", colour pickers for black vinyl) - masters and artwork read in the browser as in the detailed demo, side bars per side, checks in plain words, approval 1 of 3 - price with the curve, itemised lines folded under one summary, lead time as two bars (approvals, then the 7 to 9 week quote) - fan funding: goal, break-even and what the artist keeps, money rules; the campaign on a phone with a pre-order ticker, funded or missed ends, production timeline with the artist's approvals, updates feed - record passport for one delivered copy (stamper, press, cycle time and side; stage dates; optical inspection and sampled audio), per traceability.md and quality-automation.md, IDs simulated; repress card - "Investor notes" switch with the business case per step (market research, vault, short-run economics and the Thai price gap, plant-owned vs broker and the Qrates lesson, traceability and represses); guided tour of about a minute (#tour, #notes in the URL) - light/dark theme shared with the other pages; phone layout with a bottom bar Same price list (demo-0.1) and stage table as artist-order.html, so the defaults reproduce the artist platform example: 37,836 THB per title, 232 THB per copy at 100, break-even 41, goal 100, 548 THB kept a copy. artist-platform.md: investor demo paragraph. traceability.md: the record passport as the per-copy customer view. README bullet and layout line, site DEMOS line and landing-page entry. |
||
|
|
a07faf6ef0 |
Artist ordering demo: configure, check, offer, fan-funded campaign
Deploy test site / deploy (push) Successful in 53s
New static page docs/artist-order.html (test site /demos/artist-order/) walking the artist platform flow end to end: - record configurator (format, speed, discs, weight, colour, packaging, extras, mastering, test pressings) with a live mock-up - track list or dropped masters read in the browser (WAV/FLAC/AIFF headers, sample peak and clipping), side length against the format, jacket and label preflight (size, dpi, CMYK), rights and gate 1 - itemised offer (per title / per copy, pass-through jacket), price per copy against quantity, lead time from the production timeline - direct order or fan-funded campaign: goal = max(minimum run, break-even), what the artist keeps, the money rules, a simulated campaign (sells out / just makes it / falls short) with refund or go-ahead-at-minimum, and the production tracker with the three gates and the fan update feed Price list demo-0.1 splits the doc's 38,000 THB per title and 132 THB per copy into lines (estimates, each listed with its basis); defaults reproduce the artist platform example (break-even 41, goal 100, ~548 THB kept per copy at 100). artist-platform.md: demo paragraph, side length per format table with sources, VAT note on the campaign example. README bullet and layout line, site DEMOS line and landing-page entry. |
||
|
|
7af5d89dd0 |
Steam and cooling plant for the five-press fleet; utilities re-based
Deploy test site / deploy (push) Successful in 44s
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. |
||
|
|
6df1301fb9 |
Site: light and dark mode for the landing page, plant overview and fleet calculator
Deploy test site / deploy (push) Successful in 36s
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. |
||
|
|
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). |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |