Changelog

StellarX 更新日志

记录 StellarX 的版本发布、重要变更、修复内容、兼容性说明与后续计划。

本页面整理官网展示版更新日志。完整变更记录以仓库中的 CHANGELOG 文件与 GitHub Releases 为准。

Current Version

v3.1.0

2026-05-15
版本重点 四边锚点语义、单轴布局策略、托管重绘 coverage 收口。
推荐状态 当前维护版本,建议新项目优先使用。
升级关注 旧布局 API 保持可用,但新布局 API 是推荐入口。
Latest

当前维护版本

v3.1.0 是当前维护版本,重点收口布局语义、重绘语义和复杂遮挡场景稳定性。

Format

记录格式

更新记录按新增、变更、修复、兼容性、已知限制等类别整理,便于升级前快速判断影响范围。

Compatibility

兼容性提示

旧接口通常会保留一段时间,但涉及 breaking changes 的版本会在对应版本说明中单独标出。

Full Log

完整记录

更完整的版本历史、Issue 关联和发布包信息,请查看 GitHub Releases 与仓库 CHANGELOG。

Latest Release

v3.1.0 更新日志

发布时间:2026-05-15
下载 Release

新增

  • 新增四边集合式锚点语义:水平轴支持 left/right,垂直轴支持 top/bottom。
  • 新增单轴尺寸策略 AxisSizePolicyStretchFixedSize
  • 新增单轴固定尺寸位移策略 AxisAlignPolicyStartEndCenterProportional
  • 新增 AxisLayoutSpecLayoutSpecLayoutCapabilityResolvedLayoutRect 等布局基础结构。
  • 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_LOGDSX_LOGISX_LOGWSX_LOGESX_LOGFSX_LOG_TRACESX_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 的演进节点。
v2.0.0 重大升级版本,引入 Dialog / MessageBox,对事件分发、API 语义和内部资源管理做了重要调整。
v1.0.0 首个稳定版本,提供基础控件库、CMake 构建系统、文档示例和预编译二进制库文件。
v0.1.0 初始项目结构与核心架构版本,包含 Control 基类、基本事件处理系统、基础示例和文档设置。
完整历史: 官网只保留当前版本、最近几个版本和关键里程碑版本。 更早或更细的历史记录不在官网逐条展开,需要完整版本历史时,请查看 GitHub 仓库中的 CHANGELOG。

Versioning

版本命名与兼容性说明

StellarX 尽量遵循语义化版本,但教学型框架在快速迭代阶段仍可能出现 API 语义调整。
主版本号 通常用于标记明显不兼容变更,例如事件模型、资源管理、控件生命周期等核心语义调整。
次版本号 通常用于新增控件、布局能力、示例体系、文档体系或较大范围行为改进。
修订版本号 通常用于修复 bug、收口边界行为、改进稳定性和补充文档说明。
升级建议: 从旧版本升级前,建议先阅读对应版本的“可能不兼容 / 兼容性 / 升级指引”部分,并优先在示例项目或测试分支中验证。

Next Step

继续查看

获取发布包、查看源码、提交问题或阅读 API 文档。