Карта екранів: яке питання ставить кожен¶
Довідник по вікнах застосунку в браузері. Коротко для людини — «Як працювати».
Застосунок складено з екранів, кожен з яких відповідає рівно на одне питання. Плутати їх дорого не тому, що це неохайно, а тому, що «немає» в них означає різне — і на чужому «немає» закривають напрям, якого ніхто не перевіряв.
| екран | питання | «немає» означає |
|---|---|---|
| 🐾 Огляд | де я стою й куди воно рухається | «у цьому просторі ще нічого немає» — і тоді екран стає онбордингом |
| 🎯 Рід | чиє прізвище шукаємо і в яких написаннях | «рід ще не названо» — нормальний стан свіжої установки, а не поламка |
| 🔎 Каталоги | де це є в чужих довідниках | «немає в тих каталогах, куди ми змогли зазирнути» |
| 🗺 Газетир | де документи мого СЕЛА | «немає у встановлених довідниках» |
| 🏛 Описи фондів | що взагалі існує в архіві | «в архіві не існує» |
| 📚 Бібліотека | що я маю на руках | «ще не завантажено» |
| 📥 Нові теки | що лежить на диску й ще не стало справою | «нових тек немає — усе описано або відкладено» |
| 📜 Прогони | чим і наскільки прочитано | «цю справу ще не читали машиною» |
| 🖼 Аркуші | що це за папери | «у цій теці нема чого показати» |
| 📄 Гортач | що саме прочитала машина | «цієї сторінки в прогоні немає» |
| 🔎 Пошук | де в прочитаному моє прізвище | залежить від сховища — див. канали пошуку |
| 👁 Облік | що я вже бачив оком | «цього аркуша ще не переглядали» |
| 🗃 Набори | що в мене є для розмітки й трену | «наборів немає» — нарізати перший із прогону |
| ✍ Розмітка | що на цій смужці написано насправді | «у цьому режимі рядків не лишилось» — усі розмічені або порожні |
| 📚 Канон | що по роду встановлено й чим доведено | «карток ще немає» — канон засівають з GEDCOM чи першою карткою (скіл keep-canon) |
| ❓ Гіпотези | що не доведено й який документ це розв'яже | «карток гіпотез немає» — відкрите по роду ніде не записано |
| 📝 Дослідження | що вже перевірено, що ні і чому | «у reports/ проєкту звітів ще немає» |
| 🕓 Історія | хто й коли міняв картку, як повернути | «змін ще не збережено» або «історію не заведено» (nysh history setup) |
| ☁ Хмара | що крутиться на орендованих картах і скільки коштує | «хмарних прогонів ще не було» |
| 🤝 Супряга | що віддати в пул, що взяти, що вже віддано | «усе прочитане вже віддано» / «у пулі такого немає» |
Три питання — правила інтерфейсу¶
Кожен екран і кожна дія відповідають людині на три питання. Це правила для того, хто міняє консоль, і пояснення для того, хто нею користується.
- Де я? — у Майстерні чи в роді, і чиї дані на екрані.
- Контекст названо словами: у верхній панелі («Рід · Рід Сидоруків» або «Майстерня · без проєкту»), у підписі блоку меню й у крихтах заголовка. Колір і знак роду лише підтримують напис.
-
Кожен екран має шар (
core.sections.LAYERS), і заголовок сторінки показує його міткою:шар мітка що означає own«належить «X»» висновки проєкту: канон, гіпотези, звіти, історія shared«спільне Майстерні» матеріал, читання, хмара, Супряга — бачать усі проєкти mixed«спільне · зріз для «X»» спільний матеріал із позначками для роду (бібліотека, пошук) service«сервіс машини» роботи й налаштування, а не дані дослідження -
Одна назва на екран — та сама в меню, крихтах і заголовку.
- Що тут головне? — заголовок і одне речення «навіщо» зверху; дія сторінки — кнопкою в заголовку («+ Завести справу» в Бібліотеці й Нових теках, «+ Новий проєкт» на Огляді Майстерні). Розширене лишається поруч і пам'ятає, чи його розкривали.
- Що станеться після дії? — дія, що пише, каже, куди ляже результат і з чиїм підписом. Прочитане лягає в спільний матеріал Майстерні, а рід — лише підпис замовника («Для кого»); вердикт і доказ — у проєкт.
Компоненти — одна родина кожного (app.css), щоб та сама думка мала
той самий вигляд на кожному екрані:
- кнопка — голий
<button>= другорядна дія; модифікатори.primary(головна, іtype=submit),.ghost,.danger,.sm,.on(вибране в перемикачі); посилання-кнопка —a.btn. Нового класу кнопки поза родиною не заводити: його ловитьtest_buttons_stay_in_one_family; - мітка —
.tagз тоном.ok·.warn·.err·.info; - картка — одна поверхня для дверей, плиток, карток проєктів, інструментів, показників і коробок дашборда;
- таблиця на телефоні стає картками: клас
tbl-cards, підписи полів — із заголовків колонок.
Меню, верхня панель і вікна¶
Бічне меню ділиться за тим, де живуть дані (core.sections.NAV_GROUPS):
- блок роду — підписаний назвою проєкту: Огляд роду · Канон · Гіпотези · Розбір кандидатів · Дослідження · Історія · Сайт родини · Профіль роду. Є лише в проєкті;
- «Майстерня» — Огляд Майстерні. Є лише без проєкту;
- «Спільне Майстерні» — групи Матеріали · Читання · Пошук · Супряга. Підпис групи веде на її перший екран, стрілка поруч лише розкриває;
- «Сервіс» — Роботи · Експорт · Налаштування, Лабораторія.
Частини застосунку (секції) лишились вимикачами: екран вимкненої частини випадає зі своєї групи, а група без жодного екрана зникає. На вузькому екрані меню висувне (☰).
Верхня панель — лише те, що потрібне з будь-якого екрана:
- контекст — у якому роді чи замовленні відкрита вкладка; клік дає перелік проєктів Майстерні й «+ Новий проєкт». Зміна роду лишає той самий екран (Бібліотека → Бібліотека); екран роду при переході в саму Майстерню веде на Огляд Майстерні. У просторі старого типу (без Майстерні) кнопки немає;
- «Що зробити?» (клавіша
/) — твоя жnysh ops find: людина пише словами, консоль показує дії з кнопкою «Відкрити» туди, де їх роблять. Дія без екрана не зникає: поруч із командою для терміналу стоїть «Форма» — поля зібрано зі схеми операції (/api/ops), дія, що щось змінює, питає підтвердження, довга йде роботою; - «Працює N» — що зараз іде: читання, хмара, пошук; ховається, коли нічого;
- профіль Супряги — ім'я в спільноті й скільки справ віддано та взято; меню веде у «Віддати», «Взяти», «Мої картки» й вікно профілю;
- ⚙ — мова, тема й налаштування.
Вікна. Окрема сторінка — там, де людина працює довго (список, перегляд, розбір). Форма на одну дію відкривається вікном поверх поточного екрана: опис справи, новий проєкт, налаштування, профіль Супряги, доказ у канон, підтвердження (зупинити оренду, у хмару, віддати в Супрягу, повернути версію картки), деталь запису («що змінилось», журнал хмари, картка канону). Екран під вікном лишається, де був.
Майстерня без проєкту. Блоку роду в меню немає. Перехід на екран роду — за посиланням чи закладкою — показує вибір проєкту з поверненням на той самий екран, а не відмову «оберіть проєкт».
📚 Екрани роду (блок роду в меню)¶
У проєкті блок меню, підписаний назвою роду: Огляд роду · Канон · Гіпотези ·
Розбір кандидатів · Дослідження · Історія · Сайт родини · Профіль роду. Огляд роду — шапка
роду, чотири показники-переходи (канон; гіпотези відкриті / чекають вердикту;
непрошукане з прочитаного — cases.list з htr=read, searched=not_here;
остання зміна), «Що вирішити» (canon.next) і «Що нового» (історія й звіти).
Дашборд Майстерні згорнуто під «Стан Майстерні». Огляд Майстерні без проєкту
починається з карток проєктів (особи, відкриті гіпотези).
🔴 Канон консоль показує й перевіряє, але не править. Картки веде агент
або людина у файлі. «Додати доказ» у картці й «Наш → у канон» у Розборі
роблять лише механічне: кроп рядка (text.crop) → сірий JPEG у стор доказів
(evidence.add) → готове доручення агентові з шляхом доказу, справою, сканом,
рядком і цитатою. Факт у картку вносить агент і перевіряє nysh canon check.
Гіпотези: лічильники open / awaiting / closed і перелік у порядку рішень; у вікні гіпотези — кандидати з кропами, «На звірку» віддає їх у Розбір. Вердикт ставить людина там, а не на екрані гіпотез.
Історія: журнал (history.log, файли — від кореня проєкту), «Що
змінилось» полями «було → стало» (history.diff), «Повернути» — лише після
підтвердження, що називає наслідок. Там, де git веде людина, замість
перемикача автозбереження стоїть «коміти ведете ви».
Хмара (група «Читання»): зведення витрат і живих заходів, «Зупинити оренду»
з підтвердженням. «У хмару» на екрані «Читання» спершу рахує кошторис
(cloud.go без run — сухий прогін, нічого не орендується); оренда йде лише
після «так», а понад стелю автозапуску — з confirm. Без грошей на рахунку
оренди кнопки запуску немає.
Супряга: «Віддати» — прочитане й не віддане з галочками, пачка йде
роботою (share.push); приватний проєкт відмовляє сама операція, і причину
видно. «Взяти» — пошук у каталозі пулу, справа завантажується лише після
підтвердження. «Мої картки» — журнал обміну й картка справи.
🐾 Огляд, Стан Майстерні, Проєкти¶
Огляд відповідає на «що робити далі», а не на «скільки всього»:
- простір порожній (реєстру немає або в ньому жодної справи) — три двері: «у мене є скани», «не знаю, де шукати», «перевірити цю машину». Людині, яка щойно поставила застосунок, потрібні входи, а не таблиця нулів.
- Огляд Майстерні — «Продовжити дослідження» (картки проєктів, «Усі проєкти»), чекліст «З чого почати» (лише поки не зелений), головні інструменти (Запустити читання, Бібліотека справ, Завести справу, Новий проєкт), плитки-показники зі спарклайном і останні прогони.
- Огляд роду — показники роду, «Що вирішити», «Що нового». Стану Майстерні під ним немає.
- Стан Майстерні (меню «Сервіс») — дашборд: плитки, поступ читання й пошуку смугами, розбір канону (у проєкті), прогони за рушіями й моделями, розрізи матеріалу за архівами й повітами, крива росту в часі, частини застосунку, перевірка машини.
- Проєкти (блок «Майстерня») — картки всіх проєктів, архівні окремо. Простір старого типу (без Майстерні) лишається з повним дашбордом на Огляді.
Кожен блок гейтиться секцією: при вимкненому «Читанні» блок прогонів зникає, а не показує нулі — нуль прочитаних сторінок там, де читання вимкнено, означав би «нічого не прочитано» замість «питання не стояло».
Час у дашборді — це ДВІ різні осі¶
Плутати їх дорого, тому вони й намальовані по-різному:
- сходинки («У часі») — дні, коли ми про щось дізнались. Джерело —
data/derived/history.jsonl(core.history), і він записує спостереження, а не кожну зміну: дірка в лінії — це дні без спостережень. Ліва частина кривої — пунктир: вона відновлена з міток на диску (мети прогонів, дати заміток ока, git-історія канону), тобто реконструкція, а не замір. - стовпчики («Факти за десятиліттями подій») — роки самих подій у каноні. Це відповідь на «який період роду вже описано», і до темпу роботи вона стосунку не має.
🎯 Рід — єдине, чого застосунок не може вгадати¶
Прізвище, парадигма й написання по орфографіях приходять від ЛЮДИНИ. Вивести їх нема з чого: рос. «Лищин» → укр. «Ліщин» міняє першу «и», але не «и» в закінченні, і позиція залежить від історії слова, а не від правила. Вгадана основа мовчки викидає половину написань із пошуку — і нуль після цього виглядає як відповідь.
⚠ Чого профіль НЕ робить: не підставляє чуже прізвище замість вашого. q у
пошуку обов'язкове, дефолтного прізвища в пакеті немає ніде. Ціна відсутнього
профілю тихіша: усі написання доводиться пригадувати самому, а рушій
калічить саме середину слова.
🔴 Форма знає п'ять полів, файл — одинадцять. Конфузери, зниження рангу, рецепт синтетики й якорі калібруються замірами на власному матеріалі, тож живуть текстом під «весь файл». І тому ж форма відмовляється правити профіль, у якому вона зачепила б щось поза цими п'ятьма полями або коментарі поруч із ними: у коментарях там і лежать заміри, а дамп їх не переносить — файл лишився б валідним, і втрата була б тихою.
Три реєстри й один ключ¶
Три з цих екранів — реєстри, і всі три тримаються на одному ключі
архів/фонд/опис/справа (наприклад DAHMO/315/1/8433):
🏛 Описи фондів що існує в архіві 12 822 справи ф.315
│ рядок опису
│ ⬇ узяти ↓
📚 Бібліотека що є на диску 94 із них у нас
│ тека справи
│ 🖋 читати ↓
📜 Прогони що прочитано машиною два голоси, 412 сторінок
Ключ спільний, а сховища роздільні — і це рішення, а не недогляд. Реєстр опису не вливається в реєстр справ: 29 634 рядки без жодного кадру зіпсували б там кожен знаменник, і «прочитано 5%» стосувалося б книг, яких ніхто не бачив.
Нові теки стоять збоку від цієї трійки: у них матеріал без шифри,
тобто без ключа. Поки тека не описана, вона невидима для бібліотеки, а отже й
для всього далі — прогін по ній не прив'яжеться до справи. Теки згруповано за
першою текою під коренем справ («звідки матеріал»), і дій три: «Аркуші»,
«Описати» (форма опису — крок цього екрана, окремої вкладки в неї немає) і
«Не справа» — книгу, газету, опис фонду, яким шифри справи не буде,
відкладено в ручні рішення реєстру (overrides.json, розділ set_aside;
intake.aside), і вони стоять унизу згорнуто з «Повернути». Збірок
(kind=bundle) тут немає: це вже описані групування з прогонами.
Наскрізний шлях¶
Кожен крок веде кнопкою; жоден не вимагає набирати шифру руками.
- 🗺 Газетир — «де метрики Липовенького». Картка села перелічує справи по всіх фондах архіву й позначає ті, що вже на диску.
- 🏛 Описи фондів — «а що ще є в цьому фонді». У рядку: ⬇ узяти в роботу, 📚 показати в бібліотеці.
- 📚 Бібліотека — «що я маю». У рядку: 🖼 аркуші, 🖋 читати, 📜 прогони, 🔎 шукати в межах справи, 🏛 назад в опис.
- 🖋 Читання — прогін рушієм. План (скільки кадрів, яке письмо, яка модель) показується до запуску: справа читається годинами.
- 📜 Прогони — «чим і наскільки прочитано». Окремим блоком — прогони без справи, з кнопкою прив'язати.
- 📄 Гортач — текст поруч зі сканом, рамка рядка, другий голос.
- 🔎 Пошук (Основа) → Розбір → 👁 Облік: кандидат, кроп, вердикт ока.
Пошук у консолі — твоя ж команда¶
Вкладка «Пошук» (у «Основі», тобто в кожному пресеті) шукає в прочитаному
машиною тією самою text.find, що й ти (nysh text find): та сама межа,
канали роду, журнал знаменника, самоперевірка, поріг 78. Консоль лише шле її
роботою в черзі (search.find) — з поступом і кнопкою спинити. Людина набирає
два поля: «Що» (підказки — написання роду з профілю й недавні запити; шукати
можна й село чи будь-яке слово) і «Де» (підказки search.scopes — фонди,
описи й справи, у яких є прочитане). Рід береться з профілю сам, канали імен і
запису вмикаються самі, коли межа — одна справа, а запит — рід. Виписане оком
і розібрані записи шукаються як і раніше, search.run.
Якщо людина питає «чому консоль знайшла інше, ніж ти» — спершу звір межу й поріг: команда одна, тож розбіжність означає різні аргументи.
| що шукаємо | скільки триває |
|---|---|
| у межах однієї справи | секунди |
| по фонду чи опису (~100 справ) | пів хвилини; поступ «справи серії i із n» |
| по всьому прочитаному | хвилини, якщо цей запит ще не шукали; повтор — секунди |
Різниця не в тому, ЩО робиться, а скільки. Щоб друге взагалі стало можливим,
прочитане лежить у текстовому сторі (data/derived/text_store.sqlite або тека
з поля text_store маркера, той самий, що в nysh text …); простір без стору шукає старим погонним індексом
(data/derived/decode_index/). Обидва — похідне, їх можна видалити будь-коли.
🔴 Пошук чеше лише зібране, і каже, скільки лишилось поза ним. «Не знайшлось у 876 прогонах із 1159» і «не знайшлось у 1159» — різні відповіді, і за другою закривають напрям, якого не перевіряли. Стан індексу видно на екрані пошуку до запиту, а не застереженням після нього.
Стан на екрані — того індексу, яким пошук справді шукає (search.state,
поле backend). Щойно дочитана справа потрапляє в нього сама: бюджет — два
десятки прогонів, рівно стільки, скільки з'являється після звичайного читання.
Решта — кнопкою «Зібрати індекс» (search.index: лише відсутні прогони, під
кнопкою — оцінка часу з темпу самої роботи) або nysh text index --case
<справа>. Перебудова правил склейки всього корпусу — nysh text index
--rebuild, години, і кнопкою її не роблять.
Що робити, коли екран порожній¶
Порожній екран у Нишпорці завжди каже, чого саме бракує і чим це ставиться. Три найчастіші випадки:
- Описи фондів порожні — реєстр опису не зібраний, а не фондів немає.
Збирання є на самому екрані (🧾) або командою
nysh registry collect, потімnysh registry merge— два кроки, і другий не необов'язковий: обхід кладе свій файл окремо, а реєстр з'являється аж після злиття. - Каталоги нічого не знаходять — подивіться на таблицю джерел під полем пошуку. Джерело, що вміє шукати й не має каталогу, названо там поіменно разом із командою, якою це лікується.
- Бібліотека порожня, а справи на диску є — реєстр не збирали
(
nysh cases build), або теки лежать без шифри й видимі в Нових теках.
Частини застосунку¶
Екрани згруповані в секції, і секцію можна вимкнути цілком (⚙ → «Частини застосунку»). Вимкнена секція зникає з шапки, а її дії відмовляють і в браузері, і в командному рядку, і в агента — напівстан («кнопки немає, але команда працює») читається як несправність.
| секція | екрани | навіщо вимикати |
|---|---|---|
| Основа | Огляд · Пошук · Рід · Нові теки · Роботи · Супряга | не можна: без неї немає застосунку |
| Матеріали | Каталоги · Газетир · Описи фондів · Бібліотека · Аркуші | якщо працюєте лише з готовим декодом |
| Читання | Читання · Прогони · Хмара · Гортач | якщо рушіїв на машині немає (економить ~2.5 ГБ) |
| Дослідження | Розбір · Око · Експорт · Канон · Гіпотези · Дослідження · Історія · Сайт | якщо кандидатів оком ще не розбираєте |
Готові набори — catalog, amateur, researcher, lab; вибираються в
майстрі першого запуску й міняються будь-коли.
🧪 Лабораторія — набори й розмітка¶
Секція lab вмикається профілем (nysh sections enable lab) і додає два
екрани, обидва про мітки для навчання Писаря.
Набори відповідають на питання «що в мене є для розмітки й у якому стані»,
і числа беруться з диска: скільки кропів лежить, скільки міток у
lines.jsonl, скільки рядків зведено арбітрами (high/med/low). Тут же
форми на довгі роботи: нарізати кропи з прогону, додати другий голос, поповнити
словник справи, зробити завдання арбітрам і забрати відповіді — з воротами у
застереженнях.
Розмітка — одна дія людини: подивитись на смужку й написати те, що на ній.
Черга йде від рядків, де голоси рушія розійшлись, блоками з різних сторінок;
порожні смужки сховані. Клавіатура на ПК: Enter зберегти · Tab пропуск ·
Shift+Enter непевно · Ctrl+Enter взяти чернетку · Esc назад ·
PageUp/Down зум · Alt+P сторінка з рамкою · Alt+E/T/I/F — ѣ ъ і ѳ. На
телефоні — великі кнопки внизу й свайп по смужці (вправо зберегти, вліво
пропустити). Слова чернетки, яких немає в жодному голосі рушія, підсвічені
червоним: це домисел арбітра, і його дивляться на кропі, а не приймають одним
Enter.