<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Banana Cool</title>
    <description>The latest articles on DEV Community by Banana Cool (@banana_cool).</description>
    <link>https://dev.to/banana_cool</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3999768%2F8274d6d1-4f55-4699-a7fb-d5551174e49c.png</url>
      <title>DEV Community: Banana Cool</title>
      <link>https://dev.to/banana_cool</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/banana_cool"/>
    <language>en</language>
    <item>
      <title>@bananacool467/ui-tools 0.2.0-beta: Additional Terminal Security Hardening</title>
      <dc:creator>Banana Cool</dc:creator>
      <pubDate>Sat, 29 Aug 2026 17:27:11 +0000</pubDate>
      <link>https://dev.to/banana_cool/bananacool467ui-tools-020-beta-additional-terminal-security-hardening-2pl5</link>
      <guid>https://dev.to/banana_cool/bananacool467ui-tools-020-beta-additional-terminal-security-hardening-2pl5</guid>
      <description>&lt;p&gt;This is a follow-up to my previous security notice regarding &lt;code&gt;@bananacool467/ui-tools&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The previous affected releases were &lt;strong&gt;0.1.0-beta&lt;/strong&gt; through &lt;strong&gt;0.1.8-beta&lt;/strong&gt;, where the optional &lt;code&gt;useTerminal&lt;/code&gt; functionality exposed a server-side interactive terminal without the intended authentication boundary.&lt;/p&gt;

&lt;p&gt;That was a security vulnerability.&lt;/p&gt;

&lt;p&gt;It was &lt;strong&gt;not an intentionally deployed backdoor or malware payload&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The terminal functionality itself is intentional. &lt;code&gt;@bananacool467/ui-tools&lt;/code&gt; is not intended to be a frontend-only component library; it contains various development and UI utilities, including an optional server-side terminal interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happened?
&lt;/h2&gt;

&lt;p&gt;The terminal feature uses a PTY to provide an interactive shell through a WebSocket connection.&lt;/p&gt;

&lt;p&gt;In the affected releases, the WebSocket endpoint did not properly require authentication before accepting the connection.&lt;/p&gt;

&lt;p&gt;This meant that if the endpoint was reachable by an untrusted user, that user could potentially interact with the server-side PTY without authorization.&lt;/p&gt;

&lt;p&gt;The security problem was the &lt;strong&gt;missing authentication boundary&lt;/strong&gt;, not the existence of the terminal functionality itself.&lt;/p&gt;

&lt;p&gt;This issue was associated with security reporting such as &lt;strong&gt;MAL-2026-13416&lt;/strong&gt;, which identified the affected package/release behavior as a serious remote command-execution risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  0.1.9-beta: Authentication Added
&lt;/h2&gt;

&lt;p&gt;In &lt;code&gt;0.1.9-beta&lt;/code&gt;, authentication was added before the WebSocket upgrade.&lt;/p&gt;

&lt;p&gt;The server authenticates the request before calling &lt;code&gt;handleUpgrade()&lt;/code&gt;. An unauthenticated request receives an HTTP &lt;code&gt;401 Unauthorized&lt;/code&gt; response instead of being upgraded into a WebSocket connection.&lt;/p&gt;

&lt;p&gt;The terminal can use the built-in token authentication or an application's own authentication callback.&lt;/p&gt;

&lt;p&gt;This addressed the immediate vulnerability.&lt;/p&gt;

&lt;p&gt;However, I did &lt;strong&gt;not&lt;/strong&gt; consider simply adding token authentication to be sufficient hardening for a server-side interactive terminal.&lt;/p&gt;

&lt;p&gt;That is why &lt;code&gt;0.2.0-beta&lt;/code&gt; adds additional security controls.&lt;/p&gt;

&lt;h2&gt;
  
  
  0.2.0-beta: Defense in Depth
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;0.2.0-beta&lt;/code&gt; further hardens the terminal functionality with multiple layers of protection.&lt;/p&gt;

&lt;h3&gt;
  
  
  Authentication
&lt;/h3&gt;

&lt;p&gt;Authentication is required before the WebSocket connection is established.&lt;/p&gt;

&lt;p&gt;Applications can either use the configured terminal token or provide their own authentication function.&lt;/p&gt;

&lt;p&gt;Custom authentication can also associate an authenticated connection with a user identity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Session Ownership
&lt;/h3&gt;

&lt;p&gt;Terminal sessions now have an associated user ID.&lt;/p&gt;

&lt;p&gt;When a client attempts to reconnect to an existing session, the authenticated user's ID is checked against the session owner.&lt;/p&gt;

&lt;p&gt;A user cannot simply provide another user's session ID and take over their terminal session.&lt;/p&gt;

&lt;h3&gt;
  
  
  Localhost Restriction
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;restrictToLocalhost&lt;/code&gt; can restrict terminal access to localhost connections.&lt;/p&gt;

&lt;p&gt;This is enabled by default.&lt;/p&gt;

&lt;p&gt;This is particularly useful for development tools where the terminal should never be exposed to the network.&lt;/p&gt;

&lt;h3&gt;
  
  
  Origin Allowlisting
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;strictTerminal&lt;/code&gt; and &lt;code&gt;allowedOrigins&lt;/code&gt; can restrict which origins are permitted to access the terminal endpoint.&lt;/p&gt;

&lt;p&gt;This provides another access-control layer for deployments where the terminal needs to be reachable remotely.&lt;/p&gt;

&lt;h3&gt;
  
  
  HTTPS Requirement
&lt;/h3&gt;

&lt;p&gt;When localhost restriction is disabled, the terminal requires a secure HTTPS connection.&lt;/p&gt;

&lt;p&gt;This helps prevent credentials from being transmitted over an unencrypted remote connection.&lt;/p&gt;

&lt;h3&gt;
  
  
  Message Size Limits
&lt;/h3&gt;

&lt;p&gt;Incoming WebSocket messages are bounded to prevent excessively large messages from being sent to the terminal.&lt;/p&gt;

&lt;p&gt;The current maximum message size is &lt;strong&gt;64 KB&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connection and Session Limits
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;maxConnections&lt;/code&gt; limits the number of simultaneous WebSocket connections.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;maxSessions&lt;/code&gt; limits the number of active terminal sessions.&lt;/p&gt;

&lt;p&gt;These controls reduce the ability of the terminal endpoint to consume unbounded resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Session Lifetime
&lt;/h3&gt;

&lt;p&gt;Terminal sessions have a maximum lifetime.&lt;/p&gt;

&lt;p&gt;Sessions are automatically terminated after the configured lifetime rather than being allowed to exist indefinitely.&lt;/p&gt;

&lt;h3&gt;
  
  
  Environment Restrictions
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;strictEnv&lt;/code&gt; and &lt;code&gt;env&lt;/code&gt; provide control over which environment variables are passed into the terminal process.&lt;/p&gt;

&lt;p&gt;This can be useful when the terminal is intended to run with a deliberately restricted environment instead of inheriting the entire server process environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optional VM Integration
&lt;/h3&gt;

&lt;p&gt;The terminal can also be configured to start a different command through &lt;code&gt;startupShell&lt;/code&gt; and &lt;code&gt;startupShellArgs&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This can be used to integrate the terminal with an isolated environment such as a virtual machine.&lt;/p&gt;

&lt;p&gt;However, VM isolation should be configured securely by the application using it; simply launching a VM process does not automatically guarantee complete sandboxing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why wasn't the terminal removed?
&lt;/h2&gt;

&lt;p&gt;Because the terminal is an intentional feature.&lt;/p&gt;

&lt;p&gt;A server-side terminal is inherently powerful because its purpose is to execute commands. The security requirement is therefore to make sure that only authorized users can access it and that the deployment can impose additional restrictions where necessary.&lt;/p&gt;

&lt;p&gt;Removing the feature would remove functionality that &lt;code&gt;ui-tools&lt;/code&gt; intentionally provides.&lt;/p&gt;

&lt;p&gt;Instead, the security model has been strengthened around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Version Guidance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;0.1.0-beta – 0.1.8-beta&lt;/strong&gt;: Affected by the unauthenticated terminal vulnerability. Upgrade immediately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;0.1.9-beta&lt;/strong&gt;: Adds authentication before the WebSocket upgrade.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;0.2.0-beta and newer&lt;/strong&gt;: Includes additional defense-in-depth controls around authentication, authorization, sessions, origins, connections, messages, environment handling, and terminal lifetime.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are currently using an affected release, upgrade to a current version rather than continuing to use the unauthenticated implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Clarification
&lt;/h2&gt;

&lt;p&gt;The existence of a server-side PTY does not by itself make a package a backdoor.&lt;/p&gt;

&lt;p&gt;The terminal functionality was intentionally implemented as a developer feature.&lt;/p&gt;

&lt;p&gt;The security issue was that the intended authentication/authorization boundary was missing in the affected releases.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;0.1.9-beta&lt;/code&gt; addressed that immediate vulnerability, and &lt;code&gt;0.2.0-beta&lt;/code&gt; continues the work with additional security controls because I did not believe a single token check was enough for a feature with this level of privilege.&lt;/p&gt;

&lt;p&gt;Security issues happen. What matters is identifying them, documenting them accurately, fixing them, and continuing to improve the security model.&lt;/p&gt;

</description>
      <category>npm</category>
      <category>security</category>
      <category>git</category>
    </item>
    <item>
      <title>Security Notice: @bananacool467/ui-tools — Use 0.1.9-beta or Newer</title>
      <dc:creator>Banana Cool</dc:creator>
      <pubDate>Fri, 28 Aug 2026 00:43:02 +0000</pubDate>
      <link>https://dev.to/banana_cool/security-notice-bananacool467ui-tools-use-019-beta-or-newer-28b</link>
      <guid>https://dev.to/banana_cool/security-notice-bananacool467ui-tools-use-019-beta-or-newer-28b</guid>
      <description>&lt;p&gt;&lt;strong&gt;Published&lt;/strong&gt;: August 27, 2026&lt;br&gt;
&lt;strong&gt;Package&lt;/strong&gt;: &lt;code&gt;@bananacool467/ui-tools&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I want to clarify a security issue affecting earlier versions of &lt;code&gt;@bananacool467/ui-tools&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Versions &lt;strong&gt;0.1.0-beta through 0.1.8-beta&lt;/strong&gt; contained an unauthenticated WebSocket terminal endpoint. This allowed a client connecting to the endpoint to interact with a PTY running on the server.&lt;/p&gt;

&lt;p&gt;The issue has since been addressed.&lt;/p&gt;
&lt;h2&gt;
  
  
  Affected versions
&lt;/h2&gt;

&lt;p&gt;The OSV advisory &lt;strong&gt;MAL-2026-13416&lt;/strong&gt; currently identifies these versions as affected:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0.1.0-beta
0.1.1-beta
0.1.2-beta
0.1.3-beta
0.1.4-beta
0.1.5-beta
0.1.6-beta
0.1.7-beta
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(&lt;code&gt;0.1.8-beta&lt;/code&gt; also didn't have the patch)&lt;/p&gt;

&lt;p&gt;The advisory was generated from findings by Amazon Inspector and includes hashes identifying the affected package artifacts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Patched versions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do not use the affected versions &lt;code&gt;0.1.0-beta&lt;/code&gt; through &lt;code&gt;0.1.8-beta&lt;/code&gt;. Use &lt;code&gt;0.1.9-beta&lt;/code&gt; or newer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In 0.1.9-beta, I added authentication before the WebSocket upgrade is accepted.&lt;/p&gt;

&lt;p&gt;The 0.1.9-beta implementation checks the token before calling &lt;code&gt;handleUpgrade()&lt;/code&gt;, so unauthenticated connections are rejected before the WebSocket is upgraded.&lt;/p&gt;

&lt;p&gt;In other words, knowing the WebSocket endpoint alone is no longer sufficient to establish a terminal session.&lt;/p&gt;

&lt;h2&gt;
  
  
  What should I do?
&lt;/h2&gt;

&lt;p&gt;If your project uses an affected version, update it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @bananacool467/ui-tools@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or explicitly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @bananacool467/ui-tools@0.1.9-beta
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can check your installed version with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;ls&lt;/span&gt; @bananacool467/ui-tools
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you're using a version from &lt;code&gt;0.1.0-beta&lt;/code&gt; through &lt;code&gt;0.1.8-beta&lt;/code&gt;, &lt;strong&gt;upgrade immediately&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Clarification: This Was Not an Intentional Backdoor
&lt;/h2&gt;

&lt;p&gt;The terminal functionality in &lt;code&gt;@bananacool467/ui-tools&lt;/code&gt; was an intentional developer feature. The security issue in versions prior to &lt;code&gt;0.1.9-beta&lt;/code&gt; was that the terminal's WebSocket endpoint did not properly require authentication.&lt;/p&gt;

&lt;p&gt;The unauthenticated access was unintentional. It was a security vulnerability, not an intentionally deployed backdoor or malware payload.&lt;/p&gt;

&lt;p&gt;The terminal functionality itself is not being removed because it is an intended feature of the package. Instead, later releases add security controls around it, including authentication, localhost restrictions, origin allowlisting, session ownership checks, message-size limits, session limits, and other protections.&lt;/p&gt;

&lt;p&gt;Independent analysis from Socket.IO identified the affected implementation as a high-severity remote command-execution/data-exposure primitive due to its lack of authentication, authorization, and session ownership validation. However, the analysis also noted that there was no strong evidence of stealth or obfuscation. This distinction is important: the presence of a server-side terminal/PTY feature does not by itself make the feature a backdoor. The security problem was the absence of the intended authentication boundary in the affected releases.&lt;/p&gt;

&lt;p&gt;Socket.IO said in older affected versions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;This module implements a remote interactive terminal. It spawns a server-side shell in a PTY and forwards client-supplied input to that shell while streaming command output/history back to the client. It contains no authentication/authorization or session ownership validation within the module, and its error path still forwards raw client bytes to the PTY. As-is, it is extremely dangerous if reachable by untrusted users and should be treated as a high-severity remote command execution/data exposure primitive. No strong evidence of stealth/obfuscation is present, but the functional risk is very high.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Clarification: Current Releases
&lt;/h2&gt;

&lt;p&gt;Security reports concerning earlier releases should not be interpreted as describing the security architecture of all subsequent releases.&lt;/p&gt;

&lt;p&gt;The terminal functionality remains an intentional feature of &lt;code&gt;@bananacool467/ui-tools&lt;/code&gt;. However, the security controls surrounding that functionality have been substantially strengthened since the affected releases.&lt;/p&gt;

&lt;p&gt;In particular, &lt;code&gt;0.1.9-beta&lt;/code&gt; introduced authentication before the WebSocket upgrade. "0.2.0-beta" further strengthened the terminal implementation with additional authentication and authorization controls, localhost and origin restrictions, authenticated session ownership, message-size limits, connection and session limits, session lifetime limits, environment restrictions, and secure transport requirements for remote operation.&lt;/p&gt;

&lt;p&gt;The existence of the terminal/PTY functionality itself does not mean that every version of the package provides unauthenticated remote command execution. Security assessments should evaluate the specific version being used and its actual implementation rather than assuming that behavior from an older affected release remains unchanged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Version Guidance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Affected releases: &lt;code&gt;0.1.0-beta&lt;/code&gt; through &lt;code&gt;0.1.8-beta&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;0.1.9-beta&lt;/code&gt;: Adds authentication before the WebSocket upgrade.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;0.2.0-beta&lt;/code&gt; and newer: Further hardens the terminal functionality with additional access-control and resource-security features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are using an affected release, upgrade to a current release rather than continuing to use the unauthenticated implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happened?
&lt;/h2&gt;

&lt;p&gt;The terminal functionality is intentional. &lt;code&gt;ui-tools&lt;/code&gt; is not intended to be a frontend-only component library; it contains various development/UI utilities, including an optional terminal interface. The unauthenticated part was unintentional.&lt;/p&gt;

&lt;p&gt;The problem with the earlier implementation was that the terminal WebSocket endpoint did not require authentication.&lt;/p&gt;

&lt;p&gt;This meant that a server using the terminal functionality could unintentionally expose a shell to anyone who could reach the endpoint.&lt;/p&gt;

&lt;p&gt;This was not acceptable, and authentication was added in &lt;code&gt;0.1.9-beta&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  About MAL-2026-13416
&lt;/h2&gt;

&lt;p&gt;The official OSV record is available here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://api.osv.dev/v1/vulns/MAL-2026-13416" rel="noopener noreferrer"&gt;https://api.osv.dev/v1/vulns/MAL-2026-13416&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The underlying OSSF malicious-packages record is also publicly available:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/@bananacool467/ui-tools/MAL-2026-13416.json" rel="noopener noreferrer"&gt;https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/@bananacool467/ui-tools/MAL-2026-13416.json&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The advisory currently lists &lt;strong&gt;0.1.0-beta through 0.1.7-beta&lt;/strong&gt; as affected, I have listed 0.1.8-beta as affected too. &lt;code&gt;0.1.9-beta&lt;/code&gt; is not included in that affected-version list.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;If you're installing &lt;code&gt;@bananacool467/ui-tools&lt;/code&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Use "0.1.9-beta" or newer. Do not install versions &lt;code&gt;0.1.0-beta&lt;/code&gt; through &lt;code&gt;0.1.8-beta&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I recommend pinning the version in production rather than blindly accepting arbitrary prerelease updates.&lt;/p&gt;

</description>
      <category>npm</category>
      <category>security</category>
    </item>
    <item>
      <title>I made a web framework</title>
      <dc:creator>Banana Cool</dc:creator>
      <pubDate>Tue, 04 Aug 2026 03:53:50 +0000</pubDate>
      <link>https://dev.to/banana_cool/i-made-a-web-framework-2obn</link>
      <guid>https://dev.to/banana_cool/i-made-a-web-framework-2obn</guid>
      <description>&lt;p&gt;Hi everyone! I made an SSR web framework on NPM named &lt;strong&gt;Authtics Host&lt;/strong&gt; (or &lt;strong&gt;HostJS&lt;/strong&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  About
&lt;/h2&gt;

&lt;p&gt;Based on tests, it starts the server in &lt;strong&gt;under 1&lt;/strong&gt; second. For a user to see the page, it takes &lt;strong&gt;1-4&lt;/strong&gt; seconds.&lt;/p&gt;

&lt;p&gt;It also has a &lt;strong&gt;Developer Panel&lt;/strong&gt;, which has controls to control the website &lt;strong&gt;&lt;em&gt;(e.g., Restart, Shutdown and Pause Users)&lt;/em&gt;&lt;/strong&gt; with &lt;strong&gt;DAT&lt;/strong&gt; (&lt;strong&gt;Developer Access Token&lt;/strong&gt;) authorization for the Developer Panel.&lt;/p&gt;

&lt;p&gt;The framework's Developer Panel has &lt;strong&gt;console&lt;/strong&gt; and &lt;strong&gt;network&lt;/strong&gt; tabs, where devs can see: what the page is receiving, sending or what logs it's placing in the console. Better than importing a package and setting it up on mobile.&lt;/p&gt;

&lt;h2&gt;
  
  
  3 Reasons why I made this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Most frameworks start in 2-5+ seconds&lt;/li&gt;
&lt;li&gt;There isn't any console or network tab for mobile&lt;/li&gt;
&lt;li&gt;If there's a developer panel in another framework, it might not be mobile-friendly&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Package
&lt;/h2&gt;

&lt;p&gt;The NPM package is at: &lt;a href="https://npmjs.com/package/@bananacool467/authtics-host" rel="noopener noreferrer"&gt;@bananacool467/authtics-host&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code snippet
&lt;/h2&gt;

&lt;p&gt;For creating and starting the server:&lt;br&gt;
Backend script (index.ts):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@bananacool467/authtics-host&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;App&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bash script to run it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node &lt;span class="nt"&gt;--experimental-strip-types&lt;/span&gt; index.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How I got it to start in under 1 second
&lt;/h2&gt;

&lt;p&gt;What I did was make it do fast stuff, when it starts, it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Loads modules (node:fs, node:http, jiti)&lt;/li&gt;
&lt;li&gt;Then it loads the jiti config file&lt;/li&gt;
&lt;li&gt;Then it starts the server with the config&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>typescript</category>
      <category>react</category>
      <category>npm</category>
      <category>web</category>
    </item>
    <item>
      <title>I want help making an AI please</title>
      <dc:creator>Banana Cool</dc:creator>
      <pubDate>Sat, 18 Jul 2026 05:39:43 +0000</pubDate>
      <link>https://dev.to/banana_cool/i-want-help-making-an-ai-please-146j</link>
      <guid>https://dev.to/banana_cool/i-want-help-making-an-ai-please-146j</guid>
      <description>&lt;p&gt;Can someone please help me make an AI model in &lt;strong&gt;C++&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;I tried to make one multiple times.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cpp</category>
      <category>programming</category>
    </item>
    <item>
      <title>I am making a programming language</title>
      <dc:creator>Banana Cool</dc:creator>
      <pubDate>Wed, 24 Jun 2026 04:37:08 +0000</pubDate>
      <link>https://dev.to/banana_cool/i-am-making-a-programming-language-4d9d</link>
      <guid>https://dev.to/banana_cool/i-am-making-a-programming-language-4d9d</guid>
      <description>&lt;p&gt;Hi everyone! I’m currently building a custom programming language called &lt;strong&gt;Swiq&lt;/strong&gt; using C++. &lt;/p&gt;

&lt;p&gt;Most modern languages rely entirely on standard garbage collection or strict block scoping. When I designed Swiq, I wanted to give developers built-in keywords to control variable state directly.&lt;/p&gt;

&lt;h3&gt;
  
  
  What makes Swiq unique?
&lt;/h3&gt;

&lt;p&gt;Swiq tracks both the current state and the instantiation state of your data. Here are a few unique features I've built into the memory management system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Native Archiving:&lt;/strong&gt; You can stash a variable away into a hidden memory space and safely pull it back whenever you need it.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Instant Resetting:&lt;/strong&gt; Swiq remembers the initial value used when a variable was first created, allowing you to instantly reset it to its default state.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Explicit Closures:&lt;/strong&gt; Functions allow explicit variable closure capturing, much like C++ lambdas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A Quick Look at the Syntax
&lt;/h3&gt;

&lt;p&gt;Here is a quick look at how clean it is to handle variable states, archiving, and resetting in Swiq:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;set var score = 100;

// Modify it
set score = 150;

// Need a backup state? Archive it!
archive score; 

// Score is now safely stashed away. Bring it back natively:
restore score;

// Want to revert to the very first value?
reset score; // score is now back to 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And for functions with closures:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;set var x = 10;
set var y = 70;
set var z = 25;

// Limited access functions
func myFunction () [x, y] {
  log(x);
  log(y);
  // No access to "z"
}

// Full access functions
func myFunction () [&amp;amp;] {
  log(x);
  log(y);
  log(z);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Check out the project!
&lt;/h3&gt;

&lt;p&gt;Swiq is an open-source project and is still actively under development. I built the custom interpreter and Abstract Syntax Tree (AST) completely from scratch in C++.&lt;/p&gt;

&lt;p&gt;You can check out the source code, read the documentation, or contribute here:&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://github.com/bananakitssu/Swiq" rel="noopener noreferrer"&gt;github.com/bananakitssu/Swiq&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I would love to hear your thoughts on this approach to state management. What features or use cases would you like to see next?&lt;/p&gt;

</description>
      <category>programming</category>
      <category>cpp</category>
      <category>github</category>
      <category>git</category>
    </item>
  </channel>
</rss>
