
开发工具后端【免费下载链接】rstudioRStudio is an integrated development environment (IDE) for R项目地址https://gitcode.com/gh_mirrors/rs/rstudio点击查看免费下载从NEWS.md到桌面端首发弹窗一条面向发布团队的编辑流水线一、这篇指南讲什么本指南面向 RStudio 仓库的发布维护者与贡献者完整讲解「为 RStudio Desktop 的Whats New弹窗填充发布内容」的端到端流程从核对当前分支与版本、定位发布内容目录到筛选NEWS.md中的条目、按桌面用户视角撰写页面、执行验证测试再到提交并打开 PR 的完整链路。读完本文你将掌握版本与目录定位如何把version/RELEASE中的花朵名如Autumn Hawkbit转换为 slug并定位到src/node/desktop/src/assets/whats-new/slug/index.html条目筛选标准四条核心过滤规则桌面用户 vs 管理员、用户 vs 开发团队、功能增强 vs 修复、弃用与移除以及两条辅助判断捆绑依赖、重命名页面撰写规范加粗短标签 一到三句现在时陈述的写法、gt;/mdash;/code等转义要求以及固定的Fixes结尾段验证与查看npm test中的 whats new content validation 测试、RSTUDIO_SHOW_WHATS_NEW1等环境变量、以及Help Whats New的预览方式提交规范提交信息模板、PR 正文应包含的取舍说明、以及里程碑匹配原则。二、背景Whats New 页面是什么该页面是每个 RStudio Desktop 发布版本在用户升级后首次启动时展示一次的功能公告窗口。它只存在于桌面版RStudio Server 永不展示该窗口。页面按发布版本逐一存放于 src/node/desktop/src/assets/whats-new 目录每个版本对应一个子目录whats-new/ ├── whats-new-base.css # 共享基础样式 ├── README.md # 目录布局、head 标签与样式类的权威说明 ├── globemaster-allium/ # Globemaster Allium 版本内容 │ ├── index.html │ └── images/ # 可选图片 │ └── feature-screenshot.png └── next-release-slug/ └── index.html当前仓库正处在2026.10.0 Blue MistflowerDaily 构建周期其内容页位于 blue-mistflower/index.html。各历史版本页面autumn-hawkbit、golden-wattle 等则构成真实的「风格样板」。2.1 窗口的运行时结构从源码看Whats New 窗口是一个无边框 Electron 子窗口外层 host 页面提供固定头部发布名与版本、滚动 iframe 与底部关闭按钮whats-new-host.html 中 iframe 通过../assets/whats-new/${release}/index.html相对路径加载版本内容页。窗口在showWhatsNewWindow()whats-new-window.ts中被创建为 900×825 的模态窗口并施加了多项安全约束通过createLocalUrlCheckerwhats-new-utils.ts限定只有 host 页面目录与发布内容子目录内的 URL 才算本地导航其余http(s)一律交给系统浏览器拦截主框架与子框架导航、把http(s)链接preventDefault后交给shell.openExternal用before-input-event实现 iframe 内按Escape也能关闭窗口渲染进程崩溃或失去响应时销毁窗口并跳过onClose避免把异常关闭记成「已看过」。三、Step 1核对起始分支动手编辑前先用 git 确认当前所在分支git branch --show-current若输出是main、master或rel-*先创建功能分支再编辑feature/slug-whats-new若已在一个工作分支上保持现状即可。四、Step 2定位发布版本与内容目录cat version/RELEASE version/CALENDAR_VERSION version/PATCHversion/RELEASE存放花朵名flower name例如Autumn Hawkbit或当前周期内的Blue Mistflower将花朵名 slug 化转小写、去撇号、其余用连字符连接Autumn Hawkbit→autumn-hawkbit得到内容目录src/node/desktop/src/assets/whats-new/slug/index.html该文件通常在发布分支创建时已经以占位条目placeholder生成。若不存在则需依据 whats-new/README.md 中的模板创建——该 README 是目录布局、必需head标签与可用 CSS 类的权威来源。slug 转换的源码佐证toReleaseSlug()whats-new-utils.ts实现了与 README 一致的算法——toLowerCase()→ 去掉→ 把非[a-z0-9]的连续字符替换为单个-→ 去除首尾连字符。单元测试 whats-new-utils.test.ts 覆盖了这些边界情形例如Kings Crown→kings-crown、Sea Holly (v2)→sea-holly-v2。动笔前务必通读最近两到三个版本的index.htmlglobemaster-allium、autumn-hawkbit、pacific-dogwood 等。它们是真实的风格指南——比任何文字描述都更准确地展示了条目应有的信息密度与措辞风格。五、Step 3通读本版本的 NEWS.md仓库根目录的 NEWS.md 只存放进行中的发布条目早期版本归档于 version/news/os/。必须读完整文件——值得展示的条目绝不局限于### New标题之下### Fixed中按体验判断属于增强的条目、### Deprecated / Removed中的移除项都是候选。六、Step 4筛选条目全文核心页面只列出终端用户会关心的新功能与增强——除此之外一概不列。四条过滤规则按「改变答案的频率」排序6.1 受众是桌面用户不是管理员Whats New 窗口只随 RStudio Desktop 发布RStudio Server 从不展示它。因此凡是面向部署配置者的内容一律砍掉会话选项、rserver/rsession命令行标志、服务器配置文件、launcher 行为以及仅在 Server 下才显现的修复。这类条目往往是### New下最大的一批——恰恰是首先要删的。仓库实证对照 NEWS.md 与 blue-mistflower/index.html可以看到 #18899Server 重启卡顿、#18864Server 下载权限崩溃、#18718Server 启动挂起等条目均未进入页面而它们都是### Fixed下的真实修复——受众不是桌面用户。6.2 受众是用户不是我们砍掉构建工具、CI、代码签名、打包内部细节、崩溃上报管道与测试基础设施。仓库实证#18803「RStudio Desktop 记录渲染器/GPU/utility 进程失败日志以帮助诊断崩溃」属于崩溃上报管道未入选而同样为开发者向的#18739启动优化与#18738安装体积减小却入选了——因为用户能直接感受到结果。6.3 只列功能与增强不列修复普通 bug 修复属于发布说明页面结尾的Fixes段会链接到它见 Step 5。例外是措辞像修复、但读起来是改进的条目——一次性能优化、或对上版本功能的延伸。判断依据是用户体验searching and scrolling are faster搜索与滚动更快——无论它在哪个标题下都是增强fixed a crash when …——不是。仓库实证NEWS.md 中 #11622成功渲染后最小化的 Console 保持最小化与 #16386滚动回看上限立即生效虽在### Fixed下但用户体验上是改进与页面上的「Console 相关改进」方向一致而 #8729数据目录文件导致启动失败、#18735组策略禁用命令提示符导致 Windows 无法启动等纯修复被留在发布说明中。6.4 弃用与移除要算数若### Deprecated / Removed点名的东西是用户依赖的——某个发布目的地消失、某个工作流退役——应在功能列表之后给它们独立的简短Deprecated段。用户对「东西要消失」的警告需求比对「东西新增」的需求更强而发布说明链接很容易被忽略。仓库实证2026.09 周期的 autumn-hawkbit/index.html 为 RPubs 与 ShinyApps.io 发布目的地单列了Deprecated段并附迁移指南当前 blue-mistflower/index.html 也为「Uninstall Posit Assistant 命令被移除」单列了Deprecated段。6.5 两个较小的判断捆绑依赖组件版本号升级只在用户能注意到时才值得一行——例如新的 Quarto 次要版本而不是某个语言服务器的补丁版。务必对照上一版本的### Dependencies列表在 version/news/os/ 下确认它确实是本周期新引入的那些列表只记录变更项所以「没有某行」不代表「版本没变」。重命名用户可见的产品/服务重命名应上页面避免用户对新名字困惑。一行足够。仓库实证autumn-hawkbit 页面中的 Posit AI Pass 改名条目正是这种一行重命名。七、Step 5撰写条目每条条目遵循固定结构加粗的短标签开头然后一到三句、现在时的平实陈述并匹配前几版页面的散文密度。7.1 头条级条目要读实现 commit对任何「头条级」功能不要照抄 NEWS 条目去读实现它的 commitgit log --oneline --grepissue-number或搜索该功能的名字。原因在于NEWS 条目是写给已经熟悉产品的人扫描用的而 commit message 与 diff 里才有用户真正需要的东西——菜单路径、命令名、工具栏按钮、功能的局限。用户问的第一个问题是「它在哪、什么时候不工作」在条目里回答这个页面才值得读。仓库实证blue-mistflower 页面中 Fixed plot size 条目给出Plots Fixed Size...菜单路径、导出默认尺寸、600 DPI 上限等细节均来自 NEWS.md 的 #4422 扩展信息。7.2 措辞平实不堆营销词保持事实性。NEWS.md 与既往页面的行文风格是平实描述比形容词堆叠读起来更好listrongActive tab highlight:/strong The active document tab now has a bold label and a blue overline. This can be turned off in emTools gt; Global Options gt; General gt; Basic/em./li7.3 固定结尾Fixes 段无论你是否在### Fixed下写了任何东西页面永远以链接到发布说明的Fixes段收尾div classfeature-section h2Fixes/h2 p For a full list of bug fixes in this release, see the a hrefhttps://www.rstudio.org/links/release_notes#rstudio-CALENDAR_VERSION.PATCHrelease notes/a. /p /div每个版本的页面都原样携带这一段仅锚点不同它让 Step 4 的删减站得住脚修复并没有对用户隐藏它们一键可达因此页面本身可以只承载值得公告的内容。种子占位符通常已含此段——保留它并对照version/目录核对锚点而不是假设发布分支时已更新。因此完成的页面按顺序为New Features→ 如有弃用则Deprecated→Fixes。7.4 会反咬人的机械细节不要动headContent-Security-Policymeta 标签与whats-new-base.css链接由单元测试强制见 Step 6转义标记文本菜单路径中的写作gt;如View gt; Split Editorem 破折号用mdash;选项名与代码用code包裹不要添加未验证可访问的外链。桌面内容里的死链接比没有链接更糟——此页面随安装包出厂无法不发布新版本就修正。八、Step 6验证cd src/node/desktop npm test测试套件包含一个whats-new content validation用例whats-new-utils.test.ts遍历whats-new/下每个版本目录断言其index.html包含Content-Security-Policymeta 标签与whats-new-base.css样式表链接缺一即失败。按桌面开发指南见 src/node/desktop/CLAUDE.md还应运行npm run lint与npm run typecheck由于仅改动 HTML 资源它们理应原样通过——任何失败都视为预先存在应报告而非在此修复。8.1 在运行中的 IDE 里查看页面启动时强制弹出设置环境变量RSTUDIO_SHOW_WHATS_NEW1随时打开Help Whats New菜单开发者构建在运行时从version/RELEASE读取发布名resolveReleaseName()whats-new-utils.ts因此会显示进行中发布版本的内容文件夹——你可以在内容编写期间就预览它。打包构建则使用构建时烘入的发布名。8.2 环境变量速查变量效果RSTUDIO_SHOW_WHATS_NEW启动时强制显示 Whats New 窗口任意值。绕过构建类型与「已看过」状态检查。内容必须存在。RSTUDIO_DISABLE_WHATS_NEW启动时抑制 Whats New 窗口任意值。Help Whats New命令仍可用。必须在启动 RStudio之前于 shell 环境设置写入.Renviron无效——Whats New 检查在 Electron 进程中运行先于 R 启动。8.3 源码层的显示决策逻辑启动时是否显示窗口由shouldShowWhatsNew()session-launcher.ts调用纯函数evaluateWhatsNewVisibility()whats-new-utils.ts决定按最高优先级排序内容必须存在slug 合法且index.html可读否则永不显示RSTUDIO_SHOW_WHATS_NEW强制显示覆盖以下一切RSTUDIO_DISABLE_WHATS_NEW强制跳过show_whats_new用户偏好可禁用仅发布构建自动显示已看过的发布不再显示。「已看过」状态由 whats-new-state.ts 中的WhatsNewState管理electron-store 持久化seenReleases按发布名而非补丁级别判重窗口正常关闭时经onClose回调写入——崩溃或失去响应导致的异常关闭不会标记为已看过whats-new-window.ts。开发者构建不会持久化已看状态避免压制最终打包发布版的弹窗。九、Step 7提交并打开 PR提交信息Populate Whats New content for CALENDAR_VERSION (Release Name)例如Populate Whats New content for 2026.10 (Blue Mistflower)PR 正文包含所选条目并且——因为这是最不直观、审查者最可能二次质疑的决定——明确列出被排除的 NEWS 条目及排除理由里程碑将version/RELEASE与现有里程碑对照gh api repos/rstudio/rstudio/milestones --jq .[].title匹配则设置绝不新建里程碑。无需 NEWS.md 条目本页面本身就是发布说明内容再为其添加条目会造成循环引用。也无需 GitHub issue 引用。十、总结一条可复用的发布流水线将以上步骤压缩为一张速查表供每个发布周期套用阶段动作关键文件/命令1 分支git branch --show-current必要时建feature/slug-whats-new—2 定位cat version/RELEASE version/CALENDAR_VERSION version/PATCHslug 化得目录whats-new/README.md3 通读读完整 NEWS.md version/news/os/ 历史—4 筛选桌面用户 / 用户而非团队 / 增强而非修复 / 弃用移除对照历史页面5 撰写加粗标签 1–3 句现在时头条条目查实现 commitgt;/mdash;/code转义保留 Fixes 段历史index.html6 验证npm test含 content validation、npm run lint、npm run typecheckwhats-new-utils.test.ts6b 预览RSTUDIO_SHOW_WHATS_NEW1或 Help Whats Newwhats-new/README.md7 提交规范提交信息、PR 列出取舍、里程碑只匹配不新建—这条流水线的核心思想值得反复强调发布说明写给所有接触产品的人Whats New 页面只写给一种受众——RStudio Desktop 的终端用户。所有筛选与撰写的判断最终都回到这一个问题用户打开这个窗口后真正需要知道什么赞分享开发工具后端【免费下载链接】rstudioRStudio is an integrated development environment (IDE) for R项目地址https://gitcode.com/gh_mirrors/rs/rstudio点击查看免费下载相关推荐Dioxus应用部署全攻略从开发到生产的完整流程Dioxus应用部署全攻略从开发到生产的完整流程 想要将你的Dioxus应用部署到生产环境吗这个终极指南将带你从开发到部署的完整流程Dioxus是一个强大前端跨平台UI组件桌面应用移动开发Whats New 开源项目教程Whats New 开源项目教程 项目介绍 Whats New 是一个由 CSDN公司开发的 InsCode AI大模型 提供技术解读的iOS平台开源库。此移动开发UI库/组件分组密码填充Padding完全指南PKCS7、0x80 填充规则与不校验填充引发的 CTF 攻击分组密码填充Padding完全指南PKCS 7、0x80 填充规则与不校验填充引发的 CTF 攻击 本文以 CTF Wiki 中 填充方式 https:/文档网络安全教程上一篇深入解析 awesome-claude-code-subagents 的 game-developer 子代理构建高性能跨平台游戏系统的完整指南下一篇nakama 项目中的 go-tdigest面向流式聚合与分位数近似的 Go 数据结构的完整实践指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考