Skip to content

hqterm desktop: tabs, split panes, layout restore, images + HD emoji (0.2.0) - #1

Merged
ralyodio merged 7 commits into
mainfrom
feat/desktop
Oct 6, 2026
Merged

ralyodio merged 7 commits into
mainfrom
feat/desktop

Conversation

@ralyodio

@ralyodio ralyodio commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Adds hqterm desktop: our own terminal window so HD OpenEmoji/OpenIcon images show everywhere (Konsole cannot show them).

  • desktop/: Electron + xterm.js (WebGL renderer, image addon with iTerm2 inline images + sixel, unicode11 emoji widths, web links, fit) on node-pty. OpenEmoji colour font bundled at build time.
  • Tabs + split panes: Ctrl+Shift+T/W tabs, Ctrl+Tab switch, Ctrl+Shift+D/E split right/down, Ctrl+Shift+Arrows or one click to focus, Ctrl+Shift+X close pane, draggable dividers, Ctrl+Shift+C/V, Ctrl+=/-/0 zoom, OSC 2 titles.
  • + menu: new shell, the hqterm session manager, or any host from ~/.ssh/config + hosts.json (hqsh <host> --session main), using the TUI's own host parser (bundled for Node).
  • Layout restore: tabs/splits with each remote pane's host+session saved to ~/.config/hqterm/desktop-layout.json; next launch reattaches each remote pane to its hqsh session, local panes reopen as fresh shells.
  • Panes run with TERM=xterm-256color COLORTERM=truecolor TERM_PROGRAM=hqterm HQTUI_IMAGES=iterm QC_HD=iterm.
  • CLI: hqterm desktop [--host H] [--session S] finds the app ($HQTERM_DESKTOP, ~/.local/opt/hqterm-desktop/, /Applications/hqterm.app) or prints the install line; a second launch opens a tab in the running window.
  • install.sh: --desktop / --no-desktop; plain install adds the AppImage + KDE/GNOME launcher entry on Linux when a display is present; --appimage-extract-and-run when FUSE is missing.
  • Release: builds hqterm-desktop-linux-{x86_64,aarch64}.AppImage (smoke-tested under Xvfb), adds them and hqterm-desktop.png to SHA256SUMS. Version 0.2.0.

🤖 Generated with Claude Code

…t restore, images and HD emoji (0.2.0)

- desktop/: Electron + xterm.js (webgl, image addon with iTerm2 inline images
  and sixel, unicode11, web links, fit) on node-pty; OpenEmoji colour font
  bundled; tabs, split panes with draggable dividers, OpenIcon tab bar, a +
  menu listing ~/.ssh/config hosts via the TUI's own host code
- layout (tabs, splits, each remote pane's host + session) saved to
  ~/.config/hqterm/desktop-layout.json and reattached on the next launch
- panes run with TERM_PROGRAM=hqterm HQTUI_IMAGES=iterm QC_HD=iterm
- hqterm desktop [--host H] [--session S] finds and launches the app
- install.sh --desktop / --no-desktop; default installs the AppImage plus a
  launcher entry on Linux with a display
- release builds hqterm-desktop-linux-{x86_64,aarch64}.AppImage into SHA256SUMS

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@socket-security

socket-security Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

@socket-security

socket-security Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Warning

Review the following alerts detected in dependencies.

According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.

Priority Alert  (click "▶" to expand/collapse) Action
Low priority
Deprecated by its maintainer: npm boolean

Reason: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

From: desktop/package-lock.json → npm/electron-builder@26.15.3 → npm/boolean@3.2.0

ℹ Read more on: This package | This alert | What is a deprecated package?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Research the state of the package and determine if there are non-deprecated versions that can be used, or if it should be replaced with a new, supported solution.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/boolean@3.2.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn
Low priority
Deprecated by its maintainer: npm glob

Reason: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me

From: desktop/package-lock.json → npm/electron-builder@26.15.3 → npm/glob@7.2.3

ℹ Read more on: This package | This alert | What is a deprecated package?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Research the state of the package and determine if there are non-deprecated versions that can be used, or if it should be replaced with a new, supported solution.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/glob@7.2.3. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn
Low priority
Deprecated by its maintainer: npm inflight

Reason: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.

From: desktop/package-lock.json → npm/electron-builder@26.15.3 → npm/inflight@1.0.6

ℹ Read more on: This package | This alert | What is a deprecated package?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Research the state of the package and determine if there are non-deprecated versions that can be used, or if it should be replaced with a new, supported solution.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/inflight@1.0.6. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn
Low priority
Deprecated by its maintainer: npm rimraf

Reason: Rimraf versions prior to v4 are no longer supported

From: desktop/package-lock.json → npm/electron-builder@26.15.3 → npm/rimraf@2.6.3

ℹ Read more on: This package | This alert | What is a deprecated package?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Research the state of the package and determine if there are non-deprecated versions that can be used, or if it should be replaced with a new, supported solution.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/rimraf@2.6.3. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn

View full report

ralyodio and others added 6 commits October 6, 2026 15:25
…er ssh)

hqsh forwards only TERM; sshd accepts LC_* by default and hqtui reads
LC_TERMINAL=iTerm2 as iTerm2 inline images.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… desktopName for KDE window association

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ithout a WM and logs the renderer console

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hqtui emoji art); smoke covers split + layout restore

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cks it

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ralyodio
ralyodio merged commit 4429748 into main Oct 6, 2026
4 checks passed
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