Part of #206 (Phase 1). Depends on nothing. Blocks #217.
Why
June listed /tools as a Phase 2 page. Today there is no landing page: the three working tools (/tools/firmware-partitions-calculation, /tools/high-resolution-timer, /tools/qr-code-generator) hang under a "Web tools" header in the Ecosystem dropdown, are absent from the footer, and render in the old container styled by pages/_calculator.scss. /utilities is a hardcoded English list of seven vendor tools with /dl/ download links, sitting next to them. The high-resolution timer is the tool for measuring glass-to-glass latency, and /low-latency does not link it. The QR generator loads qrcode@1.5.1 from jsdelivr, the one third-party script left after #121 removed the CDN fonts for the same reason. timelaps-interval-calculator.html.erb is an unrouted form stub with no calculation, no i18n and a typo in its name (config/routes.rb:138-142 documents it).
What to change
pages#tools, /tools, full-bleed, three locales: a section for the web tools we host, one card per tool, and a section for the vendor downloads folded from utilities.html.erb (the seven tools become data in PagesHelper, labels translated; the /dl/ links stay as they are, served from the host bind-mount). /utilities becomes a 301 to /tools, tested.
- The three tool pages set
content_for :fullwidth and pages/_calculator.scss is rewritten against the new tokens. Inline scripts stay inline: the timer's comment on why it must not depend on the JS bundle holds, and the partition calculator keeps its Turbo-safe IIFE. The calculator's hardcoded validation strings ("Unknown MTD device name …") move to i18n.
qrcode.js is vendored into the tree and served through the asset pipeline; the jsdelivr tag and its SRI hash go.
/low-latency links the timer where it describes measuring latency; the footer's Ecosystem column links /tools.
- Delete
app/views/pages/timelaps-interval-calculator.html.erb and the routes.rb comment about it. Nothing routes to it, nothing tests it, and it computes nothing.
- The navbar's "Web tools" group becomes a single
/tools entry.
Done means
/tools and the three tools render in three locales with no missing translation; all four are in relaunch_pages_test.rb's list.
grep -r 'cdn.jsdelivr' app/ config/ is empty.
/utilities answers 301 to /tools in the redirect test; the timelapse template is gone from the tree.
- Screenshots of the four pages before any PR.
Part of #206 (Phase 1). Depends on nothing. Blocks #217.
Why
June listed
/toolsas a Phase 2 page. Today there is no landing page: the three working tools (/tools/firmware-partitions-calculation,/tools/high-resolution-timer,/tools/qr-code-generator) hang under a "Web tools" header in the Ecosystem dropdown, are absent from the footer, and render in the old container styled bypages/_calculator.scss./utilitiesis a hardcoded English list of seven vendor tools with/dl/download links, sitting next to them. The high-resolution timer is the tool for measuring glass-to-glass latency, and/low-latencydoes not link it. The QR generator loadsqrcode@1.5.1from jsdelivr, the one third-party script left after #121 removed the CDN fonts for the same reason.timelaps-interval-calculator.html.erbis an unrouted form stub with no calculation, no i18n and a typo in its name (config/routes.rb:138-142documents it).What to change
pages#tools,/tools, full-bleed, three locales: a section for the web tools we host, one card per tool, and a section for the vendor downloads folded fromutilities.html.erb(the seven tools become data inPagesHelper, labels translated; the/dl/links stay as they are, served from the host bind-mount)./utilitiesbecomes a 301 to/tools, tested.content_for :fullwidthandpages/_calculator.scssis rewritten against the new tokens. Inline scripts stay inline: the timer's comment on why it must not depend on the JS bundle holds, and the partition calculator keeps its Turbo-safe IIFE. The calculator's hardcoded validation strings ("Unknown MTD device name …") move to i18n.qrcode.jsis vendored into the tree and served through the asset pipeline; the jsdelivr tag and its SRI hash go./low-latencylinks the timer where it describes measuring latency; the footer's Ecosystem column links/tools.app/views/pages/timelaps-interval-calculator.html.erband the routes.rb comment about it. Nothing routes to it, nothing tests it, and it computes nothing./toolsentry.Done means
/toolsand the three tools render in three locales with no missing translation; all four are inrelaunch_pages_test.rb's list.grep -r 'cdn.jsdelivr' app/ config/is empty./utilitiesanswers 301 to/toolsin the redirect test; the timelapse template is gone from the tree.