Repository navigation
Releases
Tally 塔莉 v0.1.6
Tally 塔莉 v0.1.6
仅 arm64-v8a,未上架应用商店。下载下方 APK 自行安装(首次需允许「安装未知应用」)。升级安装可直接覆盖 v0.1.5:首次启动会把本地库从 version 1 迁到 2(只新建 tag / bill_tag 两张表),账单、账本、分类与预算一行不动,签名证书一致。
这次带了什么
- 标签:新的一层归类,全机一套、不挂账本。它回答「这笔属于哪件事」,只改变看哪批账——不改任何金额、合计与导出总额。
- 记账:备注下面多一枚「标签」chip;选中后名字单独一行、写全名、带 ✕。弹层里点一下即选、可多选,输入新名字回车就地新建。
- 搜索:更多筛选里多一组标签,多选是并集;关键词同时匹配备注、分类名和标签名;结果可全选批量打标签。归档标签不再出现在候选里,账单仍保留;从详情带进搜索时会标「已归档」,点掉即退场。
- 管理:设置 → 归类 → 标签。胶囊墙长按拖动排序,点一枚出操作单(查看统计 / 修改 / 归档 / 删除),右上角 + 新建。删除只解绑标签,账单与金额不动。
- 详情:顶部「今年」加最近 12 个月,依次看合计、月度走势、分类构成、涉及账本,底部带这枚标签进搜索。
- 导入导出:CSV 多一列「标签」(多枚用顿号分隔),导入按名称自动建标;备份与恢复包含标签和账单的关联。
- 设置重排:标签与关键词规则收进新的「归类」组;导出诊断包挪到「关于」;记账键盘页补上「标签」开关——关掉只收记账页那枚 chip,说明末尾挂「管理标签 ›」。
- 两处修复:标签管理页没有新建入口(改到右上角 +,墙内胶囊撤掉);搜索和报销在勾选态按返回原来是直接退出页面,现在先退出勾选。
- 顺带:文档与设计板同步(设计图新增 §29 标签、索引顺延 §30);构建前预置 Room schema 快照,消掉 CI 上偶发的 schema 导出竞态。
验证
- 主仓发布 PR #8 两条检查全绿(单元测试 + 构建 apk)
- 公开仓发布 PR #6 两条检查全绿(单元测试 3m17s / 构建 apk 7m16s)
- 发布工程本地
:tally-app:build全绿(3m28s,含单测、lint 与两变体打包)
产物校验
| 项 | 值 |
|---|---|
| 文件 | tally-v0.1.6-arm64-v8a.apk |
| 大小 | 49,444,138 字节 |
| SHA-256 | c09ea40663ad4ee972a0e6a324940c6c4a99f6915139502e0061d62442f95cde |
| 签名证书 SHA-256 | c73482a95a80c399d9118ad1b9013c12b42f828e846bdcef3838f6914c5f7b2e(与 v0.1.0–v0.1.5 同一把,可覆盖升级) |
Tally 塔莉 v0.1.5
Tally 塔莉 v0.1.5
仅 arm64-v8a,未上架应用商店。下载下方 APK 自行安装(首次需允许「安装未知应用」)。升级安装可直接覆盖 v0.1.4,数据与签名证书一致。
这次带了什么
- 记账键盘:设置里新增一页,把记账页备注下面那排按钮的开关收在一起——账单图片、账单时间、报销、排除;页顶用同一枚按钮摆一排示例,拨开关当场看得出那一行会变成什么样。
- 记账页那排按钮重做:顺序改成 日期 / 图片 / 报销 / 排除;点亮改成实心墨绿 + 骨白字;图片右上角多了一枚叉,用来收回刚选、还没保存的那张。新增「排除」开关——标了不计入的这一笔不进收支统计,也不进预算。
- 报销开关联动四处:抽屉里的报销入口、记账页那枚按钮、统计页「未报销 N 笔」与「支出视图剔除未报销」,一起出现、一起收起。
- 两处修复:秒开模式退出记账页时的转场闪动;从设置页返回时首页跟着滑动。
- 顺带:设置页开关行的标题字号统一;抽屉入口点击区抬到 48dp。
验证
- 主仓
master上 CI 两条检查全绿(单元测试 + 构建 apk) - 发布 PR 两条检查全绿(单元测试 3m22s / 构建 apk 7m42s;首次构建因 Room schema 导出竞态失败,原样重跑通过)
- 发布工程本地
:tally-app:assembleRelease全绿(1m5s)
产物校验
| 项 | 值 |
|---|---|
| 文件 | tally-v0.1.5-arm64-v8a.apk |
| 大小 | 49,100,074 字节 |
| SHA-256 | 96d6a3edbec443c5523112e3ca8cade43a00aedce488c56683987561c9c5bdf9 |
| 签名证书 SHA-256 | c73482a95a80c399d9118ad1b9013c12b42f828e846bdcef3838f6914c5f7b2e(与 v0.1.0–v0.1.4 同一把,可覆盖升级) |
Tally 塔莉 v0.1.4
Tally 塔莉 v0.1.4
仅 arm64-v8a,未上架应用商店。下载下方 APK 自行安装(首次需允许「安装未知应用」)。升级安装可直接覆盖 v0.1.3,数据与签名证书一致。
这次带了什么
- + 右臂与手势引导:右臂常驻三态——小莉关着去设置、开着未配置去配置页、可用才进对话;首页第二次回来浮一次全屏手势引导(G-01),小莉首次配置成功后浮一次金色提示(G-02);顺带修好 + 外沿光晕被裁掉的问题。
- 手动检查更新:设置页「版本」行右侧一颗软按钮,点一次查一次公开仓 latest release,按
versionCode比大小,有新版弹窗给「稍后 / 去下载」。不轮询、不自动下载、不静默安装。 - 周期明细口径:保留已删除的期次占位(灰显并提示可在回收站找回),期号不再往前跳;合计只算现存账单,有删除行时标题写「合计(现存)」。
- 关键词规则:按分类分组管理,组内可放多个词;页头 + 就地加词,空格或顿号可一次加多个;改绑分类、整组换分类或删除、删单个词,删除后 8 秒内可撤销。
- 账本编辑弹窗与图标库:账本编辑改成底部弹窗,内联全量 136 枚图标(12 组筛选 + 五列网格 + 搜索),展开收起有高度动画;账本图标库、添加分类页图标库、分类管理页一级条与二级瓦片一并放大。
- 弹窗收口:全站底部弹窗统一到
TallyBottomSheet——只留 M3 默认那一条抓手;数据驱动的长正文 360dp 封顶内部滚动,编辑类弹窗按内容撑高。 - 文档与站点:设计板同步到当前界面(137 屏),交互规范记下弹窗单抓手与限高;项目主页统一指向公开仓地址(隐私说明、README、安全说明、release 文档、设计板);README 去掉标题图标;站点的设计图屏数跟着改成 137。
验证
- 主仓
master检查全绿(单元测试 + 构建 apk) - 发布 PR 两条检查全绿(单元测试 3m11s / 构建 apk 5m39s;首次构建因 Room schema 导出竞态失败,原样重跑通过)
- 公开仓
main推送后 CI 全绿(6m5s) - 发布工程本地
:tally-app:assembleRelease全绿(2m24s)
产物校验
| 项 | 值 |
|---|---|
| 文件 | tally-v0.1.4-arm64-v8a.apk |
| 大小 | 49,083,690 字节 |
| SHA-256 | 42e90470f4ec471da59a61a2001d9addaf3d86dcd33b561876ff876ef55e9f06 |
| 签名证书 SHA-256 | c73482a95a80c399d9118ad1b9013c12b42f828e846bdcef3838f6914c5f7b2e(与 v0.1.0–v0.1.3 同一把,可覆盖升级) |
Tally 塔莉 v0.1.3
Tally 塔莉 v0.1.3
仅 arm64-v8a,未上架应用商店。下载下方 APK 自行安装(首次需允许「安装未知应用」)。升级安装可直接覆盖 v0.1.2,数据与签名证书一致。
这次带了什么
- 账本概览:点账本卡片进概览页——总支出、时间跨度与日均、分类占比、最近几笔。
- 快速问答:概览页四枚模板(收入和结余 / 最大一笔 / 每月平均 / 某分类花了多少),纯查询,不走 AI。
- 项目结算:非默认账本可结算,确认后锁定账本并出结算结果 sheet 与结算长图(复用海报管线);默认账本不结算,已结算账本可恢复记账。
- 秒开模式:冷启动或停在首页点桌面图标,直接进记账页;其他页面不接管。
- 性能:统计页瘦查询、首页黑框固定版式、首页预热前移到补执行之前。
- 使用指南:按现行口径重写。
- 文档:账本概览 / 结算 / 问答 10 屏并入主设计板,删掉重复板。
验证
- 主仓
masterCI 全绿(单元测试 + 构建 apk) - 发布 PR 的两条检查全绿(单元测试 2m20s / 构建 apk 6m47s)
- 发布工程本地
:tally-app:build全绿(lint + 单测 + debug/release 打包)
产物校验
| 项 | 值 |
|---|---|
| 文件 | tally-v0.1.3-arm64-v8a.apk |
| 大小 | 48,936,234 字节 |
| SHA-256 | de2a05a2fea5d08ea889ee4f0b3e1d31caac24753c04c27912ae90215eb808b0 |
| 签名证书 SHA-256 | c73482a95a80c399d9118ad1b9013c12b42f828e846bdcef3838f6914c5f7b2e(与 v0.1.0 / v0.1.1 / v0.1.2 同一把,可覆盖升级) |
Tally 塔莉 v0.1.2
Tally 塔莉 v0.1.2
仅 arm64-v8a,未上架应用商店。下载下方 APK 自行安装(首次需允许「安装未知应用」)。升级安装可直接覆盖 v0.1.1,数据与签名证书一致。
这次带了什么
- CI 基建:
buildworkflow 拆成「单元测试」与「构建 apk」两个并行 job;构建 job 跑全量:tally-app:build(含 lint),加回 Gradle 缓存;CI 环境脚本收进.github/scripts/。 - 自动化测试:新增纯 JVM 单测,覆盖备份 JSON 编解码(15 张表)、加密备份容器、分期排期与利率段、分期视图口径、账单编辑策略。
- Bug 修复:备份往返不再丢
installmentPlans.note/bill.reimbursed_at/aiMessage.duration_ms;现代图标键不再被误判成旧键;编辑账单保留source与周期/规则关联;软删的周期行不再被生成逻辑漏掉。 - 备份版本号:
manifest.appVersion从 APK 自身读取,不再写死。 - 站点:桌面组件那一节换成两张真机截图。
- 文档:对外三份口径文档与代码对齐(备份格式版本字段)。
验证
- 主仓
masterCI 全绿(单元测试 + 构建 apk) - 发布 PR 的两条检查全绿(单元测试 3m40s / 构建 apk 9m26s)
- 发布工程本地
.\gradlew.bat :tally-app:build全绿(lint + 单测 + debug/release 打包)
产物校验
| 项 | 值 |
|---|---|
| 文件 | tally-v0.1.2-arm64-v8a.apk |
| 大小 | 48,739,626 字节 |
| SHA-256 | 7bff3b04a1628957e2324b1bbd2e73295793682e011bd3356880b641addca8cc |
| 签名证书 SHA-256 | c73482a95a80c399d9118ad1b9013c12b42f828e846bdcef3838f6914c5f7b2e(与 v0.1.0 / v0.1.1 同一把,可覆盖升级) |
v0.1.1 · 桌面上有八枚了
接上一版 v0.1.0。这一版主要在桌面,另有一批数据正确性上的修复。
桌面组件:3 枚 → 8 枚
新增七枚,加上原来的「近七日」共八枚,全部只读:
| 组件 | 内容 |
|---|---|
| 近七日 | 最近 7 天支出柱状图,点柱条看统计 |
| 收支速览 | 今日支出大字,下面给本月收支两行 |
| 收支速览(四格) | 今日与本月、支出与收入四格同权重 |
| 快速记账 | 最近三十天用得最多的三个分类,点一下直接进记账页 |
| 快速记账(八格) | 两行四列八个分类,给大桌面 |
| 预算环 | 圈内百分比与「已用」,圈下写剩多少与总额 |
| 消费节奏 | 近三十天每日支出的深浅,最后一格是今天 |
| 记账连续记录 | 连续记账天数与近二十八天的记录格 |
刷新策略也重做了:统一 30 分钟周期,另外从 App 回到桌面会立刻刷新——补上了 onStop 那一刷,
在此之前桌面上的改动要等下一次进 App 才生效。
新增:导出诊断包
设置 → 数据 → 导出诊断包。生成一份 txt 落到下载目录,并直接顶起系统分享。
它一条账单内容都不进:金额、备注、分类名、账本名、图片、API Key、网关地址全部排除,
表行数只说明「有多少条」。日志同时改成落盘(内存环 + 512KB 滚动文件 + 崩溃留档保留 5 份),
崩溃不再只留在当场那一次运行里。
修掉四个既有缺陷
-
备份恢复会丢分期计划的备注。 备份包里一直没写 installment_plan.note,而周期规则的备注是带的
——恢复一次备份,计划备注就没了。 -
编辑一笔分期账单会把它标成「手动」。 来源被覆盖成默认值,按来源筛选会漏掉这些账单,
行上的来源副标题也跟着变错。 -
删掉某一期的账单后,计划明细仍显示它「已入账」。 那是个只增不减的生成水位,不等于账上真有钱。
现在明细与卡片都按账上真实存在的账单算,被删掉的期显式标成「已删除」——它也不会被自动补回来
(删了就是不要了)。 -
同一期被重复写入时,会物理删掉回收站里那一行。 现在同一期只要存在过就不再写第二次。
其它修复
- 引导期从导入 / 备份页 push 出去的页面,成功后不再把人退回引导页
- 统计页跟着首页翻到的那个月走,不再每次都跳回今天
- 去掉几处把「后台放了很久」记成「取数很慢」的假耗时日志
- 小莉的「测试连接」先探一下服务地址的模型列表,超时不再被误报成「已取消」
文档与仓库
- docs/release/ 现在不带版本号,是当前形态的事实文档(八枚组件、诊断包、无迁移链都写进去了);
想知道历史版本什么样,用仓库里的 tag 取。 - README 重写了一遍:上一版从功能列表直接跳到「本地构建」,陌生人翻完也不知道 APK 在哪。
- 新增 SECURITY.md、PRIVACY.md、issue 模板,以及一个每次 push 都会跑的 assembleDebug CI。
安装
- 下载下面的
tally-v0.1.1-arm64-v8a.apk,装到 Android 9(API 28)及以上、arm64-v8a 的机型;
32 位老机器与 x86 模拟器装不上。 - 与 v0.1.0 同一把签名钥匙,可以直接覆盖安装,数据不清空。
- 没有商店签名,首次安装会提示允许来自本来源。
包信息
| 项目 | 值 |
|---|---|
| 文件 | tally-v0.1.1-arm64-v8a.apk |
| 大小 | 48,739,626 字节(46.5 MiB) |
| SHA-256 | 753e126a7aec5922cafd5b526a2d41a5e221e668009622c35e581afff5a4f8b7 |
| 包名 / 版本 | io.github.guohangbk.tally · versionCode 101 · versionName 0.1.1 |
| ABI | arm64-v8a |
| 签名 | CN=Android Debug,证书 SHA-256 c73482a95a80c399d9118ad1b9013c12b42f828e846bdcef3838f6914c5f7b2e(与 v0.1.0 同一把) |
许可
BUSL-1.1(源码可用 / Source-Available),不是 OSI 定义的开源许可:可读、可改、可自行构建、可个人自用;
不得作为商业产品或服务提供给第三方。每个版本在 Change Date(最早 2030-11-01,或该版本首次公开分发满四年)
自动转为 GPL-2.0-or-later。
v0.1.0 · 首个公开版本
首个公开版本。Tally 塔莉 是一本只存在手机里的账本:本地优先的 Android 记账应用,Kotlin + Jetpack Compose 写界面,Room 存本地库。没有账号、没有服务端,一条数据都不上传。
这个版本有什么
六条记账入口——机器猜的只出草稿等人确认,人定的到期直接入账:
| 入口 | 怎么用 |
|---|---|
| 手打 | 4×4 金额键盘,支持 38+12 这类算式;两级分类、时刻、凭证图、备注 |
| 语音 | 长按 + 的上臂,说「二十九块八毛五」出 29.85,端侧规则解析,可以不联网 |
| 截图 | 长按 + 的左臂,从相册选支付截图,端侧 OCR + 规则抽金额与商户,一次最多 9 张 |
| 周期 | 房租 / 订阅 / 工资到期自动入账,错过的期数一次补完 |
| 分期 | 一笔大额拆成多期,末期自动吃分币尾差;支持房贷(LPR±BP、等额本息 / 等额本金) |
| 小莉 | 可选的 AI:对话里一句话或几张图变成待确认的记账卡;不配置也不影响上面五条 |
看账与管账:多账本与「全部账本」合并视角;预算按月 / 按年、可自动续期、往期有预算历史;任意起止区间的统计(趋势、星期分布、分类二级小计、日报表下钻);带金额区间与排序的搜索;七动作批量修改;删除是软删,回收站按删除日分组。
带得走:.tally 加密备份包换机恢复;CSV / XLSX 导出可原样导回;支付宝 / 钱迹账单批量导入,重复行在预览阶段就说明白;月度 / 年度 / 区间分享长图,可一键脱敏;桌面三枚只读组件与两条长按快捷方式。
文档:docs/release/v0.1.0/ 下八份自包含文档(需求规格、概要设计、详细设计、数据库设计、界面与交互规范、界面设计图 29 节 117 屏、设计决策、用户操作手册)加一份冻结的 schema 快照,离线可看。
安装
- 下载下面的
tally-v0.1.0-arm64-v8a.apk,装到 Android 9(API 28)及以上、arm64-v8a 的机型;32 位老机器与 x86 模拟器装不上。 - 没有商店签名,首次安装会提示允许来自本来源。
- 覆盖安装:Release 与 Debug 共用仓库里那把测试签名钥匙,直接覆盖即可,数据不清空。
包信息
| 项目 | 值 |
|---|---|
| 文件 | tally-v0.1.0-arm64-v8a.apk |
| 大小 | 48,370,982 字节(46.1 MiB) |
| SHA-256 | 3685fe83a2bc890a69cc1b58c872ea396b4ce3ad8308dce1e803a0342e235756 |
| 包名 / 版本 | io.github.guohangbk.tally · versionCode 1 · versionName 0.1.0 |
| ABI | arm64-v8a |
| 签名 | CN=Android Debug,证书 SHA-256 c73482a95a80c399d9118ad1b9013c12b42f828e846bdcef3838f6914c5f7b2e |
想自己编:克隆仓库后 ./gradlew :tally-app:assembleRelease。签名钥匙随仓库带着,local.properties 不用配,产物落在 tally-app/build/outputs/apk/release/。
许可
BUSL-1.1(源码可用 / Source-Available),不是 OSI 定义的开源许可:可读、可改、可自行构建、可个人自用;不得作为商业产品或服务提供给第三方。每个版本在 Change Date(最早 2030-11-01,或该版本首次公开分发满四年)自动转为 GPL-2.0-or-later。