Skip to content

feat(clients): add Tenebra client - #498

Open
Divaaaan wants to merge 1 commit into
remnawave:mainfrom
Divaaaan:add-tenebra-client
Open

feat(clients): add Tenebra client#498
Divaaaan wants to merge 1 commit into
remnawave:mainfrom
Divaaaan:add-tenebra-client

Conversation

@Divaaaan

Copy link
Copy Markdown

Adds Tenebra to the clients list.

Tenebra is an open-source (GPL-3.0) VPN client for Windows, built on the sing-box core, with subscription import support.

@greptile-apps

greptile-apps Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds a single new client entry, Tenebra, to the CLIENTS array in src/data/clients.ts. The entry is structurally valid and follows the existing data shape.

  • The Tenebra entry correctly sets id, name, core: 'singbox', platforms: ['windows'], description, githubRepo, downloadLinks, and links.github.
  • Unlike every other client in the list, it omits the logo field; all 33 existing entries supply a logo path, so the Tenebra card will render without an icon.

Confidence Score: 4/5

Safe to merge as a pure data addition with no logic impact, but the Tenebra card will render without a logo icon.

The only gap is the missing logo asset and field, which produces a visually inconsistent card compared to every other client in the list.

src/data/clients.ts — the new Tenebra entry needs a logo field and a corresponding SVG asset.

Important Files Changed

Filename Overview
src/data/clients.ts New Tenebra client entry added; structurally correct but missing the logo field present on every other client.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[clients.ts CLIENTS array] --> B[getClientsByPlatform]
    B --> C{platform filter}
    C -->|windows| D[Windows clients list]
    D --> E[Sort by featured badge]
    E --> F[Rendered client cards]
    G[New: Tenebra entry\nplatforms: windows\ncore: singbox\nno logo field] --> D
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[clients.ts CLIENTS array] --> B[getClientsByPlatform]
    B --> C{platform filter}
    C -->|windows| D[Windows clients list]
    D --> E[Sort by featured badge]
    E --> F[Rendered client cards]
    G[New: Tenebra entry\nplatforms: windows\ncore: singbox\nno logo field] --> D
Loading

Reviews (1): Last reviewed commit: "feat(clients): add Tenebra client" | Re-trigger Greptile

Comment thread src/data/clients.ts
Comment on lines +670 to 682
id: 'tenebra',
name: 'Tenebra',
core: 'singbox',
platforms: ['windows'],
description: 'Open-source VPN client for Windows built on sing-box.',
githubRepo: 'Divaaaan/tenebra',
downloadLinks: {
windows: 'https://github.com/Divaaaan/tenebra/releases/latest'
},
links: {
github: 'https://github.com/Divaaaan/tenebra'
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Missing logo field

Every other entry in CLIENTS supplies a logo path. Tenebra is the only entry that omits it. While the field is optional in the interface, its absence will cause the card to render without an icon, making it visually inconsistent with the rest of the list. A logo asset (e.g. /clients/logo/tenebra-dark.svg) should be added alongside this entry.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant