tag:github.com,2008:https://github.com/euptron/CodeOps-Studio/releases Release notes from CodeOps-Studio 2025-12-22T14:14:00Z tag:github.com,2008:Repository/823753262/v1.1.0 2025-12-22T15:18:43Z v1.1.0 <h2>Release 1.1.0</h2> <p><em>22-12-2025</em>(Monday, December 22, 2025)</p> <h3>Added</h3> <ul> <li>Buffer size selection for dynamic IO operations</li> <li>Facebook page link to <code>Socials</code></li> <li>Projects created from templates are now added to the recent project list</li> <li>File system monitoring</li> <li>Versioning Manager to enforce our Custom SemVer</li> <li>Onboarding fragment – the first thing a user sees must be nice 🙂</li> <li>introduced <code>PaneWindow</code> to handle the panes in a decoupled fashion</li> <li>In-app update system and update handling logic</li> <li>Theme export utility <ul> <li>Allows exporting the currently active application theme to an XML file</li> </ul> </li> <li>Tap detection and measurement system</li> <li>More <code>CodeEditorPane</code> file functions e.g save-as, reload-file, reload-file with-charset, file statistics, next and previous cursor location movement and lite mode</li> <li><code>ILog.java</code> to expose the logs sent by Log.java to enhance debugging.</li> <li>GM3 Color theme exporter to export app theme at runtime</li> <li>Command-Palette to enhance quick actions and workflows</li> <li>Debug overlay <ul> <li>Activated by long-pressing the top layout for ~3–4 seconds and releasing</li> </ul> </li> </ul> <h3>Changes</h3> <ul> <li>Extensive internal refactoring and restructuring of the codebase</li> <li>Crashlytics and Analytics are now automatically sent, user can opt out in the setting</li> <li>Theme system updated to properly support <strong>Dynamic Colors</strong></li> </ul> <h3>Improvements</h3> <ul> <li>Optimized push notifications with targeting <ul> <li>Summary: Push notifications are now more efficient and can be targeted more accurately<br> to improve delivery and user engagement.</li> </ul> </li> <li>Jump to line dialog to use the Command-Palette</li> <li>Enforced EdgeToEdge across all supported api versions</li> <li>Pane system</li> <li>Overall application stability</li> <li>Performance and memory usage</li> <li>Fine tuned<code>BinaryFileChecker.java</code> detection aggressiveness</li> <li>Foundation laid for future features and systems</li> <li>LiveServer to server both files and directories</li> <li>Internet connectivity check via the <code>IPProvider.java</code></li> <li>Optimized <code>BinaryFileChecker.java</code> to use weight instead of a majority rule system</li> <li>Optimized <code>CodeEditor Pane</code> to use resources optimally.</li> <li>Optimized <code>BaseFragment.java</code> to handle resources optimally.</li> <li>File rename logic</li> <li>Code editor settings <code>Pin line number</code> sync; in terms which works</li> <li><code>Relative close depth</code> sync; New configuration is synced in realtime with the <strong>Code Editor</strong> so<br> you don't restart the app to apply the changes.</li> <li><code>Auto closing brackets</code> sync; New configuration is synced in realtime to the <strong>Code Editor</strong> so<br> you don't restart the app to apply the changes.</li> <li><code>Close unpinned project panes</code> sync; New configuration is synced in realtime so you don't restart<br> the app to apply the changes.</li> <li>Generally i've made a lot of improvements i still failed to track.</li> <li>Release notes support either plane text or html text.</li> <li>Migrated all pane functionality to <code>PaneWindow.java</code></li> <li>Storage manager stability and reliability</li> <li>Memory management across the application</li> <li>Overall application stability and performance</li> </ul> <h3>Fixed</h3> <ul> <li> <p>Fix: Undo / Redo synchronization issue</p> <ul> <li>Summary: Redo operations could not be performed instantly due to editor state<br> desynchronization. This has been fixed to ensure immediate and consistent redo behavior.</li> </ul> </li> <li> <p>Numerous undocumented bug fixes</p> <ul> <li>Summary: A significant number of issues were resolved during development,<br> most of which were not individually logged due to their volume.</li> </ul> </li> <li> <p>Fix: <a href="https://github.com/euptron/CodeOps-Studio/issues">Opened Issues</a></p> </li> <li> <p>Fix: False positives within the <code>BinaryFileChecker</code></p> </li> <li> <p>Fix: Crash on android devices 11 and above due to storage related issues</p> <ul> <li>Summary: Crash occurs when user tries to perform file/folder selection</li> </ul> </li> <li> <p>Fix: Crash on that occurs at certain times when user tries perform the <code>Clone git repository</code><br> action</p> <ul> <li>Summary: This error occurred because the <code>Layout binding</code> was initialized later i.e after the<br> <strong>VM</strong> observer at <code>GitRepository.java:123</code></li> </ul> </li> <li> <p>Fix: Failure to activate Code Editor <code>pin line number</code> preference</p> <ul> <li>Summary: Logic for this preference to be activated was not implemented</li> </ul> </li> <li> <p>Fix: Sync error that occurred when refreshing the <strong>Code Editor</strong> color scheme</p> <ul> <li>Summary: If the <code>Auto complete window</code> preference is disabled when ever the editor color<br> scheme is refreshed the autocomplete window is displayed.</li> </ul> </li> <li> <p>Fix: Failure to enable or disable <code>Font ligatures</code> when the preference is selected</p> <ul> <li>Summary: Logic to sync this feature with the <strong>Code Editor</strong> was not implemented</li> </ul> </li> <li> <p>A lot of bug fixes were made, i only added those which were worth taking note of.</p> </li> <li> <p>Fix: <a href="https://github.com/euptron/CodeOps-Studio/issues/12" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/12/hovercard">Opened Issues 12</a></p> </li> <li> <p>Fix: <a href="https://github.com/euptron/CodeOps-Studio/issues/7" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/7/hovercard">Opened Issues 7</a></p> </li> <li> <p>Fix: <a href="https://github.com/euptron/CodeOps-Studio/issues/6" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/6/hovercard">Opened Issues 6</a></p> </li> </ul> <h3>Security</h3> <ul> <li>Secured CodeOps Studio private and sensitive data <ul> <li>Summary: Strengthened encryption and protection of sensitive assets across the build,<br> deployment, and runtime pipeline. This includes safeguarding secrets used in GitHub Actions,<br> Firebase services, code signing keys, and internal application data to ensure user data<br> remains private and protected.</li> </ul> </li> </ul> <h3>Removed</h3> <ul> <li>Opening and editing files from a removable storage</li> <li>The <code>ast-core</code> library until further notice.</li> <li><code>PaneUtil.java</code> in favor of <code>PaneWindow.java</code></li> <li>Template manager <ul> <li>Reason: Will be replaced with a more robust, offline-first template system<br> intended to support a future community-driven workflow.</li> </ul> </li> </ul> <h3>Docs</h3> <ul> <li>updated <a href="/euptron/CodeOps-Studio/blob/v1.1.0/README.md">README</a></li> <li>updated <a href="/euptron/CodeOps-Studio/blob/v1.1.0/CONTRIBUTING.md">CONTRIBUTING</a></li> <li>Introduced custom versioning system <ul> <li>Summary: Implemented a variation of semantic versioning with specific rules for release<br> tracking and consistency across the project.</li> </ul> </li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/euptron/CodeOps-Studio/commits/v1.1.0">https://github.com/euptron/CodeOps-Studio/commits/v1.1.0</a></p> euptron tag:github.com,2008:Repository/823753262/v1.0.2-beta 2024-12-26T03:27:51Z v1.0.2-beta <h2>Release 1.0.2 beta</h2> <p><em>26-12-2024</em>(Thursday, Dec 26, 2024)</p> <h3>Added</h3> <ul> <li>Extra symbols for the input panel</li> <li>The input action MCR, MCL, MCU, MCD are essentially cursor actions where M (Move), C (Cursor), L(Left), R(Right), U(Up), D(Down)</li> </ul> <h3>Change</h3> <ul> <li>Moved Uri to file conversion from FileUtil to independent class <code>FileUriMediator.java</code></li> <li>Decoupled storage permission handling to <code>MainActiviy.java</code> from <code>MainFragment.java</code></li> <li>Slowly migrating code base to more structural format</li> </ul> <h3>Improvements</h3> <ul> <li>Storage permission management</li> <li>Optimised the <code>ContextLifeCycleObserver.java</code> class to handle URI related task gracefully</li> <li>Optimised <code>LiveServer.java</code> to load files optimally.</li> <li>Optimised case conversion for <code>ContextualCodeEditor.java</code></li> <li>Generally i've made alot of improvements i failed to track.</li> </ul> <h3>Fixed</h3> <ul> <li> <p>Fix: Workaround for loading files via <code>LiveServer</code> in the <code>WebViewPane.java</code> to an actual solution</p> <ul> <li>Summary: Prior to this release when you init the <code>LiveServer</code> there is Ui lag due to the blocking operation, workaround was to load portion of the result and wait for the UI to settled before loading the blocking code.</li> </ul> </li> <li> <p>Fix: Fixed the horrible crash that occurs when you select a file or folder</p> <ul> <li>Summary: Prior to this release crashes were alot to often, i found that it mostly occurs on device with higher APIS</li> </ul> </li> <li> <p>Crash wheh selecting a directory on android devices 11 and above</p> </li> <li> <p><code>ArrayOutOfBoundException</code> that occurs when we split the document id on certain dirs like (emulated root(primary) &amp; document(home)</p> </li> <li> <p>Failure to request storage permission on Android devices 11 and above</p> </li> </ul> <hr> euptron tag:github.com,2008:Repository/823753262/v1.0.1-beta 2024-09-13T20:29:26Z v1.0.1-beta <h2>CodeOps Studio release 1.0.1-beta</h2> <p><em>13-09-2024</em> (Thursday, Sep 13, 2024)</p> <h3>Added</h3> <ul> <li>Option to refresh file tree</li> <li>AST core module for future Node management</li> <li>Support for <code>.apk</code> file installation</li> <li>Progress listener for case conversion in the <code>ContextualCodeEditor</code></li> <li>Support for more symbols auto completions `„ “ « ‚ ‘ ‹</li> </ul> <h3>Changes</h3> <ul> <li>Disable code obfuscation and resource shrinking <code>minifyEnabled</code> and <code>shrinkResources</code> <code>= false</code> because it breaks CodeOps Studio.</li> </ul> <h3>Improvements</h3> <ul> <li>Optimized file tree loading performance and reduced memory usage</li> <li>JavaDoc improvements</li> <li>Refactored Code base</li> <li><code>Pane</code> class ID generation: shared ID list for all instances of the <code>Pane</code> class</li> <li><code>Pane</code> class ID generation method: <code>Pane#generateUUID()</code></li> <li>Optimized <code>Wizard#getDeviceCountry(Context)</code> method to retrieve the name of <strong>Country</strong> a device is currently in. Crashlytics now collects the actual <strong>Country Name</strong> instead of the <code>Device Locale</code></li> <li>Revamp detection of invalid last opened project before opening</li> <li>Optimized <code>IdeApplication</code> and <code>CrashActivity</code> for handling crash intent</li> <li>Revamped <code>TreeView-TreeNode</code> children sorting comparator</li> <li>Optimised <code>ContextualCodeEditor#toLowerCase(String)</code> and <code>ContextualCodeEditor#toUpperCase(String)</code> method by reducing time complexity from O(n^2) to O(n) that was caused by the <code>string = string + ...</code> reallocation</li> <li>Case conversion by the <code>ContextualCodeEditor</code> is now possible even when <code>ClipBoard</code> limit is exceeded</li> <li>Optimized line text duplication by the <code>CodeEditor</code></li> <li>Optimized binary file detection, before a file is flagged as binary we compare how many times it has been flagged as a binary across multiple <code>check+points</code> against how many times it didn't, making the whole process more effective.</li> </ul> <h3>Fixed</h3> <ul> <li> <p>Fix: Case conversion failure.</p> <ul> <li>Summary: Case conversion failed because the result from the <code>AsyncTask#runNonCancelable</code> was not parsed into the editor.</li> </ul> </li> <li> <p>Fix: Crash when parsing a string into <code>ReleaseType(String)</code> in ChangelogAdapter due to <code>NullPointerException</code></p> <ul> <li>Summary: App crashed when trying to load saved release notes due on a null object <code>ReleaseType(null)</code> reference in ChangelogAdapter.</li> </ul> </li> <li> <p>Fix: Pane Tab duplication. Proguard actually broke the project so it's disabled until further notice.</p> </li> <li> <p>Fix: <code>CodeEditorPane</code> persistency. <code>CodeEditorPane</code> now loads persisted arguments and restores them accordingly without text content history</p> </li> <li> <p>Fix: Failure to properly detect invalid projects when loading the last opened project.</p> <ul> <li>Summary: App crashed as a result of a null file path being passed to the <code>File.exists</code> method</li> </ul> </li> <li> <p>Fix: Crash due to null <code>Log</code> object in <code>Log.equals()</code> method*</p> <ul> <li>Summary: The app crashes with a <code>NullPointerException</code> when the <code>equals()</code> method is invoked on a null <code>Log</code> object in the <code>Log.equals()</code> method. This issue arises during item comparisons in the <code>RecyclerView</code>, particularly when updating the list using <code>AsyncListDiffer</code> in the <code>LogAdapter</code>. The crash often occurs when selecting an unsupported <code>Uri</code>.</li> <li><a href="https://github.com/euptron/CodeOps-Studio/issues/10" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/10/hovercard">Resolved Issue#10</a></li> <li>FCS-ID: <code>33308dfde6721aa4e51f9010a1f307ea</code></li> </ul> </li> <li> <p>Fix: Crash when accessing a null <code>CircularProgressIndicator</code> in <code>CodeEditorPane.setLoading()</code></p> <ul> <li>Summary: The app crashed due to a <code>NullPointerException</code> when attempting to access a null <code>CircularProgressIndicator</code> in the <code>CodeEditorPane.setLoading()</code> method. This occurred while loading a file, where the <code>progressbar</code> was not properly initialized.</li> <li><a href="https://github.com/euptron/CodeOps-Studio/issues/9" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/9/hovercard">Resolved Issue#9</a></li> <li>FCS-ID: <code>fcc3d4f7d3825fd148be619cf777948b</code></li> </ul> </li> <li> <p>Fix: Crash when accessing null <code>ContextualCodeEditor</code> in <code>CodeEditorPane.canUndo()</code></p> <ul> <li>Summary: The app crashed due to a <code>NullPointerException</code> when attempting to access a null <code>ContextualCodeEditor</code> object in the <code>CodeEditorPane.canUndo()</code> method. This occurred during the preparation of the toolbar options menu when the undo state was being checked.</li> <li><a href="https://github.com/euptron/CodeOps-Studio/issues/8" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/8/hovercard">Resolved Issue#8</a></li> <li>FCS-ID: <code>c6f4d617cc63acaa3fe262dbb1e948ca</code></li> </ul> </li> <li> <p>Fix: Crash when accessing a null <code>ViewHolder</code> in <code>RecyclerView</code></p> <ul> <li>Summary: App crashed due to a <code>NullPointerException</code> when trying to reference a null <code>ViewHolder</code> in the <code>RecyclerView</code>.</li> <li><a href="https://github.com/euptron/CodeOps-Studio/issues/7" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/7/hovercard">Resolved Issue#7</a></li> <li>FCS-ID: <code>c12fd425b630739a67de5d35ea207be5</code></li> </ul> </li> <li> <p>Fix: JavaScript engine initialization failure. The issue was due to a failure in creating the VMBridge instance, and further investigation is needed to resolve the underlying problem.</p> <ul> <li>Summary: App crashed due to an <code>IllegalStateException</code> when attempting to initialize the JavaScript engine, specifically related to the VMBridge instance creation failure.</li> <li><a href="https://github.com/euptron/CodeOps-Studio/issues/6" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/6/hovercard">Resolved Issue#6</a></li> <li>FCS-ID: <code>8c42fe20ec460f1f2bb87c206438081f</code></li> </ul> </li> <li> <p>Fix: <code>TreeViewFragment</code> context attachment issue.</p> <ul> <li>Summary: App crashed due to an <code>IllegalStateException</code> when attempting to access the fragment's context while it was not attached.</li> <li><a href="https://github.com/euptron/CodeOps-Studio/issues/5" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/5/hovercard">Resolved Issue#5</a></li> <li>FCS-ID: <code>5665f61e9b837932df3c90422eccb283</code></li> </ul> </li> <li> <p>Fix: <code>ChangeLogFragment</code> null reference issue. <code>ChangeLogFragment</code> now correctly handles null <code>RecyclerView</code> references, preventing crashes when checking if logs are loaded.</p> <ul> <li>Summary: App crashed due to a null <code>RecyclerView</code> reference being accessed in the <code>checkIfLoaded()</code> method.</li> <li><a href="https://github.com/euptron/CodeOps-Studio/issues/4" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/4/hovercard">Resolved Issue#4</a></li> <li>FCS-ID: <code>4dfd5aed0ff4905420e59f5b3b09ce90</code></li> </ul> </li> <li> <p>Fix: <code>NullPointerException</code> when handling back press in <code>SettingsPane</code> due to null <code>Fragment</code></p> <ul> <li>Summary: App crashed because a null <code>Fragment</code> was passed to the <code>equals()</code> method in the <code>isPrimaryNavigation()</code> check.</li> <li><a href="https://github.com/euptron/CodeOps-Studio/issues/3" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/3/hovercard">Resolved Issue#3</a></li> <li>FCS-ID: <code>516de67b0dd6824a7aec7f8bd411974d</code></li> </ul> </li> <li> <p>Fix: Crash when binding log data in the <code>LogAdapter</code> due to <code>NullPointerException</code></p> <ul> <li>Summary: App crashed when a null <code>CharSequence</code> was passed to the <code>SpannableStringBuilder.append()</code> method in <code>onBindViewHolder()</code></li> <li><a href="https://github.com/euptron/CodeOps-Studio/issues/2" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/2/hovercard">Resolved Issue#2</a></li> <li>FCS-ID: <code>50dfb50c980fcffba644e7fa8debbafd</code></li> </ul> </li> <li> <p>Fix: Crash when accessing recent projects in the <code>WelcomePane</code> class due to <code>NullPointerException</code></p> <ul> <li>Summary: App crashed as a result of a null file path being passed to the <code>File.exists</code> method</li> <li><a href="https://github.com/euptron/CodeOps-Studio/issues/1" data-hovercard-type="issue" data-hovercard-url="/euptron/CodeOps-Studio/issues/1/hovercard">Resolved Issue#1</a></li> <li>FCS-ID: <code>ba22d747cbd53061443dfc1c7a7698bf</code></li> </ul> </li> </ul> <h3>Docs</h3> <ul> <li>Improved <a href="/euptron/CodeOps-Studio/blob/v1.0.1-beta/README.md">README</a></li> <li>Improved <a href="/euptron/CodeOps-Studio/blob/v1.0.1-beta/CONTRIBUTING.md">CONTRIBUTING</a></li> </ul> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/euptron/CodeOps-Studio/compare/v1.0.0...v1.0.1-beta"><tt>v1.0.0...v1.0.1-beta</tt></a></p> euptron tag:github.com,2008:Repository/823753262/v1.0.0 2024-09-13T20:30:26Z v1.0.0 <h1>CodeOps Studio</h1> <p>Welcome to the official release of CodeOps Studio v1.0.0! We are excited to present this production-ready version, packed with enhancements, bug fixes, and new features designed to provide a seamless and efficient coding experience.</p> <h3>New Features</h3> <ul> <li> <p><strong>Git Integration</strong></p> <ul> <li>Effortlessly clone repositories with built-in Git support.</li> </ul> </li> <li> <p><strong>Intuitive Navigation</strong></p> <ul> <li>Navigate your projects seamlessly with breadcrumb navigation.</li> </ul> </li> <li> <p><strong>Multi-Language Syntax Highlighting</strong></p> <ul> <li>Enjoy syntax highlighting for over 50 programming languages.</li> </ul> </li> <li> <p><strong>Customizable Code Editor</strong></p> <ul> <li>Tailor the code editor to your preferences for a personalized workflow.</li> </ul> </li> <li> <p><strong>Persistent Panes</strong></p> <ul> <li>Maintain your workspace layout with persistable panes.</li> </ul> </li> <li> <p><strong>Project Import</strong></p> <ul> <li>Easily import existing projects into CodeOps Studio.</li> </ul> </li> <li> <p><strong>Comprehensive File Tree Explorer</strong></p> <ul> <li>Efficiently manage your files with an intuitive file tree explorer.</li> </ul> </li> <li> <p><strong>Multi-Pane Layout</strong></p> <ul> <li>Utilize a multi-pane layout on devices with a minimum screen width of 600dp.</li> </ul> </li> <li> <p><strong>Live Preview</strong></p> <ul> <li>Preview your websites live from various network sources: <ul> <li>Remote</li> <li>Local host</li> <li>Hotspot</li> <li>Internet</li> </ul> </li> </ul> </li> <li> <p><strong>Project Templates</strong></p> <ul> <li>Kickstart your development with ready-to-use project templates.</li> </ul> </li> <li> <p><strong>Material You Support</strong></p> <ul> <li>Experience a visually cohesive interface with Material You integration.</li> </ul> </li> <li> <p><strong>JavaScript Console</strong></p> <ul> <li>Debug and interact with your JavaScript code in real-time.</li> </ul> </li> <li> <p><strong>Advanced Code Editor Features</strong></p> <ul> <li>Jump to specific lines and use the search panel for efficient coding.</li> <li>Highly customizable code editor settings to suit your needs.</li> </ul> </li> <li> <p><strong>Monetization Options</strong></p> <ul> <li>Integrate Google AdMob for monetization.</li> </ul> </li> </ul> <h3>Improvements</h3> <ul> <li> <p><strong>Enhanced User Interface</strong></p> <ul> <li>Refined UI elements for a more intuitive and enjoyable user experience.</li> </ul> </li> <li> <p><strong>Optimized Performance</strong></p> <ul> <li>Improved application performance and reduced loading times.</li> </ul> </li> <li> <p><strong>Expanded Language Support</strong></p> <ul> <li>Added syntax highlighting for additional programming languages.</li> </ul> </li> <li> <p><strong>Better File Management</strong></p> <ul> <li>Enhanced file management capabilities for smoother project handling.</li> </ul> </li> </ul> <h3>Bug Fixes</h3> <ul> <li> <p><strong>Resolved Navigation Issues</strong></p> <ul> <li>Fixed breadcrumb navigation bugs for seamless project exploration.</li> </ul> </li> <li> <p><strong>Stability Enhancements</strong></p> <ul> <li>Addressed various stability issues to ensure a more reliable coding environment.</li> </ul> </li> <li> <p><strong>Fixed Live Preview Bugs</strong></p> <ul> <li>Corrected issues with live preview functionality across different network sources.</li> </ul> </li> <li> <p><strong>Editor Customization Fixes</strong></p> <ul> <li>Resolved bugs related to editor customization settings.</li> </ul> </li> </ul> <hr> <p>We're thrilled to bring you this production-ready release of CodeOps Studio and look forward to your feedback and suggestions. Thank you for being a part of our community!</p> <p><strong>Full Changelog</strong>: <a href="https://github.com/etidoUP/CodeOps-Studio/commits/v1.0.0">https://github.com/etidoUP/CodeOps-Studio/commits/v1.0.0</a></p> euptron