Skip to content

Группы заготовок: одно имя, несколько значений - #50

Open
GeorgeSGN wants to merge 3 commits into
akalikbergenov:mainfrom
GeorgeSGN:feat/snippet-groups
Open

Группы заготовок: одно имя, несколько значений#50
GeorgeSGN wants to merge 3 commits into
akalikbergenov:mainfrom
GeorgeSGN:feat/snippet-groups

Conversation

@GeorgeSGN

@GeorgeSGN GeorgeSGN commented Aug 17, 2026

Copy link
Copy Markdown

Логин и пароль от одного стенда — две отдельные заготовки, и в списке они расходятся, стоит добавить что-нибудь между ними. Группа держит их вместе под одним именем.

Группа заготовок

Это не папка, которая открывается. Всё, что в группе, видно сразу: пара «логин — пароль» затем и нужна, чтобы взять её целиком, а не разворачивать по клику. Сворачивание появляется, только когда строк больше трёх — иначе одна группа съест панель, в которой помещается пять.

Каждая строка внутри копируется своим кликом, правится двойным, удаляется крестиком и двигается стрелками внутри группы. Заголовок двигает группу целиком, двойной клик по нему переименовывает, плюс по наведению добавляет строку. Удаление последней строки убирает и группу: имя без содержимого ничего не значит.

Скрытие работает по строкам, а не по группе — пароль прячется отдельно от логина, и раскрыть один можно, не раскрывая второй. Имя группы видно всегда, иначе список закрытых групп превращается в список одинаковых пятен.

Группа создаётся сразу с первой строкой — пустых групп не бывает.

Файл

Формат остаётся тем же, каким его читают и правят руками: группа — это запись с items вместо text.

[
  { "label": "почта", "text": "george@example.com" },
  { "label": "prod", "items": [
      { "label": "login", "text": "..." },
      { "label": "password", "text": "..." }
  ]}
]

Запись без items — обычная заготовка, так что существующие файлы читаются как есть и переносить ничего не надо. Вложенность одна: если написать глубже руками, лишнее расплющится при чтении — рисовать группу внутри группы в панели высотой в пять строк не во что.

Поиск заглядывает внутрь групп: «password» находит группу, которая его держит, а не только строки верхнего уровня.

Идут поверх #47 и #49 — правка строк внутри группы это та же правка на месте, что и снаружи. Если те будут смержены, здесь останется один коммит.

@ispy4you

Copy link
Copy Markdown
Contributor

В rename() индекс группы вычисляется до items.removeAll { $0.id == "group\u{0}\(name)" } и не пересчитывается после. Если новое имя совпадает с уже существующей группой, стоящей раньше в списке, а переименовываемая группа не последняя — items[at] попадёт не туда и перезапишет соседнюю запись.

@akalikbergenov

Copy link
Copy Markdown
Owner

Сборка теперь запускается — и сразу поймала то, из-за чего этот PR красный:

Resources/en.lproj/Localizable.strings: нет ключей: ['Add a group', 'Group']
Resources/ru.lproj/Localizable.strings: нет ключей: ['Add a group', 'Group']

Строка без ключа сборку не ломает — она просто покажется по-английски тому, у кого выбран русский.
Добавь оба ключа в обе таблицы, и будет зелено.

Второе: #47 и #49 уже в main, так что перебазируй на свежий main — PR схлопнется до одного
коммита про группы, и разбирать станет заметно проще. Кстати, про такие стопки веток одна от
другой теперь написано в CONTRIBUTING.md (#57): ветку лучше брать от main, иначе один и тот же
диф приходится смотреть трижды.

@ispy4you

Copy link
Copy Markdown
Contributor

@GeorgeSGN, прогон на этом PR упал, и, судя по датам, ты об этом мог не узнать — сборка запустилась только 23-го, через шесть дней после отправки.

Падает последний шаг, проверка ключей перевода. Не хватает двух:

Add a group
Group

Их надо завести в обоих файлах — Resources/en.lproj/Localizable.strings и Resources/ru.lproj/Localizable.strings. Строка без ключа сборку сама по себе не ломает, она просто покажется по-английски тому, у кого выбран русский, — поэтому CI и ловит это отдельным шагом.

Прогнать у себя можно тем же скриптом, он прямо в .github/workflows/build.yml, последним шагом.

Плюс ветку надо перебазировать на свежий main — сегодня туда уехали панели на все дисплеи и твои же #47 и #49, так что заготовки трогали.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants