res-code: proof-of-concept port from Bubble Tea to Limoni #32
Labels
No labels
harness
proj-core-console
proj-core-demo
proj-core-edit
proj-core-init
proj-core-lib
proj-core-login
proj-core-res
proj-core-sh
proj-core-theme
proj-docs
proj-extra-calc
proj-extra-code
proj-extra-playbook
proj-extra-sheets
proj-harness
proj-os
residual
tier-0-trivial
tier-1-easy
tier-2-medium
tier-3-hard
tier-4-major
tier-5-epic
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
residual/.agent#32
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Proof-of-concept port of res-code from Bubble Tea + lipgloss to Limoni, following the res-edit PoC (residual/.agent#30, branch
limoni-res-edit).Scope
extra/internal/code(~3000 lines, 14 files): sidebar, tabbar, terminal pane, filepicker, statusbar, keys, mouse, theme, render.extra/cmd/res-code: thin main — swaptea.NewProgramforlimoni.Run.cell.Styleamber theme,limoni.KeyEventdispatch (Ctrl viak.Ctrl),Draw(f, ev)functions, uitest verification. Reuse them.core/lib/cmd/ui,core/lib/tui/overlay) are still bubbletea-based — res-code needs its own Limoni chrome (as res-edit did with its palette).extra/pins a published core pseudo-version, so the build is insulated fromlimoni-res-editbranch API changes.limoni-res-code.Acceptance
go build ./...,go vet ./...,go test ./...green inextra/.CGO_ENABLED=0static binary builds.Out of scope
PoC complete —
limoni-res-codepushedThe port is done and verified on branch
limoni-res-code(not merged, no PR opened).Ported:
extra/internal/code/(~3000 lines, 14 files) +cmd/res-code/main.goto Limoni v0.12.0, following the res-edit PoC patterns. SingleDraw(f, ev)on*Model; business logic (tabs, terminal emulation, filepicker, sidebar, commands, status bar) unchanged. New Limoni-native palette (palette.go) and menu bar (menubar.go) since sharedlib/cmd/uiis still bubbletea-based.tabbar.gomerged intorender.go.Key points:
limoni.KeyEvent(Ctrl chords viak.Ctrl); F-keys vialimoni/core/driver(same API gap as #30).limoni.Wakeup(), drained in Draw (VT stays single-threaded).replace core => ../coreadded (matches existing config replace pattern) so res-code gets the ported Limoni Editor.limoni.WithoutMouse().Verified:
go build/go vet/go testgreen inextra/;CGO_ENABLED=0→ static ELF (~10MB); two new uitest tests (open/type/palette/quit, tab open/close) pass; headless dumps confirm menu/tab/editor/terminal/statusbar/filepicker render in amber.Finds:
msg.Y == 0(the menu-bar row) instead of row 1.