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

Chart: an unread span between the fetched band and the live tail draws as a line

Open Beginner friendly
#120 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
86/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
csharp
Domain
frontend, testing

Research direction

Start with EnvelopeLine.ReplaceColumns and AppendColumn in SemiPlot/SemiPlot.UI/Chart/EnvelopeLine.cs, then follow TrendPenState.AppendRealtime and EnvelopePath.Build to see how appended samples are joined. Add the regression cases to EnvelopeLineTests: one should confirm a break across the unread span, and one should confirm follow mode inserts no gap. Done when both cases pass and the demo drag no longer draws lines across unread history.

Written by the indexing model from the issue text.

Description

bug

Symptom

A pen draws one straight segment across a span the chart never read. Seen on the demo stand (2026-10-08
recording): with follow off and the window hours in the past, each drag forward past the right edge of the
fetched band shows the plot full of horizontal lines for a frame or two, at the last values of the band, until
the next history read lands and replaces them. Near the live edge the same shape is a short diagonal for an
interpolated pen and a held step for a stepped one, which matches the ~40 s segment reported on 2026-09-30.

Cause

EnvelopeLine holds two pieces for a pen: the band the last history read returned and the live samples the
realtime poll keeps appending at the live edge. ReplaceColumns(columns, requestedEndX)
(SemiPlot/SemiPlot.UI/Chart/EnvelopeLine.cs:127) drops the live columns past the requested edge, but every
sample that arrives after that apply goes through AppendColumn (:149), which accepts any X past the last
column (TrendPenState.AppendRealtime, SemiPlot/SemiPlot.UI/Chart/TrendPenState.cs:77). Nothing marks the span
between the band's requested end and the first live column as unread, and EnvelopePath.Build joins the two
consecutive non-gap columns into one segment. In a 40 s window that segment, hours long, draws as a horizontal
line for both line styles.

The span is drawn only until a gesture leaves the band and the next read covers it, so it flickers on a stepwise
drag and can stay on screen when nothing re-reads the window.

Proposed fix

EnvelopeLine remembers the requested right edge of the last replace. The first column AppendColumn adds past
that edge, when the last column lies at or before it, is preceded by a gap column (NaN) at the edge, so the
unread span draws as a break until a read fills it. In follow mode the requested edge lies one window in the
future, so no live append crosses it and nothing changes there.

Acceptance

  • Unit test in EnvelopeLineTests: replace with a band whose requested end lies before the live samples, append
    a live column past it; EnvelopePath.Build starts a new segment at the live column and draws nothing across the
    span. Red on master.
  • Unit test: a follow-mode replace (requested end past the live edge) followed by appends inserts no gap.
  • Demo stand: follow off, window an hour back, drag forward in steps past the band edge; no horizontal lines
    appear before the read lands.
Dominant language
C#
Stars
0
Forks
0
Avg merge
3h 46m
Merged PRs (30d)
28

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

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 Semiteq/SemiPlot

All issues in Semiteq/SemiPlot

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.