Skip to content

feat: files tree, panel chrome, and window behavior - #1220

Closed
liao666brant wants to merge 9 commits into
l0ng-ai:mainfrom
liao666brant:main
Closed

liao666brant wants to merge 9 commits into
l0ng-ai:mainfrom
liao666brant:main

Conversation

@liao666brant

@liao666brant liao666brant commented Oct 24, 2026 •

Copy link
Copy Markdown

Summary

Four batches on one branch:

  • Files tree — dot-entries and gitignored entries get switches of their own; every file and folder wears a Material icon; rows follow the explorer's 22px/8px metrics, and the root folds like any other folder.
  • Panel chrome — the sidebar divider, the title-bar search field, and the detail panel's divider can each be hidden.
  • Terminal and window — shell padding per side, a last-window close behavior, and three title-bar heights.
  • WSL — a full quit now stops the tty7 server left running inside each distribution.

Files tree

files_show_hidden and files_show_ignored default to on and are flipped from the panel's view menu and a row's context menu. The name and content searches follow the same pair, and .git is never listed either way.

The icons are the MIT Material Icon Theme v5.39.0, vendored as the npm package publishes it, with its LICENSE and a README carrying the re-sync notes. A row matches by exact name, then the longest dotted extension the pack knows, then the pack's default; folders match by name and carry both of their states; the pack's light-theme variants are used when the theme is light. files_show_icons is on by default and is set only in Settings → Appearance — the panel's own single-ink glyphs stay as the fallback.

The pack's drawings are coloured, so these rows go through the image path rather than the SVG mask path, which would flatten them to one ink.

Rows are 22px on an 8px step with a 16px disclosure chevron of the tree's own. The root row starts open, folds like any other folder, and stays folded across a refresh that still lists it.

Panel chrome

show_sidebar_divider, show_titlebar_search, and show_right_panel_divider all default to on.

  • With the sidebar divider off, the sidebar sits flush against the terminal. Dragging the edge still resizes the width.
  • With the title-bar search off, Search Everywhere still opens from its shortcut.
  • With the detail panel's divider off, the panel sits flush against the terminal. The strip of that line that ran through the title bar follows the same switch, so nothing is left standing above the tab row. The edge still resizes while the line is off.

Shell padding

shell_padding_left / right default to 8. shell_padding_top / bottom default to 4. Each side clamps to 0–64.

A saved shell_padding_x or shell_padding_y is copied onto both sides of that axis while those sides are still at the default, then dropped on the next save. An explicit non-default on either side of a pair blocks that copy.

The terminal surface, composer, and the absolute overlays (scrollbar, input bar, reverse search) use the same insets.

Last-window close

close_behavior is minimize (default), quit, or ask. This applies only to the last workspace window. confirm_close still governs tabs and panes only, and does not suppress this dialog. Menu and tray Quit still ask before stopping sessions.

  • Minimize leaves shells running. When the tray icon is actually up, the window retires to it. With no tray, only the interface quits; shells and the daemon stay up.
  • Quit stops the daemon, its shells, and the helpers this process spawned, without another question. Workspaces are marked closed first, so the next launch does not announce them as still running. tty7-updater and its subtree are left alone.
  • Ask offers keep-shells, quit completely, or cancel. Enter keeps the shells. Esc cancels. The keep-shells button minimizes to the tray when the icon is up, and otherwise quits only the interface.

A saved quit_on_close: true is read once as quit while close_behavior is still minimize, then dropped on the next save. An explicit ask or quit next to that old key wins.

Title bar height

title_bar_height is compact (40), standard (48, the default), or relaxed (56). standard is the bar the window has always drawn. Anything else is read as standard.

The centred Search Everywhere field is 24, 28, or 36 on those steps. Standard stays 28, so the default look does not change. The field's middle is the middle of the whole bar, including the 1px bottom border. The sidebar's own search field stays 28.

The control is in Appearance, after the interface font and before the cursor. Showing or hiding the title-bar search stays under General → Tabs.

On macOS the traffic lights move down with a taller bar and keep their horizontal inset.

WSL quit

A WSL workspace is presented as this computer, so Quit and Stop used to leave the server inside the distributions running. The stop now walks every distribution the app has a workspace on — open or closed, this computer's first, then theirs — and skips distributions WSL reports as not running, so quitting never wakes a VM just to find nothing there. The in-distro stop runs after the child-process cleanup, so its own helpers are not mistaken for ours.

Testing

  • cargo fmt --all -- --check
  • cargo check -p tty7 --bin tty7-app
  • cargo test -p tty7 --bin tty7-app file_icons — 6 passed
  • cargo test -p tty7 --bin tty7-app settings::tests — 44 passed
  • cargo test -p tty7 --bin tty7-app i18n — 8 passed
  • cargo test -p tty7 --bin tty7-app file_tree — 39 passed
  • cargo test -p tty7 --bin tty7-app assets — 7 passed
  • cargo test -p tty7-core panel_chrome_visibility — 1 passed
  • cargo test -p tty7-core --lib -- shell_padding_defaults
  • cargo test -p tty7-core --lib -- close_behavior_defaults
  • cargo test -p tty7-core --lib -- title_bar_height
  • cargo test -p tty7-core --lib -- descendants_are_deepest
  • cargo test -p tty7-core --lib -- a_full_quit_takes
  • cargo test -p tty7 --bin tty7-app -- covering_and_docked
  • cargo test -p tty7 --bin tty7-app -- close_retires_to_tray
  • cargo test -p tty7 --bin tty7-app -- every_key_is_translated_in_every_locale
  • cargo test -p tty7 --bin tty7-app -- a_taller_bar_lowers_the_lights
  • cargo test -p tty7 --bin tty7-app -- the_search_field_sits_on_the_middle_of_the_band

Checked in a running window: the file tree's icons and layout, the root fold, the chevrons, and both divider switches. The detail panel's title-bar residue was found there and fixed. The shell-padding steppers and the close-behavior dialog were not clicked through.

🤖 Generated with Claude Code

- 关掉分隔线后侧栏与终端贴齐,拖动边缘仍可调整宽度
- 关掉标题栏搜索后,随处搜索仍可用快捷键打开
- 默认左右 8、上下 4,范围 0–64
- 旧的 shell_padding_x/y 在四边仍为默认时折进两侧
- 完全退出会结束本程序启动的进程,并先把工作区标为已关闭
- 没有托盘时,最小化只退出界面,shell 继续运行
@mintlify

mintlify Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Preview approval required

This pull request comes from a fork, so Mintlify won't build a preview until someone with write access approves commit c717fa0.

Approve preview

- 紧凑 40/24、标准 48/28、宽松 56/36,标准档外观保持不变
- 搜索框中线对齐整条标题栏,含底部 1px 边框
- 设置放在外观里,位于界面字体和光标之间
@liao666brant liao666brant changed the title feat: sidebar chrome, per-edge shell padding, and last-window close feat: sidebar chrome, shell padding, close behavior, and title-bar height Oct 24, 2026
liao666brant and others added 4 commits October 24, 2026 18:37
- 头部视图菜单与行右键菜单给出两个独立开关,默认均显示并写回配置
- 名字与内容搜索跟随同一组开关,`.git` 任何情况下都不参与
- 修正嵌套忽略目录的判定,补齐跨宿主用例与面板文档

Co-Authored-By: Claude Code <noreply@anthropic.com>
- WSL 工作区视作本机,彻底退出时按已记录工作区逐发行版收停
- 只停 WSL 报告为运行中的发行版,不在退出时唤醒虚拟机
- 收停在清理子进程之后启动,避免辅助进程被当作自有进程杀掉

Co-Authored-By: Claude Code <noreply@anthropic.com>
- 内置 Material Icon Theme v5.39.0,按精确名与最长扩展名匹配,含浅色变体
- 文件树改为 22px 行高、8px 缩进、16px 独立 chevron,根目录可折叠
- 图标默认开启且仅设置页可关;补齐设置搜索、修改标记与重置

Co-Authored-By: Claude Code <noreply@anthropic.com>
- 新增 show_right_panel_divider,默认开启,关闭后边缘仍可拖动调整宽度
- 面板与标题栏补丁同步受开关控制,避免隐藏后残留一段竖线
- 设置页 General → Tabs 提供开关,并接入搜索、修改标记与重置

Co-Authored-By: Claude Code <noreply@anthropic.com>
@liao666brant liao666brant changed the title feat: sidebar chrome, shell padding, close behavior, and title-bar height feat: files tree, panel chrome, and window behavior Oct 24, 2026
- 退出后延时在 WSL 内定位 daemon 并调用 --stop
- 移除运行状态查询,避免退出流程受 WSL 文本解析影响
- 使用快速探测缩短 WSL 工作区首次连接耗时
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant