Skip to content

fix(web): не ломать вёрстку binding-строки длинной ошибкой клона#250

Merged
gently-whitesnow merged 1 commit into
masterfrom
fix/binding-row-error-overflow
Jul 14, 2026
Merged

fix(web): не ломать вёрстку binding-строки длинной ошибкой клона#250
gently-whitesnow merged 1 commit into
masterfrom
fix/binding-row-error-overflow

Conversation

@gently-whitesnow

Copy link
Copy Markdown
Owner

Цель

На карточке repository binding при ошибке клона (clone_status = failed) длинный clone_error — типично stderr с абсолютным путём без пробелов — растягивает левую колонку, из-за чего блок действий с кнопкой «…» уезжает на следующую строку и dropdown выглядит вылезающим за карточку. Меню фактически недоступно для типовых сценариев (Обновить/Удалить сломанного клона).

Изменения

  • RepositoryBindingRow.tsx: у <p> с текстом ошибки заменил break-words на [overflow-wrap:anywhere], добавил line-clamp-3 и title с полным текстом.

Почему именно так

  • break-words (overflow-wrap: break-word) не переносит одиночные длинные токены — путь /Users/.../gently-whitesnow__budget' считается одним «словом». overflow-wrap: anywhere учитывает такие точки разрыва при вычислении min-content, поэтому левая колонка с min-w-0 реально сжимается и justify-between перестаёт скидывать правую колонку на wrap.
  • line-clamp-3 ограничивает высоту, чтобы простыня stderr не занимала пол-экрана; полный текст доступен по hover через title.

Отброшено

  • break-all — рвёт и обычные слова посреди буквы, ухудшает читаемость нормальных сообщений.
  • Фиксированный max-w-* на колонке — привязка к вьюпорту, не решает проблему на узких экранах.

Проверка

  • pnpm typecheck
  • pnpm lint (варнинг в ReviewInlineComposer.tsx — не мой)
  • Ручная проверка: интент с failed binding — карточка не «разъезжается», кнопка «…» доступна, dropdown раскрывается корректно; hover по тексту ошибки показывает полное сообщение.

Решения:
- Заменить `break-words` на `[overflow-wrap:anywhere]` в тексте
  `binding.clone_error`: путь вида `/Users/.../gently-whitesnow__budget'` —
  один нерасщепимый токен, `overflow-wrap: break-word` его не переносит,
  из-за чего левая колонка раздувалась, `justify-between` + `flex-wrap`
  перекидывали блок действий на новую строку, и dropdown «…» вылетал
  за карточку.
- Добавить `line-clamp-3` и `title` с полным текстом — короткая ошибка
  видна сразу, длинный stderr доступен по hover, высота строки не
  зависит от длины ошибки.

Отброшено:
- `break-all` — рвёт и обычные слова посреди буквы; `overflow-wrap:
  anywhere` мягче: сначала пытается по границам, потом где угодно.
- `max-w-*` фиксированной ширины на колонке — ломается при узких
  окнах и делает поведение зависимым от вьюпорта.

Ограничения:
- Полный stderr виден только в native tooltip; если понадобится
  «раскрыть/скопировать» — отдельная задача.
@gently-whitesnow
gently-whitesnow merged commit c4aa493 into master Jul 14, 2026
1 check passed
@gently-whitesnow
gently-whitesnow deleted the fix/binding-row-error-overflow branch July 14, 2026 07:31
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.

2 participants