更新
有新版本 {{ latestVer ? 'v' + latestVer : '' }},点这里刷新
💞
没加载出来,检查一下网络
正在打开你们的小家…
我们的小家
{{ auth.mode==='signup' ? '先给自己建个账号,家跟着账号走' : '登录后就能回到你们的小家' }}
💌 有人邀请你进入他的小家({{ auth.invite }})
注册或登录后会自动带你进去
{{ auth.err }}
{{ auth.mode==='signup' ? '忘了密码没法找回(没做邮箱验证),建议现在记进备忘录' : '账号只存在这个站点自己的数据库里,不走第三方登录' }}
v{{ appVer }} · {{ buildAt }} · 构建 {{ buildId }}
你好,{{ account.name || account.handle }}
我的家
🏠
{{ h.partner ? (h.partner + ' 和我') : '我的小家' }}
在一起 {{ daysFrom(h.together_start) }} 天 · 房间码 {{ h.code }}
进入 →
还没有小家。建一个,或者用 TA 给的邀请码加入。
💕
距离下次见面还有
{{ daysToMeet >= 0 ? 'D-' + daysToMeet : '已过 ' + (-daysToMeet) + ' 天' }}
{{ meetLabel }} · {{ daysToMeet >= 0 ? ('还有 ' + daysToMeet + ' 天') : '这天已经过去了,点这里改' }}
下次见面
还没定日子
点这里设一个,双方随时都能改
💗
第 {{ togetherDays }} 天
在一起 · 从 {{ togetherStartLabel }} 开始
今天怎么样
{{ otherInitial }}{{ otherName }} 的状态
{{ status.ta.mood }}
{{ status.ta.doing || '还没更新状态' }}
{{ status.ta.at }}
{{ myInitial }}{{ myName }} 的状态
{{ status.me.mood }}
{{ status.me.doing || '还没更新状态' }}
{{ status.me.at }}
我们俩的健康
{{ health.hint }}
{{ p.initial }}{{ p.name }}
还没连华为运动健康
{{ p.stepsText }}步
😴 睡眠{{ p.sleepText }}
{{ p.sleepTimeText }}
❤️ 静息{{ p.restText }}
📈 心率{{ p.rangeText }}
🧘 情绪{{ p.stressText }}
查看 7 天详情 ›
🌿
还没有同步到数据
戴着手环睡一晚,第二天这里就有步数、睡眠和心率。
每天自动同步,不用手动记。
{{ health.stale }}
纪念日
{{ catEmoji(featured.category) }}
{{ featured.name }}{{ featured.days>=0 ? '还有' : '已经' }}
目标日:{{ featured.targetLabel }}
{{ Math.abs(featured.days) }}
天
{{ catEmoji(a.category) }}
{{ a.name }}{{ a.days>=0 ? '还有' : '已经' }}农历
{{ Math.abs(a.days) }}天
远程互动
{{ cloud.on ? '双方联网 · 5 秒内送达' : '本地演示' }}
开会不方便说话?戳一下,TA 就知道你在想 TA
{{ canVibrate ? '对方手机会震一下' : '这台设备不支持震动(iPhone 限制),会用手心动画提醒' }}
留言便签
{{ n.txt }}
{{ r.e }} {{ r.count>1 ? r.count + ' ' : '' }}{{ r.names }}
{{ whoLabel(n.by) }} 留
{{ expireLabel(n) }}
现在没有在有效期内的便签,去归档看看?
我们的小目标
🎁
我的积分 {{ myPoints }}完成对方定的目标才能获得
{{ g.emoji }}
{{ g.name }}
{{ catName(g.category) }} · 每次 +{{ g.step }}{{ g.unit }} · {{ (g.records||[]).length }} 次记录
👤 {{ assigneeText(g) }} 完成 · 达成 +{{ g.points }} 分 · 已结算
{{ g.now }}/{{ g.target }}{{ g.unit }}
🎉 目标完成
{{ whoLabel(g.by) }}想让你{{ g.assignee==='both' ? '俩一起' : '' }}完成这个目标
⏳ 已提交,等对方同意后开始
✕ 对方拒绝了
回退申请:-{{ g.rollback.amount }}{{ g.unit }} · {{ g.rollback.reason }}
回退申请:-{{ g.rollback.amount }}{{ g.unit }} · {{ g.rollback.reason }}
⏳ 回退申请已提交,等对方同意(-{{ g.rollback.amount }}{{ g.unit }})
🎉 已完成,不用再打卡
👤 由 {{ assigneeText(g) }} 打卡
v{{ appVer }} · {{ buildAt }} · 构建 {{ buildId }}
第 {{ togetherYears }} 年相识
{{ allNodes.length }} 个收藏的瞬间
{{ photoCount }} 张照片
素材入口:朋友圈 / QQ空间动态 → 一键导入(先选身份,再粘贴内容自动识别日期);相册 / 照片 → 手动上传;文字 → 自己写
相遇之前 · 两条平行的人生线
{{ memberNames.me || '我' }} 的从前 💙
{{ memberNames.ta || 'TA' }} 的从前 💗
相遇之前的两条人生线还空着 · 点下面两个按钮,把各自小时候的事写进去
{{ row.him.date }}
{{ row.him.title }}
{{ row.him.body }}
{{ row.him.tag }}
{{ row.her.date }}
{{ row.her.title }}
{{ row.her.body }}
{{ row.her.tag }}
{{ n.date }}
{{ typeLabel(n.type) }}
{{ n.title }}
{{ n.body }}
{{ initialOf(n.owner) }}{{ n.nick }}{{ n.date }} · {{ n.source }}
{{ n.body }}
{{ p && p.data ? '' : '🖼' }}
❤️ {{ n.likes }}💬 {{ n.comments }}
+{{ n.photos.length-4 }}
{{ n.title }}相册 · {{ (n.photos||[]).length }} 张{{ n.body ? ' · ' + n.body : '' }}
🖼 照片待上传
{{ n.title }}{{ n.body }}
{{ n.tag }}
{{ meetDateLabel }} · 相遇点
💞 {{ meetTitle }}
{{ meetStory }}
相遇之后 · 我们的故事
{{ y.year }} · {{ y.items.length }} 个瞬间
{{ n.date }}
· 他
· 她
{{ typeLabel(n.type) }}
{{ n.title }}
{{ n.body }}
💬 {{ n.source }} · 复制粘贴导入
{{ m.text }}
{{ initialOf(n.owner) }}{{ n.nick }}{{ n.date }} · {{ n.source }}
{{ n.body }}
{{ p && p.data ? '' : '🖼' }}
❤️ {{ n.likes }}💬 {{ n.comments }}
+{{ n.photos.length-4 }}
{{ n.title }}相册 · {{ (n.photos||[]).length }} 张{{ n.body ? ' · ' + n.body : '' }}
🖼 照片待上传
{{ n.title }}{{ n.body }}
{{ n.tag }}
· 故事还在继续 ·
{{ nodeDraft.title || '这条时光' }}
{{ nodeDraft.date }} · {{ typeLabel(nodeDraft.type) }} · {{ memberNames.me || '我' }} 的从前 · {{ memberNames.ta || 'TA' }} 的从前
放在谁的人生线
{{ uploadIdx }} / {{ uploadTotal }} · {{ uploadPct }}%
{{ viewer.i + 1 }} / {{ viewer.photos.length }}
{{ incomingPoke.emoji }}
今天怎么样
选好后点保存才同步给 TA,不会点一下就改
在干嘛
同步后 TA 会看到:{{ draft.mood }} {{ draft.custom || draft.doing || '还没选' }}
{{ hdPerson ? hdPerson.name + ' · 近 7 天' : '近 7 天' }}
{{ hdRange }}
👣 步数{{ hdSteps.sum }}
{{ d.label }}
{{ d.text }}
😴 睡眠{{ hdSleep.sum }}
{{ d.label }}
{{ d.text }}
{{ d.time }}
❤️ 心率{{ hdHr.sum }}
{{ d.label }}
{{ d.text }}
🧘 情绪压力{{ hdStress.sum }}
{{ d.label }}
{{ d.text }}
这 7 天还没有数据
邀请 TA 进这个家
TA 打开链接 → 注册账号 → 自动加入,不用再输码
{{ cloud.code }}
{{ inviteLink }}
重设密码
你已经登录着,所以不需要旧密码 · 新密码至少 8 位、不能是纯数字
建一个新的家
建好你会拿到一个邀请码,发给 TA 就能进来
用来算「在一起第几天」,建好后不能改
用邀请码加入
邀请码是 TA 在小家顶栏看到的那 6 位
{{ dayDraft.kind==='auth' ? '在一起的第一天' : (dayDraft.kind==='meetpoint' ? '相遇的那一天' : '选一个日子') }}
{{ dayDraft.kind==='auth' ? '用来算「在一起第几天」,建好后不能改' : (dayDraft.kind==='meetpoint' ? '时间线上两条线汇合的那一点' : '上下滚动选择') }}
相遇点
时间线上两条线汇成一条的地方 · 双方都能改
{{ (mpDraft.story||'').length }}/160
下次见面
双方都能改,不需要对方同意
卡片背景
背景上的文字
图片遮罩(让字更清楚)
在一起
起始日创建小家时设定,不可修改;背景可以换
起始日{{ togetherStartLabel }} 🔒
卡片背景
背景上的文字
图片遮罩(让字更清楚)
打卡 · {{ checkGoal ? checkGoal.name : '' }}
选睡觉的那一晚,系统自动核对华为手环的入睡时间
睡眠日期(醒来那天)
正在读手环记录…
这一天已经打过卡了
同一天只能打一次,换一天试试
{{ checkDraft.gate.pass ? '✅ 达标,可以打卡' : '❌ 这天没达标' }}
{{ checkDraft.gate.message }}
选好日期后自动核对
提交后:+{{ checkGoal.step }}{{ checkGoal.unit }} · 记录会存下当天手环入睡时刻
上传证明照片并写一句说明,记录会永久保存
数据来源(必须是运动/健康 App 的数据页)
{{ checkGoal && checkGoal.category==='sleep' ? '这次睡了几小时' : '这次完成的数据' }}
只认 App 里的真实记录:来源和数值会一起存进打卡记录,对方可以核对。
提交后:+{{ checkGoal ? checkGoal.step : 0 }}{{ checkGoal ? checkGoal.unit : '' }} · 需要至少 1 张证明图
{{ detailGoal ? detailGoal.name : '' }}
{{ detailGoal ? catName(detailGoal.category) + ' · 每次 +' + detailGoal.step + detailGoal.unit : '' }}
进度 {{ detailGoal.now }} / {{ detailGoal.target }}{{ detailGoal.unit }} · 共 {{ (detailGoal.records||[]).length }} 次打卡
{{ r.at }} · {{ whoLabel(r.by) }}+{{ r.amount }}{{ detailGoal.unit }}
{{ r.note }}
{{ r.day }} · 手环入睡 {{ hhmm(r.sleep_at) }}
还没有打卡记录
{{ reviewGoal ? reviewGoal.name : '' }} · 回顾
{{ reviewGoal ? reviewGoal.now + '/' + reviewGoal.target + reviewGoal.unit + ' · ' + (reviewGoal.records||[]).length + ' 次打卡' : '' }}
{{ r.at }} · {{ whoLabel(r.by) }} +{{ r.amount }}{{ reviewGoal.unit }}
{{ r.note }}
长按图片可以存到相册
申请回退进度
{{ rollGoal && rollGoal.by === identity && (rollGoal.assignee || 'self') === 'self'
? '这是你自己定的目标,回退立刻生效,不用等对方' : '回退必须对方同意,防止一方偷偷改数据' }}
提交后:{{ rollGoal.now }} → {{ Math.max(0, rollGoal.now - (rollbackDraft.amount||0)) }}{{ rollGoal.unit }}
回应这张便签
{{ reactNote ? whoLabel(reactNote.by) + ' 留的:' + notePreview(reactNote) : '' }}
{{ r.e }} {{ r.count>1 ? r.count + ' · ' : '' }}{{ r.names }}
🔒 只有 {{ reactNote ? whoLabel(reactNote.by) : '' }} 能改或删
{{ editId ? '编辑新日子' : '添加新日子' }}
选未来日期倒数,选过去日期正数
目标日
{{ annDraft.lunar ? '农历' : '公历' }}
{{ annTargetTitle }}
{{ annTargetSub }}
倒数本
置顶
重复
这个日子
{{ annAction ? whoLabel(annAction.by) + ' 添加' : '' }}
🔒 {{ whoLabel(annAction.by) }}添加,只有 {{ whoLabel(annAction.by) }} 能改或删
{{ editId ? '编辑便签' : '写一张便签' }}
对方能用 emoji 回应,不能改你的便签
有效期
已归档的便签
过期自动归档 · 只有创建者能恢复或删除
还没有归档的便签
{{ n.txt }}
{{ whoLabel(n.by) }} 留{{ expiredLabel(n) }}
🔒 只有 {{ whoLabel(n.by) }} 能恢复
{{ editId ? '修改目标' : '添加共同目标' }}
提交后要对方同意才开始;打卡需要上传证明
1 · 选分类
2 · 选单位
3 · 起个名字和数值
最晚入睡时间(华为手环记录的入睡时间 ≤ 这个点才算达标)
{{ goalDraft.sleepBefore >= 0
? '打卡时只需选手环记录的那一天,系统自动核对入睡时间,不用传照片'
: '不设门槛:打卡仍然要上传证明照片 + 填数值' }}
4 · 谁来完成
{{ goalDraft.assignee==='self' ? '自己给自己定的目标:立刻生效,不需要对方同意,但不会得积分' : '完成人不是你自己:需要对方点同意后才开始;完成时你能拿到积分' }}
5 · 完成奖励积分
积分只奖励"完成对方定的目标",自己完成自己的不给分(当前固定 0 分)
每打卡一次:+{{ goalDraft.step || 0 }}{{ unitLabel }} ·
选中日期后自动核对手环入睡时间,达标即可打卡
打卡需上传证明图+说明{{ needRealData(goalDraft) ? ' · 运动/睡眠类还要填数据来源和真实数值' : '' }}
积分商城
完成对方定的目标拿积分,用积分换两个人之间的奖励
我的积分 {{ myPoints }}
⚠️ {{ shopErr }}
等我兑现 · {{ shopToFulfill.length }}
{{ o.item_icon }}
{{ o.item_name }}{{ o.cost }} 积分 · {{ absLabel(o.member) }} 兑换
可以兑换
{{ r.icon }}
{{ r.name }}
{{ r.cost }} 积分 · {{ r.note }} · 剩 {{ Math.max(0, r.stock - r.sold) }} · 每人限 {{ r.limit }} 次
还没有可以换的奖励 —— 由管理员在后台配置
我的兑换
{{ o.item_icon }} {{ o.item_name }}
{{ shopOrderLabel(o) }}
我的积分流水
{{ p.reason }}{{ p.delta>0 ? '+' : '' }}{{ p.delta }}
一键导入 · {{ importDraft.src==='qzone' ? 'QQ空间' : '朋友圈' }}
网页拿不到这两个平台的登录态(跨域 + 无公开接口),所以走"粘一次、自动拆多条":每条以日期开头就能识别成一个节点
1 · 这些是谁的动态
2 · 粘贴动态内容
✅ 已识别 {{ importPreview.length }} 条 · {{ importPreview[0].date }} → {{ importPreview[importPreview.length-1].date }}
支持 2024.5.20 / 2024-05-20 / 2024年5月20日;没有日期的行会并入上一条。
{{ actionTitle }}
{{ actionDesc }}
🔒 {{ action ? whoLabel(action.by) : '' }}添加,只有 TA 能改或删
添加一段时光
素材从哪来,就选哪种卡
{{ editId ? '编辑这段时光' : '写一段时光' }}
粘贴聊天记录
微信/QQ 里多选消息 → 复制 → 粘到这里
识别到 {{ candidates.length }} 段,勾选上时间线:
朋友圈 / QQ空间动态
把那条动态的文字和照片搬进来
配图(可选,最多 3 张)
相册
相册和照片合并为一类,都要手动上传图片
{{ f.emoji }}