Commit Graph

  • af16549524 chore: 清理误提交的 base_config.yaml.bak qinglong 2026-06-13 17:46:33 +08:00
  • 5e06c17b52 fix: WebSocket 鉴权 — Cookie 优先 (支持 HttpOnly) qinglong 2026-06-13 17:45:58 +08:00
  • 557135c376 security: 配置文件模板化 — base_config.yaml 不再入库 qinglong 2026-06-13 15:20:14 +08:00
  • a2361cf452 fix: Sentinel WebUI — 合并为单页面(仪表盘+节点管理Tab) qinglong 2026-06-13 15:17:17 +08:00
  • 634496d975 security: Sentinel 路由鉴权 + API Key CSRF + SSRF 防护 qinglong 2026-06-13 15:13:56 +08:00
  • 5e74b0aad7 feat: 🛡️ Sentinel 集群监控插件 + API Key 系统 + 框架设置页 qinglong 2026-06-13 15:05:38 +08:00
  • 66ad51002c feat: WebUI 框架设置页面 + API Key 管理 UI qinglong 2026-06-13 14:28:59 +08:00
  • b92b1cc4fc security: API Key 权限范围 + 过期时间 + 用量追踪 qinglong 2026-06-13 14:27:07 +08:00
  • 9f6eb29820 feat: API Key 系统 — CRUD + panel_auth 集成 + 持久化 qinglong 2026-06-13 14:25:55 +08:00
  • e88d472c63 docs: API 认证与数据访问全流程文档 qinglong 2026-06-13 14:14:34 +08:00
  • 2da52e80d0 security: P3+ — 面板密码哈希 + 上传类型白名单 + CSRF Token qinglong 2026-06-13 14:07:38 +08:00
  • d835b66ca9 chore: gitignore data/ 目录 (运行时数据,不应入库) qinglong 2026-06-13 13:57:12 +08:00
  • ff02b2e16d security: P3 — 插件隔离默认开启 + SenSuDB 注册 + 审计日志 qinglong 2026-06-13 13:56:58 +08:00
  • c1d2767f52 fix: web 命令端点 execute_command → process_command (方法名错误) qinglong 2026-06-13 13:54:37 +08:00
  • fcac02d920 security: P2 生产深度加固 — 路径/鉴权/脱敏/校验/持久化/过期 qinglong 2026-06-13 13:50:51 +08:00
  • 2f9063d6d4 fix: 登录频率限制 bug — lock_until=0 导致计数被清零 qinglong 2026-06-13 13:46:29 +08:00
  • a75b9d0975 security: 前端 WebSocket 连接传递 panel_token 认证 qinglong 2026-06-13 13:38:38 +08:00
  • f7b4908322 security: 公网生产环境加固 — P0/P1 全部修复 qinglong 2026-06-13 13:37:14 +08:00
  • 2dc3c16787 fix: 系统监控改用 asyncio task 驱动,抗 Android 后台挂起 qinglong 2026-06-13 12:50:06 +08:00
  • 10d1a1fcb1 fix: 标题栏 背景改 + 行高加到2 增强可见性 qinglong 2026-06-13 12:18:50 +08:00
  • feca81842b fix: 回到 grid 布局 + 顶部留空行 — 5行: 空/标题/状态栏/主区/输入 qinglong 2026-06-13 12:17:30 +08:00
  • ae8586bc4a fix: 用 Static 标题栏替代 Textual Header,确保始终显示 qinglong 2026-06-13 12:00:36 +08:00
  • 18f9fcfcd3 fix: Header dock top 防止被 monitor-area 遮挡 qinglong 2026-06-13 11:56:58 +08:00
  • f7117825ae fix: 日志区改用 dock 布局自动占满剩余空间 qinglong 2026-06-13 11:54:27 +08:00
  • 7caf35281b fix: 移除输入区外部边框 qinglong 2026-06-13 11:52:00 +08:00
  • 74fd337a4c fix: 输入框高度 5→3 + 主显示区 min-height 防塌缩 qinglong 2026-06-13 11:49:57 +08:00
  • d88438be3b style: Header 与状态栏之间加一行间距 (padding-top: 1) qinglong 2026-06-13 11:46:23 +08:00
  • 9517afabd9 fix: 输入框置底 — 移除冲突的 height 属性,用 align center bottom qinglong 2026-06-13 11:46:11 +08:00
  • cbc2dd6b82 fix: TUI 布局调整 — 标题恢复 + 增加输入/状态栏高度 qinglong 2026-06-13 11:42:08 +08:00
  • 6382c8019d refactor: TUI 布局重构 — 经典三行:状态栏 + 主显示区 + 固定底部输入 qinglong 2026-06-13 11:34:45 +08:00
  • 7518f4fd17 fix: textual.suggestion 兼容老版 Textual + 升级最低版本约束 qinglong 2026-06-13 11:15:09 +08:00
  • 249ef5d91e docs: 更新 ROADMAP v0.7.0 — 反映全部已实现功能 qinglong 2026-06-13 11:09:15 +08:00
  • fca2aa5a05 feat(v0.5.2): 插件索引仓库 + install 命令 qinglong 2026-06-13 11:08:47 +08:00
  • 7ce495de2a feat(v0.5.1): 插件进程隔离 — 集成到 PluginService qinglong 2026-06-13 11:07:30 +08:00
  • 37d1110f2b feat(v0.4.3): TUI 命令 Tab 补全 qinglong 2026-06-13 11:06:31 +08:00
  • 2d0a37ba19 feat(v0.4): TUI 系统监控面板 + 插件状态面板 qinglong 2026-06-13 11:05:56 +08:00
  • f402af58d0 feat(v0.3.4): 插件命令 HTTP API 自动暴露 qinglong 2026-06-13 11:02:45 +08:00
  • d5388057d9 feat(v0.2.2): 插件热重载 — watchdog 监听 plugins/ 自动重载 qinglong 2026-06-13 11:01:00 +08:00
  • dcef1173f2 feat(v0.2.2): 调试服务器自启动 — InitService.start_auto_scripts() qinglong 2026-06-13 10:58:01 +08:00
  • 9de094ea54 fix: 移除遗留fmfuncs目录创建 + 清理init_service无用导入 + 文件管理器SVG图标 + 示例插件MD3改造 qinglong 2026-06-12 19:00:19 +08:00
  • 9b997d8bda fix: 文件选择器改为页内iframe弹窗 + 乱码编码修复 + API路径修复 qinglong 2026-06-11 21:51:42 +08:00
  • d275c78aed docs: 插件开发指南新增 pickPath() 便捷调用说明 qinglong 2026-06-11 21:13:25 +08:00
  • dc0bb79a7e feat: 全局文件选择器 + 项目管理路径选择按钮 qinglong 2026-06-11 21:11:50 +08:00
  • 99c3e3e853 feat: hash路由 + 插件页面内联加载 + 侧边栏插件面板展开项 qinglong 2026-06-11 20:56:39 +08:00
  • eeca8e37e1 docs: 更新README+架构文档 反映v0.6.0文件管理器/WS推送/WebUI重构 qinglong 2026-06-11 18:28:50 +08:00
  • fd715eac2b feat: 文件管理器 + Windows兼容 + SVG主题适配 (v0.6.0) qinglong 2026-06-11 18:23:32 +08:00
  • 4a989bf50f feat: WS实时推送、网速双线图、按钮MD3修复、页面加载器修复 (v0.6.0) qinglong 2026-06-11 16:23:31 +08:00
  • fd0a97fec5 Fix login redirect: add /SenSu/index.html route, restart picks up new app.js - /SenSu/index.html now serves login page (was 404 after cookie expiry) - Fresh restart with latest page loader + inline script execution - All routes verified: 200 OK qinglong 2026-06-11 14:47:37 +08:00
  • c07cea4ff7 Fix page loader: execute inline scripts, JS module loading optional - innerHTML strips script tags, now extract and eval them - External .js module: 404 = skip gracefully (no error) - Progress bar: completes regardless of JS module - Proxy/projects pages now render with CSS + inline JS executes qinglong 2026-06-11 14:43:24 +08:00
  • dd8a31e29a Fix: proxy API prefix, version from config, remove auth from framework/system endpoints - Proxy routes now use /SenSu/api/proxy (was missing prefix) - Projects routes use dynamic prefix - Version reads from config/framework/base_config.yaml - Framework/System APIs no longer require auth (public info) - Proxy init separated from route setup (avoids frozen router error) - Version updated to v0.6.0 qinglong 2026-06-11 14:37:28 +08:00
  • 6918ee6514 Fix headless mode: use sleep loop instead of CLI mode (prevent EOF exit) - Headless now keeps server alive with asyncio.sleep(1) loop - CLI mode only for non-headless fallback - Enables running SenSu as daemon/service qinglong 2026-06-11 13:02:56 +08:00
  • 885929f3ff Fix proxy/projects pages: error handling when API unavailable - proxy: .catch() shows 'service not ready' instead of stuck loading - projects: shows 'engine not ready' on API error - Both: show 'no items' placeholder instead of blank qinglong 2026-06-11 12:47:39 +08:00
  • a1dd401efc Fix theme toggle: move init to app.js, remove duplicate script - Theme initialized BEFORE page render (no flash) - toggleTheme() now in app.js global scope - Proxy page rewritten with btn-filled MD3 class qinglong 2026-06-11 12:46:33 +08:00
  • c4e2783120 WebUI: MD3 projects/proxy pages, sidebar links, CSS animations - Add projects + proxy nav items to sidebar - Rewrite projects.html with MD3 cards + tabs + mgmt-cards - Rewrite proxy.html with MD3 form + mgmt-cards - CSS: button ripple, card elevation, page fade, tab slide, input glow, nav dot, status pulse, log entry fade, shimmer, scrollbar, badge bounce, card hover mouse-glow (428 lines) qinglong 2026-06-11 12:12:03 +08:00
  • b37cbf076c WebUI: MD3 2026 redesign + light/dark theme toggle - Rewrite CSS with full MD3 color tokens + elevation + shape system - Add light theme with data-theme="light" - Theme toggle button in top bar (persists to localStorage) - 268 lines CSS, covers login/shell/dashboard/plugins/projects/proxy AskaEth 2026-06-11 11:53:32 +08:00
  • 7436f699fb Update docs: README + project structure for v0.6 AskaEth 2026-06-11 10:48:58 +08:00
  • 7dc87d9f3a Fix WebSocket log URL: extract base path instead of page path AskaEth 2026-06-10 21:29:43 +08:00
  • 4906b4dc2a Fix short-term issues: refactor main.py, test paths, sysmon optional psutil AskaEth 2026-06-10 21:18:59 +08:00
  • 3993cc41a9 Fix main.py imports (line-targeted, no try-block corruption) - Phases 1-3 all integrated - 28/28 tests passing - 7/7 modules import OK AskaEth 2026-06-10 20:56:01 +08:00
  • e52f7f3566 Phase 3: PluginWebMixin SDK + web plugin control panels - New: sdk/plugin_web.py (PluginWebMixin: web pages, API routes, SSE) - New: services/web_panel/routes/plugin_web.py (3 endpoints) - New: plugins/example_plugin/dashboard.html (counter + SSE demo) - Updated: example_plugin uses PluginWebMixin - Tests: 28/28 passing AskaEth 2026-06-10 20:54:11 +08:00
  • c680fea8e0 Phase 2: ProxyService reverse proxy (HTTP+WebSocket forwarding) - New: services/proxy_service.py (path->URL mapping) - New: services/web_panel/routes/proxy.py (3 REST endpoints) - New: static/web_panel/pages/proxy.html (WebUI) - Tests: 28/28 passing AskaEth 2026-06-10 20:47:17 +08:00
  • 8dbf628dd6 Phase 1: ProjectEngine + PyEnvManager + project management WebUI - New: services/project_engine.py (async subprocess manager) - New: services/pyenv_manager.py (Python version + venv + git clone) - New: services/web_panel/routes/projects.py (5 REST endpoints) - New: static/web_panel/pages/projects.html (WebUI) - Tests: 28/28 passing, API verified (GET /api/projects) - Docs: Phase1_Progress.md (local) AskaEth 2026-06-10 20:41:24 +08:00
  • 7e762b68fe Fix URL line wrapping: put URL on own line with leading space for terminal clickability AskaEth 2026-06-10 19:54:51 +08:00
  • 7e682190ab Fix: URL spacing for terminal clickability, DEBUG level from config AskaEth 2026-06-10 19:51:07 +08:00
  • 57009c7f43 Update version to v0.5.0 (config + TUI), clean DreamSu->SenSu in main.py AskaEth 2026-06-10 19:46:09 +08:00
  • b5d688700d Update docs: README + project structure for v0.5 AskaEth 2026-06-10 19:43:18 +08:00
  • 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 AskaEth 2026-06-10 19:26:41 +08:00
  • 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 AskaEth 2026-06-10 19:08:16 +08:00
  • d48ef65b35 v0.3: SQLite persistence + ProjectService + dependency resolution - New: services/sensu_db.py (SQLite, 5 tables) - New: services/project_service.py (project registry, port allocation, dep resolution) - Integrated into main.py (step 11.6) - Tests: 23/23 passing (15 original + 8 new) AskaEth 2026-06-10 18:59:25 +08:00
  • c73e569958 v0.2.2: headless mode, debug server auto-start, WS fix, watchdog hot-reload, example plugin - --headless flag (skip TUI for SSH/systemd) - InitService auto-starts cyrene_debug_server.py - Fixed log WS URL (home.html/api/logs/ws -> api/logs/ws) - PluginService watchdog hot-reload (plugins/ dir) - example_plugin: 2 commands (echo, plugin_status) - Tests: 15/15 passing AskaEth 2026-06-10 18:50:10 +08:00
  • 3270a84c4e Rename core -> sdk (plugin SDK, self-documenting) AskaEth 2026-06-10 18:19:05 +08:00
  • 2bc00f8207 Rename fmfuncs -> core (cleaner, semantic) AskaEth 2026-06-10 18:17:21 +08:00
  • 5e23778d90 Update docs: architecture + plugin guide for v0.2.1 enhancements AskaEth 2026-06-10 13:09:52 +08:00
  • 1cbe52174d Add plugin enhancements: PluginStatus, PluginError, subscribe_plugin, config validation - New: fmfuncs/plugin_status.py (9 states) - New: fmfuncs/plugin_error.py (6 exception classes) - Enhanced: bridges/plugin_bridge.py (subscribe_plugin) - Enhanced: bridges/plugin_network_bridge.py (setup_data_transfer, send_data) - Enhanced: services/plugin_service.py (config validation + status tracking) - Tests: 15/15 passing (10 original + 5 new) AskaEth 2026-06-10 13:02:33 +08:00
  • 79f7fb86fe Add TOC to plugin dev guide (28 entries) + Android compat fixes AskaEth 2026-06-10 12:51:18 +08:00
  • ef23957bc8 Fix license in README: MIT -> Apache 2.0 AskaEth 2026-06-10 12:30:19 +08:00
  • 1e2e2f7a27 Add Apache 2.0 License AskaEth 2026-06-10 12:29:31 +08:00
  • e6875f0b4b Initial commit: SenSu Alpha 0.2.0 AskaEth 2026-06-10 12:27:14 +08:00
  • 5a9d96dc1b Initial commit AskaEth 2026-06-10 12:23:04 +08:00