{
    "version": "https://jsonfeed.org/version/1",
    "title": "EXTechs OSS Blog",
    "home_page_url": "https://your-docusaurus-site.example.com/blog",
    "description": "EXTechs OSS Blog",
    "items": [
        {
            "id": "https://your-docusaurus-site.example.com/blog/2026-08-13-bahfo_blog_1",
            "content_html": "<p>On our main goal of making user experience inside DreamStudio the best. Threaded design is always a pattern to consider. Especially when dealing with large codebases. In this blog, we explain how <strong>Ironica</strong>. The DreamStudio code editor. Is now threaded, which is a feature to expect in next major update.</p>\n<hr>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"threaded-design-implementation\">Threaded Design Implementation<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-13-bahfo_blog_1#threaded-design-implementation\" class=\"hash-link\" aria-label=\"Direct link to Threaded Design Implementation\" title=\"Direct link to Threaded Design Implementation\" translate=\"no\">​</a></h2>\n<p>The main idea of threaded design in Ironica is to move analysis off the main thread. That helps in faster typing, less UI freezing, and less blocking on the main thread. Especially when it comes to large files with thousands of files. DreamStudio does not lack the ability to handle large codebases since it is powered by a powerful engine. However, analysis features require careful threading implementation for better experience.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"how-it-is-implemented\">How it is Implemented<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-13-bahfo_blog_1#how-it-is-implemented\" class=\"hash-link\" aria-label=\"Direct link to How it is Implemented\" title=\"Direct link to How it is Implemented\" translate=\"no\">​</a></h2>\n<p>The threaded design is language agnostic. Doesn't rely on a language plugin or how fast its analysis speed is. When a feature is requested from the main code editor API, like folding, syntax highlighting, etc. The engine creates a separated thread, and moves computation there, this ensures that users are free to type without lagging or freezing UI.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"problems-and-fixes\">Problems and Fixes<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-13-bahfo_blog_1#problems-and-fixes\" class=\"hash-link\" aria-label=\"Direct link to Problems and Fixes\" title=\"Direct link to Problems and Fixes\" translate=\"no\">​</a></h2>\n<p>even with analysis threaded, IronicaLexer.styleText — which QScintilla calls synchronously on the UI thread for every keystroke — copied the whole document and rebuilt the bracket-depth stack from byte 0 each time. On a 467KB file that was 77ms per keystroke (63ms was the O(cursor-position) rescan).</p>\n<h5 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"the-fix-is-by-applying-the-following\">The fix is by applying the following<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-13-bahfo_blog_1#the-fix-is-by-applying-the-following\" class=\"hash-link\" aria-label=\"Direct link to The fix is by applying the following\" title=\"Direct link to The fix is by applying the following\" translate=\"no\">​</a></h5>\n<ol>\n<li class=\"\">Bracket-depth cache: <code>styleText</code> now caches <code>[position, depth_stack]</code>. Since Scintilla restyles from the edit point, normal typing re-scans only the small segment between the cache and the new start instead of the whole prefix. Edits before the cache point correctly fall back to a full rebuild.</li>\n<li class=\"\">Regex-based scan: replaced the per-char Python loop with a C-compiled <code>_BRACKET_REGEX</code> over bracket characters only (~6× faster, identical output).</li>\n</ol>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"releasing\">Releasing<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-13-bahfo_blog_1#releasing\" class=\"hash-link\" aria-label=\"Direct link to Releasing\" title=\"Direct link to Releasing\" translate=\"no\">​</a></h2>\n<p>The new threaded design is going to be release with the next major studio update. Soon.</p>",
            "url": "https://your-docusaurus-site.example.com/blog/2026-08-13-bahfo_blog_1",
            "title": "Threaded DreamStudio Design",
            "summary": "On our main goal of making user experience inside DreamStudio the best. Threaded design is always a pattern to consider. Especially when dealing with large codebases. In this blog, we explain how Ironica. The DreamStudio code editor. Is now threaded, which is a feature to expect in next major update.",
            "date_modified": "2026-08-13T00:00:00.000Z",
            "author": {
                "name": "Bahaa Nofal"
            },
            "tags": [
                "updates",
                "news"
            ]
        },
        {
            "id": "https://your-docusaurus-site.example.com/blog/2026-08-05-bahfo_blog_1",
            "content_html": "<p>Our latest experiments with the B-Sharp Programming Language are over. We are announcing now moving to next step of the development: Features implementation. In this blog, we talk more about how B-Sharp is going to be shaped in the future. What we are trying to implement and our goals of development.</p>\n<hr>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"b-sharp-familiarity-and-differences\">B-Sharp: Familiarity and Differences<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-bahfo_blog_1#b-sharp-familiarity-and-differences\" class=\"hash-link\" aria-label=\"Direct link to B-Sharp: Familiarity and Differences\" title=\"Direct link to B-Sharp: Familiarity and Differences\" translate=\"no\">​</a></h2>\n<p>There are many reasons why B-Sharp exists in the first place. It goes back to six months from now when we needed a Terminal User Interface (TUI) that is easy to use, fast, rich in features, but isn't steepy to learn and master. Unfortunately for us, <strong>Python</strong> did not serve good here. We tried to use <em>Prompt Toolkit</em> in addition to <em>rich</em> (which are both <strong>Python</strong> TUI modules) but that failed. Other languages have good options like <strong>Rust</strong> does or <strong>Go</strong>. But who is going to spend a huge time fighting the compiler for a small error when our TUI app is just one window-service? In addition, we use <strong>C/C++</strong> and <strong>D</strong> in low-level tasks and adopting to <strong>Rust</strong> quickly is not something we might consider.</p>\n<p>In addition, networking toolkits with other languages did not feel native. Of course, each programming langauge comes with a socket module implementation. But we are talking about advanced network implementations such as packets sniffing. You might suggest using a module in <strong>Python</strong> or <strong>C++</strong>. That would help.</p>\n<p>However, it doesn't help when it comes to building. We wanted a language that is built easy to be executable. <strong>D</strong> might seem a good option here, but neither <strong>Python</strong> or <strong>C++</strong> would help immediately. CMake would help, but after nighty hours of debugging or using an LLM that we don't want to rely heavily on for these kinds of tasks.</p>\n<p>We wanted a language that isn't too hard to use, familiar and optionally typed (which we will talk about later). In the same time, it supports building easily and natively, in addition to having builtin TUI and Networking modules. That was the time were we considered making a simple programming language that serves these goals.</p>\n<p>At first, its name was <em>SASL</em> (Simple Abstracted Syntax Language). But the name did not sound very explaining and it was kinda less intuitive to use. We then considered naming it B-Sharp (B#) in hall of (C#) my first programming language to use and learn, in addition to continuing the legacy naming of programming languages by alphabatical letters.</p>\n<p>We also considered naming it B++ (B Plus Plus) but that sounds a more modern implementation of the <strong>B</strong> Programming Language, but our language was firstly interpreted, and has very different syntax than <strong>B</strong> and rules, so we cancelled that idea.</p>\n<p>So we finally arrived at (B#). We want to discuss the language a bit in more details next and what we are aiming to build with it.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"language-syntax\">Language Syntax<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-bahfo_blog_1#language-syntax\" class=\"hash-link\" aria-label=\"Direct link to Language Syntax\" title=\"Direct link to Language Syntax\" translate=\"no\">​</a></h2>\n<p>The first thing that comes to mind is how the syntax is going to be? Well, B-Sharp syntax is not so different from other languages' syntax. Imaging mixing Python, JavaScript, and BASIC syntax together, you get B-Sharp.</p>\n<p>B# inherits from Python the optional typing rule. It also inherits from JS some syntax keywords. Here is how you can define a variable in B#:</p>\n<div class=\"language-text codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#403f53;--prism-background-color:#FBFBFB\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-text codeBlock_bY9V thin-scrollbar\" style=\"color:#403f53;background-color:#FBFBFB\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">var myFirstBSharpVariable = 12</span><br></div></code></pre></div></div>\n<p>And you can also declare a variable's type as following:</p>\n<div class=\"language-text codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#403f53;--prism-background-color:#FBFBFB\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-text codeBlock_bY9V thin-scrollbar\" style=\"color:#403f53;background-color:#FBFBFB\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">var myFirstBSharpVariable : Number = 12</span><br></div></code></pre></div></div>\n<p>B# Holds all <code>int</code>, <code>float</code> and <code>double</code> types in one data type called <code>Number</code> which is similar to how JavaScript works. It also has the same type declaration feature format as Python.</p>\n<p>as to BASIC. If you programmed in it before, you may recognize familiarity here:</p>\n<div class=\"language-text codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#403f53;--prism-background-color:#FBFBFB\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-text codeBlock_bY9V thin-scrollbar\" style=\"color:#403f53;background-color:#FBFBFB\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">if x == 12 then</span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">my_val_function()</span><br></div></code></pre></div></div>\n<p>B# implements also some syntax from BASIC (like <code>then</code>, <code>do</code>, etc.) keywords.</p>\n<p>That doesn't mean B# doesn't have its own syntax rules. Look at how a B# file for implementing a simple guessing game goes:</p>\n<div class=\"language-text codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-color:#403f53;--prism-background-color:#FBFBFB\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-text codeBlock_bY9V thin-scrollbar\" style=\"color:#403f53;background-color:#FBFBFB\"><code class=\"codeBlockLines_e6Vv\"><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">module : simple_guessing_game</span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">#SPECIAL_DATA_FORMATS false</span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">import std.random</span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">random_number : Number = RandInt() // from the imported std.random module</span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">user_guess : String = input(\"Please guess the number: \")</span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">if user_guess &gt; random_number {</span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">    print(\"Bigger than number\")</span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">} elif user_guess &lt; randome_number {</span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">    print(\"Smaller than number\")</span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">} else {</span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">    print(\"You guessed it right!\")</span><br></div><div class=\"token-line\" style=\"color:#403f53\"><span class=\"token plain\">}</span><br></div></code></pre></div></div>\n<p>Might seem familiar and not different but has its own flavor. That is how B# is wanted to be, familiar but with an additional unique flavor.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"modules\">Modules<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-bahfo_blog_1#modules\" class=\"hash-link\" aria-label=\"Direct link to Modules\" title=\"Direct link to Modules\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"standard-library\">Standard Library<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-bahfo_blog_1#standard-library\" class=\"hash-link\" aria-label=\"Direct link to Standard Library\" title=\"Direct link to Standard Library\" translate=\"no\">​</a></h3>\n<p>B# Standard Library (std) contains the following modules:</p>\n<ol>\n<li class=\"\"><code>std.math</code> for math functions.</li>\n<li class=\"\"><code>std.net</code> for networking support.</li>\n<li class=\"\"><code>std.regex</code> for regular expressions engine.</li>\n<li class=\"\"><code>std.builtins</code> for more built-in functions and custom types.</li>\n<li class=\"\"><code>std.tui</code> for building modern TUI apps.</li>\n<li class=\"\"><code>std.threads</code> for handling threading.</li>\n<li class=\"\"><code>std.io</code> for standard file I/O operations.</li>\n<li class=\"\"><code>std.system</code> for system functions and utilities for controlling the OS.</li>\n</ol>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"core-library\">Core Library<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-bahfo_blog_1#core-library\" class=\"hash-link\" aria-label=\"Direct link to Core Library\" title=\"Direct link to Core Library\" translate=\"no\">​</a></h3>\n<p>Another library that comes with B# is <code>core</code> library containing the following modules</p>\n<ol>\n<li class=\"\"><code>core.gui</code> the standard B# GUI module.</li>\n<li class=\"\"><code>core.gpu</code> GPU support for B#.</li>\n<li class=\"\"><code>core.cpu</code> CPU support for B#.</li>\n<li class=\"\"><code>core.additional</code> additional core utilities bundeled within the library.</li>\n</ol>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"software-development-kit\">Software Development Kit<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-bahfo_blog_1#software-development-kit\" class=\"hash-link\" aria-label=\"Direct link to Software Development Kit\" title=\"Direct link to Software Development Kit\" translate=\"no\">​</a></h2>\n<p>To make building B-Sharp easy and fast, we considered two pillars:</p>\n<ol>\n<li class=\"\">Using <code>Poly</code> system to build B# projects.</li>\n<li class=\"\">Adding a Software Development Kit (SDK) for B# to simplify installing libraries from external sources, building, and testing.</li>\n</ol>\n<p>These two simplified using B# a lot. You can now run B# inside the interpreter or compile it to a native executable program that runs standalone.</p>\n<p>That is exactly how we wanted B#, familiar, easy to use, and supported. There are other mentions here that we want to make:</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"blossom-and-begasus\">Blossom and Begasus<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-bahfo_blog_1#blossom-and-begasus\" class=\"hash-link\" aria-label=\"Direct link to Blossom and Begasus\" title=\"Direct link to Blossom and Begasus\" translate=\"no\">​</a></h2>\n<p>Two other additional libraries are Blossom (for building more advanced TUI applications) and Begasus (a set of external tools and features that help B# threading and multitasking). These two libraries expand B# more and more.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"b-sharp-butterfly\">B-Sharp Butterfly<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-bahfo_blog_1#b-sharp-butterfly\" class=\"hash-link\" aria-label=\"Direct link to B-Sharp Butterfly\" title=\"Direct link to B-Sharp Butterfly\" translate=\"no\">​</a></h2>\n<p>Butterfly is another library that is built to introduce easy integration between B# and Python. This module aims to make B# functions executable in Python and vise-versa. Although the idea seems weird, it is applicable.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"at-the-end\">At the End<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-bahfo_blog_1#at-the-end\" class=\"hash-link\" aria-label=\"Direct link to At the End\" title=\"Direct link to At the End\" translate=\"no\">​</a></h2>\n<p>These are first impressions after developing B# and experimenting with it a bit. The language is still in pre-alpha release, so it contains bugs and unexpected behaviors, please use in caution.</p>\n<p><em>Happy Coding!</em></p>",
            "url": "https://your-docusaurus-site.example.com/blog/2026-08-05-bahfo_blog_1",
            "title": "Our Experiments with B-Sharp Programming Language",
            "summary": "Our latest experiments with the B-Sharp Programming Language are over. We are announcing now moving to next step of the development: Features implementation. In this blog, we talk more about how B-Sharp is going to be shaped in the future. What we are trying to implement and our goals of development.",
            "date_modified": "2026-08-05T00:00:00.000Z",
            "author": {
                "name": "Bahaa Nofal"
            },
            "tags": [
                "updates",
                "news"
            ]
        },
        {
            "id": "https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1",
            "content_html": "<p>Explore the Latest Features in DS-1.1.0. Our powerful integrated development environment (IDE). DreamStudio got a huge update moving from version 1.0.0 to 1.1.0 expanding its functionality and adding more stability to the studio.</p>\n<hr>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"explore-the-latest-features-in-this-version\">Explore the Latest Features in this Version<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1#explore-the-latest-features-in-this-version\" class=\"hash-link\" aria-label=\"Direct link to Explore the Latest Features in this Version\" title=\"Direct link to Explore the Latest Features in this Version\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"whats-new\">What's New?<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1#whats-new\" class=\"hash-link\" aria-label=\"Direct link to What's New?\" title=\"Direct link to What's New?\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Introduced a major refactoring to UI design and structure. The updated design now inherits from <code>.json</code> files. Making customizaiton and adding more features in the future easier and less requiring.</li>\n<li class=\"\">Rewrote the old project bootstrapping system so now it is more accelerated, deterministic, and stable. The new system handles errors easily by introducing a new error-recovery window that displays what went wrong exactly.</li>\n<li class=\"\"><em>Ironica</em> texteditor is refactored and udpated to be modular, powerful, and stable. We made sure that the existing errors and bugs before this update were all solved, in addition to introducing more new features.</li>\n<li class=\"\">Source Control, Solution Explorer, and Properties Explorer are now updated with ease-of-use features.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"explore-in-details\">Explore in Details<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1#explore-in-details\" class=\"hash-link\" aria-label=\"Direct link to Explore in Details\" title=\"Direct link to Explore in Details\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"the-ui-refactoring\">The UI Refactoring<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1#the-ui-refactoring\" class=\"hash-link\" aria-label=\"Direct link to The UI Refactoring\" title=\"Direct link to The UI Refactoring\" translate=\"no\">​</a></h3>\n<p>DreamStudio got in version 1.1.0 a huge UI refactoring. The UI backend stayed the same. However, we changed how the structure is implemented. Previously, we relied heavily on two things:</p>\n<ul>\n<li class=\"\">Hardcoded UI elements.</li>\n<li class=\"\">Hardcoded retheming functions.</li>\n</ul>\n<p>which made continuous development and integrating more features harder. Now, we changed that system completely:</p>\n<ol>\n<li class=\"\">UI elements now sourced inside <code>.json</code> files, complete with their properties, icons, and functionalities. This makes adding more features in future less intuitive and opens up more UI restyling opportunities.</li>\n<li class=\"\">Retheming now takes source from standard static <code>.qss</code> files. This enables adding more themes easily. It also eliminates static retheming functions which took too much space in the codebase.</li>\n</ol>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"bootstrapping\">Bootstrapping<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1#bootstrapping\" class=\"hash-link\" aria-label=\"Direct link to Bootstrapping\" title=\"Direct link to Bootstrapping\" translate=\"no\">​</a></h3>\n<p>Bootstrapping is a fundamental step in loading the IDE. DreamStudio supports now stable bootstrapping bundled with the following features:</p>\n<ol>\n<li class=\"\">Logging steps one by one.</li>\n<li class=\"\">Error-proof system by adding a recovery window whenever a fatal error occurs. This prevents most of bootstrapping errors and ensures the IDE loads up successfully.</li>\n<li class=\"\">Initialization by deterministic steps.</li>\n</ol>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"ironica-rewriting\">Ironica Rewriting<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1#ironica-rewriting\" class=\"hash-link\" aria-label=\"Direct link to Ironica Rewriting\" title=\"Direct link to Ironica Rewriting\" translate=\"no\">​</a></h3>\n<p>Ironica is the name we will call DreamStudio's texteditor! This code editor is based on QScintilla texteditor. We supported it with syntax highlighting, autocompletion utilities, minimap, a suitable tabs manager and a complete API module for supporting plugin systems.</p>\n<p>Ironica's source code will be available as a standalone repository since it is, as a successful project, will power all our texteditors and projects.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"utilities\">Utilities<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1#utilities\" class=\"hash-link\" aria-label=\"Direct link to Utilities\" title=\"Direct link to Utilities\" translate=\"no\">​</a></h3>\n<h4 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"1-solution-explorer\">1. Solution Explorer<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1#1-solution-explorer\" class=\"hash-link\" aria-label=\"Direct link to 1. Solution Explorer\" title=\"Direct link to 1. Solution Explorer\" translate=\"no\">​</a></h4>\n<p>Solution Explorer now consists of two main widgets:</p>\n<ol>\n<li class=\"\">File Explorer Treeview Utility.</li>\n<li class=\"\">Packages Explorer.</li>\n</ol>\n<p>The <strong>Packages Explorer</strong> is a new utility to explore installed Python packages in the current solution.</p>\n<h4 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"2-source-control\">2. Source Control<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1#2-source-control\" class=\"hash-link\" aria-label=\"Direct link to 2. Source Control\" title=\"Direct link to 2. Source Control\" translate=\"no\">​</a></h4>\n<p>Controlling Git became easier by adding more version control actions:</p>\n<ol>\n<li class=\"\">View source changes in a table format, or a graph format.</li>\n<li class=\"\">Switch between branches easily.</li>\n<li class=\"\">Commit your chagnes faster and push to the current remote branch.</li>\n</ol>\n<h4 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"3-properties-explorer\">3. Properties Explorer<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1#3-properties-explorer\" class=\"hash-link\" aria-label=\"Direct link to 3. Properties Explorer\" title=\"Direct link to 3. Properties Explorer\" translate=\"no\">​</a></h4>\n<p>Controls the properties of the currently opened solution.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_Vzrq\" id=\"additional-bug-fixes\">Additional Bug Fixes<a href=\"https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1#additional-bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Additional Bug Fixes\" title=\"Direct link to Additional Bug Fixes\" translate=\"no\">​</a></h2>\n<ol>\n<li class=\"\">Fixed bugs related to syntax highlighting in Ironica.</li>\n<li class=\"\">Fixed an issue related to folding where folding buttons did not position correctly.</li>\n<li class=\"\">Added two additional methods for later usage: Ghost Text addition and Errors Underlining method.</li>\n</ol>\n<p><em>Happy Coding!</em></p>\n<p><em>The DreamStudio Team</em></p>",
            "url": "https://your-docusaurus-site.example.com/blog/2026-08-05-dreamstudio_version_1dot1",
            "title": "DreamStudio 1.1.0 is Here!",
            "summary": "Explore the Latest Features in DS-1.1.0. Our powerful integrated development environment (IDE). DreamStudio got a huge update moving from version 1.0.0 to 1.1.0 expanding its functionality and adding more stability to the studio.",
            "date_modified": "2026-08-05T00:00:00.000Z",
            "author": {
                "name": "EXTechs Team"
            },
            "tags": [
                "updates",
                "news"
            ]
        },
        {
            "id": "https://your-docusaurus-site.example.com/blog/2026/01/01/welcome",
            "content_html": "<p>Welcome to EXcellent TechStacks Blog!</p>\n<p>Here, we share our thoughts, latest updates, ideas and future updates. Contribution here is welcomed! Visit <code>contributing to blog</code> to find out all rules and standards.</p>",
            "url": "https://your-docusaurus-site.example.com/blog/2026/01/01/welcome",
            "title": "Welcome",
            "summary": "Welcome to EXcellent TechStacks Blog!",
            "date_modified": "2026-01-01T00:00:00.000Z",
            "tags": []
        }
    ]
}