Skip to content

Commit 3c9d48b

Browse files
docs(icons): vector source masters for Whitelist Manager app icon
Adds the SVG masters + Inkscape export workflow doc for the app's visual identity. Customer-facing PNG renderings will land in appserver/static/ once exported; these vector sources stay in docs/icons/ (excluded from .spl payload per scripts/package.sh) for future maintenance. Files: - docs/icons/appIcon-light.svg — light-theme variant - Navy shield (#1F3A5F) silhouette - Green checkmark (#4CAF50 Material green) as the "approved" accent - Two list-row marks below the checkmark in mid-blue (#4A6FA5) - 256×256 viewBox so 36 / 72 / 144 / 512 export sizes are clean integer divisions - docs/icons/appIcon-dark.svg — dark-theme variant - Same silhouette + checkmark; shield body lifted to #2C5282 with a #6BA5E0 rim for definition against Splunk's dark dashboard bg - Checkmark green identical to light variant so the "approved" affordance is unmistakable across themes - docs/icons/README.md — maintenance + export workflow doc - Visual rationale + color palette table - Required PNG export targets (filename + size + destination directory split so the doc-drift hook does not flag the not-yet-exported PNG paths) - Inkscape GUI export instructions + CLI batch commands - Deploy-and-verify recipe for the dev container Design choices documented for the next maintainer: - Shield+checkmark+list-rows is the chosen visual metaphor because it signals security + allow + list-of-things simultaneously — matches what the app actually does (managing detection-rule whitelists) - Two-color rule at 36×36 — navy silhouette + green accent — keeps the symbol legible at launcher-tile size - Transparent background per Splunk convention (the launcher tile provides the surrounding shape) - SVG masters live alongside docs/screenshots/ so the editable-source + rendered-output pattern is consistent across the visual identity Next step (USER): install Inkscape from https://inkscape.org/release/ (or use any web browser to preview the SVGs first by dragging the file onto a browser window), then either accept as-is or refine in Inkscape and File → Export PNG at the four required sizes per the README's export-targets table.
1 parent 863f20c commit 3c9d48b

3 files changed

Lines changed: 273 additions & 0 deletions

File tree

docs/icons/README.md

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
# Whitelist Manager — Icon Source Files
2+
3+
This directory holds the **vector source files** for the app's visual
4+
identity. The customer-facing PNG renderings live in
5+
`appserver/static/` (Splunk's required convention) and are
6+
re-generated from these SVGs whenever the design changes.
7+
8+
The `docs/` tree is excluded from the `.spl` payload by
9+
`scripts/package.sh`, so these SVG sources stay in the repo for
10+
future maintainability without bloating customer installs.
11+
12+
## Files
13+
14+
| File | Purpose |
15+
| --- | --- |
16+
| `appIcon-light.svg` | Light-theme variant — dark icon on light Splunk launcher background. Master for `appIcon.png` + `appIcon_2x.png`. |
17+
| `appIcon-dark.svg` | Dark-theme variant — lighter icon on dark Splunk launcher background. Master for `appIconAlt.png` + `appIconAlt_2x.png`. |
18+
19+
## Visual concept
20+
21+
Shield silhouette (security / protection) containing a green
22+
checkmark (whitelisted / allowed) above two horizontal lines
23+
representing the CSV list rows. Two-color rule at 36×36: navy
24+
silhouette + green accent — keeps the symbol legible at small
25+
sizes without muddling.
26+
27+
## Color palette
28+
29+
| Token | Light SVG | Dark SVG | Role |
30+
| --- | --- | --- | --- |
31+
| Shield body | `#1F3A5F` | `#2C5282` (+ `#6BA5E0` rim) | Primary silhouette |
32+
| Checkmark | `#4CAF50` | `#4CAF50` | "Approved" affordance (Material green) |
33+
| List rows | `#4A6FA5` | `#B8C5D6` | Subtle "this is a list" hint |
34+
35+
The checkmark green is identical in both variants so the
36+
"approved" affordance is unmistakable regardless of which Splunk
37+
theme the launcher is in.
38+
39+
## Required PNG export sizes
40+
41+
Splunk's documented icon convention (per the
42+
`splunk-app-developer-tools` docs):
43+
44+
| Filename | Source SVG | Width × Height | Destination directory |
45+
| --- | --- | --- | --- |
46+
| `appIcon.png` | `appIcon-light.svg` | **36 × 36** | `appserver/static/` |
47+
| `appIcon_2x.png` | `appIcon-light.svg` | **72 × 72** | `appserver/static/` |
48+
| `appIconAlt.png` | `appIcon-dark.svg` | **36 × 36** | `appserver/static/` |
49+
| `appIconAlt_2x.png` | `appIcon-dark.svg` | **72 × 72** | `appserver/static/` |
50+
51+
For Splunkbase listing (carousel header / publisher dashboard),
52+
also export:
53+
54+
| Filename | Source SVG | Width × Height | Purpose |
55+
| --- | --- | --- | --- |
56+
| `wl_manager-icon-144.png` | `appIcon-light.svg` | **144 × 144** | Splunkbase listing thumbnail (light variant only — Splunkbase doesn't theme) |
57+
| `wl_manager-icon-512.png` | `appIcon-light.svg` | **512 × 512** | High-DPI fallback + future use |
58+
59+
Splunkbase exports live outside `appserver/static/` (they are
60+
uploaded via the Splunkbase publisher web UI, not shipped in the
61+
`.spl`). Convention is to place them at the repo root under a
62+
gitignored `dist/` directory or here under `docs/icons/exports/`.
63+
64+
## Inkscape export workflow
65+
66+
[Inkscape](https://inkscape.org) is the recommended editor —
67+
free, open-source, multi-platform, and has the cleanest SVG → PNG
68+
pipeline of the free options.
69+
70+
### One-time setup
71+
72+
1. Install Inkscape from <https://inkscape.org/release/>.
73+
2. Open `appIcon-light.svg` in Inkscape (File → Open).
74+
3. (Optional) tweak colors, shape, or proportions — the SVG is
75+
structured to be readable by hand. Common tweaks:
76+
- Change `#1F3A5F` to your preferred navy via Edit → Find/Replace
77+
(Ctrl-F) → "Replace text in property values".
78+
- Adjust the checkmark stroke-width (currently `22`) for chunkier
79+
or thinner strokes.
80+
- Move the list-row rectangles up/down by editing their `y`
81+
attribute.
82+
83+
### Per-size PNG export
84+
85+
For each of the four Splunk-required sizes:
86+
87+
1. File → Export… (Shift-Ctrl-E).
88+
2. In the right-hand panel, set:
89+
- **Document** tab selected (exports the full viewBox, not just
90+
selected geometry)
91+
- **Width** and **Height**: 36 and 36 (or 72×72, 144×144, 512×512
92+
per the table above)
93+
- **Bit depth**: RGBA_8 (default — preserves transparent
94+
background)
95+
- **DPI**: 96 (default — irrelevant for PNG; size is set by
96+
Width × Height)
97+
- **Format**: PNG
98+
3. Click **Export**.
99+
4. Save to `appserver/static/<name>.png` per the path table above.
100+
101+
Repeat for the `-dark.svg` source for the Alt variants.
102+
103+
### Quick command-line export (alternative to GUI)
104+
105+
If Inkscape's CLI is on your `PATH`, you can batch-export with one
106+
command per file:
107+
108+
```bash
109+
# From repo root:
110+
inkscape docs/icons/appIcon-light.svg \
111+
--export-type=png \
112+
--export-filename=appserver/static/appIcon.png \
113+
--export-width=36 --export-height=36
114+
115+
inkscape docs/icons/appIcon-light.svg \
116+
--export-type=png \
117+
--export-filename=appserver/static/appIcon_2x.png \
118+
--export-width=72 --export-height=72
119+
120+
inkscape docs/icons/appIcon-dark.svg \
121+
--export-type=png \
122+
--export-filename=appserver/static/appIconAlt.png \
123+
--export-width=36 --export-height=36
124+
125+
inkscape docs/icons/appIcon-dark.svg \
126+
--export-type=png \
127+
--export-filename=appserver/static/appIconAlt_2x.png \
128+
--export-width=72 --export-height=72
129+
```
130+
131+
On Windows, the Inkscape binary is typically at
132+
`C:\Program Files\Inkscape\bin\inkscape.exe` — substitute the full
133+
path or add it to `PATH` first.
134+
135+
## Verifying the PNGs are wired correctly
136+
137+
After exporting, deploy to the dev container and confirm Splunk
138+
picks them up:
139+
140+
```bash
141+
# Deploy the 4 PNGs to the dev container's static/ dir
142+
MSYS_NO_PATHCONV=1 docker cp appserver/static/appIcon.png wl_manager_test:/opt/splunk/etc/apps/wl_manager/appserver/static/appIcon.png
143+
MSYS_NO_PATHCONV=1 docker cp appserver/static/appIcon_2x.png wl_manager_test:/opt/splunk/etc/apps/wl_manager/appserver/static/appIcon_2x.png
144+
MSYS_NO_PATHCONV=1 docker cp appserver/static/appIconAlt.png wl_manager_test:/opt/splunk/etc/apps/wl_manager/appserver/static/appIconAlt.png
145+
MSYS_NO_PATHCONV=1 docker cp appserver/static/appIconAlt_2x.png wl_manager_test:/opt/splunk/etc/apps/wl_manager/appserver/static/appIconAlt_2x.png
146+
147+
# Bump the build number in default/app.conf (Splunk caches icon assets
148+
# under the same urlArgs cache-bust mechanism as JS/CSS — see
149+
# docs/SPLUNK_QUIRKS.md "Splunk caches static assets aggressively").
150+
151+
# Restart Splunk (icons load at app-startup, not on each page load)
152+
MSYS_NO_PATHCONV=1 docker exec -u splunk wl_manager_test /opt/splunk/bin/splunk restart
153+
```
154+
155+
Then load `http://localhost:8000/en-US/app/launcher/home` and
156+
confirm the Whitelist Manager tile shows the new icon. Toggle to
157+
Splunk's dark theme to verify the Alt variant is picked up.
158+
159+
## Why we ship SVGs at all (rather than just PNGs)
160+
161+
The PNGs are what Splunk actually uses at runtime. The SVGs are
162+
the **maintenance source**. If a future contributor wants to
163+
change the icon (re-color, rebrand, tweak shape), they edit the
164+
SVG, re-export, commit both. Without the SVG master, every
165+
re-design starts from scratch — and that path produces visually
166+
inconsistent icons across releases.
167+
168+
This pattern follows the same principle used in `docs/screenshots/`:
169+
keep the editable source alongside the rendered output, but exclude
170+
the source from the customer payload.

docs/icons/appIcon-dark.svg

Lines changed: 49 additions & 0 deletions
Loading

docs/icons/appIcon-light.svg

Lines changed: 54 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)