@rt-tools/agent-kit 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -109,3 +109,8 @@
109
109
  судит место, выведенное из-под проверки, — здесь выведено не место, а вся она, и следа в коде
110
110
  не остаётся никакого. Расхождение закрывается тем, на что проверка указала, а несогласие с ней
111
111
  самой — вопрос к владельцу.
112
+ - **Правка вида проверяется на каждом пороге раскладки, а не на одной ширине.** Пороги — это
113
+ места, где раскладка меняется, и промах живёт ровно там: по обе стороны от порога она
114
+ собирается по-разному, а посередине выглядит верной. Проверенная на двух крайних ширинах
115
+ правка отвечает только про эти две, и всё, что между ними, не видел никто. Пары вокруг порога
116
+ проверяются обе: одна ширина говорит лишь про ту сторону, на которую попала.
@@ -48,6 +48,52 @@ description: Паттерн правила browser-verification. Брать, к
48
48
  главной сайта. Счёт годится любому наследуемому свойству: смотрится не одно значение, а число
49
49
  узлов с неожиданным.
50
50
 
51
+ ## Замер по всем порогам разом
52
+
53
+ Замер по одной ширине за вызов даёт числа разных минут: между вызовами страница
54
+ перерисовывается, и сравнивать их нельзя. Ширины поэтому гоняются пачкой в одном заходе —
55
+ каждая живёт своим кадром, замер снимается со всех сразу:
56
+
57
+ ```javascript
58
+ await (async (address, widths, row) => {
59
+ const frames = widths.map((width) => {
60
+ const frame = document.createElement('iframe');
61
+ frame.style.cssText = `width:${width}px;height:900px;border:0;position:fixed;left:-9999px`;
62
+ frame.src = address;
63
+ document.body.appendChild(frame);
64
+ return { width, frame };
65
+ });
66
+
67
+ await Promise.all(frames.map(({ frame }) => new Promise((done) => (frame.onload = done))));
68
+
69
+ return frames.map(({ width, frame }) => {
70
+ const view = frame.contentWindow;
71
+ const doc = frame.contentDocument;
72
+ const cells = [...doc.querySelectorAll(row)];
73
+
74
+ return {
75
+ asked: width,
76
+ got: view.innerWidth,
77
+ heights: [...new Set(cells.map((el) => Math.round(el.getBoundingClientRect().height)))],
78
+ scrolls: doc.documentElement.scrollWidth > doc.documentElement.clientWidth,
79
+ escaped: cells.filter((el) => el.getBoundingClientRect().left > view.innerWidth).length,
80
+ };
81
+ });
82
+ })('/screen', [360, 599, 600, 904, 905, 1239, 1240, 1440], '.field');
83
+ ```
84
+
85
+ Ответ читается по трём признакам, и первый не про вид:
86
+
87
+ - **высоты соседей одной строки равны между собой** — набор значений в `heights` длиной больше
88
+ единицы означает, что поля встали разного размера;
89
+ - **поперечной прокрутки нет** — `scrolls` истинно там, где содержимое шире кадра;
90
+ - **ни одна левая граница не выходит за ширину кадра** — `escaped` больше нуля. На снимке этого
91
+ не видно вовсе: элемент за правым краем выглядит отсутствующим.
92
+
93
+ Ширина кадра меньше заказанной на полосу прокрутки, поэтому сравнивают с `got`, а не с числом
94
+ из списка: порог, названный по заказанной ширине, на кадре оказывается по другую сторону от
95
+ себя.
96
+
51
97
  ## Узкий экран
52
98
 
53
99
  `resize_window` не работает, когда Chrome в полноэкранном режиме: инструмент рапортует успех,
@@ -26,6 +26,20 @@ description: Паттерн правила git-workflow. Брать на зав
26
26
 
27
27
  Все четыре шага делает одна команда дерева, а не рука: делить их значит забывать третий.
28
28
 
29
+ **Локальные ветки этой задачи читаются до заведения новой.** Борда не видит ветки, и задача, по
30
+ которой работа лежит доделанной в локальной ветке, выглядит открытой у всех: колонку двигают
31
+ рукой, заявки нет, а ветка видна только на той машине, где её завели. Под один номер так
32
+ завелась вторая ветка со своей папкой задачи и своим замыслом — то есть работа была спланирована
33
+ второй раз, и выбирать из двух пришлось владельцу.
34
+
35
+ ```bash
36
+ git branch --list '<КЛЮЧ>-<номер>-*'
37
+ ```
38
+
39
+ Одна строка ответа означает, что работа уже начата: её состояние читается в ходе работы её
40
+ папки, а не заводится заново. Пустой ответ говорит только про эту машину — ветка, заведённая на
41
+ другой и не отданная хостингу, не видна и отсюда.
42
+
29
43
  **Очередь работ спрашивается до заведения задачи, а не после.** Найденное собственной сверкой
30
44
  ощущается новым, и это ощущение — единственное, что стоит за решением завести задачу: команда
31
45
  заведения отвечает за свои вызовы и о содержании очереди не знает ничего. Спрашивается она
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rt-tools/agent-kit",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "Переносимый слой правил для агента: законы, хуки, проверки и агенты, раскладываемые в репозиторий одной командой",
5
5
  "author": "RT Team",
6
6
  "license": "Apache-2.0",
Binary file
Binary file