diff --git a/README.md b/README.md index e8f8685456..d8c46dd709 100644 --- a/README.md +++ b/README.md @@ -4,107 +4,86 @@ ![BitFun](./png/BitFun_title.png) - -
+### An open-source desktop AI agent — it ships code in your real repos, and drives your real desktop. -[![Trendshift](https://trendshift.io/api/badge/repositories/44672)](https://trendshift.io/repositories/44672) +Code Agent · Cowork · Computer Use — local-first, on a Rust runtime. + +[**⬇ Download for macOS · Windows · Linux**](https://github.com/GCWing/BitFun/releases/latest) + +[Website](https://openbitfun.com/) · [Docs](./docs) · [Discussions](https://github.com/GCWing/BitFun/discussions) · [Contributing](./CONTRIBUTING.md) [![GitHub release](https://img.shields.io/github/v/release/GCWing/BitFun?style=flat-square&color=blue)](https://github.com/GCWing/BitFun/releases) -[![Website](https://img.shields.io/badge/Website-openbitfun.com-6f42c1?style=flat-square)](https://openbitfun.com/) +[![Downloads](https://img.shields.io/github/downloads/GCWing/BitFun/total?style=flat-square&color=brightgreen)](https://github.com/GCWing/BitFun/releases) +[![Stars](https://img.shields.io/github/stars/GCWing/BitFun?style=flat-square&color=yellow)](https://github.com/GCWing/BitFun/stargazers) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow?style=flat-square)](https://github.com/GCWing/BitFun/blob/main/LICENSE) -[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-blue?style=flat-square)](https://github.com/GCWing/BitFun) - -
+[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-blue?style=flat-square)](https://github.com/GCWing/BitFun/releases) ---- +[![Trendshift](https://trendshift.io/api/badge/repositories/44672)](https://trendshift.io/repositories/44672) -## A New-Generation Foundation for Agentic Applications + -BitFun puts the engineering capabilities of the Code Agent at its core and brings together Co-work and Claw (Assistant Agent) for coding, office work, and more real-world scenarios—creating a local-first, new-generation foundation for agentic applications, powered by a Rust-built Agent Runtime and a polished desktop app experience. + -- **Lights-Out Factory** (In Progress): Design during the day, let tasks flow to the server and run through the night, then review the results in the morning. -- **Infinite Radius** (In Progress): Extending from desktop and browser to mobile, wearables, and more devices, so work stays accessible and continuous. -- **App Evolution**: Build tailored workflows with custom Agents, MCP, Skills, Mini Apps, or source-level customization. **Community contributors have already created specialized versions for short-form drama, media, and more**. -- **Better, Faster, Cheaper**: Pursue greater efficiency, better results, and lower cost. -- **Ultimate Desktop**: Continuously refine an easier-to-use, more capable, and more beautiful desktop experience. - -![readme_hero](./png/readme_hero.png) +![BitFun desktop app](./png/first_screen_screenshot.png) --- -## Agent Core Metrics - -The data below evaluates BitFun's core Agent capabilities. All measurements use **Deepseek-V4-Pro** and are grouped into completion results, token economy, and other experience metrics. - -> The current numbers are BitFun's initial evaluation results, with each case run once. Benchmarks can fluctuate with task sampling, model versions, runtime environment, and single-run variance, so these scores are meant as an initial sanity signal that the current Agent is already reasonably capable, not as a fixed ranking claim or final ceiling. We will keep optimizing and release full benchmark details later. - -### 1. Completion Results +## Install -BitFun leads Open Code and Claude Code on both **SWE-Bench-Pro** and **SWE-Bench-Verified**. SWE-Bench-Pro focuses on complex software engineering, while SWE-Bench-Verified focuses on human-verified GitHub issue fixes. +**Download a build** — grab the latest installer from [Releases](https://github.com/GCWing/BitFun/releases/latest), install it, configure your model, and you are ready to go. -![Agent benchmark scores](./png/agent_benchmark_scores.svg) - -Benchmark references: [SWE-Bench-Pro](https://labs.scale.com/leaderboard/swe_bench_pro_public) / [SWE-Bench-Verified](https://www.swebench.com/verified.html) +**Or run from source:** -### 2. Token Economy - -Agent economy needs to be evaluated across end-to-end token consumption, execution time, and KV Cache reuse. The current snapshot first covers KV Cache behavior from the same SWE-Bench-Pro round: BitFun's average KV Cache hit rate was **98.67%**. The follow-up full benchmark report will add the broader cost and latency metrics. - -![KV Cache hit rate distribution](./png/kv_cache_hit_rate.png) - -### 3. Other Experience Metrics - -Beyond cost, Agent experience also depends on how quickly it can retrieve context in very large engineering projects. For tens-of-millions-line repositories such as Chromium, BitFun uses **flashgrep** to reduce search time by up to about **94.6%**, with an average speedup of about **36.1x**. +```bash +pnpm install +pnpm run desktop:dev +``` -![flashgrep search speed](./png/flashgrep_search_speed.png) +Prerequisites: [Node.js](https://nodejs.org/) 22.12+ (LTS recommended), [pnpm](https://pnpm.io/) 10.15.0 via Corepack, the [Rust toolchain](https://rustup.rs/), and the [Tauri prerequisites](https://v2.tauri.app/start/prerequisites/). More detail in [CONTRIBUTING.md](./CONTRIBUTING.md). --- -## Two Core Scenarios, One Extensible Agent Desktop +## What you can hand to BitFun -You can hand two kinds of complex work to BitFun: shipping code in real repositories and turning source material into office deliverables. When a task needs the browser, desktop apps, the terminal, or a remote environment, it can enter the real workspace; when your workflow needs more, you can extend it with custom Agents, MCP, Skills, and Mini Apps. - -### Core Scenarios +Two kinds of complex work: shipping code in real repositories, and turning source material into office deliverables. When a task needs the browser, desktop apps, the terminal, or a remote environment, BitFun can enter the real workspace. | Scenario | Delivery goal | Typical capabilities | | --- | --- | --- | | **Coding** | Move from a real repository to a mergeable result. | Agentic, Plan, Debug, testing, Git, Deep Review, long-horizon tasks, and benchmarks. | | **Office Work** | Move from source material to deliverable documents. | Research, PPT, DOCX, XLSX, PDF, summarization, writing, meeting notes, and reports. | -### Shared Capabilities +**Shared capabilities** - **Desktop execution layer**: Computer Use, browser operation, desktop apps, the filesystem, terminals, remote workspaces, and Mini Apps let the Agent enter real work environments. - **Customization layer**: MCP, Skills, custom Agents, Mini Apps, and source-level extension let BitFun keep growing around your tools, roles, and interfaces. -![first_screen_screenshot](./png/first_screen_screenshot.png) - --- -## Ready Out of the Box +## Agent core metrics -### Download directly +The data below evaluates BitFun's core Agent capabilities, all measured with **Deepseek-V4-Pro**. -Go to [Releases](https://github.com/GCWing/BitFun/releases) to download the latest desktop installer. After installation, configure your model and start using BitFun. +> [!NOTE] +> These are BitFun's initial evaluation results, with each case run once. Benchmarks fluctuate with task sampling, model versions, runtime environment, and single-run variance, so treat these as an initial sanity signal that the Agent is already reasonably capable — not as a fixed ranking claim or a final ceiling. Full benchmark details will follow. -### Run from source +**1. Completion results** — BitFun leads Open Code and Claude Code on both **SWE-Bench-Pro** (complex software engineering) and **SWE-Bench-Verified** (human-verified GitHub issue fixes). -**Prerequisites:** +![Agent benchmark scores](./png/agent_benchmark_scores.svg) -- [Node.js](https://nodejs.org/) 22.12+ (LTS recommended) -- [pnpm](https://pnpm.io/) 10.15.0 via Corepack -- [Rust toolchain](https://rustup.rs/) -- [Tauri prerequisites](https://v2.tauri.app/start/prerequisites/) +Benchmark references: [SWE-Bench-Pro](https://labs.scale.com/leaderboard/swe_bench_pro_public) / [SWE-Bench-Verified](https://www.swebench.com/verified.html) -```bash -pnpm install -pnpm run desktop:dev -``` +**2. Token economy** — Agent economy needs to be evaluated across end-to-end token consumption, execution time, and KV Cache reuse. From the same SWE-Bench-Pro round, BitFun's average KV Cache hit rate was **98.67%**. The follow-up report will add broader cost and latency metrics. + +![KV Cache hit rate distribution](./png/kv_cache_hit_rate.png) + +**3. Context retrieval at scale** — Agent experience also depends on how quickly it retrieves context in very large projects. On tens-of-millions-line repositories such as Chromium, BitFun uses **flashgrep** to cut search time by up to **94.6%**, averaging a **36.1x** speedup. -For more development details, see [CONTRIBUTING.md](./CONTRIBUTING.md). +![flashgrep search speed](./png/flashgrep_search_speed.png) --- -## Customize Your BitFun +## Customize your BitFun BitFun's extension paths progress continuously from light to deep customization: @@ -119,7 +98,21 @@ You can use BitFun's Code Agent to extend BitFun itself. --- -## Contributing +## Where this is going + +- **Lights-Out Factory** (in progress): Design during the day, let tasks flow to the server and run through the night, then review the results in the morning. +- **Infinite Radius** (in progress): Extending from desktop and browser to mobile, wearables, and more devices, so work stays accessible and continuous. +- **App Evolution**: Build tailored workflows with custom Agents, MCP, Skills, Mini Apps, or source-level customization. **Community contributors have already created specialized versions for short-form drama, media, and more**. +- **Better, Faster, Cheaper**: Pursue greater efficiency, better results, and lower cost. +- **Ultimate Desktop**: Continuously refine an easier-to-use, more capable, and more beautiful desktop experience. + +![readme_hero](./png/readme_hero.png) + +--- + +## Community & contributing + +Questions, ideas, and bug reports are all welcome in [Discussions](https://github.com/GCWing/BitFun/discussions) and [Issues](https://github.com/GCWing/BitFun/issues). Stars, Issues, and PRs are welcome. We especially care about: diff --git a/README.zh-CN.md b/README.zh-CN.md index f8c9c68978..5bec678f84 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -4,103 +4,82 @@ ![BitFun](./png/BitFun_title.png) - -
+### 开源桌面 AI Agent —— 在真实仓库里交付代码,在真实桌面上动手干活。 -[![Trendshift](https://trendshift.io/api/badge/repositories/44672)](https://trendshift.io/repositories/44672) +Code Agent · Cowork · Computer Use —— 本地优先,基于 Rust Runtime。 + +[**⬇ 下载 macOS · Windows · Linux 版**](https://github.com/GCWing/BitFun/releases/latest) + +[官网](https://openbitfun.com/) · [文档](./docs) · [讨论区](https://github.com/GCWing/BitFun/discussions) · [参与贡献](./CONTRIBUTING_CN.md) [![GitHub release](https://img.shields.io/github/v/release/GCWing/BitFun?style=flat-square&color=blue)](https://github.com/GCWing/BitFun/releases) -[![Website](https://img.shields.io/badge/Website-openbitfun.com-6f42c1?style=flat-square)](https://openbitfun.com/) +[![Downloads](https://img.shields.io/github/downloads/GCWing/BitFun/total?style=flat-square&color=brightgreen)](https://github.com/GCWing/BitFun/releases) +[![Stars](https://img.shields.io/github/stars/GCWing/BitFun?style=flat-square&color=yellow)](https://github.com/GCWing/BitFun/stargazers) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow?style=flat-square)](https://github.com/GCWing/BitFun/blob/main/LICENSE) -[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-blue?style=flat-square)](https://github.com/GCWing/BitFun) - -
+[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-blue?style=flat-square)](https://github.com/GCWing/BitFun/releases) ---- +[![Trendshift](https://trendshift.io/api/badge/repositories/44672)](https://trendshift.io/repositories/44672) -## 融合多种 Agent 形态的新一代 AI 应用底座 + -BitFun 以 Code Agent 的工程能力为核心,融合 Co-work 与 Claw(助手式 Agent),面向编码、办公和更多真实工作场景,打造本地优先的新一代 Agent 应用底座(含Rust构建的Agent Runtime 和完善的桌面端应用体验)。 + -- **黑灯工厂**(正在构建中):白天设计,夜间任务流转到服务器持续执行,早上直接验收成果。 -- **无限半径**(正在构建中):从桌面、浏览器持续延伸到移动端、可穿戴等更多设备,让工作随时接入、连续协作。 -- **应用进化**:支持自定义 Agent、MCP、Skills、Mini App 乃至源码级改造,组合专属工作流;**社区伙伴已拓展出短剧、媒体等丰富版本**。 -- **多快好省**:追求更高效率、更优效果与更低成本。 -- **极致桌面**:持续打磨更易用、更好用、更漂亮的桌面体验。 - -![readme_hero_CN](./png/readme_hero_CN.png) +![BitFun 桌面端](./png/first_screen_screenshot_CN.png) --- -## Agent 核心指标 - -下面的数据用于观察 BitFun Agent 的核心能力。统一使用 **Deepseek-V4-Pro**,分为完成效果、Token 经济和其他体验指标三个部分。 - -> 当前数据为每个 case 跑 1 次得到的 BitFun 初始评测结果。评测会受到任务抽样、模型版本、运行环境和单次执行偶然性的影响,存在一定波动;这组数据仅用于说明当前 Agent 已具备可用的基础竞争力,并不代表固定排名或最终上限。后续会持续优化并放出完整评测详情。 - -### 1. 完成效果 +## 安装 -BitFun 在 **SWE-Bench-Pro** 和 **SWE-Bench-Verified** 上均领先 Open Code 与 Claude Code。SWE-Bench-Pro 关注复杂软件工程,SWE-Bench-Verified 关注人工验证的 GitHub issue 修复。 +**直接下载** —— 前往 [Releases](https://github.com/GCWing/BitFun/releases/latest) 下载最新桌面端安装包,安装后配置模型即可开始使用。 -![Agent benchmark scores](./png/agent_benchmark_scores.svg) +**或从源码运行:** -评测集说明:[SWE-Bench-Pro](https://labs.scale.com/leaderboard/swe_bench_pro_public) / [SWE-Bench-Verified](https://www.swebench.com/verified.html) - -### 2. Token 经济 - -Agent 执行是否经济,需要综合评估端到端 Token 消耗、执行耗时和 KV Cache 复用。当前先展示同一轮 SWE-Bench-Pro 中的 KV Cache 观察:BitFun 的平均 KV Cache 命中率为 **98.67%**。后续完整评测会继续补充更完整的成本与耗时指标。 - -![KV Cache hit rate distribution](./png/kv_cache_hit_rate.png) - -### 3. 其他体验指标 - -成本之外,Agent 体验还取决于它能否在超大工程里快速找回上下文。面对 Chromium 这类千万行级代码仓库,BitFun 通过 **flashgrep** 最高降低约 **94.6%** 搜索耗时,平均加速约 **36.1x**。 +```bash +pnpm install +pnpm run desktop:dev +``` -![flashgrep search speed](./png/flashgrep_search_speed.png) +前置依赖:[Node.js](https://nodejs.org/) 22.12+(推荐 LTS)、[pnpm](https://pnpm.io/) 10.15.0(建议通过 Corepack 使用)、[Rust 工具链](https://rustup.rs/)、[Tauri 前置依赖](https://v2.tauri.app/start/prerequisites/)。更多说明见 [CONTRIBUTING_CN.md](./CONTRIBUTING_CN.md)。 --- -## 两个核心场景,一套可扩展 Agent 桌面 +## 你可以把什么交给 BitFun -你可以把两类复杂工作交给 BitFun 推进:在真实仓库里完成编码交付,在资料和文件中完成办公交付。遇到需要浏览器、桌面软件、终端或远程环境的任务时,它可以进入真实工作现场;需要接入你的工具链时,也可以继续扩展 Agent 自定义、MCP、Skills 和 Mini App。 - -### 核心场景 +两类复杂工作:在真实仓库里完成编码交付,在资料和文件中完成办公交付。遇到需要浏览器、桌面软件、终端或远程环境的任务时,它可以进入真实工作现场。 | 场景 | 目标交付 | 典型能力 | | --- | --- | --- | | **编码** | 从真实仓库推进到可合并结果。 | Agentic、Plan、Debug、测试、Git、Deep Review、长程任务、Benchmark。 | | **办公** | 从资料推进到可交付文档。 | Research、PPT、DOCX、XLSX、PDF、总结、写作、会议纪要、报告。 | -### 通用能力 +**通用能力** - **桌面执行底座**:Computer Use、浏览器操作、桌面应用、文件系统、终端、远程工作区和 Mini App,让 Agent 能进入真实工作环境。 - **可定制化扩展**:MCP、Skills、Agent 自定义、Mini App 和源码级扩展,让 BitFun 可以按你的工具链、角色和界面继续生长。 -![first_screen_screenshot_CN](./png/first_screen_screenshot_CN.png) - --- -## 开箱即用 +## Agent 核心指标 -### 直接下载 +下面的数据用于观察 BitFun Agent 的核心能力,统一使用 **Deepseek-V4-Pro** 测得。 -前往 [Releases](https://github.com/GCWing/BitFun/releases) 下载最新桌面端安装包,安装后配置模型即可开始使用。 +> [!NOTE] +> 当前数据为每个 case 跑 1 次得到的 BitFun 初始评测结果。评测会受到任务抽样、模型版本、运行环境和单次执行偶然性的影响,存在一定波动;这组数据仅用于说明当前 Agent 已具备可用的基础竞争力,并不代表固定排名或最终上限。后续会持续优化并放出完整评测详情。 -### 从源码运行 +**1. 完成效果** —— BitFun 在 **SWE-Bench-Pro**(复杂软件工程)和 **SWE-Bench-Verified**(人工验证的 GitHub issue 修复)上均领先 Open Code 与 Claude Code。 -**前置依赖:** +![Agent benchmark scores](./png/agent_benchmark_scores.svg) -- [Node.js](https://nodejs.org/) 22.12+(推荐 LTS) -- [pnpm](https://pnpm.io/) 10.15.0(建议通过 Corepack 使用) -- [Rust 工具链](https://rustup.rs/) -- [Tauri 前置依赖](https://v2.tauri.app/start/prerequisites/) +评测集说明:[SWE-Bench-Pro](https://labs.scale.com/leaderboard/swe_bench_pro_public) / [SWE-Bench-Verified](https://www.swebench.com/verified.html) -```bash -pnpm install -pnpm run desktop:dev -``` +**2. Token 经济** —— Agent 执行是否经济,需要综合评估端到端 Token 消耗、执行耗时和 KV Cache 复用。同一轮 SWE-Bench-Pro 中,BitFun 的平均 KV Cache 命中率为 **98.67%**。后续完整评测会继续补充成本与耗时指标。 + +![KV Cache hit rate distribution](./png/kv_cache_hit_rate.png) + +**3. 超大工程下的上下文检索** —— 成本之外,Agent 体验还取决于它能否在超大工程里快速找回上下文。面对 Chromium 这类千万行级代码仓库,BitFun 通过 **flashgrep** 最高降低约 **94.6%** 搜索耗时,平均加速约 **36.1x**。 -更多开发说明见 [CONTRIBUTING_CN.md](./CONTRIBUTING_CN.md)。 +![flashgrep search speed](./png/flashgrep_search_speed.png) --- @@ -119,7 +98,21 @@ BitFun 的扩展路径从轻到重连续展开: --- -## 贡献 +## 我们要做成什么样 + +- **黑灯工厂**(正在构建中):白天设计,夜间任务流转到服务器持续执行,早上直接验收成果。 +- **无限半径**(正在构建中):从桌面、浏览器持续延伸到移动端、可穿戴等更多设备,让工作随时接入、连续协作。 +- **应用进化**:支持自定义 Agent、MCP、Skills、Mini App 乃至源码级改造,组合专属工作流;**社区伙伴已拓展出短剧、媒体等丰富版本**。 +- **多快好省**:追求更高效率、更优效果与更低成本。 +- **极致桌面**:持续打磨更易用、更好用、更漂亮的桌面体验。 + +![readme_hero_CN](./png/readme_hero_CN.png) + +--- + +## 社区与贡献 + +有问题、想法或 Bug,欢迎到 [讨论区](https://github.com/GCWing/BitFun/discussions) 和 [Issues](https://github.com/GCWing/BitFun/issues) 交流。 欢迎 Star、Issue 和 PR。我们尤其关注: diff --git a/png/og-image.png b/png/og-image.png new file mode 100644 index 0000000000..4045269ba4 Binary files /dev/null and b/png/og-image.png differ diff --git a/scripts/record-demo.sh b/scripts/record-demo.sh new file mode 100755 index 0000000000..73dd9937ab --- /dev/null +++ b/scripts/record-demo.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +# +# record-demo.sh — Record the README demo GIF of BitFun running a real task. +# +# The README leads with a static screenshot, which cannot show what an Agent +# actually does. A short loop of one real task running end to end is the single +# highest-conversion asset on the page. This script removes the fiddly parts: +# screen capture, palette-optimised GIF encoding, and staying under GitHub's +# rendering limits. +# +# Usage: +# scripts/record-demo.sh [seconds] [output] +# +# scripts/record-demo.sh # 30s -> png/demo.gif +# scripts/record-demo.sh 20 # 20s -> png/demo.gif +# scripts/record-demo.sh 25 png/x.gif # 25s -> png/x.gif +# +# Requires ffmpeg (brew install ffmpeg) and Screen Recording permission for +# your terminal in System Settings > Privacy & Security > Screen Recording. +# +# What to record (in order of how much it matters): +# 1. Open BitFun on a real repository, type a real task, hit enter. +# 2. Let the Agent plan, edit files, and run something that visibly succeeds. +# 3. End on the result — a passing test, a diff, a finished document. +# Keep it under 30s. No title cards, no cursor hunting, no dead air. + +set -euo pipefail + +DURATION="${1:-30}" +OUTPUT="${2:-png/demo.gif}" + +REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$REPO_ROOT" + +if ! command -v ffmpeg >/dev/null 2>&1; then + echo "error: ffmpeg not found. Install it with: brew install ffmpeg" >&2 + exit 1 +fi + +WORKDIR="$(mktemp -d)" +trap 'rm -rf "$WORKDIR"' EXIT +RAW="$WORKDIR/raw.mov" +PALETTE="$WORKDIR/palette.png" + +# Width of the final GIF. 1200 is wide enough to read UI text on GitHub +# without pushing the file past a few megabytes. +WIDTH="${DEMO_WIDTH:-1200}" +FPS="${DEMO_FPS:-12}" + +echo "Available capture devices:" +ffmpeg -f avfoundation -list_devices true -i "" 2>&1 | sed -n '/AVFoundation video devices/,/AVFoundation audio devices/p' || true +echo + +SCREEN_INDEX="${DEMO_SCREEN_INDEX:-1}" +echo "Recording screen index $SCREEN_INDEX for ${DURATION}s (override with DEMO_SCREEN_INDEX=n)." +echo "Starting in 3 seconds — switch to BitFun now." +sleep 3 + +ffmpeg -hide_banner -loglevel error \ + -f avfoundation -capture_cursor 1 -framerate 30 -i "$SCREEN_INDEX:none" \ + -t "$DURATION" -c:v libx264 -pix_fmt yuv420p "$RAW" + +echo "Encoding GIF (two-pass palette)…" +FILTERS="fps=$FPS,scale=$WIDTH:-1:flags=lanczos" + +ffmpeg -hide_banner -loglevel error -i "$RAW" \ + -vf "$FILTERS,palettegen=stats_mode=diff" -y "$PALETTE" + +ffmpeg -hide_banner -loglevel error -i "$RAW" -i "$PALETTE" \ + -lavfi "$FILTERS[x];[x][1:v]paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" \ + -y "$OUTPUT" + +SIZE_BYTES="$(wc -c < "$OUTPUT" | tr -d ' ')" +SIZE_MB="$(echo "$SIZE_BYTES" | awk '{printf "%.1f", $1/1048576}')" +echo "Wrote $OUTPUT (${SIZE_MB} MB)" + +if [ "$SIZE_BYTES" -gt 10485760 ]; then + echo + echo "warning: over GitHub's 10 MB image limit — it will not render." >&2 + echo " Re-run shorter, or with DEMO_FPS=10 DEMO_WIDTH=1000." >&2 + exit 1 +fi + +echo +echo "Next: swap the screenshot at the top of README.md and README.zh-CN.md for:" +echo " ![BitFun in action](./${OUTPUT})"