• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

charmbracelet / lipgloss / 19866231397
64%
master: 68%

Build:
Build:
LAST BUILD BRANCH: clipperhouse/maxrune-performance
DEFAULT BRANCH: master
Ran 02 Dec 2025 04:41PM UTC
Jobs 1
Files 32
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

02 Dec 2025 04:41PM UTC coverage: 63.205% (-0.8%) from 63.98%
19866231397

push

github

web-flow
refactor: new Canvas, Compositor, and Layer API (#591)

* refactor: new Canvas and Layer API

This change redefines what a Canvas and Layer are within the lipgloss
package. The Canvas is now a simple screen buffer that can compose
layers and drawable types.

The layer implementation is now responsible for holding metadata about
its position and z-index, as well as managing child layers. This
separation of concerns simplifies the Canvas and makes it more flexible
for composing various drawable types.

The id is now mandatory when creating a Layer, ensuring each layer can
be uniquely identified.

* chore(examples): update canvas and layout examples to use Compose

* refactor(layer): make positioning relative and recursive

Layer x, y, z coordinates are now relative to parent instead of absolute.
Positions are calculated dynamically during draw/hit/bounds operations
without mutating children. This provides cleaner hierarchy semantics and
prevents unintended state changes when repositioning layers.

- Add absolutePosition() to calculate absolute coords on-demand
- Add drawWithOffset() for recursive drawing with parent context
- Add hitWithOffset() for recursive hit testing with proper z-sorting
- Add boundsWithOffset() for recursive bounds calculation
- Simplify X(), Y(), Z() setters to only update own coordinates
- Simplify AddLayers() to not mutate children
- Make GetLayer() fully recursive to search entire tree

💘 Generated with Crush

Assisted-by: Claude Sonnet 4.5 via Crush <crush@charm.land>

* fix(canvas): trim trailing spaces in Rendered output

* fix(examples): limit canvas width to physical width

* feat(layer): implement global z-index ordering

All layers are now drawn in global z-index order regardless of hierarchy
depth. Previously, parents always drew before children, making z-ordering
only meaningful among siblings. Now a deeply nested child with z=100 will
correctly draw on top of a top-level layer with z=50.

- Add flatLayer type to hold... (continued)

0 of 220 new or added lines in 2 files covered. (0.0%)

12 existing lines in 1 file now uncovered.

2556 of 4044 relevant lines covered (63.2%)

455.49 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
33
0.0
0.0% canvas.go
187
0.0
layer.go

Uncovered Existing Lines

Lines Coverage ∆ File
12
0.0
0.0% canvas.go
Jobs
ID Job ID Ran Files Coverage
1 19866231397.1 02 Dec 2025 04:41PM UTC 32
63.2
GitHub Action Run
Source Files on build 19866231397
  • Tree
  • List 32
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • ad876c41 on github
  • Prev Build on v2-exp (#19677686932)
  • Next Build on v2-exp (#19969287037)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc