qinglong
|
feca81842b
|
fix: 回到 grid 布局 + 顶部留空行 — 5行: 空/标题/状态栏/主区/输入
grid-rows: 1 1 auto 1fr 3
- Row 1: 空白行
- Row 2: 标题栏 (Static, bold)
- Row 3: 状态栏 (auto 高度)
- Row 4: 主显示区 (1fr 填满剩余)
- Row 5: 输入栏 (固定3行)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 12:17:30 +08:00 |
|
qinglong
|
ae8586bc4a
|
fix: 用 Static 标题栏替代 Textual Header,确保始终显示
- 自定义 #title-bar (dock top, height 1, bold)
- 移除不可靠的 Header widget
- _setup_title 更新 title_bar 内容
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 12:00:36 +08:00 |
|
qinglong
|
18f9fcfcd3
|
fix: Header dock top 防止被 monitor-area 遮挡
|
2026-06-13 11:56:58 +08:00 |
|
qinglong
|
f7117825ae
|
fix: 日志区改用 dock 布局自动占满剩余空间
- monitor-area: dock top
- input-area: dock bottom, height 3
- main-area: 自动填充中间所有空白
- 去掉 grid 布局避免高度塌缩
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 11:54:27 +08:00 |
|
qinglong
|
7caf35281b
|
fix: 移除输入区外部边框
|
2026-06-13 11:52:00 +08:00 |
|
qinglong
|
74fd337a4c
|
fix: 输入框高度 5→3 + 主显示区 min-height 防塌缩
|
2026-06-13 11:49:57 +08:00 |
|
qinglong
|
d88438be3b
|
style: Header 与状态栏之间加一行间距 (padding-top: 1)
|
2026-06-13 11:46:23 +08:00 |
|
qinglong
|
9517afabd9
|
fix: 输入框置底 — 移除冲突的 height 属性,用 align center bottom
grid-rows 已设置行高 (auto auto 1fr 5),CSS height 会与 grid 冲突
改为 align: center bottom 让 Input 贴底
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 11:46:11 +08:00 |
|
qinglong
|
cbc2dd6b82
|
fix: TUI 布局调整 — 标题恢复 + 增加输入/状态栏高度
- 恢复 Header 标题栏
- 4 行布局: auto(Header) + auto(Monitor) + 1fr(Main) + 5(Input)
- 状态栏高度 2→3 行
- 输入栏高度 3→5 行
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 11:42:08 +08:00 |
|
qinglong
|
6382c8019d
|
refactor: TUI 布局重构 — 经典三行:状态栏 + 主显示区 + 固定底部输入
布局改为 grid-rows: auto 1fr 3:
- Row 1 (auto): 系统监控 + 插件状态 紧凑状态栏
- Row 2 (1fr): 合并日志/消息为单一可滚动主显示区
- Row 3 (3 lines): 固定高度输入栏,始终可见
同时:
- 移除 Header/Footer 节省空间
- show_message 路由到 log_display
- 清理未使用的 message_display 分离逻辑
- 移除未使用的 reactive/Horizontal imports
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 11:34:45 +08:00 |
|
qinglong
|
7518f4fd17
|
fix: textual.suggestion 兼容老版 Textual + 升级最低版本约束
- textual.suggestion 在 Textual < 2.0 中不存在
- 添加 try/except fallback 构造兼容 Suggestion 类
- requirements.txt: textual>=0.40.0 → >=0.47.0
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 11:15:09 +08:00 |
|
qinglong
|
37d1110f2b
|
feat(v0.4.3): TUI 命令 Tab 补全
CommandSuggester 实现 Textual Suggester API:
- 根据已注册命令列表提供前缀匹配补全
- 前缀无匹配时 fallback 到包含匹配
- 按长度排序,优先最短匹配
- 在 Input placeholder 提示 'Tab 补全'
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 11:06:31 +08:00 |
|
qinglong
|
2d0a37ba19
|
feat(v0.4): TUI 系统监控面板 + 插件状态面板
v0.4.1 系统监控面板:
- 复用共享 SystemInfoCollector (TUI + Web面板同一数据源)
- CPU/MEM 彩色进度条 + 网络实时速率
- 2 秒刷新,set_interval 驱动
v0.4.2 插件状态面板:
- 展示已加载插件的名称/版本/命令数
- 3 秒刷新,PluginService 延迟注入
SystemInfoCollector:
- 注册为共享服务 (sys_collector)
- Web panel status.py 优先从 service_manager 获取
- 零重复数据采集
TUI 布局升级: 3行 → 4行 (monitor + log + message + input)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 11:05:56 +08:00 |
|
AskaEth
|
7e682190ab
|
Fix: URL spacing for terminal clickability, DEBUG level from config
|
2026-06-10 19:51:07 +08:00 |
|
AskaEth
|
f5800cc6c3
|
Debug: fix headless mode, plugin compat, psutil optional, module imports
- headless: TUI skip now works correctly
- example_plugin: keyword args compat (plugin_name=, config=, bridge=)
- sysmon: psutil made optional (graceful degrade)
- tui_service: SysMonWidget optional
- All 22 modules import clean, 23 tests pass, integration verified
|
2026-06-10 19:26:41 +08:00 |
|
AskaEth
|
4b26b6f086
|
v0.4+v0.5: TUI dashboard, tab completion, systemd, Docker, process isolation
- New: services/sysmon_widget.py (CPU/MEM/DISK/NET real-time)
- Enhanced: tui_service.py (4-section layout, plugin status panel)
- Enhanced: command_service.py + tui (Tab completion)
- New: deploy/sensu.service (systemd)
- New: deploy/Dockerfile (Alpine, 4200+4240)
- New: services/process_isolated.py (multiprocess plugin isolation)
- Tests: 23/23 passing
|
2026-06-10 19:08:16 +08:00 |
|
AskaEth
|
e6875f0b4b
|
Initial commit: SenSu Alpha 0.2.0
- 13-service async plugin framework
- Textual TUI with CLI fallback
- Plugin hot-reload + permission system
- Web management panel (aiohttp)
- Bridge-based inter-module communication
- 10 regression tests
Fixes applied:
- PBKDF2-SHA256 auth (was plain SHA256)
- Auth bypass removed (was allow-all on fail)
- Bare excepts replaced with logged errors
- CatFramework/DreamSu -> SenSu naming unified
- ServiceManager: health checks + startup_order
- Env var credentials (SENSU_ADMIN_PASSWORD etc)
|
2026-06-10 12:28:05 +08:00 |
|