daily update 2026-03-31

This commit is contained in:
Агальцов Антон
2026-04-01 00:00:56 +03:00
parent b96c893f7d
commit c2cc439fc5
107 changed files with 3714 additions and 65 deletions
+50
View File
@@ -0,0 +1,50 @@
---
title: "31 марта 2026"
date: 2026-03-31
tags: ["system-utils", "opencode", "leadera", "gantt", "canvas", "github", "roadmap"]
---
## Timeline
- **Утро** — Обсуждали аналоги htop: порекомендовал btm, btop, glances. Создан конфиг `~/.config/bottom/bottom.toml`
- **День** — Разбирались со скиллами OpenCode: как работают, автоматический подбор по description
- **День** — Созданы скиллы для Leadera проектов (Go: build-and-fix, restart-api; Angular: build-and-fix)
- **День** — Обсудили миграцию Ганта с DOM на Canvas 2D (Konva.js) — real-time коллаборация, экспорт PDF/PNG, 500+ задач
- **Вечер** — Установлен gh CLI, авторизован как agaltsovav
- **Вечер** — Созданы GitHub Projects: Leadera Roadmap (21 задача, P0P3), agaltsovav.ru Roadmap (7 задач)
## Системные утилиты
- **bottom** (btm) — выбранный мониторинг, конфиг в `~/.config/bottom/bottom.toml`
- Альтернативы: btop, glances
## OpenCode Skills
Созданы скиллы:
- `app-leadera-api/.opencode/skills/build-and-fix/` — сборка Go проекта + автофикс ошибок (до 10 итераций)
- `app-leadera-api/.opencode/skills/restart-api/` — swagger генерация + pm2 restart
- `app-leadera-fe/.opencode/skills/build-and-fix/` — сборка Angular + автофикс
## Gantt Canvas миграция
- Переход с DOM на Canvas 2D через **Konva.js**
- Цели: real-time коллаборация, экспорт PDF/PNG, 500+ задач
- Промт: `GANTT_CANVAS_MIGRATION_PROMPT.md` в app-leadera-fe
## GitHub
- CLI: `gh` авторизован (agaltsovav)
- Репо: app-leadera-fe, app-leadera-api, agaltsovav.ru
- Старые: leadera-fe/leadera-api (на VPS, leadera.ru)
- modece.ru — заброшен, планируется возвращение
## GitHub Projects — Roadmaps
### Leadera Roadmap (project #2) — 21 задача
- **P0:** JWT secret, CORS, bcrypt, ContextRole fallback, RegisterProtectedRoutes
- **P1:** Rate limiting, editor role check, MembersModal rewrite
- **P2:** HttpOnly cookies, CSRF, CSP, password policy, audit log, health-check, CI/CD, Canvas миграция, DnD
- **P3:** Code cleanup, тесты, email verification, поиск
### agaltsovav.ru Roadmap (project #1) — 7 задач
- Редизайн, мобильная версия, мультиязычность, блог, CI/CD, тёмная тема, форма обратной связи
+6
View File
@@ -0,0 +1,6 @@
---
title: "Личный сайт (agaltsovav.ru)"
date: 2026-03-31
tags: ["personal-site", "hugo", "audit"]
weight: 90
---
@@ -0,0 +1,24 @@
---
title: "Бинарный файл в репозитории"
date: 2026-03-31
tags: ["audit", "personal-site"]
---
## Проблема
В корне репозитория лежат два файла, которые не должны быть в git:
- **`Шаблоны для сайта.key`** — Apple Keynote файл (бинарный)
- **`logo.psd`** — Photoshop файл (бинарный)
### Что не так
- Увеличивают размер репозитория
- Git неэффективно хранит бинарные файлы (каждая версия — полностью)
- `.key` файлы могут содержать конфиденциальные данные шаблонов
### Рекомендация
1. Перенести в отдельное хранилище (Google Drive, облако)
2. Удалить из git-истории через `git filter-repo`
3. Добавить в `.gitignore`: `*.key`, `*.psd`, `*.sketch`
@@ -0,0 +1,21 @@
---
title: "Copyright без 2026 года"
date: 2026-03-31
tags: ["audit", "personal-site"]
---
## Проблема
В `params.toml`:
```
copyRight = "Copyright (c) 2020-2025 Антон Агальцов"
```
Сейчас 2026 год — нужно обновить.
### Рекомендация
Обновить на `2020-2026`. Или сделать динамическим через Hugo template:
```
Copyright (c) 2020-{{ now.Year }} Антон Агальцов
```
+24
View File
@@ -0,0 +1,24 @@
---
title: "Digest не обновлялся с февраля 2025"
date: 2026-03-31
tags: ["audit", "personal-site"]
---
## Проблема
Последний дайджест — **февраль 2025**. С тех пор 12+ месяцев без новых выпусков.
### Что есть
- 27 файлов дайджестов (январь 2023 — февраль 2025)
- Автоматизация через `digest.js` — скрипт для генерации
- Но скрипт не запускается автоматически
### Риск
Low — контент устаревает, SEO-позиции падают для страниц дайджестов.
### Рекомендация
1. Настроить cron/CI для ежемесячной генерации дайджеста
2. Или интегрировать с OpenClaw — авто-сборка дайджеста на основе новых публикаций
@@ -0,0 +1,22 @@
---
title: "Устаревший Node.js 16 в Netlify"
date: 2026-03-31
tags: ["audit", "personal-site", "infrastructure"]
severity: high
status: open
---
# Устаревший Node.js 16 в Netlify
**Файл:** `netlify.toml:5`
```
NODE_VERSION = "16.16.0"
```
Node.js 16 вышел из поддержки (EOL) в сентябре 2023. Сборка на Netlify может начать падать или работать некорректно.
**Рекомендация:** Обновить до Node.js 20 LTS:
```toml
NODE_VERSION = "20"
```
+17
View File
@@ -0,0 +1,17 @@
---
title: "Yandex Metrika отключена"
date: 2026-03-31
tags: ["audit", "personal-site"]
---
## Проблема
В `params.toml`: `yandexMetrika = false`
Аналитика с сайта не собирается. Непонятно, есть ли вообще посетители и какие страницы популярны.
### Рекомендация
1. Включить Yandex Metrika или перейти на **Plausible** / **Umami** (privacy-friendly)
2. Если сайт не нуждается в аналитике — оставить как есть
3. Альтернатива: Netlify Analytics (уже встроен в хостинг)
+23
View File
@@ -0,0 +1,23 @@
---
title: "Отсутствуют node_modules — нужна установка"
date: 2026-03-31
tags: ["audit", "personal-site"]
---
## Проблема
`node_modules/` отсутствует — проект нельзя собрать без `npm install`.
### Риск
Low — стандартная ситуация. Но:
- `package-lock.json` привязан к Node 16, а на Mac Studio текущий Node v24
- Могут быть конфликты зависимостей (canvas, babel, postcss)
- Hugo 0.148.2 ставится через `hugo-installer` в npm — может не совпасть с глобальным Hugo
### Рекомендация
1. Убедиться что `npm install` проходит без ошибок на текущем Node
2. Если нет — обновить зависимости или использовать nvm для Node 16
3. Рассмотреть переход на глобальный Hugo вместо `exec-bin`
@@ -0,0 +1,24 @@
---
title: "Hugo Doks 0.5 — сильно устарел"
date: 2026-03-31
tags: ["audit", "personal-site"]
---
## Проблема
Проект использует тему **Hyas/Doks v0.5.0** (package.json). Актуальная версия Doks — **1.x** с полной переработкой архитектуры.
### Что не так
- Doks 0.5 использует устаревший Bootstrap 5.2.0-beta1
- Hugo 0.148.2 в зависимостях — новый, но интеграция с темой старая
- Конфигурация через `theme.toml` — в новых версиях перешли на другой формат
- `exec-bin` для вызова Hugo — устаревший подход, текущие версии Hugo ставятся глобально
### Риск
Medium — работает, но миграция на Doks 1.x потребует значительного рефакторинга layout-ов и конфигурации. Чем дольше откладывать — тем сложнее.
### Рекомендация
Запланировать миграцию на Doks 1.x или перейти на чистый Hugo + Bootstrap без зависимости от темы-фреймворка.
@@ -0,0 +1,26 @@
---
title: "Twitter handle не соответствует имени"
date: 2026-03-31
tags: ["audit", "personal-site"]
---
## Проблема
В `params.toml` указан Twitter: `@AntonTotoshkin`
Но владелец сайта — **Антон Агальцов**. Ники не совпадают.
### Два варианта
1. Это твой старый/другой аккаунт — тогда ок, но стоит указать актуальный
2. Это чужой аккаунт — тогда нужно убрать или исправить
### Затронутые места
- `twitterSite = "@AntonTotoshkin"`
- `schemaAuthorTwitter = "https://twitter.com/AntonTotoshkin"`
- `schemaTwitter = "https://twitter.com/AntonTotoshkin"`
### Рекомендация
Указать актуальный Twitter/X или убрать, если соцсеть не используется.