# **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