Category: code

  • SSPAI Morning Brief: Claude Code Leak, OpenAI Valued at $122 Billion, and More Tech Headlines

    SSPAI Morning Brief: Claude Code Leak, OpenAI Valued at $122 Billion, and More Tech Headlines

    Morning Brief

    1. Claude Code source code accidentally leaked
    2. OpenAI raises $122 billion in funding
    3. Sony to continue raising PlayStation Plus subscription prices
    4. Microsoft confirms development of fully native system apps for Windows 11
    5. Meta releases Ray-Ban Optic Styles smart glasses
    6. SSPAI gets early hands-on with iPhone 18
    7. SSPAI Otter addresses ecological pollution concerns with lobster community
    8. Google releases Veo 3.1 Lite video generation model
    9. News Worth a Quick Look

    Claude Code source code accidentally leaked

    On March 31, Anthropic inadvertently included source map files when publishing the ClaudeCode npm package, leading to the exposure of its complete source code. The leak involves nearly 2,000 TypeScript files and over 512,000 lines of code, including core components such as a ~46,000-line query system and a ~40,000-line plugin-based tooling system. Security researcher Chaofan Shou first flagged the issue on X, after which the code was mirrored to public GitHub repositories and quickly amassed tens of thousands of forks.

    Anthropic responded that the incident was a packaging error rather than a security breach, and did not involve any customer-sensitive data or credentials. Developer analysis suggests the code reveals a complex memory architecture—including background memory rewriting—and validation mechanisms. While trade secrets remain legally protected, the exposed architectural design could potentially help competitors optimize similar tools, or enable malicious actors to identify vulnerabilities to bypass safety guardrails. Source


    OpenAI raises $122 billion in funding

    On March 31, OpenAI completed a $122 billion funding round, reaching a post-money valuation of $852 billion. The round was led by SoftBank and Andreessen Horowitz, with participation from Nvidia, Microsoft, and Amazon. Of the total, $3 billion came from individual investors via banking channels, alongside an expansion of its undrawn revolving credit facility to $4.7 billion.

    Business data shows OpenAI generates $2 billion in monthly revenue, with 40% coming from enterprise services. Weekly active users exceed 900 million, with over 50 million subscribers. Its advertising pilot program has generated more than $100 million in revenue in under six weeks. Source


    Sony to continue raising PlayStation Plus subscription prices

    Sony Interactive Entertainment stated in a blog post that data from the past two years of player testing shows around 59% of PlayStation users who subscribed to PlayStation Plus at discounted rates chose to renew at higher prices, indicating a recovery in the appeal of PlayStation content and subscription services. Based on this, Sony has internally planned a tiered pricing strategy that includes annual increases of HKD 125 for PS Plus subscriptions. Source


    Microsoft confirms development of fully native system apps for Windows 11

    As part of a broader “cleanup” of Windows 11, Microsoft has committed to developing fully native system applications and has formed a new team to drive the initiative. According to Rudy Huyn, Partner Architect responsible for Microsoft Store and File Explorer, the team will focus on Windows 11 app development. Currently, the proportion of native apps in Windows remains relatively low, with some system apps—such as Clipchamp and the Copilot series—still based on web technologies. While it remains unclear whether all new apps will adopt the WinUI framework, Microsoft has confirmed that at least some will no longer rely on web components. Windows 11 itself will also receive major updates, including improved context menu loading, faster File Explorer startup times, migration of the Start menu to WinUI, and support for taskbar resizing and compact layouts. Source


    Meta releases Ray-Ban Optic Styles smart glasses

    On March 31, Meta introduced the Ray-Ban Optic Styles series of smart glasses, optimized for prescription lenses. The lineup includes the square-framed Blayzer and the round-framed Scriber. Both models feature a slimmer, lighter design, along with flexible hinges, adjustable temples, and replaceable nose pads. In terms of hardware, they include a camera, privacy LED indicator, open-ear audio, and AI capabilities, with battery life exceeding 8 hours. Users can choose from standard, thin, or ultra-thin lenses at the time of purchase, all supporting anti-reflective coatings.

    The Optic Styles series comes with a dark brown charging case, starts at $499, and is now available for pre-order, with shipping expected to begin in April. Source


    SSPAI gets early hands-on with iPhone 18

    On April 1, we got our hands on the yet-to-be-released iPhone 18 ahead of schedule. The iPhone 18 is powered by the new A25 Bionic chip, delivering exceptionally smooth multitasking and near-instant loading in demanding games, with outstanding overall performance. Despite a slim 7.4mm body, it packs a high-density 4500mAh battery, significantly improving battery life. It features a 6.2-inch Super Retina XDR display using quantum dot self-emissive technology, achieving 100% color accuracy and near-infinite contrast, along with an ultra-high 800Hz refresh rate for incredibly smooth scrolling. The rear camera system upgrades the main sensor to 120MP, with up to 20x optical zoom, producing sharp and detailed long-range shots. The frame adopts an innovative flexible material that not only enhances drop resistance but also conforms better to the hand for a more comfortable grip.

    To better protect this flagship device, we have specially customized a dedicated screen protector for the iPhone 18, using an ultra-thin plastic material derived from food wrap. The design prioritizes an extremely lightweight and close-fitting experience, offering basic protection while preserving the original naked feel of the device as much as possible. The material is highly flexible, conforming to the device’s curves without easily forming bubbles. In addition, this material choice aligns with environmental considerations by reducing time and material waste caused by failed applications. This custom solution has already attracted significant attention, and many users are looking forward to versions for more models. There’s no need to rush—we will gradually roll out a complete lineup of professional tempered glass protectors for the full iPhone series, along with synchronized support for multiple models in upcoming official announcements.


    SSPAI Otter addresses ecological pollution concerns with lobster community

    Recently, the head otter of SSPAI’s aquatic ecosystem department held a meeting with the chief of a newly migrated lobster community, addressing repeated incidents of ecological pollution and territorial encroachment caused by its members, and ordering immediate rectification along with strict accountability for those responsible.

    The otter emphasized that SSPAI waters welcome the migration of new species, provided they adhere to principles of fairness, friendliness, and responsibility. According to the SSPAI Aquatic Ecology Regulations, any non-native species entering SSPAI waters must truthfully and accurately declare its origin and behavioral traits. The ecosystem department retains full discretion over the conditions and scope of permitted residence, and all species must comply strictly with these conditions. Violators will face prosecution and expulsion.

    The department stated it will continue to manage water resources in accordance with regulations, strengthen oversight, enforce accountability among newly introduced communities, and maintain a clean and orderly aquatic environment.


    Google releases Veo 3.1 Lite video generation model

    On March 31, Google launched the Veo 3.1 Lite video generation model, designed to support high-throughput video application development. It is now available to developers via the paid tier of the Gemini API and Google AI Studio.

    Veo 3.1 Lite supports both text-to-video and image-to-video generation, offering 720p and 1080p resolution options, and compatibility with both 16:9 landscape and 9:16 portrait formats. Developers can customize video durations of 4, 6, or 8 seconds. In terms of performance, the model maintains the same generation speed as Veo 3.1 Fast while reducing costs by at least 50%. At the same time, Google announced it will lower the pricing of Veo 3.1 Fast starting April 7 to further reduce the barrier to adopting video generation technology. Source


    News Worth a Quick Look

    • On March 31, ollama announced backend support for the Apple MLX framework, further leveraging unified memory architecture, with specific optimizations for the GPU neural accelerators in M5, M5 Pro, and M5 Max chips. The update also introduces support for NVIDIA’s NVFP4 format to balance model accuracy and VRAM usage, and upgrades the caching system to enable cross-session cache reuse, intelligent snapshots, and smart eviction algorithms. Source
    • Bloomberg reports that Nothing plans to release its first AI smart glasses in 2027. The product is expected to include a microphone, speakers, and a camera, but may not feature a display, instead relying on smartphones and cloud services for AI processing. Founder Carl Pei, who was previously skeptical of the category, has now shifted to support it and has outlined a strategy to expand beyond smartphones and audio products. Before that, Nothing will continue its current roadmap, updating its phone and earbud lineup in the first half of 2026. Source
    • An internal memo obtained by Android Authority suggests that due to declining user satisfaction with the design of recent Google Pixel hardware, Google plans to adjust its product strategy starting in 2028. The new approach will adopt a five-year release cycle (referred to as LTSM—Long-Term Servicing Model devices) to reduce design costs. Future revenue for the Pixel hardware division is expected to shift toward relatively closed, subscription-based software update services. Source
    • Reports suggest that after discontinuing the Mac Pro, Apple is planning to reintroduce its rack-mounted server, Xserve. The product, reportedly codenamed A3174, may support up to four Apple M2 Ultra chips and include a BMC controller with 16GB memory and 1TB SSD, potentially powered by M1 or M2 series chips. Apple originally introduced its first 1U rack server in 2002 for file services, web hosting, and cluster computing, but discontinued the line in 2011. Earlier reports indicated Apple has been developing a new server hardware lineup for its Intelligence cloud models, and A3174 could be one such variant. Some analysts also suggest it may serve as a home-based Apple Intelligence hub for local AI inference. Source
    • Following a PR crisis triggered by controversial social media remarks—“players become dogs after price cuts”—Logitech China responded to media on April 1, stating that those responsible have been dealt with. The company acknowledged the harm caused to the gaming community and announced it will suspend promotion of its peripheral product lines in mainland China, shifting instead toward real estate and senior care businesses. Plans include launching subscription-based retirement communities equipped with esports centers and daily care services, aiming to “act as children” for gamers and take on caregiving responsibilities. Source
    • On March 30, OpenAI Codex launched an official plugin for its competitor Claude Code, named Codex-Plugin-CC. The plugin allows developers to invoke Codex directly within Claude Code without switching tools, enabling tasks such as code review, adversarial review, and task handoff. Users can install the plugin via the marketplace in Claude Code and access commands like /codex:review, /codex:adversarial-review, and /codex:rescue. Source
  • SSPAI Morning Brief: Apple Unveils MacBook Neo as OpenAI Prepares New AI Model

    SSPAI Morning Brief: Apple Unveils MacBook Neo as OpenAI Prepares New AI Model

    Morning Brief

    1. Apple introduces MacBook Neo
    2. Claude Code launches voice mode
    3. Setapp allows individual app purchases or subscriptions
    4. OpenAI confirms an upcoming new model
    5. Keychron releases the B11 Pro foldable keyboard
    6. ASUSTOR launches the flagship NAS AS7224RDX

    Apple introduces MacBook Neo

    On March 4, Apple officially unveiled the long-rumored “colorful entry-level” MacBook, with the new lineup named MacBook Neo.

    Further viewing: Hands-on photos of MacBook Neo from SSPAI

    MacBook Neo is powered by the A18 Pro processor, comes standard with 8GB of memory and a 13.0-inch Liquid Retina display, and features one USB 3 port and one USB 2 port. The device supports up to 16 hours of streaming video playback. It weighs 1.23 kg and includes a dual-speaker system with spatial audio support, Wi-Fi 6E, Bluetooth 6, and a 1080p FaceTime HD camera. The base model includes 256GB of storage, while the 512GB version additionally comes with Touch ID.

    MacBook Neo is available in four colors: silver, peach pink, citrus yellow, and indigo blue. The 256GB version is priced at 4,599 yuan, while the 512GB version costs 5,299 yuan. The product will officially go on sale on March 11. Source

    Product appearance images, provided by the news source

    Claude Code launches voice mode

    On March 3, Anthropic announced the gradual rollout of a new Voice Mode in its programming tool Claude Code, signaling that the developer-favored concept of “intuitive programming” is evolving toward a more efficient era of “voice programming.”

    The voice module is built directly into the underlying architecture of Claude Code. After receiving beta access, users will see a prompt prominently displayed on the welcome screen inviting them to enable the feature. During actual use, developers only need to press and hold the space bar on the keyboard to speak and input development requests, then release the key to quickly send the voice command to the AI for execution.

    In terms of pricing, Anthropic emphasized that the voice interaction feature will not incur any additional subscription fees. As the feature rolls out more broadly, users on the existing Pro, Max, Team, and Enterprise tiers will all be able to experience this new capability designed to improve development efficiency at no extra cost. Source


    Setapp allows individual app purchases or subscriptions

    On March 3, the MacPaw team announced that it will introduce new purchasing options for its Setapp platform, including standalone subscriptions and one-time purchase plans for specific apps. Under the new model, applications such as Bartender, Downie, and AlDente Pro, along with MacPaw’s own apps like CleanMyMac, Moonlock, and Gemini 2, will offer a variety of subscription and purchase plans, including monthly, yearly, and one-time purchase options. These purchase or subscription plans can all be accessed through Setapp, without requiring users to subscribe to the full Setapp service.

    Currently, more than 60 apps support the new purchase and subscription options, and the list of participating applications will be updated and announced regularly in the future. Source


    OpenAI confirms an upcoming new model

    On March 4, shortly after launching the GPT-5.3 Instant model, the OpenAI team stated on social media that GPT-5.4 “will arrive sooner than you think.” Since the GPT client shows that the older 5.1 model will be discontinued on March 11, some users speculate that OpenAI may officially release version 5.4 around that time. Source


    Keychron releases the B11 Pro foldable keyboard

    On March 4, the Keychron brand introduced the B11 Pro foldable portable keyboard. The product features a flat Alice layout, which is more ergonomic than the traditional horizontal layout, while remaining compatible with macOS, Windows, and Linux. The B11 Pro adopts an inward-folding design, with an ABS body and a matte black PU leather back. It uses scissor-switch mechanisms and comes with concave ABS keycaps. In terms of connectivity, the keyboard supports tri-mode connections including USB-C wired, 2.4GHz wireless, and Bluetooth 5.3 wireless, with a “dual 1kHz” polling rate. The entire keyboard weighs 258g and includes a built-in 250mAh battery rated for up to 138 hours of battery life, supporting automatic power-off when folded and automatic power-on when unfolded. The price is set at $64.99. Source

    Product appearance image, photo sourced from news outlets

    ASUSTOR launches the flagship NAS AS7224RDX

    On March 3, ASUSTOR, a subsidiary of ASUS, announced the launch of its 4U rackmount flagship NAS, the AS7224RDX (Lockerstor 24R PRO Gen2), featuring 24 drive bays. The AS7224RDX is powered by an AMD Ryzen 7 PRO 7745 eight-core processor and provides 24 SATA bays supporting either 3.5-inch or 2.5-inch drives. It also includes PCIe Gen5 ×8 and PCIe Gen5 ×4 expansion slots, one M.2 2280 PCIe Gen5 ×4 slot, two 10GbE network ports, and two 1GbE network ports.

    In addition, the device features four DDR5 UDIMM memory slots supporting up to 192GB of ECC memory, and comes preinstalled with 16GB DDR5-4800 ECC memory and a 32GB SATA DOM. It is powered by a pair of 550W Platinum redundant power supplies and equipped with four 60mm cooling fans. The system also provides four USB-A 5Gbps ports and one HDMI port for service purposes. Source

    Product appearance images, provided by the news source

  • To See Network Speed Elegantly on My Pixel, I Let Gemini Write 90% of the Code

    To See Network Speed Elegantly on My Pixel, I Let Gemini Write 90% of the Code

    AI-Assisted Creation Statement:

    This article’s outline was generated by Gemini. I completed the content creation, and the article was polished by Gemini afterward. My personal writing isn’t great, so if you’re sensitive to AI-generated content, please accept my apologies!


    Introduction: “Network Speed Anxiety” and the “Bare-Bones House” of Stock Android

    Friends who use Pixel phones or other near-stock Android systems are probably familiar with the joke about a “bare-bones house.” While we enjoy the purest Android experience, there are always some missing localized features that drive people crazy—and “real-time network speed display” is one of them.

    In China’s complicated network environment, a speed indicator is almost a necessity for me. The awkward part is that Google seems to have never planned to support this feature at the system level. So we have no choice but to turn to third-party apps on the Google Play Store. However, after going through similar apps on the market—such as NetSpeed Indicator and Internet Speed Meter—I found that even in 2026, the experience is still far from satisfactory.

    Most of these “veteran apps” have outdated UI designs. Many of their interfaces are stuck in the Android 4.4 era or the first generation of Material Design, and they always look out of place on modern Android systems. The actual speed display isn’t great either: it’s either a tiny status-bar icon with barely readable numbers and units, or a floating window plastered with the “display over other apps” permission reminder. Feature bloat is another problem—I just want a speed indicator, yet they often bundle in traffic statistics, detailed usage analysis, and a bunch of features I don’t need.

    Most critically, they all share one fatal flaw: when a proxy tool is enabled, the reported network speed is wildly inflated. Pixel users have probably run into this—your real download speed is only 5 MB/s, but the floating window shows 10 MB/s.

    Why Is the Network Speed in These Tools Always Inaccurate?

    Simply put, this is the fault of Android’s old statistics mechanism. Traditional speed-meter apps usually read the system’s total traffic interfaces directly. When a proxy tool is enabled, data packets first pass through the physical network interface (such as wlan0) and are counted once. Then the data is unpacked and forwarded to the proxy tool’s virtual interface (such as tun0), where it gets counted again.

    Most legacy apps simply add up the traffic from all interfaces, which results in displayed speeds that are often double the real speed.

    Fortunately, AI-assisted programming has been booming lately. Since I couldn’t find a perfect alternative, an idea came to me: why not let AI help me write a network-speed app tailored specifically for Pixel?

    And that’s how Pixel Meter was born.

    What Makes Pixel Meter So Good?

    As an app built to solve my own needs, Pixel Meter mainly addresses two core problems.

    Accurate Traffic Statistics (Say Goodbye to Inflated Numbers)

    Pixel Meter abandons the outdated global-statistics approach and instead uses the new API TrafficStats.getRxBytes(ifaceName) introduced in Android S (API 31).

    This API allows an app to precisely obtain traffic data from a specific network interface. With a built-in whitelist and blacklist mechanism for network interfaces, Pixel Meter can intelligently filter out duplicate data from virtual interfaces created by proxy tools. Most importantly, this is achieved without requiring root access or Shizuku permissions—making it both efficient and accurate.

    Possibly the Most Elegant Display Method Available

    The Live Update Notification is, in my view, Pixel Meter’s biggest secret weapon. On Android 16 and some other high-version systems that support this feature, live update notifications avoid the space constraints and poor readability of traditional status-bar icons, allowing much richer information to be displayed more flexibly.

    Let’s look at a comparison:

    Traditional approach: a crowded status bar where the numbers and units are hard to read

    Pixel Meter, on the other hand, takes advantage of the notification area’s real-time update capability. Although there is a character limit (7 characters), it’s more than enough to clearly show “number + unit”:

    Live update approach vs. floating window

    More importantly, it doesn’t look like a third-party patch at all. Instead, it feels like a native system feature—clean, natural, and seamlessly integrated.

    Behind the Scenes: I Provided the Ideas, AI Wrote the Code

    The arrival of the AI era has completely changed the barrier to entry for individual developers.

    In the past, I tried building a few small tools myself (such as an app to automatically skip ads), but I often gave up halfway because of the tedious initial setup and the long wait for positive feedback. The effort required was too high, the results too slow, and enthusiasm was easily drained.

    Another incubation project that went from full of excitement to something I never wanted to open again

    But this time was completely different. During the development of Pixel Meter, I adopted a new “human–AI collaboration” model:

    • I handled: architecture design, requirement analysis, and “code reviews” plus course correction when the AI made mistakes.
    • Gemini handled: writing the concrete implementation code, generating documentation, and even preparing store-listing materials.

    I used AntiGravity together with a custom GEMINI.md rules file. It’s like giving the AI a form of “long-term memory,” allowing it to remember our previous architecture discussions and coding standards. Even in a new session, it can read these “memory files” and quickly get back into development mode.

    Letting AI recommend and decide on the tech stack
    Architecture design discussions
    Reading the “memory” files when starting a new session allows Gemini to quickly “recall” the project’s requirements.

    The final numbers were surprising: Pixel Meter has already released three versions, and about 90% of the code was generated by Gemini. Even the GitHub repository’s README, the privacy policy, and the promotional copy and featured images on Google Play were all created by it.

    You’re Invited to Try It Out

    At the moment, Pixel Meter is open-sourced on GitHub. You can also head to the Google Play Store and search for “Pixel Meter” to download and use it directly.

    Whether you’re looking for a clean, no-frills network speed indicator, or you’re simply curious about the code quality of AI-assisted development, you’re more than welcome to give Pixel Meter a try.

  • SSPAI Morning Brief: OpenAI Releases GPT-5.2 and More

    SSPAI Morning Brief: OpenAI Releases GPT-5.2 and More

    Morning Brief

    1. OpenAI Releases GPT-5.2
    2. Snapmaker U1 Color 3D Printer Launches
    3. Amazon to Allow Authors to Publish Kindle Books Without DRM Protection
    4. OpenAI Announces Integration with Select Adobe Apps
    5. Tencent QQ Group Chats Add Support for Yuanbao AI Summary Feature
    6. Alibaba Releases Qwen3-Omni-Flash Multi-Modal Model
    7. Qualcomm Announces Acquisition of Ventana Micro Systems
    8. Rumors You Can Just Glance At

    OpenAI Releases GPT-5.2

    On December 12, OpenAI announced the launch of its GPT-5.2 model lineup, positioning it as the most suitable model for everyday professional use. According to OpenAI, GPT-5.2 delivers overall improvements in table generation, presentation creation, coding, image understanding, long-context processing, tool use, and complex multi-step tasks.

    The GPT-5.2 series includes three versions: Instant, Thinking, and Pro. Among them, the Thinking model stands out for significantly reducing hallucinations, making it more suitable for professional AI agent applications that require high reliability. Companies such as Notion, Box, Shopify, Harvey, Zoom, and Databricks participated in pre-release testing. OpenAI also noted that GPT-5.2 will play a more central role in AI-agent workflows, with the long-term goal of shaping ChatGPT into a highly personalized intelligent assistant. Source

    Logos for OpenAI and the Walt Disney Company in white on a background of swirling purples, blues, and magenta OpenAI also announced a three-year licensing agreement with Disney. Sora and ChatGPT Images will gain the ability to generate video and image content featuring characters from Disney, Marvel, Pixar, and Star Wars. The related features are expected to roll out in early 2026, with some generated content showcased on Disney+. Source

    In addition, Disney has issued a cease-and-desist letter to Google, claiming that Google used Disney works without permission to train AI models, and subsequently generated and distributed images and videos featuring Disney-related characters for commercial purposes. Source


    Snapmaker U1 Color 3D Printer Launches

    On December 12, the color 3D printer Snapmaker U1 made its debut on JD.com. The Snapmaker U1 features the SnapSwap™ independent four-head parallel system, supporting multi-color and multi-material printing with quick toolhead switching. According to the company, in multi-color printing scenarios the device can switch toolheads in about 5 seconds, improving efficiency and reducing material waste. Compared with traditional single-nozzle color-changing methods, Snapmaker U1’s four-color printing tasks can reach speeds of up to 500 mm/s and complete prints within 5–6 hours. While achieving up to a fivefold increase in overall efficiency, the design also reduces material usage by about 80% thanks to its purge-free channel structure.

    Snapmaker U1 supports automatic calibration, input shaping, pressure advance, automatic bed leveling, and other features to ensure clean edges, smooth walls, and sharp details even in high-speed printing mode. Its printing parameters include a build volume of 270×270×270 mm, along with AI print monitoring and app-based management.

    Snapmaker U1 is priced at 5,299 RMB exclusively on JD.com (4,504.15 RMB after national subsidies). Buyers can still claim an exclusive privilege package before 7 p.m. on December 12, with pre-orders officially opening at 8 p.m. The Snapmaker U1 will also be showcased at an offline experience event at the JD MALL Beijing Shuangjing store from December 16 to 17. Source


    Amazon to Allow Authors to Publish Kindle Books Without DRM Protection

    Amazon has announced that beginning January 20, 2026, authors who choose not to enable DRM (Digital Rights Management) in the Kindle Direct Publishing workflow will be able to offer their e-books to readers in more open formats such as EPUB and PDF. Previously published books will not have their DRM settings changed automatically; authors must manually update their preferences in the KDP dashboard. Once an author updates the DRM status, the change may take up to 72 hours to appear on Amazon’s main site.

    Amazon stated that the new option is intended to make it easier for readers to access content they have purchased. However, some authors believe the move may actually increase the number of people choosing to enable DRM. Source


    OpenAI Announces Integration with Select Adobe Apps

    On December 11, Adobe launched three applications—Photoshop, Acrobat, and Adobe Express—inside ChatGPT.

    The new integration allows users to perform image editing, PDF modification, and various design tasks directly within ChatGPT using natural language, without switching to standalone applications. Users only need to mention the app in conversation and describe what they want; the system will then generate selectable results or present interactive UI controls, such as sliders for adjusting brightness and contrast.

    Although these integrated apps do not offer the full capabilities of their desktop counterparts, Photoshop can still perform local edits, creative effects, and image parameter adjustments; Acrobat can edit PDFs, compress or convert formats, extract text and tables, and merge files; Adobe Express can generate and edit posters, invitations, and social media graphics. All creations can be exported at any time to Adobe’s native software for further refinement.

    According to Adobe, these ChatGPT applications are currently available on desktop, web, and iOS. On Android, only Adobe Express is supported for now, with Photoshop and Acrobat coming later. Source


    Tencent QQ Group Chats Add Support for Yuanbao AI Summary Feature

    On December 11, Tencent QQ announced via its official Weibo account that group chat messages now support the Yuanbao AI summary feature. When a group accumulates a large number of unread messages, users can tap “AI Summary” in the upper-right corner of the chat interface, and—after granting permission—generate a summary of the conversation. QQ also stated that the summary results are visible only to the user, and the related data will not be stored or used in any other context. Source

    Alibaba Releases Qwen3-Omni-Flash Multi-Modal Model

    On December 9, 2025, Alibaba’s Qwen team released the next-generation native full-modal model, Qwen3-Omni-Flash-2025-12-01.

    Upgraded from Qwen3-Omni, the new model supports unified input across text, images, audio, and video, and provides real-time streamed text output and voice capabilities. This update focuses on improving issues in multi-modal interactions—such as unnatural speech performance and unstable transitions in multi-turn conversations—by adjusting speech rate, pauses, and prosody to enhance overall interaction quality.

    Alibaba has also strengthened the controllability of Qwen’s system prompts. Users can now define the model’s behavior patterns, including tone, style, and content length, with improved execution accuracy. In addition, Qwen’s multilingual capabilities continue to expand, now supporting 119 text languages, 19 speech recognition languages, and 10 speech synthesis languages.

    In terms of performance, Qwen3-Omni-Flash-2025-12-01 shows improvements over the previous version on several benchmarks, including ZebraLogic (logical reasoning), LiveCodeBench-v6 (code generation), and MMMU (multidisciplinary visual question answering). Source


    Qualcomm Announces Acquisition of Ventana Micro Systems

    On December 10, Qualcomm announced its acquisition of Ventana Micro Systems, further strengthening its technological presence in the RISC-V domain.

    Qualcomm stated that the Ventana team will complement its existing Oryon in-house CPUs and RISC-V development efforts, jointly advancing the company’s technologies across business lines in the AI era. The company also noted that the RISC-V architecture holds significant potential for driving CPU innovation, and this acquisition marks an important step toward building industry-leading RISC-V CPU technology.

    Founded in 2018 and headquartered in Cupertino, Ventana Micro Systems focuses on high-performance, scalable, and secure computing chip solutions based on the open RISC-V architecture. The company is a board member of RISC-V International as well as a member of its Technical Steering Committee. Source


    Rumors You Can Just Glance At

    • During a televised broadcast, Donald Trump mistakenly described 6G technology as something capable of displaying deeper image or skin-detail layers, failing to understand that 6G actually refers to the next-generation mobile communication network. His comment drew attention on site, while Qualcomm CEO Cristiano Amon—who was on stage with him—did not correct the statement. As early as 2019, Trump had called for the U.S. to accelerate 6G development to avoid falling behind other nations. He has also made past remarks such as “the Moon belongs to Mars” and incorrectly linking Apple to 5G infrastructure construction. Source
    • The startup Operation Bluebird has filed a petition with the U.S. Patent and Trademark Office, arguing that Elon Musk’s X Corp. effectively abandoned the “Twitter” and “Tweet” trademarks after rebranding and discontinuing use of the associated branding, and that the trademarks should therefore be canceled. The company has also applied for a new “Twitter” trademark for its upcoming social platform, Twitter.new. In its petition, Operation Bluebird claims that after the rebrand to “X,” X Corp. no longer uses the original trademarks, citing Musk’s previous public statements about “saying goodbye to the Twitter brand forever.” Some legal experts note that although the claim has some basis, the “residual goodwill” of the Twitter brand could be a key factor, as many users still refer to X as “Twitter” and continue using terms such as “tweet.” X Corp. must submit a response by February next year. Operation Bluebird stated that it stands firmly by its position and will continue pursuing relevant legal actions. Source
    • According to tech outlet MacRumors, internal firmware for iOS 26 reveals:
    • The new AirTag is expected to receive upgrades across pairing workflow, battery notifications, and tracking capabilities. In particular, it aims to deliver more accurate location tracking when the device is in motion or in crowded environments. The new AirTag may also feature a next-generation ultra-wideband (UWB) chip, expanding the range of Precision Finding. There have been no clear rumors of noticeable exterior redesigns; the overall appearance may remain consistent with the current model, though improvements to the speaker structure could reduce risks of malicious tampering or misuse. Although iOS 26 refers to the device as “2025 AirTag,” current product timing suggests its official release may slip to early 2026. Source
    • Apple is advancing development of a new smart home hub device. The product will include a camera and support Face ID for identity verification and user recognition, enabling automatic switching between user profiles. The hub is expected to rely heavily on Apple Intelligence and the next-generation Siri set to launch next year. Based on current reports, this smart home hub may take a form somewhere between an iPad and a HomePod, featuring an approximately 7-inch square display and an optional speaker dock. The device is expected to debut alongside iOS 26.4 and the updated Siri.
    • Code references also reveal an unreleased accessory device codenamed J229, believed to be a home security camera under development by Apple, though its release timeline has not yet been disclosed. Source
  • Give Your Mac Mail a “Brain”: Automatic Fetching, Summarizing, and Reporting

    Give Your Mac Mail a “Brain”: Automatic Fetching, Summarizing, and Reporting

    Although many email clients or plugins already offer per-email summarization and translation, they often lack the ability to generate a global summary of all emails received that day. So, by combining the built-in Mail app on macOS with the Kouzi agent, I created the following workflow:

    “Use AppleScript to fetch email content from the Mail app, call the Kouzi agent to summarize it, and send the summarized results back to my own inbox—executed automatically every day.”

    The implementation can be broken down into three steps:

    1. Fetching email content
    2. Calling the Kouzi agent to summarize
    3. Setting up automation for scheduled execution

    The final effect: every day, you receive a neatly timed email containing the summarized content of all your unread messages, as shown below.

    Temporary older emails were used for testing, so the content appears dated.

    Fetching email content

    To avoid disrupting the reading flow, I’ve placed the full AppleScript used to fetch email content at the end of the article. Here, I’ll highlight the key ideas:

    1. I specified the iCloud account and the newsletter folder in the script, because that’s where all my subscription emails are collected.
    2. The script retrieves only unread emails and marks them as read after successfully extracting their content.
    3. The extracted content is saved as .txt files in a designated folder, using the email subject as the filename. This keeps data storage simple and decouples it from the later AI-processing steps, making debugging easier.
    4. For each email, the script obtains its message-ID and converts it into a URI of the format message://%3c'messageID'%3e. Clicking this URI launches Mail and opens the corresponding email in a pop-up window—very handy for jumping to the original message after reviewing the summary.

    At the end of this step, we have successfully fetched the content of all unread emails in the designated folder and saved them as text files.

    Using the Kouzi Agent to Summarize Email Content

    I use a JavaScript script to read the files saved in the previous step and call the Kouzi API to generate summaries. Of course, you can use DeepSeek or any other provider’s API. I chose Kouzi mainly for its asynchronous query feature. The full script is also included at the end of the article.

    Script Logic

    1. Read all files in the target directory: the script scans through every file in the specified folder.
    2. Filter for .txt files created today: only files created on the current day with a .txt extension are processed.
    3. Read file content and call the conversation API: for each valid file, the script reads the content and submits it to the Kouzi chat API.
    4. Poll until AI processing completes: using the chat/retrieve endpoint, the script continuously checks the processing status until it becomes completed.
    5. Fetch and organize AI results: through the chat/message/list endpoint, the script retrieves the AI’s response and formats it as HTML, accumulating everything into an allContents variable.
    6. Send an email once all files are processed: after processing all valid files, the script uses nodemailer to send an email containing all summaries generated that day.
    7. Email includes unread count and AI summaries: the subject is the current date, and the body includes the number of unread emails plus all AI-generated summaries.

    Kouzi Agent Setup and Invocation
    Create an agent inside the Kouzi workspace and configure the agent’s prompt. In the address bar of that setup page, you’ll find the Bot_ID, which is used as a parameter when calling the API.

    Kouzi API calls consist of three steps: initiating a conversation, checking the status, and retrieving the result.

    The first step, initiating a conversation, is essentially submitting a processing request to Kouzi.

    Here you need to provide your API Key, Bot_ID, and a custom User_ID. Kouzi will return a Chat_ID and a Conversation_ID as unique identifiers.

    The second step, checking the status, is like asking Kouzi whether the request has finished processing. Only after receiving a completed status should you fetch the result; otherwise, you may end up retrieving incomplete output.

    At this stage, you must provide the Chat_ID and Conversation_ID returned in the previous step.

    The third step, retrieving the result, is where you obtain the final output from the agent. You again supply the Chat_ID and Conversation_ID from step one to fetch the completed response.

    Configure Automation for Scheduled Execution

    With the AppleScript for fetching email content and the JavaScript script for calling the Kouzi agent ready, the next step is to create an automated workflow that runs them regularly.

    Open the Automator app and create a new Calendar Alarm workflow:

    Add a Run AppleScript action, paste in your AppleScript code, and remember to wrap it with the execution block, like this:

    on run {input, parameters}
        -- AppleScript code
    end run

    Add a Run Shell Script action, navigate to the folder containing your script, and execute the JavaScript file:

    cd /path/to/script
    /opt/homebrew/bin/node scriptName.js

    Add a Show Notification action to confirm the workflow has finished running.

    The Automator configuration looks like this:

    After creating it, open the Calendar app and make a new event. Set it to repeat daily, and under the Alert section choose:
    Custom → Open File → Other… → select your Automator workflow.
    This way, it will run automatically each day.

    With this, the entire setup is complete. However, be mindful of privacy and security when using it—it’s best to apply this workflow only to newsletter or public information emails, and avoid uploading private messages containing sensitive personal data.

    AppleScript for Fetching Email Content

    tell application "Mail"
    	-- Get the "newsletter" mailbox under the iCloud account
    	set theAccount to account "iCloud"
    	set theMailbox to mailbox "newsletter" of theAccount
    
    	-- Get all unread emails in the "newsletter" mailbox
    	set unreadMessages to (every message of theMailbox whose read status is false)
    
    	-- Iterate through all unread emails
    	repeat with eachMessage in unreadMessages
    		-- Use the email subject as part of the filename
    		set theSubject to subject of eachMessage
    		-- Get the email content and convert it to plain text
    		set theContent to content of eachMessage
    		set plainTextContent to do shell script "echo " & quoted form of theContent & " | textutil -convert txt -stdin -stdout"
    
    		-- Get the message-ID and generate a URI
    		set messageID to message id of eachMessage
    		set messageURL to "message://" & "%3c" & messageID & "%3e"
    	
    		-- Create a filename by removing illegal characters
    		set cleanSubject to do shell script "echo " & quoted form of theSubject & " | tr -d '\"/:<>?\\|+[]{};=,'"
    		set fileName to (cleanSubject & ".txt")
    	
    		-- Use the specified POSIX path and convert it to AppleScript path format
    		set savePath to POSIX file "path to save txt files"
    	
    		-- Full file path
    		set filePath to (savePath as string) & fileName
    	
    		-- Write the email content to the txt file at the specified path
    		try
    			set fileReference to open for access file filePath with write permission
    			write plainTextContent to fileReference starting at eof
    	
    			-- Append the email URI at the end of the file
    			write return & "emailURL=" & messageURL to fileReference starting at eof
    			close access fileReference
    		on error errMsg
    			close access file filePath
    			display dialog "Error: " & errMsg
    		end try
    	
    		-- Mark the email as read
    		set read status of eachMessage to true
    	end repeat
    end tell
    
    return input

    Script for Calling the Kouzi Agent

    const fs = require('fs');
    const path = require('path');
    const axios = require('axios');
    const nodemailer = require('nodemailer');
    
    const directoryPath = 'Directory path to store text files'; // The directory path to store text files
    const today = new Date().toLocaleDateString('zh-CN'); // Get system local date
    
    let allContents = ''; // Used to store all returned contents from the query API
    let fileCounter = 0; // Used for file counting
    let validFileCount = 0; // Valid file count
    let emailSent = false; // A flag to track whether the email has been sent
    
    // Read files under the specified directory
    fs.readdir(directoryPath, async (err, files) => {
      if (err) {
        console.error('Failed to read directory:', err);
        return;
      }
    
      const filePromises = files.map(file => processFile(file));
      await Promise.all(filePromises);
      checkAllFilesProcessed();
    });
    
    async function processFile(file) {
      const filePath = path.join(directoryPath, file);
    
      try {
        const stats = await fs.promises.stat(filePath);
        const fileCreationDate = stats.birthtime.toLocaleDateString('zh-CN'); // Get file creation date
        if (fileCreationDate === today && path.extname(file) === '.txt') {
          validFileCount++; // Increase valid file count
          const content = await fs.promises.readFile(filePath, 'utf8');
          await callAIAPI(content, file);
        }
      } catch (err) {
        console.error('Error while processing file:', err);
      }
    }
    
    // Use async/await to optimize async handling
    async function callAIAPI(content, fileName) {
      const apiUrl = 'https://api.coze.cn/v3/chat';
      const headers = getHeaders();
      
      // Choose bot_id depending on content length
      const botId = content.length > 32000 ? 'bot_id' : 'bot_id';
      
      const data = {
        bot_id: botId, // Dynamic bot_id
        user_id: '**',
        stream: false,
        auto_save_history: true,
        additional_messages: [
          {
            role: 'user',
            content: content,
            content_type: 'text'
          }
        ]
      };
    
      let attempts = 0;
      const maxAttempts = 5;
    
      while (attempts < maxAttempts) {
        try {
          const response = await axios.post(apiUrl, data, { headers, timeout: 5000 });
          console.log('API response:', response.data);
          const { id, conversation_id } = response.data.data;
          await new Promise(resolve => setTimeout(resolve, 1000)); // Add wait time: 1 second
          await pollConversationStatus(id, conversation_id, fileName);
          break;
        } catch (error) {
          attempts++;
          console.error(`API call error (attempt ${attempts}/${maxAttempts}):`, error);
          if (attempts >= maxAttempts) {
            console.error('Still failed after multiple attempts');
          }
        }
      }
    }
    
    // Extract headers function
    function getHeaders() {
      return {
        'Authorization': 'Bearer api_key',
        'Content-Type': 'application/json'
      };
    }
    
    // Poll conversation detail interface
    async function pollConversationStatus(chat_id, conversation_id, fileName) {
      const retrieveUrl = `https://api.coze.cn/v3/chat/retrieve?chat_id=${chat_id}&conversation_id=${conversation_id}`;
      const headers = getHeaders();
    
      let pollCount = 0;
      const maxPollCount = 120;
    
      return new Promise((resolve, reject) => {
        const intervalId = setInterval(async () => {
          pollCount++;
          if (pollCount > maxPollCount) {
            clearInterval(intervalId);
            reject(new Error(`Polling timeout, chat_id: ${chat_id}, conversation_id: ${conversation_id}`));
            return;
          }
    
          try {
            const response = await axios.get(retrieveUrl, { headers });
            // Cancel printing poll logs
            // console.log('Dialog detail API response:', response.data);
            if (response.data.data.status === 'completed') {
              clearInterval(intervalId);
              await queryAIAPI(chat_id, conversation_id, fileName);
              resolve();
            }
          } catch (error) {
            console.error('Dialog detail API error:', error);
            clearInterval(intervalId);
            reject(error);
          }
        }, 1000); // Poll every second
      });
    }
    
    // Call query interface
    async function queryAIAPI(chat_id, conversation_id, fileName) {
      const queryUrl = `https://api.coze.cn/v3/chat/message/list?chat_id=${chat_id}&conversation_id=${conversation_id}`;
      const headers = getHeaders();
    
      try {
        const response = await axios.get(queryUrl, { headers });
        console.log('Query API response:', response.data);
        const contents = response.data.data
          .filter(item => item.type === 'answer') // Filter items of type 'answer'
          .map(item => item.content)
          .join('\n');
    
        // Read last line of file to get MessageID
        const filePath = path.join(directoryPath, fileName);
        const fileContent = await fs.promises.readFile(filePath, 'utf8');
        const lastLine = fileContent.trim().split('\n').pop();
        const messageId = lastLine.split('=')[1]; // Extract MessageID
    
        fileCounter++; // Increase file count
        console.log(`File count: ${fileCounter}`);
        const fileNameWithoutExt = fileName.replace(/\.[^/.]+$/, ""); // Remove extension
        allContents += `<h3><a href="${messageId}">${fileCounter}. ${fileNameWithoutExt}</a></h3><br>${contents.replace(/\n/g, '<br>')}<br><br>`;
      } catch (error) {
        console.error('Query API error:', error);
      }
    }
    
    // Check if all files are processed
    function checkAllFilesProcessed() {
      if (fileCounter === validFileCount && !emailSent) {
        emailSent = true; // Mark email as sent
        sendEmail(allContents); // Call send email function
      }
    }
    
    // Send email
    function sendEmail(contents) {
      const transporter = nodemailer.createTransport({
        host: 'smtp.qq.com',
        port: 465,
        secure: true, // Use SSL
        auth: {
          user: 'Email address', // Your email address
          pass: 'Email authorization code' // Your email authorization code
        }
      });
    
      const mailOptions = {
        from: 'Email address', // Sender email address
        to: 'Email address',    // Recipient email address
        subject: `${today} Daily Email Summary`, // Email subject
        html: `Unread email count: ${validFileCount}<br><br>${contents}` // HTML content
      };
    
      transporter.sendMail(mailOptions, (error, info) => {
        if (error) {
          return console.error('Failed to send email:', error);
        }
        console.log('Email sent:', info.response);
      });
    }