hyper a26d53cbeb fix(journal): keep variable bases in the stream
The stream only carried combined values, so hydrating a session lost the raw base and rebuildReactivityFromStore re-applied tag modifiers on top of already-combined values (e.g. $hp 70 became 90).

Publish the raw base alongside the combined value on var messages, persist it in variableBases, and rebuild engine state from exact bases. Derive tag activations from base tagmaps so tagmap-valued modifier targets are not re-triggered on every rebuild.

Seed declared variables only after hydration and only for keys absent from the store, so persisted values are no longer clobbered on load and reloads stop appending duplicate var messages.
2026-09-12 21:59:45 +08:00
2026-02-28 17:40:02 +08:00
2026-09-12 16:42:37 +08:00
2026-03-01 09:49:01 +08:00

TTTK — Tabletop Toolkit

A TTRPG content preview and validation tool based on solid.js and rsbuild. Write markdown, preview in browser, validate before you ship.

快速开始

# 无需安装,直接使用
npx tttk serve ./content

# 校验内容(存在错误时退出码为 1)
npx tttk check ./content

文档导航

文档 说明
📖 CLI 使用说明 CLI 安装、命令和用法
🔤 语法参考 自定义元素、代码块角色与属性目录(由 known.ts 生成)
📦 npm npx tttk serve ./content
🛠️ 开发指南 项目结构、开发规范和构建
📝 Markdown 编写说明 Markdown 语法和组件用法
📊 CSV 编写说明 CSV 文件格式、字段定义、变量语法
🤖 MCP 服务器说明 AI 助手集成、卡牌生成工具

功能概览

  • CLI 工具: tttk serve 预览模式、tttk check 校验模式(tttk compile 尚未实现)
  • Markdown 解析: 支持指令语法、YAML 标签、mermaid 图表
  • TTRPG 组件: 骰子、表格、卡牌、标记、命令追踪器等

核心组件

组件 语法 说明
🎲 骰子 :md-dice[2d6+d8] 掷骰并记录结果
📊 表格 :md-table[./data.csv] 标签页式表格
🃏 卡牌 :md-deck[./cards.csv] 卡牌布局(推荐 yaml role=tag 写法)
📍 标记 :md-pins[./map.png]{pins="A:25,50"} 图片标记
📋 追踪器 :md-commander[./commands.csv] 命令历史和状态追踪

技术栈

  • 前端: Solid.js 1.9+
  • 构建: Rsbuild
  • 样式: Tailwind CSS 4
  • Markdown: marked + marked-directive
  • 测试: Jest

许可证

MIT

S
Description
No description provided
Readme MIT
2 MiB
Languages
TypeScript 98.6%
JavaScript 0.7%
CSS 0.7%