Skip to content

Commit 91d6449

Browse files
authored
Fix Studio app metadata for Linux software stores (#3335)
## Related issues - Fixes [RSM-1313](https://linear.app/a8c/issue/RSM-1313/fix-studio-app-description-in-the-stores-on-linux-systems) ## How AI was used in this PR Used AI to: - Pull the canonical Microsoft Store description copy from the Store API and adapt it for the Linux package metadata. - Walk through electron-installer-debian's defaults and template logic to identify why the synopsis and extended description were duplicating in the .deb control file. I reviewed each diff and pushed back on changes I didn't think were right (e.g. an earlier draft used `genericName` for `Name=`, which mismatched the runtime WMClass). ## Proposed Changes - **`forge.config.ts` MakerDeb options**: set explicit `productName: 'WordPress Studio'` and `description` (synopsis) + `productDescription` (long, mirrors MS Store copy in ASCII-safe punctuation). Without these, both fields fall back to `package.json.description`, producing a duplicated Description block. - **`desktop.ejs`**: hardcode `StartupWMClass=Studio` so the launcher entry stays linked to Electron's runtime WMClass even though `Name=` is now `WordPress Studio`. Without this, the launcher icon would not group with the running window. ## Testing Instructions On a Linux VM: 1. Build the .deb: `npm run make`. 2. Purge any prior install (for a clean slate): `sudo apt purge studio`. 3. Verify package metadata: - `dpkg-deb -I apps/studio/out/make/deb/<arch>/studio_*.deb` - `dpkg-deb --fsys-tarfile apps/studio/out/make/deb/<arch>/studio_*.deb | tar -xO ./usr/share/applications/studio.desktop` 4. Confirm title and description in the output above: - control `Description:` — new synopsis ("Meet Studio - ...") followed by the 3-paragraph long description. - `.desktop` — `Name=WordPress Studio`, `Comment=Meet Studio - ...`, `StartupWMClass=Studio`. 5. Open the .deb in the app center (double-click in Files, or `xdg-open apps/studio/out/make/deb/<arch>/studio_*.deb`). 6. Confirm title and description in the app center preview match the new copy. (See Known limitation re: title.) <img width="1926" height="1536" alt="CleanShot 2026-05-04 at 22 37 20@2x" src="https://github.com/user-attachments/assets/a837549d-fa30-482b-afaa-596cf6d7df71" /> ### Known limitation The pre-install software-store preview shows the lowercase Debian package name (`studio`) as the title, not `WordPress Studio`. PackageKit's local-deb plugin doesn't read AppStream metainfo from inside .deb files, only the control fields, and `Package:` must be lowercase per Debian policy. Renaming the package to `wordpress-studio` would address this but cascades into install paths, postinst probes, and `rc`-state migrations for users with existing `studio` installs — leaving for a follow-up issue. ## Pre-merge Checklist - [ ] Verified the rebuilt .deb's control + .desktop files - [ ] Verified software-store listing renders proper metadata after install
1 parent b4d0a3c commit 91d6449

3 files changed

Lines changed: 15 additions & 2 deletions

File tree

‎apps/studio/forge.config.ts‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,20 @@ const config: ForgeConfig = {
8282
new MakerZIP( {}, [ 'darwin' ] ),
8383
new MakerDeb( {
8484
options: {
85-
genericName: 'WordPress Studio',
85+
// Display name for app launchers and stores. Overrides
86+
// package.json.productName ("Studio") so Linux users see the
87+
// fully-qualified "WordPress Studio" in their menus.
88+
productName: 'WordPress Studio',
8689
categories: [ 'Utility' ],
8790
name: 'studio',
8891
bin: 'studio',
92+
// Synopsis and extended description shown by package managers and
93+
// software stores. Without these, electron-installer-debian falls
94+
// back to package.json.description for both, producing a duplicated
95+
// Description block. Copy mirrors the Microsoft Store listing.
96+
description: 'Meet Studio - a fast, free way to develop locally with WordPress.',
97+
productDescription:
98+
"Simplify WordPress site creation and management with Studio - WordPress.com's powerful, lightweight local development tool. Studio streamlines your workflow with instant WordPress setup, one-click WP Admin access, and a code-agnostic environment. No Docker, MySQL, or NGINX required. Get real-time feedback from clients or collaborators with easy-to-share demo sites. And with help from Studio Assistant, you can speed up plugin management, run WP-CLI commands, and automate tasks right from the intuitive chat interface.",
8999
mimeType: [ 'x-scheme-handler/wp-studio' ],
90100
icon: path.join( __dirname, 'assets', 'studio-app-icon.png' ),
91101
desktopTemplate: path.join( __dirname, 'installers', 'desktop.ejs' ),

‎apps/studio/installers/desktop.ejs‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
Icon=<%= name %>
77
<% } %>Type=Application
88
StartupNotify=true
9-
StartupWMClass=<%= productName %>
9+
# Must match Electron's runtime WMClass (derived from app.getName(), i.e. package.json.name).
10+
# Don't template from productName — the launcher icon won't group with the running window.
11+
StartupWMClass=Studio
1012
<% if (categories && categories.length) { %>Categories=<%= categories.join(';') %>;
1113
<% } %><% if (mimeType && mimeType.length) { %>MimeType=<%= mimeType.join(';') %>;
1214
<% } %>

‎apps/studio/package.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"productName": "Studio",
66
"version": "1.8.2",
77
"description": "Local WordPress development environment using Playgrounds",
8+
"homepage": "https://developer.wordpress.com/studio/",
89
"license": "GPL-2.0-or-later",
910
"main": "dist/main/index.js",
1011
"config": {

0 commit comments

Comments
 (0)