Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
679 commits
Select commit Hold shift + click to select a range
855181e
fix: improve terminal agent input contrast
feigeCode Jul 4, 2026
fe16445
fix: keep user messages right aligned
feigeCode Jul 4, 2026
8bc7486
feat(ui): 添加彩色图标并更新面板图标引用
feigeCode Jul 4, 2026
daa283e
feat(db): 增加数据库Schema过滤与默认Schema配置功能
feigeCode Jul 4, 2026
049fd52
refactor(db_view): 缓存并重用预览字体提升性能
feigeCode Jul 4, 2026
d41d9e0
feat(ui): 添加彩色图标并更新面板图标引用
feigeCode Jul 4, 2026
7b30a85
Implement connection import center
feigeCode Jul 4, 2026
f88678d
Merge branch 'feature/connection-import-center' into gpui-component-m…
feigeCode Jul 4, 2026
56ebddf
refactor(font-cache): 缓存字体和驱动注册表以提升性能
feigeCode Jul 4, 2026
6701da9
refactor(agent): 将默认工具执行模式更改为手动确认
feigeCode Jul 4, 2026
956cb2f
chore(main): remove unused driver registry wrappers
feigeCode Jul 4, 2026
0a61bc1
Fix connection import center follow-ups
feigeCode Jul 4, 2026
4ad0532
fix: track workspace personal sync state
feigeCode Jul 4, 2026
8d27cba
feat(terminal_view): 新增侧边栏 Rich Input 面板功能
feigeCode Jul 4, 2026
a059a7e
feat(connection-import): 支持 MongoDB 和 Redis 连接的导入编辑功能
feigeCode Jul 4, 2026
ab431b5
feat(connection-import): 支持 MongoDB 和 Redis 连接的导入编辑功能
feigeCode Jul 4, 2026
3971ee2
feat(agent_runtime): 实现上下文压缩以优化历史消息管理
feigeCode Jul 4, 2026
b71cdd0
refactor(remote_file_editor): 移除 ui feature 特性及相关依赖
feigeCode Jul 4, 2026
0a116c9
refactor(main): 优化连接窗口标题显示逻辑
feigeCode Jul 4, 2026
06ee66f
refactor(highlighter): 优化语言扩展注册及按需加载机制
feigeCode Jul 4, 2026
25062a4
refactor(connections): 合并连接创建与更新为 save 工具
feigeCode Jul 4, 2026
3160e99
docs: design agent resource catalog scope
feigeCode Jul 4, 2026
5b1b76a
docs: add resource UI constraints
feigeCode Jul 4, 2026
30d0c7b
docs: plan agent resource catalog scope
feigeCode Jul 4, 2026
6575ac7
feat: add agent resource catalog scope types
feigeCode Jul 4, 2026
9ebdd42
feat: build agent catalog and scope from connections
feigeCode Jul 4, 2026
2f464f8
feat: wire agent catalog scope through chat views
feigeCode Jul 4, 2026
05da8be
fix: require explicit target without scope default
feigeCode Jul 4, 2026
8e0e97a
feat: add plugin-backed database user management
feigeCode Jul 4, 2026
2aa5b77
feat: streamline agent and MCP tool exposure
feigeCode Jul 4, 2026
eaa10a4
Merge branch 'db-users-plugin' into gpui-component-main-sync
feigeCode Jul 4, 2026
297a07a
feat: improve agent resource pool UI
feigeCode Jul 4, 2026
12c30ab
feat: add language bundle extension kind
feigeCode Jul 4, 2026
fd705a7
fix: keep agent mention completions visible
feigeCode Jul 4, 2026
71ce596
feat: detect language bundle packages
feigeCode Jul 4, 2026
8dbf71f
chore: verify agent resource catalog scope
feigeCode Jul 4, 2026
3c3a296
feat: install language bundle packages
feigeCode Jul 4, 2026
7e757f0
test: verify language bundle view mapping
feigeCode Jul 4, 2026
09cefae
fix: make agent resource details readable
feigeCode Jul 4, 2026
3ca44af
Merge branch 'feature/tree-sitter-language-bundle-host' into gpui-com…
feigeCode Jul 4, 2026
d6f154a
feat: add terminal command history panel
feigeCode Jul 4, 2026
b039222
fix: refresh ai resource catalog on connection changes
feigeCode Jul 4, 2026
27c49d3
Merge branch 'feature/local-terminal-history-suggestions' into gpui-c…
feigeCode Jul 4, 2026
75497f5
fix: improve ai resource mention usability
feigeCode Jul 4, 2026
8b44866
fix: use color icon for terminal history panel
feigeCode Jul 4, 2026
0565935
fix: complete database user management toolbar
feigeCode Jul 5, 2026
35eb120
fix: strip bash history timestamp from terminal commands
feigeCode Jul 5, 2026
609f848
feat: finalize database compare production sync
feigeCode Jul 5, 2026
405bdc9
Merge branch 'codex/db-compare-production' into gpui-component-main-sync
feigeCode Jul 5, 2026
8db451e
fix: normalize recorded terminal command prefixes
feigeCode Jul 5, 2026
00df334
fix: clean persisted terminal history display
feigeCode Jul 5, 2026
ee3986a
fix: refresh and manage terminal command history
feigeCode Jul 5, 2026
3a42f12
fix: install remote shell integration via rc files
feigeCode Jul 5, 2026
39d9fec
Merge commit '3a42f12' into gpui-component-main-sync
feigeCode Jul 5, 2026
6e192ad
fix: stabilize database compare sync
feigeCode Jul 5, 2026
d9aa6bd
feat: expose remote shell integration uninstall
feigeCode Jul 5, 2026
383cbeb
Add HTML code block webview previews
feigeCode Jul 5, 2026
73bc13c
Merge branch 'codex/chat-html-webview' into gpui-component-main-sync
feigeCode Jul 5, 2026
07ebe6a
feat(terminal): broadcast ssh input across windows
feigeCode Jul 5, 2026
95f3741
fix: stabilize multi-table data sync
feigeCode Jul 5, 2026
54d71b1
refactor(terminal): split terminal view helpers
feigeCode Jul 5, 2026
cc2bc61
Fix HTML preview webview lifecycle
feigeCode Jul 5, 2026
4fb6f4c
fix(terminal): render vim cursorline underlines (#94)
feigeCode Jul 5, 2026
b4ae7a7
fix(home): hide team keys outside onetcloud teams
feigeCode Jul 5, 2026
54617d9
Fix HTML preview browser workflow
feigeCode Jul 5, 2026
d49ff4c
fix(db_view): stabilize compare target loading
feigeCode Jul 5, 2026
2ee3c07
Render inline HTML preview content
feigeCode Jul 5, 2026
7154ec1
feat(agent): load skills through tools
feigeCode Jul 5, 2026
5f57540
fix: improve acp chat rendering
feigeCode Jul 5, 2026
7f66c1e
fix(main): 调整窗口初始大小和屏幕适配比例
feigeCode Jul 5, 2026
0437832
feat:调整侧边栏顺序
feigeCode Jul 5, 2026
773c31b
feat(core): 添加团队管理功能入口并实现功能开关控制
feigeCode Jul 5, 2026
1b21e0d
refactor(ai_chat_view): 优化图标函数及移除未使用代码
feigeCode Jul 5, 2026
7101bcf
fix(core): 修复 StartupDefaultPage 默认值标注位置
feigeCode Jul 5, 2026
cfb09ef
Fix HTML code block card preview
feigeCode Jul 5, 2026
6fd644e
fix(ui): notify select programmatic selection
feigeCode Jul 5, 2026
227a3c9
feat(ui): 为输入组件添加本地主题样式支持
feigeCode Jul 5, 2026
819219f
feat(html_code_block): 使用弹窗替代内联HTML预览
feigeCode Jul 5, 2026
332d29e
feat(ai_chat_view): 添加多语言支持并国际化HTML预览文本
feigeCode Jul 5, 2026
02b6b81
feat(shell): 优化 zsh shell 集成与环境变量管理
feigeCode Jul 5, 2026
d677868
feat(settings): 添加API密钥输入框的掩码切换功能
feigeCode Jul 5, 2026
60a7560
refactor(db_view): 改进数据库和模式加载逻辑的异步顺序控制
feigeCode Jul 5, 2026
9a29ff0
refactor(connection): 优化布局和样式以提升窗口兼容性
feigeCode Jul 5, 2026
1ec25a0
style(ui): 优化比较窗口和选择组件的布局适配
feigeCode Jul 5, 2026
4d291e0
feat(home_tab): 增加从其他应用导入功能并调整侧边栏宽度
feigeCode Jul 5, 2026
b6b8a26
chore(main): bump version to 0.8.0
feigeCode Jul 5, 2026
08b79c3
feat:readme调整,图片更新
feigeCode Jul 5, 2026
af39a00
feat:readme调整,图片更新
feigeCode Jul 5, 2026
5629140
feat:readme调整,图片更新
feigeCode Jul 5, 2026
9ad9311
test(home): 扩展连接导入草稿的测试用例
feigeCode Jul 5, 2026
af0ba62
fix(terminal): 修正 macOS 本地终端环境变量设置
feigeCode Jul 5, 2026
d5b2155
style(imports): 优化比较窗口模块的导入顺序和格式
feigeCode Jul 5, 2026
d7a5c14
fix(db-postgresql): 支持表和列的注释元数据读取
feigeCode Jul 5, 2026
b0f18b3
fix(terminal): show cancel in local close confirmation
feigeCode Jul 5, 2026
4988c18
fix(terminal): set UTF-8 locale for local terminal (#84)
feigeCode Jul 6, 2026
445a43b
feat(home): add local terminal shortcut
feigeCode Jul 6, 2026
8ee61fa
fix(terminal): improve local path detection
feigeCode Jul 6, 2026
40791c5
fix(sftp): support remote image preview and paste upload (#64)
feigeCode Jul 6, 2026
fe1a152
feat(mongodb): support SSH tunnel connections (#95)
feigeCode Jul 6, 2026
d9b2bf6
feat: support non-sql external driver table data
feigeCode Jul 6, 2026
091a463
fix(sftp): share remote image preview
feigeCode Jul 6, 2026
e38ecc7
fix(sftp): fit remote image preview content
feigeCode Jul 6, 2026
2a763f9
feat: support paste upload in remote file managers
feigeCode Jul 6, 2026
1932809
fix: preserve terminal image paste defaults
feigeCode Jul 6, 2026
6ff9900
fix: restore new connection list scrolling
feigeCode Jul 6, 2026
7a93c67
Merge branch 'feature/elasticsearch-non-sql-host' into dev
feigeCode Jul 6, 2026
ffb46f6
fix: improve settings persistence and search
feigeCode Jul 6, 2026
5210cbf
fix: gate external driver views support
feigeCode Jul 6, 2026
e5cd4c4
fix: improve terminal and settings behavior
feigeCode Jul 6, 2026
81b8b4f
fix: correct select dropdown theming
feigeCode Jul 6, 2026
ecbead9
fix: handle optional external driver indexes
feigeCode Jul 6, 2026
aa865d6
fix: add move to main split action
feigeCode Jul 6, 2026
e48aba6
refactor(db): 移除遗留查询扩展相关字段及逻辑
feigeCode Jul 6, 2026
b394c58
style(terminal): 优化侧边栏工具图标
feigeCode Jul 6, 2026
1f29202
chore(main): bump version to 0.8.1
feigeCode Jul 6, 2026
eb5590f
fix(ai): handle anthropic tool argument deltas
feigeCode Jul 6, 2026
69b62d0
style(connection_import_window): 调整导入窗口高度
feigeCode Jul 6, 2026
3624528
fix(import): move import actions into preview panel
feigeCode Jul 6, 2026
54b1e30
chore(ci): 清理发布工作流配置
feigeCode Jul 6, 2026
3ed29f0
fix(test): update workspace test fixtures
feigeCode Jul 6, 2026
e406afe
ci: add linux installer release artifacts
feigeCode Jul 6, 2026
0131b18
feat: add tab switcher dialog
feigeCode Jul 7, 2026
44069f2
feat: update open connection dialog
feigeCode Jul 7, 2026
ea3f133
fix: use color icons in open connection dialog
feigeCode Jul 7, 2026
a921a5e
fix: show database type icons in open dialog
feigeCode Jul 7, 2026
d797f95
fix: load PostgreSQL table comments (#93)
feigeCode Jul 7, 2026
610d891
Revert "fix: load PostgreSQL table comments (#93)"
feigeCode Jul 7, 2026
4f5553b
feat(window): 实现窗口置顶状态切换及通知功能
feigeCode Jul 7, 2026
04d20c8
fix: use ipc driver icons in open dialog
feigeCode Jul 7, 2026
bdf2597
feat(terminal_view): 优化SSH连接错误显示和控件滚动功能
feigeCode Jul 7, 2026
8b2962f
fix(db): stream SQL dump data by page (#56)
feigeCode Jul 7, 2026
26fbd55
feat: support synced ssh private key content
feigeCode Jul 7, 2026
c6f1fa6
fix: default unnamed connections to target address
feigeCode Jul 7, 2026
b37e92e
refactor(db): 删除未使用的测试辅助比较函数
feigeCode Jul 7, 2026
41830a4
refactor: move terminal tools into internal dock
feigeCode Jul 7, 2026
94c408d
Merge branch 'terminal-internal-tool-dock' into dev
feigeCode Jul 7, 2026
42e7e0f
feat(input): 实现选择时自动滚动以保证光标可见
feigeCode Jul 7, 2026
e4a853c
Fix dialog footer callback ordering
feigeCode Jul 7, 2026
1f23a76
fix(terminal_view): 修复工具面板尺寸固定问题并添加相关测试
feigeCode Jul 7, 2026
0d73946
chore(main): bump version to 0.8.3
feigeCode Jul 7, 2026
efd2dfb
ci: install wasm-tools for tests
feigeCode Jul 7, 2026
cdb99b9
docs: design app quit confirmation
feigeCode Jul 7, 2026
c975264
fix(sql_editor): 修正游标位置时获取正确的SQL语句
feigeCode Jul 7, 2026
b8895dd
feat: confirm before app quit
feigeCode Jul 7, 2026
49dd455
Merge branch 'app-quit-confirm' into dev
feigeCode Jul 7, 2026
f8024eb
feat(import): gate manual file import by plugin manifest
feigeCode Jul 7, 2026
c7be32e
chore(main): bump version to 0.8.4
feigeCode Jul 7, 2026
828e7d5
fix: preserve duplicated terminal cwd
feigeCode Jul 8, 2026
aea90b6
fix: preserve table designer comments in ddl
feigeCode Jul 8, 2026
819deda
feat: make schema sync column order optional
feigeCode Jul 8, 2026
3a146af
refactor: remove raw schema sync plan entry
feigeCode Jul 8, 2026
fd0b64e
fix: handle context menu on mouse release
feigeCode Jul 8, 2026
d6a0368
Revert "fix: handle context menu on mouse release"
feigeCode Jul 8, 2026
e33acb2
fix: refresh acp agents from switcher
feigeCode Jul 9, 2026
979e7c5
feat: improve terminal path prompts
feigeCode Jul 9, 2026
b232bb5
refactor(file-list): 优化文件名显示与列表行样式
feigeCode Jul 9, 2026
f5f6268
feat: add shift selection to file views
feigeCode Jul 9, 2026
d0823b9
feat: unify terminal sidebar panel header
feigeCode Jul 9, 2026
5000c67
Merge branch 'feat/terminal-sidebar-header' into dev
feigeCode Jul 9, 2026
2710984
fix: avoid duplicate file manager header
feigeCode Jul 9, 2026
68d3c0d
fix: prevent squeezed AI sidebar messages
feigeCode Jul 9, 2026
b5ba16e
fix: resolve terminal paste and tab shortcuts (#102)
feigeCode Jul 9, 2026
b0483fb
chore(main): bump version to 0.8.5
feigeCode Jul 9, 2026
31c63f3
fix: keep toolbar sql run from using current line
feigeCode Jul 9, 2026
d38cbec
fix: run sql statement at cursor
feigeCode Jul 9, 2026
7c3b575
test: stabilize zsh shell integration setup
feigeCode Jul 9, 2026
f203e2e
fix(db-view): refresh font cache for text diagnostics
feigeCode Jul 9, 2026
3f779d4
fix: merge sidebar tool headers (#102)
feigeCode Jul 9, 2026
d6246db
refactor(db_view): 优化字体缓存逻辑并增强文本诊断
feigeCode Jul 9, 2026
df9e792
refactor(terminal): 移除历史提示状态日志并优化类型引用
feigeCode Jul 9, 2026
d017827
fix(#101):更新gpui修复数据库乱码问题
feigeCode Jul 10, 2026
e0440a5
feat(remote-file-editor): 增加远程文件外部编辑器扩展支持
feigeCode Jul 10, 2026
ab87eb1
chore(main): bump version to 0.8.6
feigeCode Jul 10, 2026
c5899dc
docs: design terminal exec cancellation lifecycle
feigeCode Jul 10, 2026
7e8caa0
docs: plan terminal exec cancellation implementation
feigeCode Jul 10, 2026
203cf7b
fix(terminal): keep prompt and block cursor content visible
feigeCode Jul 10, 2026
3f7d498
feat(terminal): add exec readiness supervisor
feigeCode Jul 10, 2026
4dc1f26
refactor(main): remove unused connection drag code
feigeCode Jul 10, 2026
75cc2f9
feat(terminal): decouple visible exec lifecycle
feigeCode Jul 10, 2026
fa2e461
fix(agent): decouple turn cancellation from tool cleanup
feigeCode Jul 10, 2026
c3717ca
feat(remote-file-editor): support extension-provided external editors
feigeCode Jul 10, 2026
b2df19b
fix(ai-chat): finish cancelled turns immediately
feigeCode Jul 10, 2026
09b9a29
merge: support external editors for remote files
feigeCode Jul 10, 2026
4feb2bc
fix(db-view): run database transfers on Tokio runtime
feigeCode Jul 10, 2026
e82e0e6
docs: design bounded RDP frame pipeline
feigeCode Jul 10, 2026
99561f8
docs: plan bounded RDP frame pipeline
feigeCode Jul 10, 2026
932cd8a
docs: 设计 issue 97 连接代理与终端 profile
feigeCode Jul 10, 2026
703841b
fix(terminal): harden cancellation supervisor edges
feigeCode Jul 10, 2026
fc21013
perf(rdp): bound host frame mailbox
feigeCode Jul 10, 2026
0087054
feat(proxy): 添加通用本地代理隧道
feigeCode Jul 10, 2026
6fc2050
docs: record terminal lifecycle verification
feigeCode Jul 10, 2026
f7fd1a1
fix(rdp): release obsolete GPUI frame textures
feigeCode Jul 10, 2026
dca59c6
docs: normalize terminal plan formatting
feigeCode Jul 10, 2026
21a5580
refactor(rdp): split helper backend responsibilities
feigeCode Jul 10, 2026
142f991
feat: 支持数据库远程桌面代理与终端 profile
feigeCode Jul 10, 2026
335e0c9
chore(rdp): require bounded provider version
feigeCode Jul 10, 2026
3995855
fix(rdp): close view runtime only once
feigeCode Jul 10, 2026
84d42ab
Merge branch 'fix/rdp-frame-memory-performance' into dev
feigeCode Jul 10, 2026
dca3fb6
Merge branch 'feature/terminal-exec-cancellation-readiness' into dev
feigeCode Jul 11, 2026
5ef7df2
docs: design reliable ACP runtime
feigeCode Jul 11, 2026
7aa5708
docs: plan reliable ACP runtime
feigeCode Jul 11, 2026
3dd2724
feat(acp): extend agent manifest contract
feigeCode Jul 11, 2026
2c7235d
feat(acp): add safe runtime configuration
feigeCode Jul 11, 2026
9c78bd0
chore(vnc): require provider 0.1.2
feigeCode Jul 11, 2026
b6fa499
feat(acp): add structured errors
feigeCode Jul 11, 2026
bf0aec6
docs: design Notepad-- and Zed editor extensions
feigeCode Jul 11, 2026
9f4d787
feat(acp): define auth and turn semantics
feigeCode Jul 11, 2026
a8b29f7
docs: plan Notepad-- and Zed editor extensions
feigeCode Jul 11, 2026
c8de3b4
fix(agent): allow sequential tool approvals per turn
feigeCode Jul 11, 2026
5aff034
docs: design terminal control and confirm card layout
feigeCode Jul 11, 2026
24e8df5
docs: plan terminal control and confirm card layout
feigeCode Jul 11, 2026
56e739a
docs: design macOS editor launch and scoped reload
feigeCode Jul 11, 2026
937c74a
refactor(acp): harden connection lifecycle
feigeCode Jul 11, 2026
4bd87f2
docs: plan macOS editor launch and scoped reload
feigeCode Jul 11, 2026
f1cbd4b
fix(ai-chat): keep tool confirmation json full width
feigeCode Jul 11, 2026
f95b278
feat(terminal): add supervised foreground interrupt
feigeCode Jul 11, 2026
a6ef37c
feat(acp): expose connection and auth status
feigeCode Jul 11, 2026
7c3e0ee
feat(agent): expose terminal interrupt control
feigeCode Jul 11, 2026
2bceca9
fix(editor): use LaunchServices and scope extension reload
feigeCode Jul 11, 2026
e41db96
fix(acp): cover and repair protocol lifecycle
feigeCode Jul 11, 2026
0bef62c
test(acp): add installed agent smoke coverage
feigeCode Jul 11, 2026
64cc035
feat(agent): guide explicit terminal interrupts
feigeCode Jul 11, 2026
d4f8f0b
fix(acp): discard stale pending authentication
feigeCode Jul 11, 2026
8411360
style(acp): align with workspace rustfmt
feigeCode Jul 11, 2026
113f099
refactor(acp): reduce lifecycle result sizes
feigeCode Jul 11, 2026
5e1077e
test(acp): stabilize process exit coverage
feigeCode Jul 11, 2026
eb52db8
merge: harden ACP runtime reliability
feigeCode Jul 11, 2026
ba89431
feat(agent): auto-execute tools without approval
feigeCode Jul 11, 2026
00a6d38
docs: design Zed autosave and external auto upload
feigeCode Jul 11, 2026
4a58196
fix(acp): clarify active response state
feigeCode Jul 11, 2026
6330892
feat: announce migration to Navop
feigeCode Jul 11, 2026
c2e5248
docs: generalize external editor autosave design
feigeCode Jul 11, 2026
b84a9e1
docs: plan external editor autosave and auto upload
feigeCode Jul 11, 2026
e499924
feat(editor): poll and auto upload external changes
feigeCode Jul 11, 2026
e6e755a
docs: design remote mutation sidebar refresh
feigeCode Jul 11, 2026
a7eb3f7
fix(sftp): refresh sidebar after remote edits
feigeCode Jul 11, 2026
b4e1c19
merge: external editor auto upload and refresh
feigeCode Jul 12, 2026
c3f47ed
fix(ai): open connection sessions in background
feigeCode Jul 12, 2026
8b1c959
docs: design settings sidebar scroll alignment
feigeCode Jul 12, 2026
0409394
docs: correct settings list scroll API
feigeCode Jul 12, 2026
597201b
docs: plan settings sidebar scroll alignment
feigeCode Jul 12, 2026
3d0cc40
fix(settings): align sidebar navigation to group top
feigeCode Jul 12, 2026
8daf248
refactor(agent_view): 调整侧边栏控制按钮顺序和渲染位置
feigeCode Jul 12, 2026
abcb148
refactor(connection-form): centralize team form support
feigeCode Jul 12, 2026
066208f
chore(main): bump version to 0.8.7
feigeCode Jul 13, 2026
3cc2ac5
fix(update): keep archived release warning-free
feigeCode Jul 13, 2026
57c5923
docs: clarify project migration notice
feigeCode Jul 15, 2026
e04b56d
docs: highlight Navop migration on homepage
feigeCode Jul 15, 2026
dafe808
docs: fix broken star history chart
OctoBored Aug 18, 2026
fe0c851
Merge pull request #110 from OctoBored/fix/star-history-chart
feigeCode Aug 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 2 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,9 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy
- name: Install system dependencies
if: ${{ matrix.run_on != 'windows-latest' }}
run: script/bootstrap
- name: Machete
if: ${{ matrix.run_on == 'macos-latest' }}
uses: bnjbvr/[email protected]
- name: Setup | Cache Cargo
uses: actions/cache@v4
with:
Expand All @@ -45,10 +40,8 @@ jobs:
~/.cargo/git/db/
target/
key: test-cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}
- name: Lint
if: ${{ matrix.run_on == 'macos-latest' }}
run: |
cargo clippy --workspace --all-targets
- name: Install wasm-tools
run: cargo install wasm-tools --locked --version 1.251.0
- name: Test Linux
if: ${{ matrix.run_on == 'ubuntu-latest' }}
run: |
Expand Down
193 changes: 179 additions & 14 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ on:
tags:
- "v*"
workflow_dispatch:
inputs:
keep_build_cache:
description: "Restore and save Cargo build cache for faster release builds"
type: boolean
default: true

permissions:
contents: write
Expand Down Expand Up @@ -34,6 +39,10 @@ jobs:
os: ubuntu-latest
binary: onetcli
archive: onetcli-x86_64-unknown-linux-gnu.tar.gz
- target: aarch64-unknown-linux-gnu
os: ubuntu-24.04-arm
binary: onetcli
archive: onetcli-aarch64-unknown-linux-gnu.tar.gz
- target: x86_64-pc-windows-msvc
os: windows-latest
binary: onetcli.exe
Expand All @@ -53,9 +62,28 @@ jobs:
if: runner.os == 'macOS'
run: |
df -h
sudo rm -rf /usr/local/lib/node_modules
sudo rm -rf ~/.npm ~/.nvm ~/Library/Caches
sudo rm -rf /System/Library/Frameworks/Python.framework

remove_path() {
local path="$1"
if [ -e "$path" ]; then
sudo rm -rf "$path" || echo "::warning::Failed to remove $path"
fi
}

remove_directory_contents() {
local path="$1"
if [ -d "$path" ]; then
sudo find "$path" -mindepth 1 -maxdepth 1 -exec rm -rf {} + \
|| echo "::warning::Failed to remove some entries under $path"
fi
}

remove_path /usr/local/lib/node_modules
remove_path "$HOME/.npm"
remove_path "$HOME/.nvm"
remove_directory_contents "$HOME/Library/Caches"
remove_path /System/Library/Frameworks/Python.framework

df -h

- name: Install system dependencies (Linux)
Expand All @@ -73,15 +101,18 @@ jobs:
cmake --version

- name: Cache Cargo
if: ${{ github.event_name != 'workflow_dispatch' || inputs.keep_build_cache }}
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
key: build-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}
target/
key: release-cargo-${{ runner.os }}-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}-${{ github.run_id }}
restore-keys: |
build-${{ matrix.target }}-
release-cargo-${{ runner.os }}-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}-
release-cargo-${{ runner.os }}-${{ matrix.target }}-

- name: Set environment variables
shell: bash
Expand All @@ -94,6 +125,12 @@ jobs:
echo "ONETCLI_VERSION=0.0.0-dev.$(git rev-parse --short HEAD)" >> "$GITHUB_ENV"
fi

if [[ "${{ matrix.target }}" == "aarch64-unknown-linux-gnu" ]]; then
echo "CARGO_BUILD_JOBS=1" >> "$GITHUB_ENV"
echo "CARGO_PROFILE_RELEASE_LTO=false" >> "$GITHUB_ENV"
echo "CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16" >> "$GITHUB_ENV"
fi

- name: Verify secrets are set
shell: bash
env:
Expand All @@ -113,16 +150,19 @@ jobs:
env:
SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
SUPABASE_ANON_KEY: ${{ secrets.SUPABASE_ANON_KEY }}
ONETCLI_UPDATE_URL: ${{ secrets.ONETCLI_UPDATE_URL }}
ONETCLI_UPDATE_DOWNLOAD_URL: ${{ secrets.ONETCLI_UPDATE_DOWNLOAD_URL }}
ONETCLI_WECHAT_QR_URL: ${{ secrets.ONETCLI_WECHAT_QR_URL }}
ONETCLI_ALIPAY_QR_URL: ${{ secrets.ONETCLI_ALIPAY_QR_URL }}
ONETCLI_PAYPAL_QR_URL: ${{ secrets.ONETCLI_PAYPAL_QR_URL }}
run: cargo build --release -p main --target ${{ matrix.target }}
ONETCLI_PUBLIC_BASE_URL: ${{ vars.ONETCLI_PUBLIC_BASE_URL }}
ONETCLI_TEAM_MANAGEMENT_URL_TEMPLATE: ${{ vars.ONETCLI_TEAM_MANAGEMENT_URL_TEMPLATE }}
run: |
cargo --version
rustc --version
echo "CARGO_BUILD_JOBS=${CARGO_BUILD_JOBS:-}"
echo "CARGO_PROFILE_RELEASE_LTO=${CARGO_PROFILE_RELEASE_LTO:-}"
echo "CARGO_PROFILE_RELEASE_CODEGEN_UNITS=${CARGO_PROFILE_RELEASE_CODEGEN_UNITS:-}"
cargo build --release -p main --target ${{ matrix.target }}


- name: Clean build artifacts (macOS)
if: runner.os == 'macOS'
if: ${{ runner.os == 'macOS' && github.event_name == 'workflow_dispatch' && inputs.keep_build_cache == false }}
run: |
rm -rf target/debug
find target -name "incremental" -o -name "deps" -o -name "build" | xargs rm -rf || true
Expand Down Expand Up @@ -153,11 +193,99 @@ jobs:
cp resources/linux/onetcli-512.png package/usr/share/icons/hicolor/512x515/apps/onetcli.png
tar czf ${{ matrix.archive }} -C package .

- name: Install Linux packaging dependencies
if: matrix.target == 'x86_64-unknown-linux-gnu'
run: |
sudo apt-get update
sudo apt-get install -y rpm

- name: Package Linux installers (x86_64)
if: matrix.target == 'x86_64-unknown-linux-gnu'
shell: bash
run: |
set -euo pipefail

PACKAGE_VERSION="${ONETCLI_VERSION//-/.}"
DEB_NAME="onetcli_${PACKAGE_VERSION}_amd64.deb"
RPM_NAME="onetcli-${PACKAGE_VERSION}-1.x86_64.rpm"
APPIMAGE_NAME="onetcli_${PACKAGE_VERSION}_amd64.AppImage"

rm -rf package-deb rpmbuild OnetCli.AppDir linuxdeploy-x86_64.AppImage

mkdir -p package-deb/DEBIAN
cp -a package/. package-deb/
cat > package-deb/DEBIAN/control <<EOF
Package: onetcli
Version: ${PACKAGE_VERSION}
Section: utils
Priority: optional
Architecture: amd64
Maintainer: feigeCode <[email protected]>
Homepage: https://github.com/feigeCode/onetcli
Description: One Net Client - Database, SSH, Terminal, AI Tools
EOF
dpkg-deb --root-owner-group --build package-deb "${DEB_NAME}"

RPM_ROOT="${PWD}/rpmbuild"
mkdir -p "${RPM_ROOT}"/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
tar czf "${RPM_ROOT}/SOURCES/onetcli-${PACKAGE_VERSION}.tar.gz" -C package .
cat > "${RPM_ROOT}/SPECS/onetcli.spec" <<EOF
Name: onetcli
Version: ${PACKAGE_VERSION}
Release: 1%{?dist}
Summary: One Net Client - Database, SSH, Terminal, AI Tools
License: Apache-2.0
URL: https://github.com/feigeCode/onetcli
BuildArch: x86_64
Source0: %{name}-%{version}.tar.gz

%description
One Net Client - Database, SSH, Terminal, AI Tools.

%prep
mkdir -p %{_builddir}/%{name}-%{version}
tar -xzf %{SOURCE0} -C %{_builddir}/%{name}-%{version}

%build

%install
mkdir -p %{buildroot}
cp -a %{_builddir}/%{name}-%{version}/* %{buildroot}/

%files
/usr/bin/onetcli
/usr/share/applications/onetcli.desktop
/usr/share/icons/hicolor/128x128/apps/onetcli.png
/usr/share/icons/hicolor/256x256/apps/onetcli.png
/usr/share/icons/hicolor/512x515/apps/onetcli.png
EOF
rpmbuild --define "_topdir ${RPM_ROOT}" -bb "${RPM_ROOT}/SPECS/onetcli.spec"
generated_rpm="$(find "${RPM_ROOT}/RPMS" -name "onetcli-${PACKAGE_VERSION}-1*.x86_64.rpm" -print -quit)"
test -n "${generated_rpm}"
cp "${generated_rpm}" "${RPM_NAME}"

mkdir -p OnetCli.AppDir
cp -a package/. OnetCli.AppDir/
curl -L -o linuxdeploy-x86_64.AppImage \
https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage
VERSION="${PACKAGE_VERSION}" APPIMAGE_EXTRACT_AND_RUN=1 ./linuxdeploy-x86_64.AppImage \
--appdir OnetCli.AppDir \
--executable OnetCli.AppDir/usr/bin/onetcli \
--desktop-file resources/linux/onetcli.desktop \
--icon-file package/usr/share/icons/hicolor/512x515/apps/onetcli.png \
--output appimage
generated_appimage="$(find . -maxdepth 1 -name '*.AppImage' ! -name 'linuxdeploy-x86_64.AppImage' -print -quit)"
test -n "${generated_appimage}"
mv "${generated_appimage}" "${APPIMAGE_NAME}"

- name: Package (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Compress-Archive -Path "target/${{ matrix.target }}/release/${{ matrix.binary }}" -DestinationPath "${{ matrix.archive }}"
New-Item -ItemType Directory -Force package | Out-Null
Copy-Item "target/${{ matrix.target }}/release/${{ matrix.binary }}" "package/${{ matrix.binary }}"
Compress-Archive -Path "package/*" -DestinationPath "${{ matrix.archive }}"

- name: Upload artifact
uses: actions/upload-artifact@v4
Expand All @@ -172,6 +300,16 @@ jobs:
name: onetcli-${{ matrix.target }}.dmg
path: "*.dmg"

- name: Upload Linux installer artifacts
if: matrix.target == 'x86_64-unknown-linux-gnu'
uses: actions/upload-artifact@v4
with:
name: onetcli-linux-x86_64-installers
path: |
onetcli_*.deb
onetcli-*.rpm
onetcli_*.AppImage

release:
name: Create Release
needs: build
Expand All @@ -193,9 +331,33 @@ jobs:
- name: Generate checksums
run: |
cd artifacts
sha256sum onetcli-* > sha256sums.txt
shopt -s nullglob
release_files=(onetcli-* onetcli_*)
if [ "${#release_files[@]}" -eq 0 ]; then
echo "::error::No release artifacts found for checksum generation"
exit 1
fi
sha256sum "${release_files[@]}" > sha256sums.txt
cat sha256sums.txt

- name: Write release metadata
run: |
node <<'NODE'
const fs = require("fs");
const releaseTag = process.env.GITHUB_REF_NAME;
const version = releaseTag.replace(/^v/, "");
fs.writeFileSync(
"artifacts/release-metadata.json",
`${JSON.stringify({ release_tag: releaseTag, version }, null, 2)}\n`,
);
NODE

- name: Upload release metadata
uses: actions/upload-artifact@v4
with:
name: release-metadata
path: artifacts/release-metadata.json

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
Expand All @@ -205,4 +367,7 @@ jobs:
artifacts/onetcli-*.tar.gz
artifacts/onetcli-*.zip
artifacts/onetcli-*.dmg
artifacts/onetcli_*.deb
artifacts/onetcli-*.rpm
artifacts/onetcli_*.AppImage
artifacts/sha256sums.txt
Loading