Design note untuk sentuhan visual di README dan terminal (
acca status+ splash). Status: keputusan logo LOCKED (18 Jul) · banner-policy LOCKED → ADR-027 (18 Jul) · web UI = pending, butuh PRD+TRD+ADR sebelum kode. Ini dokumen desain, bukan spec implementasi. Gating banner (§5) kini di-lock ADR-027 → kode splash+inline-badge boleh dimulai (Tier-2).
| Hal | Keputusan | Status |
|---|---|---|
| Wordmark / brand (README, splash) | Opsi 1 — "The Loop" (cc → ∞) |
LOCKED |
Bahasa inline di acca status |
Opsi 3 — "The Gauge" (▓░) |
LOCKED |
| Kapan splash muncul | bukan tiap status — lihat §4 |
LOCKED → ADR-027 |
Gating TTY / NO_COLOR / fallback |
wajib, lihat §5 | LOCKED → ADR-027 |
| Web UI monitor | read-only, localhost, opt-in — lihat §6 | pending → PRD+TRD+ADR |
Rasional: ∞ memikul identitas (auto-continue = kontinuitas), ▓░ memikul data (usage-view yang sudah ada). Keduanya tak bertabrakan — satu untuk brand, satu untuk baris data.
Nama a-c-c-a punya twin-c di tengah. Itu ikon-nya. Semua turunan visual berangkat dari dua c itu.
Makna berlapis cc:
- continue-continue → auto-continue.
- Claude Code (salah satu dari dua CLI yang dijaga).
- dua c saling-punggung = loop tak berujung = sesi tak pernah putus karena limit.
Splash penuh (sekali-muncul; lihat §4 untuk kapan):
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ a ( c∞c ) a · acca ┃
┃ auto-continue cli agent ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
Varian ASCII-only (fallback Windows legacy / NO_COLOR / terminal tanpa glyph):
+-----------------------------+
| a ( c<>c ) a · acca |
| auto-continue cli agent |
+-----------------------------+
Tagline resmi: "never lose a session to a limit."
Satu baris di header README, di atas judul:
a·c∞c·a · acca — usage-aware auto-continue for Claude Code & Antigravity CLI
Satu baris header, TTY-only, memakai ulang bahasa ▓░ yang sudah ada di usage-view:
acca ▓▓▓░░ — auto-continue on reset
Fallback ASCII: acca [###..] — auto-continue on reset.
Prinsip: di status, logo melebur ke bahasa data, bukan blok terpisah. Tak menambah baris multi-line yang merusak pipe/snapshot.
Splash besar cocok untuk momen "kenalan" yang jarang — bukan tiap kali cek status.
| Lokasi | Tampilkan | Alasan |
|---|---|---|
acca (tanpa subcommand) / --help |
Splash penuh (§3.1) | Momen kenalan, jarang |
acca --version |
Splash penuh | idem |
acca daemon saat start |
Splash penuh, sekali | Menandai daemon hidup |
acca status (ada sesi) |
1 baris inline (§3.3), TTY-only | Sering dipakai; jaga pipe-friendly |
acca status (empty-state) |
Boleh splash | Sudah jalur onboarding di kode |
statussering dipanggil & bisa di-pipe/grep→ banner multi-baris = noise.- Output
statusdi-snapshot (test/status-usage.test.ts) & bisa di-scrape → banner di jalur yang sama memaksa update snapshot + merusak parser hilir. - Least-astonishment: identitas dilihat sekali, data dilihat sering.
Aturan ini yang membedakan "sentuhan desain" dari "regresi UX". Di-lock ADR-027 (18 Jul) — implementasi wajib memenuhi semua poin di bawah.
- TTY-only. Warna/banner dicetak hanya bila
process.stdout.isTTY. Di-redirect/pipe → plain, tanpa ANSI, tanpa banner. - Hormati
NO_COLOR. Env standar; bila set → nonaktifkan warna. - Flag escape. Sediakan
--plain/--no-banneruntuk mematikan eksplisit. - ASCII fallback. Glyph non-ASCII harus punya padanan:
∞→<>,▓░→#., box-drawing→+-|. Terminal Windows legacy / locale non-UTF8 tak boleh menampilkan mojibake. - Zero dependency baru. Jangan tarik
chalk/kleur. Cukup helper ANSI kecil (~20 baris) disrc/shared/— sejalan polastripAnsiyang sudah ada +docs/DEPENDENCY-POLICY.md. - Pure-function friendly. Banner/inline-badge dibuat sebagai fungsi pure yang inject
isTTY/noColor(mengikuti polaformatDaemonLiveness(hb, now, isAlive)), supaya unit-testable tanpa TTY nyata dan tak mengganggu snapshot datastatus.
Arsitektur eksisting mendukung dashboard read-only murah: SQLite store, daemon long-running, src/shared/http.ts, dan formatter pure (formatUsageLines, formatResetCell, formatDaemonLiveness) yang tinggal di-serve sebagai JSON.
Arah yang disarankan (semua tunduk ADR sebelum kode):
- Read-only dulu. Konsisten dengan "human-in-the-loop, never autonomous" (ADR-008/013). Aksi kontrol (
resume/cancel) menyusul dengan konfirmasi eksplisit — web tak boleh jadi jalan pintas yang melewati injection-firewall. - Bind
127.0.0.1saja. Data sensitif (transcript path, cwd). Bukan0.0.0.0. Akses LAN ⇒ wajib token + masukdocs/THREAT-MODEL.mdsebagai ingress baru. - Zero-framework.
http.createServerserve satuindex.htmlstatis +GET /api/status(baca repo yang sama). Poll ~5s atau SSE. Tanpa React/build-step. - Opt-in.
acca daemon --webatauacca web, default mati. Port configurable, jangan hardcode. - Isi v1: usage bar dua CLI + reset countdown, daemon liveness, tabel sesi, tail event-log. Mirror
status, auto-refresh. - Visual header: cocok pakai varian "Pulse ∿" (konsep Opsi 2 yang tak dipakai di CLI) — pulse-line yang datar saat idle, spike saat limit-hit/resume.
Modul baru ⇒ butuh PRD+TRD + ADR (port, bind, auth, konsistensi egress/threat-model). Catat sebagai pending decision di docs/CONTEXT.md, jangan dikerjakan sekarang.
Disimpan supaya keputusan bisa di-revisit dengan konteks penuh.
a c c a · acca
╌╌╱╲╌╌╱╲╌╌╌╌ supervisor for long agent runs
Story: heartbeat/monitoring (nyambung ke formatDaemonLiveness). Tak dipakai di CLI karena makna "auto-continue" lebih lemah dari Opsi 1 — dipindah jadi kandidat visual web UI (§6).
a ◖◗ a + [▓▓▓▓▓░░░] — bagus sebagai bahasa data, terlalu generic sebagai wordmark. Karena itu perannya dibatasi ke baris inline status (§3.3), bukan brand utama.
| Tanggal | Perubahan |
|---|---|
| 2026-07-18 | Dokumen dibuat. Logo LOCKED: Opsi 1 wordmark + Opsi 3 inline. Banner-policy & web UI ditandai pending (butuh ADR). |
| 2026-07-18 | Banner-policy (§4 placement + §5 gating) di-LOCK → ADR-027. Kode splash+inline-badge boleh dimulai (Tier-2). Web UI (§6) tetap pending — butuh PRD+TRD+ADR terpisah. |