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:
+18
-11
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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=
|
||||
|
||||
Reference in New Issue
Block a user