pressship 0.1.15 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,7 +16,7 @@
16
16
  <a href="https://www.npmjs.com/package/pressship"><img alt="npm" src="https://img.shields.io/npm/v/pressship?color=3858e9&logo=npm&logoColor=white&style=flat-square" /></a>
17
17
  <a href="https://wordpress.org/plugins/developers/"><img alt="WordPress.org" src="https://img.shields.io/badge/WordPress.org-plugin%20directory-21759b?logo=wordpress&logoColor=white&style=flat-square" /></a>
18
18
  <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-3858e9?style=flat-square" /></a>
19
- <a href="https://github.com/f/pressship"><img alt="GitHub stars" src="https://img.shields.io/github/stars/f/pressship?style=flat-square&logo=github&color=1e293b" /></a>
19
+ <a href="https://github.com/Automattic/pressship"><img alt="GitHub stars" src="https://img.shields.io/github/stars/Automattic/pressship?style=flat-square&logo=github&color=1e293b" /></a>
20
20
  </p>
21
21
 
22
22
  <p align="center">
@@ -70,6 +70,7 @@ That's it. Pressship handles browser-based login, packaging, readme validation,
70
70
  - **Submission state inspector** — reads the logged-in developer page to surface review status, slug, reupload availability, and Plugin Check links.
71
71
  - **SVN release workflow** — handles checkout, trunk sync, tag creation, and commit.
72
72
  - **WordPress Playground demos** — boot any local path or hosted slug in Playground using the plugin's own WP/PHP requirements.
73
+ - **Pressship Studio** — a local VS Code-style workspace with file tabs, Playground previews, AI assistance, release management, package-size checks, and CLI command hints in the terminal.
73
74
  - **`.pressshipignore` + glob ignores** — sensible defaults, easy per-command overrides.
74
75
  - **Agent skill included** — a Pressship publishing skill for coding agents (Codex, Claude Code, etc.).
75
76
  - **Beautiful terminal UX** — colored output, progress indicators, structured findings.
@@ -115,7 +116,7 @@ pressship <command> --help
115
116
  Pressship can also be installed as a WP-CLI package:
116
117
 
117
118
  ```bash
118
- wp package install f/pressship
119
+ wp package install Automattic/pressship
119
120
  ```
120
121
 
121
122
  That adds a `wp ship` command:
@@ -260,7 +261,9 @@ pressship studio --no-open
260
261
  pressship studio --port 9478
261
262
  ```
262
263
 
263
- `studio` starts a localhost-only Pressship Studio workspace. It lists plugins from the saved WordPress.org session, remembers local plugin paths, clones and updates WordPress.org SVN checkouts, shows plugin metadata and readmes, opens local plugins in a VS Code-style editor, streams Playground output into the Studio terminal, previews Playground in an iframe, checks version state, bumps patch/minor/major versions, and runs dry-run-first publish/release flows.
264
+ `studio` starts a localhost-only Pressship Studio workspace. It lists plugins from the saved WordPress.org session, remembers local plugin paths, clones and updates WordPress.org SVN checkouts, shows plugin metadata and readmes, opens local plugins in a VS Code-style editor, streams Playground output into the Studio terminal, previews Playground in an iframe, checks package size, manages `.pressshipignore`, checks version state, bumps patch/minor/major versions, and runs dry-run-first publish/release flows.
265
+
266
+ Studio also prints the equivalent `npx pressship ...` command in its terminal for CLI-backed actions such as Playground, Plugin Check, package size, version bumps, and publish dry runs.
264
267
 
265
268
  By default it binds to `127.0.0.1`, generates a per-run token for mutating API requests, and uses the same local Pressship config directory as the CLI.
266
269
 
@@ -406,13 +409,13 @@ pressship release ./my-plugin --no-install-svn
406
409
  Pressship ships with a publishing skill for coding agents (Codex, Claude Code, etc.). It teaches your agent to publish WordPress plugins cautiously — dry-run first, state-aware, with a final review step before any upload.
407
410
 
408
411
  ```bash
409
- npx skills add f/pressship --skill wordpress-plugin-publish -a codex
412
+ npx skills add Automattic/pressship --skill wordpress-plugin-publish -a codex
410
413
  ```
411
414
 
412
415
  Replace `codex` with another supported agent name, e.g. `claude-code`. List available skills first:
413
416
 
414
417
  ```bash
415
- npx skills add f/pressship --list
418
+ npx skills add Automattic/pressship --list
416
419
  ```
417
420
 
418
421
  ## Configuration
@@ -552,7 +555,7 @@ Pressship is built on the work of many people and projects:
552
555
 
553
556
  ## Disclaimer
554
557
 
555
- **Pressship is an independent, community project.** It is not affiliated with, endorsed by, or sponsored by WordPress, WordPress.org, the WordPress Foundation, or Automattic. The WordPress® trademark is the property of the WordPress Foundation.
558
+ **Pressship is an Automattic-maintained community project.** It is currently unofficial tooling for WordPress.org plugin publishing workflows, not an official WordPress.org service or a WordPress Foundation project. WordPress® is a trademark of the WordPress Foundation.
556
559
 
557
560
  ## License
558
561
 
package/assets/web/app.js CHANGED
@@ -76,14 +76,14 @@ const HARNESS_ICON = {
76
76
  const STUDIO_LAYOUT_STORAGE_KEY = "pressship.studio.layout.v1";
77
77
 
78
78
  const STUDIO_LAYOUT_DEFAULTS = {
79
- files: 260,
79
+ files: 220,
80
80
  ai: 330,
81
81
  terminal: 190,
82
82
  checkNotes: 152
83
83
  };
84
84
 
85
85
  const STUDIO_LAYOUT_LIMITS = {
86
- files: { min: 180, max: 560 },
86
+ files: { min: 160, max: 440 },
87
87
  ai: { min: 260, max: 720 },
88
88
  terminal: { min: 100, max: 600 },
89
89
  checkNotes: { min: 80, max: 520 }
@@ -3461,15 +3461,19 @@ function renderStudioAiChangeCard(change) {
3461
3461
  <article class="studio-ai-change-card${selected ? " is-selected" : ""}">
3462
3462
  <button type="button" class="studio-ai-change" data-action="studio-ai-change" data-path="${escapeAttr(change.path)}">
3463
3463
  <span class="dashicons ${change.status === "deleted" ? "dashicons-trash" : studioFileIcon(change.path)}" aria-hidden="true"></span>
3464
- <span>${escapeHtml(change.path)}</span>
3465
- <small>${escapeHtml(studioAiPatchSummary(change))}</small>
3464
+ <span class="studio-ai-change-main">
3465
+ <span class="studio-ai-change-path">${escapeHtml(change.path)}</span>
3466
+ <small>${escapeHtml(studioAiPatchSummary(change))}</small>
3467
+ </span>
3466
3468
  </button>
3467
3469
  <div class="studio-ai-change-actions" aria-label="${escapeAttr(`Review ${change.path}`)}">
3468
3470
  <button type="button" class="studio-ai-change-action is-accept" data-action="studio-ai-accept" data-path="${escapeAttr(change.path)}" title="Accept patch" aria-label="${escapeAttr(`Accept patch for ${change.path}`)}">
3469
3471
  <span class="dashicons dashicons-yes-alt" aria-hidden="true"></span>
3472
+ <span>Accept</span>
3470
3473
  </button>
3471
3474
  <button type="button" class="studio-ai-change-action is-reject" data-action="studio-ai-reject" data-path="${escapeAttr(change.path)}" title="Reject patch" aria-label="${escapeAttr(`Reject patch for ${change.path}`)}">
3472
3475
  <span class="dashicons dashicons-no-alt" aria-hidden="true"></span>
3476
+ <span>Reject</span>
3473
3477
  </button>
3474
3478
  </div>
3475
3479
  </article>
@@ -4468,12 +4472,16 @@ function handleStudioJobEvent(id, payload) {
4468
4472
  }
4469
4473
  } else if (payload.type === "log") {
4470
4474
  if (isAiJob) {
4471
- appendStudioAiOutput(payload.data?.message ?? payload.data, "log");
4472
- if (payload.data?.data?.changedFiles) {
4475
+ const aiLogData = payload.data?.data;
4476
+ if (aiLogData?.changedFiles) {
4473
4477
  mergeStudioAiChangedFiles(payload.data.data.changedFiles);
4474
4478
  updateStudioAiSidebar();
4475
4479
  renderStudio();
4476
4480
  remountStudioEditorIfNeeded();
4481
+ } else if (aiLogData?.proposedChanges) {
4482
+ return;
4483
+ } else {
4484
+ appendStudioAiOutput(payload.data?.message ?? payload.data, "log");
4477
4485
  }
4478
4486
  } else {
4479
4487
  appendStudioTerminal(payload.data?.message ?? payload.data, "log");
@@ -4710,6 +4718,7 @@ async function mountStudioEditor(content) {
4710
4718
  modified: modifiedModel
4711
4719
  });
4712
4720
  state.studio.editorKind = "monaco-diff";
4721
+ revealStudioAiPatchChange(aiPatch);
4713
4722
  return;
4714
4723
  }
4715
4724
 
@@ -4861,6 +4870,69 @@ function applyStudioAiPatchMarkers() {
4861
4870
  );
4862
4871
  }
4863
4872
 
4873
+ function firstStudioAiPatchLocation(change) {
4874
+ const hunks = change?.hunks?.length
4875
+ ? change.hunks
4876
+ : change
4877
+ ? buildStudioAiPatchHunks(change.beforeContent ?? "", change.afterContent ?? "")
4878
+ : [];
4879
+
4880
+ for (const hunk of hunks) {
4881
+ let oldLine = Number(hunk.oldStart) || 1;
4882
+ let newLine = Number(hunk.newStart) || 1;
4883
+
4884
+ for (const line of hunk.lines ?? []) {
4885
+ if (line.type === "add" || line.type === "delete") {
4886
+ return {
4887
+ oldLine: Math.max(1, oldLine),
4888
+ newLine: Math.max(1, newLine)
4889
+ };
4890
+ }
4891
+ if (line.type === "context") {
4892
+ oldLine += 1;
4893
+ newLine += 1;
4894
+ } else if (line.type === "add") {
4895
+ newLine += 1;
4896
+ } else if (line.type === "delete") {
4897
+ oldLine += 1;
4898
+ }
4899
+ }
4900
+ }
4901
+
4902
+ return null;
4903
+ }
4904
+
4905
+ function revealStudioAiPatchChange(change) {
4906
+ const location = firstStudioAiPatchLocation(change);
4907
+ if (!location) {
4908
+ return;
4909
+ }
4910
+
4911
+ requestAnimationFrame(() => {
4912
+ if (state.studio.editorKind === "monaco-diff" && state.studio.editor) {
4913
+ const originalEditor = state.studio.editor.getOriginalEditor?.();
4914
+ const modifiedEditor = state.studio.editor.getModifiedEditor?.();
4915
+ const originalModel = originalEditor?.getModel?.();
4916
+ const modifiedModel = modifiedEditor?.getModel?.();
4917
+ const oldLine = originalModel ? clampEditorLine(originalModel, location.oldLine) : location.oldLine;
4918
+ const newLine = modifiedModel ? clampEditorLine(modifiedModel, location.newLine) : location.newLine;
4919
+
4920
+ originalEditor?.revealLineInCenter?.(oldLine);
4921
+ modifiedEditor?.revealLineInCenter?.(newLine);
4922
+ originalEditor?.setPosition?.({ lineNumber: oldLine, column: 1 });
4923
+ modifiedEditor?.setPosition?.({ lineNumber: newLine, column: 1 });
4924
+ modifiedEditor?.focus?.();
4925
+ return;
4926
+ }
4927
+
4928
+ if (state.studio.editorKind === "textarea-diff" && state.studio.editor) {
4929
+ const offset = offsetForLineColumn(state.studio.editor.value, location.oldLine, 1);
4930
+ state.studio.editor.focus();
4931
+ state.studio.editor.setSelectionRange(offset, offset);
4932
+ }
4933
+ });
4934
+ }
4935
+
4864
4936
  function revealStudioCheckNote(line, column = 1) {
4865
4937
  if (!line) {
4866
4938
  return;
@@ -3203,7 +3203,7 @@ body[data-active-view="studio"] #notice-stack {
3203
3203
  .studio-main {
3204
3204
  display: grid;
3205
3205
  grid-template-columns:
3206
- var(--studio-files-width, 260px)
3206
+ var(--studio-files-width, 220px)
3207
3207
  6px
3208
3208
  minmax(0, 1fr)
3209
3209
  6px
@@ -5210,18 +5210,18 @@ body.is-studio-resizing-v iframe {
5210
5210
 
5211
5211
  .studio-ai-changes {
5212
5212
  grid-row: 3;
5213
- max-height: 120px;
5213
+ max-height: 176px;
5214
5214
  min-height: 0;
5215
5215
  overflow: auto;
5216
5216
  border-bottom: 1px solid var(--wp-border);
5217
- background: var(--wp-info-bg);
5217
+ background: var(--wp-surface-alt);
5218
5218
  }
5219
5219
 
5220
5220
  .studio-ai-changes header {
5221
5221
  align-items: center;
5222
- display: inline-flex;
5222
+ display: flex;
5223
5223
  gap: 6px;
5224
- padding: 8px 10px 5px;
5224
+ padding: 8px 10px 6px;
5225
5225
  color: var(--wp-text);
5226
5226
  font-size: 11px;
5227
5227
  }
@@ -5234,38 +5234,39 @@ body.is-studio-resizing-v iframe {
5234
5234
  }
5235
5235
 
5236
5236
  .studio-ai-change-list {
5237
- display: flex;
5238
- gap: 6px;
5239
- overflow-x: auto;
5237
+ display: grid;
5238
+ gap: 8px;
5240
5239
  padding: 0 10px 10px;
5241
5240
  }
5242
5241
 
5243
5242
  .studio-ai-change-card {
5244
5243
  display: grid;
5245
- flex: 0 0 min(220px, 82%);
5246
- grid-template-columns: minmax(0, 1fr) auto;
5247
- align-items: stretch;
5248
- border: 1px solid #b7d9ee;
5244
+ gap: 8px;
5245
+ border: 1px solid var(--wp-border);
5249
5246
  border-radius: var(--wp-radius-s);
5250
5247
  background: var(--wp-surface);
5251
5248
  box-shadow: var(--wp-shadow-sm);
5249
+ padding: 8px;
5252
5250
  }
5253
5251
 
5254
5252
  .studio-ai-change-card.is-selected {
5255
5253
  border-color: var(--wp-admin-theme-color);
5254
+ box-shadow: 0 0 0 1px var(--wp-admin-theme-color);
5256
5255
  }
5257
5256
 
5258
5257
  .studio-ai-change {
5259
- align-items: center;
5260
- display: inline-flex;
5261
- gap: 5px;
5258
+ align-items: start;
5259
+ display: grid;
5260
+ grid-template-columns: auto minmax(0, 1fr);
5261
+ gap: 8px;
5262
5262
  min-width: 0;
5263
5263
  border: 0;
5264
+ border-radius: calc(var(--wp-radius-s) - 2px);
5264
5265
  background: transparent;
5265
5266
  color: var(--wp-text);
5266
5267
  cursor: pointer;
5267
- font-size: 11px;
5268
- padding: 5px 8px;
5268
+ font-size: 12px;
5269
+ padding: 2px;
5269
5270
  text-align: left;
5270
5271
  }
5271
5272
 
@@ -5276,7 +5277,24 @@ body.is-studio-resizing-v iframe {
5276
5277
  outline: none;
5277
5278
  }
5278
5279
 
5279
- .studio-ai-change span:nth-child(2) {
5280
+ .studio-ai-change > .dashicons {
5281
+ margin-top: 1px;
5282
+ color: var(--wp-admin-theme-color);
5283
+ font-size: 16px;
5284
+ height: 16px;
5285
+ width: 16px;
5286
+ }
5287
+
5288
+ .studio-ai-change-main {
5289
+ display: grid;
5290
+ gap: 3px;
5291
+ min-width: 0;
5292
+ }
5293
+
5294
+ .studio-ai-change-path {
5295
+ color: var(--wp-heading);
5296
+ font-weight: 600;
5297
+ line-height: 1.25;
5280
5298
  overflow: hidden;
5281
5299
  text-overflow: ellipsis;
5282
5300
  white-space: nowrap;
@@ -5284,29 +5302,40 @@ body.is-studio-resizing-v iframe {
5284
5302
 
5285
5303
  .studio-ai-change small {
5286
5304
  color: var(--wp-text-muted);
5287
- font-size: 9px;
5305
+ font-size: 10px;
5306
+ letter-spacing: 0.04em;
5288
5307
  text-transform: uppercase;
5289
5308
  }
5290
5309
 
5291
5310
  .studio-ai-change-actions {
5292
5311
  display: grid;
5293
- grid-template-columns: 26px 26px;
5294
- border-left: 1px solid var(--wp-border);
5312
+ grid-template-columns: repeat(2, minmax(0, 1fr));
5313
+ gap: 6px;
5295
5314
  }
5296
5315
 
5297
5316
  .studio-ai-change-action {
5298
- display: grid;
5299
- place-items: center;
5300
- width: 26px;
5301
- border: 0;
5302
- border-left: 1px solid var(--wp-border-soft);
5317
+ align-items: center;
5318
+ justify-content: center;
5319
+ display: inline-flex;
5320
+ gap: 5px;
5321
+ min-height: 28px;
5322
+ border: 1px solid var(--wp-border);
5323
+ border-radius: calc(var(--wp-radius-s) - 2px);
5303
5324
  background: transparent;
5304
5325
  color: var(--wp-text-muted);
5305
5326
  cursor: pointer;
5327
+ font-size: 11px;
5328
+ font-weight: 600;
5306
5329
  }
5307
5330
 
5308
- .studio-ai-change-action:first-child {
5309
- border-left: 0;
5331
+ .studio-ai-change-action.is-accept {
5332
+ border-color: rgba(0, 128, 0, 0.32);
5333
+ color: var(--wp-success);
5334
+ }
5335
+
5336
+ .studio-ai-change-action.is-reject {
5337
+ border-color: rgba(220, 38, 38, 0.32);
5338
+ color: var(--wp-error);
5310
5339
  }
5311
5340
 
5312
5341
  .studio-ai-change-action:hover,
@@ -5318,11 +5347,13 @@ body.is-studio-resizing-v iframe {
5318
5347
  .studio-ai-change-action.is-accept:hover,
5319
5348
  .studio-ai-change-action.is-accept:focus-visible {
5320
5349
  color: var(--wp-success);
5350
+ border-color: var(--wp-success);
5321
5351
  }
5322
5352
 
5323
5353
  .studio-ai-change-action.is-reject:hover,
5324
5354
  .studio-ai-change-action.is-reject:focus-visible {
5325
5355
  color: var(--wp-error);
5356
+ border-color: var(--wp-error);
5326
5357
  }
5327
5358
 
5328
5359
  .studio-ai-composer {
@@ -5561,7 +5592,7 @@ body.is-studio-resizing-v iframe {
5561
5592
  .studio-main {
5562
5593
  grid-template-columns:
5563
5594
  48px
5564
- var(--studio-files-width, 260px)
5595
+ var(--studio-files-width, 220px)
5565
5596
  6px
5566
5597
  minmax(0, 1fr)
5567
5598
  6px
@@ -5574,7 +5605,7 @@ body.is-studio-resizing-v iframe {
5574
5605
  }
5575
5606
 
5576
5607
  .studio-root.has-files.is-secondary-sidebar-collapsed .studio-main {
5577
- grid-template-columns: 48px var(--studio-files-width, 260px) 6px minmax(0, 1fr);
5608
+ grid-template-columns: 48px var(--studio-files-width, 220px) 6px minmax(0, 1fr);
5578
5609
  }
5579
5610
 
5580
5611
  .studio-root.is-files-collapsed.is-secondary-sidebar-collapsed .studio-main {
@@ -6052,7 +6083,15 @@ body.is-studio-resizing-v iframe {
6052
6083
 
6053
6084
  .studio-ai-changes {
6054
6085
  border-bottom-color: var(--studio-vscode-border);
6055
- background: #1f2937;
6086
+ background: #202020;
6087
+ }
6088
+
6089
+ .studio-ai-change-path {
6090
+ color: var(--studio-vscode-text);
6091
+ }
6092
+
6093
+ .studio-ai-change-action {
6094
+ border-color: var(--studio-vscode-border-strong);
6056
6095
  }
6057
6096
 
6058
6097
  .studio-ai-composer textarea {
@@ -6204,7 +6243,7 @@ body.is-studio-resizing-v iframe {
6204
6243
  .studio-main {
6205
6244
  grid-template-columns:
6206
6245
  48px
6207
- var(--studio-files-width, 260px)
6246
+ var(--studio-files-width, 220px)
6208
6247
  6px
6209
6248
  minmax(0, 1fr)
6210
6249
  6px
@@ -6216,7 +6255,7 @@ body.is-studio-resizing-v iframe {
6216
6255
  }
6217
6256
 
6218
6257
  .studio-root.has-files.is-secondary-sidebar-collapsed .studio-main {
6219
- grid-template-columns: 48px var(--studio-files-width, 260px) 6px minmax(0, 1fr);
6258
+ grid-template-columns: 48px var(--studio-files-width, 220px) 6px minmax(0, 1fr);
6220
6259
  }
6221
6260
 
6222
6261
  .studio-root.is-files-collapsed.is-secondary-sidebar-collapsed .studio-main {
@@ -7411,9 +7450,10 @@ td code {
7411
7450
  }
7412
7451
 
7413
7452
  .ps-release-tag-row {
7414
- display: flex;
7453
+ display: grid;
7454
+ grid-template-columns: minmax(0, 1fr) auto;
7415
7455
  align-items: center;
7416
- gap: 6px;
7456
+ gap: 5px 6px;
7417
7457
  padding: 5px 8px;
7418
7458
  border-bottom: 1px solid var(--wp-border-soft);
7419
7459
  min-height: 30px;
@@ -7434,12 +7474,13 @@ td code {
7434
7474
  .ps-release-tag-name {
7435
7475
  display: inline-flex;
7436
7476
  align-items: center;
7477
+ flex-wrap: wrap;
7437
7478
  gap: 5px;
7438
7479
  font-weight: 500;
7439
7480
  color: var(--wp-heading);
7440
- flex: 1 1 auto;
7441
7481
  min-width: 0;
7442
7482
  font-size: 12px;
7483
+ line-height: 1.25;
7443
7484
  }
7444
7485
 
7445
7486
  .ps-release-tag-name .dashicons {
@@ -7486,9 +7527,33 @@ td code {
7486
7527
 
7487
7528
  .ps-release-tag-actions {
7488
7529
  display: inline-flex;
7530
+ align-items: center;
7531
+ justify-content: flex-end;
7532
+ min-width: 0;
7489
7533
  gap: 4px;
7490
7534
  }
7491
7535
 
7536
+ .ps-release-tag-row.is-uncommitted {
7537
+ align-items: start;
7538
+ }
7539
+
7540
+ .ps-release-tag-row.is-uncommitted .ps-release-tag-name,
7541
+ .ps-release-tag-row.is-uncommitted .ps-release-tag-actions {
7542
+ grid-column: 1 / -1;
7543
+ }
7544
+
7545
+ .ps-release-tag-row.is-uncommitted .ps-release-tag-actions {
7546
+ display: grid;
7547
+ grid-template-columns: minmax(0, 1fr) auto;
7548
+ padding-left: 20px;
7549
+ }
7550
+
7551
+ .ps-release-tag-row.is-uncommitted .ps-release-tag-local-note {
7552
+ min-width: 0;
7553
+ white-space: normal;
7554
+ line-height: 1.15;
7555
+ }
7556
+
7492
7557
  .ps-release-tag-actions .button.is-confirming,
7493
7558
  .ps-release-confirm-button.is-confirming {
7494
7559
  background: var(--wp-warning);
@@ -8379,6 +8444,14 @@ td code {
8379
8444
  color: var(--studio-vscode-text);
8380
8445
  }
8381
8446
 
8447
+ .studio-root[data-theme="light"] .studio-ai-change-path {
8448
+ color: var(--studio-vscode-text);
8449
+ }
8450
+
8451
+ .studio-root[data-theme="light"] .studio-ai-change-action {
8452
+ border-color: var(--studio-vscode-border);
8453
+ }
8454
+
8382
8455
  .studio-root[data-theme="light"] .studio-terminal-output {
8383
8456
  background: #ffffff;
8384
8457
  }
package/composer.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "f/pressship",
2
+ "name": "automattic/pressship",
3
3
  "type": "wp-cli-package",
4
4
  "description": "Run Pressship from WP-CLI by forwarding to the Node.js Pressship package.",
5
5
  "homepage": "https://pressship.org",
@@ -22,7 +22,7 @@
22
22
  ]
23
23
  },
24
24
  "support": {
25
- "issues": "https://github.com/f/pressship/issues",
26
- "source": "https://github.com/f/pressship"
25
+ "issues": "https://github.com/Automattic/pressship/issues",
26
+ "source": "https://github.com/Automattic/pressship"
27
27
  }
28
28
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pressship",
3
- "version": "0.1.15",
3
+ "version": "0.2.0",
4
4
  "description": "Submit and release WordPress.org plugins from the command line.",
5
5
  "homepage": "https://pressship.org",
6
6
  "bin": {