John Surles

John Surles

Computer Science Student · Virginia Tech

Seeking software engineering internships · Graduating May 2028

Contributions

7 merged pull requests to projects I don’t maintain: six code fixes (C#, Kotlin, JavaScript, TypeScript, Python, Rust) and one documentation fix. Each one fixes a reproducible bug or a reported issue, and every entry links to the PR on GitHub.

Merged pull requests

microsoft/PowerToys · Microsoft’s Windows productivity utilities

[Quick Accent] Fix window width when descriptions are disabled #49402 (opens in a new tab)

Merged July 22, 2026 · C# / WinUI · +19 −7 in 2 files · Fixes #49346 (opens in a new tab)

Problem
Quick Accent clipped or shifted the last character when descriptions were off. The window width ignored the selector’s margins and border, and fractional display scaling could round the viewport a pixel short.
Change
The width is now computed from the surface’s live margin and border thickness, plus a 1-DIP layout-rounding allowance.
Verified
Runtime-tested at 150% and 175% scaling. The PR explains why a unit test duplicating the XAML dimensions would not catch this regression.

open-telemetry/opentelemetry-kotlin · OpenTelemetry for Kotlin Multiplatform (CNCF)

Fix concurrent span mutation during OnEnding #1064 (opens in a new tab)

Merged September 18, 2026 · Kotlin · +119 −26 in 2 files · Fixes #1059 (opens in a new tab)

Problem
While a span was in its OnEnding callback, another thread could overwrite span data before it was exported (a race condition).
Change
Restricted mutations in the ENDING state to the callback thread using the library’s multiplatform ThreadLocal, initialized lazily and kept outside the write lock to avoid deadlocks.
Verified
Reproduced the cross-thread overwrite first. After a revision for maintainer review, five cross-thread tests and the JVM (563) and JS (548) test suites pass.

NASA-AMMOS/MMGIS · NASA-AMMOS web mapping system for planetary science

fix: preserve development startup logs in terminal scrollback #1029 (opens in a new tab)

Merged August 5, 2026 · JavaScript · +32 −7 in 4 files · Fixes #144 (opens in a new tab)

Problem
The development server called console.clear() on startup, wiping earlier logs from the terminal.
Change
Removed the clear while keeping the startup message, and added a regression test.
Verified
Reproduced the original behavior first; the focused test and all 907 unit tests pass.

pingdotgg/t3code · Web interface for coding agents

fix(web): preserve XML-like tags in user messages #4133 (opens in a new tab)

Merged August 15, 2026 · TypeScript · +163 −3 in 3 files · Fixes #4059 (opens in a new tab)

Problem
User messages containing XML-like tags, such as <global-agent-instructions>, were parsed as HTML and silently removed from the chat.
Change
User messages now render literally, while assistant messages keep sanitized HTML rendering.
Verified
Regression tests cover literal tags, XSS rendered as text, and sanitized assistant HTML.

unhappychoice/gittype · Rust CLI typing game

fix: redraw TUI after terminal resize #478 (opens in a new tab)

Merged August 5, 2026 · Rust · +104 −24 in 2 files

Problem
Resizing the terminal left the interface stale until the next keypress, because resize events were consumed without scheduling a redraw.
Change
Separated terminal event dispatch from key handling and redraw on resize events.
Verified
Regression tests for resize and keypress redraws using a render-counting test backend; the full suite (2,769 tests) passes.

libredb/libredb-studio · Open-source browser SQL IDE

docs: fix Keycloak ID-token role mapping setup #904 (opens in a new tab)

Merged September 16, 2026 · Documentation · OIDC · +5 −1 in 1 file · Fixes #850 (opens in a new tab)

Problem
The Keycloak setup guide left realm roles out of the ID token, so administrators signed in with the ordinary user role.
Change
Documented the required “Add to ID token” mapper setting and made it the first troubleshooting check for a missing admin role.
Verified
Reproduced against a local Keycloak 26.4 server, then confirmed admin and user accounts mapped correctly through PKCE logins; the full test suite (17,537 tests) passes.

My open-source projects