-
Notifications
You must be signed in to change notification settings - Fork 0
docs(readme): first-impression rewrite (banner, demo, verification) + v1.6.0 currency #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
53158cb
docs(readme): refresh for v1.6.0 and the github output format
cemililik 4f14582
docs(readme): first-impression rewrite — banner, demo, collapsible ca…
cemililik 7beb79d
docs(readme): font-accurate banner and remove decorative emoji
cemililik 3efc36f
docs(roadmap): record v1.6.0 release and shift planned phase versions
cemililik bddea3b
docs(readme): clearer banner with direct messaging
cemililik 8082aab
docs(readme): use "pull request" (no hyphen) in output-formats table
cemililik 3c2dc04
feat(meta): single-source project counts with generate + CI guard
cemililik File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,36 @@ | ||
| package cmd | ||
|
|
||
| import ( | ||
| "testing" | ||
|
|
||
| "github.com/HodeTech/leakwatch/internal/detector" | ||
| "github.com/HodeTech/leakwatch/internal/meta" | ||
| "github.com/HodeTech/leakwatch/internal/verifier" | ||
| "github.com/stretchr/testify/assert" | ||
| ) | ||
|
|
||
| // detectorsAtInit and verifiersAtInit snapshot the registries right after every | ||
| // package blank-imported by imports.go has run its init(), before any test can | ||
| // mutate the global registries. Capturing here makes the guard below | ||
| // independent of test ordering. | ||
| var ( | ||
| detectorsAtInit []detector.Detector | ||
| verifiersAtInit []verifier.Verifier | ||
| ) | ||
|
|
||
| func init() { | ||
| detectorsAtInit = detector.All() | ||
| verifiersAtInit = verifier.All() | ||
| } | ||
|
|
||
| // TestMetaCounts_MatchRuntime guards the published counts in internal/meta | ||
| // against what the binary actually registers. Every detector and verifier | ||
| // package is blank-imported by imports.go in this package, so both registries | ||
| // are fully populated here (the detector-only test in internal/detector cannot | ||
| // see verifiers, hence the cross-check lives here). | ||
| func TestMetaCounts_MatchRuntime(t *testing.T) { | ||
| assert.Len(t, detectorsAtInit, meta.Detectors, | ||
| "meta.Detectors drifted from detector.All(); update internal/meta then run `go generate ./...`") | ||
| assert.Len(t, verifiersAtInit, meta.Verifiers, | ||
| "meta.Verifiers drifted from verifier.All(); update internal/meta then run `go generate ./...`") | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,89 @@ | ||
| <!doctype html> | ||
| <!-- Source for docs/assets/banner.png. Re-render (2x) with: | ||
| chrome --headless --screenshot=docs/assets/banner.png \ | ||
| --window-size=1200,480 --force-device-scale-factor=2 \ | ||
| --default-background-color=00000000 --virtual-time-budget=3000 \ | ||
| file://$PWD/docs/assets/banner.html --> | ||
| <html> | ||
| <head> | ||
| <meta charset="utf-8"> | ||
| <style> | ||
| @font-face { font-family:'Space Grotesk'; font-weight:700; font-display:block; | ||
| src:url('../../site/assets/fonts/space-grotesk-700-latin.woff2') format('woff2'); } | ||
| @font-face { font-family:'JetBrains Mono'; font-weight:400; font-display:block; | ||
| src:url('../../site/assets/fonts/jetbrains-mono-400-latin.woff2') format('woff2'); } | ||
| @font-face { font-family:'JetBrains Mono'; font-weight:700; font-display:block; | ||
| src:url('../../site/assets/fonts/jetbrains-mono-700-latin.woff2') format('woff2'); } | ||
|
|
||
| * { margin:0; padding:0; box-sizing:border-box; } | ||
| body { width:1200px; height:480px; overflow:hidden; } | ||
| .banner { | ||
| width:1200px; height:480px; position:relative; overflow:hidden; | ||
| background:linear-gradient(135deg, #0c0d10 0%, #0a0b0d 100%); | ||
| font-family:'Space Grotesk', sans-serif; color:#f1eee5; | ||
| } | ||
| .grid { | ||
| position:absolute; inset:0; | ||
| background-image: | ||
| linear-gradient(#23272e 1px, transparent 1px), | ||
| linear-gradient(90deg, #23272e 1px, transparent 1px); | ||
| background-size:40px 40px; opacity:.35; | ||
| } | ||
| /* Thin brand accent rule (replaces the old CLASSIFIED bar). */ | ||
| .accent { | ||
| position:absolute; top:0; left:0; right:0; height:5px; | ||
| background:linear-gradient(90deg, #e6394d 0%, #ff6377 100%); | ||
| } | ||
| .content { position:absolute; left:64px; right:64px; top:88px; } | ||
| .brand { display:flex; align-items:center; gap:18px; margin-bottom:38px; } | ||
| .brand svg { width:50px; height:50px; } | ||
| .wordmark { font-weight:700; font-size:54px; letter-spacing:-1px; line-height:1; } | ||
| .wordmark b { color:#ff6377; font-weight:700; } | ||
| .headline { font-weight:700; font-size:52px; letter-spacing:-1.5px; line-height:1.12; } | ||
| .headline .t { color:#ff6377; } | ||
| .subtitle { | ||
| font-family:'JetBrains Mono', monospace; font-weight:400; font-size:22px; | ||
| color:#8b9098; margin-top:24px; line-height:1.5; | ||
| } | ||
| .stats { | ||
| position:absolute; left:64px; bottom:74px; | ||
| font-family:'JetBrains Mono', monospace; font-weight:700; font-size:22px; | ||
| display:flex; gap:34px; align-items:center; | ||
| } | ||
| .stats .sep { color:#3a3f47; font-weight:400; } | ||
| .g { color:#34d39a; } .y { color:#f0b429; } .b { color:#5aa9e6; } .r { color:#ff6377; } | ||
| .footer { | ||
| position:absolute; left:64px; bottom:34px; | ||
| font-family:'JetBrains Mono', monospace; font-weight:400; font-size:18px; color:#5b616b; | ||
| } | ||
| </style> | ||
| </head> | ||
| <body> | ||
| <div class="banner"> | ||
| <div class="grid"></div> | ||
| <div class="accent"></div> | ||
| <div class="content"> | ||
| <div class="brand"> | ||
| <svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||
| <rect x="2.5" y="2.5" width="27" height="27" rx="6" fill="#16191e" stroke="#e6394d" stroke-width="1.8"/> | ||
| <rect x="7.5" y="10.6" width="17" height="3.6" rx="1.2" fill="#0a0b0d"/> | ||
| <rect x="7.5" y="16.6" width="10.5" height="3.6" rx="1.2" fill="#0a0b0d"/> | ||
| <circle cx="22" cy="18.9" r="2.7" fill="none" stroke="#34d39a" stroke-width="1.8"/> | ||
| </svg> | ||
| <span class="wordmark">Leak<b>watch</b></span> | ||
| </div> | ||
| <div class="headline">Find leaked secrets<br>before <span class="t">attackers</span> do.</div> | ||
| <div class="subtitle">Detect · verify · report — across code, git history, containers & cloud.</div> | ||
| </div> | ||
| <!-- stats:begin — managed by internal/meta/statsgen; run `go generate ./...` --> | ||
| <div class="stats"> | ||
| <span class="g">63 detectors</span><span class="sep">·</span> | ||
| <span class="y">54 live verifiers</span><span class="sep">·</span> | ||
| <span class="b">6 sources</span><span class="sep">·</span> | ||
| <span class="r">5 output formats</span> | ||
| </div> | ||
| <!-- stats:end --> | ||
| <div class="footer">github.com/HodeTech/Leakwatch · MIT</div> | ||
| </div> | ||
| </body> | ||
| </html> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Document metadata dates are inconsistent.
Line 4 (
Date: 2026-04-09) conflicts with Line 6 (Last Updated: 2026-05-25) after the v7.1 bump. Align these dates to avoid version-history confusion.🤖 Prompt for AI Agents