Перенос дизайна в server-rendered веб-UI (web-ui)
Новая capability web-ui: презентационный перенос готового дизайна
(семантический HTML + единый jellybit.css, тёмная тема по настройке ОС)
в html/template без шага сборки.
- Встроенная (go:embed) отдача статики под /static с Cache-Control и
cache-busting (?v=<hash> по содержимому css/js).
- Шрифты IBM Plex self-hosted (@font-face, cyrillic+latin), без CDN.
- Наколеночный менеджер зависимостей: вендор (htmx + шрифты) не хранится
в репо (gitignore), идемпотентно добывается `task assets` по
web/assets.manifest с проверкой sha256; task build/run зависят от assets.
- Общие партиалы: шапка, бейдж статуса (карта всех 14 состояний),
виджет «файл источника → раскладка» (общий для review и download).
- Страницы: список с фильтром/поиском, ревью, новая страница просмотра
загрузки (/download/{id}). deleted скрыт по умолчанию.
- Превью раскладки берётся из единой логики internal/layout
(buildFileRows), без дублирования правил имён в шаблонах.
- Убраны meta-refresh и инлайн-стили; copyHash на vanilla с fallback
на execCommand и честной индикацией (целевой деплой — HTTP LAN).
Вне scope (отдельный change): живые обновления прогресса и раздел
раздачи, клиентский режим ручной раскладки файл→серия (с Alpine.js).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -20,11 +20,13 @@ tasks:
|
||||
|
||||
run:
|
||||
desc: 'Локальный запуск (нужен ./config.toml с db_path -> ./jellybit.db)'
|
||||
deps: [assets]
|
||||
cmds:
|
||||
- go run {{.PKG}} --config ./config.toml
|
||||
|
||||
build:
|
||||
desc: Статический бинарь linux/amd64 для сервера (Intel N150)
|
||||
deps: [assets]
|
||||
cmds:
|
||||
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' -o {{.BINARY}} {{.PKG}}
|
||||
|
||||
@@ -43,6 +45,25 @@ tasks:
|
||||
cmds:
|
||||
- go mod tidy
|
||||
|
||||
assets:
|
||||
desc: 'Идемпотентный фетч вендорных ассетов в web/static/vendor (по web/assets.manifest, проверка sha256; Node не нужен)'
|
||||
cmds:
|
||||
- |
|
||||
set -e
|
||||
while IFS= read -r line; do
|
||||
case "$line" in ''|\#*) continue;; esac
|
||||
set -- $line
|
||||
dest=$1; url=$2; sum=$3
|
||||
file="web/static/$dest"
|
||||
if [ -f "$file" ] && echo "$sum $file" | sha256sum -c --status - 2>/dev/null; then
|
||||
continue
|
||||
fi
|
||||
mkdir -p "$(dirname "$file")"
|
||||
echo "↓ $dest"
|
||||
curl -fsSL --retry 3 -o "$file" "$url"
|
||||
echo "$sum $file" | sha256sum -c -
|
||||
done < web/assets.manifest
|
||||
|
||||
image:
|
||||
desc: Docker-образ из готового бинаря (см. docs/adr docker-deploy)
|
||||
deps: [build]
|
||||
|
||||
Reference in New Issue
Block a user