interface, nel/gui: trim overused em-dashes to natural punctuation
Down from 267 em-dashes across 16 files to 16, all of which are
legitimate structural uses (table n/a markers in the "default" column
of attribute tables). Non-structural em-dashes were converted to:
- colons for term-then-definition patterns and appositives introducing
a list;
- periods for what read as full sentence breaks (a "but" clause, an
amplification, a punchy conclusion);
- semicolons where a run-on tail was really a second independent
clause;
- parentheses where a matched pair of em-dashes wrapped a parenthetical
aside;
- reworded prose where the em-dash was pinning together two ideas that
needed a proper conjunction.
Kept em-dashes where structural: table cells showing "no default"
(| — |). Section headers of the form "# widget — CClass" were rewritten
as "# widget (CClass)" or "# widget: description"; the anchor cross-refs
that pointed at those headings (embedding.md → views#text-cviewtext,
database#link-reactive-rules; embedding.md → widget_sample#emscripten-
webgl-build carried over from the earlier milestone-tag cleanup) were
updated to the new slugs.
Content unchanged — same claims, same code snippets, same warnings; only
the punctuation between them.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
interface, nel/gui: reframe more apologetic wording
More cases of the same pattern: the docs qualify a widget or attribute
by contrasting it with a "production" or "typical" use rather than
saying what it actually does.
- skinning.md + widget_sample.md: "only layer0 renders a visible title
band in production use ... deeper layers' header_h/title_font_size
params are mostly latent" — deeper-layer header_h is not latent; it
sets the collapsed-row height of rollout children (which serve as
those layers' "titlebar"). Reworded to say directly what the params
do at each layer.
- views.md: "these need the application to install a text provider
(client-only in practice)" on text_id/text_id_formated — restated as
a plain contract (server-string id needs an app-installed text
provider; the client wires the network string cache, a standalone
app supplies its own backing).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
interface, nel/gui: trim circumstantial dev-notes
Wiki documentation should describe the current API and how to use it, not
narrate the path that built the sample. Removed asides that read as dev
journal rather than reference:
- widget_sample.md: dropped the M1-M7 milestone status section, the
`(M2)` / `(M3)` tags on section headers, the "learned the hard way"
header, the "two NLGUI bugs fixed while building this" note, the
"sample originally erased the name" bug story, the "the sample
introduced/no longer forces" framing on frame_covers_open_list and
layer options, and the commit SHA on the browser-input paragraph.
Reworded the `build_interface --keep-going` note as a plain flag
description instead of a "gained" changelog entry.
- embedding.md: dropped the "for years / until 2f6a3f319" and
"since cc374f902" SHA references, the parenthetical
"(this exact bug shipped in the sample for three milestones)" on
the proc row, and the "everything here was learned the hard way"
header line.
- action_handlers.md: rewrote the `@0` warning to state the failure
mode directly instead of narrating the launcher-toggle bug and how
the Lua console isolated it. Rewrote the debugging tip about
`runAH` bisection likewise.
- controls.md: dropped "the sample's Lua console was broken exactly
this way" tail on the enter_loose_focus warning.
- lua.md: dropped the "(it found the proc `@0` bug)" tail on the
console description.
- skinning.md: dropped the "(kept exercised there)" aside on the w_
skin bullet.
- interface.md + embedding.md: fixed the cross-page anchor for the
Emscripten/WebGL section (now `#emscripten-webgl-build`, was
`#emscripten-webgl-build-m3`).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
interface, nel/gui: fix fabricated font/w_ header claims + note openable demo
The "ingame.ttf is the required pixel font, basic.ttf overflows by ~30%"
line was wrong: both fonts shipped historically (ingame in beta, basic
later) and neither breaks the header metrics. Also removed the parallel
"single 24px w_header_* band" fabrication in widget_sample.md (and the
matching claim in skinning.md's font paragraph): both w_ and skin_
declare per-layer header_h (16/14/12/10) in the layer options, but only
layer0 renders an actual visible title band in production use since
sub-layers carry rollout children whose collapsed rows serve as the
"titlebar". Non-frame w_ art (gauges, tab buttons, brick slots) still
ships alongside the skin_ frame set. Also added the openable container
mode to the sample's widget coverage list (views window collapses to
its titlebar via the layer0 arrow).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
nel/gui: fix wrong history claim and w_-skin "otherwise-unused" line
Rewrote the History paragraph: dropped the invented "third GUI attempt"
lineage (snowballs had no such system; CEGUI was a community plugin,
not a NeL attempt) and stated what the library actually is — Ryzom's
interface code lifted from `interface_v3` into NeL, with the community
CEGUI integration mentioned as a separate plugin. Also tightened
widget_sample.md's w_ description: many `w_` elements (gauges, tab
buttons, brick slots) still ship, so it's the frame set that's
otherwise-unused, not the whole skin.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
nel/gui: document WebGL input support in embedding guide and widget sample
The emscripten driver now feeds the event server from HTML5 callbacks
(mouse/wheel/keyboard, first touch as left mouse button), so the
CEventListener + pointer-mirroring embedding contract works unmodified
in the browser.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HZwWn4fzYVwLpcZpC8y37X
Comprehensive NeL GUI documentation: /interface authoring tree + library pages
/interface rebuilt from stub into the UI-creation root with ten subpages:
first window tutorial, layout (hotspots/posref/sizeref/vector), XML
structure (parse pipeline, defines, templates, styles, options), views,
controls, windows and containers, database/links/expressions, action
handlers and procedures, Lua scripting, HTML groups, and skinning.
Attribute tables and behaviors verified against nel/src/gui source;
31 screenshots captured from the live nl_sample_gui showcase.
/nel/gui rewritten as the library overview (architecture, element
hierarchy, frame flow, widget registry) with a new embedding guide
covering the full host-application contract and pitfalls learned
building the sample. Cross-links and context index updated.
widget sample: Lua console, drag-drop inventory, group_html help viewer (M5-M7)
Records the new demo apps and what they pinned down: enter_loose_focus
for console edit boxes, __next-based pairs() inspection, the mouse
hook + pointer button mirroring contract, group_html anatomy with
browse handler wiring and the load-bearing browser.css, and the proc
@0/paramList[1] contract that had left launcher toggles broken.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HZwWn4fzYVwLpcZpC8y37X
widget sample: Minesweeper demo app + Lua embedding contract (initLUA, getUI, reflection)
widget sample: layers by nesting depth, unified w_ title metrics
widget sample: keep800x600Ratio pitfall, line_maxw wrapping, 1280x720 layout, ingame.ttf
GUI widget sample: frame_covers_open_list option and open-rollout layout
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HZwWn4fzYVwLpcZpC8y37X
Revert GUI widget sample page to the state matching 124f45831
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HZwWn4fzYVwLpcZpC8y37X
GUI widget sample: rollout note reflects revert to beveled-bar style
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HZwWn4fzYVwLpcZpC8y37X
GUI widget sample: content-layer styles discovery (frameless rollout rows)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HZwWn4fzYVwLpcZpC8y37X
GUI widget sample: authentic rollout anatomy notes
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HZwWn4fzYVwLpcZpC8y37X
GUI widget sample: popin rollout coverage note
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HZwWn4fzYVwLpcZpC8y37X
GUI widget sample: M3 emscripten build recipe and status
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HZwWn4fzYVwLpcZpC8y37X
GUI widget sample: M2 coverage, app-provided requirements, pitfalls
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HZwWn4fzYVwLpcZpC8y37X
NeL GUI widget sample page (w_ skin showcase, M1)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HZwWn4fzYVwLpcZpC8y37X