Skip to content

Settings: git network options, environment mirror/extras, SSL CA fix, new icon - #32

Merged
oustery merged 2 commits into
mainfrom
settings-git-env-improvements
Nov 12, 2026
Merged

oustery merged 2 commits into
mainfrom
settings-git-env-improvements

Conversation

@oustery

@oustery oustery commented Nov 12, 2026

Copy link
Copy Markdown
Owner

Что внутри

1. Настройки → Git: сеть и клонирование

  • Неглубокое клонирование --depth 1 (опционально): быстрее на мобильных сетях, экономит место.
  • Переключатель «Проверять SSL-сертификаты» (по умолчанию включён; при выключении показывается предупреждение) — через новый GitAuth.NetOptions.
  • HTTP-прокси (host:port) для clone/pull/push через -c http.proxy.

2. Настройки → Окружение Linux

  • Зеркало загрузок GitHub (напрямую / через ghproxy.net) для архивов toolset: только транспорт, целостность по-прежнему проверяется digest-пинами.
  • Переменные окружения (KEY=value построчно), применяются ко всем гостевым процессам; некорректные строки пропускаются и считаются в UI; в бэкап не экспортируются.
  • Инфо-строки установленного окружения: версия CLI, Debian, размер.

3. Фикс ошибки клонирования «Problem with the SSL CA cert»
Toolset кладёт файлы сертификатов ca-certificates, но не собирает бандл /etc/ssl/certs/ca-certificates.crt (его делает постинсталл-скрипт пакета, который не запускается при app-side распаковке — ADR-008). Проверено на опубликованном toolset-тарболе: 150 .crt-файлов, /etc/ssl/certs пуст. Новый SslTrust собирает бандл записью файла: при бутстрапе, раз за запуск приложения (для уже установленных окружений) и идемпотентно перед каждой сетевой git-операцией; плюс GIT_SSL_CAINFO/SSL_CERT_FILE для всех гостевых процессов.

4. Экран настроек: кнопки Экспорт/Импорт — во всю ширину столбиком (две длинные подписи в одном ряду сжимались и переносились).

5. Новая иконка приложения — переплетённый коралловый знак (#E07A5F) на тёплом угле (#141413) по бренд-брифу: хрома-маска убирает виньетку генерации, знак вписан в safe-zone 66/108 adaptive-сетке, есть monochrome-слой для themed-иконок Android 13+.

Проверка

  • Все модули компилируются; 148 unit-тестов, 0 провалов (включая новые: SslTrustTest, ToolsetInstallerTest.applyMirror, EnvExtrasParsingTest, GitAuthTest.NetOptions).
  • Строки EN/RU: 362 = 362, все новые ключи в обеих локалях.
  • Регрессий: import/export бэкапа расширён обратно-совместимо; удалённые операции git сохраняют контракт credential-helper (секреты только через окружение).

Иконка-артефакты: мастер-арт и превью (плоский + круглый маск) — в download/icon/.

Z User added 2 commits November 12, 2026 12:21
Settings, three areas at once (they share the store, the screen and the
guest environment wiring):

Git tab — network & cloning:
- Shallow clone (--depth 1) as an opt-in for mobile networks.
- SSL verification toggle for remote operations, on by default; the off
  state shows a warning in the UI. Passed as -c http.sslVerify via the
  new GitAuth.NetOptions, so the per-command hardcode is replaced by a
  configurable default that local operations keep.
- HTTP proxy (host:port) applied to clone/pull/push via -c http.proxy.

Environment tab:
- Download mirror (direct GitHub or ghproxy.net prefix) for the toolset
  archives; integrity is untouched because archives stay digest-pinned
  (ToolsetInstaller.applyMirror routes only github.com release assets).
- User-defined environment variables, one KEY=value per line, merged
  into every guest process (terminal, git, server); invalid lines are
  skipped and counted in the UI. Never exported in the settings backup.
- Installed-environment info rows: CLI version, Debian suite and size.

Backup/restore carries the new non-secret fields (git options, mirror).

SSL CA fix (clone failed with "Problem with the SSL CA cert (path?
access rights?)"): the toolset ships ca-certificates' certificate files
but not the combined /etc/ssl/certs/ca-certificates.crt — that bundle is
generated by the package post-install script, which never runs when
packages are extracted app-side (ADR-008). New SslTrust rebuilds the
bundle as a pure file write: during bootstrap (loud failure if the
toolset carries no certificates), once per app launch for environments
installed before this fix, and idempotently before every network git
operation. GIT_SSL_CAINFO / SSL_CERT_FILE are exported to all guest
processes as belt and suspenders.

Import/export settings actions are stacked full-width: two long labels
shared one row badly on phone widths.

Verified against the published toolset tarball (150 packaged .crt files,
empty /etc/ssl/certs) — the same failure the user hit when cloning.
Replaces the chat-bubble icon per the brand brief: a single symmetrical
interwoven continuous-line mark with rounded caps, soft coral (#E07A5F)
on a solid warm charcoal (#141413) background, flat, no text.

The master art (1024px, generated with the brand prompt) is adapted by
scripts/make_icon.py:
- A chroma mask extracts the mark and removes the generated background
  vignette, so the adaptive background layer is a flat #141413 vector
  and no seams show under any mask shape.
- The mark is scaled to 59.3% of the 108dp grid — inside the 66dp safe
  zone — so circular, squircle and square masks keep the full glyph.
- The monochrome layer (Android 13+ themed icons) is the same silhouette
  flattened to white.

The old vector foreground is replaced by drawable-nodpi PNG layers
(minSdk 26 relies on the adaptive icons only); BootstrapScreen reuses
the same drawable resource name and keeps working.
@oustery
oustery merged commit f4925c4 into main Nov 12, 2026
1 check passed
@oustery
oustery deleted the settings-git-env-improvements branch November 12, 2026 12:22
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.

1 participant