Back to Explorer
Beginner Friendly Open-Source TypeScript

Good First Issues in TypeScript

Explore curated starter issues in high-scoring TypeScript repositories. Every listed issue belongs to a welcoming repository scored by C-Rankโ„ข on PR merge rates, review responsiveness, and first-timer acceptance.

Updated: Sun, 30 Aug 2026 UTC (Live GitHub Sync)
Real-Time Radar

Arm Issue Sniper for fresh TypeScript beginner issues

Beginner issues in welcoming S/A-Tier repositories get snatched within 15 minutes. Receive instant alerts on Discord, Telegram, or Email the minute a maintainer opens a new task.

Live Good First Issues (30)

Real-Time Open GitHub Issues
kubestellar/console127 Tier A ยท 65 pts
#22948Opened today
[quality] pkg/sanitize: add universal invariants (idempotence, output-shape, compositional)

Finding pkg/sanitize implements two security-critical sanitizers, PromptString (LLM prompt-injection) and LogString (CWE-117 log-injection). The existing test file covers many specific inputs (role markers, ANSI, U+2028/U+2029, null bytes, control chars, mixed UTF-8) but does not lock the universal post-conditions the sanitizers are supposed to guarantee for arbitrary input. A subtle regex regression (e.g., swapping \\x1c-\\x1f for \\x1c-\\x1e, or reordering the html.EscapeString / role-marker stages) can pass every named case while still leaking a control byte or structure marker on some other input. Three properties in particular are unprotected: Idempotence of LogString โ€” running the sanitizer on an already-sanitized value must be a no-op. Pass-through log middleware relies on this. Output-shape guarantees over an adversarial corpus โ€” LogString output must contain no C0 controls (except tab), no DEL, no ESC, no CR/LF, no U+2028/U+2029; PromptString output must contain no raw \n

help wantedqualitytestinghive/hosted-kubestellar-console-4vkt
lingdojo/kana-dojo3,246 Tier A ยท 66 pts
#29466Opened today
[Good First Issue] ๐ŸŽ Add new Theme: Ramen Steam - Beginner-Friendly Open-source Contribution

๐ŸŸข Good First Issue: Add Color Theme: Ramen Steam โ€” Beginner-Friendly Open Source Contribution ๐ŸŸข No prerequisites needed! You don't need to clone the repo, install anything, or write code. This entire contribution can be done from your browser in under 60 seconds. Labels: good first issue, help wanted, hacktoberfest Language: JSON (no coding required) Time: < 1 minute Skill Level: Absolute beginner ๐ŸŽจ Add New Color Theme: "Ramen Steam" Category: Community Contribution - Theme Difficulty: Easy (good first issue!) Estimated Time: <1 min ๐ŸŽฏ Your Task Add this beautiful new theme to KanaDojo! Theme Details Property Value ID ramen-steam Background oklch(21.0% 0.038 50.0 / 1) Main Color oklch(82.0% 0.135 85.0 / 1) Secondary oklch(65.0% 0.165 40.0 / 1) ๐Ÿ’ก Vibe: Hot broth rising from the bowl ๐Ÿ“ Instructions Star our repo โญ Fork our repo ๐Ÿด Open community/content/community-themes.json in your browser (click the link!) Scroll to the bottom of the fil

enhancementhelp wantedgood first issuehacktoberfest
3
lingdojo/kana-dojo3,246 Tier A ยท 66 pts
#29465Opened today
[Good First Issue] ๐Ÿ—ป Add new Community Note Line #1 - Beginner-Friendly Open-source Contribution

๐ŸŸข Good First Issue: Add Community Note Line #1 โ€” Beginner-Friendly Open Source Contribution ๐ŸŸข No prerequisites needed! You don't need to clone the repo, install anything, or write code. This entire contribution can be done from your browser in under 60 seconds. Labels: good first issue, help wanted, hacktoberfest Language: JSON (no coding required) Time: < 1 minute Skill Level: Absolute beginner Add Tiny Community Note Line Category: Community Contribution - Community Note Difficulty: Easy (good first issue!) Estimated Time: <1 min Your Task Add one exact markdown line to a low-priority community notes file. The Community Note Edit File: docs/community-notes/contribution-notes-1.md Position: bottom - Community note: this file is used for lightweight contribution practice. ๐Ÿ“ Instructions Star our repo โญ Fork our repo ๐Ÿด Open docs/community-notes/contribution-notes-1.md in your browser Add the following line to the bottom of the file Save the file and commit the ch

documentationenhancementhelp wantedgood first issue
1
lingdojo/kana-dojo3,246 Tier A ยท 66 pts
#29464Opened today
[Good First Issue] ๐ŸŽŒ Add new Learner Mistake 53 - Beginner-Friendly Open-source Contribution

๐ŸŸข Good First Issue: Add Learner Mistake #53 โ€” Beginner-Friendly Open Source Contribution ๐ŸŸข No prerequisites needed! You don't need to clone the repo, install anything, or write code. This entire contribution can be done from your browser in under 60 seconds. Labels: good first issue, help wanted, hacktoberfest Language: JSON (no coding required) Time: < 1 minute Skill Level: Absolute beginner Add Common Japanese Learner Mistake Category: Community Contribution - Common Mistake Difficulty: Easy (good first issue!) Estimated Time: <1 min Your Task Add this common learner mistake pair to help others avoid frequent Japanese errors! The Common Mistake Wrong: ใ“ใ‚Œใฏ็งใฎใงใ™ๆœฌใ€‚ Correct: ใ“ใ‚Œใฏ็งใฎๆœฌใงใ™ใ€‚ Why: Place ใฎ correctly in noun phrase. (Pattern set 3) ๐Ÿ“ Instructions Star our repo โญ Fork our repo ๐Ÿด Open community/content/japanese-common-mistakes.json in your browser (click the link!) Scroll to the bottom of the file and paste the following

enhancementhelp wantedgood first issuehacktoberfest
1
lingdojo/kana-dojo3,246 Tier A ยท 66 pts
#29463Opened today
[Good First Issue] ๐ŸŒŠ Add new Example Sentence 104 - Beginner-Friendly Open-source Contribution

๐ŸŸข Good First Issue: Add Example Sentence #104 โ€” Beginner-Friendly Open Source Contribution ๐ŸŸข No prerequisites needed! You don't need to clone the repo, install anything, or write code. This entire contribution can be done from your browser in under 60 seconds. Labels: good first issue, help wanted, hacktoberfest Language: JSON (no coding required) Time: < 1 minute Skill Level: Absolute beginner Add Japanese Example Sentence Category: Community Contribution - Example Sentence Difficulty: Easy (good first issue!) Estimated Time: <1 min Your Task Add this Japanese example sentence to improve real-world reading and comprehension! The Example Sentence Japanese Romaji English JLPT ใ“ใฎๆผขๅญ—ใฎ่ชญใฟๆ–นใ‚’ๆ•™ใˆใฆใใ ใ•ใ„ใ€‚ Kono kanji no yomikata o oshiete kudasai. Please tell me how to read this kanji. N5 ๐Ÿ“ Instructions Star our repo โญ Fork our repo ๐Ÿด Open community/content/japanese-example-sentences.json in your browser (click the link!) Scroll to

enhancementhelp wantedgood first issuehacktoberfest
1
lingdojo/kana-dojo3,246 Tier A ยท 66 pts
#29462Opened today
[Good First Issue] ๐Ÿฃ Add new False Friend Pair 28 - Beginner-Friendly Open-source Contribution

๐ŸŸข Good First Issue: Add False Friend Pair #28 โ€” Beginner-Friendly Open Source Contribution ๐ŸŸข No prerequisites needed! You don't need to clone the repo, install anything, or write code. This entire contribution can be done from your browser in under 60 seconds. Labels: good first issue, help wanted, hacktoberfest Language: JSON (no coding required) Time: < 1 minute Skill Level: Absolute beginner Add Japanese False Friend Category: Community Contribution - False Friend Difficulty: Easy (good first issue!) Estimated Time: <1 min Your Task Add this confusion pair to help learners avoid common Japanese mixups! The False Friend Pair Term A: ใƒชใƒ™ใƒณใ‚ธ (ribenji) Term B: revenge (English) Explanation: Often used as 'try again after failing'. (Set 2) Example: ๅŽปๅนด่ฝใกใŸ่ฉฆ้จ“ใซไปŠๅนดใƒชใƒ™ใƒณใ‚ธใ™ใ‚‹ใ€‚ ๐Ÿ“ Instructions Star our repo โญ Fork our repo ๐Ÿด Open community/content/japanese-false-friends.json in your browser (click the link!) Scroll to the bottom of the

enhancementhelp wantedgood first issuehacktoberfest
1
lingdojo/kana-dojo3,246 Tier A ยท 66 pts
#29461Opened today
[Good First Issue] ๐Ÿฆ‘ Add new Dialect Entry 94 - Beginner-Friendly Open-source Contribution

๐ŸŸข Good First Issue: Add Dialect Entry #94 โ€” Beginner-Friendly Open Source Contribution ๐ŸŸข No prerequisites needed! You don't need to clone the repo, install anything, or write code. This entire contribution can be done from your browser in under 60 seconds. Labels: good first issue, help wanted, hacktoberfest Language: JSON (no coding required) Time: < 1 minute Skill Level: Absolute beginner Add New Regional Dialect Entry Category: Community Contribution - Regional Dialect Difficulty: Easy (good first issue!) Estimated Time: <1 min Your Task Add this regional dialect phrase so learners can understand real-world Japanese variation! The Dialect Entry Dialect Standard Japanese English Region ใถใก ใจใฆใ‚‚ very Yamaguchi/Hiroshima Note: Regional intensifier. (Set 5) ๐Ÿ“ Instructions Star our repo โญ Fork our repo ๐Ÿด Open community/content/japanese-regional-dialects.json in your browser (click the link!) Scroll to the bottom of the file and paste the follow

enhancementhelp wantedgood first issuehacktoberfest
1
super-productivity/super-productivity21,347 Tier A ยท 66 pts
#9818Opened today
chore(focus-mode): remove unreachable screen-routing code (unused strategy method + 3 FocusScreen members)

Small, self-contained cleanup in src/app/features/focus-mode/. Good first issue for someone who wants to get familiar with the focus mode code. No behaviour change of any kind is intended. Since 31b702c (feat(focusMode): improve focus rocket, 2025-10-31) deleted the standalone focus-mode-duration-selection and focus-mode-preparation components, a piece of the screen-routing API they used has been left behind and is now unreachable. What is dead 1. FocusModeStrategy.getNextScreenAfterTaskSelection() Declared on the interface in focus-mode.model.ts and implemented by all three strategies (PomodoroStrategy, FlowtimeStrategy, CountdownStrategy in focus-mode-strategies.ts), but never called anywhere outside those files and their specs: grep -rn "getNextScreenAfterTaskSelection" --include="*.ts" src \ | grep -v "focus-mode-strategies\|focus-mode.model" # no results Screen transitions are decided entirely by the reducer now. selectFocusTask unconditionally sets currentScreen: FocusScreen.M

help wanted
1
nexu-io/open-design92,706 Tier A ยท 66 pts
#7613Opened today
MCP ignores activeWorkspaceId and falls back to the first workspace, making the user's own local projects unreadable (403 WORKSPACE_PROJECT_PERMISSION_DENIED)

Summary On 0.21.0 the MCP server picks its workspace identity by taking the first entry from /api/workspace/directory instead of the activeWorkspaceId that the very same response returns. When a user belongs to more than one workspace and the active one is not first in the list, every MCP read of that user's own local projects fails with: 403 WORKSPACE_PROJECT_PERMISSION_DENIED {"error":{"code":"WORKSPACE_PROJECT_PERMISSION_DENIED","message":"workspace project read is not allowed"}} get_active_context still works (it uses a different endpoint), so the agent can see the project's name and id but cannot read anything inside it โ€” which makes the failure look like a permissions setting the user is supposed to flip somewhere. There is no such setting. Environment Open Design 0.21.0 (launcher-managed install, macOS 15) MCP client: Claude Code, stdio (daemon-cli.mjs mcp --daemon-url โ€ฆ) Account profile prod, session authenticated User is owner of two workspaces, both reported as workspac

bughelp wanted
6
lingdojo/kana-dojo3,246 Tier A ยท 66 pts
#29458Opened today
[Good First Issue] ๐Ÿต Add new Video Game Quote 59 - Beginner-Friendly Open-source Contribution

๐ŸŸข Good First Issue: Add Video Game Quote #59 โ€” Beginner-Friendly Open Source Contribution ๐ŸŸข No prerequisites needed! You don't need to clone the repo, install anything, or write code. This entire contribution can be done from your browser in under 60 seconds. Labels: good first issue, help wanted, hacktoberfest Language: JSON (no coding required) Time: < 1 minute Skill Level: Absolute beginner Add Famous Japanese Video Game Quote Category: Community Contribution - Video Game Quote Difficulty: Easy (good first issue!) Estimated Time: <1 min Your Task Add this iconic Japanese game quote so learners can enjoy game culture while studying! The Video Game Quote Japanese Romaji English ไฟบใŸใกใฎ็‰ฉ่ชžใฏใ€ใ“ใ“ใ‹ใ‚‰ใ  Oretachi no monogatari wa, koko kara da Our story starts here. Game: Tales series Character: Various endings ๐Ÿ“ Instructions Star our repo โญ Fork our repo ๐Ÿด Open community/content/japanese-videogame-quotes.json in your browser (click the l

enhancementhelp wantedgood first issuehacktoberfest
1
lingdojo/kana-dojo3,246 Tier A ยท 66 pts
#29457Opened today
[Good First Issue] ๐Ÿต Add new Anime Quote 35 - Beginner-Friendly Open-source Contribution

๐ŸŸข Good First Issue: Add Anime Quote #35 โ€” Beginner-Friendly Open Source Contribution ๐ŸŸข No prerequisites needed! You don't need to clone the repo, install anything, or write code. This entire contribution can be done from your browser in under 60 seconds. Labels: good first issue, help wanted, hacktoberfest Language: JSON (no coding required) Time: < 1 minute Skill Level: Absolute beginner ๐ŸŽฌ Add Famous Anime Quote Category: Community Contribution - Anime Quote Difficulty: Easy (good first issue!) Estimated Time: <1 min ๐ŸŽฏ Your Task Add this iconic anime quote so learners can enjoy Japanese pop culture! The Quote Japanese Romaji English ็—›ใฟใ‚’ไผดใ‚ใชใ„ๆ•™่จ“ใซใฏๆ„ๅ‘ณใŒใชใ„ Itami o tomonawanai kyoukun ni wa imi ga nai A lesson without pain is meaningless. Anime: Fullmetal Alchemist: Brotherhood Character: Edward Elric ๐Ÿ“ Instructions Star our repo โญ Fork our repo ๐Ÿด Open community/content/anime-quotes.json in your browser (click the link!)

enhancementhelp wantedgood first issuehacktoberfest
1
nexu-io/open-design92,706 Tier A ยท 66 pts
#7611Opened today
od automation create/update fail with ReferenceError: Cannot access 'splitAutomationIds' before initialization (0.21.1)

Summary Every od automation create and od automation update invocation fails with a temporal dead zone ReferenceError on 0.21.1. The headless automation surface the CLI help advertises for external agents is unusable as a result. ReferenceError: Cannot access 'splitAutomationIds' before initialization at automationContextFromFlags (.../apps/daemon/dist/cli.js:11346:22) at Object.runAutomation (.../apps/daemon/dist/cli.js:11905:29) at async .../apps/daemon/dist/cli.js:851:5 Reproduce Source install, daemon running: export OD_DAEMON_URL=http://127.0.0.1:<daemon-port> node apps/daemon/bin/od.mjs automation create \ --name "example" --prompt "example" --schedule "daily:03:00" automation update <id> --name ... fails identically. automation list, get and run are unaffected, because they do not go through automationContextFromFlags. Cause Not environment specific and not a race. In the bundled apps/daemon/dist/cli.js: 851: await SUBCOMMAND_MAP[first](rest);

buggood first issuehelp wanted
5
kubestellar/console127 Tier A ยท 65 pts
#22943Opened today
[quality] pkg/safego: pin log-integrity invariants (slog error emitted on panic, label sanitized against log injection)

Finding pkg/safego/safego_test.go proves that a panicking goroutine launched via Go/GoWith does not crash the process. It does not prove: The recover path actually emits a slog error entry. A future refactor that drops the slog.Error("goroutine panicked", ...) call (e.g., "the recover alone is enough") would leave every existing test green while silently swallowing every panic in production. Post-mortem debuggability disappears with no compile error, no test failure. GoWith funnels label through sanitize.LogString before logging. The label is a caller-supplied string that reaches slog.Error("label", label, ...). Today the wrapper is sanitize.LogString(label), which strips ANSI escapes and neutralizes CR/LF/NUL. If a mechanical refactor drops the sanitize wrapper ("redundant, slog already handles it"), the raw label lands in the log stream and any caller-controlled label with \n produces classic log injection (CWE-117) โ€” a forged log line the SIEM can't tell from a legitimate entr

help wantedqualitytestinghive/hosted-kubestellar-console-4vkt
nexu-io/open-design92,706 Tier A ยท 66 pts
#7609Opened today
piAgentDef dogfooding: record agent_cli_version in run diagnostics (+ stale-runtime hint)

First: the pi runtime adapter works beautifully end-to-end โ€” we verified a full run today (spawn via pi --mode rpc, model passthrough deepseek/deepseek-v4-flash, 4 tool_use/tool_result pairs mapped, clean exit 0, 17s total, 99% prompt-cache hit, session-file discovery for native resume engaged). The --list-models TSV parse surfaced 23 models. Great adapter. Two observability suggestions from dogfooding: 1. Record agent_cli_version in execution diagnostics executionDiagnostics.environment.agentCliVersion came back not_collected / agent_cli_version_not_recorded, even though the daemon clearly probes pi --version during runtime detection (the agent list shows the resolved version). Recording the resolved CLI version per run would make version-specific regressions debuggable โ€” e.g. we just hit a pi-ai 0.84.3 packaging defect (#7608) that doesn't exist in 0.80.x, and correlating "which agent CLI version executed this run" would have halved the triage time. The detection probe result cou

enhancementhelp wantedneeds-product-direction
7
ahmadrosid/nakama253 Tier A ยท 70 pts
#781Opened today
web: finish window.confirm โ†’ Dialog migration and ban native alerts

Summary Do two things so window.confirm cannot come back. Live calls are already gone. Before: deletes use Dialog, but noAlert is "off" and a stale comment still names window.confirm. After: that comment is gone, and bun x ultracite check fails if anyone adds window.confirm, alert, or prompt. About 15 minutes. Why it matters window.confirm does not run while a Radix Dialog is open (see SkillAssignPicker). It also ignores the app theme. The Dialog pattern already exists โ€” do not add a shared ConfirmDialog. Do this Delete the comment at apps/web/src/pages/profiles/use-profiles-page.ts:802. In biome.jsonc, set linter.rules.suspicious.noAlert from "off" to "error". If that flags a real alert / confirm / prompt, replace it with the Dialog in apps/web/src/pages/files/files-delete-dialog.tsx. Run bun x ultracite check. Acceptance criteria git grep -n window.confirm is empty biome.jsonc no longer sets noAlert to "off" bun x ultracite check passes

enhancementgood first issuestage: nowpriority: medium
2
stablyai/orca56,975 Tier A ยท 68 pts
#17326Opened today
[Bug]: Qwen Code is never detected on Windows โ€” node-launched agents need a script-path entry

[Bug]: Qwen Code is never detected on Windows โ€” node-launched agents need a script-path entry Summary On Windows, Orca never recognizes Qwen Code as a running agent, even though it is listed as a supported agent and launches fine. Every orchestration path that requires agent identity fails: orca orchestration worker-start --task <t> --worktree <w> --agent qwen-code โ†’ state: failed ยท stage: agent_readiness ยท lastError: timeout orca orchestration dispatch --task <t> --to <handle> --inject โ†’ runtime_error: "Cannot dispatch --inject to terminal <handle>: no recognized agent detected." The error message lists the detectable agents and qwen is in that list, so this is not a missing-agent problem โ€” it is a detection problem specific to Windows. Environment Orca 1.4.192 (desktop, Windows) Agent runtime host (not WSL) OS Windows 11 Pro for Workstations 22631 Qwen Code 0.22.3 (official Windows installer) Node 24.14.0 The same setup works on Linux, which i

good first issue
nexu-io/open-design92,706 Tier A ยท 66 pts
#7604Opened today
Deck thumbnail rail always shows slide 1 for reveal.js-based decks (getComputedStyle can't see ancestor-driven hiding)

What happened? When a generated deck uses a real, self-navigating presentation library (reveal.js is the concrete case we hit) instead of OpenDesign's own .slide.active convention, the deck thumbnail rail shows the same slide (always the first one) for every single slide, even though the main preview pane navigates correctly and each slide's own markup is genuinely different. Observed directly in the product with a real 9-slide deck (screenshot on file, but it contains confidential business content so it isn't attached here - the minimal repro below reproduces the same underlying DOM signature with placeholder content instead). Steps to reproduce Save the attached index.html (bottom of this issue) as an OpenDesign project's deck file, or just open it directly in a browser first to inspect the underlying DOM state described in "Evidence" below (no OpenDesign build needed for that part). Open it as a deck in OpenDesign. Look at the thumbnail rail on the left. All 3 thumbnails render "Sl

bughelp wanted
5
modem-dev/hunk8,922 Tier A ยท 69 pts
#915Opened today
Rename the โ€œstackโ€ diff layout to โ€œunifiedโ€ across Hunk

Summary Hunk currently calls its single-column diff presentation the stack or stacked layout. That terminology is incorrect: the implemented presentation is a unified diff. Rename this layout to unified throughout the product, public APIs, implementation, tests, documentation, examples, and maintained media. This is a terminology change only. Rendering, navigation, responsive behavior, wrapping, copying, notes, and scrolling should behave exactly as they do today. Look at the implementation plan before starting. It contains the investigated file map, compatibility policy, rename guidance, test coverage, media audit, and validation checklist. Desired vocabulary Current Replacement Stack layout Unified layout Stacked view Unified view Canonical stack value Canonical unified value Internal Stack* / stack* names Unified* / unified* Apply these replacements only where โ€œstackโ€ describes the diff layout. Do not rename unrelated uses such as call stacks, stack traces, parse

help wantedgood first issue
nexu-io/open-design92,706 Tier A ยท 66 pts
#7602Opened today
packages/download's ensureManagedBase() has the same name-only OS-artifact check as pre-fix apps/desktop (no lstat type verification)

Summary PR #7267 fixed a defect in apps/desktop/src/main/updater/store.ts where isOsManagedRootArtifact() matched .DS_Store/Thumbs.db/desktop.ini/.localized by name only, with no lstat check confirming the entry is actually a plain file. That let a directory or symlink squatting on one of those names be silently treated as harmless OS litter โ€” bypassing the empty-root claim check and staying permanently excluded from unexpected-entry corruption validation. packages/download/src/store.ts's ensureManagedBase() has the identical unpatched pattern. It was already flagged once as a follow-up (#7266 โ†’ merged via #7268), but that merge duplicated the same name-only check rather than the type-verified version: // packages/download/src/store.ts:27-34 (current upstream/main) const OS_MANAGED_ROOT_ARTIFACTS = new Set([".DS_Store", "Thumbs.db", "desktop.ini", ".localized"]); function isOsManagedRootArtifact(name: string): boolean { return OS_MANAGED_ROOT_ARTIFACTS.has(name); } // line 107, i

bughelp wanted
10
super-productivity/super-productivity21,347 Tier A ยท 66 pts
#9814Opened today
๐Ÿ’ก Make tapping the note icon on the task entry go directly to the note

Problem Statement On the task list, when a note has been added to a task, a note icon is shown on the right hand side of the entry. Tapping this icon seems to do exactly the same thing as tapping the main content on the row, which opens the context menu for the task. If I want to view the note contents, I have to expand the note section, and it if it a long note, I have to press the full screen button to have a reasonable viewing experience. Possible Solution Logically when I tap the note icon, I would expect that it would go directly to the note, instead of just going to the context menu, as if I tapped anywhere else on the row. Ideally tapping the icon should open the note directly in full screen mode, as the intent is clear that the user's main intention would be to view (or edit) the note content. Implementing this would save 2 additional taps and some scrolling to reach that state Describe alternatives you've considered No response Additional context No response

help wanted
2
super-productivity/super-productivity21,347 Tier A ยท 66 pts
#9812Opened 1 day ago
๐Ÿšจ The tray icon does not work on Linux Mint

Version Used 18.21.1L Current Behavior I just updated from 18.14 to 18.21 and noticed that the tray icon does not work like before on my linux mint 22.3 with the cinnamon 6.6.7 desktop. Expected Behavior the tray icon should work like before Steps to Reproduce Install and open the app. Can you reproduce this reliably? Yes, I can reproduce it reliably. Console Output sam@linux-addict:~$ pkill -f superprod* sam@linux-addict:~$ superproductivity Start app... 23:33:48.609 โ€บ Initializing plugin node executor 23:33:48.612 โ€บ { enabled: null, showDevTools: false, mode: 'bottom' } (node:108006) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (Use `superproductivity-bin --trace-deprecation ...` to show where the warning was created) Saving backups to /home/sam/.config/superProductivity/backups 23:33:48.705 โ€บ Saving backups to /home/sam/.config/superProductivity/backups 23:33

help wanted
2
nexu-io/open-design92,706 Tier A ยท 66 pts
#7600Opened 1 day ago
[Bug]: No Design after various attempts

Before you submit I searched existing issues and confirmed this is not a duplicate. I replaced the example text with the real behavior, reproduction steps, expected result, and version from the app's About menu or od --version. What happened? whenever I try to design something with an openweight model from openrouter (like DeepSeek oder GLM), it never manages to actually create a design, like it never finishes its work. and Im not using weak models either, Im using DeepSeek V4 Flash and GLM 5.3 Flash, the AI is working for 30min+ and in the end I get no output Steps to reproduce just chatting Expected behavior to get a design OpenDesign version 1.9.0 Platform macOS (Apple Silicon) Logs (optional) Screenshots (optional) No response Additional context No response

bughelp wanted
5
modem-dev/hunk8,922 Tier A ยท 69 pts
#906Opened 1 day ago
Reject malformed key chords containing empty segments

Problem The shared key-chord parser removes empty segments after splitting a chord on +. As a result, malformed bindings are silently interpreted as different valid shortcuts: s+ โ†’ s +s โ†’ s ctrl++s โ†’ ctrl+s ctrl+s+ โ†’ ctrl+s For example, parseKeyChord("s+") currently returns the same parsed chord as parseKeyChord("s"), and the malformed chord matches a real s key event. The behavior comes from filtering empty tokens before the parser validates the modifier and base-key structure in src/extension-api/keys.ts. Why this matters This grammar is shared by user [keybindings], extension registerCommand bindings, Hunk's own command table, and the public matchesKey helper. A typo can therefore claim and execute a real shortcut instead of being rejected and surfaced as an unusable chord. This is also inconsistent with the parser's existing behavior for other malformed chords such as ctlr+s, f13, and ctrl+, which are rejected rather than normalized. Expected behavior Key cho

buggood first issue
nexu-io/open-design92,706 Tier A ยท 66 pts
#7599Opened 1 day ago
Fal-configured image project defaults to unavailable Vela model

Summary Fal.ai is configured, but an image project created without a saved imageModel defaults to vela/gpt-image-2. On Linux/WSL, where Vela is not bundled, generation fails instead of using an available Fal model. Steps to reproduce Configure Fal.ai under Media providers. Create an Image project without an explicit model selection. Request an image. Actual result The agent invokes: od media generate --model vela/gpt-image-2 The task fails with: vela binary not found; install vela or configure VELA_BIN The UI reports the generic MEDIA_DISPATCH_FAILED error. Expected result Fal models should be available in the image-model selector and the selected model should be saved in project metadata. If no model is selected, OpenDesign should prefer a configured provider or request a selection instead of defaulting to an unavailable provider. Environment OpenDesign tag: open-design-v0.21.0 Commit: dbbd3b4 Linux/WSL2 Related: #5117

bughelp wanted
10
super-productivity/super-productivity21,347 Tier A ยท 66 pts
#9810Opened 1 day ago
Truncated legacy (pre-v14) backup import fails with an opaque TypeError instead of 'repair not possible'

Summary Importing a truncated pre-v14 backup โ€” one that carries a legacy marker (taskArchive, improvement or obstruction) but is missing a core slice such as task or project โ€” fails with an opaque TypeError instead of the intended "repair not possible" message. No data is lost. The import aborts before anything is written: runDestructiveStateReplacement is not called and nothing is dispatched. This is a diagnostics defect only. What happens BackupService.importCompleteBackup() is meant to refuse unrepairable payloads via isDataRepairPossible(), which reports a clear Data validation failed and repair not possible. A legacy-marked backup never reaches that check: isLegacyBackupData() routes it into migrateLegacyBackup() first, and one of the migration steps dereferences the missing slice and throws. Observed message: Cannot read properties of undefined (reading 'entities') The user sees a JS error with no indication that their backup file is incomplete or what to do about it. Reprod

help wanted
1
Nano-Collective/nanocoder2,357 Tier A ยท 67 pts
#1041Opened 1 day ago
[Bug] message-compression.ts aggressively false-positives "resolved" errors

Description When trying to determine if an error mentioned in the chat has been "resolved", the message compression logic searches the entire conversation content for words like fixed|resolved|success|working. Because it checks the whole content rather than just the text after the error occurred, unrelated text (e.g. "I fixed a typo earlier") will falsely flag the new error as resolved. Environment OS: Any Node version: Node 18+ Nanocoder version: 1.30.0 Steps to Reproduce Have a conversation where you mention the word "success". Trigger an unrelated terminal error later in the same message block. The compression utility will falsely label the new error as "resolved". Expected Behavior Resolution detection should only look at text after the error match index. Actual Behavior It runs /fixed|resolved|success|working/i.test(content), scanning the whole string. Additional Context I have searched existing issues to ensure this is not a duplicate I can reproduce this issue consistentl

buggood first issue
2
Nano-Collective/nanocoder2,357 Tier A ยท 67 pts
#1039Opened 1 day ago
[Bug] paste-utils string replacement only swaps the first occurrence of pasted text

Description When pasting text into the CLI, the paste detector attempts to swap out the raw text for a placeholder so that the terminal isn't overwhelmed. However, because it uses standard String.prototype.replace(), it only swaps the very first occurrence. If the same block of text is pasted twice, or exists elsewhere in the input, the second block ships raw to the model. Environment OS: Any Node version: Node 18+ Nanocoder version: 1.30.0 Steps to Reproduce Paste a block of code into the CLI input. Paste the exact same block of code again. The first paste gets replaced by a placeholder, the second paste remains raw. Expected Behavior All occurrences of the exact pasted string should be replaced with the placeholder ID. Actual Behavior Only the first match is replaced due to the non-global .replace(). Additional Context I have searched existing issues to ensure this is not a duplicate I can reproduce this issue consistently This issue occurs with the latest version of nanocode

buggood first issueui
2
Nano-Collective/nanocoder2,357 Tier A ยท 67 pts
#1035Opened 1 day ago
[Bug] {{args}} template variable is silently empty in parameter-less custom commands

Description If a custom command in commands/ doesn't define any parameters in its frontmatter, the {{args}} template variable is never populated. Users trying to pass raw unparsed text to a simple command will find their arguments silently swallowed. Environment OS: Any Node version: Node 18+ Nanocoder version: 1.30.0 Steps to Reproduce Create a custom command without a parameters array in the YAML frontmatter. Use {{args}} in the body of the command. Run the command with arguments (e.g., /mycmd test args). Observe that {{args}} evaluates to an empty string. Expected Behavior The {{args}} variable should contain all passed arguments joined by a space, regardless of whether explicit parameters were defined. Actual Behavior The variable assignment variables['args'] = args.join(' ') is scoped inside if (command.metadata.parameters && command.metadata.parameters.length > 0), so it never runs for parameter-less commands. Additional Context I have searched existing issues to ensure thi

buggood first issue
2
meshery/meshery11,540 Tier A ยท 66 pts
#21674Opened 1 day ago
[UI] Missing dropdown caret icon in Workspace Environment selector

Description The dropdown caret icon is missing from the Assigned Environment selector in the Environments section of Workspaces. The selector should have a caret icon on the right side, similar to the other dropdown selectors in the UI. Currently, the caret icon is not visible. Steps to Reproduce Go to playground.meshery.io/management/workspaces Open a workspace. Navigate to the Environments section. Check the Assigned Environment selector. Current Behavior The dropdown caret icon is missing from the Assigned Environment selector. Expected Behavior The Assigned Environment selector should display the dropdown caret icon on the right side, consistent with other dropdown selectors. Screenshots Environment Host OS: Mac Linux Windows Platform: Docker or Kubernetes Meshery Server Version: stable-v Meshery Client Version: stable-v Contributor Guides and Handbook ๐Ÿ›  Meshery Build & Release Strategy ๐Ÿ“š Instructions for contributing to documentation Meshery documentation site and s

kind/bughelp wantedgood first issuefirst-timers-only
3
jakubwarkusz/themes100 Tier S ยท 73 pts
#84Opened 1 day ago
chore(themes): generate extended bootstrap from source like default script

Follow-up from #43. The default theme bootstrap uses a readable source file, a generator, and a committed output checked in CI: packages/themes/src/core/script-bootstrap.ts packages/themes/scripts/generate-script-source.ts packages/themes/src/core/script-source.ts (--check in tests) The opt-in extended bootstrap in packages/themes/src/core/extended-script.ts still builds its inline script with extendedThemeScript.toString() and a snapshot in extended-script.test.ts. That works for the opt-in path, but it is easier for bootstrap and runtime to drift when extended props or bootstrap semantics change. Proposal Extend the existing generator (or add a sibling) for extended config, including systemThemeMap, so both paths stay reviewable and CI-enforced the same way. Scope Keep @wrksz/themes/next/extended and @wrksz/themes/client/extended-provider behavior unchanged Replace or supplement Function#toString() output with generated, committed source Keep or update snapshot coverage so bootstr

enhancementhelp wantedgood first issuedx

Top TypeScript Repositories with Beginner Issues (20)

Updated Daily via GitHub GraphQL
vellum-ai
vellum-assistant
vellum-ai/vellum-assistant
Sโ€ขElite
1.1kยทTypeScript

An AI Assistant thatโ€™s easy to setup, does your work 24/7, knows your preferences and gets better over time.

#agent#agentic-ai#ai-assistant
96%
Merge Rate
14h
Review Time
83%
1st-Timers
2 GFI
Scorecard
tennaproject
tenna-editor
tennaproject/tenna-editor
Sโ€ขElite
92ยทTypeScript

An unofficial DELTARUNEโ„ข Save Editor

93%
Merge Rate
4h
Review Time
100%
1st-Timers
4 GFI
Scorecard
google
xrblocks
google/xrblocks
Sโ€ขElite
465ยทTypeScript

XR Blocks is a lightweight WebXR + AI library for rapidly prototyping advanced AI + XR experiences.

#androidxr#gemini#gestures
93%
Merge Rate
4h
Review Time
85%
1st-Timers
1 GFI
Scorecard
amiantos
lurker
amiantos/lurker
Sโ€ขElite
77ยทTypeScript

Lurker is a beautiful self-hosted IRC client with a retro aesthetic and modern conveniences.

#express#irc#irc-client
96%
Merge Rate
19h
Review Time
100%
1st-Timers
5 GFI
Scorecard
IgorWarzocha
howaboua-pi-stuff
IgorWarzocha/howaboua-pi-stuff
Sโ€ขElite
340ยทTypeScript

A monorepo of extensions and skills by yours truly.

93%
Merge Rate
<1h
Review Time
100%
1st-Timers
1 GFI
Scorecard
samitugal
bytepad
samitugal/bytepad
Sโ€ขElite
62ยทTypeScript

Your personal productivity companion

#keyboard-first#knowledge-graphs#note-taking-app
100%
Merge Rate
4h
Review Time
100%
1st-Timers
8 GFI
Scorecard
stella
stella
stella/stella
Sโ€ขElite
180ยทTypeScript

Open-source legal workspace

#law#law-firms#legal
94%
Merge Rate
1d
Review Time
80%
1st-Timers
9 GFI
Scorecard
formulahendry
wechat-acp
formulahendry/wechat-acp
Sโ€ขElite
803ยทTypeScript

Bridge WeChat chat messages to any ACP-compatible AI agent (Claude, Codex, Copilot, Qwen, Gemini, OpenCode, OpenClaw, Hermes, Kiro, Kimi, Pi and more)

#acp#agent-client-protocol#agentclientprotocol
94%
Merge Rate
<1h
Review Time
100%
1st-Timers
2 GFI
Scorecard
jsgrrchg
NeverWrite
jsgrrchg/NeverWrite
Sโ€ขElite
765ยทTypeScript

Your ultimate agentic markdown workspace

#acp#ai#graph
96%
Merge Rate
11h
Review Time
100%
1st-Timers
3 GFI
Scorecard
mattogodoy
nametag
mattogodoy/nametag
Sโ€ขElite
1.0kยทTypeScript

A simple, yet effective Personal Relationship Manager

92%
Merge Rate
5h
Review Time
60%
1st-Timers
2 GFI
Scorecard
theRealPadster
name-that-tune
theRealPadster/name-that-tune
Sโ€ขElite
66ยทTypeScript

Spicetify Heardle.app

#game#heardle#name-that-tune
100%
Merge Rate
16h
Review Time
100%
1st-Timers
1 GFI
Scorecard
opossum-tool
OpossumUI
opossum-tool/OpossumUI
Sโ€ขElite
73ยทTypeScript

A light-weight app to audit and inventory large codebases for open source license compliance.

#codescan#copyright-scan#license-scan
90%
Merge Rate
3h
Review Time
88%
1st-Timers
4 GFI
Scorecard
MeshAddicts
meshinfo
MeshAddicts/meshinfo
Bโ€ขSolid
143ยทTypeScript

Realtime web UI to run against a Meshtastic regional or private mesh network.

#lora#m#mesh
99%
Merge Rate
1d
Review Time
100%
1st-Timers
1 GFI
Scorecard
Bike4Mind
bike4mind
Bike4Mind/bike4mind
Sโ€ขElite
83ยทTypeScript

The open-core AI workbench โ€” notebooks, agents, RAG, voice, and images across any model: OpenAI, Anthropic, Google, xAI, or local via Ollama/vLLM. BSL 1.1, auto-converting to Apache-2.0 on a two-year clock. Your AI keeps running when theirs doesn't.

#agents#ai#ai-agents
91%
Merge Rate
5h
Review Time
85%
1st-Timers
1 GFI
Scorecard
ZoneMinder
zmNinjaNg
ZoneMinder/zmNinjaNg
Sโ€ขElite
135ยทTypeScript

ZoneMinder client for iOS, Android, Windows, macOS, Linux and web. Live camera view, event review, montage, timeline, push notifications. Rewrite of zmNinja.

#agentic-ai#capacitor#cctv
92%
Merge Rate
11h
Review Time
75%
1st-Timers
1 GFI
Scorecard
Get-Concord-AI
concord-mcp
Get-Concord-AI/concord-mcp
Bโ€ขSolid
226ยทTypeScript

"Google Workspace" for your AI Agents

#agentic-coding#ai-agents#claude-code
97%
Merge Rate
2d
Review Time
100%
1st-Timers
6 GFI
Scorecard
SableClient
Sable
SableClient/Sable
Sโ€ขElite
359ยทTypeScript

An almost stable Matrix client.

#matrix#matrix-client
84%
Merge Rate
13h
Review Time
93%
1st-Timers
13 GFI
Scorecard
mazipan
baca-quran.id
mazipan/baca-quran.id
Bโ€ขSolid
434ยทTypeScript

๐Ÿ“– Read Qur'an from Your Web Browser. No Ads, No Analytics, And Free.

#quran#quran-offline#quran-search
100%
Merge Rate
18h
Review Time
100%
1st-Timers
1 GFI
Scorecard
OpsiMate
OpsiMate
OpsiMate/OpsiMate
Sโ€ขElite
206ยทTypeScript

The all-in-one platform for managing and controlling your organization - Everything in one place.

92%
Merge Rate
16h
Review Time
80%
1st-Timers
17 GFI
Scorecard
vuejs-ai
vue-tui
vuejs-ai/vue-tui
Sโ€ขElite
332ยทTypeScript

The Vue framework for terminal UIs. SFC & JSX, Yoga flexbox, HMR, and testing out of the box.

#ai-agent#ai-agents#cli
91%
Merge Rate
5h
Review Time
100%
1st-Timers
1 GFI
Scorecard

How to make your first TypeScript open-source pull request

Finding approachable Good First Issues in TypeScript allows you to build real-world software engineering experience. Instead of submitting PRs to abandoned repositories, GetMerged verifies maintainer review speeds and first-timer acceptance rates before you write a single line of code.

Select any issue above to claim it directly on GitHub, or click a repository to inspect full maintainer review turnaround metrics and triage guidance!

Get this week's top welcoming repos + fresh Good First Issues for TypeScript

Free weekly email, scoped to TypeScript. No account needed - confirm once and unsubscribe anytime.

Best TypeScript Good First Issues | GetMerged