码上 Mashang — 赛博朋克风离线编程学习终端:内置 CPython 3.13 + JavaScript 运行时,38 讲闯关课程、assert 判题、变量可视化 | Android · Kotlin · MIT
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
release: 0.4.0 — 网页端重写 + 真实课程路线 + 检查更新 + 文档/展示资产全面校准 网页端(第二端) - Pyodide 0.29.5 执行迁入 Web Worker(15s 强制终止),修复死循环冻结页面 - 全部用户/课程文本改 textContent,修复 REPL 输出 DOM XSS - 补 fill 填空块、hash 路由、localStorage 进度、明暗主题、移动端折叠导航、读屏可用性 - 引擎失败可重试或仅浏览;REPL 表达式回显 + 历史 + 多行 Android - 课程路线页改为真实内容(主线 38 + 4 个内容包),删除 20 条虚构轨道与建设中页 - 新增检查更新(只读 GitHub Releases 公开版本号,不自动下载) - 判题契约补 __stdout__/__stderr__,l01 起要求真正 print;毕业/首页口径统一为主线 - 课程幕次修正(27-30 第四幕、31-38 第五幕);判题失败面板去重 - 修复首页 JS 运行时版本串截断、内容中心讲数不刷新、证书海报无反馈 - Android 13 数据提取规则、单色图标、无用资源清理 内容与分发 - 内容中心三级源 Pages → raw → GitCode;新增 Pages 资产同步与链接检查工具/CI 门禁 - 新增 ARCHITECTURE / FAQ / ROADMAP,重写 SECURITY / CONTRIBUTING / COC / 隐私 / 协议 - 三语 README 与 CHANGELOG 全面事实校准(63 判题项 / 230 用例、Rhino MPL-2.0、无 keystore.properties) - 16 张 v0.4.0 实机截图、重制 banner/海报/OG、宣传片 25MB→3MB、新增 28s 网页端演示 验证 - unittest 136 条全绿;validate_content 55 项/201 用例 0 失败 - lintDebug/lintRelease 0 error;JVM 单测通过;APK 探针 ALL PASSED - 签名 release APK v2 验签通过(CN=Mashang);Playwright 网页端 e2e 0 console error - 模拟器实机验收:首页/课程/判题通过+失败/双终端/角斗场/路线/内容中心下载/设置 | 11 天前 | |
release: 0.4.0 — 网页端重写 + 真实课程路线 + 检查更新 + 文档/展示资产全面校准 网页端(第二端) - Pyodide 0.29.5 执行迁入 Web Worker(15s 强制终止),修复死循环冻结页面 - 全部用户/课程文本改 textContent,修复 REPL 输出 DOM XSS - 补 fill 填空块、hash 路由、localStorage 进度、明暗主题、移动端折叠导航、读屏可用性 - 引擎失败可重试或仅浏览;REPL 表达式回显 + 历史 + 多行 Android - 课程路线页改为真实内容(主线 38 + 4 个内容包),删除 20 条虚构轨道与建设中页 - 新增检查更新(只读 GitHub Releases 公开版本号,不自动下载) - 判题契约补 __stdout__/__stderr__,l01 起要求真正 print;毕业/首页口径统一为主线 - 课程幕次修正(27-30 第四幕、31-38 第五幕);判题失败面板去重 - 修复首页 JS 运行时版本串截断、内容中心讲数不刷新、证书海报无反馈 - Android 13 数据提取规则、单色图标、无用资源清理 内容与分发 - 内容中心三级源 Pages → raw → GitCode;新增 Pages 资产同步与链接检查工具/CI 门禁 - 新增 ARCHITECTURE / FAQ / ROADMAP,重写 SECURITY / CONTRIBUTING / COC / 隐私 / 协议 - 三语 README 与 CHANGELOG 全面事实校准(63 判题项 / 230 用例、Rhino MPL-2.0、无 keystore.properties) - 16 张 v0.4.0 实机截图、重制 banner/海报/OG、宣传片 25MB→3MB、新增 28s 网页端演示 验证 - unittest 136 条全绿;validate_content 55 项/201 用例 0 失败 - lintDebug/lintRelease 0 error;JVM 单测通过;APK 探针 ALL PASSED - 签名 release APK v2 验签通过(CN=Mashang);Playwright 网页端 e2e 0 console error - 模拟器实机验收:首页/课程/判题通过+失败/双终端/角斗场/路线/内容中心下载/设置 | 11 天前 | |
fix(release): 专家审核发现的 9 个发布级缺陷 + README 精简 审核由领域方法学家与代码评审员双线进行,逐条修复: S1 多语言锁链(严重):解锁按全局列表位置算,导致下载 C 语言后第一讲被 Python l38 锁住,六门语言必须先学完上一门。改为按章节(课程包)内解锁, 序号显示包内 01..N。 S2 DSA/彩蛋包导航错乱:lang==python 就把 DSA 当主线,lessonIdx=-1(进度条消失), 完成后「下一课」跳回 l01。改为按 chapterName 分组,11 讲受影响。 S3 毕业口径四处不一致:帮助页用 lessonsByLang(下载 DSA 后 49 讲)、 我的页用 mainline 38、证书页用 completedLessons.size、徽章用总数比较。 全部统一到 mainline;徽章额外用正则再过滤一次,防「学 8 讲 JS 就毕业」。 S5 终端 input() 承诺:FAQ 说支持,实际 repl.py 没接管 input,调用即 EOFError。 改为如实说明不支持。 S6 TS 课程虚假承诺:三处说「编辑器会立刻标红」,但应用只做类型擦除、 编辑器只有语法高亮。全部改写为诚实描述,练习改用运行时 typeof 断言。 S7 启动失败无兜底:warmup 失败仍进首页并显示「Python 3.x 就绪」假象。 改为停在恢复页,给「重试 / 仍要继续」两个出口。 S8 隐私同意时序(合规硬伤):同意前 BootScreen 就预热运行时并写连击数据。 改为 consented=false 时跳过一切处理,不写任何数据。 S9 应用内隐私政策口径:只列 4 个运行时(漏 C/TS),服务条款只写 Python/JS。 补全六语言 + 诊断日志条款 + 第三方组件声明。 S12 门禁红:README 精简后旧断言仍检查首屏必须含 JavaScript。 改为检查全文(语言表章节完整即可),不为过测试往首屏堆废话。 README 三语精简:236/251/250 行 → 75 行。只保留一句话定位、截图、语言表、 安装方式。删除所有营销话术(「为什么是码上」对比表、特性罗列、适合谁、Roadmap、 质量门禁细节),这些用户不关心。 | 5 小时前 | |
fix(release): 专家审核发现的 9 个发布级缺陷 + README 精简 审核由领域方法学家与代码评审员双线进行,逐条修复: S1 多语言锁链(严重):解锁按全局列表位置算,导致下载 C 语言后第一讲被 Python l38 锁住,六门语言必须先学完上一门。改为按章节(课程包)内解锁, 序号显示包内 01..N。 S2 DSA/彩蛋包导航错乱:lang==python 就把 DSA 当主线,lessonIdx=-1(进度条消失), 完成后「下一课」跳回 l01。改为按 chapterName 分组,11 讲受影响。 S3 毕业口径四处不一致:帮助页用 lessonsByLang(下载 DSA 后 49 讲)、 我的页用 mainline 38、证书页用 completedLessons.size、徽章用总数比较。 全部统一到 mainline;徽章额外用正则再过滤一次,防「学 8 讲 JS 就毕业」。 S5 终端 input() 承诺:FAQ 说支持,实际 repl.py 没接管 input,调用即 EOFError。 改为如实说明不支持。 S6 TS 课程虚假承诺:三处说「编辑器会立刻标红」,但应用只做类型擦除、 编辑器只有语法高亮。全部改写为诚实描述,练习改用运行时 typeof 断言。 S7 启动失败无兜底:warmup 失败仍进首页并显示「Python 3.x 就绪」假象。 改为停在恢复页,给「重试 / 仍要继续」两个出口。 S8 隐私同意时序(合规硬伤):同意前 BootScreen 就预热运行时并写连击数据。 改为 consented=false 时跳过一切处理,不写任何数据。 S9 应用内隐私政策口径:只列 4 个运行时(漏 C/TS),服务条款只写 Python/JS。 补全六语言 + 诊断日志条款 + 第三方组件声明。 S12 门禁红:README 精简后旧断言仍检查首屏必须含 JavaScript。 改为检查全文(语言表章节完整即可),不为过测试往首屏堆废话。 README 三语精简:236/251/250 行 → 75 行。只保留一句话定位、截图、语言表、 安装方式。删除所有营销话术(「为什么是码上」对比表、特性罗列、适合谁、Roadmap、 质量门禁细节),这些用户不关心。 | 5 小时前 | |
release: 0.4.0 — 网页端重写 + 真实课程路线 + 检查更新 + 文档/展示资产全面校准 网页端(第二端) - Pyodide 0.29.5 执行迁入 Web Worker(15s 强制终止),修复死循环冻结页面 - 全部用户/课程文本改 textContent,修复 REPL 输出 DOM XSS - 补 fill 填空块、hash 路由、localStorage 进度、明暗主题、移动端折叠导航、读屏可用性 - 引擎失败可重试或仅浏览;REPL 表达式回显 + 历史 + 多行 Android - 课程路线页改为真实内容(主线 38 + 4 个内容包),删除 20 条虚构轨道与建设中页 - 新增检查更新(只读 GitHub Releases 公开版本号,不自动下载) - 判题契约补 __stdout__/__stderr__,l01 起要求真正 print;毕业/首页口径统一为主线 - 课程幕次修正(27-30 第四幕、31-38 第五幕);判题失败面板去重 - 修复首页 JS 运行时版本串截断、内容中心讲数不刷新、证书海报无反馈 - Android 13 数据提取规则、单色图标、无用资源清理 内容与分发 - 内容中心三级源 Pages → raw → GitCode;新增 Pages 资产同步与链接检查工具/CI 门禁 - 新增 ARCHITECTURE / FAQ / ROADMAP,重写 SECURITY / CONTRIBUTING / COC / 隐私 / 协议 - 三语 README 与 CHANGELOG 全面事实校准(63 判题项 / 230 用例、Rhino MPL-2.0、无 keystore.properties) - 16 张 v0.4.0 实机截图、重制 banner/海报/OG、宣传片 25MB→3MB、新增 28s 网页端演示 验证 - unittest 136 条全绿;validate_content 55 项/201 用例 0 失败 - lintDebug/lintRelease 0 error;JVM 单测通过;APK 探针 ALL PASSED - 签名 release APK v2 验签通过(CN=Mashang);Playwright 网页端 e2e 0 console error - 模拟器实机验收:首页/课程/判题通过+失败/双终端/角斗场/路线/内容中心下载/设置 | 11 天前 | |
fix(release): 专家审核发现的 9 个发布级缺陷 + README 精简 审核由领域方法学家与代码评审员双线进行,逐条修复: S1 多语言锁链(严重):解锁按全局列表位置算,导致下载 C 语言后第一讲被 Python l38 锁住,六门语言必须先学完上一门。改为按章节(课程包)内解锁, 序号显示包内 01..N。 S2 DSA/彩蛋包导航错乱:lang==python 就把 DSA 当主线,lessonIdx=-1(进度条消失), 完成后「下一课」跳回 l01。改为按 chapterName 分组,11 讲受影响。 S3 毕业口径四处不一致:帮助页用 lessonsByLang(下载 DSA 后 49 讲)、 我的页用 mainline 38、证书页用 completedLessons.size、徽章用总数比较。 全部统一到 mainline;徽章额外用正则再过滤一次,防「学 8 讲 JS 就毕业」。 S5 终端 input() 承诺:FAQ 说支持,实际 repl.py 没接管 input,调用即 EOFError。 改为如实说明不支持。 S6 TS 课程虚假承诺:三处说「编辑器会立刻标红」,但应用只做类型擦除、 编辑器只有语法高亮。全部改写为诚实描述,练习改用运行时 typeof 断言。 S7 启动失败无兜底:warmup 失败仍进首页并显示「Python 3.x 就绪」假象。 改为停在恢复页,给「重试 / 仍要继续」两个出口。 S8 隐私同意时序(合规硬伤):同意前 BootScreen 就预热运行时并写连击数据。 改为 consented=false 时跳过一切处理,不写任何数据。 S9 应用内隐私政策口径:只列 4 个运行时(漏 C/TS),服务条款只写 Python/JS。 补全六语言 + 诊断日志条款 + 第三方组件声明。 S12 门禁红:README 精简后旧断言仍检查首屏必须含 JavaScript。 改为检查全文(语言表章节完整即可),不为过测试往首屏堆废话。 README 三语精简:236/251/250 行 → 75 行。只保留一句话定位、截图、语言表、 安装方式。删除所有营销话术(「为什么是码上」对比表、特性罗列、适合谁、Roadmap、 质量门禁细节),这些用户不关心。 | 5 小时前 | |
fix: 7 bugs + theme switching feature (#31) Co-authored-by: x1882 <x1882@users.noreply.github.com> | 1 个月前 | |
fix(release): 发布级审计 —— 崩溃兜底 / 状态保存 / 核心逻辑测试 / UI 测试 审计发现 5 个发布级缺口,逐一修复: 1. 全局异常捕获(此前崩溃时用户只看到「应用已停止运行」) - CrashHandler:崩溃写入 DebugLog + 本地记录,下次启动诊断页可查看/发邮件 - 不吞异常、不上传,交回系统默认处理器 - 诊断页新增「上次异常退出」区块 2. 状态保存(此前 65 处普通 remember、0 处 rememberSaveable) - 课程页:用户写的代码(editorValue)、提示展开状态 - 竞技场:编辑器内容 - 终端:输入框(TextFieldValue 用 Saver 保存文本)、当前语言 - 旋转屏幕/进程重建不再丢失写了一半的答案 3. 核心业务逻辑补测试(此前 9 个类零测试) - ReviewSchedulerTest(9 条):SM-2 间隔、ease 下限、间期上限、lapse - GamificationTest(7 条):段位边界、fraction、成就不重复 - CoachEngineTest(9 条):各错误类型识别、只引导不代写红线 4. 修复 CoachEngine 真实缺陷 - tip() 的 lineRef 参数 15 个调用点全都没传 →「定位到第 N 行」从未生效 - 改为 currentLineRef 上下文注入,测试锁住 5. Instrumented UI 测试(此前为零) - 配置 testInstrumentationRunner + Compose ui-test - SmokeTest:应用启动、五 Tab 渲染 - :app:assembleDebugAndroidTest 编译通过(执行需真机) 门禁新增 androidTest 编译检查,共 12 项。 JVM 测试 70 → 95 条;Python 224 条全绿;release APK 23MB 构建通过。 | 12 小时前 | |
feat(store): 生成特色图 1024x500 与带标题的商店截图 - tools/make_brand_assets.py 新增 feature_graphic():Play 特色图, 排版经两轮实测修正(标题溢出、卡片文字重叠) - 新增 store_screenshots():10 张 1080x1920 截图 + 中英标题条 - banner 同步更新为六语言 79 讲口径 - 标注:现有截图来自 v0.4.0,与 v0.6.0 不符,发布前必须重拍 | 1 天前 | |
fix(release): 专家审核发现的 9 个发布级缺陷 + README 精简 审核由领域方法学家与代码评审员双线进行,逐条修复: S1 多语言锁链(严重):解锁按全局列表位置算,导致下载 C 语言后第一讲被 Python l38 锁住,六门语言必须先学完上一门。改为按章节(课程包)内解锁, 序号显示包内 01..N。 S2 DSA/彩蛋包导航错乱:lang==python 就把 DSA 当主线,lessonIdx=-1(进度条消失), 完成后「下一课」跳回 l01。改为按 chapterName 分组,11 讲受影响。 S3 毕业口径四处不一致:帮助页用 lessonsByLang(下载 DSA 后 49 讲)、 我的页用 mainline 38、证书页用 completedLessons.size、徽章用总数比较。 全部统一到 mainline;徽章额外用正则再过滤一次,防「学 8 讲 JS 就毕业」。 S5 终端 input() 承诺:FAQ 说支持,实际 repl.py 没接管 input,调用即 EOFError。 改为如实说明不支持。 S6 TS 课程虚假承诺:三处说「编辑器会立刻标红」,但应用只做类型擦除、 编辑器只有语法高亮。全部改写为诚实描述,练习改用运行时 typeof 断言。 S7 启动失败无兜底:warmup 失败仍进首页并显示「Python 3.x 就绪」假象。 改为停在恢复页,给「重试 / 仍要继续」两个出口。 S8 隐私同意时序(合规硬伤):同意前 BootScreen 就预热运行时并写连击数据。 改为 consented=false 时跳过一切处理,不写任何数据。 S9 应用内隐私政策口径:只列 4 个运行时(漏 C/TS),服务条款只写 Python/JS。 补全六语言 + 诊断日志条款 + 第三方组件声明。 S12 门禁红:README 精简后旧断言仍检查首屏必须含 JavaScript。 改为检查全文(语言表章节完整即可),不为过测试往首屏堆废话。 README 三语精简:236/251/250 行 → 75 行。只保留一句话定位、截图、语言表、 安装方式。删除所有营销话术(「为什么是码上」对比表、特性罗列、适合谁、Roadmap、 质量门禁细节),这些用户不关心。 | 5 小时前 | |
feat(store): 生成特色图 1024x500 与带标题的商店截图 - tools/make_brand_assets.py 新增 feature_graphic():Play 特色图, 排版经两轮实测修正(标题溢出、卡片文字重叠) - 新增 store_screenshots():10 张 1080x1920 截图 + 中英标题条 - banner 同步更新为六语言 79 讲口径 - 标注:现有截图来自 v0.4.0,与 v0.6.0 不符,发布前必须重拍 | 1 天前 | |
fix(release): 专家审核发现的 9 个发布级缺陷 + README 精简 审核由领域方法学家与代码评审员双线进行,逐条修复: S1 多语言锁链(严重):解锁按全局列表位置算,导致下载 C 语言后第一讲被 Python l38 锁住,六门语言必须先学完上一门。改为按章节(课程包)内解锁, 序号显示包内 01..N。 S2 DSA/彩蛋包导航错乱:lang==python 就把 DSA 当主线,lessonIdx=-1(进度条消失), 完成后「下一课」跳回 l01。改为按 chapterName 分组,11 讲受影响。 S3 毕业口径四处不一致:帮助页用 lessonsByLang(下载 DSA 后 49 讲)、 我的页用 mainline 38、证书页用 completedLessons.size、徽章用总数比较。 全部统一到 mainline;徽章额外用正则再过滤一次,防「学 8 讲 JS 就毕业」。 S5 终端 input() 承诺:FAQ 说支持,实际 repl.py 没接管 input,调用即 EOFError。 改为如实说明不支持。 S6 TS 课程虚假承诺:三处说「编辑器会立刻标红」,但应用只做类型擦除、 编辑器只有语法高亮。全部改写为诚实描述,练习改用运行时 typeof 断言。 S7 启动失败无兜底:warmup 失败仍进首页并显示「Python 3.x 就绪」假象。 改为停在恢复页,给「重试 / 仍要继续」两个出口。 S8 隐私同意时序(合规硬伤):同意前 BootScreen 就预热运行时并写连击数据。 改为 consented=false 时跳过一切处理,不写任何数据。 S9 应用内隐私政策口径:只列 4 个运行时(漏 C/TS),服务条款只写 Python/JS。 补全六语言 + 诊断日志条款 + 第三方组件声明。 S12 门禁红:README 精简后旧断言仍检查首屏必须含 JavaScript。 改为检查全文(语言表章节完整即可),不为过测试往首屏堆废话。 README 三语精简:236/251/250 行 → 75 行。只保留一句话定位、截图、语言表、 安装方式。删除所有营销话术(「为什么是码上」对比表、特性罗列、适合谁、Roadmap、 质量门禁细节),这些用户不关心。 | 5 小时前 | |
fix(ui): 逐屏巡检修复 12 项界面缺陷 + 重制全部截图与演示视频 在独立模拟器 AVD(API 35 / 1080×2400)上逐屏点验每一条用户可见路径, 所有修复都有修复前后截图对照。 界面修复: - GlitchText 常驻双色偏移把中文标题渲染成重影糊字(20 处标题), 改为每 4.2s 只抖动 5% 的短脉冲,其余时间完全静止 - 连击台徽章名被裁掉半截:NeonCard 内建 16dp padding 与自定义 padding 叠加, 118dp 高度只剩 24dp 留给文字;另改为按宽度自适应等分网格、整页可滚动 - 连击台/错题本 TopAppBar 与页面底色不一致,状态栏下出现突兀浅色横带 - 终端/填空/自定义颜色输入未关 IME 自动大写:输入 len(nums) 被改成 Len(nums) → NameError。KeyboardType.Ascii 不足,改用 Password(inputType 不含 CAP_SENTENCES)并关 autoCorrect —— 实测保持小写且明文显示 - Rhino 报错信息重复类型前缀(ReferenceError: ReferenceError: ...) - 首页「挑战」按钮误用人像图标;首页/开屏/引导副标题重复品牌 - 课程详情未通关时显示「已通关 0 / 38 讲」;帮助/隐私/关于只能在页尾返回 - 帮助中心挑战数硬编码;关于页版权文案与 MIT 冲突 素材: - demo/app/ 重制 10 张实拍图(真机 1080×2400,含判题失败与挑战详情) - demo/usage-video.mp4 重录为 100s 真实操作录屏(720×1600 / 30fps / 2.4MB) - 三语 README 与 docs 站同步新素材 验证: - unittest 126/126(新增 7 条 VisualRegressionTests 静态契约) - validate_content 55 讲 / 8 挑战 / 200 用例,0 失败 - lintDebug + lintRelease 0 errors;assembleDebug 40.2MB;APK 探针全过 - 模拟器验收 25/25(首页 4 按钮、5 Tab、课程体系卡、详情/运行/判题、 终端 Python+JS、挑战详情、我的 10 个子页) | 12 天前 | |
chore: 补充项目规范文件(.editorconfig、.gitattributes) | 1 个月前 | |
chore: 补充项目规范文件(.editorconfig、.gitattributes) | 1 个月前 | |
fix(ui): 逐屏巡检修复 12 项界面缺陷 + 重制全部截图与演示视频 在独立模拟器 AVD(API 35 / 1080×2400)上逐屏点验每一条用户可见路径, 所有修复都有修复前后截图对照。 界面修复: - GlitchText 常驻双色偏移把中文标题渲染成重影糊字(20 处标题), 改为每 4.2s 只抖动 5% 的短脉冲,其余时间完全静止 - 连击台徽章名被裁掉半截:NeonCard 内建 16dp padding 与自定义 padding 叠加, 118dp 高度只剩 24dp 留给文字;另改为按宽度自适应等分网格、整页可滚动 - 连击台/错题本 TopAppBar 与页面底色不一致,状态栏下出现突兀浅色横带 - 终端/填空/自定义颜色输入未关 IME 自动大写:输入 len(nums) 被改成 Len(nums) → NameError。KeyboardType.Ascii 不足,改用 Password(inputType 不含 CAP_SENTENCES)并关 autoCorrect —— 实测保持小写且明文显示 - Rhino 报错信息重复类型前缀(ReferenceError: ReferenceError: ...) - 首页「挑战」按钮误用人像图标;首页/开屏/引导副标题重复品牌 - 课程详情未通关时显示「已通关 0 / 38 讲」;帮助/隐私/关于只能在页尾返回 - 帮助中心挑战数硬编码;关于页版权文案与 MIT 冲突 素材: - demo/app/ 重制 10 张实拍图(真机 1080×2400,含判题失败与挑战详情) - demo/usage-video.mp4 重录为 100s 真实操作录屏(720×1600 / 30fps / 2.4MB) - 三语 README 与 docs 站同步新素材 验证: - unittest 126/126(新增 7 条 VisualRegressionTests 静态契约) - validate_content 55 讲 / 8 挑战 / 200 用例,0 失败 - lintDebug + lintRelease 0 errors;assembleDebug 40.2MB;APK 探针全过 - 模拟器验收 25/25(首页 4 按钮、5 Tab、课程体系卡、详情/运行/判题、 终端 Python+JS、挑战详情、我的 10 个子页) | 12 天前 | |
docs: web README 重写 + ARCHITECTURE 补路线/更新章节;test: 新增工具链 4 条门禁测试(140 条) | 11 天前 | |
chore(release): 0.6.0 —— 六门语言 + 双风格 + 可访问性 版本 0.5.0 → 0.6.0(versionCode 17 → 18) - 文档:README 三语、CHANGELOG、ARCHITECTURE、FAQ、软著说明书同步六语言口径 与 207 条测试规模;公开文档不再硬编码判题总数(改为语言清单) - catalog:登记 c-basics / ts-basics,重算自签名 - 测试:validate_content 纳入 C/TS 语言包;APK 探针校验六语言语法资源 - 修复 Windows 下 test_web_sync 子进程按 GBK 解码导致 UnicodeDecodeError | 2 天前 | |
release: 0.4.1 — 发布口径校准(测试 149 条/用例 230 条)+ 运行时声明与语言包承诺对齐事实 文档:FAQ 128→149;软著说明书 119/200→149/230、源程序规模 10,787 行、局限性改为双运行时;三语 README/品牌指南/华为文案改为 CPython+JavaScript;关于页/隐私页补 Rhino。代码:UnsupportedRuntime 不再承诺可下载语言包。新增 tests/test_docs_claims.py(9 条)锁死文档数字与能力声明。版本 0.4.0→0.4.1(versionCode 16),网页端版本串同步。 | 11 天前 | |
chore(release): 0.6.0 —— 六门语言 + 双风格 + 可访问性 版本 0.5.0 → 0.6.0(versionCode 17 → 18) - 文档:README 三语、CHANGELOG、ARCHITECTURE、FAQ、软著说明书同步六语言口径 与 207 条测试规模;公开文档不再硬编码判题总数(改为语言清单) - catalog:登记 c-basics / ts-basics,重算自签名 - 测试:validate_content 纳入 C/TS 语言包;APK 探针校验六语言语法资源 - 修复 Windows 下 test_web_sync 子进程按 GBK 解码导致 UnicodeDecodeError | 2 天前 | |
release: 0.4.0 — 网页端重写 + 真实课程路线 + 检查更新 + 文档/展示资产全面校准 网页端(第二端) - Pyodide 0.29.5 执行迁入 Web Worker(15s 强制终止),修复死循环冻结页面 - 全部用户/课程文本改 textContent,修复 REPL 输出 DOM XSS - 补 fill 填空块、hash 路由、localStorage 进度、明暗主题、移动端折叠导航、读屏可用性 - 引擎失败可重试或仅浏览;REPL 表达式回显 + 历史 + 多行 Android - 课程路线页改为真实内容(主线 38 + 4 个内容包),删除 20 条虚构轨道与建设中页 - 新增检查更新(只读 GitHub Releases 公开版本号,不自动下载) - 判题契约补 __stdout__/__stderr__,l01 起要求真正 print;毕业/首页口径统一为主线 - 课程幕次修正(27-30 第四幕、31-38 第五幕);判题失败面板去重 - 修复首页 JS 运行时版本串截断、内容中心讲数不刷新、证书海报无反馈 - Android 13 数据提取规则、单色图标、无用资源清理 内容与分发 - 内容中心三级源 Pages → raw → GitCode;新增 Pages 资产同步与链接检查工具/CI 门禁 - 新增 ARCHITECTURE / FAQ / ROADMAP,重写 SECURITY / CONTRIBUTING / COC / 隐私 / 协议 - 三语 README 与 CHANGELOG 全面事实校准(63 判题项 / 230 用例、Rhino MPL-2.0、无 keystore.properties) - 16 张 v0.4.0 实机截图、重制 banner/海报/OG、宣传片 25MB→3MB、新增 28s 网页端演示 验证 - unittest 136 条全绿;validate_content 55 项/201 用例 0 失败 - lintDebug/lintRelease 0 error;JVM 单测通过;APK 探针 ALL PASSED - 签名 release APK v2 验签通过(CN=Mashang);Playwright 网页端 e2e 0 console error - 模拟器实机验收:首页/课程/判题通过+失败/双终端/角斗场/路线/内容中心下载/设置 | 11 天前 | |
docs: 多语言口径与「语言中心」术语收尾;删除 177 行旧内容中心 UI README 三语 / FAQ / CONTRIBUTING / ARCHITECTURE / 软著说明书同步:测试 161 条、扩展包 29 讲(共 67 讲)、四个内置运行时、按需下载门禁、langcenter 路由。ContentHubScreen 收敛为 12 行转发入口(旧 UI 已由 LanguageCenterScreen 取代)。帮助中心与隐私政策文案同步更名。验证:unittest 161 OK、lint 0 error、lint/test/assembleDebug BUILD SUCCESSFUL、sync_pages_assets 与 check_links 通过。 | 11 天前 | |
fix(release): 专家审核发现的 9 个发布级缺陷 + README 精简 审核由领域方法学家与代码评审员双线进行,逐条修复: S1 多语言锁链(严重):解锁按全局列表位置算,导致下载 C 语言后第一讲被 Python l38 锁住,六门语言必须先学完上一门。改为按章节(课程包)内解锁, 序号显示包内 01..N。 S2 DSA/彩蛋包导航错乱:lang==python 就把 DSA 当主线,lessonIdx=-1(进度条消失), 完成后「下一课」跳回 l01。改为按 chapterName 分组,11 讲受影响。 S3 毕业口径四处不一致:帮助页用 lessonsByLang(下载 DSA 后 49 讲)、 我的页用 mainline 38、证书页用 completedLessons.size、徽章用总数比较。 全部统一到 mainline;徽章额外用正则再过滤一次,防「学 8 讲 JS 就毕业」。 S5 终端 input() 承诺:FAQ 说支持,实际 repl.py 没接管 input,调用即 EOFError。 改为如实说明不支持。 S6 TS 课程虚假承诺:三处说「编辑器会立刻标红」,但应用只做类型擦除、 编辑器只有语法高亮。全部改写为诚实描述,练习改用运行时 typeof 断言。 S7 启动失败无兜底:warmup 失败仍进首页并显示「Python 3.x 就绪」假象。 改为停在恢复页,给「重试 / 仍要继续」两个出口。 S8 隐私同意时序(合规硬伤):同意前 BootScreen 就预热运行时并写连击数据。 改为 consented=false 时跳过一切处理,不写任何数据。 S9 应用内隐私政策口径:只列 4 个运行时(漏 C/TS),服务条款只写 Python/JS。 补全六语言 + 诊断日志条款 + 第三方组件声明。 S12 门禁红:README 精简后旧断言仍检查首屏必须含 JavaScript。 改为检查全文(语言表章节完整即可),不为过测试往首屏堆废话。 README 三语精简:236/251/250 行 → 75 行。只保留一句话定位、截图、语言表、 安装方式。删除所有营销话术(「为什么是码上」对比表、特性罗列、适合谁、Roadmap、 质量门禁细节),这些用户不关心。 | 5 小时前 | |
feat: 品牌重塑「码上」+ 多语言运行时架构(Python+JavaScript)+ 软著材料 品牌重塑: - 码上Python / PY//NOW → 码上 / Mashang,应用内全部文案中立化(45 文件) - 许可表述统一为 MIT,分享标签 #PY_NOW 退役 多语言架构: - lang/LanguageRuntime 统一契约(run/check/repl/warmup)+ LanguageRegistry (注册/当前语言持久化/未知 id 回落 UnsupportedRuntime 永不 null) - PyBridge 改为实现接口;6 个界面改走注册中心,screens/ 无 PyBridge 直连 - js/JsBridge:Rhino 1.7.15 解释模式后端(ART 硬性 -1),指令计数看门狗, 结果契约与 runner.py 对齐,REPL 括号平衡续行 - 课程模型 lang 字段(旧 JSON 零改动兼容);语言切换 UI(终端/课程列表) - 原创精简 javascript.tmLanguage.json;编辑器高亮按 lang 加载(未内置降级) - 语言包 js-basics(6 讲 ES5,经内容中心分发,catalog 重签全 MATCH) - 训练场 JS 挑战 ×2;JS 判题走 node 实跑验证(tests/test_js_lessons.py) 修复: - catalog.json 包哈希与实际不符(commit 5004113 遗留),已重算重签 - update_catalog.py 剥离全部 sha256 的 P1 缺陷(改为 replaceFirst 等价语义) - js02 判题期望值勘误 damage(1,100)=-49(node 实跑捕获) - R8 裁剪缺口:Rhino keep 扩为 org.mozilla.**(classfile 包被裁有 NoClassDefFoundError 风险) 验证: - 67 项单元测试 OK;内容校验 55 讲/8 挑战/200 用例 0 失败 - assembleDebug(7m29s)与签名 assembleRelease(63 tasks)BUILD SUCCESSFUL - apksigner verify PASS;release 22.1MB(-42%);aapt 应用名「码上」 软著材料: - tools/softcopy_source.py 源程序册生成器(211 页→前30+后30,每页50行) - docs/softcopy/软件说明书.md(10 章)+ 申请指南.md(流程/模板/自查) | 15 天前 | |
feat(release): 发布前合规补齐 —— 许可页 / 隐私政策 / 无障碍 / 商店资料 应用商店审核与开源合规要求的硬缺口: 开源许可(LGPL/MPL/Apache 要求) - 新增 LicensesScreen:10 个第三方组件(含 Chaquopy/Rhino/LuaJ/sora-editor) 逐项列许可、用途、源码地址;内嵌 MIT 许可全文 - LGPL-2.1 特别说明:动态链接、源码可得、可替换性 - 关于页新增入口 + licenses 路由 隐私政策(合规必须与实际行为一致) - 补「诊断日志」条款:记录什么、不记录代码、不上传、可清除 - 补六语言运行时表(全部本机执行) - 新增「第三方组件与 SDK」章节,明确无广告/统计/追踪 SDK - 生效日期更新为 2026-11-03 无障碍(商店审核项) - 11 个页面的返回按钮触摸区从 28dp 扩到 48dp(视觉不变,加 padding) - 新增自动扫描测试,任何页面再写小触摸区会直接失败 发布资料 - RELEASE_CHECKLIST.md:合规/元数据/技术门槛/UX/数据安全表单/待办 - store/listing.md:应用名、简短与完整描述、关键词、截图顺序、各市场注意事项 测试:新增 7 条发布就绪测试,总计 224 条 | 1 天前 | |
fix(release): 专家审核发现的 9 个发布级缺陷 + README 精简 审核由领域方法学家与代码评审员双线进行,逐条修复: S1 多语言锁链(严重):解锁按全局列表位置算,导致下载 C 语言后第一讲被 Python l38 锁住,六门语言必须先学完上一门。改为按章节(课程包)内解锁, 序号显示包内 01..N。 S2 DSA/彩蛋包导航错乱:lang==python 就把 DSA 当主线,lessonIdx=-1(进度条消失), 完成后「下一课」跳回 l01。改为按 chapterName 分组,11 讲受影响。 S3 毕业口径四处不一致:帮助页用 lessonsByLang(下载 DSA 后 49 讲)、 我的页用 mainline 38、证书页用 completedLessons.size、徽章用总数比较。 全部统一到 mainline;徽章额外用正则再过滤一次,防「学 8 讲 JS 就毕业」。 S5 终端 input() 承诺:FAQ 说支持,实际 repl.py 没接管 input,调用即 EOFError。 改为如实说明不支持。 S6 TS 课程虚假承诺:三处说「编辑器会立刻标红」,但应用只做类型擦除、 编辑器只有语法高亮。全部改写为诚实描述,练习改用运行时 typeof 断言。 S7 启动失败无兜底:warmup 失败仍进首页并显示「Python 3.x 就绪」假象。 改为停在恢复页,给「重试 / 仍要继续」两个出口。 S8 隐私同意时序(合规硬伤):同意前 BootScreen 就预热运行时并写连击数据。 改为 consented=false 时跳过一切处理,不写任何数据。 S9 应用内隐私政策口径:只列 4 个运行时(漏 C/TS),服务条款只写 Python/JS。 补全六语言 + 诊断日志条款 + 第三方组件声明。 S12 门禁红:README 精简后旧断言仍检查首屏必须含 JavaScript。 改为检查全文(语言表章节完整即可),不为过测试往首屏堆废话。 README 三语精简:236/251/250 行 → 75 行。只保留一句话定位、截图、语言表、 安装方式。删除所有营销话术(「为什么是码上」对比表、特性罗列、适合谁、Roadmap、 质量门禁细节),这些用户不关心。 | 5 小时前 | |
fix(release): 专家审核发现的 9 个发布级缺陷 + README 精简 审核由领域方法学家与代码评审员双线进行,逐条修复: S1 多语言锁链(严重):解锁按全局列表位置算,导致下载 C 语言后第一讲被 Python l38 锁住,六门语言必须先学完上一门。改为按章节(课程包)内解锁, 序号显示包内 01..N。 S2 DSA/彩蛋包导航错乱:lang==python 就把 DSA 当主线,lessonIdx=-1(进度条消失), 完成后「下一课」跳回 l01。改为按 chapterName 分组,11 讲受影响。 S3 毕业口径四处不一致:帮助页用 lessonsByLang(下载 DSA 后 49 讲)、 我的页用 mainline 38、证书页用 completedLessons.size、徽章用总数比较。 全部统一到 mainline;徽章额外用正则再过滤一次,防「学 8 讲 JS 就毕业」。 S5 终端 input() 承诺:FAQ 说支持,实际 repl.py 没接管 input,调用即 EOFError。 改为如实说明不支持。 S6 TS 课程虚假承诺:三处说「编辑器会立刻标红」,但应用只做类型擦除、 编辑器只有语法高亮。全部改写为诚实描述,练习改用运行时 typeof 断言。 S7 启动失败无兜底:warmup 失败仍进首页并显示「Python 3.x 就绪」假象。 改为停在恢复页,给「重试 / 仍要继续」两个出口。 S8 隐私同意时序(合规硬伤):同意前 BootScreen 就预热运行时并写连击数据。 改为 consented=false 时跳过一切处理,不写任何数据。 S9 应用内隐私政策口径:只列 4 个运行时(漏 C/TS),服务条款只写 Python/JS。 补全六语言 + 诊断日志条款 + 第三方组件声明。 S12 门禁红:README 精简后旧断言仍检查首屏必须含 JavaScript。 改为检查全文(语言表章节完整即可),不为过测试往首屏堆废话。 README 三语精简:236/251/250 行 → 75 行。只保留一句话定位、截图、语言表、 安装方式。删除所有营销话术(「为什么是码上」对比表、特性罗列、适合谁、Roadmap、 质量门禁细节),这些用户不关心。 | 5 小时前 | |
fix(release): 专家审核发现的 9 个发布级缺陷 + README 精简 审核由领域方法学家与代码评审员双线进行,逐条修复: S1 多语言锁链(严重):解锁按全局列表位置算,导致下载 C 语言后第一讲被 Python l38 锁住,六门语言必须先学完上一门。改为按章节(课程包)内解锁, 序号显示包内 01..N。 S2 DSA/彩蛋包导航错乱:lang==python 就把 DSA 当主线,lessonIdx=-1(进度条消失), 完成后「下一课」跳回 l01。改为按 chapterName 分组,11 讲受影响。 S3 毕业口径四处不一致:帮助页用 lessonsByLang(下载 DSA 后 49 讲)、 我的页用 mainline 38、证书页用 completedLessons.size、徽章用总数比较。 全部统一到 mainline;徽章额外用正则再过滤一次,防「学 8 讲 JS 就毕业」。 S5 终端 input() 承诺:FAQ 说支持,实际 repl.py 没接管 input,调用即 EOFError。 改为如实说明不支持。 S6 TS 课程虚假承诺:三处说「编辑器会立刻标红」,但应用只做类型擦除、 编辑器只有语法高亮。全部改写为诚实描述,练习改用运行时 typeof 断言。 S7 启动失败无兜底:warmup 失败仍进首页并显示「Python 3.x 就绪」假象。 改为停在恢复页,给「重试 / 仍要继续」两个出口。 S8 隐私同意时序(合规硬伤):同意前 BootScreen 就预热运行时并写连击数据。 改为 consented=false 时跳过一切处理,不写任何数据。 S9 应用内隐私政策口径:只列 4 个运行时(漏 C/TS),服务条款只写 Python/JS。 补全六语言 + 诊断日志条款 + 第三方组件声明。 S12 门禁红:README 精简后旧断言仍检查首屏必须含 JavaScript。 改为检查全文(语言表章节完整即可),不为过测试往首屏堆废话。 README 三语精简:236/251/250 行 → 75 行。只保留一句话定位、截图、语言表、 安装方式。删除所有营销话术(「为什么是码上」对比表、特性罗列、适合谁、Roadmap、 质量门禁细节),这些用户不关心。 | 5 小时前 | |
feat(store): 生成特色图 1024x500 与带标题的商店截图 - tools/make_brand_assets.py 新增 feature_graphic():Play 特色图, 排版经两轮实测修正(标题溢出、卡片文字重叠) - 新增 store_screenshots():10 张 1080x1920 截图 + 中英标题条 - banner 同步更新为六语言 79 讲口径 - 标注:现有截图来自 v0.4.0,与 v0.6.0 不符,发布前必须重拍 | 1 天前 | |
release: 0.5.0 — Lua/SQL 运行时 + 各 6 讲语言包 + 语言中心与按需下载 新增 LuaJ 运行时(沙箱、指令钩子看门狗、REPL 续行与表达式回显)与 SQL 运行时(CPython sqlite3 内存库、ATTACH 拒绝、columns/rows 判题)。新增 lua-basics/sql-basics 各 6 讲;语言中心分栏展示内置运行时/暂不支持/课程包下载状态;未下载课程不进列表;内容包携带 kind/lang。修正三语 README/FAQ/ARCHITECTURE 的 GitCode Actions 不实声明(实测 push 不自动触发、历史运行全为手动)。版本 0.4.1→0.5.0(versionCode 17)。验证:unittest 161 OK、JVM 17 tests、lint 0 error、SQL +140XP 实机判题、Lua/SQL 代码块实跑、APK 探针全过。AQG staged check PASSED;deep audit 因本机无 decision-engine 审计工具未执行。 | 11 天前 | |
release: 0.4.0 — 网页端重写 + 真实课程路线 + 检查更新 + 文档/展示资产全面校准 网页端(第二端) - Pyodide 0.29.5 执行迁入 Web Worker(15s 强制终止),修复死循环冻结页面 - 全部用户/课程文本改 textContent,修复 REPL 输出 DOM XSS - 补 fill 填空块、hash 路由、localStorage 进度、明暗主题、移动端折叠导航、读屏可用性 - 引擎失败可重试或仅浏览;REPL 表达式回显 + 历史 + 多行 Android - 课程路线页改为真实内容(主线 38 + 4 个内容包),删除 20 条虚构轨道与建设中页 - 新增检查更新(只读 GitHub Releases 公开版本号,不自动下载) - 判题契约补 __stdout__/__stderr__,l01 起要求真正 print;毕业/首页口径统一为主线 - 课程幕次修正(27-30 第四幕、31-38 第五幕);判题失败面板去重 - 修复首页 JS 运行时版本串截断、内容中心讲数不刷新、证书海报无反馈 - Android 13 数据提取规则、单色图标、无用资源清理 内容与分发 - 内容中心三级源 Pages → raw → GitCode;新增 Pages 资产同步与链接检查工具/CI 门禁 - 新增 ARCHITECTURE / FAQ / ROADMAP,重写 SECURITY / CONTRIBUTING / COC / 隐私 / 协议 - 三语 README 与 CHANGELOG 全面事实校准(63 判题项 / 230 用例、Rhino MPL-2.0、无 keystore.properties) - 16 张 v0.4.0 实机截图、重制 banner/海报/OG、宣传片 25MB→3MB、新增 28s 网页端演示 验证 - unittest 136 条全绿;validate_content 55 项/201 用例 0 失败 - lintDebug/lintRelease 0 error;JVM 单测通过;APK 探针 ALL PASSED - 签名 release APK v2 验签通过(CN=Mashang);Playwright 网页端 e2e 0 console error - 模拟器实机验收:首页/课程/判题通过+失败/双终端/角斗场/路线/内容中心下载/设置 | 11 天前 | |
fix(release): 专家审核发现的 9 个发布级缺陷 + README 精简 审核由领域方法学家与代码评审员双线进行,逐条修复: S1 多语言锁链(严重):解锁按全局列表位置算,导致下载 C 语言后第一讲被 Python l38 锁住,六门语言必须先学完上一门。改为按章节(课程包)内解锁, 序号显示包内 01..N。 S2 DSA/彩蛋包导航错乱:lang==python 就把 DSA 当主线,lessonIdx=-1(进度条消失), 完成后「下一课」跳回 l01。改为按 chapterName 分组,11 讲受影响。 S3 毕业口径四处不一致:帮助页用 lessonsByLang(下载 DSA 后 49 讲)、 我的页用 mainline 38、证书页用 completedLessons.size、徽章用总数比较。 全部统一到 mainline;徽章额外用正则再过滤一次,防「学 8 讲 JS 就毕业」。 S5 终端 input() 承诺:FAQ 说支持,实际 repl.py 没接管 input,调用即 EOFError。 改为如实说明不支持。 S6 TS 课程虚假承诺:三处说「编辑器会立刻标红」,但应用只做类型擦除、 编辑器只有语法高亮。全部改写为诚实描述,练习改用运行时 typeof 断言。 S7 启动失败无兜底:warmup 失败仍进首页并显示「Python 3.x 就绪」假象。 改为停在恢复页,给「重试 / 仍要继续」两个出口。 S8 隐私同意时序(合规硬伤):同意前 BootScreen 就预热运行时并写连击数据。 改为 consented=false 时跳过一切处理,不写任何数据。 S9 应用内隐私政策口径:只列 4 个运行时(漏 C/TS),服务条款只写 Python/JS。 补全六语言 + 诊断日志条款 + 第三方组件声明。 S12 门禁红:README 精简后旧断言仍检查首屏必须含 JavaScript。 改为检查全文(语言表章节完整即可),不为过测试往首屏堆废话。 README 三语精简:236/251/250 行 → 75 行。只保留一句话定位、截图、语言表、 安装方式。删除所有营销话术(「为什么是码上」对比表、特性罗列、适合谁、Roadmap、 质量门禁细节),这些用户不关心。 | 5 小时前 | |
build: realign Android toolchain(AGP 8.13.2 / Kotlin 2.4.10 / Gradle 9.5)+ android-build 覆盖 PR (#25) * build: realign Android toolchain (AGP 8.13.2 / Kotlin 2.4.10 / Gradle 9.5) main 的 android-build 当前失败:Gradle 9.7.1 + AGP 8.7.3 不兼容(AGP 8.x 依赖的 InternalProblems 内部 API 已在 Gradle 9.6 移除);compose/serialization 插件已升 2.4.10 但 kotlin.android 仍是 2.0.21;compose-bom 2026.08 与 navigation 2.10.0 均要求 compileSdk 37 + AGP 9.1。 对齐到已验证组合:Gradle 9.5.0 + AGP 8.13.2 + Kotlin 2.4.10 + compose-bom 2024.09.03 + navigation 2.8.1;coroutines 1.10.2、serialization-json 1.11.0 与新工具链匹配。android-build 改为 PR 也运行;dependabot.yml 对需 compileSdk 37 / AGP 9 的版本段加 ignore(see #20-#24)。 * fix(build): migrate kotlinOptions to compilerOptions DSL (removed in Kotlin 2.4) --------- Co-authored-by: Morningstar202604 <320475654+Morningstar202604@users.noreply.github.com> | 2 个月前 | |
fix(release): 专家审核发现的 9 个发布级缺陷 + README 精简 审核由领域方法学家与代码评审员双线进行,逐条修复: S1 多语言锁链(严重):解锁按全局列表位置算,导致下载 C 语言后第一讲被 Python l38 锁住,六门语言必须先学完上一门。改为按章节(课程包)内解锁, 序号显示包内 01..N。 S2 DSA/彩蛋包导航错乱:lang==python 就把 DSA 当主线,lessonIdx=-1(进度条消失), 完成后「下一课」跳回 l01。改为按 chapterName 分组,11 讲受影响。 S3 毕业口径四处不一致:帮助页用 lessonsByLang(下载 DSA 后 49 讲)、 我的页用 mainline 38、证书页用 completedLessons.size、徽章用总数比较。 全部统一到 mainline;徽章额外用正则再过滤一次,防「学 8 讲 JS 就毕业」。 S5 终端 input() 承诺:FAQ 说支持,实际 repl.py 没接管 input,调用即 EOFError。 改为如实说明不支持。 S6 TS 课程虚假承诺:三处说「编辑器会立刻标红」,但应用只做类型擦除、 编辑器只有语法高亮。全部改写为诚实描述,练习改用运行时 typeof 断言。 S7 启动失败无兜底:warmup 失败仍进首页并显示「Python 3.x 就绪」假象。 改为停在恢复页,给「重试 / 仍要继续」两个出口。 S8 隐私同意时序(合规硬伤):同意前 BootScreen 就预热运行时并写连击数据。 改为 consented=false 时跳过一切处理,不写任何数据。 S9 应用内隐私政策口径:只列 4 个运行时(漏 C/TS),服务条款只写 Python/JS。 补全六语言 + 诊断日志条款 + 第三方组件声明。 S12 门禁红:README 精简后旧断言仍检查首屏必须含 JavaScript。 改为检查全文(语言表章节完整即可),不为过测试往首屏堆废话。 README 三语精简:236/251/250 行 → 75 行。只保留一句话定位、截图、语言表、 安装方式。删除所有营销话术(「为什么是码上」对比表、特性罗列、适合谁、Roadmap、 质量门禁细节),这些用户不关心。 | 5 小时前 | |
fix: v0.3.6 - 修复 APK 发布链路与失效链接,统一版本号 - 重写 tools/upload_release.sh 适配 GitCode API(原脚本指向已删除的 GitHub 仓库) - 应用内/证书/文档全部外链改指 GitCode 主仓,修复 404 - 内容中心课程包目录源改指 raw.gitcode.com - 版本号统一 0.3.6 / versionCode 12(此前 AppConstants 停留在 0.3.4) - 调高 Gradle 构建内存 | 1 个月前 | |
build(deps): bump gradle-wrapper from 8.10.2 to 9.7.1 (#13) Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 8.10.2 to 9.7.1. - [Release notes](https://github.com/gradle/gradle/releases) - [Commits](https://github.com/gradle/gradle/compare/v8.10.2...v9.7.1) --- updated-dependencies: - dependency-name: gradle-wrapper dependency-version: 9.7.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | 2 个月前 | |
build(deps): bump gradle-wrapper from 8.10.2 to 9.7.1 (#13) Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 8.10.2 to 9.7.1. - [Release notes](https://github.com/gradle/gradle/releases) - [Commits](https://github.com/gradle/gradle/compare/v8.10.2...v9.7.1) --- updated-dependencies: - dependency-name: gradle-wrapper dependency-version: 9.7.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | 2 个月前 | |
feat: 码上Python v0.2.0 —— 赛博朋克离线Python学习终端 - Chaquopy 内嵌 CPython 3.13 全离线引擎(超时看门狗/输入队列/变量快照) - 26 讲三幕课程体系 + 6 大角斗场挑战,assert 自动判题 - 表格/图示/随堂一问/输出预览四种教学内容块 - Compose 赛博 HUD 主题:扫描线·网格·Glitch·霓虹卡片 - REPL 神经接口 + XP 六段位 + 每日任务 + 成就墙 - MIT 协议,构建链 AGP8.7.3/Kotlin2.0.21/Gradle8.10.2 | 2 个月前 | |
fix(ci): 补 PyYAML 依赖(新增的 workflow 静态校验需要)+ pip 安装步骤 上一次运行失败原因:tests/test_ci_workflows.py 依赖 yaml,但 setup-python 的干净环境没有 PyYAML,导致 3 个 error。加 requirements-ci.txt 并在两个 平台的 CI 里显式安装。 | 14 天前 | |
refactor(v0.3.3): 架构大手术 —— 砍 Room / 引擎唯一化 / sha256 强制校验 BREAKING CHANGES: - 移除 Room 数据库及 kapt 插件,退回 DataStore + JSON 单持久化层 * 删除 AppDatabase.kt, Dao.kt, Entities.kt * ViewModels 改用 StateFlow + kotlinx-serialization 读写 JSON 文件 * BackupUtil 从 DataStore/JSON 导出导入,不再依赖 Room * ReviewScheduler 解耦为 SchedulableCard 接口 - Web 前端引擎唯一化 * engine.js 动态 fetch runner.py 替代硬编码字符串 * 修复 _repl_ns → _REPL_NS 变量名错误 - ContentCenter sha256 强制校验 * catalog.json 和 pack 必须提供 sha256 字段,缺失即拒绝加载 - 时区感知连击计算 * ProgressStore.touchStreak 使用 LocalDate.now(ZoneId.systemDefault()) - 文档更新 * PLAN.md 课程数从 10 课提升到 30 课 - 仓库卫生 * 删除已跟踪的 .pyc 文件和 note.txt * 清理构建日志 验证: gradle :app:assembleDebug BUILD SUCCESSFUL | 2 个月前 |
界面
| 首页 | 课程 | 判题 |
|---|---|---|
![]() |
![]() |
![]() |
| 练习编辑器 | 终端 | 语言中心 |
|---|---|---|
![]() |
![]() |
![]() |
六门语言,写错会报错
| 语言 | 运行时 | 课程 |
|---|---|---|
| Python | CPython 3.13 | 38 讲 + DSA + 内置函数 |
| JavaScript | Rhino 1.7.15 | 6 讲 |
| TypeScript | 类型擦除 → Rhino | 6 讲 |
| C | 内置解释器 | 6 讲 |
| Lua | LuaJ 3.0.1 | 6 讲 |
| SQL | SQLite | 6 讲 |
Python 主线随 APK 内置;其余五门从「语言中心」按需下载。首装约 39 MB。
C 和 TypeScript 是教学子集(C 无指针/结构体,TS 无装饰器/命名空间),遇到会明确提示。
安装
- 直接装:GitHub Releases 下载
mashang-*.apk - Android 7.0+,arm64-v8a
从源码构建:
./gradlew :app:assembleDebug
许可
MIT。第三方组件许可见应用内「关于 → 开源许可」。





