Make the DF context from the resolver actually reach the live views:
- pysimFsSelected now stores the canonical path (pysimFsNodePath), not
the node name; pysimFsRenderNode emits the path in the click/toggle
handlers; every consumer resolves via pysimFsFindNodeByPath. The
name-based pysimFsFindNode is removed - two same-named files under
different DFs (EF.ECC/EF.AD, DF.PHONEBOOK copies) are now distinct.
- efDfFromPath maps ADF-rooted parent segments by RID (A0000000871002
-> ADF.USIM, A0000000871004 -> ADF.ISIM), so snapshot/profile paths
rooted by AID resolve to the same DF key as the named form.
- efDecEcc shares efEccCategory with efDecEccUsim (TS 24.008
Table 10.5.135d), so the SIM and USIM category displays can't drift.
Frontend 1087 + Python 1090 tests green. (Version/sw bump deferred -
this is part of the unreleased decoded-editing batch.)
- pysimFsInfoHtml puts the FID/type/size line inside the fieldset, so the
selected file is one bordered block with its symbolic name in the border;
files without an FCI keep the plain borderless line.
- The content pane starts hidden and is synced after every mutation
(selection clears it, read success shows it, read failure keeps it hidden,
edit/cancel re-sync): no empty box before a read or edit.
- tests: FCI ordering assertions; new fs_read.test.js (visibility helper,
read success/failure/throw, markup + call sites); fs_edit extraction.