<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>MacOS on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/macos/</link>
        <description>Recent content in MacOS on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Wed, 18 Mar 2026 07:58:18 +0000</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/macos/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Product Hunt Daily | 2026-03-18</title>
        <link>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2026-03-18/</link>
        <pubDate>Wed, 18 Mar 2026 07:58:18 +0000</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2026-03-18/</guid>
        <description>&lt;img src="https://ph-files.imgix.net/4f93dc17-7c93-49a2-acd1-468f2b8ac318.webp?auto=format" alt="Featured image of post Product Hunt Daily | 2026-03-18" /&gt;&lt;h2 id=&#34;1-my-computer-by-manus-ai&#34;&gt;1. My Computer by Manus AI
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Automate files, apps, and workflows with Manus Desktop&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Meet My Computer, the core feature of the Manus Desktop app. It brings Manus out of the cloud and onto your computer, letting your AI agent work directly with local files, tools, and apps. Organize thousands of photos, rename hundreds of invoices, or build Swift desktop apps without writing code. Combine with connectors, Projects, Agents, and Scheduled Tasks to automate workflows. Available now for macOS and Windows.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/RCNKA5LRLRVAU6?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/manus?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/4f93dc17-7c93-49a2-acd1-468f2b8ac318.webp?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;My Computer by Manus AI&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI automation, desktop agent, local file automation, workflow automation, no-code automation, macOS, Windows, file management, app automation, Manus AI, automate workflows, AI assistant, productivity software, automate tasks, computer automation&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺437&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2026-03-17 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-lightning-rod&#34;&gt;2. Lightning Rod
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Turn real-world data into training datasets fast&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Lightning Rod SDK turns real-world data — like news, filings, or your own documents — into verified, production-ready training datasets in hours using just a few lines of Python. Skip manual labeling and synthetic guesswork.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/T2R3JQSWTRVF5S?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/training-data-generator?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/7bf7b9c3-98c0-46eb-82a0-4116777a2224.png?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Lightning Rod&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: data labeling, training data, dataset generation, Python SDK, real-world data, automated labeling, production datasets, AI training, data verification, document processing&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺347&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2026-03-17 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-kira-40&#34;&gt;3. Kira 4.0
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Turn your friends into shareable content&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Kira 4.0 brings video and music into the same creative flow as our image editor. Animate a friend&amp;rsquo;s photo, drop an AI soundtrack, change their hairstyle before anyone notices. No prompts, no downloads, no experience needed. Just pick something, make it, and share the joy.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/TEPZ3A4GHBSZGY?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/kira-art?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/dc0ac12b-169b-40c0-b5b2-62fda6ff8baf.png?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Kira 4.0 &#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI video editor, meme maker, social media content, photo animation, AI music, friend prank, easy editing, no experience, instant share, creative tools&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺305&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2026-03-17 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;4-codex-subagents&#34;&gt;4. Codex Subagents
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Parallel custom agents for complex tasks&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Codex now supports subagents, allowing you to spawn specialized, parallel AI workers for complex coding tasks. By defining custom TOML agents with isolated roles (like explorers and reviewers), you can execute multi-step workflows without context rot.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/WINYE5XLSNP2L5?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/openai?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/ec8b3467-3b84-4730-850c-7bb8d5abd22b.jpeg?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Codex Subagents&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI agents, parallel processing, custom workflows, multi-step coding, TOML configuration, specialized workers, context isolation, task automation, complex tasks, agent orchestration&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺285&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2026-03-17 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;5-mtarsier&#34;&gt;5. mTarsier
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Open-source platform for managing MCP servers and clients&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Free, open-source desktop app that auto-detects every AI client on your machine — Claude Desktop, Cursor, Windsurf, VS Code and more. Manage all your MCP server configs in one place, install from the marketplace, and back up with one click. macOS, Windows &amp;amp; Linux.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/NMQNUJDUXGJFXY?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/mcp360?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/c784168d-c59a-432a-8412-4fcbb7870a52.png?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;mTarsier&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: mTarsier, MCP server management, MCP client manager, open-source desktop app, AI tool integration, Claude Desktop, Cursor, Windsurf, VS Code, model context protocol, server configuration, marketplace, cross-platform, macOS, Windows, Linux, auto-detect AI clients, one-click backup&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺202&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2026-03-17 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;6-dlss-5&#34;&gt;6. DLSS 5
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: The GPT moment for real-time computer graphics&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: NVIDIA DLSS 5 introduces a real-time neural rendering model that infuses game pixels with photoreal lighting and materials. It analyzes color and motion vectors to deliver Hollywood-grade VFX fidelity in real time, moving beyond just performance upscaling.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/QAONVT3E2I5NCI?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/nvidia?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/20889dce-868e-4aa8-b870-98fab75d736f.jpeg?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;DLSS 5&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: NVIDIA DLSS 5, neural rendering, real-time graphics, photoreal lighting, game pixels, AI graphics, real-time VFX, motion vectors, performance upscaling, computer graphics&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺167&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2026-03-17 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;7-agentdiscuss&#34;&gt;7. AgentDiscuss
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Product Hunt for AI agents — where agents discuss products&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: AgentDiscuss is a product discussion platform for AI agents. Agents can: • discuss products • upvote tools • debate APIs Humans can launch their product and watch how agents react. Think Product Hunt — but the users are AI agents.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/OPUU6HLJNK6JSE?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/agentdiscuss?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/0ec5ded0-99b0-4b28-aed7-6265d5e80031.png?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;AgentDiscuss&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI agents, product discussion, Product Hunt for AI, AI tool debate, API discussion, agent upvote, product launch platform, AI community, automated feedback, AI product reviews&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺148&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2026-03-17 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;8-kippsai-campaign&#34;&gt;8. Kipps.AI Campaign
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Lead Qualification, Bulk Outreach and Anniversary’s Reminder&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Kipps.AI Campaigns helps businesses run intelligent outreach campaigns powered by AI agents. Instead of manually managing emails, calls, WhatsApp messages, and follow-ups, Kipps AI automates the entire workflow. Create campaigns, upload leads, define goals, and let AI agents engage prospects, respond to queries, qualify leads, and schedule meetings automatically. Perfect for marketing teams, sales outreach, and customer engagement — all from one AI-powered platform.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/D4MUJWI7LTWIZJ?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/kipps-ai?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/6c9084cc-2dd6-424c-aa62-0cbd7428fa68.png?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Kipps.AI Campaign&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI outreach, lead qualification, bulk outreach, automated campaigns, sales automation, AI agents, email automation, WhatsApp outreach, lead generation, marketing automation, customer engagement, sales follow-up, meeting scheduler, AI sales assistant&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺134&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2026-03-17 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;9-ocean-orchestrator&#34;&gt;9. Ocean Orchestrator
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;:  Run AI jobs from your IDE with a one-click workflow&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Access GPUs worldwide directly from your IDE. Ocean Orchestrator lets you run AI training and inference jobs while paying only for the compute you use. Jobs run on GPUs like NVIDIA H200s across the Ocean Network Escrow-based payments protect both users (data scientists, developers) and node operators, releasing funds only after successful execution, bringing reliable, decentralized GPU compute to real workloads with transparent pricing, global availability, and verifiable job execution at scale&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/GEX7OENJ3KVXNZ?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/ocean-orchestrator?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/481adb25-7ff8-439d-bbea-c365e5f7f751.jpeg?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Ocean Orchestrator &#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: GPU compute, AI training, inference, IDE integration, decentralized cloud, pay-per-use, NVIDIA H200, Ocean Network, escrow payments, verifiable execution, global GPU access, developer tools, one-click workflow, transparent pricing&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺132&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2026-03-17 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;10-jusrecruit&#34;&gt;10. JusRecruit
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: AI ATS that handles phone screens + first-round interviews&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Cut time-to-hire by 10 to 15 days with AI that handles your first hiring bottleneck. JusRecruit phone-screens every inbound applicant, runs structured AI interviews, and surfaces only qualified candidates. Teams skip low-signal first rounds, free up ~20 recruiter hours per role, and move faster without sacrificing fairness or quality.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/MCFNIYQKZVMFKW?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/hirehunch?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/bed6472c-1df1-479e-8e64-fb2d6b77de96.png?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;JusRecruit&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI recruitment, automated interviewing, phone screen automation, candidate screening, time-to-hire reduction, recruiter efficiency, ATS software, inbound applicant screening, structured interviews, hiring bottleneck solution&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺131&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2026-03-17 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
</description>
        </item>
        <item>
        <title>cursor-free-vip</title>
        <link>https://producthunt.programnotes.cn/en/p/cursor-free-vip/</link>
        <pubDate>Thu, 04 Dec 2025 15:33:00 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/cursor-free-vip/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1739996698574-30dfcdaa64b8?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NjQ4MzM1NDd8&amp;ixlib=rb-4.1.0" alt="Featured image of post cursor-free-vip" /&gt;&lt;h1 id=&#34;yeongpincursor-free-vip&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/yeongpin/cursor-free-vip&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;yeongpin/cursor-free-vip&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;-cursor-free-vip&#34;&gt;➤ Cursor Free VIP
&lt;/h1&gt;&lt;div align=&#34;center&#34;&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img src=&#34;./images/logo.png&#34; alt=&#34;Cursor Pro Logo&#34; width=&#34;200&#34; style=&#34;border-radius: 6px;&#34;/&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/yeongpin/cursor-free-vip/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/endpoint?url=https://api.pinstudios.net/api/badges/release/yeongpin/cursor-free-vip&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Release&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://creativecommons.org/licenses/by-nc-nd/4.0/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/License-CC_BY--NC--ND_4.0-lightgrey.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;License: CC BY-NC-ND 4.0&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/yeongpin/cursor-free-vip/stargazers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/endpoint?url=https://api.pinstudios.net/api/badges/stars/yeongpin/cursor-free-vip&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Stars&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/yeongpin/cursor-free-vip/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/endpoint?url=https://api.pinstudios.net/api/badges/downloads/yeongpin/cursor-free-vip/total&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Downloads&#34;
	
	
&gt;&lt;/a&gt;
&lt;a href=&#34;https://buymeacoffee.com/yeongpin&#34; target=&#34;_blank&#34;&gt;&lt;img alt=&#34;Buy Me a Coffee&#34; src=&#34;https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Support%20Me-FFDA33&#34;&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://deepwiki.com/yeongpin/cursor-free-vip&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://devin.ai/assets/deepwiki-badge.png&#34; alt=&#34;Ask DeepWiki.com&#34; height=&#34;20&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://trendshift.io/repositories/13425&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://trendshift.io/api/badge/repositories/13425&#34; alt=&#34;yeongpin%2Fcursor-free-vip | Trendshift&#34; style=&#34;width: 250px; height: 55px;&#34; width=&#34;250&#34; height=&#34;55&#34;/&gt;&lt;/a&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h4&gt;Support Latest 0.49.x Version | 支持最新 0.49.x 版本&lt;/h4&gt;
&lt;p&gt;This tool is for educational purposes, currently the repo does not violate any laws. Please support the original project.
This tool will not generate any fake email accounts and OAuth access.&lt;/p&gt;
&lt;p&gt;Supports Windows, macOS and Linux.&lt;/p&gt;
&lt;p&gt;For optimal performance, run with privileges and always stay up to date.&lt;/p&gt;
&lt;p&gt;這是一款用於學習和研究的工具，目前 repo 沒有違反任何法律。請支持原作者。
這款工具不會生成任何假的電子郵件帳戶和 OAuth 訪問。&lt;/p&gt;
&lt;p&gt;支持 Windows、macOS 和 Linux。&lt;/p&gt;
&lt;p&gt;對於最佳性能，請以管理員身份運行並始終保持最新。&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img src=&#34;./images/product_2025-04-16_10-40-21.png&#34; alt=&#34;new&#34; width=&#34;800&#34; style=&#34;border-radius: 6px;&#34;/&gt;&lt;br&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&#34;-change-log--更新日志&#34;&gt;🔄 Change Log | 更新日志
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;CHANGELOG.md&#34; &gt;Watch Change Log | 查看更新日志&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;-features--功能特點&#34;&gt;✨ Features | 功能特點
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Support Windows macOS and Linux systems&lt;br&gt;支持 Windows、macOS 和 Linux 系統&lt;br&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reset Cursor&amp;rsquo;s configuration&lt;br&gt;重置 Cursor 的配置&lt;br&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Multi-language support (English, 简体中文, 繁體中文, Vietnamese)&lt;br&gt;多語言支持（英文、简体中文、繁體中文、越南語）&lt;br&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-system-support--系統支持&#34;&gt;💻 System Support | 系統支持
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Operating System&lt;/th&gt;
          &lt;th&gt;Architecture&lt;/th&gt;
          &lt;th&gt;Supported&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows&lt;/td&gt;
          &lt;td&gt;x64, x86&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;macOS&lt;/td&gt;
          &lt;td&gt;Intel, Apple Silicon&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Linux&lt;/td&gt;
          &lt;td&gt;x64, x86, ARM64&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-how-to-use--如何使用&#34;&gt;👀 How to use | 如何使用
&lt;/h2&gt;&lt;details open&gt;
&lt;summary&gt;&lt;b&gt;⭐ Auto Run Script | 腳本自動化運行&lt;/b&gt;&lt;/summary&gt;
&lt;h3 id=&#34;linuxmacos&#34;&gt;&lt;strong&gt;Linux/macOS&lt;/strong&gt;
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/yeongpin/cursor-free-vip/main/scripts/install.sh -o install.sh &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; chmod +x install.sh &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./install.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;archlinux&#34;&gt;&lt;strong&gt;Archlinux&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;Install via &lt;a class=&#34;link&#34; href=&#34;https://aur.archlinux.org/packages/cursor-free-vip-git&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AUR&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yay -S cursor-free-vip-git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;windows&#34;&gt;&lt;strong&gt;Windows&lt;/strong&gt;
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;irm &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;githubusercontent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;yeongpin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;cursor-free&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-vip&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;install&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;If you want to stop the script, please press Ctrl+C&lt;br&gt;要停止腳本，請按 Ctrl+C&lt;/p&gt;
&lt;h2 id=&#34;-note--注意事項&#34;&gt;❗ Note | 注意事項
&lt;/h2&gt;&lt;p&gt;📝 Config | 文件配置
&lt;code&gt;Win / Macos / Linux Path | 路徑 [Documents/.cursor-free-vip/config.ini]&lt;/code&gt;&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;&lt;b&gt;⭐ Config | 文件配置&lt;/b&gt;&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;89
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Chrome&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Default Google Chrome Path | 默認Google Chrome 遊覽器路徑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;chromepath&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Program&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Files&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Google&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Chrome&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chrome&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Turnstile&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Handle Turnstile Wait Time | 等待人機驗證時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;handle_turnstile_time&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Handle Turnstile Wait Random Time (must merge 1-3 or 1,3) | 等待人機驗證隨機時間（必須是 1-3 或者 1,3 這樣的組合）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;handle_turnstile_random_time&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OSPaths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Storage Path | 存儲路徑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;storage_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Library&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Support&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;User&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;globalStorage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# SQLite Path | SQLite路徑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sqlite_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Library&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Support&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;User&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;globalStorage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vscdb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Machine ID Path | 機器ID路徑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;machine_id_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Library&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Support&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;machineId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# For Linux users: ~/.config/cursor/machineid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Timing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Min Random Time | 最小隨機時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;min_random_time&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Max Random Time | 最大隨機時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;max_random_time&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Page Load Wait | 頁面加載等待時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;page_load_wait&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Input Wait | 輸入等待時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;input_wait&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Submit Wait | 提交等待時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;submit_wait&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.5&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;1.5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Verification Code Input | 驗證碼輸入等待時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;verification_code_input&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Verification Success Wait | 驗證成功等待時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;verification_success_wait&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Verification Retry Wait | 驗證重試等待時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;verification_retry_wait&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Email Check Initial Wait | 郵件檢查初始等待時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;email_check_initial_wait&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Email Refresh Wait | 郵件刷新等待時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;email_refresh_wait&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Settings Page Load Wait | 設置頁面加載等待時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;settings_page_load_wait&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Failed Retry Time | 失敗重試時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;failed_retry_time&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.5&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Retry Interval | 重試間隔&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;retry_interval&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Max Timeout | 最大超時時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;max_timeout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;160&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Utils&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Check Update | 檢查更新&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;check_update&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Show Account Info | 顯示賬號信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;show_account_info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TempMailPlus&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Enable TempMailPlus | 啓用 TempMailPlus（任何轉發到TempMailPlus的郵件都支持獲取驗證碼，例如cloudflare郵件Catch-all）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;enabled&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# TempMailPlus Email | TempMailPlus 電子郵件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;email&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xxxxx&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mailto&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;plus&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# TempMailPlus pin | TempMailPlus pin碼&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;epin&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WindowsPaths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;storage_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;yeongpin&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;AppData&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Roaming&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Cursor&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;User&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;globalStorage&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sqlite_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;yeongpin&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;AppData&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Roaming&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Cursor&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;User&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;globalStorage&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vscdb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;machine_id_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;yeongpin&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;AppData&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Roaming&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Cursor&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;machineId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cursor_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;yeongpin&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;AppData&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Local&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Programs&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Cursor&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;resources&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;updater_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;yeongpin&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;AppData&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Local&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;updater&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;update_yml_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;yeongpin&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;AppData&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Local&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Programs&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Cursor&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;resources&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;update&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;yml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;product_json_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;yeongpin&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;AppData&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Local&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Programs&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Cursor&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;resources&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;product&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;default_browser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;opera&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;chrome_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Program&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Files&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Google&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Chrome&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;chrome&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;edge_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Program&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Files&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x86&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Microsoft&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Edge&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;msedge&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;firefox_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Program&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Files&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Mozilla&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Firefox&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;firefox&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;brave_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Program&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Files&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;BraveSoftware&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Brave&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Browser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;brave&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;chrome_driver_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;VisualCode&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;free&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vip&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;drivers&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;chromedriver&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;edge_driver_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;VisualCode&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;free&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vip&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;drivers&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;msedgedriver&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;firefox_driver_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;VisualCode&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;free&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vip&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;drivers&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;geckodriver&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;brave_driver_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;VisualCode&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;free&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vip&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;drivers&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;chromedriver&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;opera_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;yeongpin&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;AppData&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Local&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Programs&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Opera&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;opera&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;opera_driver_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;VisualCode&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;free&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vip&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;drivers&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;chromedriver&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OAuth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;show_selection_alert&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;timeout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;120&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;max_attempts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Use administrator privileges to run the script &lt;br&gt;請使用管理員身份運行腳本&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Confirm that Cursor is closed before running the script &lt;br&gt;請確保在運行腳本前已經關閉 Cursor&lt;br&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This tool is only for learning and research purposes &lt;br&gt;此工具僅供學習和研究使用&lt;br&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Please comply with the relevant software usage terms when using this tool &lt;br&gt;使用本工具時請遵守相關軟件使用條款&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-common-issues--常見問題&#34;&gt;🚨 Common Issues | 常見問題
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;如果遇到權限問題，請確保：&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;此腳本以管理員身份運行&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;If you encounter permission issues, please ensure:&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;This script is run with administrator privileges&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Error &amp;lsquo;User is not authorized&amp;rsquo;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;This means your account was banned for using temporary (disposal) mail. Ensure using a non-temporary mail service&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-contribution--貢獻&#34;&gt;🤩 Contribution | 貢獻
&lt;/h2&gt;&lt;p&gt;歡迎提交 Issue 和 Pull Request！&lt;/p&gt;
&lt;a href=&#34;https://github.com/yeongpin/cursor-free-vip/graphs/contributors&#34;&gt;
  &lt;img src=&#34;https://contrib.rocks/image?repo=yeongpin/cursor-free-vip&amp;preview=true&amp;max=&amp;columns=&#34; /&gt;
&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;h2 id=&#34;-disclaimer--免責聲明&#34;&gt;📩 Disclaimer | 免責聲明
&lt;/h2&gt;&lt;p&gt;本工具僅供學習和研究使用，使用本工具所產生的任何後果由使用者自行承擔。 &lt;br&gt;&lt;/p&gt;
&lt;p&gt;This tool is only for learning and research purposes, and any consequences arising from the use of this tool are borne
by the user.&lt;/p&gt;
&lt;h2 id=&#34;-buy-me-a-coffee--請我喝杯咖啡&#34;&gt;💰 Buy Me a Coffee | 請我喝杯咖啡
&lt;/h2&gt;&lt;div align=&#34;center&#34;&gt;
  &lt;table&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;img src=&#34;./images/provi-code.jpg&#34; alt=&#34;buy_me_a_coffee&#34; width=&#34;280&#34;/&gt;&lt;br&gt;
      &lt;/td&gt;
      &lt;td&gt;
        &lt;img src=&#34;./images/paypal.png&#34; alt=&#34;buy_me_a_coffee&#34; width=&#34;280&#34;/&gt;&lt;br&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;h2 id=&#34;-star-history--星星數&#34;&gt;⭐ Star History | 星星數
&lt;/h2&gt;&lt;div align=&#34;center&#34;&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://star-history.com/#yeongpin/cursor-free-vip&amp;amp;Date&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://api.star-history.com/svg?repos=yeongpin/cursor-free-vip&amp;amp;type=Date&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Star History Chart&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&#34;-license--授權&#34;&gt;📝 License | 授權
&lt;/h2&gt;&lt;p&gt;本項目採用 &lt;a class=&#34;link&#34; href=&#34;https://creativecommons.org/licenses/by-nc-nd/4.0/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CC BY-NC-ND 4.0&lt;/a&gt; 授權。
Please refer to the &lt;a class=&#34;link&#34; href=&#34;LICENSE.md&#34; &gt;LICENSE&lt;/a&gt; file for details.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Product Hunt Daily | 2025-11-01</title>
        <link>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-11-01/</link>
        <pubDate>Sat, 01 Nov 2025 07:25:37 +0000</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-11-01/</guid>
        <description>&lt;img src="https://ph-files.imgix.net/65552609-b231-4583-bd48-7f98305ebca3.png?auto=format" alt="Featured image of post Product Hunt Daily | 2025-11-01" /&gt;&lt;h2 id=&#34;1-postiz&#34;&gt;1. Postiz
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: AI Agents and MCP to schedule social posts to 20+ channels&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Postiz agent is here! The biggest social media AI agent to schedule your post to 20+ social channels, also with MCP. Connect your MCP to anything: ChatGPT / Claude / Cursor / n8n Your own private app!&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/BGQ2FN6AXMJOCN?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/postiz?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/65552609-b231-4583-bd48-7f98305ebca3.png?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Postiz&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI Agent, Social Media Scheduling, 20+ Channels, MCP, ChatGPT, Claude, Cursor, n8n, Social Media Automation&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺455&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-10-31 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-superinbox&#34;&gt;2. Superinbox
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Email vibing in your Gmail / Outlook&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: SuperInbox unlocks email vibing for everyone. AI learns your writing style and drafts perfect email replies + auto-organizes your Gmail/Outlook inbox. No new app needed. Busy professionals save 2+ hours daily handling their emails effortlessly.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/YATLZHVGRIA4US?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/superinbox?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/e8836f68-89e0-47a9-8d0d-dfa67e401920.png?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Superinbox&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: email management, AI, Gmail, Outlook, email replies, inbox organization, productivity, time saving, email automation, SuperInbox&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺425&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-10-31 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-perplexity-patents&#34;&gt;3. Perplexity Patents
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: AI-powered patent search for everyone&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Perplexity Patents is a new AI agent that makes IP intelligence accessible. Use natural language to search patents, academic papers, and code repositories. It understands complex queries, finds prior art, and provides cited answers, just like the core Perplexity experience.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/UZD5IFSFHHTSQK?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/perplexity-ai?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/88fa120a-cd8c-4c77-b20e-372c3eb70a37.jpeg?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Perplexity Patents&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI patent search, patent search, IP intelligence, natural language search, prior art, cited answers, AI agent, Perplexity, patents, academic papers, code repositories&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺299&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-10-31 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;4-scarystories-live&#34;&gt;4. ScaryStories Live
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: AI generated story worlds that unfold in real time&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Experience storytelling like never before. ScaryStories Live transforms your ideas into live, AI-generated story scenes that evolve as you direct them. Perfect for creators, streamers, or anyone exploring the future of interactive storytelling.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/IXTZESPMVNWPJL?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/scarystories-live-3?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/87d5d0a4-daaa-469a-b4ee-019889160632.jpeg?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;ScaryStories Live&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI storytelling, interactive stories, real-time stories, AI generated, live stories, story worlds, creators, streamers, interactive storytelling, scary stories&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺275&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-10-31 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;5-canvas-creative-operating-system&#34;&gt;5. Canva’s Creative Operating System
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Visual Suite to edit vids, emails, sites + docs in a canvas&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Our biggest product launch to date, the Creative Operating System, brings together a supercharged Visual Suite, world-first design AI, plus powerful ways to grow your business and scale your brand.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/Q3PEU74ZMTWBQA?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/canva?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/06f167f0-b9d4-4ed1-83f3-fb7933c68d1d.octet-stream?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Canva’s Creative Operating System&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Canva, Creative Operating System, Visual Suite, Video Editing, Email Design, Website Design, Document Creation, Design AI, Brand Growth, Brand Scaling&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺213&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-10-31 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;6-affinity-by-canva&#34;&gt;6. Affinity by Canva
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Free creative software for vector, pixel, and print.=&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: All the design and photo editing tools you need in one app – for free. Download Affinity now on macOS or Windows.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/MJCCVV5CTHONRN?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/affinity-5?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/8a4e7493-b681-4541-8801-a5903a3e6919.jpeg?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Affinity by Canva&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Affinity, Canva, free design software, vector editor, pixel editor, print design, macOS, Windows, photo editing, creative tools&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺195&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-10-31 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;7-tweek&#34;&gt;7. Tweek
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Minimal weekly planner&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Super simple planner without the fuss. Tweek feels as natural as pen and paper.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/K3PCAPDYZ3Z54E?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/tweek?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/ef7cb03d-570d-4f64-91ab-5fa8075a9911.png?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Tweek&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: planner, weekly, minimal, simple, pen and paper, productivity&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺165&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-10-31 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;8-skyvern&#34;&gt;8. Skyvern
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Automate anything in the browser&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Skyvern helps companies automate browser-based workflows using LLMs and Computer Vision, replacing manual work with AI-generated and maintained scripts We just gave Skyvern the ability to write and maintain its own code, making it 2.7x cheaper and 2.3x faster than before. Give it a prompt (or a series of prompts), and the AI will generate and maintain playwright code while it runs. Try out the via Open Source or Cloud&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/QX55ZMMOFQ3YUS?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/skyvern?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/b5bd0b83-f1e7-4bb9-a5af-0f771172a842.png?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Skyvern&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: browser automation, AI automation, LLM, computer vision, workflow automation, playwright, AI code generation, code maintenance, open source, cloud, automation&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺149&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-10-31 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;9-is-it-down&#34;&gt;9. Is it down?
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Monitor your apis and websites on menubar&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Is your website, API, or online service down? Hope not. But in case, get instant answers right in your macOS menubar with &amp;ldquo;Is It Down?&amp;rdquo;&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/B7WDQWOEODJCNZ?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/is-it-down-2?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/17a51fff-d5c7-4b81-b27c-bc2a5b355dbb.png?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Is it down?&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: website monitoring, API monitoring, macOS, menubar, uptime, status, down detector, online service&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺142&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-10-31 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;10-espresso-v2510&#34;&gt;10. Espresso v25.10
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: The web editor for Mac with next-gen intelligence&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: This release is &lt;em&gt;big.&lt;/em&gt; It brings next-generation intelligence to Espresso and a serious boost to editing power — while staying true to what makes Espresso fast, elegant, and genuinely Mac-native.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/SXX7S44IUFMHC5?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/espresso-for-mac-v3?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/a1c433e8-ada3-4718-90fa-49c62ba35d89.jpeg?auto=format&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Espresso v25.10&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Espresso, web editor, Mac, intelligence, editing, Mac-native, productivity, code editor&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺122&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-10-31 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
</description>
        </item>
        <item>
        <title>clash-verge-rev</title>
        <link>https://producthunt.programnotes.cn/en/p/clash-verge-rev/</link>
        <pubDate>Tue, 14 Oct 2025 15:29:05 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/clash-verge-rev/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1683567936098-c7341e859233?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NjA0MjY4ODR8&amp;ixlib=rb-4.1.0" alt="Featured image of post clash-verge-rev" /&gt;&lt;h1 id=&#34;clash-verge-revclash-verge-rev&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/clash-verge-rev/clash-verge-rev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;clash-verge-rev/clash-verge-rev&lt;/a&gt;
&lt;/h1&gt;&lt;h1 align=&#34;center&#34;&gt;
  &lt;img src=&#34;./src-tauri/icons/icon.png&#34; alt=&#34;Clash&#34; width=&#34;128&#34; /&gt;
  &lt;br&gt;
  Continuation of &lt;a href=&#34;https://github.com/zzzgydi/clash-verge&#34;&gt;Clash Verge&lt;/a&gt;
  &lt;br&gt;
&lt;/h1&gt;
&lt;h3 align=&#34;center&#34;&gt;
A Clash Meta GUI based on &lt;a href=&#34;https://github.com/tauri-apps/tauri&#34;&gt;Tauri&lt;/a&gt;.
&lt;/h3&gt;
&lt;h2 id=&#34;preview&#34;&gt;Preview
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Dark&lt;/th&gt;
          &lt;th&gt;Light&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;install&#34;&gt;Install
&lt;/h2&gt;&lt;p&gt;请到发布页面下载对应的安装包：&lt;a class=&#34;link&#34; href=&#34;https://github.com/clash-verge-rev/clash-verge-rev/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Release page&lt;/a&gt;&lt;br&gt;
Go to the &lt;a class=&#34;link&#34; href=&#34;https://github.com/clash-verge-rev/clash-verge-rev/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Release page&lt;/a&gt; to download the corresponding installation package&lt;br&gt;
Supports Windows (x64/x86), Linux (x64/arm64) and macOS 10.15+ (intel/apple).&lt;/p&gt;
&lt;h4 id=&#34;我应当怎样选择发行版&#34;&gt;我应当怎样选择发行版
&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;版本&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;特征&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;链接&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Stable&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;正式版，高可靠性，适合日常使用。&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/clash-verge-rev/clash-verge-rev/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Release&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Alpha(废弃)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;测试发布流程。&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/alpha&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alpha&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;AutoBuild&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;滚动更新版，适合测试反馈，可能存在缺陷。&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/autobuild&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AutoBuild&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;安装说明和常见问题请到-文档页-查看&#34;&gt;安装说明和常见问题，请到 &lt;a class=&#34;link&#34; href=&#34;https://clash-verge-rev.github.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;文档页&lt;/a&gt; 查看
&lt;/h4&gt;&lt;hr&gt;
&lt;h3 id=&#34;tg-频道-clash_&#34;&gt;TG 频道: &lt;a class=&#34;link&#34; href=&#34;https://t.me/clash_verge_re&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@clash_verge_rev&lt;/a&gt;
&lt;/h3&gt;&lt;h2 id=&#34;promotion&#34;&gt;Promotion
&lt;/h2&gt;&lt;h4 id=&#34;狗狗加速--技术流机场-doggygo-vpn&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://verge.dginv.click/#/register?code=oaxsAGo6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;狗狗加速 —— 技术流机场 Doggygo VPN&lt;/a&gt;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;高性能海外机场，免费试用，优惠套餐，解锁流媒体，全球首家支持 Hysteria 协议。&lt;/li&gt;
&lt;li&gt;使用 Clash Verge 专属邀请链接注册送 3 天，每天 1G 流量免费试用：&lt;a class=&#34;link&#34; href=&#34;https://verge.dginv.click/#/register?code=oaxsAGo6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;点此注册&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clash Verge 专属 8 折优惠码: verge20 (仅有 500 份)&lt;/li&gt;
&lt;li&gt;优惠套餐每月仅需 15.8 元，160G 流量，年付 8 折&lt;/li&gt;
&lt;li&gt;海外团队，无跑路风险，高达 50% 返佣&lt;/li&gt;
&lt;li&gt;集群负载均衡设计，高速专线(兼容老客户端)，极低延迟，无视晚高峰，4K 秒开&lt;/li&gt;
&lt;li&gt;全球首家 Hysteria 协议机场，现已上线更快的 &lt;code&gt;Hysteria2&lt;/code&gt; 协议(Clash Verge 客户端最佳搭配)&lt;/li&gt;
&lt;li&gt;解锁流媒体及 ChatGPT&lt;/li&gt;
&lt;li&gt;官网：&lt;a class=&#34;link&#34; href=&#34;https://verge.dginv.click/#/register?code=oaxsAGo6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://狗狗加速.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;本项目的构建与发布环境由-yxvm-独立服务器全力支持&#34;&gt;本项目的构建与发布环境由 &lt;a class=&#34;link&#34; href=&#34;https://yxvm.com/aff.php?aff=827&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YXVM&lt;/a&gt; 独立服务器全力支持，
&lt;/h4&gt;&lt;p&gt;感谢提供 独享资源、高性能、高速网络 的强大后端环境。如果你觉得下载够快、使用够爽，那是因为我们用了好服务器！&lt;/p&gt;
&lt;p&gt;🧩 YXVM 独立服务器优势：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🌎 优质网络，回程优化，下载快到飞起&lt;/li&gt;
&lt;li&gt;🔧 物理机独享资源，非VPS可比，性能拉满&lt;/li&gt;
&lt;li&gt;🧠 适合跑代理、搭建 WEB 站 CDN 站 、搞 CI/CD 或任何高负载应用&lt;/li&gt;
&lt;li&gt;💡 支持即开即用，多机房选择，CN2 / IEPL 可选&lt;/li&gt;
&lt;li&gt;📦 本项目使用配置已在售，欢迎同款入手！&lt;/li&gt;
&lt;li&gt;🎯 想要同款构建体验？&lt;a class=&#34;link&#34; href=&#34;https://yxvm.com/aff.php?aff=827&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;立即下单 YXVM 独立服务器！&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;features&#34;&gt;Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;基于性能强劲的 Rust 和 Tauri 2 框架&lt;/li&gt;
&lt;li&gt;内置&lt;a class=&#34;link&#34; href=&#34;https://github.com/MetaCubeX/mihomo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Clash.Meta(mihomo)&lt;/a&gt;内核，并支持切换 &lt;code&gt;Alpha&lt;/code&gt; 版本内核。&lt;/li&gt;
&lt;li&gt;简洁美观的用户界面，支持自定义主题颜色、代理组/托盘图标以及 &lt;code&gt;CSS Injection&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;配置文件管理和增强（Merge 和 Script），配置文件语法提示。&lt;/li&gt;
&lt;li&gt;系统代理和守卫、&lt;code&gt;TUN(虚拟网卡)&lt;/code&gt; 模式。&lt;/li&gt;
&lt;li&gt;可视化节点和规则编辑&lt;/li&gt;
&lt;li&gt;WebDav 配置备份和同步&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;faq&#34;&gt;FAQ
&lt;/h3&gt;&lt;p&gt;Refer to &lt;a class=&#34;link&#34; href=&#34;https://clash-verge-rev.github.io/faq/windows.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Doc FAQ Page&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;donation&#34;&gt;Donation
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/sponsors/clash-verge-rev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;捐助Clash Verge Rev的开发&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;development&#34;&gt;Development
&lt;/h2&gt;&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;./CONTRIBUTING.md&#34; &gt;CONTRIBUTING.md&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;To run the development server, execute the following commands after all prerequisites for &lt;strong&gt;Tauri&lt;/strong&gt; are installed:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm i
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm run prebuild
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;contributions&#34;&gt;Contributions
&lt;/h2&gt;&lt;p&gt;Issue and PR welcome!&lt;/p&gt;
&lt;h2 id=&#34;acknowledgement&#34;&gt;Acknowledgement
&lt;/h2&gt;&lt;p&gt;Clash Verge rev was based on or inspired by these projects and so on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/zzzgydi/clash-verge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;zzzgydi/clash-verge&lt;/a&gt;: A Clash GUI based on tauri. Supports Windows, macOS and Linux.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tauri-apps/tauri&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tauri-apps/tauri&lt;/a&gt;: Build smaller, faster, and more secure desktop applications with a web frontend.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Dreamacro/clash&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Dreamacro/clash&lt;/a&gt;: A rule-based tunnel in Go.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/MetaCubeX/mihomo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MetaCubeX/mihomo&lt;/a&gt;: A rule-based tunnel in Go.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Fndroid/clash_for_windows_pkg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fndroid/clash_for_windows_pkg&lt;/a&gt;: A Windows/macOS GUI based on Clash.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/vitejs/vite&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;vitejs/vite&lt;/a&gt;: Next generation frontend tooling. It&amp;rsquo;s fast!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;GPL-3.0 License. See &lt;a class=&#34;link&#34; href=&#34;./LICENSE&#34; &gt;License here&lt;/a&gt; for details.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Product Hunt Daily | 2025-09-20</title>
        <link>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-09-20/</link>
        <pubDate>Sat, 20 Sep 2025 07:24:10 +0000</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-09-20/</guid>
        <description>&lt;h2 id=&#34;1-magiclight&#34;&gt;1. Magiclight
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Intelligent story creation agent that creates long videos&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: MagicLight gives you the power to turn any script into a cinematic story video—within minutes. Whether you’re creating YouTube content, children’s stories, ads, or brand films, MagicLight is the AI Story Video Agent that makes storytelling effortless.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/TNTT6JA3H7ES3I?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/magiclight-3?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://producthunt.programnotes.cn/&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Magiclight&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI video creation, AI story creator, video generation, AI video generator, story video maker, cinematic video maker, YouTube video maker, video marketing, AI video marketing, children&amp;rsquo;s video maker, ad video maker, brand film maker, script to video&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺457&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-09-19 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-cursor-for-your-api&#34;&gt;2. Cursor for your API
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Generate, edit, lint &amp;amp; test your API workflow in one place&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Go from idea to tested API fast. Generate or import OpenAPI, edit with AI, lint, preview docs, and run calls in one place. Insights highlight Design/DX/Security and AI-readiness. Privacy-first and secure with your own model/key. One-click MCP export.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/5JSD4OEGJR3PPU?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/theneo?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://producthunt.programnotes.cn/&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Cursor for your API&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: API, Cursor, OpenAPI, API Generator, API Editor, API Linter, API Testing, API Documentation, API Design, AI API, API Security, Privacy-first API, MCP export&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺367&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-09-19 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-elevenlabs-studio-30&#34;&gt;3. ElevenLabs Studio 3.0
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: The best AI audio models in one powerful editor&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Create, edit, and publish with AI. Add voiceovers, music, and sound effects, clean audio, and sync everything in one seamless editor.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/SILPH7V6RFPLZH?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/elevenlabs?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://producthunt.programnotes.cn/&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;ElevenLabs Studio 3.0 &#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI audio, voiceover, audio editor, sound effects, AI voice, music editing, audio cleaning, post-production, ElevenLabs&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺285&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-09-19 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;4-iphone-air&#34;&gt;4. iPhone Air
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: The thinnest iPhone ever, with A19 Pro chip power&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Meet the iPhone Air - the thinnest and lightest iPhone ever created. Features a stunning 6.5&amp;quot; Super Retina XDR display, powerful A19 Pro chip, 18MP Center Stage front camera, 48MP Fusion Main camera, up to 27h video playback, and premium titanium design.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/W5CDP6HFSTAFPQ?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/apple?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://producthunt.programnotes.cn/&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;iPhone Air&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: iPhone Air, Thin iPhone, Lightweight iPhone, A19 Pro Chip, 6.5 inch Display, Super Retina XDR, 48MP Camera, 18MP Front Camera, Titanium iPhone, iPhone 27h Battery&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺255&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-09-19 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;5-google-chrome-with-ai&#34;&gt;5. Google Chrome with AI
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: The browser you love, reimagined with AI&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Google is taking the next step in its journey to make your browser smarter with new AI integrations.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/DMN5BL5B2VPBPI?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/chrome-ai-edition?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://producthunt.programnotes.cn/&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Google Chrome with AI&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Google Chrome, AI, Browser, AI Browser, Google AI, Smart Browser&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺193&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-09-19 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;6-mythiings&#34;&gt;6. My:Thiings
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Elevate your brand with a custom icon collection.&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Bring your brand to life with AI-powered custom icons. Pick a style, generate unique sets, tweak until perfect, and download instantly. Simple credit pricing, no subscriptions, full commercial use included.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/PGHR5QMA3TO63H?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/the-thiings-collection-2?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://producthunt.programnotes.cn/&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;My:Thiings&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Custom Icons, AI Icons, Brand Icons, Icon Generator, Icon Maker, Custom Icon Collection,  AI-Powered Icons,  Vector Icons, Brand Assets, Commercial Use Icons&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺162&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-09-19 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;7-hoot-for-mac&#34;&gt;7. Hoot for Mac
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Widgets, tools, screenshots, wake screen all in your menubar&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Hoot is a lightweight minibar for macOS featuring Widgets, handy Tools, and a Recent Screenshots tray with drag &amp;amp; drop.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/BCNUKLSSFJMBTY?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/hoot-smart-menubar-for-macos?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://producthunt.programnotes.cn/&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Hoot for Mac&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: macOS,menubar,widgets,tools,screenshots,hoot,Mac app,lightweight,minibar,drag and drop&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺136&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-09-19 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;8-leadigger&#34;&gt;8. Leadigger
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Extract emails from your competitors’ Instagram followers&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Find emails and phone numbers from your competitors’ Instagram followers or any audience that matches your ideal customer profile. Send personalized (non-intrusive) outreach emails at scale, turn prospects into customers, and save big on ads.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/XQMOHZ6ET2KA3Z?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/leadigger?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://producthunt.programnotes.cn/&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Leadigger&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Email extractor, Instagram email extractor, competitor email finder, lead generation, cold email outreach, sales outreach, Instagram lead generation, prospect emails, B2B lead generation&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺130&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-09-19 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;9-doneit-30&#34;&gt;9. Doneit 3.0
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Doneit now has the new Liquid Glass design and AI features&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Doneit 3.0 is finally here bringing the new Liquid Glass design, Doneit Assist that can effortlessly create different tasks for you, and the support for the latest versions of iOS, iPadOS, macOS, and watchOS.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/K453DLMIF4AB2H?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/doneit?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://producthunt.programnotes.cn/&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Doneit 3.0&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Doneit 3.0, Liquid Glass, AI features, Doneit Assist, task creation, iOS, iPadOS, macOS, watchOS&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺127&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-09-19 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;10-luma-ray-3&#34;&gt;10. Luma Ray 3
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: First reasoning video model with studio-grade HDR&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: The world’s first reasoning video model, and the first to generate studio-grade HDR. Now with an all-new Draft Mode for rapid iteration in creative workflows, and state of the art physics and consistency.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/TRKNT7HZP4NDBN?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/luma-ai?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://producthunt.programnotes.cn/&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Luma Ray 3&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Luma Ray 3, reasoning video model, HDR video, studio-grade video, AI video generation, video generation, Draft Mode, HDR video generation, physics simulation, video editing, AI, artificial intelligence&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺123&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-09-19 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
</description>
        </item>
        <item>
        <title>Product Hunt Daily | 2025-08-19</title>
        <link>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-08-19/</link>
        <pubDate>Tue, 19 Aug 2025 07:27:59 +0000</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-08-19/</guid>
        <description>&lt;img src="https://ph-files.imgix.net/f3a01a46-884d-4308-bb52-9b20a4a28fbb.png?auto=format&amp;fit=crop&amp;frame=1&amp;h=512&amp;w=1024" alt="Featured image of post Product Hunt Daily | 2025-08-19" /&gt;&lt;h2 id=&#34;1-stormy&#34;&gt;1. Stormy
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: AI agent for influencer marketing&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Stormy is an AI agent for influencer marketing. Give it a brief + budget; it finds the right YouTube/TikTok creators from public data, scores fit, drafts/personalizes outreach, sends DMs/emails, tracks replies, and helps you negotiate to close—fast, end-to-end&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/ZQHCMC4WVBMXM3?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/stormy-influencer-marketing-ai-agent?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/f3a01a46-884d-4308-bb52-9b20a4a28fbb.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Stormy&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI influencer marketing, influencer outreach, AI agent, TikTok marketing, YouTube marketing, influencer marketing tools, influencer discovery,  DM automation, campaign management&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺418&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-08-18 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-mirror&#34;&gt;2. Mirror
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Deeply understand yourself and every relationship&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Mirror unifies astrology, Human Design, MBTI, Enneagram + more into one blueprint of you. Run freakishly accurate compatibility reports. Then use Social AI to @mention friends in chat and instantly decode your connection.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/MUDW7QLSYAHNFB?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/mirror-11?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/5b7d50d1-b2b2-4f49-a092-e149521e6d17.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Mirror&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Mirror, astrology, Human Design, MBTI, Enneagram, compatibility, relationship analysis, personality, social AI, self-understanding, blueprint&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺374&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-08-18 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-dualite-x-supabase&#34;&gt;3. Dualite x Supabase
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Build full-stack applications with Dualite - securely&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Dualite allows you to build and ship full-stack mobile and web applications securely by prompting. Simply describe what you want to build, and it will build it for you, all while keeping your data and sensitive keys securely.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/IM7NOEJMZ7GJ65?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/dualite-2?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/dd96df36-a738-40d7-a472-3845d6236d45.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Dualite x Supabase&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Dualite, Supabase, full-stack development, low-code, no-code, application builder, secure development, prompt engineering, mobile app development, web app development, data security, key management&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺336&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-08-18 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;4-tensorzero&#34;&gt;4. TensorZero
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Open-source stack for industrial-grade LLM applications&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Build industrial-grade LLM applications: one API for every LLM, observability, optimization (prompts, models, etc.), evaluations, and A/B testing — all open source. Turn metrics and human feedback into smarter, faster, and cheaper LLMs. Get started in minutes.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/EPSMBK5B7YQMRA?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/tensorzero?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/c66e34dd-6399-48dd-834b-b1f173fd5bed.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;TensorZero&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: LLM, Open-source, Industrial-grade, AI, Large Language Model, Application, API, Observability, Optimization, Evaluation, A/B testing, TensorZero&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺325&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-08-18 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;5-filefaker&#34;&gt;5. FileFaker
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Generate sample files of various types and sizes in seconds.&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Native macOS app for instant test file generation. Create PDFs, images, videos, CSVs &amp;amp; more locally on your Mac. No internet needed, files never leave your device. Perfect for developers &amp;amp; QA testing uploads, validations, and edge cases.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/KP4XAYUGNPBKO5?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/filefaker?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/ed124e0e-2a88-4530-87c2-92737b2ac269.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FileFaker&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: FileFaker, macOS, test file generator, sample file generator, dummy file creator, PDF generator, image generator, video generator, CSV generator, QA testing, developer tool, offline file generation&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺229&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-08-18 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;6-blink&#34;&gt;6. Blink
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Deep code research, straight from Slack or your browser&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Blink is your AI coding partner for Slack, and soon, your browser. Investigate repos, draft pull requests, run tests in ephemeral environments, and chat through complex codebases. Join the waitlist to be first to try Blink’s new in-browser experience.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/FLAPKZ7MBNCE3G?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/blink-a-deep-research-agent-for-devs?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/3c553e2c-fe3a-49e9-9430-35b2aba0e74f.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Blink&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI coding, code research, Slack integration, browser extension, code review, pull requests, ephemeral environments, coding partner, AI pair programmer&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺151&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-08-18 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;7-filo-mail-for--macos&#34;&gt;7. Filo Mail for  macOS
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Instantly turn your Mac inbox into a to-do list&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Filo Mail for macOS brings AI-driven productivity to your desktop inbox. Automatically extract tasks, summarize emails, and streamline workflow—so you spend less time sorting emails and more time focusing on what truly matters.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/O3BEABK4WOJSNL?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/filo-mail?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/f93019c5-f943-4e60-8a69-820a3bda32fb.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Filo Mail for  macOS&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Filo Mail, macOS, AI email, email productivity, inbox management, task management, email to-do list, workflow automation, email summarization&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺139&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-08-18 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;8-autosana&#34;&gt;8. Autosana
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: QA Agent for Mobile Apps&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Autosana connects directly to your repo(s), embeds into your CI/CD, creates end-to-end testing with natural language, and reports failures and bugs directly to you and your team. Slash deployment times &amp;amp; catch bugs before users do.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/5DZ7NIE5BGTLRD?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/autosana?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/8afa2c87-5759-43ca-bede-6cda2760e3f6.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Autosana&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: QA, mobile testing, mobile app testing, automated testing, CI/CD, end-to-end testing, bug reporting, software testing, app testing, test automation, repo integration&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺138&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-08-18 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;9-gitmore&#34;&gt;9. Gitmore
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: The first AI-powered reporting tool for git repositories&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: AI-powered Git reporting automation. Connect GitHub &amp;amp; Bitbucket for smart reporting, and get your team progress insights easily.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/IZ7WZ2SGM6W4KM?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/gitmore?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/5dcd46c2-1afb-4a09-b50a-6227c4d00866.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Gitmore&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Gitmore, AI reporting, Git reporting, GitHub reporting, Bitbucket reporting, Git analytics, AI analytics, team progress, software development, project management, developer tools&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺132&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-08-18 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;10-extra-thursday&#34;&gt;10. Extra Thursday
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Fly through your inbox just by talking&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Meet Thursday, your voice-powered email manager that flies through your inbox. Speak your thoughts and watch it triage, draft, follow-up with your most important threads and leads in seconds. Finally—you can work at the speed of thought and speech.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/OG4DMJBYQTHMCV?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/extra-thursday?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/af656f65-1cde-47d8-976a-b4d781799677.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Extra Thursday&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Voice email, email manager, voice-powered inbox, speech-to-email, AI email assistant, inbox management, email automation, productivity tool, Thursday app&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺130&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-08-18 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
</description>
        </item>
        <item>
        <title>maui</title>
        <link>https://producthunt.programnotes.cn/en/p/maui/</link>
        <pubDate>Sat, 16 Aug 2025 15:28:23 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/maui/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1698665483450-6991335db7f3?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTUzMjkyMDF8&amp;ixlib=rb-4.1.0" alt="Featured image of post maui" /&gt;&lt;h1 id=&#34;dotnetmaui&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/dotnet/maui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;dotnet/maui&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;net-multi-platform-app-ui-net-maui&#34;&gt;.NET Multi-platform App UI (.NET MAUI)
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://dev.azure.com/xamarin/public/_build/latest?definitionId=57&amp;amp;repoName=dotnet%2Fmaui&amp;amp;branchName=main&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://dev.azure.com/xamarin/public/_apis/build/status/MAUI-public?repoName=dotnet%2Fmaui&amp;amp;branchName=main&amp;amp;label=Public&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://devdiv.visualstudio.com/DevDiv/_build/latest?definitionId=13330&amp;amp;repoName=dotnet%2Fmaui&amp;amp;branchName=main&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://devdiv.visualstudio.com/DevDiv/_apis/build/status/MAUI?repoName=dotnet%2Fmaui&amp;amp;branchName=main&amp;amp;label=Private&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://dotnet.microsoft.com/en-us/apps/maui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;.NET Multi-platform App UI (.NET MAUI)&lt;/a&gt; is a cross-platform framework for creating mobile and desktop apps with C# and XAML. Using .NET MAUI, you can develop apps that can run on Android, iOS, iPadOS, macOS, and Windows from a single shared codebase.&lt;/p&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://dot.net/maui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Install .NET MAUI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.microsoft.com/dotnet/maui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;.NET MAUI Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/dotnet/maui-samples&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;.NET MAUI Samples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./.github/DEVELOPMENT.md&#34; &gt;Development Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview
&lt;/h2&gt;&lt;p&gt;.NET Multi-platform App UI (.NET MAUI) is the evolution of Xamarin.Forms that expand capabilities beyond mobile Android and iOS into desktop apps for Windows and macOS. With .NET MAUI, you can build apps that perform great on any device that runs Windows, macOS, Android, &amp;amp; iOS from a single codebase. Coupled with Visual Studio productivity tools and emulators, .NET and Visual Studio significantly speed up the development process for building apps that target the widest possible set of devices. Use a single development stack that supports the best-of-breed solutions for all modern workloads with a unified SDK, base class libraries, and a toolchain. &lt;a class=&#34;link&#34; href=&#34;https://docs.microsoft.com/dotnet/maui/what-is-maui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Read More&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/Assets/maui-weather-hero-sm.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;.NET MAUI Weather App on all platforms&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;current-news&#34;&gt;Current News
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;2025 - &lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/dotnet/maui/whats-new/dotnet-10&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;What&amp;rsquo;s new in .NET MAUI for .NET 10&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;November 13, 2024 - &lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/dotnet/maui/whats-new/dotnet-9&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;What&amp;rsquo;s new in .NET MAUI for .NET 9&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;November 12, 2024 - &lt;a class=&#34;link&#34; href=&#34;https://devblogs.microsoft.com/dotnet/announcing-dotnet-9/#.net-maui-%e2%80%93-enhancing-multi-platform-app-development&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Announcing .NET 9&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;October 22, 2024 - &lt;a class=&#34;link&#34; href=&#34;https://devblogs.microsoft.com/dotnet/dotnet-maui-welcomes-syncfusion-open-source-contributions/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;.NET MAUI Welcomes Syncfusion Open-source Contributions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Follow the &lt;a class=&#34;link&#34; href=&#34;https://devblogs.microsoft.com/dotnet/category/net-maui/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;.NET MAUI Blog&lt;/a&gt; and visit the &lt;a class=&#34;link&#34; href=&#34;https://github.com/dotnet/maui/wiki/News&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;News&lt;/a&gt; wiki page for more news and updates.&lt;/p&gt;
&lt;h2 id=&#34;faqs&#34;&gt;FAQs
&lt;/h2&gt;&lt;p&gt;Do you have questions? Do not worry; we have prepared a complete &lt;a class=&#34;link&#34; href=&#34;https://github.com/dotnet/maui/wiki/FAQs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FAQ&lt;/a&gt; answering the most common questions.&lt;/p&gt;
&lt;h2 id=&#34;how-to-engage-contribute-and-give-feedback&#34;&gt;How to Engage, Contribute, and Give Feedback
&lt;/h2&gt;&lt;p&gt;Some of the best ways to &lt;a class=&#34;link&#34; href=&#34;./.github/CONTRIBUTING.md&#34; &gt;contribute&lt;/a&gt; are to try things out, file issues, join in design conversations,
and make pull-requests. Proposals for changes specific to MAUI can be found &lt;a class=&#34;link&#34; href=&#34;https://github.com/dotnet/maui/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here for discussion&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;./.github/CONTRIBUTING.md&#34; &gt;CONTRIBUTING&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;./.github/CODE_OF_CONDUCT.md&#34; &gt;CODE-OF-CONDUCT&lt;/a&gt; and the &lt;a class=&#34;link&#34; href=&#34;./.github/DEVELOPMENT.md&#34; &gt;Development Guide&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>mkcert</title>
        <link>https://producthunt.programnotes.cn/en/p/mkcert/</link>
        <pubDate>Thu, 14 Aug 2025 15:31:05 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/mkcert/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1649726635267-d675c83e6064?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTUxNTY2MDV8&amp;ixlib=rb-4.1.0" alt="Featured image of post mkcert" /&gt;&lt;h1 id=&#34;filosottilemkcert&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/FiloSottile/mkcert&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FiloSottile/mkcert&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;mkcert&#34;&gt;mkcert
&lt;/h1&gt;&lt;p&gt;mkcert is a simple tool for making locally-trusted development certificates. It requires no configuration.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ mkcert -install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Created a new local CA 💥
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The local CA is now installed in the system trust store! ⚡️
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The local CA is now installed in the Firefox trust store (requires browser restart)! 🦊
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ mkcert example.com &amp;#34;*.example.com&amp;#34; example.test localhost 127.0.0.1 ::1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Created a new certificate valid for the following names 📜
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - &amp;#34;example.com&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - &amp;#34;*.example.com&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - &amp;#34;example.test&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - &amp;#34;localhost&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - &amp;#34;127.0.0.1&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; - &amp;#34;::1&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The certificate is at &amp;#34;./example.com+5.pem&amp;#34; and the key at &amp;#34;./example.com+5-key.pem&amp;#34; ✅
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p align=&#34;center&#34;&gt;&lt;img width=&#34;498&#34; alt=&#34;Chrome and Firefox screenshot&#34; src=&#34;https://user-images.githubusercontent.com/1225294/51066373-96d4aa80-15be-11e9-91e2-f4e44a3a4458.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Using certificates from real certificate authorities (CAs) for development can be dangerous or impossible (for hosts like &lt;code&gt;example.test&lt;/code&gt;, &lt;code&gt;localhost&lt;/code&gt; or &lt;code&gt;127.0.0.1&lt;/code&gt;), but self-signed certificates cause trust errors. Managing your own CA is the best solution, but usually involves arcane commands, specialized knowledge and manual steps.&lt;/p&gt;
&lt;p&gt;mkcert automatically creates and installs a local CA in the system root store, and generates locally-trusted certificates. mkcert does not automatically configure servers to use the certificates, though, that&amp;rsquo;s up to you.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;: the &lt;code&gt;rootCA-key.pem&lt;/code&gt; file that mkcert automatically generates gives complete power to intercept secure requests from your machine. Do not share it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;macos&#34;&gt;macOS
&lt;/h3&gt;&lt;p&gt;On macOS, use &lt;a class=&#34;link&#34; href=&#34;https://brew.sh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Homebrew&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install mkcert
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install nss # if you use Firefox
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;or &lt;a class=&#34;link&#34; href=&#34;https://www.macports.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MacPorts&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo port selfupdate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo port install mkcert
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo port install nss # if you use Firefox
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;linux&#34;&gt;Linux
&lt;/h3&gt;&lt;p&gt;On Linux, first install &lt;code&gt;certutil&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apt&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;libnss3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tools&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;yum&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nss&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tools&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pacman&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;S&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nss&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;zypper&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mozilla&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nss&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tools&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then you can install using &lt;a class=&#34;link&#34; href=&#34;https://docs.brew.sh/Homebrew-on-Linux&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Homebrew on Linux&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install mkcert
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;or build from source (requires Go 1.13+)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/FiloSottile/mkcert &amp;amp;&amp;amp; cd mkcert
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;go build -ldflags &amp;#34;-X main.Version=$(git describe --tags)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;or use &lt;a class=&#34;link&#34; href=&#34;https://github.com/FiloSottile/mkcert/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;the pre-built binaries&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -JLO &amp;#34;https://dl.filippo.io/mkcert/latest?for=linux/amd64&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x mkcert-v*-linux-amd64
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;For Arch Linux users, &lt;a class=&#34;link&#34; href=&#34;https://archlinux.org/packages/extra/x86_64/mkcert/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;mkcert&lt;/code&gt;&lt;/a&gt; is available on the official Arch Linux repository.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pacman -Syu mkcert
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;windows&#34;&gt;Windows
&lt;/h3&gt;&lt;p&gt;On Windows, use &lt;a class=&#34;link&#34; href=&#34;https://chocolatey.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Chocolatey&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;choco install mkcert
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;or use Scoop&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scoop bucket add extras
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scoop install mkcert
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;or build from source (requires Go 1.10+), or use &lt;a class=&#34;link&#34; href=&#34;https://github.com/FiloSottile/mkcert/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;the pre-built binaries&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re running into permission problems try running &lt;code&gt;mkcert&lt;/code&gt; as an Administrator.&lt;/p&gt;
&lt;h2 id=&#34;supported-root-stores&#34;&gt;Supported root stores
&lt;/h2&gt;&lt;p&gt;mkcert supports the following root stores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macOS system store&lt;/li&gt;
&lt;li&gt;Windows system store&lt;/li&gt;
&lt;li&gt;Linux variants that provide either
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;update-ca-trust&lt;/code&gt; (Fedora, RHEL, CentOS) or&lt;/li&gt;
&lt;li&gt;&lt;code&gt;update-ca-certificates&lt;/code&gt; (Ubuntu, Debian, OpenSUSE, SLES) or&lt;/li&gt;
&lt;li&gt;&lt;code&gt;trust&lt;/code&gt; (Arch)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Firefox (macOS and Linux only)&lt;/li&gt;
&lt;li&gt;Chrome and Chromium&lt;/li&gt;
&lt;li&gt;Java (when &lt;code&gt;JAVA_HOME&lt;/code&gt; is set)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To only install the local root CA into a subset of them, you can set the &lt;code&gt;TRUST_STORES&lt;/code&gt; environment variable to a comma-separated list. Options are: &amp;ldquo;system&amp;rdquo;, &amp;ldquo;java&amp;rdquo; and &amp;ldquo;nss&amp;rdquo; (includes Firefox).&lt;/p&gt;
&lt;h2 id=&#34;advanced-topics&#34;&gt;Advanced topics
&lt;/h2&gt;&lt;h3 id=&#34;advanced-options&#34;&gt;Advanced options
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	-cert-file FILE, -key-file FILE, -p12-file FILE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	    Customize the output paths.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	-client
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	    Generate a certificate for client authentication.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	-ecdsa
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	    Generate a certificate with an ECDSA key.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	-pkcs12
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	    Generate a &amp;#34;.p12&amp;#34; PKCS #12 file, also know as a &amp;#34;.pfx&amp;#34; file,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	    containing certificate and key for legacy applications.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	-csr CSR
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	    Generate a certificate based on the supplied CSR. Conflicts with
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	    all other flags and arguments except -install and -cert-file.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You &lt;em&gt;must&lt;/em&gt; place these options before the domain names list.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;example&#34;&gt;Example
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkcert -key-file key.pem -cert-file cert.pem example.com *.example.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;smime&#34;&gt;S/MIME
&lt;/h3&gt;&lt;p&gt;mkcert automatically generates an S/MIME certificate if one of the supplied names is an email address.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkcert filippo@example.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;mobile-devices&#34;&gt;Mobile devices
&lt;/h3&gt;&lt;p&gt;For the certificates to be trusted on mobile devices, you will have to install the root CA. It&amp;rsquo;s the &lt;code&gt;rootCA.pem&lt;/code&gt; file in the folder printed by &lt;code&gt;mkcert -CAROOT&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;On iOS, you can either use AirDrop, email the CA to yourself, or serve it from an HTTP server. After opening it, you need to &lt;a class=&#34;link&#34; href=&#34;https://github.com/FiloSottile/mkcert/issues/233#issuecomment-690110809&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;install the profile in Settings &amp;gt; Profile Downloaded&lt;/a&gt; and then &lt;a class=&#34;link&#34; href=&#34;https://support.apple.com/en-nz/HT204477&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;enable full trust in it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For Android, you will have to install the CA and then enable user roots in the development build of your app. See &lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/a/22040887/749014&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;this StackOverflow answer&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;using-the-root-with-nodejs&#34;&gt;Using the root with Node.js
&lt;/h3&gt;&lt;p&gt;Node does not use the system root store, so it won&amp;rsquo;t accept mkcert certificates automatically. Instead, you will have to set the &lt;a class=&#34;link&#34; href=&#34;https://nodejs.org/api/cli.html#cli_node_extra_ca_certs_file&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;NODE_EXTRA_CA_CERTS&lt;/code&gt;&lt;/a&gt; environment variable.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;NODE_EXTRA_CA_CERTS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;$(mkcert -CAROOT)/rootCA.pem&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;changing-the-location-of-the-ca-files&#34;&gt;Changing the location of the CA files
&lt;/h3&gt;&lt;p&gt;The CA certificate and its key are stored in an application data folder in the user home. You usually don&amp;rsquo;t have to worry about it, as installation is automated, but the location is printed by &lt;code&gt;mkcert -CAROOT&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you want to manage separate CAs, you can use the environment variable &lt;code&gt;$CAROOT&lt;/code&gt; to set the folder where mkcert will place and look for the local CA files.&lt;/p&gt;
&lt;h3 id=&#34;installing-the-ca-on-other-systems&#34;&gt;Installing the CA on other systems
&lt;/h3&gt;&lt;p&gt;Installing in the trust store does not require the CA key, so you can export the CA certificate and use mkcert to install it in other machines.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Look for the &lt;code&gt;rootCA.pem&lt;/code&gt; file in &lt;code&gt;mkcert -CAROOT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;copy it to a different machine&lt;/li&gt;
&lt;li&gt;set &lt;code&gt;$CAROOT&lt;/code&gt; to its directory&lt;/li&gt;
&lt;li&gt;run &lt;code&gt;mkcert -install&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Remember that mkcert is meant for development purposes, not production, so it should not be used on end users&amp;rsquo; machines, and that you should &lt;em&gt;not&lt;/em&gt; export or share &lt;code&gt;rootCA-key.pem&lt;/code&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>dart_simple_live</title>
        <link>https://producthunt.programnotes.cn/en/p/dart_simple_live/</link>
        <pubDate>Wed, 13 Aug 2025 15:32:42 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/dart_simple_live/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1695453461103-504aad1f6b6d?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTUwNzAyNDF8&amp;ixlib=rb-4.1.0" alt="Featured image of post dart_simple_live" /&gt;&lt;h1 id=&#34;xiaoyaoczdart_&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/xiaoyaocz/dart_simple_live&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;xiaoyaocz/dart_simple_live&lt;/a&gt;
&lt;/h1&gt;&lt;blockquote&gt;
&lt;h3 id=&#34;-本项目不提供release安装包请自行编译后运行测试&#34;&gt;⚠ 本项目不提供Release安装包，请自行编译后运行测试。
&lt;/h3&gt;&lt;/blockquote&gt;
&lt;p align=&#34;center&#34;&gt;
&lt;/p&gt;
&lt;h2 align=&#34;center&#34;&gt;Simple Live&lt;/h2&gt;
&lt;p align=&#34;center&#34;&gt;
简简单单的看直播
&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/assets/screenshot_light.jpg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;浅色模式&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/assets/screenshot_dark.jpg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;深色模式&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;支持直播平台&#34;&gt;支持直播平台：
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;虎牙直播&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;斗鱼直播&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;哔哩哔哩直播&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;抖音直播&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;app支持平台&#34;&gt;APP支持平台
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Android&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; iOS&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Windows &lt;code&gt;BETA&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; MacOS &lt;code&gt;BETA&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Linux &lt;code&gt;BETA&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Android TV &lt;code&gt;BETA&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;项目结构&#34;&gt;项目结构
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;simple_live_core&lt;/code&gt; 项目核心库，实现获取各个网站的信息及弹幕。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;simple_live_console&lt;/code&gt; 基于simple_live_core的控制台程序。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;simple_live_app&lt;/code&gt; 基于核心库实现的Flutter APP客户端。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;simple_live_tv_app&lt;/code&gt; 基于核心库实现的Flutter Android TV客户端。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;环境&#34;&gt;环境
&lt;/h2&gt;&lt;p&gt;Flutter : &lt;code&gt;3.22&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;参考及引用&#34;&gt;参考及引用
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/xiaoyaocz/AllLive&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AllLive&lt;/a&gt; &lt;code&gt;本项目的C#版，有兴趣可以看看&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/xiaoyaocz/dart_tars_protocol.git&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;dart_tars_protocol&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/wbt5/real-url&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;wbt5/real-url&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/lovelyyoshino/Bilibili-Live-API/blob/master/API.WebSocket.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;lovelyyoshino/Bilibili-Live-API&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/IsoaSFlus/danmaku&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;IsoaSFlus/danmaku&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/BacooTang/huya-danmu&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BacooTang/huya-danmu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/TarsCloud/Tars&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TarsCloud/Tars&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/YunzhiYike/douyin-live&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YunzhiYike/douyin-live&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/5ime/Tiktok_Signature&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;5ime/Tiktok_Signature&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;声明&#34;&gt;声明
&lt;/h2&gt;&lt;p&gt;本项目的所有功能都是基于互联网上公开的资料开发，无任何破解、逆向工程等行为。&lt;/p&gt;
&lt;p&gt;本项目仅用于学习交流编程技术，严禁将本项目用于商业目的。如有任何商业行为，均与本项目无关。&lt;/p&gt;
&lt;p&gt;如果本项目存在侵犯您的合法权益的情况，请及时与开发者联系，开发者将会及时删除有关内容。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>hashcat</title>
        <link>https://producthunt.programnotes.cn/en/p/hashcat/</link>
        <pubDate>Wed, 06 Aug 2025 15:37:25 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/hashcat/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1650749837474-a9ab19e3d1af?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTQ0NjU3NTF8&amp;ixlib=rb-4.1.0" alt="Featured image of post hashcat" /&gt;&lt;h1 id=&#34;hashcathashcat&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/hashcat/hashcat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hashcat/hashcat&lt;/a&gt;
&lt;/h1&gt;&lt;h2 id=&#34;hashcat&#34;&gt;&lt;em&gt;hashcat&lt;/em&gt;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;hashcat&lt;/strong&gt; is the world&amp;rsquo;s fastest and most advanced password recovery utility, supporting five unique modes of attack for over 300 highly-optimized hashing algorithms. hashcat currently supports CPUs, GPUs, and other hardware accelerators on Linux, Windows, and macOS, and has facilities to help enable distributed password cracking.&lt;/p&gt;
&lt;h3 id=&#34;license&#34;&gt;License
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;hashcat&lt;/strong&gt; is licensed under the MIT license. Refer to &lt;a class=&#34;link&#34; href=&#34;docs/license.txt&#34; &gt;docs/license.txt&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation
&lt;/h3&gt;&lt;p&gt;Download the &lt;a class=&#34;link&#34; href=&#34;https://hashcat.net/hashcat/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;latest release&lt;/a&gt; and unpack it in the desired location. Please remember to use &lt;code&gt;7z x&lt;/code&gt; when unpacking the archive from the command line to ensure full file paths remain intact.&lt;/p&gt;
&lt;h3 id=&#34;usagehelp&#34;&gt;Usage/Help
&lt;/h3&gt;&lt;p&gt;Please refer to the &lt;a class=&#34;link&#34; href=&#34;https://hashcat.net/wiki/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hashcat Wiki&lt;/a&gt; and the output of &lt;code&gt;--help&lt;/code&gt; for usage information and general help. A list of frequently asked questions may also be found &lt;a class=&#34;link&#34; href=&#34;https://hashcat.net/wiki/doku.php?id=frequently_asked_questions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;. The &lt;a class=&#34;link&#34; href=&#34;https://hashcat.net/forum/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hashcat Forum&lt;/a&gt; also contains a plethora of information. If you still think you need help by a real human come to &lt;a class=&#34;link&#34; href=&#34;https://discord.gg/HFS523HGBT&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Discord&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;building&#34;&gt;Building
&lt;/h3&gt;&lt;p&gt;Refer to &lt;a class=&#34;link&#34; href=&#34;BUILD.md&#34; &gt;BUILD.md&lt;/a&gt; for instructions on how to build &lt;strong&gt;hashcat&lt;/strong&gt; from source.&lt;/p&gt;
&lt;p&gt;Tests:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Travis&lt;/th&gt;
          &lt;th&gt;Coverity&lt;/th&gt;
          &lt;th&gt;GitHub Actions&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://travis-ci.org/hashcat/hashcat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://travis-ci.org/hashcat/hashcat.svg?branch=master&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Hashcat Travis Build status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://scan.coverity.com/projects/hashcat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://scan.coverity.com/projects/11753/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Coverity Scan Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/hashcat/hashcat/actions/workflows/build.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/hashcat/hashcat/actions/workflows/build.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Hashcat GitHub Actions Build status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;contributing&#34;&gt;Contributing
&lt;/h3&gt;&lt;p&gt;Contributions are welcome and encouraged, provided your code is of sufficient quality. Before submitting a pull request, please ensure your code adheres to the following requirements:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Licensed under MIT license, or dedicated to the public domain (BSD, GPL, etc. code is incompatible)&lt;/li&gt;
&lt;li&gt;Adheres to gnu99 standard&lt;/li&gt;
&lt;li&gt;Compiles cleanly with no warnings when compiled with &lt;code&gt;-W -Wall -std=gnu99&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Uses &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Indent_style#Allman_style&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Allman-style&lt;/a&gt; code blocks &amp;amp; indentation&lt;/li&gt;
&lt;li&gt;Uses 2-spaces as the indentation or a tab if it&amp;rsquo;s required (for example: Makefiles)&lt;/li&gt;
&lt;li&gt;Uses lower-case function and variable names&lt;/li&gt;
&lt;li&gt;Avoids the use of &lt;code&gt;!&lt;/code&gt; and uses positive conditionals wherever possible (e.g., &lt;code&gt;if (foo == 0)&lt;/code&gt; instead of &lt;code&gt;if (!foo)&lt;/code&gt;, and &lt;code&gt;if (foo)&lt;/code&gt; instead of &lt;code&gt;if (foo != 0)&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Use code like array[index + 0] if you also need to do array[index + 1], to keep it aligned&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can use GNU Indent to help assist you with the style requirements:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;indent -st -bad -bap -sc -bl -bli0 -ncdw -nce -cli0 -cbi0 -pcs -cs -npsl -bs -nbc -bls -blf -lp -i2 -ts2 -nut -l1024 -nbbo -fca -lc1024 -fc1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Your pull request should fully describe the functionality you are adding/removing or the problem you are solving. Regardless of whether your patch modifies one line or one thousand lines, you must describe what has prompted and/or motivated the change.&lt;/p&gt;
&lt;p&gt;Solve only one problem in each pull request. If you&amp;rsquo;re fixing a bug and adding a new feature, you need to make two separate pull requests. If you&amp;rsquo;re fixing three bugs, you need to make three separate pull requests. If you&amp;rsquo;re adding four new features, you need to make four separate pull requests. So on, and so forth.&lt;/p&gt;
&lt;p&gt;If your patch fixes a bug, please be sure there is an &lt;a class=&#34;link&#34; href=&#34;https://github.com/hashcat/hashcat/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;issue&lt;/a&gt; open for the bug before submitting a pull request. If your patch aims to improve performance or optimize an algorithm, be sure to quantify your optimizations and document the trade-offs, and back up your claims with benchmarks and metrics.&lt;/p&gt;
&lt;p&gt;In order to maintain the quality and integrity of the &lt;strong&gt;hashcat&lt;/strong&gt; source tree, all pull requests must be reviewed and signed off by at least two &lt;a class=&#34;link&#34; href=&#34;https://github.com/orgs/hashcat/people&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;board members&lt;/a&gt; before being merged. The &lt;a class=&#34;link&#34; href=&#34;https://github.com/jsteube&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;project lead&lt;/a&gt; has the ultimate authority in deciding whether to accept or reject a pull request. Do not be discouraged if your pull request is rejected!&lt;/p&gt;
&lt;h3 id=&#34;happy-cracking&#34;&gt;Happy Cracking!
&lt;/h3&gt;</description>
        </item>
        <item>
        <title>swift-composable-architecture</title>
        <link>https://producthunt.programnotes.cn/en/p/swift-composable-architecture/</link>
        <pubDate>Wed, 06 Aug 2025 15:36:43 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/swift-composable-architecture/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1606766986744-38a52a689773?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTQ0NjU3NTF8&amp;ixlib=rb-4.1.0" alt="Featured image of post swift-composable-architecture" /&gt;&lt;h1 id=&#34;pointfreecoswift-composable-architecture&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/pointfreeco/swift-composable-architecture&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pointfreeco/swift-composable-architecture&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;the-composable-architecture&#34;&gt;The Composable Architecture
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://swift.org/download/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/swift-5.2-ED523F.svg?style=flat&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Swift 5.2&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://swift.org/download/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/swift-5.1-ED523F.svg?style=flat&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Swift 5.1&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/pointfreeco/swift-composable-architecture/actions?query=workflow%3ACI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/pointfreeco/swift-composable-architecture/workflows/CI/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://twitter.com/pointfreeco&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/contact-@pointfreeco-5AA9E7.svg?style=flat&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;@pointfreeco&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Composable Architecture is a library for building applications in a consistent and understandable way, with composition, testing, and ergonomics in mind. It can be used in SwiftUI, UIKit, and more, and on any Apple platform (iOS, macOS, tvOS, and watchOS).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#what-is-the-composable-architecture&#34; &gt;What is the Composable Architecture?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#learn-more&#34; &gt;Learn more&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#examples&#34; &gt;Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#basic-usage&#34; &gt;Basic usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#supplementary-libraries&#34; &gt;Supplemental libraries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#faq&#34; &gt;FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#requirements&#34; &gt;Requirements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#installation&#34; &gt;Installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#help&#34; &gt;Help&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#credits-and-thanks&#34; &gt;Credits and thanks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#other-libraries&#34; &gt;Other libraries&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-is-the-composable-architecture&#34;&gt;What is the Composable Architecture?
&lt;/h2&gt;&lt;p&gt;This library provides a few core tools that can be used to build applications of varying purpose and complexity. It provides compelling stories that you can follow to solve many problems you encounter day-to-day when building applications, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;State management&lt;/strong&gt;
&lt;br&gt; How to manage the state of your application using simple value types, and share state across many screens so that mutations in one screen can be immediately observed in another screen.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Composition&lt;/strong&gt;
&lt;br&gt; How to break down large features into smaller components that can be extracted to their own, isolated modules and be easily glued back together to form the feature.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Side effects&lt;/strong&gt;
&lt;br&gt; How to let certain parts of the application talk to the outside world in the most testable and understandable way possible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Testing&lt;/strong&gt;
&lt;br&gt; How to not only test a feature built in the architecture, but also write integration tests for features that have been composed of many parts, and write end-to-end tests to understand how side effects influence your application. This allows you to make strong guarantees that your business logic is running in the way you expect.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Ergonomics&lt;/strong&gt;
&lt;br&gt; How to accomplish all of the above in a simple API with as few concepts and moving parts as possible.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;learn-more&#34;&gt;Learn More
&lt;/h2&gt;&lt;p&gt;The Composable Architecture was designed over the course of many episodes on &lt;a class=&#34;link&#34; href=&#34;https://www.pointfree.co&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Point-Free&lt;/a&gt;, a video series exploring functional programming and the Swift language, hosted by &lt;a class=&#34;link&#34; href=&#34;https://twitter.com/mbrandonw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Brandon Williams&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://twitter.com/stephencelis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stephen Celis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can watch all of the episodes &lt;a class=&#34;link&#34; href=&#34;https://www.pointfree.co/collections/composable-architecture&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;, as well as a dedicated, multipart tour of the architecture from scratch: &lt;a class=&#34;link&#34; href=&#34;https://www.pointfree.co/collections/composable-architecture/a-tour-of-the-composable-architecture/ep100-a-tour-of-the-composable-architecture-part-1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;part 1&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://www.pointfree.co/collections/composable-architecture/a-tour-of-the-composable-architecture/ep101-a-tour-of-the-composable-architecture-part-2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;part 2&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://www.pointfree.co/collections/composable-architecture/a-tour-of-the-composable-architecture/ep102-a-tour-of-the-composable-architecture-part-3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;part 3&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://www.pointfree.co/collections/composable-architecture/a-tour-of-the-composable-architecture/ep103-a-tour-of-the-composable-architecture-part-4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;part 4&lt;/a&gt;.&lt;/p&gt;
&lt;a href=&#34;https://www.pointfree.co/collections/composable-architecture&#34;&gt;
  &lt;img alt=&#34;video poster image&#34; src=&#34;https://i.vimeocdn.com/video/850265054.jpg&#34; width=&#34;600&#34;&gt;
&lt;/a&gt;
&lt;h2 id=&#34;examples&#34;&gt;Examples
&lt;/h2&gt;&lt;p&gt;[&lt;/p&gt;
&lt;p&gt;This repo comes with &lt;em&gt;lots&lt;/em&gt; of examples to demonstrate how to solve common and complex problems with the Composable Architecture. Check out &lt;a class=&#34;link&#34; href=&#34;./Examples&#34; &gt;this&lt;/a&gt; directory to see them all, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./Examples/CaseStudies&#34; &gt;Case Studies&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Getting started&lt;/li&gt;
&lt;li&gt;Effects&lt;/li&gt;
&lt;li&gt;Navigation&lt;/li&gt;
&lt;li&gt;Higher-order reducers&lt;/li&gt;
&lt;li&gt;Reusable components&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./Examples/LocationManager&#34; &gt;Location manager&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./Examples/MotionManager&#34; &gt;Motion manager&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./Examples/Search&#34; &gt;Search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./Examples/SpeechRecognition&#34; &gt;Speech Recognition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./Examples/TicTacToe&#34; &gt;Tic-Tac-Toe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./Examples/Todos&#34; &gt;Todos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./Examples/VoiceMemos&#34; &gt;Voice memos&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;basic-usage&#34;&gt;Basic Usage
&lt;/h2&gt;&lt;p&gt;To build a feature using the Composable Architecture you define some types and values that model your domain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;State&lt;/strong&gt;: A type that describes the data your feature needs to perform its logic and render its UI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;: A type that represents all of the actions that can happen in your feature, such as user actions, notifications, event sources and more.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Environment&lt;/strong&gt;: A type that holds any dependencies the feature needs, such as API clients, analytics clients, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reducer&lt;/strong&gt;: A function that describes how to evolve the current state of the app to the next state given an action. The reducer is also responsible for returning any effects that should be run, such as API requests, which can be done by returning an &lt;code&gt;Effect&lt;/code&gt; value.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Store&lt;/strong&gt;: The runtime that actually drives your feature. You send all user actions to the store so that the store can run the reducer and effects, and you can observe state changes in the store so that you can update UI.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The benefits of doing this is that you will instantly unlock testability of your feature, and you will be able to break large, complex features into smaller domains that can be glued together.&lt;/p&gt;
&lt;p&gt;As a basic example, consider a UI that shows a number along with &amp;ldquo;+&amp;rdquo; and &amp;ldquo;−&amp;rdquo; buttons that increment and decrement the number. To make things interesting, suppose there is also a button that when tapped makes an API request to fetch a random fact about that number and then displays the fact in an alert.&lt;/p&gt;
&lt;p&gt;The state of this feature would consist of an integer for the current count, as well as an optional string that represents the title of the alert we want to show (optional because &lt;code&gt;nil&lt;/code&gt; represents not showing an alert):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-swift&#34; data-lang=&#34;swift&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;AppState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Equatable&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;numberFactAlert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Next we have the actions in the feature. There are the obvious actions, such as tapping the decrement button, increment button, or fact button. But there are also some slightly non-obvious ones, such as the action of the user dismissing the alert, and the action that occurs when we receive a response from the fact API request:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-swift&#34; data-lang=&#34;swift&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;enum&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;AppAction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Equatable&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;factAlertDismissed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;decrementButtonTapped&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;incrementButtonTapped&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;numberFactButtonTapped&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;numberFactResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ApiError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;ApiError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Equatable&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Next we model the environment of dependencies this feature needs to do its job. In particular, to fetch a number fact we need to construct an &lt;code&gt;Effect&lt;/code&gt; value that encapsulates the network request. So that dependency is a function from &lt;code&gt;Int&lt;/code&gt; to &lt;code&gt;Effect&amp;lt;String, ApiError&amp;gt;&lt;/code&gt;, where &lt;code&gt;String&lt;/code&gt; represents the response from the request. Further, the effect will typically do its work on a background thread (as is the case with &lt;code&gt;URLSession&lt;/code&gt;), and so we need a way to receive the effect&amp;rsquo;s values on the main queue. We do this via a main queue scheduler, which is a dependency that is important to control so that we can write tests. We must use an &lt;code&gt;AnyScheduler&lt;/code&gt; so that we can use a live &lt;code&gt;DispatchQueue&lt;/code&gt; in production and a test scheduler in tests.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-swift&#34; data-lang=&#34;swift&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;AppEnvironment&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;mainQueue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AnySchedulerOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DispatchQueue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;numberFact&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Effect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ApiError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Next, we implement a reducer that implements the logic for this domain. It describes how to change the current state to the next state, and describes what effects need to be executed. Some actions don&amp;rsquo;t need to execute effects, and they can return &lt;code&gt;.none&lt;/code&gt; to represent that:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-swift&#34; data-lang=&#34;swift&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;appReducer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Reducer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AppState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AppAction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AppEnvironment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;environment&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;switch&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;action&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;factAlertDismissed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactAlert&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;none&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decrementButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;none&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;incrementButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;none&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFact&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;receive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mainQueue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;catchToEffect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;map&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AppAction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;success&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fact&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactAlert&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fact&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;none&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;failure&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactAlert&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Could not load a number fact :(&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;none&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;And then finally we define the view that displays the feature. It holds onto a &lt;code&gt;Store&amp;lt;AppState, AppAction&amp;gt;&lt;/code&gt; so that it can observe all changes to the state and re-render, and we can send all user actions to the store so that state changes. We must also introduce a struct wrapper around the fact alert to make it &lt;code&gt;Identifiable&lt;/code&gt;, which the &lt;code&gt;.alert&lt;/code&gt; view modifier requires:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-swift&#34; data-lang=&#34;swift&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;AppView&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;View&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;store&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Store&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AppState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AppAction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;some&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;View&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;WithViewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;store&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;VStack&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;HStack&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;n&#34;&gt;Button&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;−&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decrementButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;n&#34;&gt;Text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;\(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;n&#34;&gt;Button&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;+&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;incrementButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Button&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Number fact&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;alert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;binding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;kr&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactAlert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;map&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FactAlert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;init&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;n&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;factAlertDismissed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Alert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;FactAlert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Identifiable&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;It&amp;rsquo;s important to note that we were able to implement this entire feature without having a real, live effect at hand. This is important because it means features can be built in isolation without building their dependencies, which can help compile times.&lt;/p&gt;
&lt;p&gt;It is also straightforward to have a UIKit controller driven off of this store. You subscribe to the store in &lt;code&gt;viewDidLoad&lt;/code&gt; in order to update the UI and show alerts. The code is a bit longer than the SwiftUI version, so we have collapsed it here:&lt;/p&gt;
&lt;details&gt;
  &lt;summary&gt;Click to expand!&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-swift&#34; data-lang=&#34;swift&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;AppViewController&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;UIViewController&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;viewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ViewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AppState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AppAction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;cancellables&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AnyCancellable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;init&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;store&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Store&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AppState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AppAction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ViewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;store&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kc&#34;&gt;super&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;init&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nibName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bundle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;required&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;init&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;?(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;coder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;NSCoder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;bp&#34;&gt;fatalError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;init(coder:) has not been implemented&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;override&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;viewDidLoad&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kc&#34;&gt;super&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;viewDidLoad&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;countLabel&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;UILabel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;incrementButton&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;UIButton&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;decrementButton&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;UIButton&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;factButton&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;UIButton&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// Omitted: Add subviews and set up constraints...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;publisher&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;map&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;\(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;assign&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;to&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;countLabel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;store&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;in&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cancellables&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;publisher&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactAlert&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sink&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;weak&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;numberFactAlert&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;alertController&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;UIAlertController&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;numberFactAlert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preferredStyle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;alert&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;alertController&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;addAction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;n&#34;&gt;UIAlertAction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Ok&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;handler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;?.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;factAlertDismissed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;?.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;present&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;alertController&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;animated&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;completion&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;store&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;in&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cancellables&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;@objc&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;incrementButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;incrementButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;@objc&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;decrementButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decrementButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;@objc&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;factButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;viewStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;Once we are ready to display this view, for example in the scene delegate, we can construct a store. This is the moment where we need to supply the dependencies, and for now we can just use an effect that immediately returns a mocked string:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-swift&#34; data-lang=&#34;swift&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;appView&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AppView&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;store&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Store&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;initialState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AppState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;reducer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;appReducer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AppEnvironment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;mainQueue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DispatchQueue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;eraseToAnyScheduler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;numberFact&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;number&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Effect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;\(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;number&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s&#34;&gt; is a good number Brent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;And that is enough to get something on the screen to play around with. It&amp;rsquo;s definitely a few more steps than if you were to do this in a vanilla SwiftUI way, but there are a few benefits. It gives us a consistent manner to apply state mutations, instead of scattering logic in some observable objects and in various action closures of UI components. It also gives us a concise way of expressing side effects. And we can immediately test this logic, including the effects, without doing much additional work.&lt;/p&gt;
&lt;h3 id=&#34;testing&#34;&gt;Testing
&lt;/h3&gt;&lt;p&gt;To test, you first create a &lt;code&gt;TestStore&lt;/code&gt; with the same information that you would to create a regular &lt;code&gt;Store&lt;/code&gt;, except this time we can supply test-friendly dependencies. In particular, we use a test scheduler instead of the live &lt;code&gt;DispatchQueue.main&lt;/code&gt; scheduler because that allows us to control when work is executed, and we don&amp;rsquo;t have to artificially wait for queues to catch up.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-swift&#34; data-lang=&#34;swift&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;scheduler&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DispatchQueue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;testScheduler&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;store&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TestStore&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;initialState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AppState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;reducer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;appReducer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AppEnvironment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;mainQueue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scheduler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;eraseToAnyScheduler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;numberFact&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;number&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Effect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;\(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;number&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s&#34;&gt; is a good number Brent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Once the test store is created we can use it to make an assertion of an entire user flow of steps. Each step of the way we need to prove that state changed how we expect. Further, if a step causes an effect to be executed, which feeds data back into the store, we must assert that those actions were received properly.&lt;/p&gt;
&lt;p&gt;The test below has the user increment and decrement the count, then they ask for a number fact, and the response of that effect triggers an alert to be shown, and then dismissing the alert causes the alert to go away.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-swift&#34; data-lang=&#34;swift&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;store&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;assert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Test that tapping on the increment/decrement buttons changes the count&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;incrementButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decrementButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Test that tapping the fact button causes us to receive a response from the effect. Note&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// that we have to advance the scheduler because we used `.receive(on:)` in the reducer.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactButtonTapped&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scheduler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;advance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;receive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;success&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;0 is a good number Brent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactAlert&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;0 is a good number Brent&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// And finally dismiss the alert&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;send&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;factAlertDismissed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numberFactAlert&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;That is the basics of building and testing a feature in the Composable Architecture. There are &lt;em&gt;a lot&lt;/em&gt; more things to be explored, such as composition, modularity, adaptability, and complex effects. The &lt;a class=&#34;link&#34; href=&#34;./Examples&#34; &gt;Examples&lt;/a&gt; directory has a bunch of projects to explore to see more advanced usages.&lt;/p&gt;
&lt;h3 id=&#34;debugging&#34;&gt;Debugging
&lt;/h3&gt;&lt;p&gt;The Composable Architecture comes with a number of tools to aid in debugging.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;reducer.debug()&lt;/code&gt; enhances a reducer with debug-printing that describes every action the reducer receives and every mutation it makes to state.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;received action:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  AppAction.todoCheckboxTapped(
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    index: 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  )
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  AppState(
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    todos: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      Todo(
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gd&#34;&gt;-       isComplete: false,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gi&#34;&gt;+       isComplete: true,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        description: &amp;#34;Milk&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        id: 5834811A-83B4-4E5E-BCD3-8A38F6BDCA90
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ),
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      Todo(
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        isComplete: false,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        description: &amp;#34;Eggs&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        id: AB3C7921-8262-4412-AA93-9DC5575C1107
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ),
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      Todo(
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        isComplete: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        description: &amp;#34;Hand Soap&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        id: 06E94D88-D726-42EF-BA8B-7B4478179D19
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ),
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  )
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;reducer.signpost()&lt;/code&gt; instruments a reducer with signposts so that you can gain insight into how long actions take to execute, and when effects are running.&lt;/p&gt;
  &lt;img src=&#34;https://s3.amazonaws.com/pointfreeco-production/point-free-pointers/0044-signposts-cover.jpg&#34; width=&#34;600&#34;&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;supplementary-libraries&#34;&gt;Supplementary libraries
&lt;/h2&gt;&lt;p&gt;One of the most important principles of the Composable Architecture is that side effects are never performed directly, but instead are wrapped in the &lt;code&gt;Effect&lt;/code&gt; type, returned from reducers, and then the &lt;code&gt;Store&lt;/code&gt; later performs the effect. This is crucial for simplifying how data flows through an application, and for gaining testability on the full end-to-end cycle of user action to effect execution.&lt;/p&gt;
&lt;p&gt;However, this also means that many libraries and SDKs you interact with on a daily basis need to be retrofitted to be a little more friendly to the Composable Architecture style. That&amp;rsquo;s why we&amp;rsquo;d like to ease the pain of using some of Apple&amp;rsquo;s most popular frameworks by providing wrapper libraries that expose their functionality in a way that plays nicely with our library. So far we support:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./Sources/ComposableCoreLocation/&#34; &gt;&lt;code&gt;ComposableCoreLocation&lt;/code&gt;&lt;/a&gt;: A wrapper around &lt;code&gt;CLLocationManager&lt;/code&gt; that makes it easy to use from a reducer, and easy to write tests for how your logic interacts with &lt;code&gt;CLLocationManager&lt;/code&gt;&amp;rsquo;s functionality.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./Sources/ComposableCoreMotion/&#34; &gt;&lt;code&gt;ComposableCoreMotion&lt;/code&gt;&lt;/a&gt;: A wrapper around &lt;code&gt;CMMotionManager&lt;/code&gt; that makes it easy to use from a reducer, and easy to write tests for how your logic interacts with &lt;code&gt;CMMotionaMansger&lt;/code&gt;&amp;rsquo;s functionality.&lt;/li&gt;
&lt;li&gt;More to come soon. Keep an eye out 😉&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are interested in contributing a wrapper library for a framework that we have not yet covered, feel free to open an issue expressing your interest so that we can discuss a path forward.&lt;/p&gt;
&lt;h2 id=&#34;faq&#34;&gt;FAQ
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;How does the Composable Architecture compare to Elm, Redux, and others?&lt;/p&gt;
&lt;details&gt;
  &lt;summary&gt;Expand to see answer&lt;/summary&gt;
  The Composable Architecture (TCA) is built on a foundation of ideas popularized by Elm and Redux, but made to feel at home in the Swift language and on Apple&#39;s platforms.
&lt;p&gt;In some ways TCA is a little more opinionated than the other libraries. For example, Redux is not prescriptive with how one executes side effects, but TCA requires all side effects to be modeled in the &lt;code&gt;Effect&lt;/code&gt; type and returned from the reducer.&lt;/p&gt;
&lt;p&gt;In other ways TCA is a little more lax than the other libraries. For example, Elm controls what kinds of effects can be created via the &lt;code&gt;Cmd&lt;/code&gt; type, but TCA allows an escape hatch to any kind of effect since &lt;code&gt;Effect&lt;/code&gt; conforms to the Combine &lt;code&gt;Publisher&lt;/code&gt; protocol.&lt;/p&gt;
&lt;p&gt;And then there are certain things that TCA prioritizes highly that are not points of focus for Redux, Elm, or most other libraries. For example, composition is very important aspect of TCA, which is the process of breaking down large features into smaller units that can be glued together. This is accomplished with the &lt;code&gt;pullback&lt;/code&gt; and &lt;code&gt;combine&lt;/code&gt; operators on reducers, and it aids in handling complex features as well as modularization for a better-isolated code base and improved compile times.&lt;/p&gt;
&lt;/details&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Why isn&amp;rsquo;t &lt;code&gt;Store&lt;/code&gt; thread-safe? &lt;br&gt; Why isn&amp;rsquo;t &lt;code&gt;send&lt;/code&gt; queued? &lt;br&gt; Why isn&amp;rsquo;t &lt;code&gt;send&lt;/code&gt; run on the main thread?&lt;/p&gt;
&lt;details&gt;
  &lt;summary&gt;Expand to see answer&lt;/summary&gt;
&lt;p&gt;When an action is sent to the &lt;code&gt;Store&lt;/code&gt;, a reducer is run on the current state, and this process cannot be done from multiple threads. A possible work around is to use a queue in &lt;code&gt;send&lt;/code&gt;s implementation, but this introduces a few new complications:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;If done simply with &lt;code&gt;DispatchQueue.main.async&lt;/code&gt; you will incur a thread hop even when you are already on the main thread. This can lead to unexpected behavior in UIKit and SwiftUI, where sometimes you are required to do work synchronously, such as in animation blocks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It is possible to create a scheduler that performs its work immediately when on the main thread and otherwise uses &lt;code&gt;DispatchQueue.main.async&lt;/code&gt; (&lt;em&gt;e.g.&lt;/em&gt; see ReactiveSwift&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/ReactiveCocoa/ReactiveSwift/blob/f97db218c0236b0c6ef74d32adb3d578792969c0/Sources/Scheduler.swift&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;UIScheduler&lt;/code&gt;&lt;/a&gt;). This introduces a lot more complexity, and should probably not be adopted without having a very good reason.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At the end of the day, we require &lt;code&gt;Store&lt;/code&gt; to be used in much the same way that you interact with Apple&amp;rsquo;s APIs. Just as &lt;code&gt;URLSession&lt;/code&gt; delivers its results on a background thread, thus making you responsible for dispatching back to the main thread, the Composable Architecture makes you responsible for making sure to send actions on the main thread. If you are using an effect that may deliver its output on a non-main thread, you must explicitly perform &lt;code&gt;.receive(on:)&lt;/code&gt; in order to force it back on the main thread.&lt;/p&gt;
&lt;p&gt;This approach makes the fewest number of assumptions about how effects are created and transformed, and prevents unnecessary thread hops and re-dispatching. It also provides some testing benefits. If your effects are not responsible for their own scheduling, then in tests all of the effects would run synchronously and immediately. You would not be able to test how multiple in-flight effects interleave with each other and affect the state of your application. However, by leaving scheduling out of the &lt;code&gt;Store&lt;/code&gt; we get to test these aspects of our effects if we so desire, or we can ignore if we prefer. We have that flexibility.&lt;/p&gt;
&lt;p&gt;However, if you are still not a fan of our choice, then never fear! The Composable Architecture is flexible enough to allow you to introduce this functionality yourself if you so desire. It is possible to create a higher-order reducer that can force all effects to deliver their output on the main thread, regardless of where the effect does its work:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-swift&#34; data-lang=&#34;swift&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;extension&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Reducer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;receive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;S&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Scheduler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scheduler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;S&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;Self&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kc&#34;&gt;Self&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;environment&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&amp;amp;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;receive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scheduler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;eraseToEffect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;You would probably still want something like a &lt;code&gt;UIScheduler&lt;/code&gt; so that you don&amp;rsquo;t needlessly perform thread hops.&lt;/p&gt;
&lt;/details&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;requirements&#34;&gt;Requirements
&lt;/h2&gt;&lt;p&gt;The Composable Architecture depends on the Combine framework, so it requires minimum deployment targets of iOS 13, macOS 10.15, Mac Catalyst 13, tvOS 13, and watchOS 6. If your application must support older OSes, there are forks for &lt;a class=&#34;link&#34; href=&#34;https://github.com/trading-point/reactiveswift-composable-architecture&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ReactiveSwift&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://github.com/dannyhertz/rxswift-composable-architecture&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RxSwift&lt;/a&gt; that you can adopt!&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;You can add ComposableArchitecture to an Xcode project by adding it as a package dependency.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;From the &lt;strong&gt;File&lt;/strong&gt; menu, select &lt;strong&gt;Swift Packages › Add Package Dependency…&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Enter &amp;ldquo;&lt;a class=&#34;link&#34; href=&#34;https://github.com/pointfreeco/swift-composable-architecture%22&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/pointfreeco/swift-composable-architecture&#34;&lt;/a&gt; into the package repository URL text field&lt;/li&gt;
&lt;li&gt;Depending on how your project is structured:
&lt;ul&gt;
&lt;li&gt;If you have a single application target that needs access to the library, then add &lt;strong&gt;ComposableArchitecture&lt;/strong&gt; directly to your application.&lt;/li&gt;
&lt;li&gt;If you want to use this library from multiple targets you must create a shared framework that depends on &lt;strong&gt;ComposableArchitecture&lt;/strong&gt; and then depend on that framework in all of your targets. For an example of this, check out the &lt;a class=&#34;link&#34; href=&#34;./Examples/TicTacToe&#34; &gt;Tic-Tac-Toe&lt;/a&gt; demo application, which splits lots of features into modules and consumes the static library in this fashion using the &lt;strong&gt;TicTacToeCommon&lt;/strong&gt; framework.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;help&#34;&gt;Help
&lt;/h2&gt;&lt;p&gt;If you want to discuss the Composable Architecture or have a question about how to use it to solve a particular problem, ask around on &lt;a class=&#34;link&#34; href=&#34;https://forums.swift.org/c/related-projects/swift-composable-architecture&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;its Swift forum&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;credits-and-thanks&#34;&gt;Credits and thanks
&lt;/h2&gt;&lt;p&gt;The following people gave feedback on the library at its early stages and helped make the library what it is today:&lt;/p&gt;
&lt;p&gt;Paul Colton, Kaan Dedeoglu, Matt Diephouse, Josef Doležal, Eimantas, Matthew Johnson, George Kaimakas, Nikita Leonov, Christopher Liscio, Jeffrey Macko, Alejandro Martinez, Shai Mishali, Willis Plummer, Simon-Pierre Roy, Justin Price, Sven A. Schmidt, Kyle Sherman, Petr Šíma, Jasdev Singh, Maxim Smirnov, Ryan Stone, Daniel Hollis Tavares, and all of the &lt;a class=&#34;link&#34; href=&#34;https://www.pointfree.co&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Point-Free&lt;/a&gt; subscribers 😁.&lt;/p&gt;
&lt;p&gt;Special thanks to &lt;a class=&#34;link&#34; href=&#34;https://twitter.com/liscio&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Chris Liscio&lt;/a&gt; who helped us work through many strange SwiftUI quirks and helped refine the final API.&lt;/p&gt;
&lt;p&gt;And thanks to &lt;a class=&#34;link&#34; href=&#34;https://github.com/freak4pc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Shai Mishali&lt;/a&gt; and the &lt;a class=&#34;link&#34; href=&#34;https://github.com/CombineCommunity/CombineExt/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CombineCommunity&lt;/a&gt; project, from which we took their implementation of &lt;code&gt;Publishers.Create&lt;/code&gt;, which we use in &lt;code&gt;Effect&lt;/code&gt; to help bridge delegate and callback-based APIs, making it much easier to interface with 3rd party frameworks.&lt;/p&gt;
&lt;h2 id=&#34;other-libraries&#34;&gt;Other libraries
&lt;/h2&gt;&lt;p&gt;The Composable Architecture was built on a foundation of ideas started by other libraries, in particular &lt;a class=&#34;link&#34; href=&#34;https://elm-lang.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Elm&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://redux.js.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Redux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are also many architecture libraries in the Swift and iOS community. Each one of these has their own set of priorities and trade-offs that differ from the Composable Architecture.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/uber/RIBs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RIBs&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ReactiveCocoa/Loop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Loop&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ReSwift/ReSwift&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ReSwift&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/square/workflow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Workflow&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ReactorKit/ReactorKit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ReactorKit&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NoTests/RxFeedback.swift&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RxFeedback&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/spotify/mobius.swift&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mobius.swift&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;details&gt;
&lt;summary&gt;And more&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/RPallas92/PromisedArchitectureKit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PromisedArchitectureKit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;This library is released under the MIT license. See &lt;a class=&#34;link&#34; href=&#34;LICENSE&#34; &gt;LICENSE&lt;/a&gt; for details.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>the-art-of-command-line</title>
        <link>https://producthunt.programnotes.cn/en/p/the-art-of-command-line/</link>
        <pubDate>Sun, 03 Aug 2025 15:29:56 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/the-art-of-command-line/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1450501719076-a6d5e3e780e5?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTQyMDYxMjV8&amp;ixlib=rb-4.1.0" alt="Featured image of post the-art-of-command-line" /&gt;&lt;h1 id=&#34;jlevythe-art-of-command-line&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/jlevy/the-art-of-command-line&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;jlevy/the-art-of-command-line&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;🌍
&lt;em&gt;&lt;a class=&#34;link&#34; href=&#34;README-cs.md&#34; &gt;Čeština&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-de.md&#34; &gt;Deutsch&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-el.md&#34; &gt;Ελληνικά&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README.md&#34; &gt;English&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-es.md&#34; &gt;Español&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-fr.md&#34; &gt;Français&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-id.md&#34; &gt;Indonesia&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-it.md&#34; &gt;Italiano&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-ja.md&#34; &gt;日本語&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-ko.md&#34; &gt;한국어&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-pl.md&#34; &gt;polski&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-pt.md&#34; &gt;Português&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-ro.md&#34; &gt;Română&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-ru.md&#34; &gt;Русский&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-sl.md&#34; &gt;Slovenščina&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-uk.md&#34; &gt;Українська&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-zh.md&#34; &gt;简体中文&lt;/a&gt; ∙ &lt;a class=&#34;link&#34; href=&#34;README-zh-Hant.md&#34; &gt;繁體中文&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h1 id=&#34;the-art-of-command-line&#34;&gt;The Art of Command Line
&lt;/h1&gt;&lt;p&gt;&lt;em&gt;Note: I&amp;rsquo;m planning to revise this and looking for a new co-author to help with expanding this into a more comprehensive guide. While it&amp;rsquo;s very popular, it could be broader and a bit deeper. If you like to write and are close to being an expert on this material and willing to consider helping, please drop me a note at josh (0x40) holloway.com. –&lt;a class=&#34;link&#34; href=&#34;https://github.com/jlevy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;jlevy&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://www.holloway.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Holloway&lt;/a&gt;. Thank you!&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#meta&#34; &gt;Meta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#basics&#34; &gt;Basics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#everyday-use&#34; &gt;Everyday use&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#processing-files-and-data&#34; &gt;Processing files and data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#system-debugging&#34; &gt;System debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#one-liners&#34; &gt;One-liners&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#obscure-but-useful&#34; &gt;Obscure but useful&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#macos-only&#34; &gt;macOS only&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#windows-only&#34; &gt;Windows only&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#more-resources&#34; &gt;More resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#disclaimer&#34; &gt;Disclaimer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/cowsay.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;curl -s ‘https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md’ | egrep -o ‘\w&amp;#43;’ | tr -d ‘`’ | cowsay -W50&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Fluency on the command line is a skill often neglected or considered arcane, but it improves your flexibility and productivity as an engineer in both obvious and subtle ways. This is a selection of notes and tips on using the command-line that we&amp;rsquo;ve found useful when working on Linux. Some tips are elementary, and some are fairly specific, sophisticated, or obscure. This page is not long, but if you can use and recall all the items here, you know a lot.&lt;/p&gt;
&lt;p&gt;This work is the result of &lt;a class=&#34;link&#34; href=&#34;AUTHORS.md&#34; &gt;many authors and translators&lt;/a&gt;.
Some of this
&lt;a class=&#34;link&#34; href=&#34;http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;originally&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;appeared&lt;/a&gt;
on &lt;a class=&#34;link&#34; href=&#34;http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Quora&lt;/a&gt;,
but it has since moved to GitHub, where people more talented than the original author have made numerous improvements.
&lt;a class=&#34;link&#34; href=&#34;https://airtable.com/shrzMhx00YiIVAWJg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Please submit a question&lt;/strong&gt;&lt;/a&gt; if you have a question related to the command line. &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/CONTRIBUTING.md&#34; &gt;&lt;strong&gt;Please contribute&lt;/strong&gt;&lt;/a&gt; if you see an error or something that could be better!&lt;/p&gt;
&lt;h2 id=&#34;meta&#34;&gt;Meta
&lt;/h2&gt;&lt;p&gt;Scope:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This guide is for both beginners and experienced users. The goals are &lt;em&gt;breadth&lt;/em&gt; (everything important), &lt;em&gt;specificity&lt;/em&gt; (give concrete examples of the most common case), and &lt;em&gt;brevity&lt;/em&gt; (avoid things that aren&amp;rsquo;t essential or digressions you can easily look up elsewhere). Every tip is essential in some situation or significantly saves time over alternatives.&lt;/li&gt;
&lt;li&gt;This is written for Linux, with the exception of the &amp;ldquo;&lt;a class=&#34;link&#34; href=&#34;#macos-only&#34; &gt;macOS only&lt;/a&gt;&amp;rdquo; and &amp;ldquo;&lt;a class=&#34;link&#34; href=&#34;#windows-only&#34; &gt;Windows only&lt;/a&gt;&amp;rdquo; sections. Many of the other items apply or can be installed on other Unices or macOS (or even Cygwin).&lt;/li&gt;
&lt;li&gt;The focus is on interactive Bash, though many tips apply to other shells and to general Bash scripting.&lt;/li&gt;
&lt;li&gt;It includes both &amp;ldquo;standard&amp;rdquo; Unix commands as well as ones that require special package installs &amp;ndash; so long as they are important enough to merit inclusion.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To keep this to one page, content is implicitly included by reference. You&amp;rsquo;re smart enough to look up more detail elsewhere once you know the idea or command to Google. Use &lt;code&gt;apt&lt;/code&gt;, &lt;code&gt;yum&lt;/code&gt;, &lt;code&gt;dnf&lt;/code&gt;, &lt;code&gt;pacman&lt;/code&gt;, &lt;code&gt;pip&lt;/code&gt; or &lt;code&gt;brew&lt;/code&gt; (as appropriate) to install new programs.&lt;/li&gt;
&lt;li&gt;Use &lt;a class=&#34;link&#34; href=&#34;http://explainshell.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Explainshell&lt;/a&gt; to get a helpful breakdown of what commands, options, pipes etc. do.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;basics&#34;&gt;Basics
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Learn basic Bash. Actually, type &lt;code&gt;man bash&lt;/code&gt; and at least skim the whole thing; it&amp;rsquo;s pretty easy to follow and not that long. Alternate shells can be nice, but Bash is powerful and always available (learning &lt;em&gt;only&lt;/em&gt; zsh, fish, etc., while tempting on your own laptop, restricts you in many situations, such as using existing servers).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Learn at least one text-based editor well. The &lt;code&gt;nano&lt;/code&gt; editor is one of the simplest for basic editing (opening, editing, saving, searching). However, for the power user in a text terminal, there is no substitute for Vim (&lt;code&gt;vi&lt;/code&gt;), the hard-to-learn but venerable, fast, and full-featured editor. Many people also use the classic Emacs, particularly for larger editing tasks. (Of course, any modern software developer working on an extensive project is unlikely to use only a pure text-based editor and should also be familiar with modern graphical IDEs and tools.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Finding documentation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Know how to read official documentation with &lt;code&gt;man&lt;/code&gt; (for the inquisitive, &lt;code&gt;man man&lt;/code&gt; lists the section numbers, e.g. 1 is &amp;ldquo;regular&amp;rdquo; commands, 5 is files/conventions, and 8 are for administration). Find man pages with &lt;code&gt;apropos&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Know that some commands are not executables, but Bash builtins, and that you can get help on them with &lt;code&gt;help&lt;/code&gt; and &lt;code&gt;help -d&lt;/code&gt;. You can find out whether a command is an executable, shell builtin or an alias by using &lt;code&gt;type command&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;curl cheat.sh/command&lt;/code&gt; will give a brief &amp;ldquo;cheat sheet&amp;rdquo; with common examples of how to use a shell command.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Learn about redirection of output and input using &lt;code&gt;&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;&lt;/code&gt; and pipes using &lt;code&gt;|&lt;/code&gt;. Know &lt;code&gt;&amp;gt;&lt;/code&gt; overwrites the output file and &lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt; appends. Learn about stdout and stderr.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Learn about file glob expansion with &lt;code&gt;*&lt;/code&gt; (and perhaps &lt;code&gt;?&lt;/code&gt; and &lt;code&gt;[&lt;/code&gt;&amp;hellip;&lt;code&gt;]&lt;/code&gt;) and quoting and the difference between double &lt;code&gt;&amp;quot;&lt;/code&gt; and single &lt;code&gt;&#39;&lt;/code&gt; quotes. (See more on variable expansion below.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Be familiar with Bash job management: &lt;code&gt;&amp;amp;&lt;/code&gt;, &lt;strong&gt;ctrl-z&lt;/strong&gt;, &lt;strong&gt;ctrl-c&lt;/strong&gt;, &lt;code&gt;jobs&lt;/code&gt;, &lt;code&gt;fg&lt;/code&gt;, &lt;code&gt;bg&lt;/code&gt;, &lt;code&gt;kill&lt;/code&gt;, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know &lt;code&gt;ssh&lt;/code&gt;, and the basics of passwordless authentication, via &lt;code&gt;ssh-agent&lt;/code&gt;, &lt;code&gt;ssh-add&lt;/code&gt;, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Basic file management: &lt;code&gt;ls&lt;/code&gt; and &lt;code&gt;ls -l&lt;/code&gt; (in particular, learn what every column in &lt;code&gt;ls -l&lt;/code&gt; means), &lt;code&gt;less&lt;/code&gt;, &lt;code&gt;head&lt;/code&gt;, &lt;code&gt;tail&lt;/code&gt; and &lt;code&gt;tail -f&lt;/code&gt; (or even better, &lt;code&gt;less +F&lt;/code&gt;), &lt;code&gt;ln&lt;/code&gt; and &lt;code&gt;ln -s&lt;/code&gt; (learn the differences and advantages of hard versus soft links), &lt;code&gt;chown&lt;/code&gt;, &lt;code&gt;chmod&lt;/code&gt;, &lt;code&gt;du&lt;/code&gt; (for a quick summary of disk usage: &lt;code&gt;du -hs *&lt;/code&gt;). For filesystem management, &lt;code&gt;df&lt;/code&gt;, &lt;code&gt;mount&lt;/code&gt;, &lt;code&gt;fdisk&lt;/code&gt;, &lt;code&gt;mkfs&lt;/code&gt;, &lt;code&gt;lsblk&lt;/code&gt;. Learn what an inode is (&lt;code&gt;ls -i&lt;/code&gt; or &lt;code&gt;df -i&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Basic network management: &lt;code&gt;ip&lt;/code&gt; or &lt;code&gt;ifconfig&lt;/code&gt;, &lt;code&gt;dig&lt;/code&gt;, &lt;code&gt;traceroute&lt;/code&gt;, &lt;code&gt;route&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Learn and use a version control management system, such as &lt;code&gt;git&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know regular expressions well, and the various flags to &lt;code&gt;grep&lt;/code&gt;/&lt;code&gt;egrep&lt;/code&gt;. The &lt;code&gt;-i&lt;/code&gt;, &lt;code&gt;-o&lt;/code&gt;, &lt;code&gt;-v&lt;/code&gt;, &lt;code&gt;-A&lt;/code&gt;, &lt;code&gt;-B&lt;/code&gt;, and &lt;code&gt;-C&lt;/code&gt; options are worth knowing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Learn to use &lt;code&gt;apt-get&lt;/code&gt;, &lt;code&gt;yum&lt;/code&gt;, &lt;code&gt;dnf&lt;/code&gt; or &lt;code&gt;pacman&lt;/code&gt; (depending on distro) to find and install packages. And make sure you have &lt;code&gt;pip&lt;/code&gt; to install Python-based command-line tools (a few below are easiest to install via &lt;code&gt;pip&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;everyday-use&#34;&gt;Everyday use
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In Bash, use &lt;strong&gt;Tab&lt;/strong&gt; to complete arguments or list all available commands and &lt;strong&gt;ctrl-r&lt;/strong&gt; to search through command history (after pressing, type to search, press &lt;strong&gt;ctrl-r&lt;/strong&gt; repeatedly to cycle through more matches, press &lt;strong&gt;Enter&lt;/strong&gt; to execute the found command, or hit the right arrow to put the result in the current line to allow editing).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In Bash, use &lt;strong&gt;ctrl-w&lt;/strong&gt; to delete the last word, and &lt;strong&gt;ctrl-u&lt;/strong&gt; to delete the content from current cursor back to the start of the line. Use &lt;strong&gt;alt-b&lt;/strong&gt; and &lt;strong&gt;alt-f&lt;/strong&gt; to move by word, &lt;strong&gt;ctrl-a&lt;/strong&gt; to move cursor to beginning of line,  &lt;strong&gt;ctrl-e&lt;/strong&gt; to move cursor to end of line, &lt;strong&gt;ctrl-k&lt;/strong&gt; to kill to the end of the line, &lt;strong&gt;ctrl-l&lt;/strong&gt; to clear the screen. See &lt;code&gt;man readline&lt;/code&gt; for all the default keybindings in Bash. There are a lot. For example &lt;strong&gt;alt-.&lt;/strong&gt; cycles through previous arguments, and &lt;strong&gt;alt-&lt;/strong&gt;* expands a glob.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Alternatively, if you love vi-style key-bindings, use &lt;code&gt;set -o vi&lt;/code&gt; (and &lt;code&gt;set -o emacs&lt;/code&gt; to put it back).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For editing long commands, after setting your editor (for example &lt;code&gt;export EDITOR=vim&lt;/code&gt;), &lt;strong&gt;ctrl-x&lt;/strong&gt; &lt;strong&gt;ctrl-e&lt;/strong&gt; will open the current command in an editor for multi-line editing. Or in vi style, &lt;strong&gt;escape-v&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To see recent commands, use &lt;code&gt;history&lt;/code&gt;. Follow with &lt;code&gt;!n&lt;/code&gt; (where &lt;code&gt;n&lt;/code&gt; is the command number) to execute again. There are also many abbreviations you can use, the most useful probably being &lt;code&gt;!$&lt;/code&gt; for last argument and &lt;code&gt;!!&lt;/code&gt; for last command (see &amp;ldquo;HISTORY EXPANSION&amp;rdquo; in the man page). However, these are often easily replaced with &lt;strong&gt;ctrl-r&lt;/strong&gt; and &lt;strong&gt;alt-.&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go to your home directory with &lt;code&gt;cd&lt;/code&gt;. Access files relative to your home directory with the &lt;code&gt;~&lt;/code&gt; prefix (e.g. &lt;code&gt;~/.bashrc&lt;/code&gt;). In &lt;code&gt;sh&lt;/code&gt; scripts refer to the home directory as &lt;code&gt;$HOME&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To go back to the previous working directory: &lt;code&gt;cd -&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you are halfway through typing a command but change your mind, hit &lt;strong&gt;alt-#&lt;/strong&gt; to add a &lt;code&gt;#&lt;/code&gt; at the beginning and enter it as a comment (or use &lt;strong&gt;ctrl-a&lt;/strong&gt;, &lt;strong&gt;#&lt;/strong&gt;, &lt;strong&gt;enter&lt;/strong&gt;). You can then return to it later via command history.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;xargs&lt;/code&gt; (or &lt;code&gt;parallel&lt;/code&gt;). It&amp;rsquo;s very powerful. Note you can control how many items execute per line (&lt;code&gt;-L&lt;/code&gt;) as well as parallelism (&lt;code&gt;-P&lt;/code&gt;). If you&amp;rsquo;re not sure if it&amp;rsquo;ll do the right thing, use &lt;code&gt;xargs echo&lt;/code&gt; first. Also, &lt;code&gt;-I{}&lt;/code&gt; is handy. Examples:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      find . -name &lt;span class=&#34;s1&#34;&gt;&amp;#39;*.py&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs grep some_function
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      cat hosts &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs -I&lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; ssh root@&lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; hostname
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;pstree -p&lt;/code&gt; is a helpful display of the process tree.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;pgrep&lt;/code&gt; and &lt;code&gt;pkill&lt;/code&gt; to find or signal processes by name (&lt;code&gt;-f&lt;/code&gt; is helpful).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know the various signals you can send processes. For example, to suspend a process, use &lt;code&gt;kill -STOP [pid]&lt;/code&gt;. For the full list, see &lt;code&gt;man 7 signal&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;nohup&lt;/code&gt; or &lt;code&gt;disown&lt;/code&gt; if you want a background process to keep running forever.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check what processes are listening via &lt;code&gt;netstat -lntp&lt;/code&gt; or &lt;code&gt;ss -plat&lt;/code&gt; (for TCP; add &lt;code&gt;-u&lt;/code&gt; for UDP) or &lt;code&gt;lsof -iTCP -sTCP:LISTEN -P -n&lt;/code&gt; (which also works on macOS).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;See also &lt;code&gt;lsof&lt;/code&gt; and &lt;code&gt;fuser&lt;/code&gt; for open sockets and files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;See &lt;code&gt;uptime&lt;/code&gt; or &lt;code&gt;w&lt;/code&gt; to know how long the system has been running.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;alias&lt;/code&gt; to create shortcuts for commonly used commands. For example, &lt;code&gt;alias ll=&#39;ls -latr&#39;&lt;/code&gt; creates a new alias &lt;code&gt;ll&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Save aliases, shell settings, and functions you commonly use in &lt;code&gt;~/.bashrc&lt;/code&gt;, and &lt;a class=&#34;link&#34; href=&#34;http://superuser.com/a/183980/7106&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;arrange for login shells to source it&lt;/a&gt;. This will make your setup available in all your shell sessions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Put the settings of environment variables as well as commands that should be executed when you login in &lt;code&gt;~/.bash_profile&lt;/code&gt;. Separate configuration will be needed for shells you launch from graphical environment logins and &lt;code&gt;cron&lt;/code&gt; jobs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Synchronize your configuration files (e.g. &lt;code&gt;.bashrc&lt;/code&gt; and &lt;code&gt;.bash_profile&lt;/code&gt;) among various computers with Git.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Understand that care is needed when variables and filenames include whitespace. Surround your Bash variables with quotes, e.g. &lt;code&gt;&amp;quot;$FOO&amp;quot;&lt;/code&gt;. Prefer the &lt;code&gt;-0&lt;/code&gt; or &lt;code&gt;-print0&lt;/code&gt; options to enable null characters to delimit filenames, e.g. &lt;code&gt;locate -0 pattern | xargs -0 ls -al&lt;/code&gt; or &lt;code&gt;find / -print0 -type d | xargs -0 ls -al&lt;/code&gt;. To iterate on filenames containing whitespace in a for loop, set your IFS to be a newline only using &lt;code&gt;IFS=$&#39;\n&#39;&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In Bash scripts, use &lt;code&gt;set -x&lt;/code&gt; (or the variant &lt;code&gt;set -v&lt;/code&gt;, which logs raw input, including unexpanded variables and comments) for debugging output. Use strict modes unless you have a good reason not to: Use &lt;code&gt;set -e&lt;/code&gt; to abort on errors (nonzero exit code). Use &lt;code&gt;set -u&lt;/code&gt; to detect unset variable usages. Consider &lt;code&gt;set -o pipefail&lt;/code&gt; too, to abort on errors within pipes (though read up on it more if you do, as this topic is a bit subtle). For more involved scripts, also use &lt;code&gt;trap&lt;/code&gt; on EXIT or ERR. A useful habit is to start a script like this, which will make it detect and abort on common errors and print a message:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; -euo pipefail
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nb&#34;&gt;trap&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;echo &amp;#39;error: Script failed: see failed command above&amp;#39;&amp;#34;&lt;/span&gt; ERR
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;In Bash scripts, subshells (written with parentheses) are convenient ways to group commands. A common example is to temporarily move to a different working directory, e.g.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# do something in current dir&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /some/other/dir &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; other-command&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# continue in original dir&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In Bash, note there are lots of kinds of variable expansion. Checking a variable exists: &lt;code&gt;${name:?error message}&lt;/code&gt;. For example, if a Bash script requires a single argument, just write &lt;code&gt;input_file=${1:?usage: $0 input_file}&lt;/code&gt;. Using a default value if a variable is empty: &lt;code&gt;${name:-default}&lt;/code&gt;. If you want to have an additional (optional) parameter added to the previous example, you can use something like &lt;code&gt;output_file=${2:-logfile}&lt;/code&gt;. If &lt;code&gt;$2&lt;/code&gt; is omitted and thus empty, &lt;code&gt;output_file&lt;/code&gt; will be set to &lt;code&gt;logfile&lt;/code&gt;. Arithmetic expansion: &lt;code&gt;i=$(( (i + 1) % 5 ))&lt;/code&gt;. Sequences: &lt;code&gt;{1..10}&lt;/code&gt;. Trimming of strings: &lt;code&gt;${var%suffix}&lt;/code&gt; and &lt;code&gt;${var#prefix}&lt;/code&gt;. For example if &lt;code&gt;var=foo.pdf&lt;/code&gt;, then &lt;code&gt;echo ${var%.pdf}.txt&lt;/code&gt; prints &lt;code&gt;foo.txt&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Brace expansion using &lt;code&gt;{&lt;/code&gt;&amp;hellip;&lt;code&gt;}&lt;/code&gt; can reduce having to re-type similar text and automate combinations of items.  This is helpful in examples like &lt;code&gt;mv foo.{txt,pdf} some-dir&lt;/code&gt; (which moves both files), &lt;code&gt;cp somefile{,.bak}&lt;/code&gt; (which expands to &lt;code&gt;cp somefile somefile.bak&lt;/code&gt;) or &lt;code&gt;mkdir -p test-{a,b,c}/subtest-{1,2,3}&lt;/code&gt; (which expands all possible combinations and creates a directory tree). Brace expansion is performed before any other expansion.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The order of expansions is: brace expansion; tilde expansion, parameter and variable expansion, arithmetic expansion, and command substitution (done in a left-to-right fashion); word splitting; and filename expansion. (For example, a range like &lt;code&gt;{1..20}&lt;/code&gt; cannot be expressed with variables using &lt;code&gt;{$a..$b}&lt;/code&gt;. Use &lt;code&gt;seq&lt;/code&gt; or a &lt;code&gt;for&lt;/code&gt; loop instead, e.g., &lt;code&gt;seq $a $b&lt;/code&gt; or &lt;code&gt;for((i=a; i&amp;lt;=b; i++)); do ... ; done&lt;/code&gt;.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The output of a command can be treated like a file via &lt;code&gt;&amp;lt;(some command)&lt;/code&gt; (known as process substitution). For example, compare local &lt;code&gt;/etc/hosts&lt;/code&gt; with a remote one:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      diff /etc/hosts &amp;lt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ssh somehost cat /etc/hosts&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;When writing scripts you may want to put all of your code in curly braces. If the closing brace is missing, your script will be prevented from executing due to a syntax error. This makes sense when your script is going to be downloaded from the web, since it prevents partially downloaded scripts from executing:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# Your code here&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;A &amp;ldquo;here document&amp;rdquo; allows &lt;a class=&#34;link&#34; href=&#34;https://www.tldp.org/LDP/abs/html/here-docs.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;redirection of multiple lines of input&lt;/a&gt; as if from a file:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;lt;&amp;lt;EOF
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;input
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;on multiple lines
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EOF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In Bash, redirect both standard output and standard error via: &lt;code&gt;some-command &amp;gt;logfile 2&amp;gt;&amp;amp;1&lt;/code&gt; or &lt;code&gt;some-command &amp;amp;&amp;gt;logfile&lt;/code&gt;. Often, to ensure a command does not leave an open file handle to standard input, tying it to the terminal you are in, it is also good practice to add &lt;code&gt;&amp;lt;/dev/null&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;man ascii&lt;/code&gt; for a good ASCII table, with hex and decimal values. For general encoding info, &lt;code&gt;man unicode&lt;/code&gt;, &lt;code&gt;man utf-8&lt;/code&gt;, and &lt;code&gt;man latin1&lt;/code&gt; are helpful.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;screen&lt;/code&gt; or &lt;a class=&#34;link&#34; href=&#34;https://tmux.github.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;tmux&lt;/code&gt;&lt;/a&gt; to multiplex the screen, especially useful on remote ssh sessions and to detach and re-attach to a session. &lt;code&gt;byobu&lt;/code&gt; can enhance screen or tmux by providing more information and easier management. A more minimal alternative for session persistence only is &lt;a class=&#34;link&#34; href=&#34;https://github.com/bogner/dtach&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;dtach&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In ssh, knowing how to port tunnel with &lt;code&gt;-L&lt;/code&gt; or &lt;code&gt;-D&lt;/code&gt; (and occasionally &lt;code&gt;-R&lt;/code&gt;) is useful, e.g. to access web sites from a remote server.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It can be useful to make a few optimizations to your ssh configuration; for example, this &lt;code&gt;~/.ssh/config&lt;/code&gt; contains settings to avoid dropped connections in certain network environments, uses compression (which is helpful with scp over low-bandwidth connections), and multiplex channels to the same server with a local control file:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      TCPKeepAlive=yes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ServerAliveInterval=15
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ServerAliveCountMax=6
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      Compression=yes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ControlMaster auto
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ControlPath /tmp/%r@%h:%p
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ControlPersist yes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A few other options relevant to ssh are security sensitive and should be enabled with care, e.g. per subnet or host or in trusted networks: &lt;code&gt;StrictHostKeyChecking=no&lt;/code&gt;, &lt;code&gt;ForwardAgent=yes&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Consider &lt;a class=&#34;link&#34; href=&#34;https://mosh.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;mosh&lt;/code&gt;&lt;/a&gt; an alternative to ssh that uses UDP, avoiding dropped connections and adding convenience on the road (requires server-side setup).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To get the permissions on a file in octal form, which is useful for system configuration but not available in &lt;code&gt;ls&lt;/code&gt; and easy to bungle, use something like&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      stat -c &lt;span class=&#34;s1&#34;&gt;&amp;#39;%A %a %n&amp;#39;&lt;/span&gt; /etc/timezone
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For interactive selection of values from the output of another command, use &lt;a class=&#34;link&#34; href=&#34;https://github.com/mooz/percol&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;percol&lt;/code&gt;&lt;/a&gt; or &lt;a class=&#34;link&#34; href=&#34;https://github.com/junegunn/fzf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;fzf&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For interaction with files based on the output of another command (like &lt;code&gt;git&lt;/code&gt;), use &lt;code&gt;fpp&lt;/code&gt; (&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/PathPicker&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PathPicker&lt;/a&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For a simple web server for all files in the current directory (and subdirs), available to anyone on your network, use:
&lt;code&gt;python -m SimpleHTTPServer 7777&lt;/code&gt; (for port 7777 and Python 2) and &lt;code&gt;python -m http.server 7777&lt;/code&gt; (for port 7777 and Python 3).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For running a command as another user, use &lt;code&gt;sudo&lt;/code&gt;. Defaults to running as root; use &lt;code&gt;-u&lt;/code&gt; to specify another user. Use &lt;code&gt;-i&lt;/code&gt; to login as that user (you will be asked for &lt;em&gt;your&lt;/em&gt; password).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For switching the shell to another user, use &lt;code&gt;su username&lt;/code&gt; or &lt;code&gt;su - username&lt;/code&gt;. The latter with &amp;ldquo;-&amp;rdquo; gets an environment as if another user just logged in. Omitting the username defaults to root. You will be asked for the password &lt;em&gt;of the user you are switching to&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know about the &lt;a class=&#34;link&#34; href=&#34;https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;128K limit&lt;/a&gt; on command lines. This &amp;ldquo;Argument list too long&amp;rdquo; error is common when wildcard matching large numbers of files. (When this happens alternatives like &lt;code&gt;find&lt;/code&gt; and &lt;code&gt;xargs&lt;/code&gt; may help.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For a basic calculator (and of course access to Python in general), use the &lt;code&gt;python&lt;/code&gt; interpreter. For example,&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;&amp;gt;&amp;gt; 2+3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;processing-files-and-data&#34;&gt;Processing files and data
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;To locate a file by name in the current directory, &lt;code&gt;find . -iname &#39;*something*&#39;&lt;/code&gt; (or similar). To find a file anywhere by name, use &lt;code&gt;locate something&lt;/code&gt; (but bear in mind &lt;code&gt;updatedb&lt;/code&gt; may not have indexed recently created files).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For general searching through source or data files, there are several options more advanced or faster than &lt;code&gt;grep -r&lt;/code&gt;, including (in rough order from older to newer) &lt;a class=&#34;link&#34; href=&#34;https://github.com/beyondgrep/ack2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;ack&lt;/code&gt;&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggreer/the_silver_searcher&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;ag&lt;/code&gt;&lt;/a&gt; (&amp;ldquo;the silver searcher&amp;rdquo;), and &lt;a class=&#34;link&#34; href=&#34;https://github.com/BurntSushi/ripgrep&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;rg&lt;/code&gt;&lt;/a&gt; (ripgrep).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To convert HTML to text: &lt;code&gt;lynx -dump -stdin&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For Markdown, HTML, and all kinds of document conversion, try &lt;a class=&#34;link&#34; href=&#34;http://pandoc.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;pandoc&lt;/code&gt;&lt;/a&gt;. For example, to convert a Markdown document to Word format: &lt;code&gt;pandoc README.md --from markdown --to docx -o temp.docx&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you must handle XML, &lt;code&gt;xmlstarlet&lt;/code&gt; is old but good.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For JSON, use &lt;a class=&#34;link&#34; href=&#34;http://stedolan.github.io/jq/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;jq&lt;/code&gt;&lt;/a&gt;. For interactive use, also see &lt;a class=&#34;link&#34; href=&#34;https://github.com/simeji/jid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;jid&lt;/code&gt;&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://github.com/fiatjaf/jiq&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;jiq&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For YAML, use &lt;a class=&#34;link&#34; href=&#34;https://github.com/0k/shyaml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;shyaml&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For Excel or CSV files, &lt;a class=&#34;link&#34; href=&#34;https://github.com/onyxfish/csvkit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;csvkit&lt;/a&gt; provides &lt;code&gt;in2csv&lt;/code&gt;, &lt;code&gt;csvcut&lt;/code&gt;, &lt;code&gt;csvjoin&lt;/code&gt;, &lt;code&gt;csvgrep&lt;/code&gt;, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For Amazon S3, &lt;a class=&#34;link&#34; href=&#34;https://github.com/s3tools/s3cmd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;s3cmd&lt;/code&gt;&lt;/a&gt; is convenient and &lt;a class=&#34;link&#34; href=&#34;https://github.com/bloomreach/s4cmd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;s4cmd&lt;/code&gt;&lt;/a&gt; is faster. Amazon&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/aws/aws-cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;aws&lt;/code&gt;&lt;/a&gt; and the improved &lt;a class=&#34;link&#34; href=&#34;https://github.com/donnemartin/saws&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;saws&lt;/code&gt;&lt;/a&gt; are essential for other AWS-related tasks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know about &lt;code&gt;sort&lt;/code&gt; and &lt;code&gt;uniq&lt;/code&gt;, including uniq&amp;rsquo;s &lt;code&gt;-u&lt;/code&gt; and &lt;code&gt;-d&lt;/code&gt; options &amp;ndash; see one-liners below. See also &lt;code&gt;comm&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know about &lt;code&gt;cut&lt;/code&gt;, &lt;code&gt;paste&lt;/code&gt;, and &lt;code&gt;join&lt;/code&gt; to manipulate text files. Many people use &lt;code&gt;cut&lt;/code&gt; but forget about &lt;code&gt;join&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know about &lt;code&gt;wc&lt;/code&gt; to count newlines (&lt;code&gt;-l&lt;/code&gt;), characters (&lt;code&gt;-m&lt;/code&gt;), words (&lt;code&gt;-w&lt;/code&gt;) and bytes (&lt;code&gt;-c&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know about &lt;code&gt;tee&lt;/code&gt; to copy from stdin to a file and also to stdout, as in &lt;code&gt;ls -al | tee file.txt&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For more complex calculations, including grouping, reversing fields, and statistical calculations, consider &lt;a class=&#34;link&#34; href=&#34;https://www.gnu.org/software/datamash/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;datamash&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know that locale affects a lot of command line tools in subtle ways, including sorting order (collation) and performance. Most Linux installations will set &lt;code&gt;LANG&lt;/code&gt; or other locale variables to a local setting like US English. But be aware sorting will change if you change locale. And know i18n routines can make sort or other commands run &lt;em&gt;many times&lt;/em&gt; slower. In some situations (such as the set operations or uniqueness operations below) you can safely ignore slow i18n routines entirely and use traditional byte-based sort order, using &lt;code&gt;export LC_ALL=C&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can set a specific command&amp;rsquo;s environment by prefixing its invocation with the environment variable settings, as in &lt;code&gt;TZ=Pacific/Fiji date&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know basic &lt;code&gt;awk&lt;/code&gt; and &lt;code&gt;sed&lt;/code&gt; for simple data munging. See &lt;a class=&#34;link&#34; href=&#34;#one-liners&#34; &gt;One-liners&lt;/a&gt; for examples.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To replace all occurrences of a string in place, in one or more files:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      perl -pi.bak -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/old-string/new-string/g&amp;#39;&lt;/span&gt; my-files-*.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;To rename multiple files and/or search and replace within files, try &lt;a class=&#34;link&#34; href=&#34;https://github.com/jlevy/repren&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;repren&lt;/code&gt;&lt;/a&gt;. (In some cases the &lt;code&gt;rename&lt;/code&gt; command also allows multiple renames, but be careful as its functionality is not the same on all Linux distributions.)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# Full rename of filenames, directories, and contents foo -&amp;gt; bar:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      repren --full --preserve-case --from foo --to bar .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# Recover backup files whatever.bak -&amp;gt; whatever:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      repren --renames --from &lt;span class=&#34;s1&#34;&gt;&amp;#39;(.*)\.bak&amp;#39;&lt;/span&gt; --to &lt;span class=&#34;s1&#34;&gt;&amp;#39;\1&amp;#39;&lt;/span&gt; *.bak
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# Same as above, using rename, if available:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      rename &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/\.bak$//&amp;#39;&lt;/span&gt; *.bak
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;As the man page says, &lt;code&gt;rsync&lt;/code&gt; really is a fast and extraordinarily versatile file copying tool. It&amp;rsquo;s known for synchronizing between machines but is equally useful locally. When security restrictions allow, using &lt;code&gt;rsync&lt;/code&gt; instead of &lt;code&gt;scp&lt;/code&gt; allows recovery of a transfer without restarting from scratch. It also is among the &lt;a class=&#34;link&#34; href=&#34;https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;fastest ways&lt;/a&gt; to delete large numbers of files:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir empty &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; rsync -r --delete empty/ some-dir &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; rmdir some-dir
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For monitoring progress when processing files, use &lt;a class=&#34;link&#34; href=&#34;http://www.ivarch.com/programs/pv.shtml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;pv&lt;/code&gt;&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/dmerejkowsky/pycp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;pycp&lt;/code&gt;&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/dspinellis/pmonitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;pmonitor&lt;/code&gt;&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/Xfennec/progress&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;progress&lt;/code&gt;&lt;/a&gt;, &lt;code&gt;rsync --progress&lt;/code&gt;, or, for block-level copying, &lt;code&gt;dd status=progress&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;shuf&lt;/code&gt; to shuffle or select random lines from a file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know &lt;code&gt;sort&lt;/code&gt;&amp;rsquo;s options. For numbers, use &lt;code&gt;-n&lt;/code&gt;, or &lt;code&gt;-h&lt;/code&gt; for handling human-readable numbers (e.g. from &lt;code&gt;du -h&lt;/code&gt;). Know how keys work (&lt;code&gt;-t&lt;/code&gt; and &lt;code&gt;-k&lt;/code&gt;). In particular, watch out that you need to write &lt;code&gt;-k1,1&lt;/code&gt; to sort by only the first field; &lt;code&gt;-k1&lt;/code&gt; means sort according to the whole line. Stable sort (&lt;code&gt;sort -s&lt;/code&gt;) can be useful. For example, to sort first by field 2, then secondarily by field 1, you can use &lt;code&gt;sort -k1,1 | sort -s -k2,2&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you ever need to write a tab literal in a command line in Bash (e.g. for the -t argument to sort), press &lt;strong&gt;ctrl-v&lt;/strong&gt; &lt;strong&gt;[Tab]&lt;/strong&gt; or write &lt;code&gt;$&#39;\t&#39;&lt;/code&gt; (the latter is better as you can copy/paste it).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The standard tools for patching source code are &lt;code&gt;diff&lt;/code&gt; and &lt;code&gt;patch&lt;/code&gt;. See also &lt;code&gt;diffstat&lt;/code&gt; for summary statistics of a diff and &lt;code&gt;sdiff&lt;/code&gt; for a side-by-side diff. Note &lt;code&gt;diff -r&lt;/code&gt; works for entire directories. Use &lt;code&gt;diff -r tree1 tree2 | diffstat&lt;/code&gt; for a summary of changes. Use &lt;code&gt;vimdiff&lt;/code&gt; to compare and edit files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For binary files, use &lt;code&gt;hd&lt;/code&gt;, &lt;code&gt;hexdump&lt;/code&gt; or &lt;code&gt;xxd&lt;/code&gt; for simple hex dumps and &lt;code&gt;bvi&lt;/code&gt;, &lt;code&gt;hexedit&lt;/code&gt; or &lt;code&gt;biew&lt;/code&gt; for binary editing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Also for binary files, &lt;code&gt;strings&lt;/code&gt; (plus &lt;code&gt;grep&lt;/code&gt;, etc.) lets you find bits of text.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For binary diffs (delta compression), use &lt;code&gt;xdelta3&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To convert text encodings, try &lt;code&gt;iconv&lt;/code&gt;. Or &lt;code&gt;uconv&lt;/code&gt; for more advanced use; it supports some advanced Unicode things. For example:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# Displays hex codes or actual names of characters (useful for debugging):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      uconv -f utf-8 -t utf-8 -x &lt;span class=&#34;s1&#34;&gt;&amp;#39;::Any-Hex;&amp;#39;&lt;/span&gt; &amp;lt; input.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      uconv -f utf-8 -t utf-8 -x &lt;span class=&#34;s1&#34;&gt;&amp;#39;::Any-Name;&amp;#39;&lt;/span&gt; &amp;lt; input.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# Lowercase and removes all accents (by expanding and dropping them):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      uconv -f utf-8 -t utf-8 -x &lt;span class=&#34;s1&#34;&gt;&amp;#39;::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] &amp;gt;; ::Any-NFC;&amp;#39;&lt;/span&gt; &amp;lt; input.txt &amp;gt; output.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;To split files into pieces, see &lt;code&gt;split&lt;/code&gt; (to split by size) and &lt;code&gt;csplit&lt;/code&gt; (to split by a pattern).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Date and time: To get the current date and time in the helpful &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/ISO_8601&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ISO 8601&lt;/a&gt; format, use &lt;code&gt;date -u +&amp;quot;%Y-%m-%dT%H:%M:%SZ&amp;quot;&lt;/code&gt; (other options &lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/questions/7216358/date-command-on-os-x-doesnt-have-iso-8601-i-option&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;are&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://unix.stackexchange.com/questions/164826/date-command-iso-8601-option&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;problematic&lt;/a&gt;). To manipulate date and time expressions, use &lt;code&gt;dateadd&lt;/code&gt;, &lt;code&gt;datediff&lt;/code&gt;, &lt;code&gt;strptime&lt;/code&gt; etc. from &lt;a class=&#34;link&#34; href=&#34;http://www.fresse.org/dateutils/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;dateutils&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;zless&lt;/code&gt;, &lt;code&gt;zmore&lt;/code&gt;, &lt;code&gt;zcat&lt;/code&gt;, and &lt;code&gt;zgrep&lt;/code&gt; to operate on compressed files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;File attributes are settable via &lt;code&gt;chattr&lt;/code&gt; and offer a lower-level alternative to file permissions. For example, to protect against accidental file deletion the immutable flag:  &lt;code&gt;sudo chattr +i /critical/directory/or/file&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;getfacl&lt;/code&gt; and &lt;code&gt;setfacl&lt;/code&gt; to save and restore file permissions. For example:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   getfacl -R /some/path &amp;gt; permissions.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   setfacl --restore&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;permissions.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;To create empty files quickly, use &lt;code&gt;truncate&lt;/code&gt; (creates &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Sparse_file&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sparse file&lt;/a&gt;), &lt;code&gt;fallocate&lt;/code&gt; (ext4, xfs, btrfs and ocfs2 filesystems), &lt;code&gt;xfs_mkfile&lt;/code&gt; (almost any filesystems, comes in xfsprogs package), &lt;code&gt;mkfile&lt;/code&gt; (for Unix-like systems like Solaris, Mac OS).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;system-debugging&#34;&gt;System debugging
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For web debugging, &lt;code&gt;curl&lt;/code&gt; and &lt;code&gt;curl -I&lt;/code&gt; are handy, or their &lt;code&gt;wget&lt;/code&gt; equivalents, or the more modern &lt;a class=&#34;link&#34; href=&#34;https://github.com/jkbrzt/httpie&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;httpie&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To know current cpu/disk status, the classic tools are &lt;code&gt;top&lt;/code&gt; (or the better &lt;code&gt;htop&lt;/code&gt;), &lt;code&gt;iostat&lt;/code&gt;, and &lt;code&gt;iotop&lt;/code&gt;. Use &lt;code&gt;iostat -mxz 15&lt;/code&gt; for basic CPU and detailed per-partition disk stats and performance insight.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For network connection details, use &lt;code&gt;netstat&lt;/code&gt; and &lt;code&gt;ss&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For a quick overview of what&amp;rsquo;s happening on a system, &lt;code&gt;dstat&lt;/code&gt; is especially useful. For broadest overview with details, use &lt;a class=&#34;link&#34; href=&#34;https://github.com/nicolargo/glances&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;glances&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To know memory status, run and understand the output of &lt;code&gt;free&lt;/code&gt; and &lt;code&gt;vmstat&lt;/code&gt;. In particular, be aware the &amp;ldquo;cached&amp;rdquo; value is memory held by the Linux kernel as file cache, so effectively counts toward the &amp;ldquo;free&amp;rdquo; value.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Java system debugging is a different kettle of fish, but a simple trick on Oracle&amp;rsquo;s and some other JVMs is that you can run &lt;code&gt;kill -3 &amp;lt;pid&amp;gt;&lt;/code&gt; and a full stack trace and heap summary (including generational garbage collection details, which can be highly informative) will be dumped to stderr/logs. The JDK&amp;rsquo;s &lt;code&gt;jps&lt;/code&gt;, &lt;code&gt;jstat&lt;/code&gt;, &lt;code&gt;jstack&lt;/code&gt;, &lt;code&gt;jmap&lt;/code&gt; are useful. &lt;a class=&#34;link&#34; href=&#34;https://github.com/aragozin/jvm-tools&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SJK tools&lt;/a&gt; are more advanced.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;a class=&#34;link&#34; href=&#34;http://www.bitwizard.nl/mtr/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;mtr&lt;/code&gt;&lt;/a&gt; as a better traceroute, to identify network issues.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For looking at why a disk is full, &lt;a class=&#34;link&#34; href=&#34;https://dev.yorhel.nl/ncdu&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;ncdu&lt;/code&gt;&lt;/a&gt; saves time over the usual commands like &lt;code&gt;du -sh *&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To find which socket or process is using bandwidth, try &lt;a class=&#34;link&#34; href=&#34;http://www.ex-parrot.com/~pdw/iftop/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;iftop&lt;/code&gt;&lt;/a&gt; or &lt;a class=&#34;link&#34; href=&#34;https://github.com/raboof/nethogs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;nethogs&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;ab&lt;/code&gt; tool (comes with Apache) is helpful for quick-and-dirty checking of web server performance. For more complex load testing, try &lt;code&gt;siege&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For more serious network debugging, &lt;a class=&#34;link&#34; href=&#34;https://wireshark.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;wireshark&lt;/code&gt;&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;tshark&lt;/code&gt;&lt;/a&gt;, or &lt;a class=&#34;link&#34; href=&#34;http://ngrep.sourceforge.net/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;ngrep&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know about &lt;code&gt;strace&lt;/code&gt; and &lt;code&gt;ltrace&lt;/code&gt;. These can be helpful if a program is failing, hanging, or crashing, and you don&amp;rsquo;t know why, or if you want to get a general idea of performance. Note the profiling option (&lt;code&gt;-c&lt;/code&gt;), and the ability to attach to a running process (&lt;code&gt;-p&lt;/code&gt;). Use trace child option (&lt;code&gt;-f&lt;/code&gt;) to avoid missing important calls.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know about &lt;code&gt;ldd&lt;/code&gt; to check shared libraries etc — but &lt;a class=&#34;link&#34; href=&#34;http://www.catonmat.net/blog/ldd-arbitrary-code-execution/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;never run it on untrusted files&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Know how to connect to a running process with &lt;code&gt;gdb&lt;/code&gt; and get its stack traces.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;/proc&lt;/code&gt;. It&amp;rsquo;s amazingly helpful sometimes when debugging live problems. Examples: &lt;code&gt;/proc/cpuinfo&lt;/code&gt;, &lt;code&gt;/proc/meminfo&lt;/code&gt;, &lt;code&gt;/proc/cmdline&lt;/code&gt;, &lt;code&gt;/proc/xxx/cwd&lt;/code&gt;, &lt;code&gt;/proc/xxx/exe&lt;/code&gt;, &lt;code&gt;/proc/xxx/fd/&lt;/code&gt;, &lt;code&gt;/proc/xxx/smaps&lt;/code&gt; (where &lt;code&gt;xxx&lt;/code&gt; is the process id or pid).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When debugging why something went wrong in the past, &lt;a class=&#34;link&#34; href=&#34;http://sebastien.godard.pagesperso-orange.fr/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;sar&lt;/code&gt;&lt;/a&gt; can be very helpful. It shows historic statistics on CPU, memory, network, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For deeper systems and performance analyses, look at &lt;code&gt;stap&lt;/code&gt; (&lt;a class=&#34;link&#34; href=&#34;https://sourceware.org/systemtap/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SystemTap&lt;/a&gt;), &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Perf_%28Linux%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;perf&lt;/code&gt;&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://github.com/draios/sysdig&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;sysdig&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check what OS you&amp;rsquo;re on with &lt;code&gt;uname&lt;/code&gt; or &lt;code&gt;uname -a&lt;/code&gt; (general Unix/kernel info) or &lt;code&gt;lsb_release -a&lt;/code&gt; (Linux distro info).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;dmesg&lt;/code&gt; whenever something&amp;rsquo;s acting really funny (it could be hardware or driver issues).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you delete a file and it doesn&amp;rsquo;t free up expected disk space as reported by &lt;code&gt;du&lt;/code&gt;, check whether the file is in use by a process:
&lt;code&gt;lsof | grep deleted | grep &amp;quot;filename-of-my-big-file&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;one-liners&#34;&gt;One-liners
&lt;/h2&gt;&lt;p&gt;A few examples of piecing together commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It is remarkably helpful sometimes that you can do set intersection, union, and difference of text files via &lt;code&gt;sort&lt;/code&gt;/&lt;code&gt;uniq&lt;/code&gt;. Suppose &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt; are text files that are already uniqued. This is fast, and works on files of arbitrary size, up to many gigabytes. (Sort is not limited by memory, though you may need to use the &lt;code&gt;-T&lt;/code&gt; option if &lt;code&gt;/tmp&lt;/code&gt; is on a small root partition.) See also the note about &lt;code&gt;LC_ALL&lt;/code&gt; above and &lt;code&gt;sort&lt;/code&gt;&amp;rsquo;s &lt;code&gt;-u&lt;/code&gt; option (left out for clarity below).&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      sort a b &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; uniq &amp;gt; c   &lt;span class=&#34;c1&#34;&gt;# c is a union b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      sort a b &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; uniq -d &amp;gt; c   &lt;span class=&#34;c1&#34;&gt;# c is a intersect b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      sort a b b &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; uniq -u &amp;gt; c   &lt;span class=&#34;c1&#34;&gt;# c is set difference a - b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Pretty-print two JSON files, normalizing their syntax, then coloring and paginating the result:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      diff &amp;lt;(jq --sort-keys . &amp;lt; file1.json) &amp;lt;(jq --sort-keys . &amp;lt; file2.json) | colordiff | less -R
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;grep . *&lt;/code&gt; to quickly examine the contents of all files in a directory (so each line is paired with the filename), or &lt;code&gt;head -100 *&lt;/code&gt; (so each file has a heading). This can be useful for directories filled with config settings like those in &lt;code&gt;/sys&lt;/code&gt;, &lt;code&gt;/proc&lt;/code&gt;, &lt;code&gt;/etc&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Summing all numbers in the third column of a text file (this is probably 3X faster and 3X less code than equivalent Python):&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{ x += $3 } END { print x }&amp;#39;&lt;/span&gt; myfile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;To see sizes/dates on a tree of files, this is like a recursive &lt;code&gt;ls -l&lt;/code&gt; but is easier to read than &lt;code&gt;ls -lR&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      find . -type f -ls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Say you have a text file, like a web server log, and a certain value that appears on some lines, such as an &lt;code&gt;acct_id&lt;/code&gt; parameter that is present in the URL. If you want a tally of how many requests for each &lt;code&gt;acct_id&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      egrep -o &lt;span class=&#34;s1&#34;&gt;&amp;#39;acct_id=[0-9]+&amp;#39;&lt;/span&gt; access.log &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -d&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; -f2 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; uniq -c &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort -rn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;To continuously monitor changes, use &lt;code&gt;watch&lt;/code&gt;, e.g. check changes to files in a directory with &lt;code&gt;watch -d -n 2 &#39;ls -rtlh | tail&#39;&lt;/code&gt; or to network settings while troubleshooting your wifi settings with &lt;code&gt;watch -d -n 2 ifconfig&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run this function to get a random tip from this document (parses Markdown and extracts an item):&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; taocl&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          sed &lt;span class=&#34;s1&#34;&gt;&amp;#39;/cowsay[.]png/d&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          pandoc -f markdown -t html &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          xmlstarlet fo --html --dropdtd &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          xmlstarlet sel -t -v &lt;span class=&#34;s2&#34;&gt;&amp;#34;(html/body/ul/li[count(p)&amp;gt;0])[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$RANDOM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; mod last()+1]&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          xmlstarlet unesc &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; fmt -80 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; iconv -t US
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;obscure-but-useful&#34;&gt;Obscure but useful
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;expr&lt;/code&gt;: perform arithmetic or boolean operations or evaluate regular expressions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;m4&lt;/code&gt;: simple macro processor&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;yes&lt;/code&gt;: print a string a lot&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cal&lt;/code&gt;: nice calendar&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;env&lt;/code&gt;: run a command (useful in scripts)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;printenv&lt;/code&gt;: print out environment variables (useful in debugging and scripts)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;look&lt;/code&gt;: find English words (or lines in a file) beginning with a string&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cut&lt;/code&gt;, &lt;code&gt;paste&lt;/code&gt; and &lt;code&gt;join&lt;/code&gt;: data manipulation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;fmt&lt;/code&gt;: format text paragraphs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;pr&lt;/code&gt;: format text into pages/columns&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;fold&lt;/code&gt;: wrap lines of text&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;column&lt;/code&gt;: format text fields into aligned, fixed-width columns or tables&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;expand&lt;/code&gt; and &lt;code&gt;unexpand&lt;/code&gt;: convert between tabs and spaces&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;nl&lt;/code&gt;: add line numbers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;seq&lt;/code&gt;: print numbers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;bc&lt;/code&gt;: calculator&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;factor&lt;/code&gt;: factor integers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://gnupg.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;gpg&lt;/code&gt;&lt;/a&gt;: encrypt and sign files&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;toe&lt;/code&gt;: table of terminfo entries&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;nc&lt;/code&gt;: network debugging and data transfer&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;socat&lt;/code&gt;: socket relay and tcp port forwarder (similar to &lt;code&gt;netcat&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mattthias/slurm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;slurm&lt;/code&gt;&lt;/a&gt;: network traffic visualization&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;dd&lt;/code&gt;: moving data between files or devices&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;file&lt;/code&gt;: identify type of a file&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;tree&lt;/code&gt;: display directories and subdirectories as a nesting tree; like &lt;code&gt;ls&lt;/code&gt; but recursive&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;stat&lt;/code&gt;: file info&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;time&lt;/code&gt;: execute and time a command&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;timeout&lt;/code&gt;: execute a command for specified amount of time and stop the process when the specified amount of time completes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;lockfile&lt;/code&gt;: create semaphore file that can only be removed by &lt;code&gt;rm -f&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;logrotate&lt;/code&gt;: rotate, compress and mail logs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;watch&lt;/code&gt;: run a command repeatedly, showing results and/or highlighting changes&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/joh/when-changed&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;when-changed&lt;/code&gt;&lt;/a&gt;: runs any command you specify whenever it sees file changed. See &lt;code&gt;inotifywait&lt;/code&gt; and &lt;code&gt;entr&lt;/code&gt; as well.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;tac&lt;/code&gt;: print files in reverse&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;comm&lt;/code&gt;: compare sorted files line by line&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;strings&lt;/code&gt;: extract text from binary files&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;tr&lt;/code&gt;: character translation or manipulation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;iconv&lt;/code&gt; or &lt;code&gt;uconv&lt;/code&gt;: conversion for text encodings&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;split&lt;/code&gt; and &lt;code&gt;csplit&lt;/code&gt;: splitting files&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;sponge&lt;/code&gt;: read all input before writing it, useful for reading from then writing to the same file, e.g., &lt;code&gt;grep -v something some-file | sponge some-file&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;units&lt;/code&gt;: unit conversions and calculations; converts furlongs per fortnight to twips per blink (see also &lt;code&gt;/usr/share/units/definitions.units&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;apg&lt;/code&gt;: generates random passwords&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;xz&lt;/code&gt;: high-ratio file compression&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ldd&lt;/code&gt;: dynamic library info&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;nm&lt;/code&gt;: symbols from object files&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ab&lt;/code&gt; or &lt;a class=&#34;link&#34; href=&#34;https://github.com/wg/wrk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;wrk&lt;/code&gt;&lt;/a&gt;: benchmarking web servers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;strace&lt;/code&gt;: system call debugging&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;http://www.bitwizard.nl/mtr/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;mtr&lt;/code&gt;&lt;/a&gt;: better traceroute for network debugging&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cssh&lt;/code&gt;: visual concurrent shell&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rsync&lt;/code&gt;: sync files and folders over SSH or in local file system&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://wireshark.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;wireshark&lt;/code&gt;&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;tshark&lt;/code&gt;&lt;/a&gt;: packet capture and network debugging&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;http://ngrep.sourceforge.net/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;ngrep&lt;/code&gt;&lt;/a&gt;: grep for the network layer&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;host&lt;/code&gt; and &lt;code&gt;dig&lt;/code&gt;: DNS lookups&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;lsof&lt;/code&gt;: process file descriptor and socket info&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;dstat&lt;/code&gt;: useful system stats&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nicolargo/glances&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;glances&lt;/code&gt;&lt;/a&gt;: high level, multi-subsystem overview&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;iostat&lt;/code&gt;: Disk usage stats&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;mpstat&lt;/code&gt;: CPU usage stats&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;vmstat&lt;/code&gt;: Memory usage stats&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;htop&lt;/code&gt;: improved version of top&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;last&lt;/code&gt;: login history&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;w&lt;/code&gt;: who&amp;rsquo;s logged on&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;id&lt;/code&gt;: user/group identity info&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;http://sebastien.godard.pagesperso-orange.fr/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;sar&lt;/code&gt;&lt;/a&gt;: historic system stats&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;http://www.ex-parrot.com/~pdw/iftop/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;iftop&lt;/code&gt;&lt;/a&gt; or &lt;a class=&#34;link&#34; href=&#34;https://github.com/raboof/nethogs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;nethogs&lt;/code&gt;&lt;/a&gt;: network utilization by socket or process&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ss&lt;/code&gt;: socket statistics&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;dmesg&lt;/code&gt;: boot and system error messages&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;sysctl&lt;/code&gt;: view and configure Linux kernel parameters at run time&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;hdparm&lt;/code&gt;: SATA/ATA disk manipulation/performance&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;lsblk&lt;/code&gt;: list block devices: a tree view of your disks and disk partitions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;lshw&lt;/code&gt;, &lt;code&gt;lscpu&lt;/code&gt;, &lt;code&gt;lspci&lt;/code&gt;, &lt;code&gt;lsusb&lt;/code&gt;, &lt;code&gt;dmidecode&lt;/code&gt;: hardware information, including CPU, BIOS, RAID, graphics, devices, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;lsmod&lt;/code&gt; and &lt;code&gt;modinfo&lt;/code&gt;: List and show details of kernel modules.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;fortune&lt;/code&gt;, &lt;code&gt;ddate&lt;/code&gt;, and &lt;code&gt;sl&lt;/code&gt;: um, well, it depends on whether you consider steam locomotives and Zippy quotations &amp;ldquo;useful&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;macos-only&#34;&gt;macOS only
&lt;/h2&gt;&lt;p&gt;These are items relevant &lt;em&gt;only&lt;/em&gt; on macOS.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Package management with &lt;code&gt;brew&lt;/code&gt; (Homebrew) and/or &lt;code&gt;port&lt;/code&gt; (MacPorts). These can be used to install on macOS many of the above commands.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copy output of any command to a desktop app with &lt;code&gt;pbcopy&lt;/code&gt; and paste input from one with &lt;code&gt;pbpaste&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To enable the Option key in macOS Terminal as an alt key (such as used in the commands above like &lt;strong&gt;alt-b&lt;/strong&gt;, &lt;strong&gt;alt-f&lt;/strong&gt;, etc.), open Preferences -&amp;gt; Profiles -&amp;gt; Keyboard and select &amp;ldquo;Use Option as Meta key&amp;rdquo;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To open a file with a desktop app, use &lt;code&gt;open&lt;/code&gt; or &lt;code&gt;open -a /Applications/Whatever.app&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Spotlight: Search files with &lt;code&gt;mdfind&lt;/code&gt; and list metadata (such as photo EXIF info) with &lt;code&gt;mdls&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Be aware macOS is based on BSD Unix, and many commands (for example &lt;code&gt;ps&lt;/code&gt;, &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;tail&lt;/code&gt;, &lt;code&gt;awk&lt;/code&gt;, &lt;code&gt;sed&lt;/code&gt;) have many subtle variations from Linux, which is largely influenced by System V-style Unix and GNU tools. You can often tell the difference by noting a man page has the heading &amp;ldquo;BSD General Commands Manual.&amp;rdquo; In some cases GNU versions can be installed, too (such as &lt;code&gt;gawk&lt;/code&gt; and &lt;code&gt;gsed&lt;/code&gt; for GNU awk and sed). If writing cross-platform Bash scripts, avoid such commands (for example, consider Python or &lt;code&gt;perl&lt;/code&gt;) or test carefully.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To get macOS release information, use &lt;code&gt;sw_vers&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;windows-only&#34;&gt;Windows only
&lt;/h2&gt;&lt;p&gt;These items are relevant &lt;em&gt;only&lt;/em&gt; on Windows.&lt;/p&gt;
&lt;h3 id=&#34;ways-to-obtain-unix-tools-under-windows&#34;&gt;Ways to obtain Unix tools under Windows
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Access the power of the Unix shell under Microsoft Windows by installing &lt;a class=&#34;link&#34; href=&#34;https://cygwin.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cygwin&lt;/a&gt;. Most of the things described in this document will work out of the box.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On Windows 10, you can use &lt;a class=&#34;link&#34; href=&#34;https://msdn.microsoft.com/commandline/wsl/about&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Windows Subsystem for Linux (WSL)&lt;/a&gt;, which provides a familiar Bash environment with Unix command line utilities.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you mainly want to use GNU developer tools (such as GCC) on Windows, consider &lt;a class=&#34;link&#34; href=&#34;http://www.mingw.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MinGW&lt;/a&gt; and its &lt;a class=&#34;link&#34; href=&#34;http://www.mingw.org/wiki/msys&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MSYS&lt;/a&gt; package, which provides utilities such as bash, gawk, make and grep. MSYS doesn&amp;rsquo;t have all the features compared to Cygwin. MinGW is particularly useful for creating native Windows ports of Unix tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Another option to get Unix look and feel under Windows is &lt;a class=&#34;link&#34; href=&#34;https://github.com/dthree/cash&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cash&lt;/a&gt;. Note that only very few Unix commands and command-line options are available in this environment.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;useful-windows-command-line-tools&#34;&gt;Useful Windows command-line tools
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;You can perform and script most Windows system administration tasks from the command line by learning and using &lt;code&gt;wmic&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Native command-line Windows networking tools you may find useful include &lt;code&gt;ping&lt;/code&gt;, &lt;code&gt;ipconfig&lt;/code&gt;, &lt;code&gt;tracert&lt;/code&gt;, and &lt;code&gt;netstat&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can perform &lt;a class=&#34;link&#34; href=&#34;http://www.thewindowsclub.com/rundll32-shortcut-commands-windows&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;many useful Windows tasks&lt;/a&gt; by invoking the &lt;code&gt;Rundll32&lt;/code&gt; command.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;cygwin-tips-and-tricks&#34;&gt;Cygwin tips and tricks
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Install additional Unix programs with the Cygwin&amp;rsquo;s package manager.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;mintty&lt;/code&gt; as your command-line window.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Access the Windows clipboard through &lt;code&gt;/dev/clipboard&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run &lt;code&gt;cygstart&lt;/code&gt; to open an arbitrary file through its registered application.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Access the Windows registry with &lt;code&gt;regtool&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Note that a &lt;code&gt;C:\&lt;/code&gt; Windows drive path becomes &lt;code&gt;/cygdrive/c&lt;/code&gt; under Cygwin, and that Cygwin&amp;rsquo;s &lt;code&gt;/&lt;/code&gt; appears under &lt;code&gt;C:\cygwin&lt;/code&gt; on Windows. Convert between Cygwin and Windows-style file paths with &lt;code&gt;cygpath&lt;/code&gt;. This is most useful in scripts that invoke Windows programs.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;more-resources&#34;&gt;More resources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/alebcay/awesome-shell&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;awesome-shell&lt;/a&gt;: A curated list of shell tools and resources.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/herrbischoff/awesome-osx-command-line&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;awesome-osx-command-line&lt;/a&gt;: A more in-depth guide for the macOS command line.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://redsymbol.net/articles/unofficial-bash-strict-mode/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Strict mode&lt;/a&gt; for writing better shell scripts.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/koalaman/shellcheck&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;shellcheck&lt;/a&gt;: A shell script static analysis tool. Essentially, lint for bash/sh/zsh.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://www.dwheeler.com/essays/filenames-in-shell.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Filenames and Pathnames in Shell&lt;/a&gt;: The sadly complex minutiae on how to handle filenames correctly in shell scripts.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://datascienceatthecommandline.com/#tools&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Data Science at the Command Line&lt;/a&gt;: More commands and tools helpful for doing data science, from the book of the same name&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;disclaimer&#34;&gt;Disclaimer
&lt;/h2&gt;&lt;p&gt;With the exception of very small tasks, code is written so others can read it. With power comes responsibility. The fact you &lt;em&gt;can&lt;/em&gt; do something in Bash doesn&amp;rsquo;t necessarily mean you should! ;)&lt;/p&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;http://creativecommons.org/licenses/by-sa/4.0/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://i.creativecommons.org/l/by-sa/4.0/88x31.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Creative Commons License&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This work is licensed under a &lt;a class=&#34;link&#34; href=&#34;http://creativecommons.org/licenses/by-sa/4.0/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Creative Commons Attribution-ShareAlike 4.0 International License&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>focalboard</title>
        <link>https://producthunt.programnotes.cn/en/p/focalboard/</link>
        <pubDate>Thu, 31 Jul 2025 15:35:29 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/focalboard/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1596825644259-5bd73854413d?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTM5NDcyMTB8&amp;ixlib=rb-4.1.0" alt="Featured image of post focalboard" /&gt;&lt;h1 id=&#34;mattermost-communityfocalboard&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mattermost-community/focalboard&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mattermost-community/focalboard&lt;/a&gt;
&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
This repository is currently not maintained. If you&amp;rsquo;re interested in becoming a maintainer please &lt;a class=&#34;link&#34; href=&#34;https://github.com/mattermost-community/focalboard/issues/5038&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;let us know here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This repository only contains standalone Focalboard. If you&amp;rsquo;re looking for the Mattermost plugin please see &lt;a class=&#34;link&#34; href=&#34;https://github.com/mattermost/mattermost-plugin-boards&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mattermost/mattermost-plugin-boards&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&#34;focalboard&#34;&gt;Focalboard
&lt;/h1&gt;&lt;p&gt;&lt;img src=&#34;https://github.com/mattermost/focalboard/actions/workflows/ci.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI Status&#34;
	
	
&gt;
&lt;img src=&#34;https://github.com/mattermost/focalboard/actions/workflows/codeql-analysis.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CodeQL&#34;
	
	
&gt;
&lt;img src=&#34;https://github.com/mattermost/focalboard/actions/workflows/dev-release.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Dev Release&#34;
	
	
&gt;
&lt;img src=&#34;https://github.com/mattermost/focalboard/actions/workflows/prod-release.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Prod Release&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/website/site/static/img/hero.jpg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Focalboard&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Focalboard is an open source, multilingual, self-hosted project management tool that&amp;rsquo;s an alternative to Trello, Notion, and Asana.&lt;/p&gt;
&lt;p&gt;It helps define, organize, track and manage work across individuals and teams. Focalboard comes in two editions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.focalboard.com/docs/personal-edition/desktop/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Personal Desktop&lt;/a&gt;&lt;/strong&gt;: A standalone, single-user &lt;a class=&#34;link&#34; href=&#34;https://apps.apple.com/app/apple-store/id1556908618?pt=2114704&amp;amp;ct=website&amp;amp;mt=8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;macOS&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/store/apps/9NLN2T0SX9VF?cid=website&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Windows&lt;/a&gt;, or &lt;a class=&#34;link&#34; href=&#34;https://www.focalboard.com/download/personal-edition/desktop/#linux-desktop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux&lt;/a&gt; desktop app for your own todos and personal projects.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.focalboard.com/download/personal-edition/ubuntu/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Personal Server&lt;/a&gt;&lt;/strong&gt;: A standalone, multi-user server for development and personal use.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;try-focalboard&#34;&gt;Try Focalboard
&lt;/h2&gt;&lt;h3 id=&#34;personal-desktop-windows-mac-or-linux-desktop&#34;&gt;Personal Desktop (Windows, Mac or Linux Desktop)
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;: Download from the &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/store/productId/9NLN2T0SX9VF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Windows App Store&lt;/a&gt; or download &lt;code&gt;focalboard-win.zip&lt;/code&gt; from the &lt;a class=&#34;link&#34; href=&#34;https://github.com/mattermost/focalboard/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;latest release&lt;/a&gt;, unpack, and run &lt;code&gt;Focalboard.exe&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mac&lt;/strong&gt;: Download from the &lt;a class=&#34;link&#34; href=&#34;https://apps.apple.com/us/app/focalboard-insiders/id1556908618?mt=12&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mac App Store&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux Desktop&lt;/strong&gt;: Download &lt;code&gt;focalboard-linux.tar.gz&lt;/code&gt; from the &lt;a class=&#34;link&#34; href=&#34;https://github.com/mattermost/focalboard/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;latest release&lt;/a&gt;, unpack, and open &lt;code&gt;focalboard-app&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;personal-server&#34;&gt;Personal Server
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Ubuntu&lt;/strong&gt;: You can download and run the compiled Focalboard &lt;strong&gt;Personal Server&lt;/strong&gt; on Ubuntu by following &lt;a class=&#34;link&#34; href=&#34;https://www.focalboard.com/download/personal-edition/ubuntu/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;our latest install guide&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;api-docs&#34;&gt;API Docs
&lt;/h3&gt;&lt;p&gt;Boards API docs can be found over at &lt;a class=&#34;link&#34; href=&#34;https://htmlpreview.github.io/?https://github.com/mattermost/focalboard/blob/main/server/swagger/docs/html/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://htmlpreview.github.io/?https://github.com/mattermost/focalboard/blob/main/server/swagger/docs/html/index.html&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;getting-started&#34;&gt;Getting started
&lt;/h3&gt;&lt;p&gt;Our &lt;a class=&#34;link&#34; href=&#34;https://developers.mattermost.com/contribute/focalboard/personal-server-setup-guide&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;developer guide&lt;/a&gt; has detailed instructions on how to set up your development environment for the &lt;strong&gt;Personal Server&lt;/strong&gt;. You can also join the &lt;a class=&#34;link&#34; href=&#34;https://community.mattermost.com/core/channels/focalboard&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;~Focalboard community channel&lt;/a&gt; to connect with other developers.&lt;/p&gt;
&lt;p&gt;Create an &lt;code&gt;.env&lt;/code&gt; file in the focalboard directory that contains:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EXCLUDE_ENTERPRISE=&amp;#34;1&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To build the server:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make prebuild
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To run the server:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; ./bin/focalboard-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then navigate your browser to &lt;a class=&#34;link&#34; href=&#34;http://localhost:8000&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;http://localhost:8000&lt;/code&gt;&lt;/a&gt; to access your Focalboard server. The port is configured in &lt;code&gt;config.json&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Once the server is running, you can rebuild just the web app via &lt;code&gt;make webapp&lt;/code&gt; in a separate terminal window. Reload your browser to see the changes.&lt;/p&gt;
&lt;h3 id=&#34;building-and-running-standalone-desktop-apps&#34;&gt;Building and running standalone desktop apps
&lt;/h3&gt;&lt;p&gt;You can build standalone apps that package the server to run locally against SQLite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Requires Windows 10, &lt;a class=&#34;link&#34; href=&#34;https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Windows 10 SDK&lt;/a&gt; 10.0.19041.0, and .NET 4.8 developer pack&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Open a &lt;code&gt;git-bash&lt;/code&gt; prompt.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make prebuild&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc.&lt;/li&gt;
&lt;li&gt;Once the prebuild is completed, you can keep repeating the below steps to build the app &amp;amp; see the changes.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make win-wpf-app&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;cd win-wpf/msix &amp;amp;&amp;amp; focalboard.exe&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mac&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Requires macOS 11.3+ and Xcode 13.2.1+&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make prebuild&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc.&lt;/li&gt;
&lt;li&gt;Once the prebuild is completed, you can keep repeating the below steps to build the app &amp;amp; see the changes.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make mac-app&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;open mac/dist/Focalboard.app&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Tested on Ubuntu 18.04&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;webgtk&lt;/code&gt; dependencies
&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;sudo apt-get install libgtk-3-dev&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;sudo apt-get install libwebkit2gtk-4.0-dev&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make prebuild&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc.&lt;/li&gt;
&lt;li&gt;Once the prebuild is completed, you can keep repeating the below steps to build the app &amp;amp; see the changes.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make linux-app&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Uncompress &lt;code&gt;linux/dist/focalboard-linux.tar.gz&lt;/code&gt; to a directory of your choice&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;focalboard-app&lt;/code&gt; from the directory you have chosen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;To run it locally from offical image:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker run -it -p 80:8000 mattermost/focalboard&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;To build it for your current architecture:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker build -f docker/Dockerfile .&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;To build it for a custom architecture (experimental):
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker build -f docker/Dockerfile --platform linux/arm64 .&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cross-compilation currently isn&amp;rsquo;t fully supported, so please build on the appropriate platform. Refer to the GitHub Actions workflows (&lt;code&gt;build-mac.yml&lt;/code&gt;, &lt;code&gt;build-win.yml&lt;/code&gt;, &lt;code&gt;build-ubuntu.yml&lt;/code&gt;) for the detailed list of steps on each platform.&lt;/p&gt;
&lt;h3 id=&#34;unit-testing&#34;&gt;Unit testing
&lt;/h3&gt;&lt;p&gt;Before checking in commits, run &lt;code&gt;make ci&lt;/code&gt;, which is similar to the &lt;code&gt;.gitlab-ci.yml&lt;/code&gt; workflow and includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Server unit tests&lt;/strong&gt;: &lt;code&gt;make server-test&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web app ESLint&lt;/strong&gt;: &lt;code&gt;cd webapp; npm run check&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web app unit tests&lt;/strong&gt;: &lt;code&gt;cd webapp; npm run test&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web app UI tests&lt;/strong&gt;: &lt;code&gt;cd webapp; npm run cypress:ci&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;staying-informed&#34;&gt;Staying informed
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Changes&lt;/strong&gt;: See the &lt;a class=&#34;link&#34; href=&#34;CHANGELOG.md&#34; &gt;CHANGELOG&lt;/a&gt; for the latest updates&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bug Reports&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://github.com/mattermost/focalboard/issues/new?assignees=&amp;amp;labels=bug&amp;amp;template=bug_report.md&amp;amp;title=&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;File a bug report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chat&lt;/strong&gt;: Join the &lt;a class=&#34;link&#34; href=&#34;https://community.mattermost.com/core/channels/focalboard&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;~Focalboard community channel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>tldr</title>
        <link>https://producthunt.programnotes.cn/en/p/tldr/</link>
        <pubDate>Thu, 31 Jul 2025 15:34:46 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/tldr/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1596825644259-5bd73854413d?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTM5NDcyMTB8&amp;ixlib=rb-4.1.0" alt="Featured image of post tldr" /&gt;&lt;h1 id=&#34;tldr-pagestldr&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tldr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tldr-pages/tldr&lt;/a&gt;
&lt;/h1&gt;&lt;!-- markdownlint-disable MD041 --&gt;
&lt;div align=&#34;center&#34;&gt;
  &lt;h1&gt;&lt;a href=&#34;https://tldr.sh/&#34;&gt;&lt;img alt=&#34;tldr-pages&#34; src=&#34;images/banner.png&#34; width=600/&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tldr/actions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/actions/workflow/status/tldr-pages/tldr/ci.yml?branch=main&amp;amp;label=Build&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build status&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://matrix.to/#/#tldr-pages:matrix.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/matrix/tldr-pages:matrix.org?label=Chat&amp;#43;on&amp;#43;Matrix&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Matrix chat&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tldr/pulls?q=is:pr&amp;#43;is:merged&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/issues-pr-closed-raw/tldr-pages/tldr.svg?label=Merged&amp;#43;PRs&amp;amp;color=green&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Merged PRs&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tldr/graphs/contributors&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/contributors-anon/tldr-pages/tldr.svg?label=Contributors&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub contributors&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tldr/blob/main/LICENSE.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/license-CC_BY_4.0-blue.svg?label=License&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;license&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://fosstodon.org/@tldr_pages&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Mastodon-6364FF?logo=mastodon&amp;amp;logoColor=fff&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Mastodon&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&#34;what-is-tldr-pages&#34;&gt;What is tldr-pages?
&lt;/h2&gt;&lt;p&gt;The &lt;strong&gt;tldr-pages&lt;/strong&gt; project is a collection of community-maintained help pages
for command-line tools, that aims to be a simpler, more approachable complement
to traditional &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Man_page&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;man pages&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Maybe you&amp;rsquo;re new to the command-line world. Perhaps you&amp;rsquo;re just a little rusty or can&amp;rsquo;t always recall the arguments for commands like &lt;code&gt;lsof&lt;/code&gt;, or &lt;code&gt;tar&lt;/code&gt;?&lt;/p&gt;
&lt;p&gt;It certainly doesn&amp;rsquo;t help that, in the past, the first option explained in &lt;code&gt;man tar&lt;/code&gt; was:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gp&#34;&gt;$&lt;/span&gt; man tar
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;-b blocksize
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;   Specify the block size, in 512-byte records, for tape drive I/O.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;   As a rule, this argument is only needed when reading from or writing to tape drives,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;   and usually not even then as the default block size of 20 records (10240 bytes) is very common.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;There is room for simpler help pages focused on practical examples.
How about:&lt;/p&gt;
&lt;picture&gt;
    &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;https://github.com/tldr-pages/tldr/blob/main/images/tldr-dark.png&#34;&gt;
    &lt;source media=&#34;(prefers-color-scheme: light)&#34; srcset=&#34;https://github.com/tldr-pages/tldr/blob/main/images/tldr-light.png&#34;&gt;
    &lt;img alt=&#34;Screenshot of the tldr client displaying the tar command.&#34; src=&#34;https://github.com/tldr-pages/tldr/blob/main/images/tldr-dark.png&#34;&gt;
&lt;/picture&gt;
&lt;p&gt;This repository is just that: an ever-growing collection of examples
for the most common UNIX, Linux, macOS, FreeBSD, NetBSD, OpenBSD,
SunOS, Android, Windows, and Cisco IOS command-line tools.&lt;/p&gt;
&lt;h2 id=&#34;how-do-i-use-it&#34;&gt;How do I use it?
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;[!TIP]
For browsing without installing a client on your computer,
see the web client at &lt;a class=&#34;link&#34; href=&#34;https://tldr.inbrowser.app&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://tldr.inbrowser.app&lt;/a&gt; (with offline support using PWA).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A popular and convenient way to access these pages on your computer
is to install the official &lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tldr-python-client&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Python client&lt;/a&gt;, which can be installed via &lt;a class=&#34;link&#34; href=&#34;https://pypi.org/project/tldr/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pip3&lt;/a&gt; (or &lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tldr-python-client#installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;other package managers&lt;/a&gt;):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip3 install tldr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Linux and Mac users can also install the official &lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tlrc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Rust Client&lt;/a&gt; using &lt;a class=&#34;link&#34; href=&#34;https://formulae.brew.sh/formula/tlrc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Homebrew&lt;/a&gt;
(or &lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tlrc#installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;other package managers&lt;/a&gt; on other operating systems):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install tlrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Alternatively, you can also use the official &lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tldr-node-client&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Node.js client&lt;/a&gt;, although it has fallen behind in updates:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g tldr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then you have direct access to simplified, easy-to-read help for commands, such as &lt;code&gt;tar&lt;/code&gt;,
accessible through typing &lt;code&gt;tldr tar&lt;/code&gt; instead of the standard &lt;code&gt;man tar&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t want to install any software, check out the &lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tldr/releases/latest/download/tldr-book.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PDF version&lt;/a&gt; instead.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
PDFs for translations are available for most languages. You can find them in the release assets of the &lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tldr/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;latest release&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are also &lt;strong&gt;various other clients&lt;/strong&gt; provided by the community,
both for the command-line and for other platforms.
For a comprehensive list of clients, head over to our &lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tldr/wiki/Clients&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Wiki&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;how-do-i-contribute-to-tldr-pages&#34;&gt;How do I contribute to tldr-pages?
&lt;/h2&gt;&lt;p&gt;All contributions are welcome!&lt;/p&gt;
&lt;p&gt;Some ways to contribute include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Adding your favorite command that isn&amp;rsquo;t covered.&lt;/li&gt;
&lt;li&gt;Adding examples or improving the content of an existing page.&lt;/li&gt;
&lt;li&gt;Adding requested pages from our issues with the &lt;a class=&#34;link&#34; href=&#34;https://github.com/tldr-pages/tldr/issues?q=is%3Aopen&amp;#43;is%3Aissue&amp;#43;label%3A%22help&amp;#43;wanted%22&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;help wanted&lt;/a&gt; label.&lt;/li&gt;
&lt;li&gt;Translating pages into different languages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All &lt;code&gt;tldr&lt;/code&gt; pages are written in Markdown so that they can be edited quite easily and changes can be submitted in
pull requests here using Git on the command-line or
using the GitHub web interface.&lt;/p&gt;
&lt;p&gt;We strive to maintain a &lt;a class=&#34;link&#34; href=&#34;GOVERNANCE.md&#34; &gt;welcoming and collaborative&lt;/a&gt; community.
If it&amp;rsquo;s your first time contributing, have a look at the &lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;contributing guidelines&lt;/a&gt;, and go ahead!&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;d like to contribute to translations, you can visit &lt;a class=&#34;link&#34; href=&#34;https://lukwebsforge.github.io/tldri18n/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://lukwebsforge.github.io/tldri18n/&lt;/a&gt;
to see the overall progress of all translations, and which translations are missing or outdated.&lt;/p&gt;
&lt;p&gt;You are also welcome to join us on the &lt;a class=&#34;link&#34; href=&#34;https://matrix.to/#/#tldr-pages:matrix.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;matrix chatroom&lt;/a&gt;!&lt;/p&gt;
&lt;h2 id=&#34;similar-projects&#34;&gt;Similar projects
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/command-line-interface-pages&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Command Line Interface Pages&lt;/a&gt;
allows you to write standardized help pages for CLI, directories, and configs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/cheat/cheat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cheat&lt;/a&gt;
allows you to create and view interactive cheatsheets on the command-line.
It was designed to help remind Unix system administrators of options
for commands that they use frequently, but not frequently enough to remember.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://cheat.sh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cheat.sh&lt;/a&gt;
Aggregates cheat sheets from multiple sources (including tldr-pages)
into 1 unified interface.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://devhints.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;devhints&lt;/a&gt;
Rico&amp;rsquo;s cheatsheets are not just focused on the command-line and
include a plethora of other cheatsheets related to programming.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/srsudar/eg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;eg&lt;/a&gt;
provides detailed examples with explanations on the command-line.
Examples come from the repository, but &lt;code&gt;eg&lt;/code&gt; supports displaying
custom examples and commands alongside the defaults.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/gnebbia/kb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;kb&lt;/a&gt;
is a minimalist command-line knowledge base manager.
kb can be used to organize your notes and cheatsheets in a minimalist
and clean way. It also supports non-text files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/denisidoro/navi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;navi&lt;/a&gt;
is an interactive cheatsheet tool, which allows you to browse through
specific examples or complete commands on the fly.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;http://bropages.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;bropages (deprecated)&lt;/a&gt;
are a highly readable supplement to man pages.
It shows concise, common-case examples for Unix commands.
The examples are submitted by the user base, and can be voted up or down;
the best entries are what people see first when they look up a command.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-does-tldr-mean&#34;&gt;What does &amp;ldquo;tldr&amp;rdquo; mean?
&lt;/h2&gt;&lt;p&gt;TL;DR stands for &amp;ldquo;Too Long; Didn&amp;rsquo;t Read&amp;rdquo;.
It originated as Internet slang, where it is used to indicate that a long text
(or parts of it) has been skipped as too lengthy.
Read more in How-To Geek&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://www.howtogeek.com/435266/what-does-tldr-mean-and-how-do-you-use-it/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;article&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Product Hunt Daily | 2025-07-29</title>
        <link>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-07-29/</link>
        <pubDate>Tue, 29 Jul 2025 07:35:48 +0000</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-07-29/</guid>
        <description>&lt;img src="https://ph-files.imgix.net/40554f7f-4760-4338-8225-e8c0f87906ae.png?auto=format&amp;fit=crop&amp;frame=1&amp;h=512&amp;w=1024" alt="Featured image of post Product Hunt Daily | 2025-07-29" /&gt;&lt;h2 id=&#34;1-copycat&#34;&gt;1. CopyCat
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Build browser automations with AI&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: CopyCat is a no-code platform for building browser automations. Using the CopyCat editor, you can automate any web task by combining AI prompts with reliable step-by-step actions.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/SONV2OODJ6RWV3?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/copycat-5?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/40554f7f-4760-4338-8225-e8c0f87906ae.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CopyCat&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: browser automation, no-code automation, AI automation, web automation, CopyCat, AI-powered automation, browser automation tool, no-code platform&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺509&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-07-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-doco&#34;&gt;2. Doco
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Cursor for Microsoft Word&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Doco is an AI writing assistant built natively into Microsoft Word. It combines the power of Grammarly, Cursor, and Co-Pilot—optimized for structured document workflows. Reference any file, create custom projects and workflows - all without leaving Word.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/2UB7O4C6FPDGOA?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/doco-2?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/4211ff7d-3a0f-4721-9b39-26c5d51502ce.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Doco&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI writing assistant, Word plugin, Grammarly alternative, Cursor alternative, Co-Pilot alternative, AI writing tool, document workflow, Microsoft Word add-in, structured writing, AI writing software&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺393&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-07-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-nitrode&#34;&gt;3. Nitrode
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: AI game engine to prototype 3D games in a day&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Nitrode is an AI game engine that empowers devs to vibe code a playable 3D game in a matter of hours. Build the game you’ve always dreamed of but never got the chance to.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/OWHIO5RLFZAWIX?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/nitrode-ai-game-engine?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/fada3ae5-68d8-4212-8a1e-814c5d18ac44.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Nitrode &#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI game engine, 3D game engine, game prototyping, fast game development, AI game development, 3D game prototyping, rapid game development, game development tool, Nitrode&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺335&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-07-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;4-unitree-r1&#34;&gt;4. Unitree R1
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Ultra-lightweight humanoid robot starting at $5900&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Unitree R1 is an ultra-lightweight, fully customizable humanoid robot for education, research, and industry. Features advanced power systems, flexible joints, modular design, and secondary development support.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/2DP2XMX6KXMPDZ?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/unitree-g1?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/f52dcb14-8a03-4a79-b4fc-74f275390094.jpeg?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Unitree R1&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Unitree R1, Humanoid Robot, Lightweight Robot, Customizable Robot, Education Robot, Research Robot, Industry Robot, Modular Robot,  $5900 Robot&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺262&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-07-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;5-ahey&#34;&gt;5. Ahey
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: A free and open-source, embeddable video conference app.&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: A frictionless, peer-to-peer video conferencing app for the web that can be embedded in any webpage. No sign-ups, no downloads, no limits, 100% free and ready to use instantly.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/EE2KWAJVVW76KO?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/ahey-2?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/49cded18-17a6-4dd1-97a3-22b1db0fdf0c.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Ahey&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: video conferencing, web conferencing, embeddable video, peer-to-peer video, open source video conferencing, free video conferencing,  embed video chat,  no signup video call, instant video chat&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺189&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-07-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;6-singify-ai-vocal-remover&#34;&gt;6. Singify AI Vocal Remover
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Remove vocals from any song&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Singify AI Vocal Remover uses advanced 10-stem separation to isolate vocals, drums, bass, piano, guitar, and more. Fast, free, and easy to use, it delivers high-quality results with minimal artifacts—perfect for creators, remixers, and music lovers.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/4CFGCUJSL44AE7?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/singify-ai-vocal-remover?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/502cd3d4-003a-4ed1-bf99-fb7335614247.jpeg?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Singify AI Vocal Remover&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: vocal remover, AI vocal remover, stem separation, music separation, song splitter, vocal isolation, music remix, audio editing, free audio editor, online audio editor&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺147&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-07-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;7-chive&#34;&gt;7. Chive
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: The macOS companion for Claude Code&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Never lose track of Claude Code again. Chive helps you juggle multiple Claude Code instances, showing which are busy, waiting, or need your attention.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/SZY2FJ6OMAAZIX?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/chive?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/ecfad66a-eddc-4404-bf70-2142205f07d3.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Chive&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Claude Code, macOS, AI coding, code management, Claude companion, coding assistant, productivity tool,  multiple instances, task management&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺146&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-07-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;8-guidey&#34;&gt;8. Guidey
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Add modern onboarding tours to your product in minutes&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Guidey is the fastest way to create interactive tours and onboarding flows for your SaaS — no code needed. Boost activation, cut support requests, and guide users straight to the “aha!” moment.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/SAYHWXBTN4AQGJ?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/guidey?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/19b74ff7-6682-42ea-88c3-085b2f1d37fb.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Guidey&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: onboarding, product tour, interactive tutorial, SaaS, no-code, user onboarding, onboarding flow, guidey, activation, user guidance, tutorial&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺136&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-07-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;9-aeneas&#34;&gt;9. Aeneas
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: AI that helps historians connect the past&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Aeneas is a new open-source AI model from Google DeepMind that helps historians restore, date, and place fragmentary ancient inscriptions. It analyzes both text and images to provide new context on ancient texts.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/HRGVFUQRES2DGN?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/aeneas?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/c6d18ef6-3103-4000-9396-a841f9ba05bd.gif?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Aeneas&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Aeneas, AI, historian, ancient inscriptions, text analysis, image analysis, Google DeepMind, open-source, historical research, ancient history, text restoration, dating, inscription placement&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺126&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-07-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;10-web&#34;&gt;10. Web
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: A free macOS AI browser&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Web is built natively with SwiftUI to delivers a minimal, progressive browsing experience with integrated AI capabilities.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/SPP6VB32RA6BZZ?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/products/web-macos-ai-browser-free?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/cbe35e55-82e9-4e1b-8d73-139577f3886b.jpeg?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Web &#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: macOS, AI browser, SwiftUI, free browser, minimal browser, progressive web browser, AI features&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺124&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-07-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
</description>
        </item>
        <item>
        <title>thorium</title>
        <link>https://producthunt.programnotes.cn/en/p/thorium/</link>
        <pubDate>Mon, 07 Jul 2025 15:31:22 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/thorium/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1616506349772-77c088465018?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTE4NzM0MjZ8&amp;ixlib=rb-4.1.0" alt="Featured image of post thorium" /&gt;&lt;h1 id=&#34;alex313031thorium&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/thorium&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alex313031/thorium&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;&lt;img src=&#34;https://img.shields.io/github/v/tag/alex313031/thorium?label=Version%3A&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub tag (latest SemVer)&#34;
	
	
&gt;  &lt;img src=&#34;https://img.shields.io/github/license/alex313031/thorium?color=green&amp;amp;label=License%3A&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub&#34;
	
	
&gt;  &lt;img src=&#34;https://img.shields.io/github/commit-activity/w/alex313031/thorium?color=blueviolet&amp;amp;label=Commit%20Activity%3A&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub commit activity&#34;
	
	
&gt;  &lt;img src=&#34;https://img.shields.io/reddit/subreddit-subscribers/ChromiumBrowser?style=social&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Subreddit subscribers&#34;
	
	
&gt;&lt;/p&gt;
&lt;h1 id=&#34;thorium&#34;&gt;Thorium
&lt;/h1&gt;&lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/NEW/thorium_ver_2048_grey_old.png&#34;&gt;
&lt;h2 id=&#34;chromium-fork-for-linux-named-after-radioactive-element-no-90-windowsmacosraspiandroidother-builds-see-below&#34;&gt;Chromium fork for linux named after &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Thorium&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;radioactive element No. 90&lt;/a&gt;. Windows/MacOS/RasPi/Android/Other builds see below.
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Always built with the latest stable version of &lt;a class=&#34;link&#34; href=&#34;https://www.chromium.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Chromium&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Intended to behave like and have the featureset of Google Chrome, with differences/patches/enhancements listed below.&lt;/li&gt;
&lt;li&gt;Includes &lt;a class=&#34;link&#34; href=&#34;https://www.widevine.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Widevine&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://tools.woolyss.com/html5-audio-video-tester/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;All Codecs&lt;/a&gt;, Chrome Plugins, as well as thinLTO, CFlag, LDFlag, LLVM Loop, and PGO compiler optimizations. It is built with &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/SSE4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SSE4&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Advanced_Vector_Extensions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AVX&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/AES_instruction_set&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AES&lt;/a&gt;, so it won&amp;rsquo;t launch on CPU&amp;rsquo;s below 2nd gen Core or AMD FX, but benefits from Advanced Vector EXtensions. If your CPU lacks AVX, you can use builds from the &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/Thorium-SSE3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Thorium SSE3&lt;/a&gt; repo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;other-builds&#34;&gt;Other Builds  &lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/STAGING/winflag_animated.gif&#34; width=&#34;34&#34;&gt;  &lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/STAGING/AVX2.png&#34; width=&#34;48&#34;&gt;  &lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/STAGING/apple.png&#34; width=&#34;30&#34;&gt;  &lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/STAGING/Android_Robot.svg&#34; width=&#34;26&#34;&gt;  &lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/STAGING/Raspberry_Pi_Logo.svg&#34; width=&#34;24&#34;&gt;  &lt;img src=&#34;https://raw.githubusercontent.com/Alex313031/thorium-win7/main/logos/STAGING/win7/compatible-with-windows-7.png&#34; width=&#34;28&#34;&gt;
&lt;/h3&gt;&lt;p&gt; – Windows builds are here &amp;gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/Thorium-Win&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Thorium Win&lt;/a&gt; &lt;br&gt;
 – AVX2 Builds for Windows and Linux &amp;gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/Thorium-AVX2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Thorium AVX2&lt;/a&gt; &lt;br&gt;
 – MacOS (M1 and X64) builds are located at &amp;gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/Thorium-Mac&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Thorium Mac&lt;/a&gt; &lt;br&gt;
 – Android (arm32 &amp;amp; arm64) builds are located at &amp;gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/Thorium-Android&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Thorium Android&lt;/a&gt; I might also occasionally post x86 builds. &lt;br&gt;
 – Raspberry Pi builds are located at &amp;gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/Thorium-Raspi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Thorium Raspi&lt;/a&gt; For the Pi 3B/3B+ and Pi 4/400. &lt;br&gt;
 – Special builds are located at &amp;gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/Thorium-SSE3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Thorium Special&lt;/a&gt; You can find SSE3 builds for CPUs without AVX here. &lt;br&gt;
 – Thorium Website with deb repo for auto-updating on Linux &amp;gt; &lt;a class=&#34;link&#34; href=&#34;https://thorium.rocks/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://thorium.rocks/&lt;/a&gt; &lt;br&gt;
 – &lt;strong&gt;NEW&lt;/strong&gt;: Windows 7 / 8 / 8.1 / Server 2012 builds in &amp;gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/thorium-win7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Thorium Win7&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;features--differences-between-chromium-and-thorium&#34;&gt;FEATURES &amp;amp; DIFFERENCES BETWEEN CHROMIUM AND THORIUM &lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/NEW/bulb_light.svg#gh-dark-mode-only&#34;&gt; &lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/NEW/bulb_dark.svg#gh-light-mode-only&#34;&gt;
&lt;/h3&gt;&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Various compiler flags that improve performance and target &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Advanced_Vector_Extensions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AVX&lt;/a&gt; CPU&amp;rsquo;s (read &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/thorium/blob/main/docs/PATCHES.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PATCHES.md&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Experimental &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MPEG-DASH&lt;/a&gt; support.&lt;/li&gt;
&lt;li&gt;HEVC/H.265 support on Linux and Windows.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://jpeg.org/jpegxl/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;JPEG XL&lt;/a&gt; Image File Format support restored and turned on by default.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/File_Transfer_Protocol&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FTP&lt;/a&gt; URL support restored and enabled by default.&lt;/li&gt;
&lt;li&gt;Enable &lt;a class=&#34;link&#34; href=&#34;https://support.google.com/chrome/answer/10538231?hl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Live Caption&lt;/a&gt; (SODA) on all builds.&lt;/li&gt;
&lt;li&gt;Experimental PDF annotation support (called &amp;ldquo;Ink&amp;rdquo; on ChromiumOS). # DISABLED FOR NOW BECAUSE OF CRASHES.&lt;/li&gt;
&lt;li&gt;Patches from Debian including font rendering patch, VAAPI Patch, Intel HD support patch, native notifications patch, title bar patch, and&amp;hellip; the VDPAU Patch!! (Rejoice Nvidia users)&lt;/li&gt;
&lt;li&gt;Linux audio sandbox patch.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/DNS_over_HTTPS&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DoH&lt;/a&gt; (DNS over HTTPS) patches from Bromite.&lt;/li&gt;
&lt;li&gt;Enable &lt;a class=&#34;link&#34; href=&#34;https://allaboutdnt.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Do Not Track&lt;/a&gt; by default patch from Vanadium.&lt;/li&gt;
&lt;li&gt;Show full URLs including trailing slashes in address bar by default.&lt;/li&gt;
&lt;li&gt;Disable &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FLOC&lt;/a&gt; patch.&lt;/li&gt;
&lt;li&gt;Disable annoying Google API Key Infobar warning (you can still use API Keys to enable sync) from Ungoogled Chromium.&lt;/li&gt;
&lt;li&gt;Disable annoying Default Browser Infobar warning.&lt;/li&gt;
&lt;li&gt;Disable annoying IPH (In Product Help) promos.&lt;/li&gt;
&lt;li&gt;Adds &lt;a class=&#34;link&#34; href=&#34;https://duckduckgo.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DuckDuckGo&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://search.brave.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Brave Search&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://www.ecosia.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ecosia&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://www.ask.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ask.com&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://yandex.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Yandex.com&lt;/a&gt; in US and other locales, along with the normal search engines.&lt;/li&gt;
&lt;li&gt;Always use the local NTP (New Tab Page) regardless of search engine.&lt;/li&gt;
&lt;li&gt;Fix icons when distilling page content in &lt;a class=&#34;link&#34; href=&#34;https://www.howtogeek.com/423643/how-to-use-google-chromes-hidden-reader-mode/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reader Mode&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Enable new Menu UI when right clicking the Reload button. (Adds &amp;lsquo;Normal Reload&amp;rsquo;, &amp;lsquo;Hard Reload&amp;rsquo;, and &amp;lsquo;Clear Cache and Hard Reload&amp;rsquo;)&lt;/li&gt;
&lt;li&gt;Home button, Chrome Labs button, and Bookmarks bar shown by default.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.chromium.org/developers/design-documents/dns-prefetching/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Prefetch&lt;/a&gt; settings updated to respect privacy.&lt;/li&gt;
&lt;li&gt;Patches for &lt;a class=&#34;link&#34; href=&#34;https://chromium.googlesource.com/chromium/src/tools/gn/&amp;#43;/48062805e19b4697c5fbd926dc649c78b6aaa138/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GN&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://chromium.googlesource.com/chromium/src/&amp;#43;/HEAD/docs/design/sandbox.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;chrome_sandbox&lt;/a&gt; when building.&lt;/li&gt;
&lt;li&gt;Remove the addition of the Chrome APT sources.list during installation.&lt;/li&gt;
&lt;li&gt;Widevine CDM Patch for Linux.&lt;/li&gt;
&lt;li&gt;GTK auto dark mode patch&lt;/li&gt;
&lt;li&gt;Various new flags either developed from scratch, or added from Ungoogled Chromium. See &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/thorium/blob/main/docs/PATCHES.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PATCHES.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Enable Parallel Downloading by Default.&lt;/li&gt;
&lt;li&gt;Inclusion of &lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/STAGING/pak.png&#34; width=&#34;16&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/thorium/tree/main/pak_src#readme&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pak&lt;/a&gt; a utility for packing and unpacking the &lt;a class=&#34;link&#34; href=&#34;https://textslashplain.com/2022/05/03/chromium-internals-pak-files/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;*.pak&lt;/a&gt; files in Thorium or any other Chromium based browser.&lt;/li&gt;
&lt;li&gt;Logo and Branding/Naming changed to the Thorium logo, Thorium name, and &amp;ldquo;Alex313031&amp;rdquo; being appended to &amp;ldquo;The Chromium Authors&amp;rdquo; in credits, etc.&lt;/li&gt;
&lt;li&gt;.desktop file includes useful cmdline flags that enable experimental or useful features. (See &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/thorium/blob/main/docs/PATCHES.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PATCHES.md&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Includes installer patches and files to include &lt;a class=&#34;link&#34; href=&#34;https://chromedriver.chromium.org/home&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ChromeDriver&lt;/a&gt; and &lt;em&gt;thorium_shell&lt;/em&gt; &lt;a class=&#34;link&#34; href=&#34;https://chromium.googlesource.com/chromium/src/&amp;#43;/HEAD/docs/testing/web_tests_in_content_shell.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;(content_shell)&lt;/a&gt;, with a .desktop file being provided for thorium_shell (named thorium-shell.desktop and shows in desktop environments as Thorium Content Shell). These are also included in the Windows releases, but it doesn&amp;rsquo;t make a shorcut, although a .png and .ico is in the install directory for you to make your own shortcut with an icon. You can also run content_shell with the command thorium-shell (custom wrapper for it, located in /usr/bin/). You can run ChromeDriver at /usr/bin/chromedriver or chromedriver.exe on Windows. Also, patches for abseil library and mini_installer when building with AVX on Windows.&lt;/li&gt;
&lt;li&gt;Right clicking the launcher after install gives three additional desktop actions, one to open thorium-shell, another to open in Safe Mode which disables any flags one has set in chrome://flags until the next launch, and lastly to open in Dark Mode which appends the &amp;ndash;force-dark-mode flag.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;For more info, read the &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/thorium/blob/main/docs/PATCHES.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PATCHES.md&lt;/a&gt; file.&lt;/li&gt;
&lt;li&gt;Known bugs are in the &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/thorium/blob/main/infra/BUGS.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BUGS.md&lt;/a&gt; file.&lt;/li&gt;
&lt;li&gt;A list of Chromium command line flags can be found at &amp;gt; &lt;a class=&#34;link&#34; href=&#34;https://peter.sh/experiments/chromium-command-line-switches&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://peter.sh/experiments/chromium-command-line-switches&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;building&#34;&gt;Building &lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/NEW/build_light.svg#gh-dark-mode-only&#34;&gt; &lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/NEW/build_dark.svg#gh-light-mode-only&#34;&gt;
&lt;/h2&gt;&lt;p&gt;See &amp;gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/thorium/blob/main/docs/BUILDING.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Alex313031/thorium/blob/main/docs/BUILDING.md&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;debugging&#34;&gt;Debugging &lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/STAGING/bug.svg&#34; width=&#34;28&#34;&gt;
&lt;/h2&gt;&lt;p&gt;See &amp;gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/thorium/tree/main/infra/DEBUG#readme&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Alex313031/thorium/tree/main/infra/DEBUG#readme&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt; − &lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/ChromiumBrowser/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.reddit.com/r/ChromiumBrowser/&lt;/a&gt; is a subreddit I made for Thorium and general Thorium/Chromium discussion, &lt;a class=&#34;link&#34; href=&#34;https://thorium.rocks/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://thorium.rocks/&lt;/a&gt; is the website I made for it, and &lt;a class=&#34;link&#34; href=&#34;https://alex313031.blogspot.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://alex313031.blogspot.com/&lt;/a&gt; is a blog I made relating to Thorium/ThoriumOS. &lt;br&gt;
 − I also build ChromiumOS (now called ThoriumOS) with Thorium, Codecs, Widevine, linux-firmware/modules, and extra packages at &amp;gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/ChromiumOS/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Alex313031/ChromiumOS/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; − Thanks to &lt;a class=&#34;link&#34; href=&#34;https://github.com/robrich999/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/robrich999/&lt;/a&gt; for some info and fixes that went into this project.&lt;br&gt;
 − Thanks to &lt;a class=&#34;link&#34; href=&#34;https://github.com/midzer/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/midzer/&lt;/a&gt; for support and helping with builds. &lt;br&gt;
 − Also thanks to &lt;a class=&#34;link&#34; href=&#34;https://github.com/bromite/bromite&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/bromite/bromite&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/saiarcot895/chromium-ubuntu-build&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/saiarcot895/chromium-ubuntu-build&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/Eloston/ungoogled-chromium&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Eloston/ungoogled-chromium&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/GrapheneOS/Vanadium&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/GrapheneOS/Vanadium&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://github.com/iridium-browser/iridium-browser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/iridium-browser/iridium-browser&lt;/a&gt; for patch code. &lt;br&gt;
 − The pak_src dir, and the binaries in &lt;em&gt;pack_src/bin&lt;/em&gt; are credited to @freeer &lt;a class=&#34;link&#34; href=&#34;https://github.com/myfreeer/chrome-pak-customizer/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/myfreeer/chrome-pak-customizer/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;   &lt;strong&gt;NOTE:&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/Alex313031/thorium/blob/main/infra/libpepflashplayer.so&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;em&gt;libpepflashplayer.so&lt;/em&gt;&lt;/a&gt; is included for posterity and can be used to enable Adobe Flash on older Chromium releases. ʘ‿ʘ&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Thanks for using Thorium!&lt;/em&gt;&lt;/p&gt;
&lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/STAGING/Thorium90_504.jpg&#34; width=&#34;200&#34;&gt;
&lt;p&gt;&lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/STAGING/GitHub/GitHub-Mark-Light-32px.png#gh-dark-mode-only&#34;&gt; &lt;img src=&#34;https://github.com/Alex313031/thorium/blob/main/logos/STAGING/GitHub/GitHub-Mark-32px.png#gh-light-mode-only&#34;&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>wallet-gen</title>
        <link>https://producthunt.programnotes.cn/en/p/wallet-gen/</link>
        <pubDate>Wed, 02 Jul 2025 15:29:49 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/wallet-gen/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1598781514001-bd730d80b674?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTE0NDEzNTl8&amp;ixlib=rb-4.1.0" alt="Featured image of post wallet-gen" /&gt;&lt;h1 id=&#34;octra-labswallet-gen&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/octra-labs/wallet-gen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;octra-labs/wallet-gen&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;octra-wallet-generator&#34;&gt;octra wallet generator
&lt;/h1&gt;&lt;h2 id=&#34;quick-start&#34;&gt;quick Start
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;download and start wallet generator web UI with a single command:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;linux/macOS:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://octra.org/wallet-generator.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;windows:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;powershell&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-c&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;irm octra.org/wallet-generator.ps1 | iex&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;this command will:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;download the latest source code and build the wallet generator&lt;/li&gt;
&lt;li&gt;start the server and open the generator web UI page in your browser&lt;/li&gt;
&lt;li&gt;install to &lt;code&gt;~/.octra/wallet-generator&lt;/code&gt; for future use&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Product Hunt Daily | 2025-06-30</title>
        <link>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-06-30/</link>
        <pubDate>Mon, 30 Jun 2025 07:30:34 +0000</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-06-30/</guid>
        <description>&lt;img src="https://ph-files.imgix.net/f83931da-b775-4f49-9916-a8a18b6e5a58.png?auto=format&amp;fit=crop&amp;frame=1&amp;h=512&amp;w=1024" alt="Featured image of post Product Hunt Daily | 2025-06-30" /&gt;&lt;h2 id=&#34;1-byterover&#34;&gt;1. Byterover
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Memory layer for your AI coding agents&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Byterover is a self-improving memory layer for your AI coding agents—create, retrieve, manage vibe-coding best practices across projects and teams. You can start now by installing Byterover&amp;rsquo;s extension via your AI IDE like Cursor, Windsurf, and more.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/CFX2HX4JOUZWZS?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/byterover-2?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/f83931da-b775-4f49-9916-a8a18b6e5a58.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Byterover&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI coding, memory layer, coding assistant, AI agent memory, code management, vibe-coding, developer tools, AI IDE extension, Cursor, Windsurf, Byterover&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺539&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-29 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-mylensai&#34;&gt;2. MyLens.ai
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Visualize what matters in your content &amp;amp; ideas with AI&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: MyLens AI turns your raw ideas and content into clear, interactive visuals—instantly. Just drop in any source—text, PDF, image, webpage, or even a YouTube video—and MyLens builds a beautiful, editable visual that highlights what matters most, ready to present.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/6ZBAFH5PGNH5DS?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/mylens-ai-3?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/0bc44ea3-cc71-415c-b72d-81ef575e9f73.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;MyLens.ai&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: MyLens.ai, AI visualization, content visualization, idea visualization, interactive visuals, AI content creation, visual content creation, data visualization, presentation tools, infographic maker&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺512&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-29 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-oboe&#34;&gt;3. Oboe
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: High performance experimentation platform&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Oboe is a blazing-fast, code-first A/B testing platform built for developers. Run experiments without PR bottlenecks, bloat, or platform tax. Front-of-stack, edge-delivered, and analytics-friendly.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/DQ4V2MNPO3PKT5?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/oboe-2?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/7a79e829-f1b9-454f-8c0a-b84b07b840e0.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Oboe&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: A/B testing, Experimentation platform, developer tools, code-first,  fast experimentation,  edge delivery,  analytics,  Oboe&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺255&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-29 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;4-neura&#34;&gt;4. Neura
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Turn your voice notes into powerful AI-enhanced content.&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Transform your voice notes into powerful, actionable content with 20+ AI tools. From brainstorming to structured reports, LinkedIn posts, and action plans - all in one intelligent AI-enhanced app.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/5GCJSVR4UXQX6F?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/neura-4?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/441611b9-c205-466a-b6e0-585a2987a07b.jpeg?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Neura&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: voice notes, AI, transcription, content creation, AI tools, productivity, brainstorming, report writing, LinkedIn, action plan,  app&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺252&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-29 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;5-leavoo&#34;&gt;5. Leavoo
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Time-off made simple, fast &amp;amp; Slack-native&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Meet Leavoo. Your go-to companion for hassle-free leaves, right from Slack. Request, approve, and track leaves in seconds. Built for managers, HR, and fast-moving teams.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/Y7GO5PAQA5DCWI?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/leavoo?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/2ceb4901-381c-42d7-a7f8-6a8cbc461aeb.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Leavoo&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Leavoo, Slack leave management, time off software, leave request, absence management, employee leave, HR software, team leave tracker, Slack app, workflow automation&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺249&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-29 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;6-ultracite&#34;&gt;6. Ultracite
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Fast, automated code formatting for JavaScript apps&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Ultracite is a fast, intuitive dev tool that brings automated code formatting and linting to your JS / TS projects. Built on top of Biome (a Rust-based code formatter), Ultracite provides a robust, preconfigured setup optimized for modern web development.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/OJ436ORV4ZDXFR?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/ultracite?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/56b48724-6a28-4ade-91a5-4a3fe5619816.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Ultracite&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: JavaScript, TypeScript, code formatter, code formatting, linter, linting, JS formatter, TS formatter, automated formatting, Biome, Ultracite, dev tool, web development&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺204&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-29 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;7-sharego&#34;&gt;7. ShareGo
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: You’ll wonder how you ever used AirDrop without it.&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Tired of messy AirDrop steps? ShareGo makes file sharing stupidly simple and beautifully fast. Trigger it with a shortcut, drop a file, and boom—AirDrop just works. No setup, no Dock icon, no friction. Once you try it, there’s no going back.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/467X2EQ4VJ4ET7?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/sharego?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/4c3ac9fc-03bc-4037-bdc8-3659ec23ee68.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;ShareGo&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: ShareGo, AirDrop, file sharing, shortcut, fast, simple, easy, wireless transfer, macOS&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺137&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-29 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;8-key-press-viewer-for-macos&#34;&gt;8. Key Press Viewer for macOS
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Minimal key stroke viewer&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: This app is useful for any kind of presentation, streaming or recording demo or educational videos which include using your macOS.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/LY7S72PGXDUJKG?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/key-press-viewer-for-macos?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/2842c945-2168-4b5d-93d6-df22d5a4ef7a.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Key Press Viewer for macOS&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: macOS, keystrokes, viewer, presentation, streaming, recording, demo, educational videos, minimal&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺134&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-29 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;9-final-commit&#34;&gt;9. Final Commit
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: The digital graveyard for startups&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: In the age of fast shipping and micro-SaaS, countless startups die post MVP — no spotlight, no closure, just a domain left behind. Final Commit is a digital graveyard for those projects: a space to honor the build, share the journey, and be remembered.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/B2BJPN6LHCW4CJ?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/final-commit?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/d5303619-c04f-4959-ba57-dd733a6a758e.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Final Commit&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: startup graveyard, digital graveyard, startup failure, MVP failure, SaaS graveyard, project closure, startup memorial, tech graveyard, failed startup, micro-SaaS,  domain graveyard&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺57&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: No&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-29 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;10-helix&#34;&gt;10. Helix
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: The Everything Exchange.&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Trade crypto, stocks, forex and commodities 24/7 on-chain with leverage. Perps, spot and more on the premier decentralized exchange.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/I6DMQAMKQD4JRN?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/helix-10?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/9d97fcbf-2556-451f-8204-ae9b47b3bbc0.jpeg?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Helix&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Helix, DEX, Crypto Exchange, Decentralized Exchange, On-chain Exchange, Leverage Trading, Perpetual Swaps, Spot Trading, Forex Trading, Stock Trading, Commodity Trading, 24/7 Trading&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺31&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: No&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-29 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
</description>
        </item>
        <item>
        <title>Product Hunt Daily | 2025-06-29</title>
        <link>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-06-29/</link>
        <pubDate>Sun, 29 Jun 2025 07:27:30 +0000</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-06-29/</guid>
        <description>&lt;img src="https://ph-files.imgix.net/77d98453-5e73-491d-81d9-a2e7bcbcf3a5.jpeg?auto=format&amp;fit=crop&amp;frame=1&amp;h=512&amp;w=1024" alt="Featured image of post Product Hunt Daily | 2025-06-29" /&gt;&lt;h2 id=&#34;1-deskminder&#34;&gt;1. DeskMinder²
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Create quick desktop reminders with just one click&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: DeskMinder is a simple yet effective macOS app for quick desktop reminders &amp;amp; tasks. Ideal for those with ADHD who need bold notifications.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/W7MCZYCY23CIOM?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/deskminder-2?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/77d98453-5e73-491d-81d9-a2e7bcbcf3a5.jpeg?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;DeskMinder²&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: macOS, reminder, reminder app, desktop reminder, ADHD, task management, notification, quick reminder, one click reminder, Mac app&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺415&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-mintly-10&#34;&gt;2. Mintly 1.0
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Clone ads from the biggest companies in the world&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: We built Mintly to make ad creation feel less like a chore. Upload a product photo, pick a template inspired by top-performing ads, and Mintly generates polished image or video ads in seconds—copy, branding, everything.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/OTCGS4XJ4LVJBJ?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/mintly-1-0?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/84371624-4f0d-464b-a3f0-628008307c6f.jpeg?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Mintly 1.0&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: ad creator, ad maker, ad generator, ad templates, ad design, video ad maker, image ad maker, social media ads, ad cloning, AI ad generator&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺316&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-content-gap-report-for-llm-seo&#34;&gt;3. Content Gap Report for LLM SEO
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Turn content gaps into traffic that converts&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Discover what content your competitors rank for that you don&amp;rsquo;t. Get AI-powered content gap analysis with personas, topics, and actionable recommendations.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/RSPCCRTF5HH7GU?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/content-gap-report-for-llm-seo?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/3c26ff18-d8c6-419d-98df-7adac44f5cab.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Content Gap Report for LLM SEO&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Content Gap Analysis, SEO Content Gap, Competitor Content Gap, Content Gap Report, LLM SEO, AI Content Gap Analysis, Content Strategy,  SEO Strategy, Keyword Gap Analysis,  Traffic Generation&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺272&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;4-fullpack&#34;&gt;4. Fullpack
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: On-Device Item Extraction &amp;amp; Inventory Management&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Fullpack uses Apple’s VisionKit to extract items directly from your photos — making it easy to create packing lists, outfits, or inventory collections.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/EOSGQ6OOK3FO42?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/fullpack?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/57343df4-03d1-45b9-bc8f-9be39d8d41aa.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Fullpack&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Packing List, Inventory, Apple VisionKit, Item Extraction, Outfit Planner, Photo Inventory, On-Device Inventory,  Visual Inventory&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺233&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;5-herodot-ai&#34;&gt;5. Herodot AI
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: App to unlock tales of any landmark around. From photo &amp;amp; map&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: AI travel buddy app which tells you great stories similarly but smarter than audioguides. Empowered by many new features: - story by photo; - map navigation and routes; - personalization and content memory of what you already learned&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/TQIN5MATBN2DZH?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/herodot-ai-3?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/9a9228d3-7e5a-4898-9bbc-a42897b9861e.jpeg?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Herodot AI&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI travel guide, landmark stories, photo recognition, map navigation, travel app, AI storytelling, audio guide alternative, personalized travel, Herodot AI&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺209&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;6-timeday&#34;&gt;6. TimeDay
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: your all-in-one focus timer.&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: TimeDay is a lightweight Chrome Extension that helps you stay focused and track time with a visual timer and customizable event countdown. Instantly set timers, pin important dates, and stay productive without switching tabs.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/IE3Q6GQDCUC7ZY?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/timeday?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/1ac42f54-f392-4c66-a96d-c7fe4ab91e06.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;TimeDay&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: focus timer, chrome extension, productivity timer, time tracking, countdown timer, visual timer, focus app, task timer, event countdown, time management&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺175&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;7-fitandview&#34;&gt;7. FitAndView+
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Fitness app with the World&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Our ambition is to build the world&amp;rsquo;s largest fitness community. Because we believe that collective energy boosts individual motivation, we want to enable everyone, wherever they are, to train directly with others, to feel supported.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/7JBL5KT5W5LS7M?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/fitandview?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/1cde2059-c2e6-4484-9bab-ed4c42cf188e.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FitAndView&amp;#43;&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Fitness app, workout app, fitness community, online fitness, social fitness, group fitness, global fitness, workout buddies, fitness motivation&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺154&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;8-scira-ai-20&#34;&gt;8. Scira AI 2.0
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: A minimalistic open source AI-powered search engine.&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Scira AI is a minimalistic AI-powered search engine that helps you find information on the internet.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/753JBDBBLS4JEA?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/scira-ai-2-0?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/b7032d68-6257-4855-864d-b554e63dbca9.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Scira AI 2.0&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Scira AI, AI search engine, open source search, minimalistic search, AI powered search, information search&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺60&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: No&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;9-heycustomer&#34;&gt;9. HeyCustomer
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: popups people actually like&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Create curiosity-driven popups that people actually want to see. Setup in 1 minute, boost conversions immediately.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/FND3Z4O4OBQB2D?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/heycustomer?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/4c6b4700-d1a0-48f3-a09d-6035eecd5447.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;HeyCustomer&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: popups, conversion, popup builder, website popup, lead generation, email signup, marketing popup, opt-in, HeyCustomer&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺23&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: No&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;10-sugarless&#34;&gt;10. SugarLess
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: AI tracks sugar. You build better habits.&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Build healthy sugar habits with Sugarless — fast and easy. Just snap 📸 your meal or speak 🎙️ — AI instantly tracks sugar. No manual logging ✅, no guesswork. Join our waitlist to get a 🎟️ discount code when we launch!&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/7JY6D2OHCM3THW?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/sugarless-2?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/b3d128cf-faad-4b45-a75b-fcbac6f96460.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;SugarLess&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Sugarless, AI sugar tracker, healthy habits, sugar intake, food tracking, AI nutrition, no logging, easy sugar tracking, smart food diary&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺21&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: No&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-06-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
</description>
        </item>
        <item>
        <title>isle-portable</title>
        <link>https://producthunt.programnotes.cn/en/p/isle-portable/</link>
        <pubDate>Wed, 25 Jun 2025 15:30:37 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/isle-portable/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1591811859365-c947a1967368?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTA4MzY1ODN8&amp;ixlib=rb-4.1.0" alt="Featured image of post isle-portable" /&gt;&lt;h1 id=&#34;isledecompisle-portable&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle-portable&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;isledecomp/isle-portable&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;lego-island-portable&#34;&gt;LEGO Island, portable
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/playlist?list=PLbpl-gZkNl2Db4xcAsT_xOfOwRk-2DPHL&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Development Vlog&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/CONTRIBUTING.md&#34; &gt;Contributing&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://matrix.to/#/#isledecomp:matrix.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Matrix&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://forum.mattkc.com/viewforum.php?f=1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Forums&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://www.patreon.com/mattkc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Patreon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This initiative is a portable version of LEGO Island (Version 1.1, English) based on the &lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;decompilation project&lt;/a&gt;. Our primary goal is to transform the codebase to achieve platform independence, thereby enhancing compatibility across various systems while preserving the original game&amp;rsquo;s experience as faithfully as possible.&lt;/p&gt;
&lt;p&gt;Please note: this project is dedicated to achieving platform independence without altering the core gameplay, adding new features, enhancing visual quality, or rewriting code for improvement&amp;rsquo;s sake. While those are worthwhile objectives, they are not within the scope of this project.&lt;/p&gt;
&lt;h2 id=&#34;status&#34;&gt;Status
&lt;/h2&gt;&lt;h3 id=&#34;supported-platforms&#34;&gt;Supported platforms
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Platform&lt;/th&gt;
          &lt;th&gt;Status&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Linux&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;macOS&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://isle.pizza&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Web&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;We are actively working to support more platforms. If you have experience with a particular platform, we encourage you to contribute to &lt;code&gt;isle-portable&lt;/code&gt;. You can find a &lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle-portable/wiki/Work%E2%80%90in%E2%80%90progress-ports&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;list of ongoing efforts&lt;/a&gt; in our Wiki.&lt;/p&gt;
&lt;h3 id=&#34;library-substitutions&#34;&gt;Library substitutions
&lt;/h3&gt;&lt;p&gt;To achieve our goal of platform independence, we need to replace any Windows-only libraries with platform-independent alternatives. This ensures that our codebase remains versatile and compatible across various systems. The following table serves as an overview of major libraries / subsystems and their chosen replacements. For any significant changes or additions, it&amp;rsquo;s recommended to discuss them with the team on the Matrix chat first to ensure consistency and alignment with our project&amp;rsquo;s objectives.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Library/subsystem&lt;/th&gt;
          &lt;th&gt;Substitution&lt;/th&gt;
          &lt;th&gt;Status&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Window, Events&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Awindow%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows Registry (Configuration)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://gitlab.com/iniparser/iniparser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;libiniparser&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Aconfig%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Filesystem&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Afilesystem%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Threads, Mutexes (Synchronization)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Asynchronization%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Keyboard/Mouse, DirectInput (Input)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Ainput%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Joystick/Gamepad, DirectInput (Input)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Ainput%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;WinMM, DirectSound (Audio)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://miniaud.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;miniaudio&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Aaudio%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DirectDraw (2D video)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3A2d%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle/tree/master/3rdparty/smacker&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Smacker&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/foxtacles/libsmacker&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;libsmacker&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable%20%22%2F%2F%20%5Blibrary%3Alibsmacker%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Direct3D (3D video)&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.libsdl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SDL3 (Vulkan, Metal, D3D12)&lt;/a&gt;, D3D9, OpenGL, OpenGL ES, Software&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3A3d%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Direct3D Retained Mode&lt;/td&gt;
          &lt;td&gt;Custom re-implementation&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/search?q=repo%3Aisledecomp%2Fisle-portable&amp;#43;%22%2F%2F&amp;#43;%5Blibrary%3Aretained%5D%22&amp;amp;type=code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Remarks&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/isledecomp/isle/tree/master/3rdparty/smartheap&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SmartHeap&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Default memory allocator&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;building&#34;&gt;Building
&lt;/h2&gt;&lt;p&gt;This project uses the &lt;a class=&#34;link&#34; href=&#34;https://cmake.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CMake&lt;/a&gt; build system, which allows for a high degree of versatility regarding compilers and development environments. Please refer to the &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/.github/workflows//ci.yml&#34; &gt;GitHub action&lt;/a&gt; for guidance.&lt;/p&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;An existing copy of LEGO Island is required to use this project.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As it stands, the builds provided in the Releases tab are for developers; as such, they may not work properly for end-users. Work is currently ongoing to create workable release builds ready for gameplay and general use by end-users. If you are technically inclined, you may find it easiest to compile the project yourself to get it running at this current point in time.&lt;/p&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;If you&amp;rsquo;re interested in helping or contributing to this project, check out the &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/CONTRIBUTING.md&#34; &gt;CONTRIBUTING&lt;/a&gt; page.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ghostty</title>
        <link>https://producthunt.programnotes.cn/en/p/ghostty/</link>
        <pubDate>Tue, 24 Jun 2025 15:30:29 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/ghostty/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1538672943114-8334c8306d3e?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTA3NTAyMDV8&amp;ixlib=rb-4.1.0" alt="Featured image of post ghostty" /&gt;&lt;h1 id=&#34;ghostty-orgghostty&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ghostty-org/ghostty&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ghostty-org/ghostty&lt;/a&gt;
&lt;/h1&gt;&lt;!-- LOGO --&gt;
&lt;h1&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;img src=&#34;https://github.com/user-attachments/assets/fe853809-ba8b-400b-83ab-a9a0da25be8a&#34; alt=&#34;Logo&#34; width=&#34;128&#34;&gt;
  &lt;br&gt;Ghostty
&lt;/h1&gt;
  &lt;p align=&#34;center&#34;&gt;
    Fast, native, feature-rich terminal emulator pushing modern features.
    &lt;br /&gt;
    &lt;a href=&#34;#about&#34;&gt;About&lt;/a&gt;
    ·
    &lt;a href=&#34;https://ghostty.org/download&#34;&gt;Download&lt;/a&gt;
    ·
    &lt;a href=&#34;https://ghostty.org/docs&#34;&gt;Documentation&lt;/a&gt;
    ·
    &lt;a href=&#34;#developing-ghostty&#34;&gt;Developing&lt;/a&gt;
  &lt;/p&gt;
&lt;/p&gt;
&lt;h2 id=&#34;about&#34;&gt;About
&lt;/h2&gt;&lt;p&gt;Ghostty is a terminal emulator that differentiates itself by being
fast, feature-rich, and native. While there are many excellent terminal
emulators available, they all force you to choose between speed,
features, or native UIs. Ghostty provides all three.&lt;/p&gt;
&lt;p&gt;In all categories, I am not trying to claim that Ghostty is the
best (i.e. the fastest, most feature-rich, or most native). But
Ghostty is competitive in all three categories and Ghostty
doesn&amp;rsquo;t make you choose between them.&lt;/p&gt;
&lt;p&gt;Ghostty also intends to push the boundaries of what is possible with a
terminal emulator by exposing modern, opt-in features that enable CLI tool
developers to build more feature rich, interactive applications.&lt;/p&gt;
&lt;p&gt;While aiming for this ambitious goal, our first step is to make Ghostty
one of the best fully standards compliant terminal emulator, remaining
compatible with all existing shells and software while supporting all of
the latest terminal innovations in the ecosystem. You can use Ghostty
as a drop-in replacement for your existing terminal emulator.&lt;/p&gt;
&lt;p&gt;For more details, see &lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs/about&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;About Ghostty&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;download&#34;&gt;Download
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/download&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;download page&lt;/a&gt; on the Ghostty website.&lt;/p&gt;
&lt;h2 id=&#34;documentation&#34;&gt;Documentation
&lt;/h2&gt;&lt;p&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;documentation&lt;/a&gt; on the Ghostty website.&lt;/p&gt;
&lt;h2 id=&#34;roadmap-and-status&#34;&gt;Roadmap and Status
&lt;/h2&gt;&lt;p&gt;The high-level ambitious plan for the project, in order:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;#&lt;/th&gt;
          &lt;th&gt;Step&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Status&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;1&lt;/td&gt;
          &lt;td&gt;Standards-compliant terminal emulation&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;2&lt;/td&gt;
          &lt;td&gt;Competitive performance&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;3&lt;/td&gt;
          &lt;td&gt;Basic customizability &amp;ndash; fonts, bg colors, etc.&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;4&lt;/td&gt;
          &lt;td&gt;Richer windowing features &amp;ndash; multi-window, tabbing, panes&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;5&lt;/td&gt;
          &lt;td&gt;Native Platform Experiences (i.e. Mac Preference Panel)&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;⚠️&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;6&lt;/td&gt;
          &lt;td&gt;Cross-platform &lt;code&gt;libghostty&lt;/code&gt; for Embeddable Terminals&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;⚠️&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;Windows Terminals (including PowerShell, Cmd, WSL)&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;N&lt;/td&gt;
          &lt;td&gt;Fancy features (to be expanded upon later)&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Additional details for each step in the big roadmap below:&lt;/p&gt;
&lt;h4 id=&#34;standards-compliant-terminal-emulation&#34;&gt;Standards-Compliant Terminal Emulation
&lt;/h4&gt;&lt;p&gt;Ghostty implements enough control sequences to be used by hundreds of
testers daily for over the past year. Further, we&amp;rsquo;ve done a
&lt;a class=&#34;link&#34; href=&#34;https://github.com/ghostty-org/ghostty/issues/632&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;comprehensive xterm audit&lt;/a&gt;
comparing Ghostty&amp;rsquo;s behavior to xterm and building a set of conformance
test cases.&lt;/p&gt;
&lt;p&gt;We believe Ghostty is one of the most compliant terminal emulators available.&lt;/p&gt;
&lt;p&gt;Terminal behavior is partially a de jure standard
(i.e. &lt;a class=&#34;link&#34; href=&#34;https://ecma-international.org/publications-and-standards/standards/ecma-48/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ECMA-48&lt;/a&gt;)
but mostly a de facto standard as defined by popular terminal emulators
worldwide. Ghostty takes the approach that our behavior is defined by
(1) standards, if available, (2) xterm, if the feature exists, (3)
other popular terminals, in that order. This defines what the Ghostty project
views as a &amp;ldquo;standard.&amp;rdquo;&lt;/p&gt;
&lt;h4 id=&#34;competitive-performance&#34;&gt;Competitive Performance
&lt;/h4&gt;&lt;p&gt;We need better benchmarks to continuously verify this, but Ghostty is
generally in the same performance category as the other highest performing
terminal emulators.&lt;/p&gt;
&lt;p&gt;For rendering, we have a multi-renderer architecture that uses OpenGL on
Linux and Metal on macOS. As far as I&amp;rsquo;m aware, we&amp;rsquo;re the only terminal
emulator other than iTerm that uses Metal directly. And we&amp;rsquo;re the only
terminal emulator that has a Metal renderer that supports ligatures (iTerm
uses a CPU renderer if ligatures are enabled). We can maintain around 60fps
under heavy load and much more generally &amp;ndash; though the terminal is
usually rendering much lower due to little screen changes.&lt;/p&gt;
&lt;p&gt;For IO, we have a dedicated IO thread that maintains very little jitter
under heavy IO load (i.e. &lt;code&gt;cat &amp;lt;big file&amp;gt;.txt&lt;/code&gt;). On benchmarks for IO,
we&amp;rsquo;re usually within a small margin of other fast terminal emulators.
For example, reading a dump of plain text is 4x faster compared to iTerm and
Kitty, and 2x faster than Terminal.app. Alacritty is very fast but we&amp;rsquo;re still
around the same speed (give or take) and our app experience is much more
feature rich.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
Despite being &lt;em&gt;very fast&lt;/em&gt;, there is a lot of room for improvement here.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;richer-windowing-features&#34;&gt;Richer Windowing Features
&lt;/h4&gt;&lt;p&gt;The Mac and Linux (build with GTK) apps support multi-window, tabbing, and
splits.&lt;/p&gt;
&lt;h4 id=&#34;native-platform-experiences&#34;&gt;Native Platform Experiences
&lt;/h4&gt;&lt;p&gt;Ghostty is a cross-platform terminal emulator but we don&amp;rsquo;t aim for a
least-common-denominator experience. There is a large, shared core written
in Zig but we do a lot of platform-native things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The macOS app is a true SwiftUI-based application with all the things you
would expect such as real windowing, menu bars, a settings GUI, etc.&lt;/li&gt;
&lt;li&gt;macOS uses a true Metal renderer with CoreText for font discovery.&lt;/li&gt;
&lt;li&gt;The Linux app is built with GTK.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are more improvements to be made. The macOS settings window is still
a work-in-progress. Similar improvements will follow with Linux.&lt;/p&gt;
&lt;h4 id=&#34;cross-platform-libghostty-for-embeddable-terminals&#34;&gt;Cross-platform &lt;code&gt;libghostty&lt;/code&gt; for Embeddable Terminals
&lt;/h4&gt;&lt;p&gt;In addition to being a standalone terminal emulator, Ghostty is a
C-compatible library for embedding a fast, feature-rich terminal emulator
in any 3rd party project. This library is called &lt;code&gt;libghostty&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This goal is not hypothetical! The macOS app is a &lt;code&gt;libghostty&lt;/code&gt; consumer.
The macOS app is a native Swift app developed in Xcode and &lt;code&gt;main()&lt;/code&gt; is
within Swift. The Swift app links to &lt;code&gt;libghostty&lt;/code&gt; and uses the C API to
render terminals.&lt;/p&gt;
&lt;p&gt;This step encompasses expanding &lt;code&gt;libghostty&lt;/code&gt; support to more platforms
and more use cases. At the time of writing this, &lt;code&gt;libghostty&lt;/code&gt; is very
Mac-centric &amp;ndash; particularly around rendering &amp;ndash; and we have work to do to
expand this to other platforms.&lt;/p&gt;
&lt;h2 id=&#34;crash-reports&#34;&gt;Crash Reports
&lt;/h2&gt;&lt;p&gt;Ghostty has a built-in crash reporter that will generate and save crash
reports to disk. The crash reports are saved to the &lt;code&gt;$XDG_STATE_HOME/ghostty/crash&lt;/code&gt;
directory. If &lt;code&gt;$XDG_STATE_HOME&lt;/code&gt; is not set, the default is &lt;code&gt;~/.local/state&lt;/code&gt;.
&lt;strong&gt;Crash reports are &lt;em&gt;not&lt;/em&gt; automatically sent anywhere off your machine.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Crash reports are only generated the next time Ghostty is started after a
crash. If Ghostty crashes and you want to generate a crash report, you must
restart Ghostty at least once. You should see a message in the log that a
crash report was generated.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]&lt;/p&gt;
&lt;p&gt;Use the &lt;code&gt;ghostty +crash-report&lt;/code&gt; CLI command to get a list of available crash
reports. A future version of Ghostty will make the contents of the crash
reports more easily viewable through the CLI and GUI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Crash reports end in the &lt;code&gt;.ghosttycrash&lt;/code&gt; extension. The crash reports are in
&lt;a class=&#34;link&#34; href=&#34;https://develop.sentry.dev/sdk/envelopes/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sentry envelope format&lt;/a&gt;. You can
upload these to your own Sentry account to view their contents, but the format
is also publicly documented so any other available tools can also be used.
The &lt;code&gt;ghostty +crash-report&lt;/code&gt; CLI command can be used to list any crash reports.
A future version of Ghostty will show you the contents of the crash report
directly in the terminal.&lt;/p&gt;
&lt;p&gt;To send the crash report to the Ghostty project, you can use the following
CLI command using the &lt;a class=&#34;link&#34; href=&#34;https://docs.sentry.io/cli/installation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sentry CLI&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell-session&#34; data-lang=&#34;shell-session&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;SENTRY_DSN=https://e914ee84fd895c4fe324afa3e53dac76@o4507352570920960.ingest.us.sentry.io/4507850923638784 sentry-cli send-envelope --raw &amp;lt;path to ghostty crash&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;[!WARNING]&lt;/p&gt;
&lt;p&gt;The crash report can contain sensitive information. The report doesn&amp;rsquo;t
purposely contain sensitive information, but it does contain the full
stack memory of each thread at the time of the crash. This information
is used to rebuild the stack trace but can also contain sensitive data
depending when the crash occurred.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;developing-ghostty&#34;&gt;Developing Ghostty
&lt;/h2&gt;&lt;p&gt;See the documentation on the Ghostty website for
&lt;a class=&#34;link&#34; href=&#34;http://ghostty.org/docs/install/build&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;building Ghostty from a source tarball&lt;/a&gt;.
Building Ghostty from a Git checkout is very similar, except you want to
omit the &lt;code&gt;-Doptimize&lt;/code&gt; flag to build a debug build, and you may require
additional dependencies since the source tarball includes some processed
files that are not in the Git repository.&lt;/p&gt;
&lt;p&gt;On Linux or macOS, you can use &lt;code&gt;zig build -Dapp-runtime=glfw run&lt;/code&gt; for a quick
GLFW-based app for a faster development cycle while developing core
terminal features. Note that this app is missing many features and is also
known to crash in certain scenarios, so it is only meant for development
tasks.&lt;/p&gt;
&lt;p&gt;Other useful commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;zig build test&lt;/code&gt; for running unit tests.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;zig build test -Dtest-filter=&amp;lt;filter&amp;gt;&lt;/code&gt; for running a specific subset of those unit tests&lt;/li&gt;
&lt;li&gt;&lt;code&gt;zig build run -Dconformance=&amp;lt;name&amp;gt;&lt;/code&gt; runs a conformance test case from
the &lt;code&gt;conformance&lt;/code&gt; directory. The &lt;code&gt;name&lt;/code&gt; is the name of the file. This runs
in the current running terminal emulator so if you want to check the
behavior of this project, you must run this command in Ghostty.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;extra-dependencies&#34;&gt;Extra Dependencies
&lt;/h3&gt;&lt;p&gt;Building Ghostty from a Git checkout on Linux requires some additional
dependencies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;blueprint-compiler&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;macOS users don&amp;rsquo;t require any additional dependencies.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
This only applies to building from a &lt;em&gt;Git checkout&lt;/em&gt;. This section does
not apply if you&amp;rsquo;re building from a released &lt;em&gt;source tarball&lt;/em&gt;. For
source tarballs, see the
&lt;a class=&#34;link&#34; href=&#34;http://ghostty.org/docs/install/build&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;website&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;xcode-version-and-sdks&#34;&gt;Xcode Version and SDKs
&lt;/h3&gt;&lt;p&gt;Building the Ghostty macOS app requires that Xcode, the macOS SDK,
and the iOS SDK are all installed.&lt;/p&gt;
&lt;p&gt;A common issue is that the incorrect version of Xcode is either
installed or selected. Use the &lt;code&gt;xcode-select&lt;/code&gt; command to
ensure that the correct version of Xcode is selected:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell-session&#34; data-lang=&#34;shell-session&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;sudo xcode-select --switch /Applications/Xcode-beta.app
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;[!IMPORTANT]&lt;/p&gt;
&lt;p&gt;Main branch development of Ghostty is preparing for the next major
macOS release, Tahoe (macOS 26). Therefore, the main branch requires
&lt;strong&gt;Xcode 26 and the macOS 26 SDK&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You do not need to be running on macOS 26 to build Ghostty, you can
still use Xcode 26 beta on macOS 15 stable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;linting&#34;&gt;Linting
&lt;/h3&gt;&lt;h4 id=&#34;prettier&#34;&gt;Prettier
&lt;/h4&gt;&lt;p&gt;Ghostty&amp;rsquo;s docs and resources (not including Zig code) are linted using
&lt;a class=&#34;link&#34; href=&#34;https://prettier.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Prettier&lt;/a&gt; with out-of-the-box settings. A Prettier CI
check will fail builds with improper formatting. Therefore, if you are
modifying anything Prettier will lint, you may want to install it locally and
run this from the repo root before you commit:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;prettier --write .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Make sure your Prettier version matches the version of Prettier in &lt;a class=&#34;link&#34; href=&#34;https://github.com/ghostty-org/ghostty/blob/main/nix/devShell.nix&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;devShell.nix&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nix users can use the following command to format with Prettier:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nix develop -c prettier --write .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;alejandra&#34;&gt;Alejandra
&lt;/h4&gt;&lt;p&gt;Nix modules are formatted with &lt;a class=&#34;link&#34; href=&#34;https://github.com/kamadorueda/alejandra/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alejandra&lt;/a&gt;. An Alejandra CI check
will fail builds with improper formatting.&lt;/p&gt;
&lt;p&gt;Nix users can use the following command to format with Alejandra:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nix develop -c alejandra .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Non-Nix users should install Alejandra and use the following command to format with Alejandra:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;alejandra .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Make sure your Alejandra version matches the version of Alejandra in &lt;a class=&#34;link&#34; href=&#34;https://github.com/ghostty-org/ghostty/blob/main/nix/devShell.nix&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;devShell.nix&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;updating-the-zig-cache-fixed-output-derivation-hash&#34;&gt;Updating the Zig Cache Fixed-Output Derivation Hash
&lt;/h4&gt;&lt;p&gt;The Nix package depends on a &lt;a class=&#34;link&#34; href=&#34;https://nix.dev/manual/nix/stable/language/advanced-attributes.html#adv-attr-outputHash&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;fixed-output
derivation&lt;/a&gt;
that manages the Zig package cache. This allows the package to be built in the
Nix sandbox.&lt;/p&gt;
&lt;p&gt;Occasionally (usually when &lt;code&gt;build.zig.zon&lt;/code&gt; is updated), the hash that
identifies the cache will need to be updated. There are jobs that monitor the
hash in CI, and builds will fail if it drifts.&lt;/p&gt;
&lt;p&gt;To update it, you can run the following in the repository root:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./nix/build-support/check-zig-cache-hash.sh --update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This will write out the &lt;code&gt;nix/zigCacheHash.nix&lt;/code&gt; file with the updated hash
that can then be committed and pushed to fix the builds.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>NotepadNext</title>
        <link>https://producthunt.programnotes.cn/en/p/notepadnext/</link>
        <pubDate>Mon, 23 Jun 2025 15:32:34 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/notepadnext/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1600852132262-fd83bcc3b99b?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTA2NjM4NDJ8&amp;ixlib=rb-4.1.0" alt="Featured image of post NotepadNext" /&gt;&lt;h1 id=&#34;dail8859notepadnext&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/dail8859/NotepadNext&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;dail8859/NotepadNext&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;notepad-next&#34;&gt;Notepad Next
&lt;/h1&gt;&lt;p&gt;&lt;img src=&#34;https://github.com/dail8859/NotepadNext/workflows/Build%20Notepad%20Next/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Notepad Next&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;A cross-platform, reimplementation of Notepad++.&lt;/p&gt;
&lt;p&gt;Though the application overall is stable and usable, it should not be considered safe for critically important work.&lt;/p&gt;
&lt;p&gt;There are numerous bugs and half working implementations. Pull requests are greatly appreciated.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/doc/screenshot.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;screenshot&#34;
	
	
&gt;&lt;/p&gt;
&lt;h1 id=&#34;installation&#34;&gt;Installation
&lt;/h1&gt;&lt;p&gt;Packages are available for Windows, Linux, and MacOS.&lt;/p&gt;
&lt;p&gt;Below are the supported distribution mechanisms. There may be other ways to download/install the application, but this project will likely not be able to offer any support for those since they are made available by other individuals.&lt;/p&gt;
&lt;h2 id=&#34;windows&#34;&gt;Windows
&lt;/h2&gt;&lt;p&gt;Windows packages are available as an installer or a stand-alone zip file on the &lt;a class=&#34;link&#34; href=&#34;https://github.com/dail8859/NotepadNext/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;release&lt;/a&gt; page. The installer provides additional components such as an auto-updater and Windows context menu integration. You can easily install it with Winget:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;winget&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dail8859&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;NotepadNext&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;linux&#34;&gt;Linux
&lt;/h2&gt;&lt;p&gt;Linux packages can be obtained by downloading the stand-alone AppImage on the &lt;a class=&#34;link&#34; href=&#34;https://github.com/dail8859/NotepadNext/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;release&lt;/a&gt; page or by installing the &lt;a class=&#34;link&#34; href=&#34;https://flathub.org/apps/details/com.github.dail8859.NotepadNext&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;flatpak&lt;/a&gt; by executing:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;flatpak install flathub com.github.dail8859.NotepadNext
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;macos&#34;&gt;MacOS
&lt;/h2&gt;&lt;p&gt;MacOS disk images can be downloaded from the &lt;a class=&#34;link&#34; href=&#34;https://github.com/dail8859/NotepadNext/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;release&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;It can also be installed using brew:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew tap dail8859/notepadnext
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install --no-quarantine notepadnext
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;macos-tweaks&#34;&gt;MacOS Tweaks
&lt;/h4&gt;&lt;p&gt;By default, MacOS enables font smoothing which causes text to appear quite differently from the Windows version. This can be disabled system-wide using the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;defaults -currentHost write -g AppleFontSmoothing -int &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;A restart is required for this to take effect.&lt;/p&gt;
&lt;h1 id=&#34;development&#34;&gt;Development
&lt;/h1&gt;&lt;p&gt;Current development is done using QtCreator with the Microsoft Visual C++ (msvc) compiler. Qt 6.5 is the currently supported Qt version. Older versions of Qt are likely to work but are not tested. Any fixes for older versions will be accepted as long as they do not introduce complex fixes. This application is also known to build successfully on various Linux distributions and macOS. Other platforms/compilers should be usable with minor modifications.&lt;/p&gt;
&lt;p&gt;If you are familiar with building C++ Qt desktop applications with Qt Creator, then this should be as simple as opening &lt;code&gt;src/NotepadNext.pro&lt;/code&gt; and build/run the project.&lt;/p&gt;
&lt;p&gt;If you are new to building C++ Qt desktop applications, there is a more detailed guide &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/doc/Building.md&#34; &gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;license&#34;&gt;License
&lt;/h1&gt;&lt;p&gt;This code is released under the &lt;a class=&#34;link&#34; href=&#34;https://www.gnu.org/licenses/gpl-3.0.txt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GNU General Public License version 3&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>fluentui-system-icons</title>
        <link>https://producthunt.programnotes.cn/en/p/fluentui-system-icons/</link>
        <pubDate>Fri, 20 Jun 2025 15:29:18 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/fluentui-system-icons/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1667582704408-aca85f4aea5a?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTA0MDQ1MTR8&amp;ixlib=rb-4.1.0" alt="Featured image of post fluentui-system-icons" /&gt;&lt;h1 id=&#34;microsoftfluentui-system-icons&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/fluentui-system-icons&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;microsoft/fluentui-system-icons&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;fluent-ui-system-icons&#34;&gt;Fluent UI System Icons
&lt;/h1&gt;&lt;p&gt;&lt;img src=&#34;https://github.com/microsoft/fluentui-system-icons/workflows/CI/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Fluent UI System Icons are a collection of familiar, friendly and modern icons from Microsoft.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/art/readme-banner.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;fluent system icons&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;icon-list&#34;&gt;Icon List
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;icons_regular.md&#34; &gt;View the full list of regular icons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;icons_filled.md&#34; &gt;View the full list of filled icons&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;h3 id=&#34;android&#34;&gt;Android
&lt;/h3&gt;&lt;p&gt;The library is published via Maven Central, please ensure that the &lt;code&gt;mavenCentral()&lt;/code&gt; repository has been added to the root &lt;code&gt;build.gradle&lt;/code&gt; file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;repositories&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;mavenCentral&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Include the following dependency in your project&amp;rsquo;s &lt;code&gt;build.gradle&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;implementation&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;com.microsoft.design:fluent-system-icons:1.1.179@aar&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;For library docs, see &lt;a class=&#34;link&#34; href=&#34;android/README.md&#34; &gt;android/README.md&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;ios-and-macos&#34;&gt;iOS and macOS
&lt;/h3&gt;&lt;h4 id=&#34;cocoapods&#34;&gt;CocoaPods
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;use_frameworks!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pod&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;FluentIcons&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1.1.179&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;carthage&#34;&gt;Carthage
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git &lt;span class=&#34;s2&#34;&gt;&amp;#34;git@github.com:microsoft/fluentui-system-icons.git&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1.1.179&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;For library docs, see &lt;a class=&#34;link&#34; href=&#34;ios/README.md&#34; &gt;ios/README.md&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;flutter&#34;&gt;Flutter
&lt;/h3&gt;&lt;p&gt;In the &lt;code&gt;pubspec.yaml&lt;/code&gt; of your flutter project, add the following dependency:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;dependencies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;fluentui_system_icons&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;^1.1.179&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;For library docs, see &lt;a class=&#34;link&#34; href=&#34;flutter/README.md&#34; &gt;flutter/README.md&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;plain-svg&#34;&gt;Plain svg
&lt;/h3&gt;&lt;p&gt;Inline svg directly. See &lt;a class=&#34;link&#34; href=&#34;packages/svg-icons/README.md&#34; &gt;packages/svg-icons/README.md&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;h3 id=&#34;importer&#34;&gt;Importer
&lt;/h3&gt;&lt;p&gt;The importer generates the Android and iOS libraries from the icons in the &lt;code&gt;assets&lt;/code&gt; directory.&lt;/p&gt;
&lt;p&gt;Jump into the directory&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd importer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Install npm dependencies&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run clean
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;List all the available commands&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;build-pipeline&#34;&gt;Build Pipeline
&lt;/h3&gt;&lt;p&gt;Our &lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/fluentui-system-icons/actions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;build pipeline&lt;/a&gt; runs &lt;code&gt;deploy:android&lt;/code&gt; and &lt;code&gt;deploy:ios&lt;/code&gt; to create the libraries. The build definitions are located in &lt;code&gt;.github/workflows/&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;demo-apps&#34;&gt;Demo apps
&lt;/h2&gt;&lt;p&gt;You can build and run the demo apps following the steps below.&lt;/p&gt;
&lt;h3 id=&#34;android-1&#34;&gt;Android
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Follow the &lt;strong&gt;Importer&lt;/strong&gt; section above and run the command &lt;code&gt;npm run deploy:android&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Open the &lt;a class=&#34;link&#34; href=&#34;android&#34; &gt;android&lt;/a&gt; directory in Android Studio&lt;/li&gt;
&lt;li&gt;Select the &lt;code&gt;sample-showcase&lt;/code&gt; in the build configuration dropdown&lt;/li&gt;
&lt;li&gt;Click run&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;flutter-1&#34;&gt;Flutter
&lt;/h3&gt;&lt;p&gt;Prerequisite: Make sure you have flutter configured in Android Studio&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the &lt;a class=&#34;link&#34; href=&#34;flutter&#34; &gt;flutter&lt;/a&gt; directory in Android Studio&lt;/li&gt;
&lt;li&gt;Select the &amp;rsquo;example&amp;rsquo; in the directory and open it in Android Studio&lt;/li&gt;
&lt;li&gt;Click run&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;contact&#34;&gt;Contact
&lt;/h2&gt;&lt;p&gt;Please feel free to &lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/fluentui-system-icons/issues/new&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open a GitHub issue&lt;/a&gt; and assign to the following points of contact with questions or requests.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jason Custer(&lt;a class=&#34;link&#34; href=&#34;https://github.com/jasoncuster&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@jasoncuster&lt;/a&gt;) / Spencer Nelson(&lt;a class=&#34;link&#34; href=&#34;https://github.com/spencer-nelson&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@spencer-nelson&lt;/a&gt;) / Joe Woodward(&lt;a class=&#34;link&#34; href=&#34;https://github.com/thewoodpecker&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@thewoodpecker&lt;/a&gt;) - Design&lt;/li&gt;
&lt;li&gt;Nick Romano(&lt;a class=&#34;link&#34; href=&#34;https://github.com/nickromano&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@rickromano&lt;/a&gt;) - iOS&lt;/li&gt;
&lt;li&gt;Will Hou(&lt;a class=&#34;link&#34; href=&#34;https://github.com/willhou&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@willhou&lt;/a&gt;) - Android&lt;/li&gt;
&lt;li&gt;Akashdeep Singh(&lt;a class=&#34;link&#34; href=&#34;https://github.com/aakash1313&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@aakash1313&lt;/a&gt;) - Flutter&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;code-of-conduct&#34;&gt;Code of Conduct
&lt;/h2&gt;&lt;p&gt;This project has adopted the &lt;a class=&#34;link&#34; href=&#34;https://opensource.microsoft.com/codeofconduct&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Open Source Code of Conduct&lt;/a&gt;. For more information see the &lt;a class=&#34;link&#34; href=&#34;https://opensource.microsoft.com/codeofconduct&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Code of Conduct FAQ&lt;/a&gt; or contact &lt;a class=&#34;link&#34; href=&#34;mailto:opencode@microsoft.com&#34; &gt;opencode@microsoft.com&lt;/a&gt; with any additional questions or comments.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ghost-Downloader-3</title>
        <link>https://producthunt.programnotes.cn/en/p/ghost-downloader-3/</link>
        <pubDate>Tue, 27 May 2025 15:30:04 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/ghost-downloader-3/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1702274397667-14596faf1cd1?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDgzMzA5MjJ8&amp;ixlib=rb-4.1.0" alt="Featured image of post Ghost-Downloader-3" /&gt;&lt;h1 id=&#34;xiaoyouchrghost-downloader-3&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/XiaoYouChR/Ghost-Downloader-3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;XiaoYouChR/Ghost-Downloader-3&lt;/a&gt;
&lt;/h1&gt;&lt;h4 align=&#34;right&#34;&gt;
  &lt;a href=&#34;README_zh.md&#34;&gt;简体中文&lt;/a&gt; | English
&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;[!IMPORTANT]
Due to the developer&amp;rsquo;s preparation for the college entrance exam (Gaokao), project updates are temporarily suspended 😭 Join QQ group &lt;a class=&#34;link&#34; href=&#34;https://qm.qq.com/q/PlUBdzqZCm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;531928387&lt;/code&gt;&lt;/a&gt; for latest updates&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
The project is still in its early stages, and there is still a lot of shortcomings.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
If you want to use Ghost-Downloader-3 on Windows 7, please download the version &lt;code&gt;v3.5.8-Portable&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- PROJECT LOGO --&gt;
&lt;div align=&#34;center&#34;&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/resources/banner.webp&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Banner&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://trendshift.io/repositories/13847&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://trendshift.io/api/badge/repositories/13847&#34; alt=&#34;XiaoYouChR%2FGhost-Downloader-3 | Trendshift&#34; style=&#34;width: 250px; height: 55px;&#34; width=&#34;250&#34; height=&#34;55&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
    AI-powered next-generation cross-platform multithreaded downloader
&lt;/h3&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/XiaoYouChR/Ghost-Downloader-3/network/members&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/forks/XiaoYouChR/Ghost-Downloader-3.svg?style=for-the-badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Forks&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/XiaoYouChR/Ghost-Downloader-3/stargazers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/stars/XiaoYouChR/Ghost-Downloader-3.svg?style=for-the-badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Stargazers&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/XiaoYouChR/Ghost-Downloader-3/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/issues/XiaoYouChR/Ghost-Downloader-3.svg?style=for-the-badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Issues&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/XiaoYouChR/Ghost-Downloader-3/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/v/release/XiaoYouChR/Ghost-Downloader-3?style=for-the-badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Release&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/XiaoYouChR/Ghost-Downloader-3/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/downloads/XiaoYouChR/Ghost-Downloader-3/total?style=for-the-badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Downloads&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  &lt;a href=&#34;https://github.com/XiaoYouChR/Ghost-Downloader-3/issues/new?template=bug_report.yml&#34;&gt;Report Bug&lt;/a&gt;
·    
  &lt;a href=&#34;https://github.com/XiaoYouChR/Ghost-Downloader-3/issues/new?template=feature_request.yml&#34;&gt;Request Feature&lt;/a&gt;
&lt;/h4&gt;
&lt;/div&gt;
&lt;!-- ABOUT THE PROJECT --&gt;
&lt;h2 id=&#34;about-the-project&#34;&gt;About The Project
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;A downloader developed out of personal interest, and my first Python project 😣&lt;/li&gt;
&lt;li&gt;Originally intended to help a Bilibili Uploader with resource integration 😵‍💫&lt;/li&gt;
&lt;li&gt;Features include IDM-like intelligent chunking without file merging, and AI-powered smart boost 🚀&lt;/li&gt;
&lt;li&gt;Thanks to Python&amp;rsquo;s🐍 accessibility, the project will support plugins🧩 in the future to maximize Python&amp;rsquo;s🐍 advantages&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Platform&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Required Version&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Architectures&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Compatible&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;🐧 &lt;strong&gt;Linux&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;glibc 2.35+&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;x86_64&lt;/code&gt;/&lt;code&gt;arm64&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;🪟 &lt;strong&gt;Windows&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;7 SP1+&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;x86_64&lt;/code&gt;/&lt;code&gt;arm64&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;🍎 &lt;strong&gt;macOS&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;11.0+&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;x86_64&lt;/code&gt;/&lt;code&gt;arm64&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
&lt;strong&gt;Arch Linux AUR support&lt;/strong&gt;: Community-maintained packages &lt;code&gt;ghost-downloader-bin&lt;/code&gt; and &lt;code&gt;ghost-downloader-git&lt;/code&gt; are now available (Maintainer: &lt;a class=&#34;link&#34; href=&#34;https://github.com/zxp19821005&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@zxp19821005&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- ROADMAP --&gt;
&lt;h2 id=&#34;roadmap&#34;&gt;Roadmap
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;✅ Global settings&lt;/li&gt;
&lt;li&gt;✅ More detailed download information&lt;/li&gt;
&lt;li&gt;✅ Scheduled tasks&lt;/li&gt;
&lt;li&gt;✅ Browser extension optimization&lt;/li&gt;
&lt;li&gt;✅ Global speed limit&lt;/li&gt;
&lt;li&gt;✅ Memory optimization
&lt;ul&gt;
&lt;li&gt;✅ Upgrade Qt version&lt;/li&gt;
&lt;li&gt;✅ Implement HttpClient reuse&lt;/li&gt;
&lt;li&gt;✅ Replace some multithreading with coroutines&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;❌ MVC → MVVM upgrade and a new architecture based on events (In progress&amp;hellip;see branch: feature/Plugins)&lt;/li&gt;
&lt;li&gt;❌ Enhanced task editing (powerful features like binding multiple Clients to one task)&lt;/li&gt;
&lt;li&gt;❌ Magnet/BT download (Considering libtorrent implementation)&lt;/li&gt;
&lt;li&gt;❌ Powerful plugin system&lt;/li&gt;
&lt;li&gt;❌ Powerful browser extension features&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Visit &lt;a class=&#34;link&#34; href=&#34;https://github.com/XiaoYouChR/Ghost-Downloader-3/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Open issues&lt;/a&gt; to see all requested features (and known issues).&lt;/p&gt;
&lt;!-- SPONSOR --&gt;
&lt;h2 id=&#34;sponsor&#34;&gt;Sponsor
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;a class=&#34;link&#34; href=&#34;https://signpath.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://signpath.org/assets/favicon-50x50.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;SignPath&#34;
	
	
&gt;&lt;/a&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Free code signing on Windows provided by &lt;a class=&#34;link&#34; href=&#34;https://signpath.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SignPath.io&lt;/a&gt;, certficate by &lt;a class=&#34;link&#34; href=&#34;https://signpath.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SignPath Foundation&lt;/a&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- CONTRIBUTING --&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;Contributions make the open source community an amazing place to learn, inspire, and create. Any contributions you make are &lt;strong&gt;greatly appreciated&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If you have a suggestion, fork the repo and create a pull request. You can also simply open an issue with the &amp;ldquo;Enhancement&amp;rdquo; tag. Don&amp;rsquo;t forget to give the project a star⭐! Thanks again!&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fork the Project&lt;/li&gt;
&lt;li&gt;Create your Feature Branch (git checkout -b feature/AmazingFeature)&lt;/li&gt;
&lt;li&gt;Commit your Changes (git commit -m &amp;lsquo;Add some AmazingFeature&amp;rsquo;)&lt;/li&gt;
&lt;li&gt;Push to the Branch (git push origin feature/AmazingFeature)&lt;/li&gt;
&lt;li&gt;Open a Pull Request&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Thanks to all contributors who have participated in this project!&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/XiaoYouChR/Ghost-Downloader-3/graphs/contributors&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;http://contrib.nn.ci/api?repo=XiaoYouChR/Ghost-Downloader-3&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Contributors&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!-- SCREEN SHOTS --&gt;
&lt;h2 id=&#34;screenshots&#34;&gt;Screenshots
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://space.bilibili.com/437313511&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://producthunt.programnotes.cn/resources/screenshot.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Demo Screenshot&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!-- LICENSE --&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;Distributed under the GPL v3.0 License. See &lt;code&gt;LICENSE&lt;/code&gt; for more information.&lt;/p&gt;
&lt;p&gt;Copyright © 2025 XiaoYouChR.&lt;/p&gt;
&lt;!-- CONTACT --&gt;
&lt;h2 id=&#34;contact&#34;&gt;Contact
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;mailto:XiaoYouChR@qq.com&#34; &gt;E-mail&lt;/a&gt; - &lt;a class=&#34;link&#34; href=&#34;mailto:XiaoYouChR@qq.com&#34; &gt;XiaoYouChR@qq.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://qm.qq.com/q/PlUBdzqZCm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;QQ Group&lt;/a&gt; - 531928387&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- ACKNOWLEDGMENTS --&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/zhiyiYo/PyQt-Fluent-Widgets&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PyQt-Fluent-Widgets&lt;/a&gt; Powerful, extensible and beautiful Fluent Design widgets&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/projectdiscovery/httpx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Httpx&lt;/a&gt; A fast and multi-purpose HTTP toolkit&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Tinche/aiofiles&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Aiofiles&lt;/a&gt; File support for asyncio&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Delgan/loguru&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Loguru&lt;/a&gt; A library which aims to bring enjoyable logging in Python&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Nuitka/Nuitka&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Nuitka&lt;/a&gt; The Python compiler&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/PySide/pyside-setup&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PySide6&lt;/a&gt; The official Python module&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/albertosottile/darkdetect&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Darkdetect&lt;/a&gt; Allow to detect if the user is using Dark Mode on&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/AresConnor/pyqt5-concurrent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pyqt5-concurrent&lt;/a&gt; A QThreadPool based task concurrency library&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;acknowledgments&#34;&gt;Acknowledgments
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/zhiyiYo/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@zhiyiYo&lt;/a&gt; Provided great help for this project!&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://space.bilibili.com/554365148/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@一只透明人-&lt;/a&gt; Tested almost every version since Ghost-Downloader-1！&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/SuGar0218/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Sky·SuGar&lt;/a&gt; Created the project banner！&lt;/li&gt;
&lt;/ul&gt;
&lt;picture&gt;
  &lt;source
    media=&#34;(prefers-color-scheme: dark)&#34;
    srcset=&#34;
      https://api.star-history.com/svg?repos=XiaoYouChR/Ghost-Downloader-3&amp;type=Date&amp;theme=dark
    &#34;
  /&gt;
  &lt;source
    media=&#34;(prefers-color-scheme: light)&#34;
    srcset=&#34;
      https://api.star-history.com/svg?repos=XiaoYouChR/Ghost-Downloader-3&amp;type=Date&amp;theme=dark
    &#34;
  /&gt;
  &lt;img
    alt=&#34;Star History Chart&#34;
    src=&#34;https://api.star-history.com/svg?repos=XiaoYouChR/Ghost-Downloader-3&amp;type=Date&amp;theme=dark&#34;
  /&gt;
&lt;/picture&gt;
&lt;!-- MARKDOWN LINKS &amp; IMAGES --&gt;
&lt;!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --&gt;
</description>
        </item>
        <item>
        <title>zed</title>
        <link>https://producthunt.programnotes.cn/en/p/zed/</link>
        <pubDate>Mon, 12 May 2025 15:29:07 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/zed/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1672173234737-684207ad12a0?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDcwMzQ4OTF8&amp;ixlib=rb-4.1.0" alt="Featured image of post zed" /&gt;&lt;h1 id=&#34;zed-industrieszed&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/zed-industries/zed&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;zed-industries/zed&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;zed&#34;&gt;Zed
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/zed-industries/zed/actions/workflows/ci.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/zed-industries/zed/actions/workflows/ci.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Welcome to Zed, a high-performance, multiplayer code editor from the creators of &lt;a class=&#34;link&#34; href=&#34;https://github.com/atom/atom&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Atom&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://github.com/tree-sitter/tree-sitter&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tree-sitter&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation
&lt;/h3&gt;&lt;a href=&#34;https://repology.org/project/zed-editor/versions&#34;&gt;
    &lt;img src=&#34;https://repology.org/badge/vertical-allrepos/zed-editor.svg?minversion=0.143.5&#34; alt=&#34;Packaging status&#34; align=&#34;right&#34;&gt;
&lt;/a&gt;
&lt;p&gt;On macOS and Linux you can &lt;a class=&#34;link&#34; href=&#34;https://zed.dev/download&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;download Zed directly&lt;/a&gt; or &lt;a class=&#34;link&#34; href=&#34;https://zed.dev/docs/linux#installing-via-a-package-manager&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;install Zed via your local package manager&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Other platforms are not yet available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows (&lt;a class=&#34;link&#34; href=&#34;https://github.com/zed-industries/zed/issues/5394&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tracking issue&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Web (&lt;a class=&#34;link&#34; href=&#34;https://github.com/zed-industries/zed/issues/5396&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tracking issue&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;developing-zed&#34;&gt;Developing Zed
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./docs/src/development/macos.md&#34; &gt;Building Zed for macOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./docs/src/development/linux.md&#34; &gt;Building Zed for Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./docs/src/development/windows.md&#34; &gt;Building Zed for Windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./docs/src/development/local-collaboration.md&#34; &gt;Running Collaboration Locally&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;contributing&#34;&gt;Contributing
&lt;/h3&gt;&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;./CONTRIBUTING.md&#34; &gt;CONTRIBUTING.md&lt;/a&gt; for ways you can contribute to Zed.&lt;/p&gt;
&lt;p&gt;Also&amp;hellip; we&amp;rsquo;re hiring! Check out our &lt;a class=&#34;link&#34; href=&#34;https://zed.dev/jobs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;jobs&lt;/a&gt; page for open roles.&lt;/p&gt;
&lt;h3 id=&#34;licensing&#34;&gt;Licensing
&lt;/h3&gt;&lt;p&gt;License information for third party dependencies must be correctly provided for CI to pass.&lt;/p&gt;
&lt;p&gt;We use &lt;a class=&#34;link&#34; href=&#34;https://github.com/EmbarkStudios/cargo-about&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;cargo-about&lt;/code&gt;&lt;/a&gt; to automatically comply with open source licenses. If CI is failing, check the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is it showing a &lt;code&gt;no license specified&lt;/code&gt; error for a crate you&amp;rsquo;ve created? If so, add &lt;code&gt;publish = false&lt;/code&gt; under &lt;code&gt;[package]&lt;/code&gt; in your crate&amp;rsquo;s Cargo.toml.&lt;/li&gt;
&lt;li&gt;Is the error &lt;code&gt;failed to satisfy license requirements&lt;/code&gt; for a dependency? If so, first determine what license the project has and whether this system is sufficient to comply with this license&amp;rsquo;s requirements. If you&amp;rsquo;re unsure, ask a lawyer. Once you&amp;rsquo;ve verified that this system is acceptable add the license&amp;rsquo;s SPDX identifier to the &lt;code&gt;accepted&lt;/code&gt; array in &lt;code&gt;script/licenses/zed-licenses.toml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Is &lt;code&gt;cargo-about&lt;/code&gt; unable to find the license for a dependency? If so, add a clarification field at the end of &lt;code&gt;script/licenses/zed-licenses.toml&lt;/code&gt;, as specified in the &lt;a class=&#34;link&#34; href=&#34;https://embarkstudios.github.io/cargo-about/cli/generate/config.html#crate-configuration&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cargo-about book&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>go-cursor-help</title>
        <link>https://producthunt.programnotes.cn/en/p/go-cursor-help/</link>
        <pubDate>Thu, 08 May 2025 15:29:41 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/go-cursor-help/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1718036094456-5f57368fdabd?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDY2ODkzMTF8&amp;ixlib=rb-4.1.0" alt="Featured image of post go-cursor-help" /&gt;&lt;h1 id=&#34;yuaotiango-cursor-help&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/yuaotian/go-cursor-help&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;yuaotian/go-cursor-help&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;-cursor-free-trial-reset-tool&#34;&gt;🚀 Cursor Free Trial Reset Tool
&lt;/h1&gt;&lt;div align=&#34;center&#34;&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/yuaotian/go-cursor-help/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/v/release/yuaotian/go-cursor-help?style=flat-square&amp;amp;logo=github&amp;amp;color=blue&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Release&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/yuaotian/go-cursor-help/blob/master/LICENSE&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square&amp;amp;logo=bookstack&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;License&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/yuaotian/go-cursor-help/stargazers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/stars/yuaotian/go-cursor-help?style=flat-square&amp;amp;logo=github&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Stars&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;README.md&#34; &gt;🌟 English&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;README_CN.md&#34; &gt;🌏 中文&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;README_JP.md&#34; &gt;🌏 日本語&lt;/a&gt;&lt;/p&gt;
&lt;img src=&#34;https://ai-cursor.com/wp-content/uploads/2024/09/logo-cursor-ai-png.webp&#34; alt=&#34;Cursor Logo&#34; width=&#34;120&#34;/&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;IMPORTANT NOTICE&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This tool currently supports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ Windows: Latest 0.49.x versions (Supported)&lt;/li&gt;
&lt;li&gt;✅ Mac/Linux: Latest 0.49.x versions (Supported, feedback welcome)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please check your Cursor version before using this tool.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;details open&gt;
&lt;summary&gt;&lt;b&gt;📦 Version History &amp; Downloads&lt;/b&gt;&lt;/summary&gt;
&lt;div class=&#34;version-card&#34; style=&#34;background: linear-gradient(135deg, #6e8efb, #a777e3); border-radius: 8px; padding: 15px; margin: 10px 0; color: white;&#34;&gt;
&lt;h3 id=&#34;-latest-versions&#34;&gt;🌟 Latest Versions
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;[CursorHistoryDown.md]%28https://github.com/oslook/cursor-ai-downloads?tab=readme-ov-file%29&#34; &gt;View Full Version History&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;⚠️ &lt;strong&gt;General Solutions for Cursor&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Close Cursor, log out of your account, and delete your account in the official website Settings (refresh IP node: Japan, Singapore, USA, Hong Kong, prioritizing low latency - not necessarily required but change if conditions allow; Windows users are recommended to refresh DNS cache: &lt;code&gt;ipconfig /flushdns&lt;/code&gt;)
Go to the Cursor official website to delete your current account
Steps: User avatar -&amp;gt; Setting -&amp;gt; Advanced▼ in the bottom left -&amp;gt; Delete Account&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the machine code refresh script, see the script address below, available in China&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Re-register an account, log in, and open Cursor to resume normal use.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Alternative solution: If still unusable after step [&lt;strong&gt;3&lt;/strong&gt;], or if you encounter problems such as account registration failure or inability to delete an account, this usually means your browser has been identified or restricted by the target website (risk control). In this case, try switching browsers, such as: Edge, Google Chrome, Firefox. (Or, consider using a browser that can modify or randomize browser fingerprint information).&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;⚠️ &lt;strong&gt;MAC Address Modification Warning&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For Mac users: This script includes a MAC address modification feature that will:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modify your network interface&amp;rsquo;s MAC address&lt;/li&gt;
&lt;li&gt;Backup original MAC addresses before modification&lt;/li&gt;
&lt;li&gt;This modification may temporarily affect network connectivity&lt;/li&gt;
&lt;li&gt;You can skip this step when prompted during execution&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;details &gt;
&lt;summary&gt;&lt;b&gt;🔒 Disable Auto-Update Feature&lt;/b&gt;&lt;/summary&gt;
&lt;blockquote&gt;
&lt;p&gt;To prevent Cursor from automatically updating to unsupported new versions, you can choose to disable the auto-update feature.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;method-1-using-built-in-script-recommended&#34;&gt;Method 1: Using Built-in Script (Recommended)
&lt;/h4&gt;&lt;p&gt;When running the reset tool, the script will ask if you want to disable auto-updates:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[Question] Do you want to disable Cursor auto-update feature?
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;0) No - Keep default settings (Press Enter)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1) Yes - Disable auto-update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Select &lt;code&gt;1&lt;/code&gt; to automatically complete the disable operation.&lt;/p&gt;
&lt;h4 id=&#34;method-2-manual-disable&#34;&gt;Method 2: Manual Disable
&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;Windows:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Close all Cursor processes&lt;/li&gt;
&lt;li&gt;Delete directory: &lt;code&gt;%LOCALAPPDATA%\cursor-updater&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create a file with the same name (without extension) in the same location&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;macOS:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# NOTE: As tested, this method only works for version 0.45.11 and below.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Close Cursor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pkill -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;Cursor&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Replacing app-update.yml with a blank/read-only file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /Applications/Cursor.app/Contents/Resources
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mv app-update.yml app-update.yml.bak
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;touch app-update.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod &lt;span class=&#34;m&#34;&gt;444&lt;/span&gt; app-update.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Go to Settings -&amp;gt; Application -&amp;gt; Update, set Mode to none.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# This must be done to prevent Cursor from checking for updates.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# NOTE: The cursor-updater modification method may no longer be effective&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# In any case, remove update directory and create blocking file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -rf ~/Library/Application&lt;span class=&#34;se&#34;&gt;\ &lt;/span&gt;Support/Caches/cursor-updater
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;touch ~/Library/Application&lt;span class=&#34;se&#34;&gt;\ &lt;/span&gt;Support/Caches/cursor-updater
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Linux:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Close Cursor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pkill -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;Cursor&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Remove update directory and create blocking file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -rf ~/.config/cursor-updater
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;touch ~/.config/cursor-updater
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Note:&lt;/strong&gt; After disabling auto-updates, you&amp;rsquo;ll need to manually download and install new versions. It&amp;rsquo;s recommended to update only after confirming the new version is compatible.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/details&gt;
&lt;hr&gt;
&lt;h3 id=&#34;-description&#34;&gt;📝 Description
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;When you encounter any of these messages:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;issue-1-trial-account-limit&#34;&gt;Issue 1: Trial Account Limit &lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#issue1&#34;&gt;&lt;img src=&#34;https://img.shields.io/badge/Move%20to%20Solution-Blue?style=plastic&#34; alt=&#34;Back To Top&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Too many free trial accounts used on this machine.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Please upgrade to pro. We have this limit in place
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;to prevent abuse. Please let us know if you believe
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;this is a mistake.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;issue-2-api-key-limitation&#34;&gt;Issue 2: API Key Limitation &lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#issue2&#34;&gt;&lt;img src=&#34;https://img.shields.io/badge/Move%20to%20Solution-green?style=plastic&#34; alt=&#34;Back To Top&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[New Issue]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Composer relies on custom models that cannot be billed to an API key.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Please disable API keys and use a Pro or Business subscription.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;issue-3-trial-request-limit&#34;&gt;Issue 3: Trial Request Limit
&lt;/h4&gt;&lt;blockquote&gt;
&lt;p&gt;This indicates you&amp;rsquo;ve reached the usage limit during the VIP free trial period:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;You&amp;#39;ve reached your trial request limit.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;issue-4-claude-37-high-load&#34;&gt;Issue 4: Claude 3.7 High Load &lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#issue4&#34;&gt;&lt;img src=&#34;https://img.shields.io/badge/Move%20to%20Solution-purple?style=plastic&#34; alt=&#34;Back To Top&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High Load 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;We&amp;#39;re experiencing high demand for Claude 3.7 Sonnet right now. Please upgrade to Pro, or switch to the
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#39;default&amp;#39; model, Claude 3.5 sonnet, another model, or try again in a few moments.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br&gt;
&lt;p id=&#34;issue2&#34;&gt;&lt;/p&gt;
&lt;h4 id=&#34;solution--uninstall-cursor-completely-and-reinstall-api-key-issue&#34;&gt;Solution : Uninstall Cursor Completely And Reinstall (API key Issue)
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Download &lt;a class=&#34;link&#34; href=&#34;https://geekuninstaller.com/download&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Geek.exe Uninstaller[Free]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Uninstall Cursor app completely&lt;/li&gt;
&lt;li&gt;Re-Install Cursor app&lt;/li&gt;
&lt;li&gt;Continue to Solution 1&lt;/li&gt;
&lt;/ol&gt;
&lt;br&gt;
&lt;p id=&#34;issue1&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Temporary Solution:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;solution-1-quick-reset-recommended&#34;&gt;Solution 1: Quick Reset (Recommended)
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Close Cursor application&lt;/li&gt;
&lt;li&gt;Run the machine code reset script (see installation instructions below)&lt;/li&gt;
&lt;li&gt;Reopen Cursor to continue using&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;solution-2-account-switch&#34;&gt;Solution 2: Account Switch
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;File -&amp;gt; Cursor Settings -&amp;gt; Sign Out&lt;/li&gt;
&lt;li&gt;Close Cursor&lt;/li&gt;
&lt;li&gt;Run the machine code reset script&lt;/li&gt;
&lt;li&gt;Login with a new account&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;solution-3-network-optimization&#34;&gt;Solution 3: Network Optimization
&lt;/h4&gt;&lt;p&gt;If the above solutions don&amp;rsquo;t work, try:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Switch to low-latency nodes (Recommended regions: Japan, Singapore, US, Hong Kong)&lt;/li&gt;
&lt;li&gt;Ensure network stability&lt;/li&gt;
&lt;li&gt;Clear browser cache and retry&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;solution-4-claude-37-access-issue-high-load&#34;&gt;Solution 4: Claude 3.7 Access Issue (High Load)
&lt;/h4&gt;&lt;p&gt;If you see the &amp;ldquo;High Load&amp;rdquo; message for Claude 3.7 Sonnet, this indicates Cursor is limiting free trial accounts from using the 3.7 model during certain times of the day. Try:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Switch to a new account created with Gmail, possibly connecting through a different IP address&lt;/li&gt;
&lt;li&gt;Try accessing during off-peak hours (typically 5-10 AM or 3-7 PM when restrictions are often lighter)&lt;/li&gt;
&lt;li&gt;Consider upgrading to Pro for guaranteed access&lt;/li&gt;
&lt;li&gt;Use Claude 3.5 Sonnet as a fallback option&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: These access patterns may change as Cursor adjusts their resource allocation policies.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;-system-support&#34;&gt;💻 System Support
&lt;/h3&gt;&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt; ✅&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;x64 (64-bit)&lt;/li&gt;
&lt;li&gt;x86 (32-bit)&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;macOS&lt;/strong&gt; ✅&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intel (x64)&lt;/li&gt;
&lt;li&gt;Apple Silicon (M1/M2)&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Linux&lt;/strong&gt; ✅&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;x64 (64-bit)&lt;/li&gt;
&lt;li&gt;x86 (32-bit)&lt;/li&gt;
&lt;li&gt;ARM64&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h3 id=&#34;-one-click-solution&#34;&gt;🚀 One-Click Solution
&lt;/h3&gt;&lt;details open&gt;
&lt;summary&gt;&lt;b&gt;Global Users&lt;/b&gt;&lt;/summary&gt;
&lt;p&gt;&lt;strong&gt;macOS&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Method two&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://aizaozao.com/accelerate.php/https://raw.githubusercontent.com/yuaotian/go-cursor-help/refs/heads/master/scripts/run/cursor_mac_id_modifier.sh -o ./cursor_mac_id_modifier.sh &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo bash ./cursor_mac_id_modifier.sh &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; rm ./cursor_mac_id_modifier.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/yuaotian/go-cursor-help/refs/heads/master/scripts/run/cursor_linux_id_modifier.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo bash 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note for Linux users:&lt;/strong&gt; The script attempts to find your Cursor installation by checking common paths (&lt;code&gt;/usr/bin&lt;/code&gt;, &lt;code&gt;/usr/local/bin&lt;/code&gt;, &lt;code&gt;$HOME/.local/bin&lt;/code&gt;, &lt;code&gt;/opt/cursor&lt;/code&gt;, &lt;code&gt;/snap/bin&lt;/code&gt;), using the &lt;code&gt;which cursor&lt;/code&gt; command, and searching within &lt;code&gt;/usr&lt;/code&gt;, &lt;code&gt;/opt&lt;/code&gt;, and &lt;code&gt;$HOME/.local&lt;/code&gt;. If Cursor is installed elsewhere or not found via these methods, the script may fail. Ensure Cursor is accessible via one of these standard locations or methods.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;irm &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;githubusercontent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;yuaotian&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;go-cursor&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;refs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;heads&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;master&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor_win_id_modifier&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div align=&#34;center&#34;&gt;
&lt;img src=&#34;img/run_success.png&#34; alt=&#34;Run Success&#34; width=&#34;600&#34;/&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;details open&gt;
&lt;summary&gt;&lt;b&gt;China Users (Recommended)&lt;/b&gt;&lt;/summary&gt;
&lt;p&gt;&lt;strong&gt;macOS&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://aizaozao.com/accelerate.php/https://raw.githubusercontent.com/yuaotian/go-cursor-help/refs/heads/master/scripts/run/cursor_mac_id_modifier.sh -o ./cursor_mac_id_modifier.sh &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo bash ./cursor_mac_id_modifier.sh &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; rm ./cursor_mac_id_modifier.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://aizaozao.com/accelerate.php/https://raw.githubusercontent.com/yuaotian/go-cursor-help/refs/heads/master/scripts/run/cursor_linux_id_modifier.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;irm &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;aizaozao&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;accelerate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;php&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;githubusercontent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;yuaotian&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;go-cursor&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;refs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;heads&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;master&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor_win_id_modifier&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;details open&gt;
&lt;summary&gt;&lt;b&gt;Windows Terminal Run and Configuration&lt;/b&gt;&lt;/summary&gt;
&lt;h4 id=&#34;how-to-open-administrator-terminal-in-windows&#34;&gt;How to Open Administrator Terminal in Windows:
&lt;/h4&gt;&lt;h5 id=&#34;method-1-using-win--x-shortcut&#34;&gt;Method 1: Using Win + X Shortcut
&lt;/h5&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; Press Win + X key combination
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; Select one of these options from the menu:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &amp;#34;Windows PowerShell (Administrator)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &amp;#34;Windows Terminal (Administrator)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &amp;#34;Terminal (Administrator)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   (Options may vary depending on Windows version)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h5 id=&#34;method-2-using-win--r-run-command&#34;&gt;Method 2: Using Win + R Run Command
&lt;/h5&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; Press Win + R key combination
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; Type powershell or pwsh in the Run dialog
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; Press Ctrl + Shift + Enter to run as administrator
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   or type in the opened window: Start-Process pwsh -Verb RunAs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; Enter the reset script in the administrator terminal:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;irm https://aizaozao.com/accelerate.php/https://raw.githubusercontent.com/yuaotian/go-cursor-help/refs/heads/master/scripts/run/cursor_win_id_modifier.ps1 | iex
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h5 id=&#34;method-3-using-search&#34;&gt;Method 3: Using Search
&lt;/h5&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/img/pwsh_1.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Search PowerShell&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Type pwsh in the search box, right-click and select &amp;ldquo;Run as administrator&amp;rdquo;
&lt;img src=&#34;https://producthunt.programnotes.cn/img/pwsh_2.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Run as Administrator&#34;
	
	
&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Enter the reset script in the administrator terminal:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;irm &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;aizaozao&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;accelerate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;php&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;githubusercontent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;yuaotian&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;go-cursor&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-help&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;refs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;heads&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;master&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor_win_id_modifier&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;-powershell-installation-guide&#34;&gt;🔧 PowerShell Installation Guide
&lt;/h3&gt;&lt;p&gt;If PowerShell is not installed on your system, you can install it using one of these methods:&lt;/p&gt;
&lt;h4 id=&#34;method-1-install-via-winget-recommended&#34;&gt;Method 1: Install via Winget (Recommended)
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Open Command Prompt or PowerShell&lt;/li&gt;
&lt;li&gt;Run the following command:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;winget&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-id&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Microsoft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;PowerShell&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-source&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;winget&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;method-2-manual-installation&#34;&gt;Method 2: Manual Installation
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Download the installer for your system:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/PowerShell/PowerShell/releases/download/v7.4.6/PowerShell-7.4.6-win-x64.msi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PowerShell-7.4.6-win-x64.msi&lt;/a&gt; (64-bit systems)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/PowerShell/PowerShell/releases/download/v7.4.6/PowerShell-7.4.6-win-x86.msi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PowerShell-7.4.6-win-x86.msi&lt;/a&gt; (32-bit systems)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/PowerShell/PowerShell/releases/download/v7.4.6/PowerShell-7.4.6-win-arm64.msi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PowerShell-7.4.6-win-arm64.msi&lt;/a&gt; (ARM64 systems)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Double-click the downloaded installer and follow the installation prompts&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 If you encounter any issues, please refer to the &lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Official Installation Guide&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/details&gt;
&lt;h4 id=&#34;windows-安装特性&#34;&gt;Windows 安装特性:
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;🔍 Automatically detects and uses PowerShell 7 if available&lt;/li&gt;
&lt;li&gt;🛡️ Requests administrator privileges via UAC prompt&lt;/li&gt;
&lt;li&gt;📝 Falls back to Windows PowerShell if PS7 isn&amp;rsquo;t found&lt;/li&gt;
&lt;li&gt;💡 Provides manual instructions if elevation fails&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;rsquo;s it! The script will:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;✨ Install the tool automatically&lt;/li&gt;
&lt;li&gt;🔄 Reset your Cursor trial immediately&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;-manual-installation&#34;&gt;📦 Manual Installation
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;Download the appropriate file for your system from &lt;a class=&#34;link&#34; href=&#34;https://github.com/yuaotian/go-cursor-help/releases/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;releases&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;details&gt;
&lt;summary&gt;Windows Packages&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;64-bit: &lt;code&gt;cursor-id-modifier_windows_x64.exe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;32-bit: &lt;code&gt;cursor-id-modifier_windows_x86.exe&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;macOS Packages&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;Intel: &lt;code&gt;cursor-id-modifier_darwin_x64_intel&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;M1/M2: &lt;code&gt;cursor-id-modifier_darwin_arm64_apple_silicon&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;Linux Packages&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;64-bit: &lt;code&gt;cursor-id-modifier_linux_x64&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;32-bit: &lt;code&gt;cursor-id-modifier_linux_x86&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;ARM64: &lt;code&gt;cursor-id-modifier_linux_arm64&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id=&#34;-technical-details&#34;&gt;🔧 Technical Details
&lt;/h3&gt;&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Configuration Files&lt;/b&gt;&lt;/summary&gt;
&lt;p&gt;The program modifies Cursor&amp;rsquo;s &lt;code&gt;storage.json&lt;/code&gt; config file located at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows: &lt;code&gt;%APPDATA%\Cursor\User\globalStorage\storage.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS: &lt;code&gt;~/Library/Application Support/Cursor/User/globalStorage/storage.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Linux: &lt;code&gt;~/.config/Cursor/User/globalStorage/storage.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Modified Fields&lt;/b&gt;&lt;/summary&gt;
&lt;p&gt;The tool generates new unique identifiers for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;telemetry.machineId&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;telemetry.macMachineId&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;telemetry.devDeviceId&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;telemetry.sqmId&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Manual Auto-Update Disable&lt;/b&gt;&lt;/summary&gt;
&lt;p&gt;Windows users can manually disable the auto-update feature:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Close all Cursor processes&lt;/li&gt;
&lt;li&gt;Delete directory: &lt;code&gt;C:\Users\username\AppData\Local\cursor-updater&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create a file with the same name: &lt;code&gt;cursor-updater&lt;/code&gt; (without extension)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;macOS/Linux users can try to locate similar &lt;code&gt;cursor-updater&lt;/code&gt; directory in their system and perform the same operation.&lt;/p&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Safety Features&lt;/b&gt;&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;✅ Safe process termination&lt;/li&gt;
&lt;li&gt;✅ Atomic file operations&lt;/li&gt;
&lt;li&gt;✅ Error handling and recovery&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Registry Modification Notice&lt;/b&gt;&lt;/summary&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Important: This tool modifies the Windows Registry&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;modified-registry&#34;&gt;Modified Registry
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Path: &lt;code&gt;Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Key: &lt;code&gt;MachineGuid&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;potential-impact&#34;&gt;Potential Impact
&lt;/h4&gt;&lt;p&gt;Modifying this registry key may affect:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows system&amp;rsquo;s unique device identification&lt;/li&gt;
&lt;li&gt;Device recognition and authorization status of certain software&lt;/li&gt;
&lt;li&gt;System features based on hardware identification&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;safety-measures&#34;&gt;Safety Measures
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Automatic Backup&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Original value is automatically backed up before modification&lt;/li&gt;
&lt;li&gt;Backup location: &lt;code&gt;%APPDATA%\Cursor\User\globalStorage\backups&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Backup file format: &lt;code&gt;MachineGuid.backup_YYYYMMDD_HHMMSS&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Manual Recovery Steps&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open Registry Editor (regedit)&lt;/li&gt;
&lt;li&gt;Navigate to: &lt;code&gt;Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Right-click on &lt;code&gt;MachineGuid&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Select &amp;ldquo;Modify&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Paste the value from backup file&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;important-notes&#34;&gt;Important Notes
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Verify backup file existence before modification&lt;/li&gt;
&lt;li&gt;Use backup file to restore original value if needed&lt;/li&gt;
&lt;li&gt;Administrator privileges required for registry modification&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;hr&gt;
&lt;h3 id=&#34;-recommended-reading&#34;&gt;📚 Recommended Reading
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mp.weixin.qq.com/s/pnJrH7Ifx4WZvseeP1fcEA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cursor Issues Collection and Solutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mp.weixin.qq.com/s/PRPz-qVkFJSgkuEKkTdzwg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI Universal Development Assistant Prompt Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;support&#34;&gt;Support
&lt;/h2&gt;&lt;div align=&#34;center&#34;&gt;
&lt;b&gt;If you find this helpful, consider buying me a spicy gluten snack (Latiao) as appreciation~ 💁☕️&lt;/b&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td align=&#34;center&#34;&gt;
&lt;b&gt;微信赞赏&lt;/b&gt;&lt;br&gt;
&lt;img src=&#34;img/wx_zsm2.png&#34; width=&#34;500&#34; alt=&#34;微信赞赏码&#34;&gt;&lt;br&gt;
&lt;small&gt;要到饭咧？啊咧？啊咧？不给也没事~ 请随意打赏&lt;/small&gt;
&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;
&lt;b&gt;支付宝赞赏&lt;/b&gt;&lt;br&gt;
&lt;img src=&#34;img/alipay.png&#34; width=&#34;500&#34; alt=&#34;支付宝赞赏码&#34;&gt;&lt;br&gt;
&lt;small&gt;如果觉得有帮助,来包辣条犒劳一下吧~&lt;/small&gt;
&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;
&lt;b&gt;Alipay&lt;/b&gt;&lt;br&gt;
&lt;img src=&#34;img/alipay_scan_pay.jpg&#34; width=&#34;500&#34; alt=&#34;Alipay&#34;&gt;&lt;br&gt;
&lt;em&gt;1 Latiao = 1 AI thought cycle&lt;/em&gt;
&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;
&lt;b&gt;WeChat&lt;/b&gt;&lt;br&gt;
&lt;img src=&#34;img/qun-12.png&#34; width=&#34;500&#34; alt=&#34;WeChat&#34;&gt;&lt;br&gt;
&lt;em&gt;二维码7天内(4月25日前)有效，过期请加微信&lt;/em&gt;
&lt;/td&gt;
&lt;!-- &lt;td align=&#34;center&#34;&gt;
&lt;b&gt;ETC&lt;/b&gt;&lt;br&gt;
&lt;img src=&#34;img/etc.png&#34; width=&#34;100&#34; alt=&#34;ETC Address&#34;&gt;&lt;br&gt;
ETC: 0xa2745f4CD5d32310AC01694ABDB28bA32D125a6b
&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt; --&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-project-stats&#34;&gt;⭐ Project Stats
&lt;/h2&gt;&lt;div align=&#34;center&#34;&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://star-history.com/#yuaotian/go-cursor-help&amp;amp;Date&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://api.star-history.com/svg?repos=yuaotian/go-cursor-help&amp;amp;type=Date&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Star History Chart&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://repobeats.axiom.co/api/embed/ddaa9df9a94b0029ec3fad399e1c1c4e75755477.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Repobeats analytics image&#34;
	
	
&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&#34;-license&#34;&gt;📄 License
&lt;/h2&gt;&lt;details&gt;
&lt;summary&gt;&lt;b&gt;MIT License&lt;/b&gt;&lt;/summary&gt;
&lt;p&gt;Copyright (c) 2024&lt;/p&gt;
&lt;p&gt;Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the &amp;ldquo;Software&amp;rdquo;), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:&lt;/p&gt;
&lt;p&gt;The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.&lt;/p&gt;
&lt;/details&gt;
</description>
        </item>
        <item>
        <title>AeroSpace</title>
        <link>https://producthunt.programnotes.cn/en/p/aerospace/</link>
        <pubDate>Tue, 29 Apr 2025 15:30:55 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/aerospace/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1580628646333-99de91e7e8ce?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDU5MTE3MjZ8&amp;ixlib=rb-4.0.3" alt="Featured image of post AeroSpace" /&gt;&lt;h1 id=&#34;nikitabobkoaerospace&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nikitabobko/AeroSpace&lt;/a&gt;
&lt;/h1&gt; &lt;img src=&#34;./resources/Assets.xcassets/AppIcon.appiconset/icon.png&#34; width=&#34;40%&#34; height=&#34;40%&#34; align=&#34;right&#34;&gt;
&lt;h1 id=&#34;aerospace-beta-build&#34;&gt;AeroSpace Beta &lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/actions/workflows/build.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/nikitabobko/AeroSpace/actions/workflows/build.yml/badge.svg?branch=main&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build&#34;
	
	
&gt;&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;AeroSpace is an i3-like tiling window manager for macOS&lt;/p&gt;
&lt;p&gt;Videos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=UOl7ErqWbrk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube 91 sec Demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=-FoWClVHG5g&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube Guide by Josean Martinez&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nikitabobko.github.io/AeroSpace/guide&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AeroSpace Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nikitabobko.github.io/AeroSpace/commands&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AeroSpace Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nikitabobko.github.io/AeroSpace/goodies&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AeroSpace Goodies&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;project-status&#34;&gt;Project status
&lt;/h2&gt;&lt;p&gt;Public Beta. AeroSpace can be used as a daily driver, but expect breaking changes until 1.0 is reached.&lt;/p&gt;
&lt;h2 id=&#34;key-features&#34;&gt;Key features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Tiling window manager based on a &lt;a class=&#34;link&#34; href=&#34;https://nikitabobko.github.io/AeroSpace/guide#tree&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tree paradigm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://i3wm.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;i3&lt;/a&gt; inspired&lt;/li&gt;
&lt;li&gt;Fast workspaces switching without animations and without the necessity to disable SIP&lt;/li&gt;
&lt;li&gt;AeroSpace employs its &lt;a class=&#34;link&#34; href=&#34;https://nikitabobko.github.io/AeroSpace/guide#emulation-of-virtual-workspaces&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;own emulation of virtual workspaces&lt;/a&gt; instead of relying on native macOS Spaces due to &lt;a class=&#34;link&#34; href=&#34;https://nikitabobko.github.io/AeroSpace/guide#emulation-of-virtual-workspaces&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;their considerable limitations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Plain text configuration (dotfiles friendly). See: &lt;a class=&#34;link&#34; href=&#34;https://nikitabobko.github.io/AeroSpace/guide#default-config&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;default-config.toml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CLI first (manpages and shell completion included)&lt;/li&gt;
&lt;li&gt;Doesn&amp;rsquo;t require disabling SIP (System Integrity Protection)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nikitabobko.github.io/AeroSpace/guide#multiple-monitors&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Proper multi-monitor support&lt;/a&gt; (i3-like paradigm)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;Install via &lt;a class=&#34;link&#34; href=&#34;https://brew.sh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Homebrew&lt;/a&gt; to get autoupdates (Preferred)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install --cask nikitabobko/tap/aerospace
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;In multi-monitor setup please make sure that monitors &lt;a class=&#34;link&#34; href=&#34;https://nikitabobko.github.io/AeroSpace/guide#proper-monitor-arrangement&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;are properly arranged&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Other installation options: &lt;a class=&#34;link&#34; href=&#34;https://nikitabobko.github.io/AeroSpace/guide#installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://nikitabobko.github.io/AeroSpace/guide#installation&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
By using AeroSpace, you acknowledge that it&amp;rsquo;s not &lt;a class=&#34;link&#34; href=&#34;https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;notarized&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Notarization is a &amp;ldquo;security&amp;rdquo; feature by Apple.
You send binaries to Apple, and they either approve them or not.
In reality, notarization is about building binaries the way Apple likes it.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t have anything against notarization as a concept.
I specifically don&amp;rsquo;t like the way Apple does notarization.
I don&amp;rsquo;t have time to deal with Apple.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/homebrew-tap/blob/main/Casks/aerospace.rb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Homebrew installation script&lt;/a&gt; is configured to
automatically delete &lt;code&gt;com.apple.quarantine&lt;/code&gt; attribute, that&amp;rsquo;s why the app should work out of the box, without any warnings that
&amp;ldquo;Apple cannot check AeroSpace for malicious software&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;community-discussions-issues&#34;&gt;Community, discussions, issues
&lt;/h2&gt;&lt;p&gt;Unfortunately, AeroSpace project doesn&amp;rsquo;t openly accept Issues.
Please read &lt;a class=&#34;link&#34; href=&#34;./CONTRIBUTING.md&#34; &gt;CONTRIBUTING.md&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;Community discussions happen at GitHub Discussions.
There you can discuss bugs, propose new features, ask your questions, show off your setup, or just chat.&lt;/p&gt;
&lt;p&gt;There are 7 channels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#all&lt;/a&gt;.
&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions.atom?discussions_q=sort%3Adate_created&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RSS&lt;/a&gt;.
Feed with all discussions.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions/categories/announcements&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#announcements&lt;/a&gt;.
&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions/categories/announcements.atom?discussions_q=category%3Aannouncements&amp;#43;sort%3Adate_created&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RSS&lt;/a&gt;.
Only maintainers can post here.
Highly moderated traffic.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions/categories/announcements-releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#announcements-releases&lt;/a&gt;.
&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions/categories/announcements-releases.atom?discussions_q=category%3Aannouncements-releases&amp;#43;sort%3Adate_created&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RSS&lt;/a&gt;.
Announcements about non-patch releases.
Only maintainers can post here.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions/categories/feature-ideas&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#feature-ideas&lt;/a&gt;.
&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions/categories/feature-ideas.atom?discussions_q=category%3Afeature-ideas&amp;#43;sort%3Adate_created&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RSS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions/categories/general&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#general&lt;/a&gt;.
&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions/categories/general.atom?discussions_q=sort%3Adate_created&amp;#43;category%3Ageneral&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RSS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#potential-bugs&lt;/a&gt;.
&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs.atom?discussions_q=category%3Apotential-bugs&amp;#43;sort%3Adate_created&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RSS&lt;/a&gt;.
If you think that you have encountered a bug, you can discuss your bugs here.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions/categories/questions-and-answers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#questions-and-answers&lt;/a&gt;.
&lt;a class=&#34;link&#34; href=&#34;https://github.com/nikitabobko/AeroSpace/discussions/categories/questions-and-answers.atom?discussions_q=category%3Aquestions-and-answers&amp;#43;sort%3Adate_created&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RSS&lt;/a&gt;.
Everyone is welcome to ask questions.
Everyone is encouraged to answer other people&amp;rsquo;s questions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;development&#34;&gt;Development
&lt;/h2&gt;&lt;p&gt;A notes on how to setup the project, build it, how to run the tests, etc. can be found here: &lt;a class=&#34;link&#34; href=&#34;./dev-docs/development.md&#34; &gt;dev-docs/development.md&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;project-values&#34;&gt;Project values
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Values&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AeroSpace is targeted at advanced users and developers&lt;/li&gt;
&lt;li&gt;Keyboard centric&lt;/li&gt;
&lt;li&gt;Breaking changes (configuration files, CLI, behavior) are avoided as much as possible, but it must not let the software stagnate.
Thus breaking changes can happen, but with careful considerations and helpful message.
&lt;a class=&#34;link&#34; href=&#34;https://semver.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Semver&lt;/a&gt; major version is bumped in case of a breaking change (It&amp;rsquo;s all guaranteed once AeroSpace reaches 1.0 version, until then breaking changes just happen)&lt;/li&gt;
&lt;li&gt;AeroSpace doesn&amp;rsquo;t use GUI, unless necessarily
&lt;ul&gt;
&lt;li&gt;AeroSpace will never provide a GUI for configuration.
For advanced users, it&amp;rsquo;s easier to edit a configuration file in text editor rather than navigating through checkboxes in GUI.&lt;/li&gt;
&lt;li&gt;Status menu icon is ok, because visual feedback is needed&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Provide &lt;em&gt;practical&lt;/em&gt; features. Fancy appearance features are not &lt;em&gt;practical&lt;/em&gt; (e.g. window borders, transparency, animations, etc.)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;dark magic&amp;rdquo; (aka &amp;ldquo;private APIs&amp;rdquo;, &amp;ldquo;code injections&amp;rdquo;, etc.) must be avoided as much as possible
&lt;ul&gt;
&lt;li&gt;Right now, AeroSpace uses only a single private API to get window ID of accessibility object &lt;code&gt;_AXUIElementGetWindow&lt;/code&gt;.
Everything else is &lt;a class=&#34;link&#34; href=&#34;https://developer.apple.com/documentation/applicationservices/axuielement_h&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;macOS public accessibility API&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;AeroSpace will never require you to disable SIP (System Integrity Protection).&lt;/li&gt;
&lt;li&gt;The goal is to make AeroSpace easily maintainable, and resistant to macOS updates.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Non Values&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Play nicely with existing macOS features.
If limitations are imposed then AeroSpace won&amp;rsquo;t play nicely with existing macOS features
(For example, AeroSpace doesn&amp;rsquo;t acknowledge the existence of macOS Spaces, and it uses &lt;a class=&#34;link&#34; href=&#34;https://nikitabobko.github.io/AeroSpace/guide#emulation-of-virtual-workspaces&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;emulation of its own workspaces&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Ricing.
AeroSpace provides only a very minimal support for ricing - gaps and a few callbacks for integrations with bars.
The current maintainer doesn&amp;rsquo;t care about ricing.
Ricing issues are not a priority, and they are mostly ignored.
The ricing stance can change only with the appearance of more maintainers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;tip-of-the-day&#34;&gt;Tip of the day
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;defaults write -g NSWindowShouldDragOnGesture -bool &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Now, you can move windows by holding &lt;code&gt;ctrl&lt;/code&gt;+&lt;code&gt;cmd&lt;/code&gt; and dragging any part of the window (not necessarily the window title)&lt;/p&gt;
&lt;p&gt;Source: &lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/MacOS/comments/k6hiwk/keyboard_modifier_to_simplify_click_drag_of/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;reddit&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;related-projects&#34;&gt;Related projects
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ianyh/Amethyst&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Amethyst&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/koekeishiya/yabai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;yabai&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>v2rayN</title>
        <link>https://producthunt.programnotes.cn/en/p/v2rayn/</link>
        <pubDate>Mon, 28 Apr 2025 15:56:26 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/v2rayn/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1713094735214-9c0a970d85d7?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDU4MjY4OTJ8&amp;ixlib=rb-4.0.3" alt="Featured image of post v2rayN" /&gt;&lt;h1 id=&#34;2dustv2rayn&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/2dust/v2rayN&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;2dust/v2rayN&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;v2rayn&#34;&gt;v2rayN
&lt;/h1&gt;&lt;p&gt;A GUI client for Windows, Linux and macOS, support &lt;a class=&#34;link&#34; href=&#34;https://github.com/XTLS/Xray-core&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Xray&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://github.com/SagerNet/sing-box/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sing-box&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://github.com/2dust/v2rayN/wiki/List-of-supported-cores&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;others&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/2dust/v2rayN/commits/master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/commit-activity/m/2dust/v2rayN&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub commit activity&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://www.codefactor.io/repository/github/2dust/v2rayn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://www.codefactor.io/repository/github/2dust/v2rayn/badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CodeFactor&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/2dust/v2rayN/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/downloads/2dust/v2rayN/latest/total?logo=github&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub Releases&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://t.me/v2rayn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Chat%20on-Telegram-brightgreen.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Chat on Telegram&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;how-to-use&#34;&gt;How to use
&lt;/h2&gt;&lt;p&gt;Read the &lt;a class=&#34;link&#34; href=&#34;https://github.com/2dust/v2rayN/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Wiki&lt;/a&gt; for details.&lt;/p&gt;
&lt;h2 id=&#34;telegram-channel&#34;&gt;Telegram Channel
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://t.me/github_2dust&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github_2dust&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>swift</title>
        <link>https://producthunt.programnotes.cn/en/p/swift/</link>
        <pubDate>Thu, 10 Apr 2025 15:27:49 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/swift/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1666032309795-9c48fd1a6d5a?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDQyNzAwMzJ8&amp;ixlib=rb-4.0.3" alt="Featured image of post swift" /&gt;&lt;h1 id=&#34;swiftlangswift&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/swiftlang/swift&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;swiftlang/swift&lt;/a&gt;
&lt;/h1&gt;&lt;picture&gt;
  &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;https://www.swift.org/assets/images/swift~dark.svg&#34;&gt;
  &lt;img src=&#34;https://www.swift.org/assets/images/swift.svg&#34; alt=&#34;Swift logo&#34; height=&#34;70&#34;&gt;
&lt;/picture&gt;
&lt;h1 id=&#34;swift-programming-language&#34;&gt;Swift Programming Language
&lt;/h1&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Build&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;macOS&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;x86_64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-macos&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-macos/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Ubuntu 20.04&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;x86_64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-ubuntu-20_04&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-ubuntu-20_04/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Ubuntu 20.04&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;AArch64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-ubuntu-20_04-aarch64&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-ubuntu-20_04-aarch64/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Ubuntu 22.04&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;x86_64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-ubuntu-22_04&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-ubuntu-22_04/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Ubuntu 22.04&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;AArch64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-ubuntu-22_04-aarch64&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-ubuntu-22_04-aarch64/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Ubuntu 24.04&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;x86_64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-ubuntu-24_04&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-ubuntu-24_04/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Ubuntu 24.04&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;AArch64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-ubuntu-24_04-aarch64&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-ubuntu-24_04-aarch64/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Amazon Linux 2&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;x86_64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-amazon-linux-2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-amazon-linux-2/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Amazon Linux 2&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;AArch64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-amazon-linux-2-aarch64&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-amazon-linux-2-aarch64/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Universal Base Image 9&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;x86_64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-ubi-9&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-ubi-9/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Debian 12&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;x86_64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-debian-12&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-debian-12/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Debian 12&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;AArch64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-debian-12-aarch64&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-debian-12-aarch64/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Fedora 39&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;x86_64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-fedora-39&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-fedora-39/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Fedora 39&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;AArch64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-package-fedora-39-aarch64&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-package-fedora-39-aarch64/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Windows 10&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;x86_64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci-external.swift.org/job/swift-main-windows-toolchain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci-external.swift.org/job/swift-main-windows-toolchain/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Windows 10&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;ARM64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci-external.swift.org/job/swift-main-windows-toolchain-arm64&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci-external.swift.org/job/swift-main-windows-toolchain-arm64/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Cross-Compilation Targets&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Target&lt;/strong&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Build&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;wasm32-unknown-wasi&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci.swift.org/job/oss-swift-pr-test-crosscompile-wasm-ubuntu-20_04&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci.swift.org/job/oss-swift-pr-test-crosscompile-wasm-ubuntu-20_04/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Swift Community-Hosted CI Platforms&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;OS&lt;/strong&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Build&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/swiftlang/swift-community-hosted-continuous-integration/blob/main/nodes/x86_64_ubuntu_24_04_android.json&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Android&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;X86_64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-24.04-android-build&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-24.04-android-build/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/swiftlang/swift-community-hosted-continuous-integration/blob/main/nodes/aarch64_ubuntu_24_04_android.json&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Android&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;AArch64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-24.04-android-arm64&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-24.04-android-arm64/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/apple/swift-community-hosted-continuous-integration/blob/main/nodes/x86_64_windows_2019_VS2019.json&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Windows 2019 (VS 2019)&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;x86_64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://ci-external.swift.org/job/oss-swift-windows-x86_64-vs2019&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://ci-external.swift.org/job/oss-swift-windows-x86_64-vs2019/lastCompletedBuild/badge/icon&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Build Status&#34;
	
	
&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;welcome-to-swift&#34;&gt;Welcome to Swift
&lt;/h2&gt;&lt;p&gt;Swift is a high-performance system programming language.  It has a clean
and modern syntax, offers seamless access to existing C and Objective-C code
and frameworks, and is memory-safe by default.&lt;/p&gt;
&lt;p&gt;Although inspired by Objective-C and many other languages, Swift is not itself a
C-derived language. As a complete and independent language, Swift packages core
features like flow control, data structures, and functions, with high-level
constructs like objects, protocols, closures, and generics. Swift embraces
modules, eliminating the need for headers and the code duplication they entail.&lt;/p&gt;
&lt;p&gt;To learn more about the programming language, visit &lt;a class=&#34;link&#34; href=&#34;https://swift.org/documentation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;swift.org&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#contributing-to-swift&#34; &gt;Contributing to Swift&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#getting-started&#34; &gt;Getting Started&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#swift-toolchains&#34; &gt;Swift Toolchains&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#build-failures&#34; &gt;Build Failures&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;#learning-more&#34; &gt;Learning More&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;contributing-to-swift&#34;&gt;Contributing to Swift
&lt;/h2&gt;&lt;p&gt;Contributions to Swift are welcomed and encouraged! Please see the
&lt;a class=&#34;link&#34; href=&#34;https://swift.org/contributing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Contributing to Swift guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Before submitting the pull request, please make sure you have &lt;a class=&#34;link&#34; href=&#34;https://github.com/apple/swift/blob/main/docs/ContinuousIntegration.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tested your
changes&lt;/a&gt;
and that they follow the Swift project &lt;a class=&#34;link&#34; href=&#34;https://swift.org/contributing/#contributing-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;guidelines for contributing
code&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To be a truly great community, &lt;a class=&#34;link&#34; href=&#34;https://swift.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Swift.org&lt;/a&gt; needs to welcome
developers from all walks of life, with different backgrounds, and with a wide
range of experience. A diverse and friendly community will have more great
ideas, more unique perspectives, and produce more great code. We will work
diligently to make the Swift community welcoming to everyone.&lt;/p&gt;
&lt;p&gt;To give clarity of what is expected of our members, Swift has adopted the
code of conduct defined by the Contributor Covenant. This document is used
across many open source communities, and we think it articulates our values
well. For more, see the &lt;a class=&#34;link&#34; href=&#34;https://swift.org/code-of-conduct/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Code of Conduct&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started
&lt;/h2&gt;&lt;p&gt;If you are interested in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Contributing fixes and features to the compiler: See our
&lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/HowToGuides/FirstPullRequest.md&#34; &gt;How to Submit Your First Pull Request guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Building the compiler as a one-off: See our &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/HowToGuides/GettingStarted.md&#34; &gt;Getting Started guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Building a toolchain as a one-off: Follow the &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/HowToGuides/GettingStarted.md&#34; &gt;Getting Started guide&lt;/a&gt;
up until the &amp;ldquo;Building the project&amp;rdquo; section. After that, follow the
instructions in the &lt;a class=&#34;link&#34; href=&#34;#swift-toolchains&#34; &gt;Swift Toolchains&lt;/a&gt; section below.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also have an &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/HowToGuides/FAQ.md&#34; &gt;FAQ&lt;/a&gt; that answers common questions.&lt;/p&gt;
&lt;h3 id=&#34;swift-toolchains&#34;&gt;Swift Toolchains
&lt;/h3&gt;&lt;h4 id=&#34;building&#34;&gt;Building
&lt;/h4&gt;&lt;p&gt;Swift toolchains are created using the script
&lt;a class=&#34;link&#34; href=&#34;https://github.com/apple/swift/blob/main/utils/build-toolchain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;build-toolchain&lt;/a&gt;. This
script is used by swift.org&amp;rsquo;s CI to produce snapshots and can allow for one to
locally reproduce such builds for development or distribution purposes. A typical
invocation looks like the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $ ./swift/utils/build-toolchain &lt;span class=&#34;nv&#34;&gt;$BUNDLE_PREFIX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;where &lt;code&gt;$BUNDLE_PREFIX&lt;/code&gt; is a string that will be prepended to the build
date to give the bundle identifier of the toolchain&amp;rsquo;s &lt;code&gt;Info.plist&lt;/code&gt;. For
instance, if &lt;code&gt;$BUNDLE_PREFIX&lt;/code&gt; was &lt;code&gt;com.example&lt;/code&gt;, the toolchain
produced will have the bundle identifier &lt;code&gt;com.example.YYYYMMDD&lt;/code&gt;. It
will be created in the directory you run the script with a filename
of the form: &lt;code&gt;swift-LOCAL-YYYY-MM-DD-a-osx.tar.gz&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Beyond building the toolchain, &lt;code&gt;build-toolchain&lt;/code&gt; also supports the
following (non-exhaustive) set of useful options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--dry-run&lt;/code&gt;: Perform a dry run build. This is off by default.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--test&lt;/code&gt;: Test the toolchain after it has been compiled. This is off by default.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--distcc&lt;/code&gt;: Use distcc to speed up the build by distributing the C++ part of
the swift build. This is off by default.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--sccache&lt;/code&gt;: Use sccache to speed up subsequent builds of the compiler by
caching more C++ build artifacts. This is off by default.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;More options may be added over time. Please pass &lt;code&gt;--help&lt;/code&gt; to
&lt;code&gt;build-toolchain&lt;/code&gt; to see the full set of options.&lt;/p&gt;
&lt;h4 id=&#34;installing-into-xcode&#34;&gt;Installing into Xcode
&lt;/h4&gt;&lt;p&gt;On macOS if one wants to install such a toolchain into Xcode:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Untar and copy the toolchain to one of &lt;code&gt;/Library/Developer/Toolchains/&lt;/code&gt; or
&lt;code&gt;~/Library/Developer/Toolchains/&lt;/code&gt;. E.g.:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $ sudo tar -xzf swift-LOCAL-YYYY-MM-DD-a-osx.tar.gz -C /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $ tar -xzf swift-LOCAL-YYYY-MM-DD-a-osx.tar.gz -C ~/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The script also generates an archive containing debug symbols which
can be installed over the main archive allowing symbolication of any
compiler crashes.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $ sudo tar -xzf swift-LOCAL-YYYY-MM-DD-a-osx-symbols.tar.gz -C /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  $ tar -xzf swift-LOCAL-YYYY-MM-DD-a-osx-symbols.tar.gz -C ~/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Specify the local toolchain for Xcode&amp;rsquo;s use via &lt;code&gt;Xcode-&amp;gt;Toolchains&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;build-failures&#34;&gt;Build Failures
&lt;/h3&gt;&lt;p&gt;Try the suggestions in
&lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/HowToGuides/GettingStarted.md#troubleshooting-build-issues&#34; &gt;Troubleshooting build issues&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Make sure you are using the
&lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/HowToGuides/GettingStarted.md#installing-dependencies&#34; &gt;correct release&lt;/a&gt;
of Xcode.&lt;/p&gt;
&lt;p&gt;If you have changed Xcode versions but still encounter errors that appear to
be related to the Xcode version, try passing &lt;code&gt;--clean&lt;/code&gt; to &lt;code&gt;build-script&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When a new version of Xcode is released, you can update your build without
recompiling the entire project by passing &lt;code&gt;--reconfigure&lt;/code&gt; to &lt;code&gt;build-script&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;learning-more&#34;&gt;Learning More
&lt;/h2&gt;&lt;p&gt;Be sure to look at the &lt;a class=&#34;link&#34; href=&#34;https://producthunt.programnotes.cn/docs/README.md&#34; &gt;documentation index&lt;/a&gt; for a bird&amp;rsquo;s eye
view of the available documentation. In particular, the documents titled
&lt;a class=&#34;link&#34; href=&#34;docs/DebuggingTheCompiler.md&#34; &gt;Debugging the Swift Compiler&lt;/a&gt; and
&lt;a class=&#34;link&#34; href=&#34;docs/ContinuousIntegration.md&#34; &gt;Continuous Integration for Swift&lt;/a&gt; are very
helpful to understand before submitting your first PR.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>fleet</title>
        <link>https://producthunt.programnotes.cn/en/p/fleet/</link>
        <pubDate>Mon, 07 Apr 2025 15:29:38 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/fleet/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1634930778824-78936981064c?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDQwMTA4OTZ8&amp;ixlib=rb-4.0.3" alt="Featured image of post fleet" /&gt;&lt;h1 id=&#34;fleetdmfleet&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/fleetdm/fleet&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;fleetdm/fleet&lt;/a&gt;
&lt;/h1&gt;&lt;h1&gt;&lt;a href=&#34;https://fleetdm.com&#34;&gt;&lt;img width=&#34;200&#34; alt=&#34;Fleet logo, landscape, dark text, transparent background&#34; src=&#34;https://github.com/user-attachments/assets/5b52c536-f33e-4159-b2a3-d48f31868cd2&#34;&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h4 id=&#34;news----report-a-bug----handbook----why-open-source----art&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/announcements&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;News&lt;/a&gt;   ·   &lt;a class=&#34;link&#34; href=&#34;https://github.com/fleetdm/fleet/issues/new&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Report a bug&lt;/a&gt;   ·   &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/handbook/company&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Handbook&lt;/a&gt;   ·   &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/handbook/company/why-this-way#why-open-source&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Why open source?&lt;/a&gt;   ·   &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/logos&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Art&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;Open-source platform for IT and security teams with thousands of computers.  Designed for APIs, GitOps, webhooks, YAML, and humans.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://fleetdm.com/logos&#34;&gt;&lt;img src=&#34;https://github.com/fleetdm/fleet/assets/618009/f835ec29-1cb9-49ba-a0f3-395ffd9d5c9f&#34; alt=&#34;A glass city in the clouds&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;whats-it-for&#34;&gt;What&amp;rsquo;s it for?
&lt;/h2&gt;&lt;p&gt;Organizations like Fastly and Gusto use Fleet for vulnerability reporting, detection engineering, device management (MDM), device health monitoring, posture-based access control, managing unused software licenses, and more.&lt;/p&gt;
&lt;h4 id=&#34;explore-data&#34;&gt;Explore data
&lt;/h4&gt;&lt;p&gt;To see what kind of data you can use Fleet to gather, check out the &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/tables&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;table reference documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;out-of-the-box-policies&#34;&gt;Out-of-the-box policies
&lt;/h4&gt;&lt;p&gt;Fleet includes out-of-the box support for all &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/docs/using-fleet/cis-benchmarks&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CIS benchmarks for macOS and Windows&lt;/a&gt;, as well as many &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/queries&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;simpler queries&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Take as much or as little as you need for your organization.&lt;/p&gt;
&lt;h4 id=&#34;supported-platforms&#34;&gt;Supported platforms
&lt;/h4&gt;&lt;p&gt;Here are the platforms Fleet currently supports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux (all distros)&lt;/li&gt;
&lt;li&gt;macOS&lt;/li&gt;
&lt;li&gt;Windows&lt;/li&gt;
&lt;li&gt;Chromebooks&lt;/li&gt;
&lt;li&gt;Amazon Web Services (AWS)&lt;/li&gt;
&lt;li&gt;Google Cloud (GCP)&lt;/li&gt;
&lt;li&gt;Azure (Microsoft cloud)&lt;/li&gt;
&lt;li&gt;Data centers&lt;/li&gt;
&lt;li&gt;Containers (kube, etc)&lt;/li&gt;
&lt;li&gt;Linux-based IoT devices&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;lighter-than-air&#34;&gt;Lighter than air
&lt;/h2&gt;&lt;p&gt;Fleet is lightweight and modular.  You can use it for security without using it for MDM, and vice versa.  You can turn off features you are not using.&lt;/p&gt;
&lt;h4 id=&#34;openness&#34;&gt;Openness
&lt;/h4&gt;&lt;p&gt;Fleet is dedicated to flexibility, accessibility, and clarity.  We think &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/handbook/company#openness&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;everyone can contribute&lt;/a&gt; and that tools should be as easy as possible for everyone to understand.&lt;/p&gt;
&lt;h4 id=&#34;good-neighbors&#34;&gt;Good neighbors
&lt;/h4&gt;&lt;p&gt;Fleet has no ambition to replace all of your other tools.  (Though it might replace some, if you want it to.)  Ready-to-use, enterprise-friendly integrations exist for Snowflake, Splunk, GitHub Actions, Vanta, Elastic Jira, Zendesk, and more.&lt;/p&gt;
&lt;p&gt;Fleet plays well with Munki, Chef, Puppet, and Ansible, as well as with security tools like Crowdstrike and SentinelOne.  For example, you can use the free version of Fleet to quickly report on what hosts are &lt;em&gt;actually&lt;/em&gt; running your EDR agent.&lt;/p&gt;
&lt;h4 id=&#34;free-as-in-free&#34;&gt;Free as in free
&lt;/h4&gt;&lt;p&gt;The free version of Fleet will &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/pricing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;always be free&lt;/a&gt;.  Fleet is &lt;a class=&#34;link&#34; href=&#34;https://linkedin.com/company/fleetdm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;independently backed&lt;/a&gt; and actively maintained with the help of many amazing &lt;a class=&#34;link&#34; href=&#34;https://github.com/fleetdm/fleet/graphs/contributors&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;contributors&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;longevity&#34;&gt;Longevity
&lt;/h4&gt;&lt;p&gt;The &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/handbook/company&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;company behind Fleet&lt;/a&gt; is founded (and majority-owned) by &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/handbook/company/why-this-way#why-open-source&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;true believers in open source&lt;/a&gt;.  The company&amp;rsquo;s business model is influenced by GitLab (NYSE: GTLB), with great investors, happy customers, and the capacity to become profitable at any time.&lt;/p&gt;
&lt;p&gt;In keeping with Fleet&amp;rsquo;s value of openness, &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/handbook/company&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fleet Device Management&amp;rsquo;s company handbook&lt;/a&gt; is public and open source.  You can read about the &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/handbook/company#history&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;history of Fleet and osquery&lt;/a&gt; and our commitment to improving the product.&lt;/p&gt;
&lt;!-- &gt; To upgrade from Fleet ≤3.2.0, just follow the upgrading steps for the earliest subsequent major release from this repository (it&#39;ll work out of the box until the release of Fleet 5.0). --&gt;
&lt;h2 id=&#34;is-it-any-good&#34;&gt;Is it any good?
&lt;/h2&gt;&lt;p&gt;Fleet is used in production by IT and security teams with thousands of laptops and servers.  Many deployments support tens of thousands of hosts, and a few large organizations manage deployments as large as 400,000+ hosts.&lt;/p&gt;
&lt;h2 id=&#34;chat&#34;&gt;Chat
&lt;/h2&gt;&lt;p&gt;Please join us in &lt;a class=&#34;link&#34; href=&#34;https://www.macadmins.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MacAdmins Slack&lt;/a&gt; or in &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/slack&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;osquery Slack&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Fleet community is full of &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/handbook/company#empathy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;kind and helpful people&lt;/a&gt;.  Whether or not you are a paying customer, if you need help, just ask.&lt;/p&gt;
&lt;h2 id=&#34;contributing--run-tests--go-report-card--cii-best-practices--twitter-follow&#34;&gt;Contributing   &lt;a class=&#34;link&#34; href=&#34;https://github.com/fleetdm/fleet/actions/workflows/test.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/fleetdm/fleet/actions/workflows/test.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Run Tests&#34;
	
	
&gt;&lt;/a&gt;   &lt;a class=&#34;link&#34; href=&#34;https://goreportcard.com/report/github.com/fleetdm/fleet&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://goreportcard.com/badge/github.com/fleetdm/fleet&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Go Report Card&#34;
	
	
&gt;&lt;/a&gt;   &lt;a class=&#34;link&#34; href=&#34;https://bestpractices.coreinfrastructure.org/projects/5537&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://bestpractices.coreinfrastructure.org/projects/5537/badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CII Best Practices&#34;
	
	
&gt;&lt;/a&gt;   &lt;a class=&#34;link&#34; href=&#34;https://twitter.com/fleetctl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/twitter/follow/fleetctl.svg?style=social&amp;amp;maxAge=3600&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Twitter Follow&#34;
	
	
&gt;&lt;/a&gt;  
&lt;/h2&gt;&lt;p&gt;The landscape of cybersecurity and IT is too complex.  Let&amp;rsquo;s open it up.&lt;/p&gt;
&lt;p&gt;Contributions are welcome, whether you answer questions on &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/slack&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Slack&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://github.com/fleetdm/fleet/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://stackoverflow.com/search?q=osquery&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;StackOverflow&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://linkedin.com/company/fleetdm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LinkedIn&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://twitter.com/fleetctl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter&lt;/a&gt;, improve the documentation or &lt;a class=&#34;link&#34; href=&#34;./website&#34; &gt;website&lt;/a&gt;, write a tutorial, give a talk at a conference or local meetup, give an &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/podcasts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;interview on a podcast&lt;/a&gt;, troubleshoot reported issues, or &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/docs/contributing/contributing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;submit a patch&lt;/a&gt;.  The Fleet code of conduct is &lt;a class=&#34;link&#34; href=&#34;https://github.com/fleetdm/fleet/blob/main/CODE_OF_CONDUCT.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;!-- - Great contributions are motivated by real-world use cases or learning.
- Some of the most valuable contributions might not touch any code at all.
- Small, iterative, simple (boring) changes are the easiest to merge. --&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next?
&lt;/h2&gt;&lt;p&gt;To see what Fleet can do, head over to &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;fleetdm.com&lt;/a&gt; and try it out for yourself, grab time with one of the maintainers to discuss, or visit the docs and roll it out to your organization.&lt;/p&gt;
&lt;h4 id=&#34;production-deployment&#34;&gt;Production deployment
&lt;/h4&gt;&lt;p&gt;Fleet is simple enough to &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/docs/get-started/tutorials-and-guides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;spin up for yourself&lt;/a&gt;.  Or you can have us &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/pricing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;host it for you&lt;/a&gt;.  Premium features are &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/pricing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;available&lt;/a&gt; either way.&lt;/p&gt;
&lt;h4 id=&#34;documentation&#34;&gt;Documentation
&lt;/h4&gt;&lt;p&gt;Complete documentation for Fleet can be found at &lt;a class=&#34;link&#34; href=&#34;https://fleetdm.com/docs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://fleetdm.com/docs&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;The free version of Fleet is available under the MIT license.  The commercial license is also designed to allow contributions to paid features for users whose employment agreements allow them to contribute to open source projects.  (See LICENSE.md for details.)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Fleet is built on &lt;a class=&#34;link&#34; href=&#34;https://github.com/osquery/osquery&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;osquery&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/micromdm/nanomdm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nanoMDM&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/macadmins/nudge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Nudge&lt;/a&gt;, and &lt;a class=&#34;link&#34; href=&#34;https://github.com/swiftDialog/swiftDialog&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;swiftDialog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>ffmpeg-kit</title>
        <link>https://producthunt.programnotes.cn/en/p/ffmpeg-kit/</link>
        <pubDate>Fri, 04 Apr 2025 15:27:35 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/ffmpeg-kit/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1513039235271-5937eefe2959?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDM3NTE2MDB8&amp;ixlib=rb-4.0.3" alt="Featured image of post ffmpeg-kit" /&gt;&lt;h1 id=&#34;arthenicaffmpeg-kit&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;arthenica/ffmpeg-kit&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;ffmpegkit-github-release-maven-central-cocoapods-pub-npm&#34;&gt;FFmpegKit &lt;img src=&#34;https://img.shields.io/badge/release-v6.0-blue.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub release&#34;
	
	
&gt; &lt;img src=&#34;https://img.shields.io/maven-central/v/com.arthenica/ffmpeg-kit-min&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Maven Central&#34;
	
	
&gt; &lt;img src=&#34;https://img.shields.io/cocoapods/v/ffmpeg-kit-ios-min&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CocoaPods&#34;
	
	
&gt; &lt;img src=&#34;https://img.shields.io/pub/v/ffmpeg_kit_flutter.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;pub&#34;
	
	
&gt; &lt;img src=&#34;https://img.shields.io/npm/v/ffmpeg-kit-react-native.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;npm&#34;
	
	
&gt;
&lt;/h1&gt;&lt;h2 id=&#34;notice&#34;&gt;Notice
&lt;/h2&gt;&lt;p&gt;FFmpegKit has been officially retired. There will be no further &lt;code&gt;ffmpeg-kit&lt;/code&gt; releases.&lt;/p&gt;
&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;https://medium.com/@tanersener/saying-goodbye-to-ffmpegkit-33ae939767e1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Saying Goodbye to FFmpegKit @ medium&lt;/a&gt; to learn why we made this decision.&lt;/p&gt;
&lt;p&gt;All previously released &lt;code&gt;ffmpeg-kit&lt;/code&gt; binaries will be removed according to the following schedule.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;FFmpegKit Version&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Available Until&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Less than 6.0&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;February 1st, 2025&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;6.0&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;April 1st, 2025&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Thank you for your support and interest in this project.&lt;/p&gt;
&lt;img src=&#34;https://github.com/arthenica/ffmpeg-kit/blob/main/docs/assets/ffmpeg-kit-icon-v9.png&#34; width=&#34;240&#34;&gt;
&lt;p&gt;&lt;code&gt;FFmpegKit&lt;/code&gt; is a collection of tools to use &lt;code&gt;FFmpeg&lt;/code&gt;&lt;sup&gt;1&lt;/sup&gt; in &lt;code&gt;Android&lt;/code&gt;, &lt;code&gt;iOS&lt;/code&gt;, &lt;code&gt;Linux&lt;/code&gt;, &lt;code&gt;macOS&lt;/code&gt;, &lt;code&gt;tvOS&lt;/code&gt;, &lt;code&gt;Flutter&lt;/code&gt; and &lt;code&gt;React Native&lt;/code&gt; applications.&lt;/p&gt;
&lt;p&gt;It includes scripts to build &lt;code&gt;FFmpeg&lt;/code&gt; native libraries, a wrapper library to run &lt;code&gt;FFmpeg&lt;/code&gt;/&lt;code&gt;FFprobe&lt;/code&gt; commands in
applications and 8 prebuilt binary packages available at &lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Github&lt;/a&gt;,
&lt;a class=&#34;link&#34; href=&#34;https://search.maven.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Maven Central&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://cocoapods.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CocoaPods&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://pub.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pub&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;npm&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;1-features&#34;&gt;1. Features
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Scripts to build FFmpeg native libraries&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FFmpegKit&lt;/code&gt; wrapper library to run &lt;code&gt;FFmpeg&lt;/code&gt;/&lt;code&gt;FFprobe&lt;/code&gt; commands in applications&lt;/li&gt;
&lt;li&gt;Supports native platforms: Android, iOS, Linux, macOS and tvOS&lt;/li&gt;
&lt;li&gt;Supports hybrid platforms: Flutter, React Native&lt;/li&gt;
&lt;li&gt;Based on FFmpeg &lt;code&gt;v4.5-dev&lt;/code&gt; or later with optional system and external libraries&lt;/li&gt;
&lt;li&gt;8 prebuilt binary packages available at &lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Github&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://search.maven.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Maven Central&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://cocoapods.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CocoaPods&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://pub.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pub&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;npm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Licensed under &lt;code&gt;LGPL 3.0&lt;/code&gt; by default, &lt;code&gt;GPL v3.0&lt;/code&gt; if GPL licensed libraries are enabled&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-android&#34;&gt;2. Android
&lt;/h3&gt;&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;android&#34; &gt;Android&lt;/a&gt; to learn more about &lt;code&gt;FFmpegKit&lt;/code&gt; for &lt;code&gt;Android&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;3-ios-macos-tvos&#34;&gt;3. iOS, macOS, tvOS
&lt;/h3&gt;&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;apple&#34; &gt;Apple&lt;/a&gt; to use &lt;code&gt;FFmpegKit&lt;/code&gt; on &lt;code&gt;Apple&lt;/code&gt; platforms (&lt;code&gt;iOS&lt;/code&gt;, &lt;code&gt;macOS&lt;/code&gt;, &lt;code&gt;tvOS&lt;/code&gt;).&lt;/p&gt;
&lt;h3 id=&#34;4-flutter&#34;&gt;4. Flutter
&lt;/h3&gt;&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;flutter/flutter&#34; &gt;Flutter&lt;/a&gt; to learn more about &lt;code&gt;FFmpegKit&lt;/code&gt; for &lt;code&gt;Flutter&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;5-linux&#34;&gt;5. Linux
&lt;/h3&gt;&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;linux&#34; &gt;Linux&lt;/a&gt; to learn more about &lt;code&gt;FFmpegKit&lt;/code&gt; for &lt;code&gt;Linux&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;6-react-native&#34;&gt;6. React Native
&lt;/h3&gt;&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;react-native&#34; &gt;React Native&lt;/a&gt; to learn more about &lt;code&gt;FFmpegKit&lt;/code&gt; for &lt;code&gt;React Native&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;7-build-scripts&#34;&gt;7. Build Scripts
&lt;/h3&gt;&lt;p&gt;Use &lt;code&gt;android.sh&lt;/code&gt;, &lt;code&gt;ios.sh&lt;/code&gt;, &lt;code&gt;linux.sh&lt;/code&gt;, &lt;code&gt;macos.sh&lt;/code&gt; and &lt;code&gt;tvos.sh&lt;/code&gt; to build &lt;code&gt;FFmpegKit&lt;/code&gt; for each native platform.&lt;/p&gt;
&lt;p&gt;All scripts support additional options to enable optional libraries and disable platform architectures. See
&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/wiki/Building&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building&lt;/a&gt; wiki page for the details.&lt;/p&gt;
&lt;h3 id=&#34;8-ffmpegkit-library&#34;&gt;8. FFmpegKit Library
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;FFmpegKit&lt;/code&gt; is a wrapper library that allows you to easily run &lt;code&gt;FFmpeg&lt;/code&gt;/&lt;code&gt;FFprobe&lt;/code&gt; commands in applications. It
provides additional features on top of &lt;code&gt;FFmpeg&lt;/code&gt; to enable platform specific resources, control how commands are
executed and how the results are handled.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Android&lt;/code&gt; library of &lt;code&gt;FFmpegKit&lt;/code&gt; has a &lt;code&gt;Java&lt;/code&gt; API, &lt;code&gt;Apple&lt;/code&gt; libraries (&lt;code&gt;iOS&lt;/code&gt;, &lt;code&gt;macOS&lt;/code&gt;, &lt;code&gt;tvOS&lt;/code&gt;) have an &lt;code&gt;Objective-C&lt;/code&gt;
API, &lt;code&gt;Flutter&lt;/code&gt; library comes with a &lt;code&gt;Dart&lt;/code&gt; API, &lt;code&gt;Linux&lt;/code&gt; library has a &lt;code&gt;C++&lt;/code&gt; API and &lt;code&gt;React Native&lt;/code&gt; library provides
a &lt;code&gt;JavaScript&lt;/code&gt; API with &lt;code&gt;Typescript&lt;/code&gt; definitions, which are identical in terms of features and capabilities.&lt;/p&gt;
&lt;h3 id=&#34;9-packages&#34;&gt;9. Packages
&lt;/h3&gt;&lt;p&gt;There are eight different &lt;code&gt;ffmpeg-kit&lt;/code&gt; packages distributed on
&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Github&lt;/a&gt;,
&lt;a class=&#34;link&#34; href=&#34;https://search.maven.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Maven Central&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://cocoapods.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CocoaPods&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://pub.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pub&lt;/a&gt; and
&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;npm&lt;/a&gt;.
Below you can see which system libraries and external libraries are enabled in each one of them.&lt;/p&gt;
&lt;p&gt;Please remember that some parts of &lt;code&gt;FFmpeg&lt;/code&gt; are licensed under the &lt;code&gt;GPL&lt;/code&gt; and only &lt;code&gt;GPL&lt;/code&gt; licensed &lt;code&gt;ffmpeg-kit&lt;/code&gt; packages
include them.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&#34;center&#34;&gt;&lt;/th&gt;
&lt;th align=&#34;center&#34;&gt;&lt;sup&gt;min&lt;/sup&gt;&lt;/th&gt;
&lt;th align=&#34;center&#34;&gt;&lt;sup&gt;min-gpl&lt;/sup&gt;&lt;/th&gt;
&lt;th align=&#34;center&#34;&gt;&lt;sup&gt;https&lt;/sup&gt;&lt;/th&gt;
&lt;th align=&#34;center&#34;&gt;&lt;sup&gt;https-gpl&lt;/sup&gt;&lt;/th&gt;
&lt;th align=&#34;center&#34;&gt;&lt;sup&gt;audio&lt;/sup&gt;&lt;/th&gt;
&lt;th align=&#34;center&#34;&gt;&lt;sup&gt;video&lt;/sup&gt;&lt;/th&gt;
&lt;th align=&#34;center&#34;&gt;&lt;sup&gt;full&lt;/sup&gt;&lt;/th&gt;
&lt;th align=&#34;center&#34;&gt;&lt;sup&gt;full-gpl&lt;/sup&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&#34;center&#34;&gt;&lt;sup&gt;external libraries&lt;/sup&gt;&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;-&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;&lt;sup&gt;vid.stab&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;x264&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;x265&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;xvidcore&lt;/sup&gt;&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;&lt;sup&gt;gmp&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;gnutls&lt;/sup&gt;&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;&lt;sup&gt;gmp&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;gnutls&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;vid.stab&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;x264&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;x265&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;xvidcore&lt;/sup&gt;&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;&lt;sup&gt;lame&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libilbc&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libvorbis&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;opencore-amr&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;opus&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;shine&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;soxr&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;speex&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;twolame&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;vo-amrwbenc&lt;/sup&gt;&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;&lt;sup&gt;dav1d&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;fontconfig&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;freetype&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;fribidi&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;kvazaar&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libass&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libiconv&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libtheora&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libvpx&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libwebp&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;snappy&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;zimg&lt;/sup&gt;&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;&lt;sup&gt;dav1d&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;fontconfig&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;freetype&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;fribidi&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;gmp&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;gnutls&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;kvazaar&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;lame&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libass&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libiconv&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libilbc&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libtheora&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libvorbis&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libvpx&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libwebp&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libxml2&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;opencore-amr&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;opus&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;shine&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;snappy&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;soxr&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;speex&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;twolame&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;vo-amrwbenc&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;zimg&lt;/sup&gt;&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;&lt;sup&gt;dav1d&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;fontconfig&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;freetype&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;fribidi&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;gmp&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;gnutls&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;kvazaar&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;lame&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libass&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libiconv&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libilbc&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libtheora&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libvorbis&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libvpx&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libwebp&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;libxml2&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;opencore-amr&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;opus&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;shine&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;snappy&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;soxr&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;speex&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;twolame&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;vid.stab&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;vo-amrwbenc&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;x264&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;x265&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;xvidcore&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;zimg&lt;/sup&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&#34;center&#34;&gt;&lt;sup&gt;android system libraries&lt;/sup&gt;&lt;/td&gt;
&lt;td align=&#34;center&#34; colspan=8&gt;&lt;sup&gt;zlib&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;MediaCodec&lt;/sup&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&#34;center&#34;&gt;&lt;sup&gt;ios system libraries&lt;/sup&gt;&lt;/td&gt;
&lt;td align=&#34;center&#34; colspan=8&gt;&lt;sup&gt;bzip2&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;AudioToolbox&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;AVFoundation&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;iconv&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;VideoToolbox&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;zlib&lt;/sup&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;tr&gt;
&lt;td align=&#34;center&#34;&gt;&lt;sup&gt;macos system libraries&lt;/sup&gt;&lt;/td&gt;
&lt;td align=&#34;center&#34; colspan=8&gt;&lt;sup&gt;bzip2&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;AudioToolbox&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;AVFoundation&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;Core Image&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;iconv&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;OpenCL&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;OpenGL&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;VideoToolbox&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;zlib&lt;/sup&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&#34;center&#34;&gt;&lt;sup&gt;tvos system libraries&lt;/sup&gt;&lt;/td&gt;
&lt;td align=&#34;center&#34; colspan=8&gt;&lt;sup&gt;bzip2&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;AudioToolbox&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;iconv&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;VideoToolbox&lt;/sup&gt;&lt;br&gt;&lt;sup&gt;zlib&lt;/sup&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;AVFoundation&lt;/code&gt; is not available on &lt;code&gt;tvOS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VideoToolbox&lt;/code&gt; is not available on LTS releases of &lt;code&gt;iOS&lt;/code&gt; and &lt;code&gt;tvOS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;zimg&lt;/code&gt; is supported since &lt;code&gt;v4.5.1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;10-versions&#34;&gt;10. Versions
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;FFmpegKit&lt;/code&gt; binaries generated use the same major and minor version numbers as the upstream &lt;code&gt;FFmpeg&lt;/code&gt; project. The
third and last number in the version string, if exists, is specific to &lt;code&gt;FFmpegKit&lt;/code&gt;. It shows different releases from
the same &lt;code&gt;FFmpeg&lt;/code&gt; release branch.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dev&lt;/code&gt; part in the version string indicates that &lt;code&gt;FFmpeg&lt;/code&gt; source code is cloned from the &lt;code&gt;FFmpeg&lt;/code&gt; &lt;code&gt;master&lt;/code&gt; branch and
the exact version number of &lt;code&gt;FFmpeg&lt;/code&gt; is obtained using the &lt;code&gt;git describe --tags&lt;/code&gt; command.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Platforms&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;FFmpegKit Version&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;FFmpeg Version&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Release Date&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Flutter&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;6.0.3&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;6.0&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Sep 19, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;React Native&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v6.0.2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;6.0.2&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;6.0&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Sep 19, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Flutter&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;6.0.2&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;6.0&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Sep 03, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;React Native&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v6.0.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;6.0.1&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;6.0&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Sep 03, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Flutter&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;6.0.1&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;6.0&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Sep 03, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;React Native&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v6.0.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;6.0.0&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;6.0&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Aug 27, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Flutter&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;6.0.0&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;6.0&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Aug 27, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Android&lt;br&gt;Apple&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/v6.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;6.0&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;6.0&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Aug 21, 2023&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;React Native&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v5.1.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;5.1.0&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;5.1.2&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Oct 02, 2022&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Flutter&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v5.1.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;5.1.0&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;5.1.2&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Oct 02, 2022&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Android&lt;br&gt;Apple&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/v5.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;5.1&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;5.1.2&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Sep 29, 2022&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;React Native&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;4.5.2&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;4.5-dev-3393&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;May 25, 2022&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Flutter&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;4.5.1&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;4.5-dev-3393&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Jan 02, 2022&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;React Native&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;4.5.1&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;4.5-dev-3393&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Jan 02, 2022&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Android&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;4.5.1&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;4.5-dev-3393&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Jan 01, 2022&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Apple&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;4.5.1&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;4.5-dev-3393&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Dec 30, 2021&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Flutter&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;4.5.0&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;4.5-dev-2008&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Oct 05, 2021&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;React Native&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;4.5.0&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;4.5-dev-2008&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Oct 01, 2021&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Android&lt;br&gt;Apple&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;4.5&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;4.5-dev-2008&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Sep 18, 2021&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Android&lt;br&gt;Apple&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;4.4&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;4.4-dev-3015&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Mar 03, 2021&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;11-lts-releases&#34;&gt;11. LTS Releases
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;FFmpegKit&lt;/code&gt; binaries are published in two release variants: &lt;code&gt;Main Release&lt;/code&gt; and &lt;code&gt;LTS Release&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Main releases include complete functionality of the library and support the latest SDK/API features.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;LTS releases are customized to support a wider range of devices. They are built using older API/SDK versions, so some features are not available on them.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This table shows the differences between two variants.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Main Release&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;LTS Release&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Android API Level&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;24&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Android Camera Access&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Yes&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Android Architectures&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;arm-v7a-neon&lt;br/&gt;arm64-v8a&lt;br/&gt;x86&lt;br/&gt;x86-64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;arm-v7a&lt;br/&gt;arm-v7a-neon&lt;br/&gt;arm64-v8a&lt;br/&gt;x86&lt;br/&gt;x86-64&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;iOS Min SDK&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;12.1&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;10&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;iOS VideoToolbox&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Yes&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;iOS AVFoundation&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Yes&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;iOS Architectures&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;arm64&lt;br/&gt;arm64-simulator&lt;br/&gt;arm64-mac-catalyst&lt;br/&gt;x86-64&lt;br/&gt;x86-64-mac-catalyst&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;armv7&lt;br/&gt;arm64&lt;br/&gt;i386&lt;br/&gt;x86-64&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;iOS Bundle Format&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;XCFrameworks&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Frameworks&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Mac Catalyst Min Version&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;14.0&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;macOS Min SDK&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;10.15&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;10.12&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;macOS AVFoundation&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Yes&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;macOS Architectures&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;arm64&lt;br/&gt;x86-64&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;x86-64&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;macOS Bundle Format&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;XCFrameworks&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Frameworks&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;tvOS Min SDK&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;11.0&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;10.0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;tvOS VideoToolbox&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Yes&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;tvOS Architectures&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;arm64&lt;br/&gt;x86-64&lt;br/&gt;arm64-simulator&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;arm64&lt;br/&gt;x86-64&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;tvOS Bundle Format&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;XCFrameworks&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Frameworks&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;12-documentation&#34;&gt;12. Documentation
&lt;/h3&gt;&lt;p&gt;A more detailed documentation is available under &lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Wiki&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;13-test-applications&#34;&gt;13. Test Applications
&lt;/h3&gt;&lt;p&gt;You can see how &lt;code&gt;FFmpegKit&lt;/code&gt; is used inside an application by running test applications created under
&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit-test&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FFmpegKit Test&lt;/a&gt; project.&lt;/p&gt;
&lt;p&gt;All applications are identical and supports command execution, video encoding, accessing https urls, encoding audio,
burning subtitles, video stabilisation, pipe operations and concurrent command execution.&lt;/p&gt;
&lt;h3 id=&#34;14-license&#34;&gt;14. License
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;FFmpegKit&lt;/code&gt; library alone is licensed under the &lt;code&gt;LGPL v3.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;FFmpegKit&lt;/code&gt; bundles (&lt;code&gt;.aar&lt;/code&gt; archives, &lt;code&gt;frameworks&lt;/code&gt;, &lt;code&gt;xcframeworks&lt;/code&gt;), which include both  &lt;code&gt;FFmpegKit&lt;/code&gt; and &lt;code&gt;FFmpeg&lt;/code&gt;
libraries, are also licensed under the &lt;code&gt;LGPL v3.0&lt;/code&gt;. However, if the source code is built using the optional
&lt;code&gt;--enable-gpl&lt;/code&gt; flag or prebuilt binaries with &lt;code&gt;-gpl&lt;/code&gt; postfix are used, then &lt;code&gt;FFmpegKit&lt;/code&gt; bundles become subject to the
&lt;code&gt;GPL v3.0&lt;/code&gt;. Because, &lt;code&gt;FFmpeg&lt;/code&gt; is licensed under the &lt;code&gt;GPL v3.0&lt;/code&gt; in those bundles. And that makes the whole bundle
effectively subject to the &lt;code&gt;GPL v3.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;FFmpegKit&lt;/code&gt; build scripts always configure &lt;code&gt;FFmpeg&lt;/code&gt; with &lt;code&gt;--enable-version3&lt;/code&gt; option. And never enable non-free
libraries. Thus, &lt;code&gt;FFmpeg&lt;/code&gt; libraries created by &lt;code&gt;FFmpegKit&lt;/code&gt; are licensed under the &lt;code&gt;LGPL v3.0&lt;/code&gt; by default. Only when
&lt;code&gt;--enable-gpl&lt;/code&gt; is provided they become subject to &lt;code&gt;GPL v3.0&lt;/code&gt;. That is how prebuilt binaries with &lt;code&gt;-gpl&lt;/code&gt; postfix are
compiled.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/wiki/Licenses&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Licenses&lt;/a&gt; to see the licenses of all libraries.
&lt;a class=&#34;link&#34; href=&#34;https://github.com/arthenica/ffmpeg-kit/wiki/Trademark&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Trademark&lt;/a&gt; lists the trademarks used in the &lt;code&gt;FFmpegKit&lt;/code&gt;
documentation.&lt;/p&gt;
&lt;h3 id=&#34;15-patents&#34;&gt;15. Patents
&lt;/h3&gt;&lt;p&gt;It is not clearly explained in their documentation, but it is believed that &lt;code&gt;FFmpeg&lt;/code&gt;, &lt;code&gt;kvazaar&lt;/code&gt;, &lt;code&gt;x264&lt;/code&gt; and &lt;code&gt;x265&lt;/code&gt;
include algorithms which are subject to software patents. If you live in a country where software algorithms are
patentable then you&amp;rsquo;ll probably need to pay royalty fees to patent holders. We are not lawyers though, so we recommend
that you seek legal advice first. See &lt;a class=&#34;link&#34; href=&#34;https://ffmpeg.org/legal.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FFmpeg Patent Mini-FAQ&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;openh264&lt;/code&gt; clearly states that it uses patented algorithms. Therefore, if you build &lt;code&gt;ffmpeg-kit&lt;/code&gt; with &lt;code&gt;openh264&lt;/code&gt; and
distribute that library, then you are subject to pay MPEG LA licensing fees. Refer to
&lt;a class=&#34;link&#34; href=&#34;https://www.openh264.org/faq.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenH264 FAQ&lt;/a&gt; page for the details.&lt;/p&gt;
&lt;h3 id=&#34;16-trademarks&#34;&gt;16. Trademarks
&lt;/h3&gt;&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; &lt;code&gt;FFmpeg&lt;/code&gt; is a trademark of &lt;a class=&#34;link&#34; href=&#34;http://www.bellard.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fabrice Bellard&lt;/a&gt;. &lt;code&gt;FFmpegKit&lt;/code&gt; is an independent project and not affiliated with the &lt;code&gt;FFmpeg&lt;/code&gt; trademark holder.&lt;/p&gt;
&lt;h3 id=&#34;17-contributing&#34;&gt;17. Contributing
&lt;/h3&gt;&lt;p&gt;See our &lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;CONTRIBUTING&lt;/a&gt; guide.&lt;/p&gt;
&lt;h3 id=&#34;18-see-also&#34;&gt;18. See Also
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ffmpeg.org/doxygen/4.0/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FFmpeg API Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://trac.ffmpeg.org/wiki/WikiStart&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FFmpeg Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.ffmpeg.org/doxygen/4.0/md_LICENSE.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FFmpeg External Library Licenses&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Product Hunt Daily | 2025-03-29</title>
        <link>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-03-29/</link>
        <pubDate>Sat, 29 Mar 2025 07:24:14 +0000</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/product-hunt-daily-2025-03-29/</guid>
        <description>&lt;img src="https://ph-files.imgix.net/92a9bf61-2687-4792-bd39-a3497efde867.png?auto=format&amp;fit=crop&amp;frame=1&amp;h=512&amp;w=1024" alt="Featured image of post Product Hunt Daily | 2025-03-29" /&gt;&lt;h2 id=&#34;1-airial-travel&#34;&gt;1. Airial Travel
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Plan dream trips instantly from ideas or travel videos&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Just imagine your trip and Airial it! Simply describe your trip to Airial, or drop in your favourite TikToks / IG and see your dream trip come to life instantly. Airial&amp;rsquo;s one-of-a-kind AI picks out every last detail so that you can start packing, stress-free!&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/QMYFSMSLGEFH7W?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/airial-travel-3?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/92a9bf61-2687-4792-bd39-a3497efde867.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Airial Travel&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI travel planning, AI trip planner, travel AI, dream trip planner, video trip planner, TikTok travel planner, Instagram travel planner, automated travel planning, stress-free travel planning&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺702&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-03-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-atlasco-20&#34;&gt;2. Atlas.co 2.0
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: The first no-code platform for spatial apps&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Atlas lets you build powerful spatial apps without writing code. Upload your spatial data, connect to APIs, and spreadsheets - all from your browser. Whether it’s inspections, site selection, or dashboards, you can go from idea to interactive maps in minutes.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/6CCIVYDLF7WBEN?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/atlas-co-2-0?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/08a7188e-3f86-4087-b4e7-84088cf03abd.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Atlas.co 2.0&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: No-code, spatial app, mapping platform, GIS, location intelligence, spatial data, map builder, no-code mapping, interactive maps, location based app, Atlas.co&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺641&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-03-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-leadsourcing&#34;&gt;3. Leadsourcing
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Turn anonymous visitors into qualified leads instantly.&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Leadsourcing reveals potential customers behind your website traffic. We enrich their profiles with emails, roles, and LinkedIn info, then send them to your Slack or Discord in real-time. Engage smarter. Act faster. Close more deals.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/2EP5HVPMEAHBGT?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/leadsourcing-2?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/736cd28e-7f5a-41b9-8925-919d9ac3c7ea.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Leadsourcing&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Leadsourcing, lead generation, lead qualification, website visitor identification, anonymous visitor identification, lead enrichment, B2B lead generation, sales intelligence, Slack integration, Discord integration, real-time lead alerts&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺485&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-03-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;4-alice-30&#34;&gt;4. Alice 3.0
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: AI Automation tool that talks to Make, Zapier &amp;amp; your API&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: AI Automation Assistant that works with Make Zapier and your APIs ✔︎ Connect your apps to LLM via no-code ✔︎ All models in one app ✔︎ Fast, secure, privacy focused (offline models) ✔︎ Developer friendly; connect your back-end ✔︎ Assistant Library Try free 🆓&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/7F7FNKRAHCO7VP?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/alice-3-0?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/8f9b7877-777c-4636-8f61-14701e1bfe82.jpeg?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Alice 3.0&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI Automation, Make, Zapier, API Integration, No-Code, LLM, AI Assistant, Offline Models, Privacy Focused, Developer Friendly&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺379&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-03-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;5-linktime&#34;&gt;5. linktime
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Become the superhero of LinkedIn social selling.&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Are your LinkedIn comments going unnoticed? With linktime, play the social warming game and boost your visibility. Capture prospects&amp;rsquo; attention and stay on their radar easily: spot key posts, comment with eye-catching GIFs and images, and track conversations.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/5GS4V5M7RWIKZR?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/linktime-2?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/0efb2c89-840f-4bd6-b00b-d2229f95aa52.jpeg?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;linktime&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: LinkedIn, social selling, lead generation, prospecting, LinkedIn automation, social warming, engagement, visibility, GIF, images, lead nurturing,  commenting,  LinkedIn marketing&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺306&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-03-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;6-synctasks&#34;&gt;6. SyncTasks
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: A minimalist to-do app for iOS&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: A simpler way to manage your tasks. Sync your tasks from Notion, Apple Reminders, or create new lists with SyncTasks.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/HGPMQGZ6YM75ZE?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/synctasks?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/d779c8b3-b4ac-42cd-8ea9-ed1d5d78c6c9.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;SyncTasks&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: to-do, task management, iOS app, minimalist, Notion, Apple Reminders, task syncing, to-do list&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺213&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-03-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;7-supavoice&#34;&gt;7. Supavoice
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Voice to text app for macos&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Supavoice turns speech into perfectly formatted text in any Mac app. Dictate emails, notes, and posts with smart formatting modes. One-time purchase, uses your own OpenAI API key - you control the costs. Say it, format it, done.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/GRMYU4JE3FSP66?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/supavoice?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/3560187d-a95c-44c0-874c-7c37d4102fd6.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Supavoice&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Supavoice, voice to text, macOS, dictation, speech to text, Mac app, OpenAI, API, text formatting, one-time purchase&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺208&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-03-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;8-nash&#34;&gt;8. Nash
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: AI that interacts with any app, service, or file.&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: A more powerful variant of ChatGPT Desktop or Claude Desktop, with a built-in single MCP that lets you use literally any API, app, or local file.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/DQC53PJNMWYGBU?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/nash-3?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/578da675-40de-42ac-b798-5b23a595ca5e.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Nash&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: AI, ChatGPT, Claude, API, Desktop, App, File, Automation, Integration,  MCP,  Productivity&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺195&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-03-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;9-dragonfly&#34;&gt;9. Dragonfly
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: A better Bluesky experience starts with drafts and bookmarks&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Dragonfly is an app client for Bluesky, built by Sébastien and Inès Gruhier. Now available on desktop (macOS) and iPad, coming soon to iPhone, Android, Windows, and Linux. Get more out of Bluesky with exclusive features like bookmarks and drafts.&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/ZKXWVQYHZ2XLMC?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/dragonfly-3?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/d16e2696-d637-4d1f-8862-fcfed00f12e1.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Dragonfly&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Bluesky, Dragonfly, Bluesky client, Bluesky app, macOS, iPad, desktop app, bookmarks, drafts, Bluesky drafts, Bluesky bookmarks&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺184&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-03-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;10-ideogram-30&#34;&gt;10. Ideogram 3.0
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tagline&lt;/strong&gt;: Now with stunning realism and consistent styles&lt;br&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Meet Ideogram 3.0 — stunning realism, creative designs, and consistent styles, all in one powerful model. Now available to all users on ideogram.ai and their iOS app!&lt;br&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/r/PZGHPL3TB62UPR?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;open&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Product Hunt&lt;/strong&gt;: &lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/posts/ideogram-3-0?utm_campaign=producthunt-api&amp;amp;utm_medium=api-v2&amp;amp;utm_source=Application%3A&amp;#43;weekly&amp;#43;%28ID%3A&amp;#43;148189%29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;View on Product Hunt&lt;/a&gt;&lt;br&gt;
&lt;img src=&#34;https://ph-files.imgix.net/ec5d6631-b011-4f4c-b740-a99298e0e470.png?auto=format&amp;amp;fit=crop&amp;amp;frame=1&amp;amp;h=512&amp;amp;w=1024&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Ideogram 3.0&#34;
	
	
&gt;&lt;br&gt;
&lt;strong&gt;Keyword&lt;/strong&gt;: Ideogram 3.0, AI art, realistic AI art, consistent art style, AI image generator, ideogram.ai, AI art model, iOS app, creative AI&lt;br&gt;
&lt;strong&gt;VotesCount&lt;/strong&gt;: 🔺179&lt;br&gt;
&lt;strong&gt;Featured&lt;/strong&gt;: Yes&lt;br&gt;
&lt;strong&gt;CreatedAt&lt;/strong&gt;: 2025-03-28 07:01 AM (UTC)&lt;/p&gt;
&lt;hr&gt;
</description>
        </item>
        
    </channel>
</rss>
