| 94 |
94 |
|
//! These 50 never reach zero by porting. Retiring `escape.js` means giving them
|
| 95 |
95 |
|
//! typed escaping some other way, or accepting that four files keep an escaper.
|
| 96 |
96 |
|
//!
|
| 97 |
|
- |
//! ## Un-ported screens (2 files, 16 sites)
|
|
97 |
+ |
//! ## Un-ported screens (1 file, 10 sites)
|
| 98 |
98 |
|
//!
|
| 99 |
99 |
|
//! A described counterpart could exist and does not. This is the candidate list,
|
| 100 |
100 |
|
//! and it is the only place to look for what is portable next.
|
| 111 |
111 |
|
//! 1 and 2 are what the flip waits on. `time-tracking.js` and `time-summary.js`
|
| 112 |
112 |
|
//! left on 2026-08-20 and are [`time_tracking`]'s row above.
|
| 113 |
113 |
|
//!
|
| 114 |
|
- |
//! - `events.js` 10. Its grid rendering is bespoke; whether the CRUD/list half
|
| 115 |
|
- |
//! is a real candidate is unchecked, and per this table that is a claim to
|
| 116 |
|
- |
//! measure rather than assert.
|
| 117 |
|
- |
//! - `task-graph.js` 6. Draws the blocking DAG.
|
|
114 |
+ |
//! - `events.js` 10. Measured 2026-08-21, and the sentence that stood here was
|
|
115 |
+ |
//! wrong twice over: there is no grid in the file, and all ten sites are
|
|
116 |
+ |
//! describable. It is three lists, a form and a detail modal — no calendar
|
|
117 |
+ |
//! rendering of any kind, which lives elsewhere. Sites 543/553/558 and
|
|
118 |
+ |
//! 618/623 are `renderEventRow`'s title, location and recurrence-pattern
|
|
119 |
+ |
//! cells (a described table), 791/798/802/805 are the detail modal
|
|
120 |
+ |
//! (`Region::Modal` plus text), and 123 is the reminder-preset checkbox list
|
|
121 |
+ |
//! (a `Choice` set). The whole file is a real candidate, which is more than
|
|
122 |
+ |
//! the old note claimed and not less.
|
|
123 |
+ |
//!
|
|
124 |
+ |
//! Three things the port will meet, none of them blockers. The three
|
|
125 |
+ |
//! `VirtualScroller`s over `renderEventRow` are the case [`task_list`]'s
|
|
126 |
+ |
//! finding 2 and [`emails`]'s `list` already settled: windowing rows you hold
|
|
127 |
+ |
//! is a renderer technique, and a described list answers it with `Rest`.
|
|
128 |
+ |
//! `start_time`/`end_time` carry a `transform` that natural-parses the text
|
|
129 |
+ |
//! before submit and an `onInput` preview beside the box, which is host
|
|
130 |
+ |
//! behaviour on either side of a `Field` rather than something the field
|
|
131 |
+ |
//! says. The `timezone` field's validity depends on `tz_kind`, so a described
|
|
132 |
+ |
//! form either validates it on the server or the two travel together.
|
|
133 |
+ |
//!
|
|
134 |
+ |
//! ## Bespoke (1 file, 6 sites)
|
|
135 |
+ |
//!
|
|
136 |
+ |
//! Not a candidate, and it will keep its escaper. Left the list above 2026-08-21.
|
|
137 |
+ |
//!
|
|
138 |
+ |
//! - `task-graph.js` 6. Draws the blocking DAG, and *draws* is the word: it
|
|
139 |
+ |
//! emits an SVG string with computed node coordinates, bezier edge paths, a
|
|
140 |
+ |
//! `defs` arrowhead marker and a viewBox sized to the layered layout. Four of
|
|
141 |
+ |
//! its six sites (207, 209, 213, and the labels at 227 positioned to the
|
|
142 |
+ |
//! column pitch) are inside that. The description layer has no word for a
|
|
143 |
+ |
//! coordinate or a path and should not grow one: a member that positions
|
|
144 |
+ |
//! itself is the thing wiki `layout-room-and-fallback` rule 1 forbids, and a
|
|
145 |
+ |
//! vocabulary that could express this would be a graphics library.
|
|
146 |
+ |
//! The remaining site (46, a load-failure empty state) and the project filter
|
|
147 |
+ |
//! are describable, but splitting a 258-line file to move one `esc()` leaves
|
|
148 |
+ |
//! two screens where there was one and still does not retire the escaper.
|
| 118 |
149 |
|
//!
|
| 119 |
150 |
|
//! ## Not a screen (10 files, 27 sites)
|
| 120 |
151 |
|
//!
|