# **AI Notes – Changelog**

## **Tim Pengembang**

* Dendi Yogia Pratama
* Raihan Ariq Muzakki
* Fazri Abdurrahman

# **Version 1.0.0 – Initial Release**

## **Sprint 1: Struktur Dasar Aplikasi**

### **Struktur & Navigation**
* **Setup navigation system** - Implementasi routing antar halaman (Beranda, Arsip, Sampah)
* **Menu Drawer** - Navigation drawer dengan list menu (Beranda, Berbintang, Arsip, Sampah)
* **Bottom Navigation** - Home & AI Helper tabs dengan icon navigation
* **Top App Bar** - Menu hamburger dan search icon dengan Material3 styling
* **Screen Architecture** - Pembuatan screen Arsip, Sampah, Berbintang, AI Helper

### **Theme & Styling**
* **Material3 Dark Theme** - Setup color scheme dengan dark mode default
* **Color System** - Primary/Secondary colors dengan gradient presets (8 kombinasi warna)
* **Consistent Design** - Rounded corners (12dp, 16dp, 20dp), shadow, elevation
* **Smooth Animations** - Drawer slide, FAB scale, card transitions dengan spring animations
* **Typography System** - Optimasi font sizes dan line heights untuk readability

### **Category Management**
* **Category Model** - Data class dengan gradient colors dan timestamp
* **Category Dialog** - Form tambah/edit kategori dengan nama + gradient picker
* **Category Card** - Design dengan icon folder, nama, jumlah catatan, gradient background
* **Staggered Grid Layout** - 2 kolom responsive dengan LazyVerticalStaggeredGrid
* **Category Actions** - Menu dropdown (⋮) untuk edit dan delete kategori
* **Empty State** - Pesan "Buat kategori pertama Anda" dengan icon

### **Note Management**
* **Note Model** - Data class dengan title, content, timestamp, isPinned, isArchived
* **Note Dialog** - Form dengan judul, deskripsi, simpan, batal, hapus
* **Note Card** - Preview dengan judul, deskripsi, timestamp, pin icon
* **Full-screen Editor** - Editable note view dengan auto-save dan actions
* **Pin Feature** - Toggle pin/unpin untuk catatan penting dengan sorting priority
* **Archive & Delete** - Actions untuk arsip dan soft delete notes
* **Search Functionality** - Real-time search berdasarkan judul dan isi (case-insensitive)
* **Smart Sorting** - Berdasarkan pin status dan timestamp (descending)

### **AI Assistant**
* **Gemini AI Integration** - Setup Google Generative AI SDK dengan gemini-2.5-flash
* **AI Helper Screen** - Layout chat interface dengan header dan statistics
* **Category Context Selector** - Dropdown untuk filter konteks AI berdasarkan kategori
* **Statistics Display** - Total catatan, pinned notes, jumlah kategori
* **Chat Interface** - User & AI bubble dengan different styling dan timestamp
* **Prompt Engineering** - Context builder dengan data catatan user (max 10 terbaru)
* **Suggestion Chips** - Quick question templates untuk user guidance
* **Copy to Clipboard** - Copy jawaban AI dengan confirmation feedback
* **Loading & Error States** - Circular progress indicator dan error messages
* **API Configuration** - Temperature 0.8, topK 40, topP 0.95, maxOutputTokens 4096
* **Auto-scroll Chat** - Scroll ke bottom otomatis dengan LaunchedEffect

### **Data Persistence**
* **DataStore Implementation** - Preferences DataStore untuk local storage
* **DataStoreManager Class** - Centralized dengan categoriesFlow & notesFlow
* **Auto-save dengan Debounce** - 500ms delay untuk optimize I/O operations
* **Flow-based Loading** - Reactive data loading dengan Flow collection
* **Error Handling** - Try-catch untuk semua I/O operations
* **Serializable Models** - JSON serialization dengan extension functions

### **UI/UX Enhancements**
* **Visual Feedback** - Click ripples, copy confirmation, loading states
* **Empty States** - Icon + descriptive messages untuk setiap screen
* **Confirmation Dialogs** - AlertDialog untuk arsip, hapus, delete actions
* **Search Empty State** - "Tidak ada hasil" message saat search kosong
* **Custom TextField** - Styled text input dengan consistent design
* **Date Formatter Utility** - Format timestamp ke readable Indonesian format

---

## **Sprint 2: Project Restructuring & Advanced Features**

### **Project Architecture**
* **Clean Architecture Migration** - Dari 3 file monolith ke modular structure
* **Data Layer Separation** - Models ke `data/model/` (Category, Note, ChatMessage)
* **Local Storage Layer** - DataStoreManager ke `data/local/` dengan PreferencesKeys
* **Component Extraction** - Screen components ke folder terpisah (main, starred, archive, trash)
* **Utilities Creation** - Constants.kt, DateFormatter.kt, Extensions.kt untuk reusability
* **Import Optimization** - Update semua import sesuai package structure baru

### **Search & Filter**
* **Beranda Search** - Real-time search kategori berdasarkan nama
* **Category Notes Search** - Search catatan di dalam kategori (judul & isi)
* **Search Filtering** - Live filtering saat user mengetik
* **Search Empty State** - Descriptive message dengan alternative suggestions

### **Category Features**
* **Edit Category** - Dialog untuk ubah nama dan gradient dengan pre-filled form
* **Delete Category** - Menu dropdown dengan confirmation dialog
* **Category Actions Menu** - Icon ⋮ untuk access edit & delete options
* **Gradient Preview** - Visual preview saat edit kategori

### **Trash System**
* **Soft Delete Implementation** - isDeleted flag untuk Category dan Note
* **Trash Screen** - Tampilkan kategori & notes yang terhapus
* **TrashCategoryCard Component** - Card khusus dengan restore & delete permanent actions
* **Restore Feature** - Pulihkan kategori beserta semua notes di dalamnya
* **Permanent Delete** - Hapus kategori dan notes secara irreversible dengan confirmation
* **Counter Display** - Jumlah items terhapus di trash
* **Global Filter** - Filter `!isDeleted` di semua screen untuk hide deleted items

### **Bug Fixes & Optimization**
* **Runtime Error Debugging** - Fix NotImplementedError & FATAL EXCEPTION issues
* **Google Play Services Handling** - Error handling untuk GMS dependencies
* **Component Migration** - Update deprecated Divider ke HorizontalDivider
* **Gradle Optimization** - Cleanup unnecessary dependencies
* **State Management** - Proper state hoisting dan recomposition optimization

### **Documentation**
* **Migration Guide** - Step-by-step panduan untuk project restructuring
* **Debugging Guide** - Troubleshooting common issues dan error handling

---

# **Version 1.1.0 – AI Helper Screen Enhancement & UI Refinement**

## **Sprint 3: AI Helper Screen Features & Modern UI Redesign**

### **AI Assistant Enhancements**
* **History Chat AI dengan Drawer Menu** - Riwayat percakapan AI tersimpan permanen, dikelompokkan per kategori
* **Chat History Management** - Load previous chat, delete history, start new chat dengan auto-save
* **Markdown Parser untuk AI Response** - Support bold, italic, code blocks, headers, lists, quotes, links
* **Improved Error Handling** - User-friendly error messages untuk quota, network, API issues
* **Gemini Model Update** - Switch ke gemini-1.5-flash untuk stabilitas optimal

### **Theme System**
* **Dark/Light Theme Toggle** - Dual theme dengan persistent storage di drawer menu
* **Reactive Color System** - Dynamic color switching untuk semua components
* **Complete Color Palette** - DarkColors dan LightColors objects untuk consistency

### **UI/UX Modernization**
* **Floating Design System** - TopBar dan BottomBar dengan floating style, rounded corners, shadow
* **Consistent Component Style** - Unified design language dengan CircleShape buttons
* **Optimized Layouts** - Better spacing dan vertical action stack untuk maximize content space

### **Data & Navigation**
* **Note Edit & Delete from Card** - Menu dropdown pada NoteCard untuk quick actions
* **Race Condition Fix** - Guard flags dan lifecycle-aware auto-save untuk data persistence
* **Simplified Navigation** - Unified drawer menu, remove redundant back buttons
* **Extended DataStore** - Support chat history, theme preference, improved error handling

---

## **Sprint 4: Rich Text Editor Core Features & AI Chat History UI/UX Improvements**

### **Rich Text Editing**
* **Hybrid Rich Text Editor (WYSIWYG)** – Edit teks dengan format langsung tanpa syntax markdown terlihat
* **Bold, Italic, Underline** – Formatting bersifat toggle dan tetap aktif sampai dimatikan
* **Heading & Bullet List** – Support heading (H1–H3) dan bullet list tanpa konflik antar format
* **Undo / Redo** – Riwayat perubahan editor terintegrasi

### **Floating Toolbar**
* **Draggable Mini Toolbar** – Toolbar dapat dipindahkan bebas oleh user
* **Active State Indicator** – Icon toolbar menandakan format aktif (Bold, Italic, dll)
* **Minimal UI** – Toolbar kecil agar tidak mengganggu area pengetikan
* **Keyboard-Aware Positioning** – Posisi toolbar menyesuaikan saat keyboard muncul

### **Cursor & Editing Stability**
* **Stable Cursor & Selection** – Insertion point dan selection handle akurat saat mengetik
* **IME & Keyboard Safe** – Editor tetap stabil saat keyboard resize / rotate
* **Auto Bring-Into-View** – Cursor selalu terlihat saat mengetik di area bawah layar

### **Data Persistence**
* **Format Tersimpan Permanen** – Rich text tidak hilang setelah save atau reopen
* **Auto Save Lifecycle-Aware** – Catatan otomatis tersimpan saat app background / keluar
* **Markdown Compatibility** – Support import & export markdown secara aman

### **Chat History Enhancements**
* **Compact Modern Design** - Item lebih kecil dengan horizontal layout dan 30 karakter limit
* **Search & Filter System** - Real-time search dengan category dropdown filtering
* **Date Grouping** - Auto-group: "Hari Ini", "Kemarin", "Minggu Ini", "Lebih Lama"
* **Edit Title with Markdown** - Custom title support: **bold**, *italic*, `code`, ~~strike~~
* **Context Menu** - Three-dot menu (⋮) untuk Edit dan Delete actions
* **Live Preview** - Real-time markdown preview saat edit title

### **Technical Updates**
* **ChatHistory Model** - Added `customTitle: String?` field
* **DataStore Integration** - New `updateChatHistoryTitle()` function
* **Smart Truncation** - Auto-truncate preview ke 30 char dengan `toSafeChatPreview()`
* **Markdown Parser** - Inline markdown rendering untuk titles dengan proper styling
* **Character Counter** - Visual feedback dengan color indicator (Gray → Primary → Red)

### **User Experience**
* **Better Empty States** - Informative UI untuk empty search dan no history
* **Smooth Animations** - Slide transitions untuk dialogs
* **Input Validation** - Max 30 char dengan real-time blocking
* **Focus Management** - Seamless editing experience dengan auto-focus

> Rich Text Editor butuh dikembangkan lagi lebih advance
---

## **Sprint 5: AI Assistant Enhancements & Smart Organization Features**

### **Copy Plain Text Feature**
* **Dual Copy Options** – Dropdown menu dengan 2 pilihan: "Copy dengan Format" dan "Copy Teks Asli"
* **Smart Markdown Stripper** – Utility untuk remove bold, italic, code, headers, lists, links dari text
* **Visual Feedback** – Animated checkmark indicator dengan auto-hide setelah 2 detik
* **Format Preservation** – Copy dengan format maintain semua markdown syntax
* **Clean Output** – Plain text copy menghasilkan text bersih tanpa formatting apapun

### **Document Upload & AI Summary**
* **Multi-Format Support** – Upload PDF, TXT, dan DOCX files dengan file picker
* **Smart PDF Parser** – PDFBox Android integration untuk extract text dari PDF documents
* **Lightweight DOCX Parser** – Custom XML-based parser tanpa Apache POI dependency
* **Auto-Summary Generation** – AI auto-generate ringkasan maksimal 300 kata saat file di-upload
* **File Validation** – Maximum 10MB dengan clear error messaging untuk setiap kasus
* **Loading Integration** – Loading indicator "Membuat ringkasan..." terintegrasi di chat area
* **Chat Format** – Upload result format: "📄 Upload file: filename" dengan summary response

### **Category Pin System**
* **Pin/Unpin Toggle** – Quick access untuk kategori favorit dengan dropdown menu
* **Visual Pin Indicator** – 📌 icon dengan scale dan fade animations
* **Smart Sorting Logic** – Priority sorting: pinned categories (DESC) → timestamp (DESC)
* **Persistent Storage** – Pin status tersimpan di DataStore dengan backward compatibility
* **Multiple Pins Support** – User dapat pin multiple categories dengan proper grouping
* **Context Menu Integration** – Pin option di dropdown: "Pin Kategori" / "Lepas Pin"

### **Technical Implementation**
* **MarkdownStripper.kt** – Utility class dengan regex-based markdown removal
* **FileParser.kt** – Centralized file parsing untuk PDF, TXT, DOCX
* **Category Model Update** – Added `isPinned: Boolean` field dengan serialization support
* **FileParseResult** – Sealed class untuk type-safe file parsing results
* **PDFBoxResourceLoader** – Proper initialization dalam Application.onCreate()
* **State Management** – Combined loading states untuk chat dan file upload

### **User Experience**
* **Smooth Transitions** – Loading states dengan color differentiation (Primary vs Secondary)
* **Error Handling** – Comprehensive error messages untuk berbagai failure scenarios
* **Auto-Scroll** – Scroll to bottom saat upload file untuk show loading indicator
* **Disabled States** – Upload button hidden saat processing untuk prevent duplicate actions
* **Persistence** – Pin status dan file summary survive app restart

# **Sprint 6: Functional Testing & Documentation**

## **Testing Implementation**

### **Test Methodology Design**
* **Black-Box Functional Testing** – Pengujian dari perspektif end-user dengan verifikasi Expected vs Actual Result
* **Automated Unit Testing** – 59 automated tests untuk validasi business logic internal
* **Test Case Design** – 6 comprehensive test cases (TC-01 hingga TC-06)
* **Evidence Collection** – Screenshot documentation untuk setiap test case
* **Test Report Generation** – Structured test summary dengan metrics dan status

### **Test Infrastructure Setup**
* **JUnit 4 Framework** – Core testing framework untuk Android unit tests
* **AndroidX Test Library** – Android-specific testing utilities dan test runners
* **Kotlin Coroutines Test** – Testing library untuk asynchronous code dengan runBlocking
* **Test Isolation** – Unique DataStore instances per test untuk prevent data contamination
* **Test Execution** – Configure test runner dan gradle tasks untuk automated testing

### **Unit Test Development**
* **DataStoreManagerTest** – 8 tests untuk CRUD operations, autosave, dan pin functionality
* **TrashFunctionalityTest** – 11 tests untuk soft delete, restore, dan permanent delete
* **SearchFunctionalityTest** – 14 tests untuk realtime search dengan berbagai scenarios
* **AIChatFunctionalityTest** – 14 tests untuk context building dan chat history management
* **FileUploadFunctionalityTest** – 12 tests untuk file parsing dan summary generation

### **Test Coverage Achievement**
* **Total Test Cases** – 6 functional test cases dengan screenshot evidence
* **Total Unit Tests** – 59 automated tests covering critical business logic
* **Success Rate** – 100% pass rate untuk semua tests
* **Execution Time** – Average ~2 minutes untuk full test suite
* **Code Coverage** – 100% coverage untuk tested components (DataStore, Models, Utilities)

### **Bug Fixes & Test Iterations**
* **Test Isolation Issues** – Fixed data contamination dengan unique DataStore per test
* **Async Testing** – Resolved suspend function testing dengan proper runBlocking usage
* **Chat History Tests** – Fixed unique ID collision dengan improved test data management
* **Error Handling** – Added comprehensive error handling untuk file I/O operations
* **Test Stability** – Achieved consistent test results dengan proper setup/teardown

---

## **Documentation Development**

### **Technical Documentation**
* **Testing Methodology** – 16-section comprehensive document explaining black-box testing approach
* **Architecture Documentation** – Package structure, data flow, dan component relationships
* **API Documentation** – Gemini API integration, endpoints, dan configuration details
* **Code Comments** – Inline documentation untuk complex logic dan business rules
* **Setup Guide** – Step-by-step installation dan configuration instructions

### **User Documentation**
* **User Guide** – Complete panduan penggunaan dengan 7 user flows dan screenshots
* **Feature Documentation** – Detailed explanation untuk setiap fitur utama aplikasi
* **Quick Start Guide** – 6-step quick reference untuk new users
* **Troubleshooting Guide** – Common issues dan solutions untuk end-users
* **FAQ Section** – Frequently asked questions dengan clear answers

### **Project Documentation**
* **README.md** – Comprehensive project overview dengan badges, links, dan quick navigation
* **CHANGELOG.md** – Detailed version history dengan sprint breakdown dan feature tracking
* **TEST_SUMMARY_REPORT.md** – Complete test report dengan metrics, results, dan evidence
* **DEVELOPMENT_PLAN.md** – Sprint history, roadmap, dan future development planning
* **Academic Report** – 35-page formal documentation untuk course submission

### **Visual Documentation**
* **Wireframe Design** – Complete app wireframe dengan all screens dan navigation flows
* **Screenshot Collection** – 35+ screenshots documenting every feature dan user flow
* **Mockup Integration** – High-fidelity mockups embedded dalam user guide
* **Architecture Diagrams** – Visual representation of data layer, presentation layer, dan flow
* **Test Evidence** – Screenshot proof untuk setiap test case execution

### **Reference Documentation**
* **Dependencies List** – Complete list of libraries dengan version numbers
* **Tech Stack Documentation** – Detailed explanation of technology choices
* **API References** – Links to official documentation untuk Gemini, Android, Kotlin
* **Academic Citations** – Proper citation format untuk research sources (33 references)
* **Version Control** – Git workflow documentation dan branching strategy

---

## 🎯 Fitur Utama (Core Features)
1. **Note Management System** ⭐ (PRIMARY)

    * Create, Read, Update, Delete catatan
    * Organize notes dalam categories
    * Pin notes untuk quick access
    * Archive & Trash system dengan soft delete
    * Full-screen rich text editor dengan WYSIWYG
    * Real-time search & filter notes

2. **AI Assistant** 🤖 (PRIMARY)

    * Chat dengan AI menggunakan Gemini 2.5 Flash
    * Context-aware responses berdasarkan notes user
    * Chat history management dengan persistent storage
    * Document upload & auto-summary (PDF, TXT, DOCX)
    * Markdown support untuk AI responses
    * Copy plain text atau formatted text

3. **Category Organization** 📁 (CORE)

    * Create & manage categories dengan 8 gradient color presets
    * Pin favorite categories untuk quick access
    * Smart sorting: pinned categories → timestamp descending
    * Category-based note filtering dengan statistics
    * Staggered grid layout responsive

4. **Rich Text Editor** ✏️ (CORE)

    * WYSIWYG (What You See Is What You Get) editing experience tanpa raw markdown
    * Bold, italic, underline, headings (H1-H3), bullet lists
    * Floating draggable toolbar dengan active state indicators
    * Undo/Redo functionality
    * Markdown compatibility untuk import/export
    * Auto-save lifecycle-aware

5. **Data Persistence** 💾 (ESSENTIAL)

    * Local storage dengan DataStore Preferences
    * Auto-save dengan debounce (500ms delay)
    * Theme preference storage (dark/light mode)
    * Chat history persistence dengan serialization
    * Flow-based reactive data loading
    * Error handling untuk semua I/O operations
