ISPANA Client App Changelog — v0.0.7 Catatan Rilis Klien ISPANA — v0.0.7
Focus: Fix FilePicker API Call Compatibility
- a. [customer_import_view.dart] (Widget): Updated
FilePicker.platform.pickFilesto static methodFilePicker.pickFilesforfile_pickerv11.x API compatibility. - b. [pubspec.yaml]: Bumped version to
0.0.7+31.
Git Commit Tag:
ispana-v0.0.7a31 Focus: Refactor Role Management to Data Table & Integrate File Picker
- a. [role_management_page.dart] (Widget): Refactored role grid cards to structured DataTable with action columns.
- b. [customer_import_view.dart] (Widget): Integrated
file_pickerfor selecting local CSV files. - c. [pubspec.yaml]: Added
file_picker: ^11.0.2dependency and bumped version to0.0.7+30.
Git Commit Tag:
ispana-v0.0.7a30 Focus: Simplify Staff & Customer Management UI/UX via Modal Dialogs
- a. [staff_management_page.dart] (Page): Removed 'Peran' tab from top sub-menu bar.
- b. [employee_management_page.dart] (Widget): Added 'Kelola Peran' button to open role management dialog.
- c. [role_management_page.dart] (Widget): Wrapped role table and creation form into
RoleManagementDialog. - d. [customer_management_page.dart] (Page): Removed 'Impor CSV' tab from top sub-menu bar.
- e. [customer_management_view.dart] (Widget): Added 'Impor CSV' button in header action bar.
- f. [customer_import_view.dart] (Widget): Wrapped CSV importer in
CustomerImportDialogand added 'Unduh Templat CSV' template download button. - g. [pubspec.yaml]: Bumped version to
0.0.7+29.
Git Commit Tag:
ispana-v0.0.7a29 Focus: Remove Template Shortcut Inserted SnackBar Notification
- a. [whatsapp_send_dialog.dart] (Widget): Removed SnackBar notification when inserting message template shortcuts.
- b. [pubspec.yaml]: Bumped version to
0.0.7+28.
Git Commit Tag:
ispana-v0.0.7a28 Focus: WhatsApp History UI Cleanup (Refresh Button Removal & FAB Icon-Only)
- a. [whatsapp_history_view.dart] (Widget): Removed manual refresh IconButton next to search field and updated FloatingActionButton to icon-only FAB.
- b. [pubspec.yaml]: Bumped version to
0.0.7+27.
Git Commit Tag:
ispana-v0.0.7a27 Focus: Release
Git Commit Tag:
ispana-v0.0.7a26 Focus: Refactor Null Check to Null-Aware Element Marker in MapDisplayView
- a. [map_display_view.dart] (Widget): Replaced
if (_searchMarker != null) _searchMarker!with?_searchMarkernull-aware collection element syntax. - b. [pubspec.yaml]: Bumped version to
0.0.7+25.
Git Commit Tag:
ispana-v0.0.7a25 Focus: Fix Map Event Infinite Rebuild Loop in MapDisplayView
- a. [map_display_view.dart] (Widget): Filtered
onMapEventlistener to only trigger debounced bounding box fetches when map camera movement finishes (MapEventMoveEnd,MapEventFlingAnimationEnd,MapEventDoubleTapZoomEnd), eliminating the UI thread freeze loop. - b. [pubspec.yaml]: Bumped version to
0.0.7+24.
Git Commit Tag:
ispana-v0.0.7a24 Focus: Fix "Ini Tiang Sendiri" (isOwnedPole) Persistence in Dart API Backend
- a. [landmark_model.dart] (API Model): Added
isOwnedPolefield, constructor mapping,fromMap()parsing, andtoMap()serialization in Dart API backend. - b. [landmark_repository.dart] (API Repository): Added
isOwnedPoleparameter handling increateLandmark()andupdateLandmark(). - c. [landmark_controller.dart] (API Controller): Extracted
payload['isOwnedPole']in REST HTTP endpoints (POST /landmarksandPUT /landmarks/<id>) to preserve checkbox state in MongoDB. - d. [pubspec.yaml]: Bumped version to
0.0.7+23.
Git Commit Tag:
ispana-v0.0.7a23 Focus: Fix Map Management UI Freeze & Unused Field Warning
- a. [map_display_view.dart] (Widget): Replaced synchronous main-thread
BuiltInMapCachingProviderwith non-blockingNetworkTileProviderto prevent UI freeze on map startup, and fixed?_searchMarkernull-aware syntax inMarkerLayer. - b. [landmark_form_page.dart] (Page): Removed unused private field
_landmarkIconsand unreferenced style handlers. - c. [pubspec.yaml]: Bumped version to
0.0.7+22.
Git Commit Tag:
ispana-v0.0.7a22 Focus: Landmark Form Simplification (Moved Mark Own Pole to General Tab & Removed Style Tab)
- a. [landmark_data_section.dart] (Widget): Moved the Ini Tiang Sendiri (Mark Own Pole) checkbox tile directly into the Umum (General) tab form.
- b. [landmark_form_page.dart] (Page): Removed the Gaya (Style) sub-menu tab from the landmark modal dialog and reduced tab count to 3 (Umum, Infrastruktur, Perangkat Keras). Cleaned up unused style handlers & imports.
- c. [pubspec.yaml]: Bumped version to
0.0.7+21.
Git Commit Tag:
ispana-v0.0.7a21 Focus: Fix HTTP 301 Moved Permanently Error (Separate API BaseUrl & Public Verification Domain)
- a. [api_config.dart] (Config): Restored
ApiConfig.baseUrlback to API backend server (http://103.196.40.140:8080) to prevent Nginx HTTP-to-HTTPS 301 redirects on API calls, and addedApiConfig.publicDomain(http://swainet.id) specifically for public invoice links. - b. [invoice_view.dart] (Widget): Updated invoice PDF download & WhatsApp sharing links to utilize
ApiConfig.publicDomain(http://swainet.id/verify/invoice/...) while preserving direct API server connectivity for app requests. - c. [pubspec.yaml]: Bumped version to
0.0.7+20.
Git Commit Tag:
ispana-v0.0.7a20 Focus: Domain Invoice PDF URL & Auto-Populating Brand Settings Form
- a. [api_config.dart] (Config): Updated default
ApiConfig.baseUrlfrom IP:PORT (http://103.196.40.140:8080) to production domain (http://swainet.id) so invoice PDF links are formatted with the domain. - b. [brand_settings_view.dart] (Widget): Added automatic
fetchVendorSettings()post-frame callback ininitState()and implemented reactive_populateFromBrand()syncing so existing brand settings (Business Name, WhatsApp Number, Address, Logo, Banner) are populated into the form. - c. [pubspec.yaml]: Bumped version to
0.0.7+19.
Git Commit Tag:
ispana-v0.0.7a19 Focus: Auto-Fetch Vendor Settings & Compact Autocomplete Template Selection Field
- a. [whatsapp_send_dialog.dart] (Widget): Added automatic
fetchVendorSettings()execution ininitState()so custom saved message templates from vendor settings are always loaded when opening the dialog. - b. [whatsapp_send_dialog.dart] (Widget): Replaced the template action chips bar with a compact, clean
Autocomplete<Map<String, dynamic>>FormField (Pilih / Cari Templat Pesan (Pintasan)) with live filtering by template title, shortcut, or body. - c. [pubspec.yaml]: Bumped version to
0.0.7+18.
Git Commit Tag:
ispana-v0.0.7a18 Focus: Reliable Shortcut Expansion & Built-In Template Fallback
- a. [whatsapp_send_dialog.dart] (Widget): Added automatic pre-send shortcut expansion inside
_handleSend()so clicking "Kirim WhatsApp" with raw shortcut text (e.g./hello) instantly expands into template text before sending. - b. [whatsapp_send_dialog.dart] (Widget): Implemented live
onChangedshortcut expansion detection (expanding shortcuts when space or newline is typed) and added built-in fallback template defaults (/hello,/tagihan,/terimakasih). - c. [pubspec.yaml]: Bumped version to
0.0.7+17.
Git Commit Tag:
ispana-v0.0.7a17 Focus: Auto-Sanitization of Phone Numbers (Country Code Conversion)
- a. [customer_form_page.dart] (Page): Auto-sanitizes input phone numbers starting with
0(e.g.08123456789) into international country code format (628123456789) upon customer registration & edit. - b. [whatsapp_send_dialog.dart] (Widget): Normalizes target phone numbers in direct messaging modal dialog to ensure leading
0is converted to country code62. - c. [pubspec.yaml]: Bumped version to
0.0.7+16.
Git Commit Tag:
ispana-v0.0.7a16 Focus: Full WhatsApp Integration (Customer Card Button, Invoice Send, Shortcut Engine & History Tab)
- a. [customer_management_view.dart] (Widget): Added a green WhatsApp IconButton on the bottom-right of customer card opening direct chat modal dialog.
- b. [whatsapp_send_dialog.dart] (Widget): Implemented a modal dialog supporting shortcut auto-expansion (e.g. typing
/helloand pressing Enter automatically fills template text and replaces variables{customerName},{invoiceNumber},{amount}) and quick-pick action chips. - c. [invoice_view.dart] (Widget): Integrated direct WhatsApp sending in the Faktur / Invoice sub-menu table with prefilled invoice payment notice template.
- d. [whatsapp_history_view.dart] (Widget): Created the "Riwayat WhatsApp" sub-menu tab displaying sent history logs data table with recipient type badges, source badges, status, and extended Floating Action Button (FAB) with recipient autocomplete suggestions.
- e. [vendor_features.dart] & [app_localization.dart]: Registered
whatsapp_historysub-feature key and localized all strings in Indonesian & English. - f. [pubspec.yaml]: Bumped version to
0.0.7+15.
Git Commit Tag:
ispana-v0.0.7a15 Focus: Fix BuildContext Across Async Gaps Warning
- a. [whatsapp_gateway_settings_view.dart] (Widget): Replaced
context.mountedchecks after asynchronous operations withmounted(State.mounted) to satisfy Dart'suse_build_context_synchronouslylinter rule. - b. [pubspec.yaml]: Bumped version to
0.0.7+14.
Git Commit Tag:
ispana-v0.0.7a14 Focus: Responsive Draft Data Table & Creator Name Resolution
- a. [landmark_drafts_list_view.dart] (Widget): Wrapped
DataTableinLayoutBuilderwith responsive min-width constraint (math.max(constraints.maxWidth, 700.0)) so the table expands responsively across 100% of desktop/web views. - b. [landmark_drafts_list_view.dart] (Widget): Added
_fetchStaffNames()viaEmployeeServiceto resolve raw creator token IDs (e.g.3SY!C8) into human-readable staff names (e.g.John Doe) in the "Dibuat Oleh" column. - c. [pubspec.yaml]: Bumped version to
0.0.7+11.
Git Commit Tag:
ispana-v0.0.7a11 Focus: Landmark Draft Sub-Menu DataTable & Live Background Sync
- a. [landmark_drafts_list_view.dart] (Widget): Replaced bulky card layout with a clean, horizontal-scrolling
DataTable(Tipe, Nama Markah, Dibuat Oleh, Tanggal, Aksi). Preserved click-to-view feature opening read-only draft form. - b. [landmark_drafts_list_view.dart] (Widget): Implemented a periodic 5-second background sync timer while mounted so newly submitted drafts automatically appear live for admins without manual refresh.
- c. [landmark_provider.dart] (Provider): Updated
approveDraft()to call bothfetchLandmarks()andfetchDrafts()for immediate real-time state resolution. - d. [pubspec.yaml]: Bumped version to
0.0.7+10.
Git Commit Tag:
ispana-v0.0.7a10 Focus: Fix App Crash on Map Marker Render (Safeguard Splitter Ratio Parsing)
- a. [map_landmark.dart] (Model): Wrapped
getEffectiveColor()in atry-catchsafety handler and added range checks forsplitterRatiostring splitting to preventRangeErrorcrashes when splitter ratios lack colon formatting. - b. [pubspec.yaml]: Bumped version to
0.0.7+9.
Git Commit Tag:
ispana-v0.0.7a9 Focus: Restrict Landmark Editing to Landmark Sub-Menu List
- a. [landmark_detail_sheet.dart] (Widget): Removed the edit button icon from the landmark detail popup sheet header so landmark editing can only be launched from the Landmark sub-menu list view ("Markah Tanah" tab).
- b. [pubspec.yaml]: Bumped version to
0.0.7+8.
Git Commit Tag:
ispana-v0.0.7a8 Focus: Landmark Pin Style & Color Revision (Dynamic Port & Status Colors + Color Wheel Picker)
- a. [map_landmark.dart] (Model): Added
getEffectiveColor()method calculating dynamic status colors forodp,olt,jc,bts,otbbased on non-zero port capacity andonubased on customer status. - b. [map_display_view.dart] (Widget): Updated marker pin rendering, polylines, search suggestions, and dimmed opacity for unconfigured ONU pins.
- c. [landmark_detail_sheet.dart] & [landmarks_list_view.dart] (Widgets): Updated landmark headers and list items to display effective status colors.
- d. [landmark_style_section.dart] (Page): Restricted customizable colors to
pop&defaultthemes, added Hex input field, interactive HSV Color Wheel dialog, and dynamic color notification notice for hardware devices. - e. [landmark_form_page.dart] (Page): Added silent color normalization on edit when saving non-customizable landmark records to database.
- f. [pubspec.yaml]: Bumped version to
0.0.7+7.
Git Commit Tag:
ispana-v0.0.7a7 Focus: Remove Duplicated AppBar Search Bar in Maps Management
- a. [maps_management_page.dart] (Frontend): Removed redundant AppBar title
TextFieldthat caused a double search bar whenfilterQuerywas active. - b. [pubspec.yaml]: Bumped version to
0.0.7+6.
Git Commit Tag:
ispana-v0.0.7a6 Focus: Standardized Proportional Card System Across Staff, Customer & Radius Routers
- a. [employee_management_page.dart]: Standardized
EmployeeCardlayout to 175px grid height with 52x52 soft avatar container, zero blank space, and uniform borders. - b. [customer_management_view.dart]: Converted Customer view to
GridView.builderwith 175px grid height, 52x52 customer avatar container, and 3-dots popup menu. - c. [radius_management_view.dart]: Converted Router view to
GridView.builderwith 175px grid height, 52x52 router icon container, and top ID/status chips. - d. [pubspec.yaml]: Incremented version to
0.0.7+41.
Git Commit Tag:
ispana-v0.0.7a41 Focus: Role Form Top-Right Header Action & Redundant Cancel Button Removal
- a. [role_management_page.dart]: Placed the primary
BUAT PERAN/SIMPANbutton in the top-right header bar next to the close button for seamless design alignment with Settings. - b. [role_form_page.dart]: Removed the redundant
BATALbutton from the bottom footer bar since the top-left<-back button handles navigation. - c. [pubspec.yaml]: Incremented version to
0.0.7+40.
Git Commit Tag:
ispana-v0.0.7a40 Focus: Single-Layer Role Management Dialog, CSV Import Permission Cleanup & Modal Overflow Fix
- a. [role_management_page.dart] & [role_form_page.dart]: Refactored
RoleManagementDialogto switch views inline (List <-> Form) inside a single modal container, eliminating double-stacked popups. - b. [vendor_features.dart]: Removed
customer_import(Impor CSV) sub-feature entry from the role permission checklist. - c. [customer_import_view.dart]: Wrapped title/description text in
Expandedinside the CSV import modal header to eliminate pixel overflow errors. - d. [pubspec.yaml]: Incremented version to
0.0.7+39.
Git Commit Tag:
ispana-v0.0.7a39 Focus: Reusable PhotoUploadWidget Integration & Account Profile Global SIMPAN Binding
- a. [account_security_view.dart]: Removed redundant
Simpan Profilbutton and bound saving to the top globalSIMPANbutton header. - b. [photo_upload_widget.dart]: Decoupled
PhotoUploadWidgetfromLandmarkProviderso it can be reused globally across all app features. - c. [account_security_view.dart] & [employee_form_page.dart]: Integrated
PhotoUploadWidgetfor uniform image picker and upload experience. - d. [auth_repository_impl.dart], [auth_remote_data_source.dart] & [auth_controller.dart]: Resolved all backend API compile errors.
- e. [pubspec.yaml]: Incremented version to
0.0.7+38.
Git Commit Tag:
ispana-v0.0.7a38 Focus: Employee Form Profile Picture Field & Account Profile Settings Form (Phone, Photo, Address)
- a. [employee_form_page.dart]: Added profile picture field with live 54x54 soft rounded square avatar preview container in
EmployeeFormDialog. - b. [employee_management_page.dart]: Rendered uploaded network photo images inside the staff card avatar container with initial letter fallback.
- c. [account_security_view.dart]: Added Profil Akun card allowing users to update their WhatsApp number (with
InputSanitizer), profile picture URL, and address. - d. [auth_controller.dart] & [auth_repository_impl.dart]: Added
PUT /v1/auth/profileendpoint in API to persist user profile updates indata_authanddata_employees. - e. [pubspec.yaml]: Incremented version to
0.0.7+37.
Git Commit Tag:
ispana-v0.0.7a37 Focus: Staff Square Avatar, PopupMenu Contrast Fix, Employee Form Dialog Popup & Responsive Role Table
- a. [employee_management_page.dart]: Added a square avatar container with soft border radius displaying staff initials to balance the card layout.
- b. [employee_management_page.dart]: Enhanced PopupMenu contrast and elevation so item list options stand out clearly against dark card surface.
- c. [employee_form_page.dart]: Refactored Employee Create/Edit form from a full-page route into a modal dialog (
EmployeeFormDialog.show). - d. [role_management_page.dart]: Made the role list table 100% responsive (expanding to
double.infinitywidth). - e. [pubspec.yaml]: Incremented version to
0.0.7+36.
Git Commit Tag:
ispana-v0.0.7a36 Focus: Staff Page Double Navbar Fix, Dropdown Filter Removal & Icon-Only FloatingActionButton
- a. [employee_management_page.dart]: Removed duplicate inner
AppBarandVendorDrawer, fixing the double navbar issue. - b. [employee_management_page.dart]: Completely removed status dropdown filter from top header row to eliminate pixel overflow.
- c. [employee_management_page.dart]: Converted FloatingActionButton to an icon-only button (
Icon(Icons.person_add_outlined)). - d. [pubspec.yaml]: Incremented version to
0.0.7+35.
Git Commit Tag:
ispana-v0.0.7a35 Focus: Staff Page Header Overflow Fix, FAB Refactoring, Outdated Warning Card Removal & Centralized Input Sanitizers
- a. [employee_management_page.dart]: Moved
+ Tambah Karyawanaction to a FloatingActionButton (FloatingActionButton.extended) and cleaned up top header action row to eliminate pixel overflow. - b. [employee_form_page.dart]: Removed outdated
AppLocale.employeeSignInInfowarning card from employee form. - c. [input_sanitizer.dart]: Created centralized
InputSanitizerutility in both Flutter frontend (02_ispana) and backend API (01_API) for mandatory email lowercasing and phone country code conversion. - d. [staff_repository.dart], [customer_form_page.dart], [auth_provider.dart] & [auth_repository_impl.dart]: Enforced
InputSanitizeracross forms, providers, and backend repositories. - e. [pubspec.yaml]: Incremented version to
0.0.7+34.
Git Commit Tag:
ispana-v0.0.7a34 Focus: Staff Phone Country Code Auto-Conversion, Staff Page UI/UX Modernization & WhatsApp Recipient Autocomplete
- a. [employee_form_page.dart] & [staff_repository.dart]: Enforced automatic phone country code conversion (converting
08...to628...) on frontend form submission and backend database insertion. - b. [employee_management_page.dart]: Redesigned Staff Management page UI/UX to match Customer Management styling with live search, status filter, ID badges, role chips, and WhatsApp quick actions.
- c. [whatsapp_send_dialog.dart]: Enhanced recipient autocomplete search so searching by customer or staff name automatically populates and replaces text field with their WhatsApp phone number.
- d. [pubspec.yaml]: Incremented version to
0.0.7+33.
Git Commit Tag:
ispana-v0.0.7a33 Focus: Option C Role Permission Selection & Global Settings Architecture Refactoring
- a. [app_appearance_view.dart]: Created shared core widget for universal theme and language selection across all tiers.
- b. [account_security_view.dart]: Created shared core widget for change password & security verification across all tiers.
- c. [vendor_features.dart]: Added
isPermissionConfigurableandsupportedLevelsper feature, excluding universal features (dashboardandsettings_account). - d. [role_form_page.dart]: Updated
RoleFormDialogto filter out universal features, dynamically build supported permission level segments, and supportclaimlevel access. - e. [auth_provider.dart] & [auth_middleware.dart]: Updated permission engines to evaluate
|claimlevel access. - f. [settings_management_page.dart]: Refactored settings tabs to isolate vendor company settings and create a dedicated
Accounttab for change password. - g. [pubspec.yaml]: Incremented version to
0.0.7+32.
Git Commit Tag:
ispana-v0.0.7a32 Focus: Strict Read-Write Role Level Enforcement (Delete Button Removal)
- a. [auth_provider.dart] (Frontend): Refactored
_hasLevelPermissionso delete level strictly requires|deletepermission and updatedisSupergetter. - b. [auth_middleware.dart] (Backend): Enforced strict delete level validation in
_hasLevelPermissionand updatedhasPermissionbypass for employees. - c. [staff_repository.dart] (Backend): Ensured employee auth accounts are saved with
role: 1(Employee), reservingrole: 0exclusively for primary Vendor Owner. - d. [pubspec.yaml]: Bumped version to
0.0.7+5.
Git Commit Tag:
ispana-v0.0.7a5 Focus: Dev Tools Cleanup
- a. [build.ps1]: Removed unused
$CHANGELOG_DIRvariable assignment.
Git Commit Tag:
ispana-v0.0.7a4 Focus: Version Transition to v0.0.7
- a. [pubspec.yaml]: Bumped version to
0.0.7+1to initiate the v0.0.7 development cycle. - b. [app-v0-0-7.astro]: Created standalone Astro changelog page for tracking v0.0.7 iterations.
Git Commit Tag:
ispana-v0.0.7a1