Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

💡 Border style variety (named styles + custom charset)

Open
#79 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
25/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Stale
Tech stack
c, typescript
Domain
cli, tooling

Research direction

Start by reviewing the feat/border-style comparison and the failing test at test/border-styles.test.ts. Then read render_border and the cornerRadius ternaries in src/clayterm.c, along with the wire-format paths in ops.ts and the PROP_BORDER decode. Done means the requested named styles or custom glyph mapping survives decoding and renders correctly in the test.

Written by the indexing model from the issue text.

Description

enhancement

Is your feature request related to a problem?

We can only draw one style of border. The renderer hardcodes every glyph—corners ┌┐└┘, horizontals , verticals . When cornerRadius > 0, the corners are swapped for ╭╮╰╯ .

Describe the solution you'd like

Callers should be able to pick from CSS border-style (to the extent possible), and potentially custom glyphs.

"double" would select ╔╗╚╝ / / ; a custom object maps each position (topLeft, top, topRight, right, bottomRight, bottom, bottomLeft, left) to a string drawn verbatim:

const border = {
  color: rgba(255, 255, 255),
  left: 1,
  right: 1,
  top: 1,
  bottom: 1,
  charset: "double", // or others
};

Describe alternatives you've considered

Drop our border and paint the box as raw text cells, which loses the layout engine's border reservation, junction handling, and per-side widths—reimplementing the border renderer in user space.

Additional context

Failing test case on nm/repro/border-styles (test · diff); charset is dropped today, so single-line glyphs render regardless. The change likely lives in render_border at src/clayterm.c:300 and the cornerRadius-keyed ternaries at src/clayterm.c:310-313, with the wire format threading a style/glyph field through ops.ts:256, ops.ts:138-149, and the PROP_BORDER decode at src/clayterm.c:530-537.

Implementation is in progress on feat/border-style and may be closed by its PR.

Dominant language
TypeScript
Stars
42
Forks
2
Avg merge
2d 5h
Merged PRs (30d)
12

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from bombshell-dev/tty

All issues in bombshell-dev/tty

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.