Skip to content

🎨 Palette: Add empty state message to results dialog - #492

Draft
xbmc4lyfe wants to merge 1 commit into
mainfrom
palette/results-dialog-empty-state-8974934371020478185
Draft

🎨 Palette: Add empty state message to results dialog#492
xbmc4lyfe wants to merge 1 commit into
mainfrom
palette/results-dialog-empty-state-8974934371020478185

Conversation

@xbmc4lyfe

Copy link
Copy Markdown
Collaborator

πŸ’‘ What

Added an explicit "No results found" message to results-dialog.xml.

🎯 Why

In Kodi XML skins, lists do not natively handle empty states. When a search returned zero results, the user was presented with an entirely blank, dark screen. This provides immediate, clear feedback that the query completed but found nothing, rather than leaving the user wondering if the add-on crashed or is still loading.

πŸ“Έ Before/After

Before: A completely blank screen (just the dark background).
After: A centered message reading "No results found" in a subdued gray color (FF9CA3AF).

β™Ώ Accessibility

Improves cognitive accessibility by providing explicit text feedback for an empty list state, removing ambiguity.


PR created automatically by Jules for task 8974934371020478185 started by @xbmc4lyfe

When the search returns zero results, the Kodi list previously showed
a blank dark screen, which is confusing. This commit adds a text label
"No results found" that only becomes visible when the item count of
the list container is exactly zero.

Co-authored-by: xbmc4lyfe <273732874+xbmc4lyfe@users.noreply.github.com>
@google-labs-jules

Copy link
Copy Markdown
Contributor

πŸ‘‹ Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a πŸ‘€ emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Dependency Review

βœ… No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@github-actions github-actions Bot added the addon label Aug 8, 2026
@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

πŸ“ Walkthrough

Summary by CodeRabbit

  • New Features
    • Added a β€œNo results found” message to the results screen when a search returns no items.

Walkthrough

The results dialog now shows a centered β€œNo results found” label when results list 50 contains zero items.

Changes

Results empty-state display

Layer / File(s) Summary
Conditional empty-state label
repo/plugin.video.nzbdav/resources/skins/Default/1080i/results-dialog.xml
The results dialog displays a centered β€œNo results found” label when Container(50).NumItems equals zero.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Suggested reviewers: ponchopig

Poem

A bunny sees the empty view,
No results rest where lists once grew.
A centered note now greets the screen,
Clear and calm in Kodi’s sheen.
Hop, hopβ€”empty states are neat!

πŸš₯ Pre-merge checks | βœ… 5
βœ… Passed checks (5 passed)
Check name Status Explanation
Title check βœ… Passed The title clearly identifies the addition of an empty-state message to the results dialog.
Description check βœ… Passed The description accurately explains the empty-state message, its purpose, appearance, and accessibility benefit.
Docstring Coverage βœ… Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check βœ… Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check βœ… Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
πŸ§ͺ Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch palette/results-dialog-empty-state-8974934371020478185
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch palette/results-dialog-empty-state-8974934371020478185

Warning

Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❀️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai
coderabbitai Bot requested a review from PonchoPig August 8, 2026 00:26
@codacy-production

Copy link
Copy Markdown
Contributor

Up to standards βœ…

🟒 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@github-code-quality

Copy link
Copy Markdown

Code Coverage Overview

Languages: Python

Python / code-coverage/pytest

The overall coverage in commit 9f6db0c in the palette/results-dial... branch remains at 88%, unchanged from commit c8dfe60 in the main branch.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

πŸ€– Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@repo/plugin.video.nzbdav/resources/skins/Default/1080i/results-dialog.xml`:
- Line 269: Replace the literal empty-state label near the results dialog with a
$LOCALIZE reference, and add the corresponding β€œNo results found” translation
entry to strings.po using an available unique ID. Preserve the displayed text
while enabling add-on localization workflows.
πŸͺ„ Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
βš™οΈ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 329325af-962e-440f-9ed2-01226291c26c

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between c8dfe60 and 9f6db0c.

πŸ“’ Files selected for processing (1)
  • repo/plugin.video.nzbdav/resources/skins/Default/1080i/results-dialog.xml
πŸ“œ Review details
⏰ Context from checks skipped due to timeout. (8)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: test
  • GitHub Check: lint
  • GitHub Check: coverage
  • GitHub Check: Scan
  • GitHub Check: bandit
  • GitHub Check: Analyze (python)
  • GitHub Check: Analyze (python)

<!-- Empty state indicator -->
<control type="label">
<left>0</left><top>60</top><width>1920</width><height>975</height>
<label>No results found</label>

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.

🎯 Functional Correctness | 🟑 Minor | ⚑ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

fd -t f 'strings\.po$' . -x rg -n -H 'No results found|msgctxt' {}
rg -n '\$LOCALIZE\[|\$ADDON\[' --glob '*.xml' .

Repository: Appz4Fun/nzbdavkodi

Length of output: 37303


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "XML context:"
sed -n '258,276p' repo/plugin.video.nzbdav/resources/skins/Default/1080i/results-dialog.xml

echo
echo "String catalog references:"
fd -t f 'strings\.po$' . -x rg -n -H '"No results found"$|msgctxt "`#301`??[0-9]"' {}

echo
echo "Other addon/localize XML label usages:"
rg -n '\$LOCALIZE\[[^]]+\]|\$ADDON\[[^]]+\]' --glob '*.xml' repo/plugin.video.nzbdav/resources/skins repo/plugin.video.nzbdav -g '*.xml' || true

echo
echo "Repository string file list:"
git ls-files 'repo/plugin.video.nzbdav/resources/language/**strings.po' 'repo/plugin.video.nzbdav/res...' | sed -n '1,200p'

Repository: Appz4Fun/nzbdavkodi

Length of output: 847


🌐 Web query:

Kodi skins XML label parsing $LOCALIZE [$ADDON] syntax

πŸ’‘ Result:

In Kodi skinning, label parsing allows skinners to dynamically display text, localization strings, and system information within XML files [1][2]. $LOCALIZE Syntax The $LOCALIZE[id] syntax is used to fetch and display a translated string from the project's language files (strings.po) [1][3]. - Usage: Use $LOCALIZE in your skin XML to display the string associated with ID 31005 [1]. - Context: This replaces the older strings.xml format [3]. The ID refers to entries found in the strings.po files located within Kodi's system language directories or your addon's language directory [1][3]. $ADDON Syntax The $ADDON[addon_id id] syntax allows skinners to reference localization strings specifically from a different addon, rather than the core Kodi system or the current skin [4]. - Syntax: $ADDON[addon.id string_id] - Purpose: This is particularly useful for skins or addons that need to display localized text provided by a dependency or another installed addon without requiring that addon to be the active context [4]. Label Parsing Order When processing labels, Kodi follows a specific order of operations: 1. Localization: Kodi first replaces all $LOCALIZE[id] and $ADDON[addon_id id] blocks with the corresponding strings from the relevant.po files [1]. 2. Info Manager: Next, it parses and replaces $INFO[infolabel,prefix,postfix] blocks [1]. 3. Rendering: Finally, it renders the combined string [1]. Best Practices - You can combine multiple formats in a single label, such as $LOCALIZE: $INFO[MusicPlayer.Title] [1][2]. - Use $ESCINFO[] if you are passing an infolabel to a built-in function where the returned data might contain commas or quotes, as this ensures the string is handled as a single parameter [1].

Citations:


Localize the empty-state label.

Replace the literal <label>No results found</label> with a localized string reference by adding an available No results found entry to strings.po and using its $LOCALIZE[<id>] reference. This keeps the empty-state message available in add-on-localization workflows.

πŸ€– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@repo/plugin.video.nzbdav/resources/skins/Default/1080i/results-dialog.xml` at
line 269, Replace the literal empty-state label near the results dialog with a
$LOCALIZE reference, and add the corresponding β€œNo results found” translation
entry to strings.po using an available unique ID. Preserve the displayed text
while enabling add-on localization workflows.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant