# 2026-09-16

## Perbaiki design carousel StudioSoft (hc37 healthcare) — 12:53 WIB

Bos kirim link post Threads @studiosoft.id
(`/post/DdVKf3Yk73V`, carousel healthcare "Konten Edukasi Kesehatan",
tayang 09:00 WIB hari ini) + perintah: **"Perbaiki design ini"**.

**Diagnosa (dari 5 slide yang saya unduh lewat r.jina.ai + vision):**
1. Isi slide nempel ke atas → void/space kosong besar di bawah (slide 1, 2, 4, 5).
2. Slide 2 & 3 tingginya melebihi kanvas → teks hampir/benar-benar nabrak footer.
3. Ada hiasan garis putus-putus (`tick_deco`, "-----") di slide 1/2/5 — keluar dari
   standar yang Bos fix 16 Sep (tanpa separator garis).
4. Ukuran judul campur dalam satu judul (100/95/85) → tidak rata.
5. Indent bullet beda antar slide (M+45 vs M+55); skala huruf tak konsisten (B40 vs SB32).
6. Tidak ada auto-fit: tiap slide pakai `y` hardcode.

**Yang dikerjakan:**
- Bikin engine baru `ss_carousel_lib.py` (workspace Atun): blok dikumpulkan dulu →
  diukur → digambar **terpusat vertikal** (area 150–1220), rata kiri, hanging indent
  bullet, TANPA garis, auto-fit (`air` 1.0→0.5 lalu `shrink` huruf 1.0→0.76).
- PITFALL penting: line advance **wajib** `size+8` (judul) / `size+12` (body), BUKAN
  `font.getmetrics()` — Poppins metrics = 1.41×size → kendur & overflow ke footer.
  Revisi pertama saya kena ini, slide 2 nabrak footer, lalu dibetulkan.
- `studiosoft_hc37_carousel_gen.py` di-refactor pakai engine (isi teks TIDAK diubah).
  Output baru: `studiosoft_hc37_carousel_fixed/` (5 PNG 1080×1350).
- Semua slide render `air=1.00 shrink=1.00` (muat dengan spasi penuh): sisa 117–473 px.
- Preview 5 slide dikirim ke Bos. `openclaw-img/ss_hc37_edukasi_*.jpg` BELUM ditimpa
  (nunggu Bos setuju).
- Catatan skill: `atun-social-automation` SKILL.md sudah >100k char sehingga patch
  ditolak → standar carousel disimpan di `references/carousel-standar.md`.
  SKILL.md perlu di-split sebelum bisa di-patch lagi.

**Warna background (lanjutan 16 Sep):** Bos minta "ganti warna background menjadi Biru
Tua". Ditawari 2 varian → **Bos pilih `#122B63`** (lebih gelap) daripada `#1E40AF`.
Jadi `#122B63` = warna baku carousel SS sekarang; `#1E40AF` & `#0D4761` jadi arsip.
Final: 5 slide dirender ulang, semua `air=1.00 shrink=1.00`, bg terverifikasi
`(18, 43, 99)`. `openclaw-img/ss_hc37_edukasi_*.jpg` tetap BELUM ditimpa (nunggu Bos
putuskan mau repost atau dipakai untuk carousel berikutnya).

**Status jadwal:** SS Threads tidak punya carousel/image di depan (116 jadwal future
semuanya text) → perbaikan ini untuk carousel berikutnya.

## Lanjutan: perintah warna #122B63 ke semua kartu Threads + rebuild album (16 Sep, sore)

Bos: *"semua versi warna navy #0D4761 dan #1E40AF ganti dengan #122B63 — ini untuk threads
dan LinkedIn; warna background ya"* + *"kalau ada yang bergantian pakai background putih,
text #122B63"* + *"pastikan layout pakai yang baru ini"*.

**Audit dulu** (`detect_navy_bg.py`): kumpulkan semua media jadwal pending di scope
Threads/LinkedIn, sampling warna sudut → ketemu 41 file yang masih navy lama.
LinkedIn: **tidak ada gambar terjadwal** (semua text-only) → tidak ada yang diswap.

**Dikerjakan:**
- `gen_uky_center.py`: `BLUE` & `BLUE_TEXT` → (18,43,99). Rerender 71 file master.
- `gen_ss_cards.py batch`: rerender 71 file (ss_threads_images + ss_quote_cards).
- `swap_media_colors.py --apply` → **45/45 jadwal pending terverifikasi**
  (25 @ukyhandoko Threads → `uky_sq2_*`, 20 StudioSoft Threads → `*_ss2.jpg`).
- 14 album SS (`ss_opt_*`, 56 file) masih desain lama DAN generator aslinya sudah hilang
  dari workspace (legacy juga tidak ada).
  → OCR RapidOCR (`ocr_ssopt.py`) ternyata **membuang spasi** & banyak salah baca,
    jadi teks final diambil lewat **vision pakai composite 2×2** (`make_composites.py`).
  → konten disimpan `ss_album_content.json`, dirender `studiosoft_albums_gen.py`
    (56 slide, semua `air=1.00 shrink=1.00`), swap `swap_albums_colors.py --apply`
    → **14/14 jadwal album terverifikasi** (jadwal 27 Sep–29 Sep).
- `ss_carousel_lib.py` ditambah: `fg`, `dot_color`, auto-fit lebar judul.
- `studiosoft_hc36_carousel_gen.py`: NAVY → #122B63.
- Cron ditanami aturan desain via `hermes cron edit --prompt`:
  `563618b0f31b` (daily-image-posting-all) + `f7e00ade8034` (healthcare-carousel) — diverifikasi
  baca ulang dari `jobs.json`.
- **Verifikasi akhir**: `detect_navy_bg.py` → **0 file** navy lama tersisa di Threads/LinkedIn.

**Belum**: album IG (`SSIGSEP_*`) masih desain lama — di luar scope perintah Bos
(dia bilang Threads & LinkedIn). Perlu keputusan Bos.

## Keputusan Bos: IG TIDAK dihandle (16 Sep)

Bos: *"tidak usah handle IG. IG punya design sendiri"*.

- Album/aset IG (`SSIGSEP_*` dll) **tidak** ikut standar kartu #122B63 Threads/LinkedIn,
  tidak di-rerender/di-swap. Scope desain baru = **Threads + LinkedIn ONLY**.
- Audit 16 Sep aman: swap yang sudah jalan semuanya Threads (25 @ukyhandoko `uky_sq2_*`
  + 20 SS `*_ss2.jpg`) dan 14 album Threads (`ss_opt2_*`) → **tidak ada aset IG tersentuh**,
  tidak perlu rollback.
- Cron `f7e00ade8034` (studiosoft-healthcare-carousel-harian) sudah punya aturan lama
  "JANGAN pasang carousel/tampilan gambar ke Instagram StudioSoft" → konsisten, tidak diubah.


