fix: rename bundled rstudio.svg to rproject.svg, add real RStudio icon by nickvigilante · Pull Request #26216 · coder/coder · GitHub
Skip to content

fix: rename bundled rstudio.svg to rproject.svg, add real RStudio icon#26216

Merged
nickvigilante merged 2 commits into
mainfrom
vigilante/product-383-bundled-iconrstudiosvg-appears-to-show-r-language-logo
Jun 10, 2026
Merged

fix: rename bundled rstudio.svg to rproject.svg, add real RStudio icon#26216
nickvigilante merged 2 commits into
mainfrom
vigilante/product-383-bundled-iconrstudiosvg-appears-to-show-r-language-logo

Conversation

@nickvigilante

@nickvigilante nickvigilante commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

The bundled /icon/rstudio.svg rendered the R language logo (gray oval, blue R), not the RStudio IDE logo, so templates using the rstudio coder_app and the bundled URL got the wrong artwork (#26211, PRODUCT-383).

This PR:

  • Renames the existing rstudio.svg (R language logo) to rproject.svg so the artwork stays available for templates that want it.
  • Adds a new rstudio.svg containing the actual RStudio R-ball logo, extracted from the Wikimedia source and normalized to viewBox="0 0 256 256" to match the rest of the icon set.
  • Adds rproject.svg to site/src/theme/icons.json so it appears in the icon picker and gallery alongside rstudio.svg.
  • Switches the coder_app "rstudio" example in docs/admin/templates/extending-templates/web-ides.md to reference /icon/rstudio.svg (and corrects display_name to "RStudio"), matching every other example on that page.
Path Before After
/icon/rstudio.svg R language logo RStudio R-ball
/icon/rproject.svg (did not exist) R language logo
Old rstudio.svg → new rproject.svg New rstudio.svg

Breaking-change note. Templates that referenced /icon/rstudio.svg expecting the R language oval will now render the RStudio R-ball. Templates that want the R language logo should switch to /icon/rproject.svg. The Linear issue acknowledges this tradeoff.

Client cache caveat. site/site.go serves everything under /icon/ with Cache-Control: public, max-age=31536000, immutable, so any browser that already loaded the old artwork at /icon/rstudio.svg can keep displaying it for up to a year before revalidating. A hard refresh (Ctrl/Cmd+Shift+R) clears it immediately. Cache-busting (hashed icon URLs) is out of scope for this fix and tracked as a possible follow-up against PRODUCT-383.

Implementation notes
  • Verified geometric fidelity by rendering the new SVG and a high-resolution crop of the Wikimedia source at 256x256 and computing the RMS pixel difference: 1.268/255 (~0.5%, essentially antialiasing noise).
  • Picked viewBox="0 0 256 256" because 139 of 142 SVGs in site/static/icon/ already use that viewBox.
  • Searched the repo for rstudio.svg references: the only direct one is site/src/theme/icons.json. The docs file references the rstudio coder_app slug, not the icon path, so the rename does not break any callsite.
  • R-ball geometry: source circle at (318.7, 312.9) radius 309.8 in the original viewBox 0 0 1784.1 625.9. Translating by (-8.9, -3.1) and scaling by 256/619.6 maps its bounding box onto 0 0 256 256. Path coordinates are pre-computed so the file ships with no transform layer.
  • Pre-commit hooks passed locally, including lint/site-icons.

Fixes #26211
Fixes PRODUCT-383


Generated by Coder Agents on behalf of @nickvigilante.

The bundled /icon/rstudio.svg was actually the R language logo (gray
oval, blue R), not the RStudio IDE logo. This was misleading when users
configured the rstudio coder_app slug and relied on the bundled icon.

- Rename site/static/icon/rstudio.svg to rproject.svg so the existing R
  language artwork stays available for templates that want it.
- Add a new site/static/icon/rstudio.svg with the actual RStudio R-ball
  logo (blue circle, white R), extracted from the Wikimedia source and
  normalized to viewBox 0 0 256 256 to match the rest of the icon set.
- Add rproject.svg to site/src/theme/icons.json so it shows up in the
  icon picker and gallery alongside rstudio.svg.
- Switch the RStudio example in docs/admin/templates/extending-templates/
  web-ides.md to use the bundled /icon/rstudio.svg URL, matching the
  convention used by every other coder_app on that page.

Existing templates that referenced /icon/rstudio.svg expecting the R
language oval will now render the RStudio R-ball. Templates that wanted
the R language icon should switch to /icon/rproject.svg.

Generated by Coder Agents on behalf of @nickvigilante.

Fixes #26211
Fixes PRODUCT-383
@linear-code

linear-code Bot commented Jun 10, 2026

Copy link
Copy Markdown

PRODUCT-383

@github-actions

Copy link
Copy Markdown

Docs preview

📖 View docs preview for docs/admin/templates/extending-templates/web-ides.md

@nickvigilante

Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@coder-agents-review

coder-agents-review Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Chat: Review in progress | View chat
Requested: 2026-06-10 13:26 UTC by @nickvigilante

deep-review v0.7.1 | Round 1 | f9dfa18..57d3bcc

Last posted: Round 1, 3 findings (1 P3, 1 Nit, 1 Note), COMMENT. Review

Finding inventory

Findings

# Sev Status Location Summary Round Reviewer Posted
CRF-1 P3 Open web-ides.md:243 display_name = "R Studio" misspells the product name (should be "RStudio") R1 Leorio Yes
CRF-2 Note Open rstudio.svg:1 Cache-Control immutable means browsers keep old icon for up to a year after content swap R1 Hisoka Yes
CRF-3 Nit Open rproject.svg:1 Naming inconsistency: other language icons use language name (python.svg, ruby.svg), not organization name R1 Gon Yes

Round log

Round 1

Panel. 1 P3, 1 Nit, 1 Note. Netero clean. Reviewed against f9dfa18..57d3bcc.

About deep-review

CRF = Coder Review Finding (P0-P4, Nit, Note)

Reviewer Focus
Bisky tests
Chopper ops/errors
Churn-guard change verification
Ging language modernization
Gon naming
Hisoka edge cases
Killua perf
Kite change integrity
Knov contracts
Knuckle SQL
Kurapika security
Law decomposition
Leorio docs
Luffy product
Mafu-san process
Mafuuu contracts
Melody dispatch/pairing
Meruem structural
Nami frontend
Netero mechanical checks
Pariston premise testing
Pen-botter product gaps
Razor verification
Robin duplication
Ryosuke Go arch
Takumi concurrency
Zoro shape

🤖 Managed by Coder Agents.

@coder-agents-review coder-agents-review Bot left a comment

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.

Clean, focused change. The rename is byte-identical, both SVGs conform to the icon set's viewBox convention, icons.json matches make gen output, and the docs example now uses the bundled path like every other IDE example on that page. Pariston stress-tested the problem framing across four alternative approaches and found this one is at the right causal level.

Severity count: 1 P3, 1 Nit, 1 Note.

The P3 is in the same code block the PR already touched, fixing the same class of RStudio branding error: display_name = "R Studio" has an errant space. The Note is about cache infrastructure, not a code defect.

Pariston: "I tried to build a case against this change across all four framings and couldn't. The problem is correctly understood: the file name and content were mismatched. The solution is proportional."


In reply to IC_kwDOGkVX1s8AAAABFmVHUw:

Nit [CRF-3] (site/static/icon/rproject.svg) Every other language icon in the set uses the language name: python.svg, ruby.svg, go.svg, java.svg, etc. rproject references the R Project foundation (r-project.org), not the language itself.

r.svg would be the most consistent name but is a single character, which is genuinely short for discoverability. r-lang.svg or r-language.svg would split the difference. Low severity because the name is accurate (it is the R Project logo) and the icon picker shows filenames, not slugs. (Gon)

🤖

🤖 This review was automatically generated with Coder Agents.

Comment thread docs/admin/templates/extending-templates/web-ides.md Outdated
@@ -1,14 +1,4 @@
<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">

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.

Note [CRF-2] The URL /icon/rstudio.svg doesn't change but the content does, and the server marks it immortal.

site/site.go:191 serves everything under icon/ with Cache-Control: public, max-age=31536000, immutable. Browsers that loaded the old R language oval will keep showing it for up to a year after upgrade. The immutable directive suppresses conditional requests, so Last-Modified and ETag won't help.

This is pre-existing infrastructure, not a bug in this PR. Every icon in the set has the same deal. But this is the first content swap at a stable icon path, so it's the first time the coupling bites. The breaking-change note describes what the server serves; it doesn't describe what cached browsers display. Worth a sentence in the note for operators. (Hisoka)

🤖

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good catch on the cache behavior, this is accurate. Confirmed: site/site.go serves everything under /icon/ with Cache-Control: public, max-age=31536000, immutable, so any browser that loaded the old R language oval at /icon/rstudio.svg can keep displaying it for up to a year, and immutable does suppress revalidation.

This is shared infrastructure behavior, not a defect introduced by this PR, but it's worth being explicit about for operators. I've extended the PR breaking-change note to call out the client cache, and updated the Linear ticket so we can track a follow-up on cache-busting or hashed icon URLs separately if we decide the year of staleness for content-swapped icons is worth fixing structurally.

For immediate mitigation, a hard refresh (Ctrl/Cmd+Shift+R) or an incognito session will pick up the new icon.

Not in scope for this PR; leaving the file content swap as-is per the task brief.

Reply generated by Coder Agents on behalf of @nickvigilante.

@mtojek mtojek left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks!

Comment thread docs/admin/templates/extending-templates/web-ides.md Outdated
@nickvigilante

Copy link
Copy Markdown
Contributor Author

@nickvigilante nickvigilante enabled auto-merge (squash) June 10, 2026 14:02
@nickvigilante nickvigilante merged commit 1dc12f8 into main Jun 10, 2026
36 of 38 checks passed
@nickvigilante nickvigilante deleted the vigilante/product-383-bundled-iconrstudiosvg-appears-to-show-r-language-logo branch June 10, 2026 14:06
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 10, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bundled /icon/rstudio.svg appears to show R language logo rather than RStudio logo

2 participants