Changelog
StellarX 更新日志
记录 StellarX 的版本发布、重要变更、修复内容、兼容性说明与后续计划。
本页面整理官网展示版更新日志。完整变更记录以仓库中的 CHANGELOG 文件与 GitHub Releases 为准。
Current Version
v3.1.0
2026-05-15
版本重点
四边锚点语义、单轴布局策略、托管重绘 coverage 收口。
推荐状态
当前维护版本,建议新项目优先使用。
升级关注
旧布局 API 保持可用,但新布局 API 是推荐入口。
当前维护版本
v3.1.0 是当前维护版本,重点收口布局语义、重绘语义和复杂遮挡场景稳定性。
记录格式
更新记录按新增、变更、修复、兼容性、已知限制等类别整理,便于升级前快速判断影响范围。
兼容性提示
旧接口通常会保留一段时间,但涉及 breaking changes 的版本会在对应版本说明中单独标出。
完整记录
更完整的版本历史、Issue 关联和发布包信息,请查看 GitHub Releases 与仓库 CHANGELOG。
Latest Release
v3.1.0 更新日志
发布时间:2026-05-15新增
- 新增四边集合式锚点语义:水平轴支持 left/right,垂直轴支持 top/bottom。
- 新增单轴尺寸策略
AxisSizePolicy:Stretch与FixedSize。 - 新增单轴固定尺寸位移策略
AxisAlignPolicy:Start、End、Center、Proportional。 - 新增
AxisLayoutSpec、LayoutSpec、LayoutCapability、ResolvedLayoutRect等布局基础结构。 Control新增推荐布局接口:setHorizontalLayoutSpec()、setVerticalLayoutSpec()、setHorizontalAnchors()、setVerticalAnchors()、setHorizontalSizePolicy()、setVerticalSizePolicy()、setHorizontalAlignPolicy()、setVerticalAlignPolicy()、commitCurrentGeometryAsDesignRect()。- 新增托管重绘持久 coverage 与临时 coverage 区分,用于避免 Tooltip 等临时浮层污染兄弟控件背景快照。
变更
- 明确
localx/localy/localWidth/localHeight为设计态父局部矩形,不再视为普通运行时缓存。 - 明确
x/y/width/height为当前运行态绘制矩形。 - 普通 resize、容器重排和统一布局解算默认不自动回写
local*。 Window顶层控件布局与Canvas子控件布局统一走同一套轴向解算语义。Dialog继续保持窗口尺寸变化时只重新居中,不参与拉伸。TabControl外层接入统一布局,内部页签栏/页面区仍由控件自身专用逻辑管理。Table当前版本能力边界明确为 X 轴可拉伸、Y 轴固定,允许随锚点位移。Label::draw()不再承担新的几何决策入口,文本变化触发内容驱动运行态尺寸刷新。- 旧接口
setLayoutMode()与setAnchor()保留,并作为兼容输入层映射到新布局模型的有限子集。 - API 文档补充
Table::setData追加语义、TextBox字节长度和形状边界、Button::setButtonClick/ Tooltip offset 语义、SxLog 常用用法边界和MessageBoxResult枚举值。
修复
- 修复
TabControl::indexOf(const std::string&)未命中时返回值错误的问题,现在未命中返回-1。 - 修复 Dialog / overlay 关闭或遮挡后底层 hover、tooltip 状态可能不同步的问题。
- 修复非模态 Dialog 吞掉鼠标移动后,底层控件 hover 或 Tooltip 可能残留的问题。
- 修复局部提交时内部 coverage 扩张未反馈到 Window,导致上层 Dialog 或 overlay 漏补画的问题。
- 修复跨 root 回调改脏后未在同一轮事件尾提交,导致 Label 等控件延迟刷新或暂时不绘制的问题。
- 修复 Tooltip 临时浮层被兄弟控件背景快照捕获,后续回贴造成 Tooltip 残留或擦除的问题。
- 修复 Table 分页按钮 hover/click 后可能依赖整表状态才能恢复视觉的问题。
- 修复多层 Canvas、TabControl、Table、Dialog 混合遮挡时的若干局部重绘错层问题。
- 修复
WM_MOUSEMOVE路径中兄弟控件clearTransientMouseState()触发视觉变化但未稳定登记托管重绘的问题。 - 修复非模态 Dialog 关闭后仍长期留在
Window::dialogs容器中的问题,关闭对象改为事件安全点清理回收。 - 修复
TextBox::draw()字体夹紧和Button禁用态绘制会回写公开textStyle的问题。 - 修复
TextBox超宽显示截断可能在 GBK/MBCS 下截断半个中文字符的问题。
兼容性
- 旧布局 API 保持可用,既有代码无需立即迁移。
- 新布局 API 为推荐入口;旧 API 不保证能反向表达新模型的所有组合。
Label::textStyle仍然是公开字段。直接修改字体样式后,如需立即刷新尺寸,请调用setDirty(true)。Table::setHeight()当前仍不会启用纵向拉伸,这是 v3.1.0 的当前能力边界。
Known Limits
已知限制与延期事项
- 焦点系统。
- 键盘事件系统。
- TextBox 自绘输入体系。
- Table 内部局部重绘体系。
- Table 纵向 Stretch。
- Table 结构尺寸刷新从 draw 流程前移。
- 移除 Canvas 对 Table 的历史兜底特判。
- TabControl 内部布局应用路径收口。
- Tooltip 完整智能选位。
- 全局字体自动缩放。
- 更完整的 API 文档与示例体系。
Recent Releases
最近版本
官网仅保留当前版本之外最近 4 个版本的摘要,完整历史版本请查看 GitHub CHANGELOG。v3.0.2 2026-04-09 Dialog / Resize / Overlay 修复版本
变更
- Dialog 在窗口 resize、最大化、还原等场景下只重新计算位置并保持居中显示,不再跟随窗口拉伸自身尺寸。
- Dialog 标题改为由自身直接绘制,不再依赖单独的 Label 子控件。
Window::getWidth()/Window::getHeight()返回当前已实际生效的客户区尺寸;待处理尺寸改用getPendingWidth()/getPendingHeight()。- 非模态对话框覆盖区域内的底层控件不再继续响应鼠标事件。
修复
- 修复直接最大化窗口时可能出现的黑背景与控件残影。
- 修复 Dialog 在 resize、重定位与关闭过程中的背景残留。
- 修复对话框遮挡场景下的底层控件误交互。
- 修复 Canvas / TabControl 在事件已经被消费后仍继续向下分发的问题。
- 修复 Table 在空数据、空表头、列数不一致等输入下的边界风险。
- 修复 Label::setText() 后尺寸与绘制范围不同步的问题。
可能不兼容
Dialog::setInitialization(bool)已移除。- 如果旧代码将
Window::getWidth()/getHeight()当作待收口尺寸使用,需要改用getPendingWidth()/getPendingHeight()。
v3.0.1 2026-03-17 TextBox 与事件分发修复
注意
- 此次更新变更了
TextBox::setText语义。旧代码如果在调用setText后手动调用draw,升级后应删除相关调用,避免概率触发闪烁。
变更
TextBox::setText语义调整:文本未变化时直接返回;文本变化时根据图形上下文/窗口是否创建决定立即重绘或仅标脏。- TextBox 文本溢出绘制时按像素宽度截断并添加省略号,内部仍保存完整文本。
修复
- 修复
TabControl::getActiveIndex()在无激活页签时可能返回错误索引的问题。 - 修复对话框打开时持续触发全量重绘的问题。
- 修复对话框关闭合成
WM_MOUSEMOVE的触发时机问题。 - 调整
Window::runEventLoop普通控件事件分发顺序,由正序改为逆序遍历。
v3.0.0 2026-01-09 SxLog 日志系统与 Setter 语义收敛
新增
- 新增日志系统使用 Demo:
examples\SXLog-日志系统使用demo。 - 新增轻量日志系统 SxLog,支持级别与 Tag 筛选、控制台/文件输出、按大小滚动、中英文双语文本选择。
- 提供
SX_LOGD、SX_LOGI、SX_LOGW、SX_LOGE、SX_LOGF、SX_LOG_TRACE、SX_TRACE_SCOPE等宏。
变更
- TabControl 页签切换时序调整为“先关闭当前已打开页,再打开目标页”。
- 控件 Setter 语义收敛为“更新状态并标脏”,绘制由窗口/容器的重绘收口机制触发。
修复
- 修复 TextBox::setText 在进入事件循环前调用触发中断的问题。
- 修复 TabControl 切换/关闭后 Table 新旧内容重叠的问题。
可能不兼容
- 删除 Button 尺寸别名 API:
getButtonWidth()/getButtonHeight(),统一使用getWidth()/getHeight()。 setIsVisible(true)与setText()等 Setter 不再保证立刻触发绘制。
v2.3.2 2025-12-20 Table 数据重置与 TextBox 密码模式
新增
- Table 支持运行期重置表头与数据,新增
clearHeaders()、clearData()、resetTable()。 - TextBox 新增
PASSWORD_MODE,绘制层面使用掩码字符显示。
变更
- TabControl 默认激活页语义明确化:首次绘制前只记录默认激活索引,首次绘制后再生效。
修复
- 修复 TabControl::setActiveIndex 绘制前调用导致程序中断的问题。
- 修复 TabControl 由不可见设置为可见时非激活页错误绘制的问题。
Milestones
重要里程碑
这里保留几个对框架阶段影响较大的版本,便于了解 StellarX 的演进节点。
完整历史:
官网只保留当前版本、最近几个版本和关键里程碑版本。
更早或更细的历史记录不在官网逐条展开,需要完整版本历史时,请查看 GitHub 仓库中的 CHANGELOG。
Versioning
版本命名与兼容性说明
StellarX 尽量遵循语义化版本,但教学型框架在快速迭代阶段仍可能出现 API 语义调整。
升级建议:
从旧版本升级前,建议先阅读对应版本的“可能不兼容 / 兼容性 / 升级指引”部分,并优先在示例项目或测试分支中验证。
Next Step
