switch to unixshells/vt-go, ungate framebuffer for WASM

- Replace charmbracelet/x/vt with unixshells/vt-go (IRM support)
- Remove ultraviolet import from framebuffer.go (use local attr constants)
- Framebuffer compiles for all platforms including js/wasm
- WASM build requires -tags osusergo for os/user compatibility
This commit is contained in:
realrasengan
2026-03-30 20:35:55 -07:00
parent b71a9c5824
commit 4a40090a5f
4 changed files with 23 additions and 16 deletions
+18 -11
View File
@@ -1,5 +1,3 @@
//go:build !js
package mosh
import (
@@ -7,9 +5,18 @@ import (
"strconv"
"unicode/utf8"
uv "github.com/charmbracelet/ultraviolet"
"github.com/charmbracelet/x/ansi"
"github.com/charmbracelet/x/vt"
"github.com/unixshells/vt-go"
)
// Cell attribute bitmasks (matching charmbracelet/ultraviolet values).
const (
attrBold = 1 << 0
attrFaint = 1 << 1
attrItalic = 1 << 2
attrBlink = 1 << 3
attrReverse = 1 << 4
attrStrikethrough = 1 << 5
)
// Framebuffer represents a terminal screen state for mosh SSP.
@@ -403,13 +410,13 @@ func SnapshotEmulator(emu *vt.Emulator, cursorVisible bool) *Framebuffer {
}
// Attributes.
cell.Attr.Bold = c.Style.Attrs&uv.AttrBold != 0
cell.Attr.Dim = c.Style.Attrs&uv.AttrFaint != 0
cell.Attr.Italic = c.Style.Attrs&uv.AttrItalic != 0
cell.Attr.Blink = c.Style.Attrs&uv.AttrBlink != 0
cell.Attr.Reverse = c.Style.Attrs&uv.AttrReverse != 0
cell.Attr.Strike = c.Style.Attrs&uv.AttrStrikethrough != 0
cell.Attr.Under = c.Style.Underline != uv.UnderlineNone
cell.Attr.Bold = c.Style.Attrs&attrBold != 0
cell.Attr.Dim = c.Style.Attrs&attrFaint != 0
cell.Attr.Italic = c.Style.Attrs&attrItalic != 0
cell.Attr.Blink = c.Style.Attrs&attrBlink != 0
cell.Attr.Reverse = c.Style.Attrs&attrReverse != 0
cell.Attr.Strike = c.Style.Attrs&attrStrikethrough != 0
cell.Attr.Under = c.Style.Underline != ansi.UnderlineNone
cell.Attr.FG = convertColor(c.Style.Fg)
cell.Attr.BG = convertColor(c.Style.Bg)
+2 -2
View File
@@ -3,16 +3,16 @@ module github.com/unixshells/mosh-go
go 1.26.0
require (
github.com/charmbracelet/ultraviolet v0.0.0-20260303162955-0b88c25f3fff
github.com/charmbracelet/x/ansi v0.11.6
github.com/charmbracelet/x/vt v0.0.0-20260305213658-fe36e8c10185
github.com/creack/pty v1.1.24
github.com/unixshells/vt-go v0.1.0
golang.org/x/crypto v0.49.0
golang.org/x/term v0.41.0
)
require (
github.com/charmbracelet/colorprofile v0.4.2 // indirect
github.com/charmbracelet/ultraviolet v0.0.0-20260303162955-0b88c25f3fff // indirect
github.com/charmbracelet/x/exp/ordered v0.1.0 // indirect
github.com/charmbracelet/x/term v0.2.2 // indirect
github.com/charmbracelet/x/termios v0.1.1 // indirect
+2 -2
View File
@@ -10,8 +10,6 @@ github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSg
github.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI=
github.com/charmbracelet/x/termios v0.1.1 h1:o3Q2bT8eqzGnGPOYheoYS8eEleT5ZVNYNy8JawjaNZY=
github.com/charmbracelet/x/termios v0.1.1/go.mod h1:rB7fnv1TgOPOyyKRJ9o+AsTU/vK5WHJ2ivHeut/Pcwo=
github.com/charmbracelet/x/vt v0.0.0-20260305213658-fe36e8c10185 h1:KYS9lWBROkdkuyc0bdQuS8C86Me3OAgjUAKcB4zArlg=
github.com/charmbracelet/x/vt v0.0.0-20260305213658-fe36e8c10185/go.mod h1:2djWW5EeP5QlpztEYYbbyyzUyyxVD71mWVQguNISHcM=
github.com/charmbracelet/x/windows v0.2.2 h1:IofanmuvaxnKHuV04sC0eBy/smG6kIKrWG2/jYn2GuM=
github.com/charmbracelet/x/windows v0.2.2/go.mod h1:/8XtdKZzedat74NQFn0NGlGL4soHB0YQZrETF96h75k=
github.com/clipperhouse/displaywidth v0.9.0 h1:Qb4KOhYwRiN3viMv1v/3cTBlz3AcAZX3+y9OLhMtAtA=
@@ -30,6 +28,8 @@ github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELU
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/unixshells/vt-go v0.1.0 h1:HWILcExV8MHc6o2YqIRMIM/KrjH31kPzZrlvLS9BG6Y=
github.com/unixshells/vt-go v0.1.0/go.mod h1:dZpOXxVyO7LG1uxkVMixX7HwUf2ZbUkEKhtHHJTTIBI=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
+1 -1
View File
@@ -15,7 +15,7 @@ import (
"sync/atomic"
"time"
"github.com/charmbracelet/x/vt"
"github.com/unixshells/vt-go"
"github.com/creack/pty"
)