-
e1f2f44365
fix(max): migrate to platform-api2.max.ru + Russian Trusted CA bundle
main
Alexey Pavlov
2026-06-24 15:43:21 +03:00
-
90f6b474a1
fix(autogen): remove sort_order from ORDER BY — column doesn't exist in autogen_settings
Aleksei Pavlov
2026-06-23 10:11:51 +03:00
-
1f25adff00
feat(autogen): ротация 4 из 8 категорий по дням
Aleksei Pavlov
2026-06-21 21:55:32 +03:00
-
174c3a17c1
feat(autogen): next_topic в статусе — следующая тема для каждой категории
Aleksei Pavlov
2026-06-21 21:38:12 +03:00
-
1ced06fa2d
fix(autogen): pg_advisory_lock + catch-up + double-check after lock
Aleksei Pavlov
2026-06-21 21:30:06 +03:00
-
630287f02f
feat(autogen/queue): queue = черновики сегодня (планируется завтра)
Aleksei Pavlov
2026-06-21 21:17:09 +03:00
-
f40bb27953
fix(autogen/status): показываем topic_count_free/total из blog_topics
Aleksei Pavlov
2026-06-21 21:08:29 +03:00
-
48e0bae495
fix(autogen/topics): endpoint читает из blog_topics БД вместо хардкода TOPIC_BANK
Aleksei Pavlov
2026-06-21 21:00:08 +03:00
-
45c3f2b562
fix(blog-topics): ai.chat returns object not string — extract .text before .replace
Aleksei Pavlov
2026-06-21 20:57:28 +03:00
-
c920d3bcd5
fix(autogen): атомарный захват темы — исключает дубли статей
Aleksei Pavlov
2026-06-21 16:47:49 +03:00
-
214bf307c7
fix(draftAutoApprove): строго вчерашние черновики, LIMIT 4, не больше слотов
Aleksei Pavlov
2026-06-21 16:42:37 +03:00
-
799816f66a
fix(drafts): авто-одобрение только вчерашних черновиков → слоты сегодняшнего дня
Aleksei Pavlov
2026-06-21 16:36:47 +03:00
-
749d717a94
feat(publish): синхрон сайт/ТГ + защита от залпа + заметки Зеро по механике черновиков
Aleksei Pavlov
2026-06-20 11:07:10 +03:00
-
a09ee4a5fb
refactor(tg): единый модуль tgSend для всех публикаций в Telegram
Aleksei Pavlov
2026-06-20 10:43:50 +03:00
-
325ebe7759
fix(zero): back to multipart photo upload (engine now has uploads volume)
Aleksei Pavlov
2026-06-20 10:26:13 +03:00
-
bdff84e579
feat(articles): drip scheduling — distribute published_at across day slots
Aleksei Pavlov
2026-06-19 13:01:36 +03:00
-
b02bdba4e6
fix(zero): URL-mode photo sending + static AVAILABLE_POSES (no fs check)
Aleksei Pavlov
2026-06-19 12:17:53 +03:00
-
7b115deaa1
feat(blog-topics): PATCH endpoint + soften requireAdmin + dynamic category name
Aleksei Pavlov
2026-06-19 12:05:04 +03:00
-
59e604a67b
feat(categories): CRUD endpoints + is_active for archiving
Aleksei Pavlov
2026-06-19 11:55:04 +03:00
-
2f7af84ddc
fix(zero): add missing 'settings' require in scheduler
Aleksei Pavlov
2026-06-19 11:19:24 +03:00
-
4ffadc6baa
feat(zero): /config endpoints + dynamic scheduler hours
Aleksei Pavlov
2026-06-19 11:16:58 +03:00
-
29788a8f9d
feat(zero): Zero notes — AI persona for @zeropostru daily posts
Aleksei Pavlov
2026-06-19 10:52:22 +03:00
-
5b5f703078
fix: avoid repeating last 3 rubrics in cover selection (no more similar covers)
Nik (Claude)
2026-06-19 01:09:52 +03:00
-
eca072a172
fix: start autogen scheduler in index.js (was missing, drafts never generated)
Nik (Claude)
2026-06-19 00:55:48 +03:00
-
707047a7af
fix: scheduleForArticle picks unique slots, no collisions
Nik (Claude)
2026-06-18 12:25:09 +03:00
-
08a2628824
feat: add Dockerfile for Coolify deployment (volumes support)
Nik (Claude)
2026-06-18 12:12:32 +03:00
-
efe85632f5
fix: use .png instead of .webp for Telegram photo URL
Nik (Claude)
2026-06-17 09:27:25 +03:00
-
c147c9e839
fix: start scheduledPostsRunner in index.js
Nik (Claude)
2026-06-17 09:06:28 +03:00
-
dccb662298
fix: move approve-all before /:id routes to prevent NaN routing conflict
Nik (Claude)
2026-06-16 23:11:14 +03:00
-
f9d1deae58
fix: initialize usedPath in covers.js to prevent ReferenceError
Nik (Claude)
2026-06-16 22:58:28 +03:00
-
0a842476d7
fix: reduce article maxTokens 4000→3000 to avoid 400 on aiprimetech
Nik (Claude)
2026-06-16 22:08:44 +03:00
-
e5965e2804
feat: POST /api/articles/:id/regenerate-cover for any status
Nik (Claude)
2026-06-16 22:02:34 +03:00
-
d9cbbc5fbf
fix: button always shows DEFAULT_BUTTON_TEXT when field is null/empty
Nik (Claude)
2026-06-16 21:14:57 +03:00
-
5852b9f439
feat: draft review flow — autogen→draft, auto-approve 07:00 MSK, /api/drafts routes
Nik (Claude)
2026-06-16 09:17:10 +03:00
-
cd471d67a9
add start script for Coolify nixpacks
Nik (Claude)
2026-06-15 22:44:05 +03:00
-
bede92a520
feat: post image diversity — style rotation + random scene/concept + expanded AI concepts bank
Alexey Pavlov
2026-06-15 10:20:22 +03:00
-
525870c709
chore: add full schema dump as source of truth (32 tables)
Nik (Claude)
2026-06-15 09:28:13 +03:00
-
31b31b75b8
fix: post images diversity — SUBJECT+SETTING+LIGHTING prompt
Ник (Claude)
2026-06-14 15:13:20 +03:00
-
c40ef90ad1
feat: SMTP, maintenance mode, blog topic bank UI
Ник (Claude)
2026-06-13 11:45:23 +03:00
-
9b40f2cd7a
feat: content defaults — applied on channel creation
Ник (Claude)
2026-06-13 11:22:08 +03:00
-
b5fa77ea01
feat: autogen blog admin API
Ник (Claude)
2026-06-13 10:35:50 +03:00
-
6e1cd24b4e
feat: error logs API
Ник (Claude)
2026-06-13 10:23:24 +03:00
-
7994b0e73c
feat: generation queue admin
Ник (Claude)
2026-06-13 10:13:21 +03:00
-
ce74ac9909
feat: promo codes system
Ник (Claude)
2026-06-13 09:36:32 +03:00
-
2360e1f7ae
fix: cover images — simplified coherent prompts, no style conflicts
Ник (Claude)
2026-06-13 09:29:40 +03:00
-
170c7b7b16
fix: cover image variety — concrete metaphors + articleId cycling
Ник (Claude)
2026-06-13 09:26:36 +03:00
-
05fa7644cc
feat: user management — detail view, block/unblock, plan change
Ник (Claude)
2026-06-13 00:14:11 +03:00
-
f18b83c59b
feat: admin dashboard API + separate admin routes file
Ник (Claude)
2026-06-13 00:09:53 +03:00
-
ad9f054701
feat: admin panel — plans editor + credit costs editor
Ник (Claude)
2026-06-13 00:02:03 +03:00
-
2b996820d7
fix: routerai cost_rub was 0 — o?.promptTokens → promptTokens in computeCostRub
Ник (Claude)
2026-06-12 23:56:45 +03:00
-
a8ff295faa
feat: post drafts system — batch generation + daily auto-drafts
Ник (Claude)
2026-06-12 23:47:27 +03:00
-
5a765d27e1
fix: cover image diversity — 12 styles + topic-aware visual metaphors
Ник (Claude)
2026-06-12 22:55:25 +03:00
-
7a70f79e61
fix: duplicate article prevention — source_topic deduplication
Ник (Claude)
2026-06-12 11:49:33 +03:00
-
bbae6c8832
feat: topic bank + channel limit + onboarding
Ник (Claude)
2026-06-11 23:04:45 +03:00
-
10c138aa33
feat: P6 inbox — TG webhook + AI classify + reply
Ник (Claude)
2026-06-11 20:12:19 +03:00
-
ee63172e08
feat: MAX publisher — platform-api.max.ru with image upload
Ник (Claude)
2026-06-11 20:01:50 +03:00
-
6e32241fe8
feat: P7 polls + P8 hashtags
Ник (Claude)
2026-06-11 19:54:31 +03:00
-
0a9d886435
fix: VK photo upload — 2-step getWallUploadServer + saveWallPhoto
Ник (Claude)
2026-06-11 19:45:13 +03:00
-
4580264de9
feat: yukassa reads keys from app_settings + monthly reset endpoint
Ник (Claude)
2026-06-11 19:40:10 +03:00
-
9baa0f0959
feat: YuKassa payment integration
Ник (Claude)
2026-06-11 18:44:20 +03:00
-
2e60a6e316
feat: billing system — credits, plans, transactions
Ник (Claude)
2026-06-11 18:26:38 +03:00
-
eede50bee7
fix: ROUTERAI_API_KEY not loaded from app_settings
Ник (Claude)
2026-06-11 16:36:56 +03:00
-
fe7af0b3b5
refactor: single image provider — routerai gpt-5-image-mini only
Ник (Claude)
2026-06-11 15:44:33 +03:00
-
08086650fc
feat: customPrompt piped through full generation chain
Ник (Claude)
2026-06-11 15:15:22 +03:00
-
1ef770b5fc
feat: custom prompt for articles + HD image quality per channel
Ник (Claude)
2026-06-11 15:11:18 +03:00
-
e6c192e806
feat: image quality param — low for posts, medium for article covers
Ник (Claude)
2026-06-11 14:48:10 +03:00
-
06ab7e0c1d
feat: routerai as primary image provider, Nyxos as fallback
Ник (Claude)
2026-06-11 13:20:52 +03:00
-
2a61cc08c2
feat: RouterAI as 3rd image fallback via /responses + image_generation
Ник (Claude)
2026-06-11 13:13:31 +03:00
-
8e1b6e8cda
fix: reduce image provider timeout 120s→45s for faster fallback
Ник (Claude)
2026-06-11 12:57:26 +03:00
-
c7f0b3ed4d
fix: getChannel arg order, postImages via Nyxos /images/generations
Ник (Claude)
2026-06-10 17:45:18 +03:00
-
80d1885feb
feat: multi-style support in covers.js and postImages.js
Ник (Claude)
2026-06-10 15:50:49 +03:00
-
b4c537487d
feat: vk_access_token в updateable fields
Ник (Claude)
2026-06-10 15:22:45 +03:00
-
be2735ea5e
feat: delay post if SVG cover, retry up to 3×15min
Ник (Claude)
2026-06-10 13:32:47 +03:00
-
e79693c29a
fix: check cover size before Telegram publish, regen SVG stubs
Ник (Claude)
2026-06-10 13:07:15 +03:00
-
d1e6e2ef4a
feat: Nyxos Plus as primary image provider, aiguoguo as fallback
Ник (Claude)
2026-06-10 09:55:32 +03:00
-
bcb6583883
feat: upgrade to gpt-image-2, switch to response_format=url
Ник (Claude)
2026-06-10 08:55:39 +03:00
-
d8a901131c
feat: auto-retry SVG covers every 30 min
Ник (Claude)
2026-06-10 08:53:39 +03:00
-
ad133027d0
fix: styleName undefined when rubrics used in generateCover
Ник (Claude)
2026-06-09 11:39:57 +03:00
-
5576665c02
feat: image rubrics with AI selection for cover variety
Ник (Claude)
2026-06-09 11:36:19 +03:00
-
b2d20b9646
fix: retry aiguoguo /images/generations once on 5xx (12s delay)
Ник (Claude)
2026-06-09 11:21:57 +03:00
-
4ddc57c471
fix: wrong API key for aiprimetech image endpoints
Ник (Claude)
2026-06-09 11:17:16 +03:00
-
95578af261
feat: channel image style settings wired to cover/post generation
Ник (Claude)
2026-06-09 10:48:38 +03:00
-
449d1fa728
AI config migration to app_settings + ai_usage logging
Ник (Claude)
2026-06-08 20:21:04 +03:00
-
594cc01fe6
fix(calendar): broken SQL placeholder crashed /api/calendar; include system channels' scheduled_posts
aleksei
2026-06-08 16:32:37 +03:00
-
0c01ed7e62
fix: image generation via aiguoguo199.com /images/generations
Nik (Claude)
2026-06-08 16:21:43 +03:00
-
1df24a8655
fix: calendar shows only user's own channels, not system blog channel
Nik (Claude)
2026-06-08 15:28:17 +03:00
-
771f964370
feat: P4 metrics collector + /api/metrics; P5 from-url generator (cheerio)
Nik (Claude)
2026-06-08 11:08:59 +03:00
-
008323fa74
feat: /api/calendar endpoint (user_posts + scheduled_posts)
Nik (Claude)
2026-06-08 10:16:49 +03:00
-
a370b8f7d8
feat: Зеро-персонаж, auto-publish, auto-series, channel-stats, fallback covers
Nik (Claude)
2026-06-07 14:03:56 +03:00
-
8968eed3e0
feat: rewrite article prompt for natural Russian, add editor pass (2-stage generation)
Alexey Pavlov
2026-06-01 09:19:00 +03:00
-
d054023a55
feat: user_posts service — draft/scheduled/published, Telegram publish with image, cron-driven scheduled publication
Alexey Pavlov
2026-05-31 17:36:01 +03:00
-
2137a92b28
feat: transformPost (7 actions), post image generation with style/palette, topics ideas endpoint
Alexey Pavlov
2026-05-31 17:32:38 +03:00
-
53d596ca2e
fix: move /admin and /id/:id routes before /:slug to avoid Express catch-all conflict
Alexey Pavlov
2026-05-31 16:49:11 +03:00
-
213dc104f5
feat: autogen run_hour/run_minute, publish_slots, scheduled_posts tables and routes
Alexey Pavlov
2026-05-31 16:45:15 +03:00
-
c1d5337680
fix: jsonb tag filter operator ?? -> ?
Alexey Pavlov
2026-05-31 16:38:48 +03:00
-
3372574b32
feat: autogen service — content_queue, autogen_settings, TOPIC_BANK, cron API
Alexey Pavlov
2026-05-31 14:48:38 +03:00
-
e5e7e9ef98
feat: categories table, API, category field in articles
Alexey Pavlov
2026-05-31 14:43:27 +03:00
-
b48c1854a2
feat: admin channels API — system channels, publish to TG/VK/Max
Alexey Pavlov
2026-05-31 14:37:48 +03:00
-
d17d8334a8
feat: GET /api/articles/admin — all articles with status for admin panel
Alexey Pavlov
2026-05-31 14:32:48 +03:00
-
004e94db77
feat: PATCH/DELETE /api/articles/:id, GET /api/articles/id/:id
Alexey Pavlov
2026-05-31 14:17:59 +03:00