| fix(release): 运行时校验对齐 v0.9.3 原生 CPython,并支持手动触发 v0.9.3 已移除 Pyodide(WASM) 资产,改为随仓库提供的原生 CPython 3.13 (assets/python-stdlib.zip + jniLibs/libpython3.13.so + libpybridge.so), 但 release 工作流仍在校验已删除的 pyodide 文件,导致 Release 构建必失败。 同时补充 workflow_dispatch 手动入口与产物上传。 | 23 小时前 |
| fix(runtime): 修复导致脚本'跑不起来'的引擎问题与文档脱节 1. pybridge.c:execFile 注入 __file__/__cached__/__loader__/__spec__ 模块元属性。 PyRun_FileExFlags 不会自动设置这些,用户脚本里 os.path.dirname(__file__) / Path(__file__) 等高频写法会直接 NameError(已实测复现)。同步重编 jniLibs/libpybridge.so(NDK 27.3 + CPython 3.13.9 交叉头文件)。 2. NativeEngine.run:修复并发运行状态机。execFile 是阻塞 JNI 调用, 协程 cancel 无法中断;原实现在 Finished 事件/awaitClose 里提前复位 busy, 旧线程未退出时新运行会并发执行(sys.path/cwd/argv 互相污染、输出串台)。 现在 busy/running 只在 execFile 真正返回时复位;Finished 事件幂等去重; stop() 增加中断兜底线程(2s 未收尾补发 Finished 130)。 3. EditorViewModel:stopRun 兜底由 3s 延长到 8s 并对齐引擎实际状态; Java 文件运行时给出明确提示(原实现会把 Java 源码当 Python 执行)。 4. scripts/build_apk.sh:pkill -9 -f GradleDaemon 会误杀用户所有项目的 Gradle 进程,改为 gradlew --stop + 只清理陈旧(>10min)锁文件。 5. README:架构描述对齐原生 CPython 3.13(原为已废弃的 Pyodide/WASM), 修正 numpy/pandas/matplotlib 未预装的诚实声明与构建前置要求。 6. 清理 4 处未使用 import。 | 58 分钟前 |
| feat(site): Quiet 设计语言截图 + 宣传视频上线 - design/mockup.html: 配色升级为 Quiet token(REFACTOR_SPEC 1.1),文案对齐 v0.9.2(原生 CPython、主题名、输出空态),旧 Pyodide 表述清除 - design/shot_mockup.py: 三态截图脚本(idle/running/error) - design/demo_video.py + promo.mp4: 24.5s 竖屏宣传视频(编辑→运行→交互→报错→点行跳转→文件抽屉→命令面板) - site/assets: 替换三张旧截图(preview/running/error-jump 均为新 Quiet UI),新增 promo.mp4 - site/index.html: 新增宣传视频区(竖屏限高防溢出),修复特性卡 3+1 孤儿卡布局 | 2 天前 |
| feat(v0.9.3): 全面优化——删72MB pyodide死资产/引擎args传参与read修复/UI体验补齐/加密存储 第一刀发版前置: - 删除 assets/pyodide/ (72MB, 19文件) + python-runner.html + PyodideEngine.kt (437行死代码) - 版本号 0.9.3 / versionCode 13 - python-data 模板改纯标准库 statistics (原 import numpy 必失败) - 全仓 Pyodide/WASM 文案清理为原生 CPython 3.13.9 第二刀 P1 全修复: - RunRequest.args 透传 sys.argv (JNI jobjectArray + PyList 构造) - _DtIn.read(size=-1) 循环读到 EOF - autoFollow 跨运行复位 - 解压中返回键拦截 - 新建空白文件入口 (激活 newFile 死代码) - 运行不立即弹键盘 (底部点击输入手动入口) - AI Key/Git token EncryptedSharedPreferences + Keystore 加密 - allowBackup=false + cleartext 限 localhost - MissingToolchainScreen 文案更新 - CompletionProvider 删 numpy/pandas/matplotlib 第三刀 P2/P3 体验补齐: - 品牌启动屏 (windowBackground 规避白屏) - 运行按钮移到 OutputPanel 顶部 pill (拇指区) - 命令面板最近文件/撤销重做/分享代码 - 首次预热提示 RunEvent.Log - 通知权限先解释再请求 - 停止 3s 兜底超时 - Git 冲突文件列表 - AI SSE 流式输出 - Tab 触控区放大+脏点/语义色/CommandPalette imePadding - WebView destroy+禁JS/符号栏条件渲染/会话恢复光标 - bridge_output detach/sys.path去重/inittab防重复/解压进度回调 验证: BUILD SUCCESSFUL, 单测6/6, APK 125MB→94MB (-25%), pyodide 0残留 | 2 天前 |
| fix(runtime): 修复导致脚本'跑不起来'的引擎问题与文档脱节 1. pybridge.c:execFile 注入 __file__/__cached__/__loader__/__spec__ 模块元属性。 PyRun_FileExFlags 不会自动设置这些,用户脚本里 os.path.dirname(__file__) / Path(__file__) 等高频写法会直接 NameError(已实测复现)。同步重编 jniLibs/libpybridge.so(NDK 27.3 + CPython 3.13.9 交叉头文件)。 2. NativeEngine.run:修复并发运行状态机。execFile 是阻塞 JNI 调用, 协程 cancel 无法中断;原实现在 Finished 事件/awaitClose 里提前复位 busy, 旧线程未退出时新运行会并发执行(sys.path/cwd/argv 互相污染、输出串台)。 现在 busy/running 只在 execFile 真正返回时复位;Finished 事件幂等去重; stop() 增加中断兜底线程(2s 未收尾补发 Finished 130)。 3. EditorViewModel:stopRun 兜底由 3s 延长到 8s 并对齐引擎实际状态; Java 文件运行时给出明确提示(原实现会把 Java 源码当 Python 执行)。 4. scripts/build_apk.sh:pkill -9 -f GradleDaemon 会误杀用户所有项目的 Gradle 进程,改为 gradlew --stop + 只清理陈旧(>10min)锁文件。 5. README:架构描述对齐原生 CPython 3.13(原为已废弃的 Pyodide/WASM), 修正 numpy/pandas/matplotlib 未预装的诚实声明与构建前置要求。 6. 清理 4 处未使用 import。 | 58 分钟前 |
| docs(site): 官网对齐 v1.0.0 正式版 - 下载区更新:v1.0.0 正式版 · 约 98MB · 50+ 原生 C 扩展 - hero 加 v1.0.0 徽标 - 功能卡片补齐 v1.0.0 新特性:自动闭合/行号/换行/跳行/图片预览/离线包管理/AI 流式/命令面板 | 1 天前 |
| test(v0.8.0): 全量测试 + 截图/录屏/宣传片 + GitHub 发布脚本修正 - 新增 tools/demo_record.mjs:本地静态服务 + 系统 Chromium(CDP 实时录屏) 驱动 mockup.html 真实运行 13 道题目(含 numpy/pandas/matplotlib),产出 demo.mp4 与全部截图 - design/mockup.html:新增 v0.8.0 题库(离线数据分析 pandas / 离线可视化 matplotlib 出图)、 6 套编辑器主题切换、Markdown/HTML 实时预览;修复死循环题终止 worker 后不重建解释器导致后续题目卡死 - design/pyworker.js:按 import 自动装载本地 wheel;拦截 matplotlib 显示并回传 base64 PNG - tools/build_promo.py:修正 ffprobe 二进制名;新增 v0.8.0 截图卡片 - tools/publish_github.sh:修正仓库名(x33834/Morningstar202604)与 tag(v0.8.0),编排推送+Release - 全量测试:Kotlin 单元测试 29/29、selfcheck 通过、Web 端到端 13/13 通过 | 4 天前 |
| chore(release): publish_github.sh 支持 --dry-run 自检;兼容已配置的 github/github-mirror remote - 新增 --dry-run:不触网校验远端仓库、附件齐备性、tag 状态 - remote 解析兼容命名 remote,正式执行时自动补 gh-<repo> - 附件清单:APK / demo.mp4 / promo.mp4 / 测试报告 | 4 天前 |
| chore: 补充项目规范文件(.editorconfig、.gitattributes) | 4 天前 |
| chore: 补充项目规范文件(.editorconfig、.gitattributes) | 4 天前 |
| chore: 忽略 .kotlin 编译日志目录 | 2 天前 |
| fix(engine): 修复原生引擎三处关键问题 - pybridge.c: PyImport_AppendInittab 移到 Py_Initialize 之前(否则 dtbridge 模块不注册,stdio 桥接失效);修复 __main__/builtins 引用计数 - NativeBridge.onOutput 行缓冲:CPython 的 print 按参数多次 write, 拼接后按 \n 断行,print('a','b') 不再被拆成多行 - 新增 scripts/test_bridge_logic.py:用宿主 CPython 3.13.9 模拟验证 Python 层桥接(print 拆分/input/EOF/中文/stderr/异常),全部通过 | 2 天前 |
| docs: 补充社区文档(CODE_OF_CONDUCT、CONTRIBUTING、SECURITY) | 4 天前 |
| docs(contributing): 补充发布流程检查清单(版本/验证/标签/Release/部署) | 4 天前 |
| init: DevTerminal v0.1.0 — 完全离线的安卓编程终端 - Kotlin + Jetpack Compose + Material 3,20 个源文件约 3190 行 - 离线执行引擎:ProcessBuilder + termux 环境变量模拟,工具链预打包零网络 - Python 交互式 stdin / Java 多文件编译运行 - SAF 导入导出、设置页、静态补全、友好报错、崩溃日志 - 含高保真交互 UI 原型(design/mockup.html)与静态自检脚本 | 13 天前 |
| feat(visual+preview): matplotlib 离线画图、6 套编辑器主题、Markdown/HTML 实时预览 (v0.8.0) matplotlib 离线画图(零网络) - 3.5.2 + 全部依赖(pillow/fonttools/kiwisolver/cycler/packaging/pyparsing/ matplotlib-pyodide)共 8 个 wheel 随 APK 打包(约 24MB,sha256 与 0.26.4 lock 完全一致); - 端到端验证:无头 Chromium 实测 savefig 输出合法 PNG(19143 字节, 魔数 89504e47),装载 0.7s。 编辑器多主题 - vendor VS Code 内置主题 4 套(Monokai / Solarized 暗·亮 / Tomorrow Night Blue,JSONC→严格 JSON,MIT,NOTICE 已声明),与原有 Darcula / Quiet Light 共 6 套; - 设置页新增「编辑器主题」chips(两列网格),"auto" 跟随明暗为默认值, 与旧设置向后兼容(无 key 时行为不变); - 全部主题一次性预载入 ThemeRegistry,切换零 IO 等待。 Markdown / HTML 实时预览 - 新增 org.jetbrains:markdown 0.7.3(IntelliJ 同款 GFM 解析器,纯 Kotlin); - MarkdownRenderer:GFM→HTML + 移动端自适应页面壳(明暗两版), 500K 字符分段渲染保护,解析器异常兜底不白屏; - PreviewPane:独立 WebView 分屏(禁 JavaScript / file:// / content 访问, baseURL 置空),随面板存续避免刷新闪白; - 入口:顶栏 Preview 按钮(仅 .md/.html 显示)+ 命令面板; - 实时刷新:snapshotFlow + collectLatest + 350ms 防抖,只渲染最后一次 输入;切到不可预览文件自动收起分屏。 测试与文档 - 新增 MarkdownRendererTest(6 例),全量 29/29 通过; - CHANGELOG 0.8.0、README 能力表/Roadmap/里程碑 M16/体积实况(53MB)、 NOTICE 补 jetbrains:markdown(Apache-2.0)与 VS Code 主题(MIT)声明。 | 5 天前 |
| fix(runtime): 修复导致脚本'跑不起来'的引擎问题与文档脱节 1. pybridge.c:execFile 注入 __file__/__cached__/__loader__/__spec__ 模块元属性。 PyRun_FileExFlags 不会自动设置这些,用户脚本里 os.path.dirname(__file__) / Path(__file__) 等高频写法会直接 NameError(已实测复现)。同步重编 jniLibs/libpybridge.so(NDK 27.3 + CPython 3.13.9 交叉头文件)。 2. NativeEngine.run:修复并发运行状态机。execFile 是阻塞 JNI 调用, 协程 cancel 无法中断;原实现在 Finished 事件/awaitClose 里提前复位 busy, 旧线程未退出时新运行会并发执行(sys.path/cwd/argv 互相污染、输出串台)。 现在 busy/running 只在 execFile 真正返回时复位;Finished 事件幂等去重; stop() 增加中断兜底线程(2s 未收尾补发 Finished 130)。 3. EditorViewModel:stopRun 兜底由 3s 延长到 8s 并对齐引擎实际状态; Java 文件运行时给出明确提示(原实现会把 Java 源码当 Python 执行)。 4. scripts/build_apk.sh:pkill -9 -f GradleDaemon 会误杀用户所有项目的 Gradle 进程,改为 gradlew --stop + 只清理陈旧(>10min)锁文件。 5. README:架构描述对齐原生 CPython 3.13(原为已废弃的 Pyodide/WASM), 修正 numpy/pandas/matplotlib 未预装的诚实声明与构建前置要求。 6. 清理 4 处未使用 import。 | 58 分钟前 |
| docs: 补充社区文档(CODE_OF_CONDUCT、CONTRIBUTING、SECURITY) | 4 天前 |
| build: 技术栈全面升级至当前主流版本 (Kotlin 2.0 / K2 编译器 / AGP 8.7 / SDK 35) 工具链: - Gradle 8.9 -> 8.11.1 - AGP 8.5.2 -> 8.7.3 - Kotlin 1.9.24 -> 2.0.21 (启用 K2 编译器) - compileSdk/targetSdk 34 -> 35, 新增 platforms/android-35 - Compose 编译器改为独立插件 org.jetbrains.kotlin.plugin.compose (Kotlin 2.0 起不再由 kotlinCompilerExtensionVersion 指定) 依赖: - 新增 gradle/libs.versions.toml Version Catalog, 版本集中管理不再散落在 build 脚本 - Compose BOM 2024.06.00 -> 2024.12.01 (material3 1.2.x -> 1.3.1) - core-ktx 1.13.1 -> 1.15.0, activity-compose 1.9.1 -> 1.9.3 - lifecycle 2.8.3 -> 2.8.7, desugar_jdk_libs 2.0.4 -> 2.1.4 - SoraEditor 0.23.5 -> 0.23.6 - 移除冗余的显式 androidx.core:core (core-ktx 已传递引入) - 版本号 0.3.0 -> 0.4.0 构建约束: - gradle.properties 关闭并行构建: assets/usrtar.zip 461MB, Gradle 8.11 并行执行 compressDebugAssets 时对该文件产生哈希读取竞态, 报 'Failed to create MD5 hash for file content', 串行稳定通过 所有版本均逐一探测国内镜像确认可拉取(Google 系域名在构建环境不可达)。 验证: assembleDebug 通过, compileDebugKotlin 在 K2 编译器下 0 错误 0 警告。 | 11 天前 |
| fix(v0.9.3): 全量修复引擎/UI/品牌三大问题 ## 引擎(2 P0 + 3 P1 + 6 P2 + 5 P3) - P0-1: 打包 53 个标准库 C 扩展 + 3 依赖库到 jniLibs(math/random/json/datetime/socket/ctypes/zlib/ssl/sqlite3 等),pybridge.c 初始化时把 nativeLibraryDir 加入 sys.path,import math 不再 ImportError - P0-2: 修复 input() 阻塞时点停止永久死锁——stop()/watchdog 先 pushEof() 再 requestInterrupt(),C 侧 requestInterrupt 去掉 PyGILState_Ensure(Py_AddPendingCall 本就支持无 GIL 调用) - P1-1: 首启解压增加三重完整性校验(标记文件+os.py+encodings),失败不删 zip、抛错提示重试 - P1-2: execFile 透传 workingDir/scriptDir/argv,os.chdir + sys.path.insert + sys.argv,相对路径和兄弟模块 import 正常 - P1-3: EngineProvider 区分架构不支持与库损坏,抛带文案异常,不再静默回退 Pyodide - P2: 结束 flush 残留输出行、SIGSEGV/SIGBUS/SIGABRT native crash handler(_Unwind_Backtrace)、site-packages 目录、诊断文案对齐原生引擎、_DtIn.read(size) 语义修正 - P3: 缓冲 synchronized、10000 行/256KB 背压、release 复位静态 sink、execFile 后 gc.collect、看门狗 2 秒宽限后标记未响应 ## UI(4 P1 + 4 P2 + 2 P3) - P1-4: QuietDialog 正文包 verticalScroll + imePadding,设置页等长面板可滚动 - P1-5: OutputPanel 自动跟随锁——用户上翻即停,离开底部显示 indigo 回到底部按钮 - P1-6: MainActivity 根 Surface 加 safeDrawingPadding,CodeEditorView 聚焦时 ensureSelectionVisible - P1-7: SoraEditor 嵌套滚动桥接(rememberNestedScrollInteropConnection 在当前 BOM 未解析,暂不挂,待真机验证) - P2: StatusBar 去掉多余 horizontalScroll 恢复 weight、FileTree/AiPanel/GlobalSearch/GitPanel LazyColumn 补 weight/fillMaxHeight、编辑器全量 toString 保留同步单次(节流会被旧文本覆盖输入) - P3: EditorScreen overlay/scrollToLine 自定义 Saver + rememberSaveable,gsearchQuery 改 saveable;EditorViewModel 文案 Pyodide→原生 CPython 3.13.9 ## 品牌 - Manifest 加 android:roundIcon,site/index.html 替换 favicon(紫绿渐变→indigo)+ OG/Twitter social card + 导航 logo 换图片 - 采用 foreground v2(stroke+round cap 下划线可见、居中、indigo 光标),覆盖 v1 - 官网品牌色收敛:--purple→#8FA7F5 indigo,--grad 渐变→纯色 ## 验证 - assembleDebug BUILD SUCCESSFUL,APK 130MB(含 59 个 .so) - 单测 ALL BRIDGE LOGIC TESTS PASSED - APK 内含 math/_random/_socket/_ctypes/_json/_datetime/zlib/libcrypto/libssl/libsqlite3 + 5 档 mipmap 位图 - gradle.properties JVM 堆从 3072m 调至 2048m(沙箱 3.9GB 内存防 OOM) | 2 天前 |
| init: DevTerminal v0.1.0 — 完全离线的安卓编程终端 - Kotlin + Jetpack Compose + Material 3,20 个源文件约 3190 行 - 离线执行引擎:ProcessBuilder + termux 环境变量模拟,工具链预打包零网络 - Python 交互式 stdin / Java 多文件编译运行 - SAF 导入导出、设置页、静态补全、友好报错、崩溃日志 - 含高保真交互 UI 原型(design/mockup.html)与静态自检脚本 | 13 天前 |
| init: DevTerminal v0.1.0 — 完全离线的安卓编程终端 - Kotlin + Jetpack Compose + Material 3,20 个源文件约 3190 行 - 离线执行引擎:ProcessBuilder + termux 环境变量模拟,工具链预打包零网络 - Python 交互式 stdin / Java 多文件编译运行 - SAF 导入导出、设置页、静态补全、友好报错、崩溃日志 - 含高保真交互 UI 原型(design/mockup.html)与静态自检脚本 | 13 天前 |
| Build v0.3.0 APK from scratch: bundled toolchain + textmate assets, mirror-based build - Bundle usrtar.zip (28MB): termux arm64 bootstrap + python 3.14.6 + deps (BFS resolved), symlinks materialized, ELF deps statically verified - Bundle textmate assets: 18 languages / 29 extensions + darcula theme - Fix 12+ API mismatches vs sora-editor 0.23.5 (CompletionItem/ThemeModel/events/TextMateLanguage), rename EnvDiagnostics data class to EnvReport - Engine: flow -> channelFlow for thread-safe streaming output - Mirror build: Tencent gradle/SDK + Aliyun maven; enable core library desugaring - README/CHANGELOG: real build result documented (47MB debug APK) | 12 天前 |