Make WordPress Core

Opened 3 years ago

Last modified 7 days ago

#59890 new defect (bug)

Brower console output shows horizontal ellipsis as html entity

Reported by: Ov3rfly Owned by:
Priority: normal Milestone: Awaiting Review
Component: Upgrade/Install Version:
Severity: minor Keywords: has-patch has-unit-tests
Cc: Focuses:

Description

When installing a plugin etc. the browser console output shows horizontal ellipsis as html entity …

Downloading installation package from https://downloads.wordpress.org/plugin/classic-editor.1.6.3.zip…
The authenticity of classic-editor.1.6.3.zip could not be verified as no signature was found.
Unpacking the package…

Observed with Firefox and Chrome in Windows.

In addition translations of the horizontal ellipsis part are inconsistent.

German (with added space before horizontal ellipsis entity):

Herunterladen des Installationspakets von %s …

French (with actual UTF-8 0xE2 0x80 0xA6 char instead of html entity)

Téléchargement du paquet d’installation depuis %s…

Attachments (1)

chrome-console.png​ (6.0 KB ) - added by Ov3rfly 3 years ago.

Download all attachments as: .zip

Change History (3)

#1 @sabernhardt
3 years ago

  • Component General → Upgrade/Install

This ticket was mentioned in ​PR #13962 on ​WordPress/wordpress-develop by ​@wpnomad.


7 days ago
#2

  • Keywords has-patch has-unit-tests added

Upgrader debug messages from Shiny Updates are logged to the browser console via wp.sanitize.stripTagsAndEncodeText(), which intentionally returns HTML-escaped text. Because the console shows plain text, messages appear with raw character references, e.g. Unpacking the package….

This PR strips tags and decodes character references with DOMParser (body.textContent) before logging, and skips non-string messages. stripTagsAndEncodeText() itself is unchanged, as other callers rely on its escaped output. Decoding happens client-side only because the same messages are also used in emails/logs server-side.

Tests

  • Adds QUnit tests for wp.updates.ajaxAlways() (tests/qunit/wp-admin/js/updates-ajax-always.js): decoding, tag stripping, no markup execution, non-string skipping. They fail without the fix.
  • Loads updates.js in the QUnit suite and fixes the _wpUpdatesItemCounts fixture (totals lacked counts, which made refreshCount() throw on load).

Testing instructions

  1. Go to Plugins > Add New, open the browser console.
  2. Install any plugin.
  3. Before: Downloading installation package from …zip…. After: Downloading installation package from …zip….

Use of AI Tools

AI assistance: Yes
Tool(s): Claude Code
Model(s): Claude Opus 5.5
Used for: Investigation, implementation, tests and local verification, under my direction.

---
This Pull Request is for code review only. Please keep all other discussion in the Trac ticket. Do not merge this Pull Request. See ​GitHub Pull Requests for Code Review in the Core Handbook for more details.

🤖 Generated with ​Claude Code

​https://claude.ai/code/session_014nJenDidRzoohF8JCEKbZ9

Note: See TracTickets for help on using tickets.