Skip to content

Set partner portal favicon and verify app icon consistency - #248

Merged
abhi1693 merged 4 commits into
masterfrom
fix/app-favicon-consistency
Oct 19, 2026
Merged

abhi1693 merged 4 commits into
masterfrom
fix/app-favicon-consistency

Conversation

@abhi1693

Copy link
Copy Markdown
Owner

What changes and why?

The partner portal had no favicon or Apple touch icon metadata. It now uses the same shared DevFeed 32×32 PNG favicon and 180×180 PNG touch icon as the reader and admin app.

Browser regressions cover the reader, admin app, partner portal and both built extensions. They check a single declaration with the correct MIME type and dimensions, fetch and decode the images in the browser, and compare their bytes with the shared brand assets. Existing extension packaging tests also verify the 128×128 manifest icon. Brand assets and page layouts are unchanged.

Validation

  • Production builds passed for reader, admin and partner portal; both Chrome and Edge packages built successfully.
  • Dedicated favicon browser tests passed for reader, Chrome and Edge; full admin overview and partner portal browser suites passed with the icon assertions.
  • Shared icon generation, extension packaging and reader metadata tests: 6 passed.
  • Partner portal lint, Prettier and whitespace checks passed.
  • Icon verification uses actual browser fetch/decoding and asset comparisons. Browser-tab chrome is not captured by headless page screenshots; GitHub native screenshot upload is unavailable here.

Rollout notes

No API, database or configuration changes. This PR does not deploy the website or publish either extension package.

Ready for review

  • The description explains the change and validation, including gaps.
  • Relevant documentation and browser regressions are updated.

@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Lighthouse · ⚠️ Targets exceeded

⚠️ 5 target warnings · Bold values need attention.

Page FCP LCP CLS TBT JS Total
Latest (/latest) 1.06 s 3.47 s 0.001 85 ms 308 KiB 596 KiB
Article preview (/articles/…) 1.07 s 3.93 s 0.005 189 ms 312 KiB 615 KiB
Topics (/topics) 1.07 s 2.98 s 0.000 106 ms 309 KiB 447 KiB
Sources (/sources) 1.06 s 3.11 s 0.000 153 ms 322 KiB 463 KiB
Public profile (/users/…) 1.06 s 2.66 s 0.009 81 ms 270 KiB 405 KiB
Leaderboard (/leaderboard) 0.91 s 2.45 s 0.000 116 ms 266 KiB 364 KiB

Mobile reader · Three cold loads per page · Median timings · Largest transfer size.

Needs attention

Page Finding Measured Target / limit
Latest (/latest) ⚠️ Target · LCP 3.47 s 2.50 s
Article preview (/articles/…) ⚠️ Target · LCP 3.93 s 2.50 s
Topics (/topics) ⚠️ Target · LCP 2.98 s 2.50 s
Sources (/sources) ⚠️ Target · LCP 3.11 s 2.50 s
Public profile (/users/…) ⚠️ Target · LCP 2.66 s 2.50 s

Full reports and logs · 090c741 · Attempt 1

@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Backend unit coverage

PASS · minimum combined coverage 67.60%.

Tests: 5558 passed, 0 failed, 0 skipped. Source files: 348.

Workspace Lines Branches Combined
All backend code 73.43% 56.49% 69.76%
apps/admin-api 62.34% 31.71% 57.21%
apps/aggregator 72.64% 56.19% 68.90%
apps/api 78.48% 66.09% 76.21%
apps/article-enrichment-worker 80.00% 50.00% 71.43%
apps/cli 68.97% 42.93% 65.07%
apps/images-worker 80.00% 50.00% 71.43%
apps/mcp 84.14% 77.33% 82.91%
apps/notifications 83.33% 76.67% 81.75%
apps/partner-api 67.78% 41.46% 63.72%
apps/search-indexer 85.48% 85.71% 85.53%
apps/source-discovery-worker 80.00% 50.00% 71.43%
apps/user-api 61.83% 34.92% 56.90%
packages/core 74.61% 58.37% 70.71%
packages/http 90.76% 81.69% 88.77%

Unit coverage includes every backend workspace. PostgreSQL/Redis integration tests run separately.

Commit: 090c741 · HTML, JSON, XML reports and job logs · attempt 1

@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

PR reader API performance

Result: INCONCLUSIVE

2 inconclusive · 6 within threshold. Zero request failures across all six runs.

Base 02741d807c2b620925ef181619343700a14297a3 → PR 090c741b748c5120734e6147c60ab1c0ae33d36e

Three independent GitHub-hosted ARM64 runners, each measuring base and PR sequentially with alternating order and isolated resources for every sample. 16 users, 60 seconds/run, 1,000 synthetic articles, cache off, five PgBouncer slots.

Latency comparison

All latency values are in milliseconds; lower is better. Values are medians of three runs.

Route Base p95 PR p95 Change Result
All requests 88 91 +3 (+3.4%) Within threshold
Latest feed 110 130 +20 (+18.2%) Within threshold
Feed pagination 77 79 +2 (+2.6%) Within threshold
Article detail 54 64 +10 (+18.5%) Within threshold
Source feed 93 75 -18 (-19.4%) Within threshold
Topic feed 100 87 -13 (-13.0%) Inconclusive
Feed filters 60 62 +2 (+3.3%) Inconclusive
Sources 37 30 -7 (-18.9%) Within threshold
Topics 43 39 -4 (-9.3%) Within threshold
Additional latency and throughput metrics

Each cell shows base → PR. Latencies are in milliseconds.

Endpoint p50 p99 Requests/s
Aggregated 26 → 25 130 → 130 30.37 → 30.05
/v1/feed [latest] 42 → 41 160 → 160 8.43 → 8.53
/v1/feed [page] 25 → 25 110 → 110 3.78 → 3.77
/v1/articles/[id] 16 → 15 110 → 110 6.44 → 6.58
/v1/feed [source] 26 → 24 130 → 110 2.09 → 2.04
/v1/feed [topic] 27 → 28 120 → 120 2.01 → 2.11
/v1/feed/options 18 → 18 110 → 94 2.48 → 2.25
/v1/sources 12 → 9 62 → 72 2.48 → 2.25
/v1/topics 11 → 10 83 → 79 2.48 → 2.25
Individual runs
Run Requests Failures Exit code
Base 1 1688 0 0
Base 2 1767 0 0
Base 3 1704 0 0
PR 1 1707 0 0
PR 2 1662 0 0
PR 3 1716 0 0
How to interpret this report

Regressed / Improved: a p95 regression needs >20% and >20 ms increase in the medians and at least two head samples versus the base median. Improvements use the inverse threshold. Within threshold means the change did not meet both thresholds.

Inconclusive: a within-revision p95 range >35% of its median and >20 ms is too noisy for a confident latency verdict.

Inconclusive latency comparisons are non-blocking: the check passes without claiming an improvement. Confirmed regressions and test/report errors fail the PR gate. Throughput is descriptive: paced users do not measure maximum capacity. This uncached public API test does not establish production health, browser performance or worker capacity. Base and PR share a runner within each pair; three pairs use independent runners. Alternating order reduces host-assignment bias but cannot eliminate changes in host load over time.

Full HTML/CSV reports and logs · attempt 1

@abhi1693
abhi1693 enabled auto-merge October 19, 2026 13:34
@sonarqubecloud

Copy link
Copy Markdown

@abhi1693
abhi1693 merged commit 6128965 into master Oct 19, 2026
72 checks passed
@abhi1693
abhi1693 deleted the fix/app-favicon-consistency branch October 19, 2026 13:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant