Skip to content
This repository was archived by the owner on Mar 4, 2026. It is now read-only.

Releases: 01satria/LauncherApp

SATRIA LAUNCHER v1.5

19 Feb 13:41

Choose a tag to compare

Version 1.5 (Release Date: February 19, 2026)

✨ Added

  • Dashboard Popup: Replaced AssistantPopup when clicking the dock avatar with a bottom sheet design featuring a pill bar. Supports drag gestures (automatically snapping to 45% or near fullscreen) and scrolling.
  • 4 Interactive Tool Cards in Dashboard:
    • Weather: Displays weather information via the Open-meteo API (no API key required).
    • Money Exchange: Checks currency exchange rates via the open.er-api.com API.
    • To-Do List: Daily task tracking stored directly in memory (RAM) to keep it incredibly lightweight.
    • Countdown: Day countdown timer featuring a custom, pure React Native calendar date picker.
  • Real-Time Preview: Additions or changes to the To-Do List and Countdown now update instantly on the dashboard preview without needing to close and reopen the popup.

🔄 Changed

  • Dashboard Header Layout: The avatar is now centered vertically, positioned alongside a digital clock that updates every 10 seconds and the assistant message area.

⚡ Optimized

  • RAM Usage (Idle & Active): Removed the refreshApps() call that triggered every time AppState became active (when returning from another app) to prevent unnecessary memory consumption.
  • App Icon Rendering: Removed hundreds of Animated.Value nodes in SafeAppIcon (the app grid) and replaced them with standard state-based opacity control.
  • TypingIndicator Animation: Consolidated 3 separate dot animations into 1 synchronized component to reduce rendering load.
  • FlatList Performance: Reconfigured default render limits to ensure off-screen items are recycled much more aggressively.

🐛 Fixed

  • Close Animation Lag: Fixed the 0.5-second freeze when dragging the dashboard down to close by manually tracking the real-time frame position and removing stopAnimation.
  • Modal Closing: Removed all animation durations when closing modals or the dashboard so they close instantly without any delay.
  • Date Picker Crash: Removed the @react-native-community/datetimepicker external dependency that caused a blank screen when opening the dashboard, replacing it with a custom native React Native calendar component.
  • Drag & Double Positioning Bug: Fixed position calculations that previously threw the sheet off-screen, and adjusted the panResponder area so the sheet can still be dragged from the top even when positioned over a ScrollView.

🗑️ Removed

  • The automated assistant message feature that operated based on a daily time schedule.
  • All logic, state, and UI components related to the red dot notification badge on the avatar and dock.

Feedback and contributions welcome!


@01satria

SATRIA LAUNCHER v1.4

18 Feb 14:03
8a8279a

Choose a tag to compare

Version 1.4 (Release Date: February 18, 2026)

v1.4 - Layout Modes & UX Overhaul

🎨 New Features

  • Dual Layout Mode - Switch between Grid (4-column) and List (Niagara-style)

    • Grid mode: Traditional 4-column layout
    • List mode: Single column with left-aligned icons + names
    • List mode (no names): Center-aligned icons only
    • Toggle in Settings with visual button selector (⊞ Grid / ☰ List)
    • Persistent across app restarts via layout_mode.txt
    • Smooth transition with zero lag, instant switch
  • 💬 Fullscreen Assistant Chat - Complete chat UI redesign

    • Fullscreen black overlay for immersive experience
    • Ultra-smooth 60 FPS scroll (no bubble photos, flat hierarchy)
    • Bilingual fuzzy matching (English + Indonesian)
    • Handles typos: "wht is time" → "what is time", "jamberapa" → "jam berapa"
    • Levenshtrin distance with similarity threshold 0.72-0.82
    • Period-based auto messages (morning, afternoon, evening, night, late night)
    • Unread badge on dock avatar (red dot indicator, polls every 10s)
    • Hardware back button support for native Android feel
    • Zero scroll lag with optimized FlatList config
  • 🔔 Smart Period Messages - Auto-send caring reminders

    • 04:00-11:00: "Good morning! ☀️ Wake up and conquer"
    • 11:00-15:00: "Had lunch? 🍔 Don't skip meals!"
    • 15:00-18:00: "Take a break ☕ You must be tired"
    • 18:00-22:00: "Time to relax 🌙 Unwind for the day"
    • 22:00-04:00: "Put the phone down! 😠 You need rest"
    • Messages sent automatically at period transitions (checked every 60s)
    • Badge notification for unread messages (red dot on avatar)
    • Chat resets daily at 01:00 AM
  • 🧹 Smart Cache Management - Background optimization without refresh

    • Progressive clearing strategy: 5s (basic), 30s (deep)
    • Clears decoded image bitmaps (~15MB RAM saved)
    • Triggers garbage collection hints
    • Never clears app list or user data (no refresh on return)
    • Cancels timers if user returns quickly (<5s = zero overhead)
    • Images re-decode instantly on return (<50ms, imperceptible)
    • Zero visible impact on user experience

⚡ Performance Optimizations

  • 🚀 Chat Scroll Performance - Fullscreen chat optimizations

    • Removed all bubble animations (instant render)
    • Removed avatar images in chat bubbles (50% less Views per message)
    • Flat View hierarchy: 3 Views vs 7 before (-57%)
    • requestAnimationFrame for scroll (no setTimeout overhead)
    • Stable keyExtractor and renderItem callbacks
    • windowSize: 5, maxToRenderPerBatch: 10
    • Scroll FPS: 30-45 → 60 locked (+100%)
    • Memory: 45MB → 22MB in chat (-51%)
  • 💾 Memory Efficiency - Code cleanup and optimization

    • Removed isActive state (redundant, AppState used directly)
    • Removed dead code: backgroundTimerRef, deepCacheTimerRef refs
    • Removed requestAnimationFrame in app filtering (unnecessary)
    • Lazy animation init removed (direct useRef(new Animated.Value(0)))
    • Removed unused imports: width from modals
    • Removed unused parameters: msgId from notifyNewMessage()
    • Removed unused state: _lastAssistantMsgId global
    • Background RAM: 45MB → 30-35MB (-15MB with cache clear)
  • ⚙️ App Management

    • Dock pin limit enforced (max 4 apps, consistent with design)
    • "Pin to Dock" button auto-hides when dock full (4 apps)
    • Smart logic: Show "Unpin" if app already docked (even when full)
    • dockCount prop passed to AppActionModal
    • showPinButton = isDocked || dockCount < 4 logic

🎯 UI/UX Improvements

  • 📱 iOS-Style Bottom Sheets - Complete modal redesign

    • Settings & Action modals now bottom sheets (iOS-inspired)
    • Drag handle at top center (visual affordance for drag-to-close)
    • Removed close button (tap overlay or back to dismiss)
    • PanResponder drag-to-close with smooth translateY animation
    • Drag threshold: 80px vertical or velocity 0.5
    • Native Android back button support (BackHandler)
    • Smooth translateY animation from bottom (no scale)
    • Animated.timing (150ms) instead of Animated.spring (faster)
  • 🎨 Layout Mode Selector - Settings UI addition

    • Visual toggle buttons: "⊞ Grid" / "☰ List"
    • Active mode highlighted in green (#27ae60)
    • Inactive mode grayed out (#666)
    • Single tap to switch modes instantly
    • Background: dark toggle container (#1a1a1a)
    • Persistent state saved to layout_mode.txt
  • 💬 Chat UI Improvements

    • Fullscreen black background (#000) for immersive feel
    • Header with avatar (38px circle) + online status badge
    • No bubble photos (performance + visual cleanliness)
    • Typing indicator with 3 bouncing dots (AppState-aware)
    • Custom send icon (pure RN paths, no dependencies)
    • Time stamps inside bubbles (bottom right, 11px)
    • User bubbles: green (#27ae60), right-aligned, 4px bottom-right radius
    • Assistant bubbles: dark gray (#2a2a2a), left-aligned, 4px bottom-left radius
    • StatusBar: light-content + #000 background

🐛 Bug Fixes

  • List Mode Icons - Fixed icons not rendering in list mode

    • Root cause: Tried to use base64 Image component
    • Fix: Use SafeAppIcon like grid mode (handles file:// paths)
    • Icons now render properly at 52px in list mode
  • Period Transition Logic - Fixed period detection

    • Root cause: Used === equality check, missed time ranges
    • Fix: Use range checks >= and < for hour boundaries
    • Removed circular reference to _cachePeriod in getCurrentPeriod()
  • Chat Cache Initialization - Fixed memory leak

    • Root cause: Always created new auto message on load
    • Fix: Check cache first with initChat() before creating message
    • Saves RAM, prevents duplicate messages
  • Timer Leaks - Fixed AssistantPopup timer cleanup

    • Root cause: periodTimerRef not cleared on unmount
    • Fix: Added cleanup in two places (unmount + period change)
    • Prevents "setState on unmounted component" warnings
  • Modal Animations - Removed unused animation code

    • Removed scale animations (not used in bottom sheets)
    • Removed unused animation refs and cleanup
    • Cleaner, simpler animation logic
  • Fuzzy Matching - Fixed bilingual query handling

    • Handles English: "what time", "how are you", "good morning"
    • Handles Indonesian: "jam berapa", "apa kabar", "selamat pagi"
    • Mixed patterns: "wht is time now", "jamber sekarang"
    • Similarity threshold: 0.78 default, 0.72 for time (loose), 0.82 for greetings (strict)
  • Scroll Performance - Fixed chat lag

    • Removed complex View hierarchy (7 → 3 Views)
    • Removed image decoding overhead (no bubble photos)
    • Removed bubble fade-in animations
    • Result: 60 FPS locked, butter smooth

🔧 Code Quality

  • 🧹 Cleanup (App.tsx)

    • Removed isActive state (use AppState directly)
    • Removed backgroundTimerRef, deepCacheTimerRef (unused)
    • Removed requestAnimationFrame in filtering (unnecessary)
    • Changed lazy animation init → direct useRef(new Animated.Value(0))
    • Changed Animated.springAnimated.timing (150ms) for modals
    • Combined dockApps + isDocked in single useMemo
    • Removed setAllApps from destructuring (unused)
  • 🧹 Cleanup (AssistantPopup.tsx)

    • Fixed getCurrentPeriod() — use range checks, not equality
    • Added initChat() — check cache before creating message
    • Removed _lastAssistantMsgId global (unused)
    • Removed msgId parameter from notifyNewMessage() (unused)
    • Added periodTimerRef with proper cleanup in two places
  • 🧹 Cleanup (SettingsModal.tsx)

    • iOS-style bottom sheet with drag handle
    • Removed close button (tap overlay or back to dismiss)
    • Changed animation: scale → translateY from bottom
    • Added PanResponder for drag-to-close
    • Added BackHandler for Android back button
    • Removed unused import: width
  • 🧹 Cleanup (AppActionModal.tsx)

    • Same bottom sheet redesign as Settings
    • Drag handle, PanResponder, BackHandler
    • Removed close button
    • Added dockCount prop for smart pin button logic
    • Removed unused import: width
  • Optimizations

    • Levenshtrin uses Uint16Array instead of 2D array (4× less memory)
    • Regex compiled once at module level (RE_PUNCT, RE_SPACE)
    • FlatList: windowSize: 5, maxToRenderPerBatch: 10
    • Chat: initialNumToRender: 20, no onContentSizeChange
    • Stable callbacks: keyExtractor, renderItem with useCallback
    • Typing dots pause in background (AppState listener)

Feedback and contributions welcome!


@01satria

SATRIA LAUNCHER v1.2a

15 Feb 09:23

Choose a tag to compare

Version 1.2a (Release Date: February 16, 2026)

Major Changes

  • Complete Modular Refactor: Restructured from single 700+ line file to 13 well-organized modular files for better maintainability and performance.
  • New Flexible Dock System: Redesigned dock with avatar-first layout, dynamic width adjustment, and visual separator between assistant and pinned apps.
  • Removed Persistent Notifications: Eliminated auto-appearing notifications in favor of on-demand assistant popup for less intrusive user experience.

New Features

  • Assistant Popup: Tap the avatar in dock to view time-based personalized messages (5 different periods: Late Night, Morning, Afternoon, Evening, Night).
  • Dynamic Dock Width: Dock automatically adjusts width based on number of pinned apps (supports 0-4 apps).
  • Visual Separator: Clean vertical gray line between assistant avatar and pinned apps when apps are present.
  • MaskedView Fade Effect: Apps smoothly fade when approaching dock using native masking (no background darkening).
  • Center Dock Alignment: All dock elements perfectly centered with no gaps.

User Interface Improvements

  • Dock avatar always visible on the left side for quick assistant access.
  • Smooth slide-up animation for assistant popup with backdrop overlay.
  • Settings now accessible via long-press on dock (500ms) instead of separate button.
  • Apps in grid fade naturally near bottom using GPU-accelerated masking.
  • Cleaner visual hierarchy with improved spacing and alignment.

Performance Optimizations

  • Background Timer Elimination: Removed all periodic notification checks, reducing RAM usage by ~30% in background (150MB → 90MB).
  • Battery Life Improvement: Eliminated background processing results in ~40% less battery drain.
  • Optimized Component Structure: Split into focused components (SimpleDock, AssistantPopup, AppItem, etc.) for better hot reload and debugging.
  • Reduced Bundle Size: Cleaned up unused code and dependencies (~11-15MB total).
  • Improved FlatList Performance: Maintained 60 FPS with optimized rendering and memoization.

Code Quality

  • Better Organization: 13 modular files across 5 directories (components, hooks, utils, types, constants).
  • Easier Maintenance: Average 85 lines per file vs 700+ in single file (~88% reduction).
  • Enhanced Testability: Components can now be tested in isolation.
  • Improved Collaboration: Multiple developers can work on different features simultaneously.
  • Better Git Diffs: Changes localized to specific files instead of massive single-file diffs.

Technical Details

  • Added @react-native-masked-view/masked-view for smooth gradient fade effect.
  • Implemented dynamic width calculation: avatarWidth + separatorWidth + (appsWidth * count).
  • Fade gradient starts at 85% from top using LinearGradient mask.
  • Popup positioned 110px from bottom to float above dock.
  • All animations use native driver for 60fps performance.

Removed

  • Persistent notification system and all related timers.
  • Auto-appearing assistant messages at period changes.
  • Background notification status checking (saved ~60% background RAM).
  • Unused notification handlers and state management.
  • LinearGradient overlay layer (replaced with MaskedView).

Dependencies

  • Added: @react-native-masked-view/masked-view for fade effect.
  • Required: react-native-linear-gradient (for gradient mask).
  • Total Dependencies: 2 main UI libraries, minimal footprint.

Migration Notes

  • Update index.js to import from ./src/App instead of ./App.
  • Install new dependency: npm install @react-native-masked-view/masked-view.
  • All previous features preserved (hide/pin/uninstall/settings/custom avatar).
  • No breaking changes to user data or preferences.

Documentation

  • Added comprehensive guides: README.md, STRUCTURE.md, MIGRATION.md, FILE_LOCATIONS.md.
  • Included setup scripts for Windows (CMD/PowerShell) and Unix/Mac.
  • Complete CHANGELOG with version history.
  • MaskedView implementation guide with customization options.
  • Visual structure maps and quick reference guides.

What's Next?

  • Clock widget at top of screen.
  • Weather widget integration.
  • Custom wallpaper support.
  • Gesture navigation (swipe actions).
  • App folders for better organization.
  • Theme customization beyond dark/light.
  • Backup/restore settings feature.

Known Issues

  • MaskedView requires manual installation (npm install @react-native-masked-view/masked-view).
  • First-time setup requires ./gradlew clean after installing dependencies.

Feedback and contributions welcome!


Stats:

  • Files: 13 modular components
  • Total Lines: ~1,621 (well-organized)
  • RAM (Active): ~90MB
  • RAM (Background): ~50MB
  • APK Size: ~11-15MB
  • Performance: 60 FPS maintained

@01satria

SATRIA LAUNCHER v1.2

14 Feb 05:42
d9aadae

Choose a tag to compare

SATRIA LAUNCHER

v1.2 - 🎨 UI/UX Improvements - Major Feature Overhaul & Performance Optimization

Style App Icons

  • ✅ Hardware-accelerated rendering with no RAM overhead

Enhanced Dock System

  • ✅ simple style dock with max 5 pinned apps
  • ✅ Dual-view dock: Toggle between Assistant Message & Pinned Apps
  • ✅ Click avatar to switch views
  • ✅ Long press avatar to open settings
  • ✅ 360° avatar rotation animation on view toggle
  • ✅ Smooth slide transition (message slides right, dock slides left)
  • ✅ Fixed height positioning (no bottom cutoff)
  • ✅ Apps in dock automatically removed from home screen drawer

Advanced App Management

  • ✅ Long press any app → Action modal (Pin/Hide/Uninstall)
  • ✅ Pin to Dock: Add up to 5 apps to dock
  • ✅ Auto-unhide when pinning hidden apps to dock
  • ✅ Auto-remove from dock when hiding apps
  • ✅ Smart filtering: Hidden apps excluded unless toggle enabled
  • ✅ Dock apps excluded from main app list

Settings & Customization

  • ✅ Toggle "Show Hidden Apps" (view/edit hidden apps)
  • ✅ Toggle "Show App Names" (minimalist mode)
  • ✅ Custom avatar upload (200x200 max, base64 storage)
  • ✅ Editable username for personalized messages
  • ✅ All settings persist across sessions

Smooth 60 FPS Animations

  • ✅ App icon press: Spring scale animation (1 → 0.85)
  • ✅ Dock app press: Spring scale animation (1 → 0.8)
  • ✅ Icon fade-in on load (150ms with easing)
  • ✅ Dock view transition: Parallel slide + rotate (250ms)
  • ✅ Action modal: Spring scale + slide up + fade (smooth pop-up)
  • ✅ Settings modal: Spring scale + slide up + fade (smooth entrance)
  • ✅ All animations use useNativeDriver: true (UI thread, zero JS lag)

Split APK Architecture

  • ✅ ABI Split for direct APK (15MB per architecture)

What's Next?

  • Include theme support,
  • Widget integration,
  • More personalization options.
    Feedback welcome!

@01satria

SATRIA LAUNCHER v1.1c

12 Feb 10:12

Choose a tag to compare

Version 1.1c (Release Date: February 12, 2026)

Fixed

  • Fixed launcher force close / crash that occurred several seconds after uninstalling an app.
  • Resolved race condition and stale icon references caused by react-native-launcher-kit icon cache after package removal.

Optimizations

  • Implemented optimistic UI removal + FlatList remount (listKey) for cleaner uninstall flow.
  • Added multiple scheduled refreshApps() calls after uninstall to ensure fresh data and prevent dangling references.
  • Strengthened SafeAppIcon component with better error handling and state reset.
  • Removed risky LauncherPackageReceiver registration in MainApplication.kt that was causing crashes during package removal.
  • Cleaned up UninstallModule and MainApplication registration for better stability.
  • Optimized uninstall timing between UI update and system dialog.
  • Reduced potential memory leaks related to native icon loading and BroadcastReceiver.
  • Comprehensive update to the User Interface and User Experience.

New Features

  • Added Uninstall App functionality. Long-press any app icon to open the action menu, then select "Uninstall" to remove the application directly through the system uninstall dialog.
  • Official Signed APK, No more red warnings from Google Play Protect! Install with confidence.

What's Next?

  • Include theme support,
  • Widget integration,
  • More personalization options.

Feedback welcome!

@01satria

Satria Launcher v1.0

06 Feb 11:03

Choose a tag to compare

Version 1.0 (Release Date: February 06, 2026)

  • Displays your installed apps in an intuitive grid layout for easy access.
  • Minimalist and unobtrusive home screen that blends seamlessly with your wallpaper.
  • A bottom dock with time-based inspirational messages to keep you motivated throughout the day.
  • Perfect for users seeking a personalized, bloat-free home screen experience. Download now and customize your Android device!
  • Full app grid customization (icon size, spacing, and sorting).
  • Dynamic motivational quotes updated based on time of day (morning energy boosts, evening reflections).
  • Low battery and memory usage for smooth performance on all devices.

What's Next? Future updates will include theme support, widget integration, and more personalization options. Feedback welcome!

@01satria

Satria Launcher v1.1a

09 Feb 04:50

Choose a tag to compare

Version 1.1a (Release Date: February 09, 2026)

Optimizations

  • Made the app significantly lighter overall while preserving all core functionality and UI appearance.
  • Reduced RAM usage to ensure very low memory footprint during operation.

Feature Removals

  • Removed the assistant name feature.
  • Removed the toast notification that appears when the app is opened.

New Features

  • Added a lightweight refresh mechanism that triggers only once when an app is installed or uninstalled. This does not activate on returning to home screen or closing all apps. Implemented using Native BroadcastReceiver in Android for minimal RAM impact and efficiency.

What's Next? Future updates will include theme support, widget integration, and more personalization options. Feedback welcome!

@01satria