This document outlines all the fixes, improvements, and new features implemented in VCode v1.0.0.
Issue: Clicking Git Repository did nothing, no loading, no feedback
Fix Implemented:
- Complete rewrite of GitService with proper Process.run implementation
- Added async/await handling for all Git operations
- Implemented proper error handling with user feedback
- Added loading indicators for long operations
- Created comprehensive Git tab UI with three sub-tabs (Changes, Commits, Branches)
- Added real-time status updates
- Implemented file staging and commit functionality
Features Added:
- Init repository
- Clone repository
- Open existing repository
- View file changes with status indicators
- Stage/unstage files
- Commit with messages
- View commit history
- Branch management (create, switch, delete)
- Reset (soft and hard)
- Pull/Push operations
Issue: No syntax highlighting, code appears as plain text
Fix Implemented:
- Integrated flutter_highlight package
- Created language detection based on file extension
- Implemented GitHub and GitHub Dark color schemes
- Added support for 20+ programming languages:
- Dart, Kotlin, Java
- Python, JavaScript, TypeScript
- C, C++
- HTML, CSS, JSON, YAML
- Markdown, Shell, and more
- Theme-aware highlighting (switches with app theme)
Issue: Line numbers not aligned with code, scrolling breaks alignment
Fix Implemented:
- Created synchronized scroll controllers for line numbers and editor
- Implemented fixed line height (1.5x font size)
- Added scroll listener to keep line numbers in sync
- Used ConstrainedBox to ensure proper layout
- Made line numbers non-scrollable but position-synced
Issue: Searching doesn't scroll to results, no highlighting, replace doesn't work
Fix Implemented:
- Created dedicated SearchReplaceBar widget
- Implemented real-time search with highlighting
- Added case-sensitive search option
- Added regex search support
- Implemented previous/next navigation
- Auto-scroll to current match
- Replace current match functionality
- Replace all functionality with confirmation
- Search results counter (e.g., "3/15")
Changes:
- Main screen now shows "VCode" instead of "Code Editor"
- Updated package name to com.vasu.vcode
- Updated all references throughout the app
- Created proper app icon with VCode branding
- Updated About dialog with correct information
New Content:
VCode © 2026–Present Ankit Chaubey
Developed by Ankit Chaubey
GitHub: github.com/ankit-chaubey/vcode-editor
Email: m.ankitchaubey@gmail.com
Telegram: @AnkitChaubey
Made with ❤️ using Flutter
- Copy All: Selects entire file content
- Erase All: Clears file with confirmation dialog
- Both accessible from editor toolbar
Select Lines:
- Single line selection
- Multi-line selection
- Visual feedback for selected lines
Move Lines:
- Move selected lines up (⬆)
- Move selected lines down (⬇)
- Preserves selection after move
Delete Lines:
- Delete selected lines
- Confirmation dialog to prevent accidents
- Copy selected text to clipboard
- Works with single or multiple lines
- Indent selected lines (adds tab size spaces)
- Unindent selected lines (removes tab size spaces)
- Respects user-configured tab size
- Works on multiple lines simultaneously
- Line count display in status bar
- Cursor position (line:column)
- Current language indicator
- File modified indicator
- Tab size display
Pinch-to-Zoom:
- Two-finger pinch gesture
- Smooth zoom from 8px to 32px
- Font size persists across sessions
- Real-time zoom with immediate feedback
Alternative Zoom:
- Toolbar buttons (+ / -)
- Step-by-step size adjustment
ZIP Archives:
- One-click ZIP creation of entire directory
- Saves to app documents folder
- Progress indicator during creation
TAR.GZ Archives:
- One-click TAR.GZ creation
- Same workflow as ZIP
- Industry-standard compression
File Operations:
- Create new file
- Create new folder
- Rename file/folder
- Delete file/folder (with confirmation)
- Long-press for context menu
Tree Navigation:
- Expand/collapse folders
- Visual indicators for file types
- File size display
- Sorted alphabetically (folders first)
3. Hidden Files Toggle
- Show/hide hidden files (files starting with .)
- Persists across sessions
- Useful for seeing .git, .gitignore, etc.
All implemented from scratch with proper functionality:
Repository Management:
- Initialize new repository
- Clone from URL
- Open existing repository
- Close repository
File Status:
- Modified (orange)
- Added (green)
- Deleted (red)
- Renamed (blue)
- Untracked (grey)
- Real-time status updates
Commit Management:
- Stage individual files
- Stage all changes
- Unstage files
- Commit with message
- View commit history
- Show commit details
Branch Management:
- Create new branch
- Switch between branches
- Delete branch
- Visual indicator for current branch
- List all branches
Reset Operations:
- Soft reset (keep changes)
- Hard reset (discard changes)
- Confirmation dialogs for safety
Remote Operations:
- Pull from remote
- Push to remote
- Add remote URL
- View remote URL
Light Theme:
- GitHub's official light color scheme
- Soft, eye-friendly colors
- Professional appearance
Dark Theme:
- GitHub's official dark color scheme
- Reduced eye strain
- Perfect for low-light coding
AMOLED Theme:
- Pure black (#000000) background
- Maximum battery savings on AMOLED screens
- Ultra-high contrast
Light Mode:
- Added lines: Light green (#CCFFC7)
- Removed lines: Light red (#FFCDD2)
- Modified lines: Light orange (#FFE0B2)
Dark Mode:
- Added lines: Dark green (#1A4D2E)
- Removed lines: Dark red (#4D1A1A)
- Modified lines: Dark orange (#4D3A1A)
GitHub Light:
- Keywords: Red (#D73A49)
- Strings: Blue (#032F62)
- Numbers: Blue (#005CC5)
- Functions: Purple (#6F42C1)
- Comments: Gray (#6A737D)
GitHub Dark:
- Keywords: Red (#FF7B72)
- Strings: Light blue (#A5D6FF)
- Numbers: Blue (#79C0FF)
- Functions: Purple (#D2A8FF)
- Comments: Gray (#8B949E)
- Light/Dark/AMOLED mode selector
- Editor theme selector (GitHub/GitHub Dark)
- Instant preview of changes
- Persistent across app restarts
Font Size:
- Range: 8px to 32px
- Slider control
- Live preview
- Displays current size
Tab Size:
- 2, 4, or 8 spaces
- Choice chips for selection
- Affects indentation operations
Font Family:
- Monospace (default)
- Courier
- Monaco
- More can be added easily
- Show Line Numbers (toggle)
- Word Wrap (toggle)
- Auto Save (toggle)
- Highlight Current Line (toggle)
Reset to Defaults:
- Resets all settings
- Confirmation dialog
- Cannot be undone
Clear Cache:
- Clears recent files
- Clears recent searches
- Improves performance
- Confirmation dialog
Hive Integration:
- Fast, local database
- Three boxes:
- settings: App preferences
- editor_state: Open files, cursor positions
- git_state: Repository state
SharedPreferences:
- User settings
- Theme preferences
- Editor configuration
- Persistent across app kills
- Open files and their content
- Cursor positions per file
- Current file tab
- Last opened repository
- User preferences
- Font size and family
- Theme mode
- Editor settings
Features:
- Automatic builds on push/PR
- Builds for all architectures:
- ARM64 (most common)
- ARMv7 (older devices)
- x86_64 (emulators)
- Universal APK
- Caches dependencies
- Uploads build artifacts
- Creates releases on tags
- Uses Flutter 3.24 stable
Workflow File: .github/workflows/build.yml
lib/
├── main.dart # App entry, initialization
├── models/ # (Future: data models)
├── screens/ # UI screens
│ └── home_screen.dart # Main navigation
├── services/ # Business logic (state-free)
│ ├── editor_service.dart # Editor operations
│ ├── file_service.dart # File system operations
│ ├── git_service.dart # Git operations
│ ├── settings_service.dart# Settings persistence
│ └── theme_provider.dart # Theme management
└── widgets/ # Reusable UI components
├── editor_tab.dart # Main editor
├── files_tab.dart # File browser
├── git_tab.dart # Git interface
├── settings_tab.dart # Settings UI
└── search_replace_bar.dart # Search/replace
EditorService:
- Manages open files
- Handles text editing
- Line operations
- Search and replace
- Selection management
- Auto-save
FileService:
- File system navigation
- CRUD operations
- Archive creation
- Permission handling
GitService:
- Git command execution
- Repository management
- Status tracking
- Commit operations
- Branch management
SettingsService:
- Settings persistence
- Default values
- Reset functionality
- Cache management
ThemeProvider:
- Theme switching
- Color schemes
- GitHub-style themes
- Diff colors
- Package: com.vasu.vcode
- MainActivity in correct package
- ProGuard rules for release builds
- MultiDex support
- READ_EXTERNAL_STORAGE
- WRITE_EXTERNAL_STORAGE
- MANAGE_EXTERNAL_STORAGE
- INTERNET (for Git remote operations)
- Min SDK: 21 (Android 5.0)
- Target SDK: 34 (Android 14)
- Compile SDK: 34
- Java 17
- Kotlin 1.9.10
- Gradle 8.1.0
- Provider for state management
- Async/await for all I/O operations
- Error handling with try-catch
- User feedback for all operations
- Loading indicators for long operations
- Confirmation dialogs for destructive actions
- Null safety throughout
- Type safety
- Proper disposal of controllers
- Follows flutter_lints rules
- Additional custom rules
- No logic in create_state
- Prefer const constructors
- Proper key usage
- Lazy loading of file trees
- Incremental file tree building
- Scroll synchronization without rebuilds
- Cached font sizes
- Efficient search algorithms
- Minimal rebuilds with Provider
- Proper disposal to prevent memory leaks
- ProGuard in release mode
- Resource shrinking
- Split APKs per ABI
- MultiDex for large apps
- Confirmation for destructive actions
- No sensitive data in logs
- Secure file operations
- Permission checks before file access
- Git credentials not stored
- README.md: Comprehensive project readme
- FIXES_AND_IMPROVEMENTS.md: This file
- LICENSE: MIT License
- analysis_options.yaml: Linter rules
- .gitignore: Proper ignore patterns
- Open and edit files
- Syntax highlighting for various languages
- Line number alignment during scroll
- Search with case-sensitive
- Search with regex
- Replace current match
- Replace all matches
- Select and move lines
- Indent/unindent selection
- Copy all content
- Erase all content
- Pinch-to-zoom
- Create file/folder
- Rename file/folder
- Delete file/folder
- Create ZIP archive
- Create TAR.GZ archive
- Git init
- Git status
- Git stage/commit
- Git branches
- Theme switching
- Settings persistence
- Reset settings
- Auto-save: Optional automatic file saving
- File tabs: Visual tabs for open files with modified indicators
- Status bar: Rich status information
- Toolbar: Quick access to common actions
- About dialog: Comprehensive app information
- Material 3: Modern, beautiful UI
- Animations: Smooth transitions
- Icons: Professional icon set
- Error handling: Graceful error messages
- Loading states: Progress indicators
- FTP/SFTP support
- Code completion
- Snippet support
- Terminal integration
- Multiple cursors
- Find in files
- File comparison
- Plugin system
- Cloud sync
- Collaborative editing
For issues, questions, or contributions:
- GitHub: https://github.com/ankit-chaubey/vcode-editor
- Email: m.ankitchaubey@gmail.com
- Telegram: @AnkitChaubey
VCode © 2026–Present Ankit Chaubey
Made with ❤️ using Flutter