Root cause of "menu overlaps content" on the live site: Cloudflare's
edge cache kept serving a stale css/wosa-menu.css from before a fix,
under the same unversioned URL. wosaAssetVer() appends ?v=<filemtime>
to style.css, css/wosa-menu.css, flow-data.js, and app.js, so any edit
to those files automatically gets a new URL -- no more manual cache
purges needed after future deploys. (Still needs one manual purge on
the existing stale cache entry to pick this up immediately.)
Covers the ES5/no-flexbox browser constraints, the flow-data.js content
shape (node/option/step, function-valued fields), the device-filter and
auto-select mechanisms, the index.php server-side menu-nav fetch, and
the git branch layout (old-version preserves the pre-rewrite docs site
history) -- enough for someone else to pick this up cold.
The 320px source images were being downscaled ~9:1 by CSS to fit the
36px display size -- old WebKit's naive scaler handles that ratio
badly (visible aliasing on TouchPad). Pre-scaling to 72x72 (2x the
36px CSS size) cuts that to a clean 2:1 ratio while keeping a crisp
@2x source for modern high-DPI screens.
index.html becomes index.php: fetches www.webosarchive.org/menu.php
server-side over the same protocol the request arrived on (never
upgrading http to https) and inlines the result directly into the
page. A client-side XHR fetch was ruled out -- www.webosarchive.org
sends no CORS headers, so the browser would just block it; a local
same-origin menu.php proxy (the old docs site's approach) was also
ruled out in favor of loading straight from the root domain, keeping
this repo free of a duplicated proxy file.
css/wosa-menu.css positions the fixed-top mount div and reserves page
space for it, only when index.php's fetch actually succeeded.
Also folds in manual edits already on disk: README.md replaces the
now-redundant Help-Flow.txt/webOSDoctors.txt working notes, plus small
flow-data.js wording tweaks.
The old mkdocs-based docs site's full history is preserved in the
old-version branch (and as this merge's second parent, so it stays
reachable from main too) -- this commit just points main's tree at
the new site going forward. No content lost, nothing force-pushed.
- Step 6 now opens with a callout on setting the device clock before
anything else (TLS cert checks are date-based), and the Older Phone
branch gains a Clock Sync app recommendation since webOS 1.x has no
automatic sync -- closes a gap found in a sweep against the old
webos-docs site (clock sync was previously undocumented anywhere).
- Header gets two labelled buttons (Drivers / Firmware) linking to the
driver and Doctor archives, with a site icon, favicon, and social
sharing meta tags from the prior commit's follow-up sizing pass.
- .tagline is hidden below the 481px breakpoint so the header stays
compact on the smallest screens (e.g. Pre3).
- Bundled in: manual content rewrites across Step 7 (Websites,
Email/Calendar, Games & Apps, Community topics), step title tweaks,
and image asset swaps (angrybirds.jpg -> .png, new ExhibitionMode.png,
refreshed disclosure icons).
Icon appears next to the title in the header (float layout, no
flexbox, per the ancient-WebKit constraint) and as the favicon/
apple-touch-icon, generated at a few sizes from the source artwork.
Adds Open Graph and Twitter Card meta tags for link previews, pointed
at docs.webosarchive.org as the eventual hosting domain -- og:image
needs an absolute URL to resolve for external crawlers.
Replaces the shared "coming soon" placeholder with a specific bullet
list of matching webOS Doctor .jar filenames for each device category
(Older Phone, Later Phone, TouchPad 10" reset, TouchPad 10" Community
Edition upgrade, TouchPad Go), sourced from webOSDoctors.txt. Still
links out to the archive.org listing to actually download the files,
and now also points at Step 4's recovery-mode instructions for how to
get the device ready to run one.
3.1.0 CE already includes the app stores, so Step 5 doesn't need to
ask its usual deviceTool/devmode question in that path -- but an
empty or skipped step reads worse than a short one, so it now shows
"App Stores are already installed in 3.1.0, but you may want to visit
them to check for updates and to see what's new," auto-selected same
as Step 4's CE branch.
Broadened wosaChoose's filter-dependent invalidation to fire on any
answer within a filter step, not just the top-level device category:
Step 3's own "upgrade to Community Edition" sub-answer, one level
deeper, now also needs to invalidate Step 4/5's stored path so a
previously-chosen index (e.g. picking "No" among Step 5's two normal
options) can't point past the end of a freshly-narrowed one-item list.
The CE Doctor leaves a TouchPad 10" activated on its own, so Step 4's
recovery-mode/deviceTool instructions don't apply -- it now shows just
"Complete the setup wizard on-device to finish activation." instead.
This is derived purely from Step 3's own path (device filter ==
TouchPad 10" and its "Upgrade to webOS 3.1.0 Community Edition" answer
chosen), not a separately stored flag, so switching Step 3's answer
flips Step 4 back and forth correctly with no invalidation needed.
Generalizes node.q/node.info to optionally be functions too (mirroring
the existing node.options function support), since this case needs to
hide the whole recovery-mode question/info block, not just narrow the
option list.
Step 5's devmode question offered webOS 1.0 even when the device
filter was TouchPad/Veer/Pre2/Pre3, which never ran 1.0 -- it now
narrows the same way Step 4 already did (FILTER_DEPENDENT_STEP_IDS
now includes 5).
Once a filter narrows a question down to exactly one real option
(Step 4's recovery-mode procedure, Step 5's webOS version), there's
nothing left to decide -- auto-select it instead of making the user
tap the only row. Static single-option nodes that confirm a real
action (e.g. "It finished and rebooted") are untouched and still
require a deliberate tap.
- Unselected options in an answered question now go neutral gray
(.dimmed) instead of keeping the blue "pending" tint, so the green
chosen row and gray settled rows read clearly against each other.
- Track which step/level was just answered (wosaAnimateFrom) so the
reveal/settle animations only play on genuinely new content --
previously, answering a deeper question caused already-visible
shallower content to visibly flash/replay its entrance animation
since the whole tree re-renders on every choice.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DyvzxcY41RmRYDebTWxuFo
Answering a question no longer collapses it to a summary line -- all
options stay visible, the chosen one turns pale green in place, and
the next question/instructions append below the full list. Removes
wosaReopen/.answered-summary/.change-hint (no longer needed: changing
an answer is just clicking a different option directly).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DyvzxcY41RmRYDebTWxuFo
Answering a question collapses it to a one-line green summary with a
"Change" link; the next question/instructions animate in below. This
is the checkpoint to compare against the "always-visible options,
grows downward" experiment (State B).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DyvzxcY41RmRYDebTWxuFo