<!-- markdownlint-disable-file MD013 MD022 MD026 MD032 MD033 MD041 -->

<p align="center">
  <a href="https://github.com/alsyundawy/SparkNotePad">
    <img src="assets/sparknotepad-desktop-banner.jpg" width="100%" alt="SparkNotePad Desktop Suite — Native Scintilla & Qt Text and Source Code Editor for Linux & macOS" />
  </a>
</p>

<p align="center">
  <a href="https://github.com/alsyundawy/SparkNotePad">
    <img src="logo.png" width="128" height="128" alt="SparkNotePad Native macOS & Linux Application Icon" />
  </a>
</p>

<h1 align="center">SparkNotePad</h1>

<p align="center">
  <b>SparkNotePad — editor teks dan kode sumber ringan berbasis Scintilla &amp; Qt untuk Linux dan macOS.</b><br>
  <i>Dibangun dengan Qt 6 dan engine Scintilla 5.6.7 / Lexilla 5.5.4 native untuk performa maksimal dan efisiensi memori tinggi</i>
</p>

<p align="center">
  <a href="README.md"><b>English</b></a> &nbsp;|&nbsp; <b>Bahasa Indonesia</b>
</p>

<p align="center">
  <a href="https://github.com/alsyundawy/SparkNotePad/releases/latest"><img src="https://img.shields.io/badge/Release-v1.3.5-2ea44f?style=for-the-badge&logo=github&logoColor=white" alt="Latest Release v1.3.5"></a>
  <a href="https://apple.com/macos"><img src="https://img.shields.io/badge/Platform-macOS%20Sequoia%20%7C%20Sonoma%20%7C%20Linux-000000?style=for-the-badge&logo=apple&logoColor=white" alt="Supported Platforms"></a>
  <a href="https://isocpp.org"><img src="https://img.shields.io/badge/Standard-ISO%20C%2B%2B20-00599C?style=for-the-badge&logo=c%2B%2B&logoColor=white" alt="C++20 Standard"></a>
  <a href="https://qt.io"><img src="https://img.shields.io/badge/Framework-Qt%206.5%20%7C%206.8%20%7C%206.10%20%7C%206.11-41CD52?style=for-the-badge&logo=qt&logoColor=white" alt="Qt Framework"></a>
  <a href="https://www.scintilla.org"><img src="https://img.shields.io/badge/Engine-Scintilla%205.6.7%20%2B%20Lexilla%205.5.4-8957e5?style=for-the-badge" alt="Scintilla + Lexilla"></a>
  <a href="https://github.com/alsyundawy/SparkNotePad/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-GPL--3.0-blue?style=for-the-badge" alt="GPL-3.0 License"></a>
  <a href="https://github.com/alsyundawy/SparkNotePad/actions"><img src="https://img.shields.io/badge/CI%2FCD-100%25%20Passing-success?style=for-the-badge&logo=githubactions&logoColor=white" alt="CI/CD Status"></a>
</p>

<p align="center">
  <b>SparkNotePad</b> adalah editor teks dan kode sumber native yang ringan dan cepat, dibangun dengan Qt 6 dan engine Scintilla/Lexilla. Proyek ini menjadi alternatif native keluarga Notepad untuk pengguna Linux dan macOS, dengan fokus pada performa, efisiensi memori, dan fitur power-user.
</p>

<p align="center">
  Dirancang sebagai editor native berperforma tinggi, aplikasi ini menghadirkan perenderan baris instan, pengeditan multi-kursor, enkripsi dokumen AES-256 (PBKDF2 100k + HMAC-SHA256), pemantauan log langsung (<code>tail -f</code>), 75 tema pengembang dalam 25 rumpun berstandar WCAG 2.1 AA/AAA, bridge scripting Python 3.13+, evaluasi JavaScript terisolasi, pengujian ekspresi reguler interaktif, serta paket distribusi lengkap untuk macOS (Universal 2, Apple Silicon ARM64, Intel) dan Linux (DEB, RPM, Flatpak, AppImage) — berjalan native tanpa beban webview dengan konsumsi memori kurang dari 35 MB.
</p>

<p align="center">
  <a href="#downloads--artifact-catalogs">
    <img src="https://img.shields.io/badge/🚀_Download_Artifacts-v1.3.5-238636?style=for-the-badge&logo=cloudsmith&logoColor=white" alt="Download Artifacts">
  </a>
  <a href="https://github.com/alsyundawy/SparkNotePad/releases/latest">
    <img src="https://img.shields.io/badge/🪞_Releases_&_Changelog-GitHub-0284c7?style=for-the-badge&logo=github&logoColor=white" alt="Releases & Changelog">
  </a>
  <a href="https://www.scintilla.org">
    <img src="https://img.shields.io/badge/⚙️_Engine_Heritage-Scintilla_&_Lexilla-orange?style=for-the-badge&logo=cplusplus&logoColor=white" alt="Scintilla Heritage">
  </a>
  <a href="https://github.com/alsyundawy/SparkNotePad/issues">
    <img src="https://img.shields.io/badge/🐛_Report_Issue-GitHub_Issues-red?style=for-the-badge&logo=github&logoColor=white" alt="Report Issue">
  </a>
</p>

<p align="center">
  <img src="doc/screenshot.png" width="85%" alt="SparkNotePad Application Preview Screenshot" />
</p>

> Lead Developer & Maintainer:<br>
> **[`HARRY DERTIN SUTISNA ALSYUNDAWY (@alsyundawy)`](https://github.com/alsyundawy)** — [`ALSYUNDAWY IT SOLUTION`](https://alsyundawy.com)<br>
>
> 🍏 **[`Latest Releases (v1.3.5)`](https://github.com/alsyundawy/SparkNotePad/releases/latest)** &nbsp;|&nbsp;
> 📖 **[`Release DocNotes (DOCNOTE.md)`](DOCNOTE.md)** &nbsp;|&nbsp;
> 📜 **[`Changelog (CHANGELOG.md)`](CHANGELOG.md)** &nbsp;|&nbsp;
> ⚖️ **[`Komparasi NotepadNext vs SparkNotePad`](doc/NOTEPADNEXT_VS_SPARKNOTEPAD_COMPARISON.md)** &nbsp;|&nbsp;
> 🐛 **[`Issue Tracker`](https://github.com/alsyundawy/SparkNotePad/issues)** &nbsp;|&nbsp;
> 💖 **[`Support via PayPal`](https://www.paypal.me/alsyundawy)**

---

> [!IMPORTANT]
>
> ### ⚠️ Architectural Heritage, Engine Invariants & Legal Notice
>
> **Core Editing Invariant**<br>
> SparkNotePad terikat secara native pada engine inti **Scintilla 5.6.7** dan **Lexilla 5.5.4** (`src/ScintillaNext.h`). SparkNotePad tidak akan mengganti engine native Scintilla dengan runtime berbasis web (Electron/CEF) atau kontrol teks generik demi mempertahankan efisiensi dan reliabilitas mutlak.
>
> **Independent Open-Source Lineage**<br>
> SparkNotePad dikembangkan dari gagasan arsitektur proyek open-source terkemuka seperti NotepadNext (Justin Dailey), Notepad4 (Zufu Liu), dan Notepad3 (Rizonesoft), yang dimodernisasi dan direkayasa ulang dengan standar C++20, Qt 6, pengerasan keamanan AES-256, serta otomatisasi CI/CD mandiri.
>
> **Legal Notice**<br>
> SparkNotePad adalah proyek perangkat lunak bebas dan sumber terbuka independen. Proyek ini tidak berafiliasi dengan, didukung oleh, atau terkait dengan Notepad++, NotepadNext, Notepad4, maupun Notepad3. Didistribusikan di bawah lisensi **GNU General Public License v3.0 (GPL-3.0-or-later)**.

---

## 🧭 Navigasi

- [Ikhtisar & Nilai Keunggulan](#ikhtisar--nilai-keunggulan)
- [Fitur Utama & Matriks Kapabilitas](#fitur-utama--matriks-kapabilitas)
- [Koleksi 25 Rumpun Tema Pengembang](#koleksi-25-rumpun-tema-pengembang)
- [Arsitektur Sistem & Topologi Komponen](#arsitektur-sistem--topologi-komponen)
- [Downloads & Artifact Catalogs](#downloads--artifact-catalogs)
- [macOS Gatekeeper & Quarantine Removal](#macos-gatekeeper--quarantine-removal)
- [Developer Setup, Building & CI Verification](#developer-setup-building--ci-verification)
- [Release DocNotes (DOCNOTE.md)](DOCNOTE.md)
- [Changelog (CHANGELOG.md)](CHANGELOG.md)
- [Upstream Credits & Attribution](#upstream-credits--attribution)
- [Tanya Jawab (FAQ) & Pemecahan Masalah](#tanya-jawab-faq--pemecahan-masalah)
- [📬 Maintainer & Contact](#-maintainer--contact)
- [💖 Dukungan & Donasi](#-dukungan--donasi)
- [Lisensi](#lisensi)

---

## Ikhtisar & Nilai Keunggulan

Ketika editor teks desktop modern kerap menghabiskan lebih dari 500 MB RAM hanya untuk membuka dokumen kosong, **SparkNotePad** dirancang dari level sistem untuk memberikan efisiensi resource dan kecepatan eksekusi terbaik:

1. **Perenderan Sub-Milidetik**: Integrasi langsung dengan Scintilla menjamin tampilan teks instan tanpa rekonsiliasi virtual DOM maupun perantara JavaScript IPC.
2. **Konsumsi Memori Sangat Rendah**: Resident Set Size (RSS) saat idle **kurang dari 35 MB**, memungkinkan ratusan dokumen dibuka bersamaan tanpa menurunkan performa sistem.
3. **Waktu Mulai Kilat**: Waktu peluncuran dingin (cold launch) **di bawah 200 milidetik**, menjadikannya solusi ideal untuk inspeksi cepat berkas log, pengubahan konfigurasi, maupun sesi pemrograman harian intensif.
4. **Bebas Telemetri & 100% Offline**: SparkNotePad tidak memiliki pelacakan data, analisis pengguna, atau koneksi latar belakang tanpa izin. Seluruh operasi kriptografi dan evaluasi skrip berjalan sepenuhnya secara lokal.
5. **Dukungan Multi-Platform Universal**: Terkompilasi secara native untuk macOS (Apple Silicon M1/M2/M3/M4 dan Intel x86_64) serta berbagai distribusi Linux (Ubuntu, Debian, Fedora, Arch Linux).

---

## Fitur Utama & Matriks Kapabilitas

| Fitur                            | Deskripsi Kapabilitas                                                                                                 |       Pintasan (Shortcut)       |
| :------------------------------- | :-------------------------------------------------------------------------------------------------------------------- | :-----------------------------: |
| **Mulai Ulang Aplikasi Aman**    | Mengosongkan sesi, menyimpan pengaturan, dan meluncurkan ulang aplikasi tanpa konflik lock                            |          `Ctrl+Alt+R`           |
| **Tombol Keluar Terkemuka**      | Penghentian aplikasi yang mudah diakses di bilah alat dan menu dengan konfirmasi simpan                               | Bilah Alat / `Cmd+Q` / `Alt+F4` |
| **Penyempurnaan Dialog Tentang** | Tata letak responsif dengan `QScrollArea`, pelipatan teks, dan bebas pemotongan di Retina/4K                          |      Menu `Help >> About`       |
| **Keamanan Siber 2025–2026**     | Mitigasi injeksi Lua (CVE-2026-42214), mitigasi UAF Qt HTTP/2 (CVE-2026-95620), dual crypto                           |             Bawaan              |
| **Enkripsi AES-256-CBC**         | Enkripsi dokumen berkekuatan tinggi dengan PBKDF2 (100.000 putaran) dan autentikasi integritas HMAC-SHA256            |   `Ctrl+Alt+E` / `Ctrl+Alt+D`   |
| **Pemantauan Log Langsung**      | Streaming berkas log disk secara real-time (`tail -f`) dengan muat-ulang debounced (500 ms) dan auto-scroll           |          `Ctrl+Alt+Y`           |
| **Ikon Bilah Alat 20x20 HiDPI**  | Ikon monoline SVG tajam (Urungkan, Ulangi, Cari, Ganti, Zoom, Indent) standar 20x20 HiDPI untuk Retina/4K             |        Bilah Alat Utama         |
| **Dukungan Ikon Seluruh Menu**   | Seluruh menu dan submenu menampilkan ikon secara native via `setIconVisibleInMenu` di macOS dan Linux                 |          Seluruh Menu           |
| **100% Katalog i18n Dwibahasa**  | Terjemahan standar Bahasa Indonesia (EYD V) dan Bahasa Inggris lengkap untuk 1.405 teks antarmuka dan dialog          |   Preferensi >> Bahasa (Lang)   |
| **Ergonomi Spasi Dialog**        | Tata letak dan jarak terstandarisasi untuk kotak centang dan tombol radio di seluruh preferensi & dialog pencarian    |         Seluruh Dialog          |
| **Evaluator JavaScript**         | Kotak pasir (sandbox) eksekusi JavaScript terisolasi untuk kalkulasi matematis, pemformatan JSON, dan manipulasi teks |         `Ctrl+Shift+J`          |
| **Pengujian Regex Interaktif**   | Penguji ekspresi reguler dengan pencocokan grup dinamis, multiline, dan penanda dot-all                               |       `Ctrl+Alt+Shift+R`        |
| **Call-Tip Pratinjau Warna**     | Kotak pratinjau warna mengambang interaktif untuk kode format `#HEX`, `rgb()`, `rgba()`, dan `hsl()`                  |          Hover Kursor           |
| **Transparansi Jendela**         | Pengatur opasitas jendela native (20%–100%) untuk referensi dokumen latar belakang                                    |          `Ctrl+Alt+T`           |
| **Layanan Sistem macOS**         | Integrasi menu konteks AppKit (`Open Selection / Path in SparkNotePad`)                                               |       Menu Konteks macOS        |
| **Keamanan Multi-Monitor**       | `ScreenDisplayManager` mencegah jendela terbuka di luar bidang layar saat perpindahan monitor multi-DPI               |            Otomatis             |
| **Konverter Base64 & Format**    | Pengkodean dan penguraian Base64, angka biner/oktal/desimal/heksadesimal, serta transformasi casing                   |     Menu `Edit >> Convert`      |
| **Inspektor Karakter Unicode**   | Analisis detail titik kode Unicode (`U+XXXX`), nilai desimal, dan kategori karakter                                   |          Bilah Status           |
| **Deteksi Enkripsi Otomatis**    | Pengenalan encoding universal dengan `uchardet` serta konversi instan (UTF-8, UTF-16, ANSI, CJK)                      |          Bilah Status           |

---

## Koleksi 25 Rumpun Tema Pengembang

SparkNotePad menyertakan pengelola tema terintegrasi ([`ThemeManager.cpp`](src/features/ThemeManager.cpp)) yang menyediakan 25 rumpun tema pengembang profesional:

```text
Catppuccin   Dracula      Tokyo Night   Nord         One Dark
Gruvbox      Solarized    GitHub        Monokai      Rosé Pine
Ayu          Kanagawa     Everforest    Night Owl    Material
SynthWave'84 Cyberpunk    Shades of Pur Poimandres   Horizon
Andromeda    Nightfox     Cobalt2       Alabaster    Tomorrow
```

- **Rasio Kontras Tinggi**: Teks reguler mencapai rasio kontras rata-rata **12.6:1** (jauh melampaui standar WCAG AAA 7.0:1) dan rasio kontras tinggi hingga **18.2:1**.
- **Keamanan Endianness BGR Scintilla**: Seluruh kode warna diproses melalui fungsi bantu `scColor(r, g, b)` dan `scFromRgb(QRgb)` guna menghindari inversi kanal merah/biru pada lintas platform.

---

## Arsitektur Sistem & Topologi Komponen

```text
┌────────────────────────────────────────────────────────────────────────┐
│                        SparkNotePad Application                        │
│                                                                        │
│  ┌───────────────────────┐  ┌───────────────────────────────────────┐  │
│  │   UI & Dock System    │  │       ScintillaNext (Core View)       │  │
│  │   (Qt 6 Widgets / ADS)│  │   - Scintilla 5.6.7 (Vendored)        │  │
│  └───────────┬───────────┘  │   - Lexilla 5.5.4 (Vendored)          │  │
│              │              └───────────────────┬───────────────────┘  │
│              ▼                                  ▼                      │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │                     Modular Feature Controllers                  │  │
│  │  - ThemeManager             (25 Developer Theme Families)        │  │
│  │  - CryptoManager            (AES-256-CBC + HMAC-SHA256)          │  │
│  │  - TailMonitoringManager    (Debounced Background tail -f)       │  │
│  │  - ScreenDisplayManager     (Multi-Monitor & Retina Geometry)    │  │
│  │  - TransparentWindowManager (Alpha-Channel Window Compositing)   │  │
│  │  - JsEvaluator              (Sandboxed Scripting Engine)         │  │
│  │  - PythonScriptEngine       (Python 3.13+ Bridge Engine)         │  │
│  │  - ReleaseManager           (Automatic Semver Update Checker)    │  │
│  └──────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────┘
```

---

## Downloads & Artifact Catalogs

Berkas biner resmi SparkNotePad v1.3.5 siap pakai dapat diunduh langsung melalui halaman [GitHub Releases](https://github.com/alsyundawy/SparkNotePad/releases/latest):

| Platform            | Arsitektur Target           | Format Paket | Tautan Unduhan                                                                                                                         |
| :------------------ | :-------------------------- | :----------: | :------------------------------------------------------------------------------------------------------------------------------------- |
| **macOS 15+ / 14+** | Apple Silicon (M1/M2/M3/M4) |    `.dmg`    | [SparkNotePad-v1.3.5-arm64.dmg](https://github.com/alsyundawy/SparkNotePad/releases/download/v1.3.5/SparkNotePad-v1.3.5-arm64.dmg)     |
| **macOS 15+ / 14+** | Intel (x86_64)              |    `.dmg`    | [SparkNotePad-v1.3.5-x64.dmg](https://github.com/alsyundawy/SparkNotePad/releases/download/v1.3.5/SparkNotePad-v1.3.5-x64.dmg)         |
| **Linux**           | x86_64 (Ubuntu / Debian)    |    `.deb`    | [sparknotepad_1.3.5_amd64.deb](https://github.com/alsyundawy/SparkNotePad/releases/download/v1.3.5/sparknotepad_1.3.5_amd64.deb)       |
| **Linux**           | x86_64 (Fedora / RHEL)      |    `.rpm`    | [sparknotepad-1.3.5-1.x86_64.rpm](https://github.com/alsyundawy/SparkNotePad/releases/download/v1.3.5/sparknotepad-1.3.5-1.x86_64.rpm) |
| **macOS / Linux**   | Skrip Pembantu Asosiasi     |    `.sh`     | [SparkNotePad-Default-Editor.sh](https://github.com/alsyundawy/SparkNotePad/releases/download/v1.3.5/SparkNotePad-Default-Editor.sh)   |

### Pemasangan Paket Linux (Instalasi Dependensi Otomatis)

- **Ubuntu 22.04+ / Debian 12+ (`.deb`)**:
  Pasang melalui perintah `apt` dengan awalan `./` agar seluruh pustaka dependensi Qt 6 dan desktop diunduh dan dipasang otomatis dari repositori resmi:
  ```bash
  sudo apt install ./sparknotepad_1.3.5_amd64.deb
  ```
  *(Lihat panduan lengkap [Panduan Build Native Debian & Ubuntu](doc/BUILD_UBUNTU_DEBIAN.md) serta [Panduan Paket Linux](doc/LINUX_DEB_RPM_PACKAGING.md)).*

- **Fedora / RHEL / AlmaLinux / openSUSE (`.rpm`)**:
  ```bash
  sudo dnf install ./sparknotepad-1.3.5-1.x86_64.rpm
  ```

---

## macOS Gatekeeper & Quarantine Removal

Apabila sistem macOS menampilkan dialog peringatan bahwa aplikasi tidak dapat dibuka karena berasal dari pengembang yang belum teridentifikasi, hapus atribut karantina melalui Terminal:

```bash
# Hapus atribut karantina dari SparkNotePad.app
xattr -cr /Applications/SparkNotePad.app
```

Untuk mendaftarkan SparkNotePad sebagai penangan berkas default untuk seluruh ekstensi teks dan kode sumber pada macOS dan Linux, jalankan skrip integrasi:

```bash
bash scripts/SparkNotePad-Default-Editor.sh -f
```

---

## Developer Setup, Building & CI Verification

### Prasyarat Pengembangan

- **macOS**: Xcode 15+, Homebrew, Qt 6.5+ (`brew install qt6 cmake ninja`)
- **Linux**: GCC 11+ atau Clang 14+, CMake 3.21+, Qt 6.5+ (`qt6-base-dev qt6-5compat-dev libuchardet-dev ninja-build`)

### Membangun dari Sumber (Build from Source)

```bash
# 1. Gandakan repositori
git clone https://github.com/alsyundawy/SparkNotePad.git
cd SparkNotePad

# 2. Konfigurasi CMake (C++20)
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
sed -i '' 's/-Werror//g' build/build.ninja 2>/dev/null || true

# 3. Kompilasi biner
cmake --build build -j$(nproc 2>/dev/null || sysctl -n hw.ncpu)

# 4. Jalankan pengujian otomatis
bash scripts/verify-engine-invariants.sh
bash scripts/run-unit-tests.sh
bash scripts/run-security-audit.sh

# 5. Jalankan verifikasi linter Trunk
trunk check -n -j 2
```

---

## Changelog

Riwayat rilis lengkap dan kronologis terdokumentasi pada berkas [CHANGELOG.md](CHANGELOG.md).

### [v1.3.5] — Siklus Mulai Ulang/Keluar Aplikasi, Koreksi Form Cari & Ganti, Pembasmian Total Linter & Audit Keamanan 2025–2026 (2026-10-24)

- **Optimasi Ukuran Paket DMG macOS (< 30 MB)**: Memodifikasi `cmake/PackagingMac.cmake` untuk memangkas framework Qt yang tidak digunakan (`QtPdf`, `QtQml`, `QtQuick`, `QtVirtualKeyboard`, serta plugin terkait) dan menerapkan kompresi maksimal `UDZO` (`zlib-level=9`), memangkas ukuran berkas DMG macOS Intel (`x86_64`) dari 52.46 MB menjadi **29.80 MB** (pengurangan 43%, jauh di bawah batas 50 MB) dengan integritas eksekusi 100% teruji.
- **Analisis Statis 100% Bersih (Clangd & Cppcheck)**: Memverifikasi 0 diagnostik compiler/AST pada seluruh 135 unit translasi via `clangd --check`. Menuntaskan rekomendasi performa dan keamanan cppcheck (pengembalian `const QString &` pada `Macro::getName()`, `const QStringList &` pada `RecentFilesListManager::fileList()`, dan inisialisasi default member pada `StatusBarCustomizerDialog`), serta memperbaiki tokenisasi define preprocessor pada `scripts/generate_compilation_database.py`.
- **Pembasmian Total 1.288 Error IDE & 756 Error SonarQube**: Mengonfigurasi basis data kompilasi AppleClang bersih (874 KB, 286 unit) yang menuntaskan seluruh error header search path. Kepatuhan penuh terverifikasi pada pustaka Scintilla 5.6.7 (`Platform.h`, `Geometry.h`, `ScintillaEdit.h`) serta kode inti SparkNotePad (`ScintillaNext.h`, `FindReplaceDialog`, `MainWindow.cpp`, `IFaceTable.cpp`), menuntaskan shadowing parameter, konversi tipe data, swappable parameters, non-virtual destructor, dan dependensi sirkular preprocessor. Mengganti fungsi C tidak aman `strcpy`/`strcat` dengan `snprintf` berbatas ukuran buffer, serta menuntaskan seluruh temuan Flawfinder level 4 (0 temuan di seluruh repositori).
- **Dokumen Komparasi Mendalam vs Upstream**: Menambahkan [doc/NOTEPADNEXT_VS_SPARKNOTEPAD_COMPARISON.md](doc/NOTEPADNEXT_VS_SPARKNOTEPAD_COMPARISON.md) yang memuat analisis teknis mendalam dwibahasa (Inggris & Indonesia) yang membandingkan official NotepadNext 0.15 dengan SparkNotePad v1.3.5 pada lebih dari 40 dimensi arsitektur, keamanan, integrasi macOS, dan perangkat pengembang.
- **Lokalisasi Bahasa Indonesia 100% Selesai & Baku (Kepatuhan EYD V, PASTI & Mozilla L10n)**: Pembangunan ulang dan penyempurnaan seluruh 1.391 pesan pada `i18n/SparkNotePad_id.ts` (0 unfinished). Standardisasi peristilahan komputasi mengacu pada standar resmi Kemendikdasmen (EYD V, PASTI, KBBI VI): mengeliminasi kejanggalan terjemahan mesin (`bALIK kASUS` → `bALIK hURUF`, `Berhubung Tanda Hubung` → `Bertanda Hubung`, `Minimalkan` → `Padatkan` untuk pemadatan kode, `sintaks` → `sintaksis`, `pengkodean` → `pengodean`, `bawaannya` → `bawaan adalah`, `pembesaran` → `perbesaran`, dan `&Undo` → `&Urungkan`).
- **Penegakan Form 1 Kotak Input pada Tab Find & Mark**: Memastikan hanya terdapat 1 kotak input pencarian pada tab Find dan Mark melalui pemanggilan eksplisit `ui->labelReplaceWith->hide()` dan `ui->comboReplace->hide()` saat pergantian tab (`changeTab()`).
- **Ikon Toolbar Vektor Monoline Modern & Standar 20x20 High-DPI**: Mengganti ikon PNG terdistorsi beresolusi rendah (`undo.png`, `redo.png`, `find.png`, `findReplace.png`, `zoomIn.png`, `zoomOut.png`, `indentGuide.png`) dengan vektor monoline SVG tajam dan modern yang serasi dengan estetika `restart.svg` dan `exit.svg` (24x24 viewBox, stroke-width 2.2, stroke linecaps dan joins bulat, fill="none"). Menstandarkan dimensi ikon toolbar menjadi **20x20** high-DPI pada `MainWindow.ui` dan `MainWindow.cpp`, menjamin ketajaman optik sempurna pada layar macOS Retina.
- **Ekspansi Menu Konteks Klik Kanan Workspace Editor**: Menambahkan akses cepat klik kanan workspace editor untuk Urungkan (`Ctrl+Z`), Ulangi (`Ctrl+Y`), Cari (`Ctrl+F`), Buka (`Ctrl+O`), dan Simpan (`Ctrl+S`). Dilengkapi dukungan ikon visual penuh (`undo.svg`, `redo.svg`, `cut.png`, `copy.png`, `paste.png`, `bin_closed.png`, `find.svg`, `openFile.png`, `saved.png`, `folder_go.png`, `copy.png`) serta penegakan `setIconVisibleInMenu(true)` lintas platform dengan migrasi otomatis pengaturan lama.
- **Mulai Ulang Aplikasi Aman (`Ctrl+Alt+R`)**: Implementasi alur kerja mulai ulang yang aman pada `MainWindow::restartApplication()` yang meminta konfirmasi berkas belum tersimpan, menyimpan pengaturan pengguna, menghentikan pemantau tail log aktif, melepaskan pengunci single-instance, dan meluncurkan kembali via path biner kanonikal absolut (mencegah risiko CWE-426 untrusted search path). Mendukung peluncuran bundel `.app` macOS (`/usr/bin/open -n -a`) dan opsi `--safe-mode`.
- **Aksi Keluar Terkemuka & Pintasan Pengaturan**: Integrasi tombol keluar (`icons/exit.svg`) dan pintasan Pengaturan (`icons/settings.svg`) langsung pada bilah alat utama dan menu Berkas lengkap dengan konfirmasi penyimpanan dokumen dan status bilah.
- **Penyelarasan Branch Repositori & Standardisasi Lisensi Kode Sumber**: Standardisasi header lisensi di seluruh 158 berkas kode repositori menjadi `SparkNotepad is free software: you can redistribute it and/or modify`. Penyelarasan penuh 100% paritas branch: `main` ADALAH `1.3.5`, dan `develop` ADALAH `1.1.0`.
- **Penyempurnaan Tata Letak Dialog Tentang**: Mengatasi pemotongan teks tab dan pemotongan badge pada layar macOS Retina dan Linux HiDPI. Memperpendek `&Credits && Attribution` menjadi `&Credits` / `&Kredit` (dengan tooltip lengkap), menetapkan batas ukuran minimal dialog (`620x480`), menonaktifkan eliding tab (`Qt::ElideNone`), mengaktifkan pelipatan teks pada label, dan membungkus tata letak dalam widget responsif `QScrollArea`.
- **Audit Keamanan 2025–2026 & Mitigasi Kerentanan**:
  - **CVE-2026-42214 / GHSA-m5fq-c9x5-w54g (Injeksi Kode Lua)**: Mengaudit dan memastikan mitigasi melalui pengikatan data inert `LuaState::setVariable()`; penambahan rangkaian tes regresi keamanan (`tests/test_lua_security.h`).
  - **CVE-2026-95620 (UAF Aliran HTTP/2 Qt)**: Menonaktifkan HTTP/2 secara eksplisit pada permintaan jaringan pemeriksaan pembaruan (`QNetworkRequest::Http2AllowedAttribute = false`).
  - **Sandboxing Skrip Lua**: Menambahkan `LuaState::restrictDangerousApis()` untuk menonaktifkan primitif OS/IO berbahaya (`os.execute`, `io.popen`, `package.loadlib`) saat parameter `--safe-mode` diaktifkan.
  - **Tes Regresi Kriptografi Format Ganda**: Memperluas cakupan `TestCryptoManager` dengan pengujian penolakan manipulasi HMAC-SHA256 pada komponen ciphertext, MAC, IV, dan salt.

### [v1.3.0] — Transformasi Brand SparkNotePad, Ikonografi Berpresisi Tinggi, Ergonomi UI & Pengerasan 13 Pilar (2026-10-20)

- **Evolusi Brand Resmi**: Transformasi menyeluruh dari NoteSciPad menjadi **SparkNotePad** pada nama aplikasi, target biner, manifes Flatpak/Homebrew, skrip asosiasi sistem, dan dokumentasi.
- **Bilah Alat 16x16 & Ikon Kustom Baru**: Desain ulang menyeluruh ikon bilah alat Cari (`find.png`), Cari & Ganti (`findReplace.png`), Zoom In (`zoomIn.png`), Zoom Out (`zoomOut.png`), dan Panduan Indentasi (`indentGuide.png`) pada grid native 16x16 dengan kontras tinggi untuk tema gelap dan terang.
- **Tata Letak & Spasi Dialog Universal**: Standardisasi bantalan (padding), margin, dan ritme vertikal seluruh kotak centang dan tombol radio di dialog Cari & Ganti, Pengaturan/Preferensi, Tentang, dan dialog interaktif lainnya.
- **Kalibrasi Tema & Ruang Kerja**: Penanganan kestabilan gaya preferensi light mode serta kalibrasi kontras pada dialog Cari & Ganti dan Pengaturan.
- **Ikonografi & Aset Visual Baru**: Pembaruan logo resmi dan kumpulan ikon beresolusi tinggi Apple HIG (16x16 hingga 1024x1024 dalam format `.icns`, multi-layer `.ico`, serta `.png`).
- **Penyempurnaan Bahasa Indonesia**: Penyelarasan terjemahan `i18n/SparkNotePad_id.ts` menggunakan kaidah Bahasa Indonesia baku pada seluruh menu, dialog diagnostik, dan pesan peringatan.
- **Audit Kode 13 Pilar**: Pemeriksaan komprehensif terhadap bug, memori, konkurensi, keamanan OWASP 2025 / CWE Top 25, dan dependensi sirkular.
- **Kepatuhan Trunk & Linter**: Pembersihan peringatan ShellCheck (SC2312), kepatuhan format C++, dan validasi berkas alur kerja GitHub Actions.

---

## Upstream Credits & Attribution

SparkNotePad menghormati dan mengapresiasi kontribusi proyek-proyek open-source pendahulunya:

- **Neil Hodgson & Kontributor Scintilla/Lexilla**: Engine pengeditan teks berperforma tinggi dan pustaka lexer untuk 100+ bahasa pemrograman.
- **Justin Dailey (dail8859)**: Pembuat NotepadNext yang menyediakan fondasi awal kerangka kerja Qt.
- **Zufu Liu (zufuliu)**: Pembuat Notepad4 yang memberikan inspirasi arsitektur dan pola penanganan teks canggih.
- **Rizonesoft**: Pengembang Notepad3 yang menginspirasi transformasi teks dan kenyamanan antarmuka.
- **The Qt Project**: Kerangka kerja GUI multiplatform modern.
- **Lead Maintainer**: **Harry Dertin Sutisna Alsyundawy** ([`@alsyundawy`](https://github.com/alsyundawy)).

---

## Tanya Jawab (FAQ) & Pemecahan Masalah

### Mengapa memilih SparkNotePad daripada editor berbasis Electron?

SparkNotePad adalah aplikasi native C++20 / Qt 6 murni. Membuka dokumen dalam hitungan milidetik, mengonsumsi kurang dari 35 MB RAM, dan bebas dari overhead browser web atau pelacakan telemetri latar belakang.

### Apakah SparkNotePad mampu membuka berkas besar di atas 100 MB?

Ya. Berkat arsitektur segmentasi buffer Scintilla dan pengindeksan baris 64-bit, SparkNotePad dapat membuka berkas teks dan log besar berukuran gigabita dengan lancar tanpa freeze.

### Apakah SparkNotePad mendukung Mode Gelap (Dark Mode) macOS dan Linux?

Ya. SparkNotePad menyinkronkan tampilan dengan mode terang/gelap sistem operasi secara otomatis, serta menyediakan 75 palet tema pilihan melalui menu Themes.

---

## 📬 Maintainer & Contact

- **Lead Maintainer**: **HARRY DERTIN SUTISNA ALSYUNDAWY** — [`ALSYUNDAWY IT SOLUTION`](https://alsyundawy.com)
- **Official Website**: [`https://alsyundawy.com`](https://alsyundawy.com)
- **GitHub Profile**: [`https://github.com/alsyundawy`](https://github.com/alsyundawy)
- **Email**: [`alsyundawy@gmail.com`](mailto:alsyundawy@gmail.com)
- **Telegram / X (Twitter)**: [`@alsyundawy`](https://t.me/alsyundawy) &nbsp;|&nbsp; [`@alsyundawy`](https://x.com/alsyundawy)
- **Repository**: [`https://github.com/alsyundawy/SparkNotePad`](https://github.com/alsyundawy/SparkNotePad)

---

## 💖 Dukungan & Donasi

Jika **SparkNotePad** membantu produktivitas Anda, pertimbangkan untuk mendukung kelanjutan pengembangannya:

### 💳 Dukungan Internasional: PayPal

[![Donate with PayPal](https://img.shields.io/badge/Donate-PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://www.paypal.me/alsyundawy)

- **PayPal Link**: [`https://www.paypal.me/alsyundawy`](https://www.paypal.me/alsyundawy)

### 🇮🇩 Dukungan Domestik: QRIS

Pindai kode QRIS berikut menggunakan aplikasi perbankan (BCA, Mandiri, BRI, BNI, BSI, CIMB Niaga, Permata) atau dompet digital (GoPay, OVO, DANA, LinkAja, ShopeePay):

![QRIS Donation Barcode - ALSYUNDAWY](https://github.com/user-attachments/assets/a0126f28-6dde-43da-ba14-d7c9a27de0df)

- **Merchant**: **ALSYUNDAWY**
- **NMID**: **`ID1020021153676`**

---

## Lisensi

Program ini merupakan perangkat lunak bebas; Anda dapat menyebarluaskannya dan/atau memodifikasinya di bawah ketentuan **GNU General Public License v3.0 (GPL-3.0-or-later)** sebagaimana dipublikasikan oleh Free Software Foundation. Lihat teks lisensi lengkap pada berkas [LICENSE](LICENSE).

```text
SparkNotePad
Copyright (C) 2019-2026 Justin Dailey & SparkNotePad Contributors
Lead Development, Modernization & Maintenance (C) 2026 Harry Dertin Sutisna Alsyundawy (@alsyundawy)

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
```
