Skip to content

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

Draft
xbmc4lyfe wants to merge 1 commit into
mainfrom
palette-add-empty-state-message-to-results-dialog-2551422589044269587
Draft

🎨 Palette: Add empty state message to results dialog#485
xbmc4lyfe wants to merge 1 commit into
mainfrom
palette-add-empty-state-message-to-results-dialog-2551422589044269587

Conversation

@xbmc4lyfe

Copy link
Copy Markdown
Collaborator

πŸ’‘ What

Added a "No results found" label to the results-dialog.xml skin file that only displays when the list container (ID 50) has zero items.

🎯 Why

In Kodi XML skins, custom lists do not automatically handle empty states. If a search returns no results, the user previously saw a confusing blank dark screen with just the header and footer, with no confirmation that the search actually completed but found nothing. This empty state explicitly communicates the result to the user.

πŸ“Έ Before/After

Before: Blank screen between the header and footer.
After: A centered gray text reading "No results found".

β™Ώ Accessibility

Reduces cognitive load by explicitly confirming the system state, helping users understand that a lack of results is not a loading error or broken UI.


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

Adds a centered "No results found" label to the results dialog that
dynamically shows only when the results list container is empty.

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 added the addon label Aug 3, 2026
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Dependency Review

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

Scanned Files

None

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

πŸ“ Walkthrough

Summary by CodeRabbit

  • Bug Fixes
    • Added a clear β€œNo results found” message when searches return no items.

Walkthrough

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

Changes

Results empty state

Layer / File(s) Summary
Add empty-state label
repo/plugin.video.nzbdav/resources/skins/Default/1080i/results-dialog.xml
Adds a centered β€œNo results found” label over the results area. The label appears when list control 50 has no items.

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

Suggested reviewers: ponchopig

Poem

A bunny hops where results should be,
β€œNo results found,” displayed clearly.
Centered text rests in the empty space,
A tidy finish in the dialog’s place.
Hop, hop, done!

πŸš₯ Pre-merge checks | βœ… 5
βœ… Passed checks (5 passed)
Check name Status Explanation
Title check βœ… Passed The title clearly describes the main change: adding an empty-state message to the results dialog.
Description check βœ… Passed The description accurately explains the empty-state label, its display condition, and the user-facing purpose.
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-add-empty-state-message-to-results-dialog-2551422589044269587
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch palette-add-empty-state-message-to-results-dialog-2551422589044269587

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 3, 2026 00:11
@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 40aac05 in the palette-add-empty-st... 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 316: Replace the hardcoded β€œNo results found” label in the results dialog
with a skin-localized string using a new ID in the `#31000`–#31999 range and the
$LOCALIZE[...] syntax. Add the corresponding skin string definition, using a
distinct ID rather than reusing existing plugin β€œNo results found for {}”
strings.
πŸͺ„ Autofix (Beta)

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: 5718704a-8b83-4f94-991b-622753278a0d

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between c8dfe60 and 40aac05.

πŸ“’ 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: lint
  • GitHub Check: coverage
  • GitHub Check: test
  • GitHub Check: Scan
  • GitHub Check: bandit
  • GitHub Check: Analyze (python)
  • GitHub Check: Analyze (python)

<!-- Empty state message -->
<control type="label">
<left>0</left><top>60</top><width>1910</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.

πŸ“ Maintainability & Code Quality | 🟑 Minor | ⚑ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

fd -i -t f 'strings\.po$' .
rg -n 'No results found|LOCALIZE' --glob '*.xml' --glob '*.po' .

Repository: Appz4Fun/nzbdavkodi

Length of output: 591


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== resource files =="
fd -i -t f 'strings\.po$|resource\.strings\.zip$|addon\.xml' repo/plugin.video.nzbdav/resources

echo "== strings.po relevant entries =="
sed -n '340,370p' repo/plugin.video.nzbdav/resources/language/resource.language.en_gb/strings.po

echo "== add-on strings definitions =="
find repo/plugin.video.nzbdav -type f \( -name "addon.xml" -o -path "*/resources/strings/*" -o -name "*.xml" \) | sed -n '1,120p'

echo "== all strings.po files and localizations =="
find repo/plugin.video.nzbdav -path '*/language/*strings.po' | sort | while read -r f; do echo "-- $f"; rg -n 'messageid|msgid "No result|LOCALIZE' "$f" || true; done

Repository: Appz4Fun/nzbdavkodi

Length of output: 1335


🌐 Web query:

Kodi skin strings.po messageid comment string IDs start numbering resource.language strings.po 30001

πŸ’‘ Result:

In Kodi development, string IDs in strings.po files are used to localize user interface text, and specific numeric ranges are reserved for different types of add-ons [1][2]. These IDs are encoded in the msgctxt field of the GNU Gettext-formatted strings.po file using the syntax msgctxt "#ID" [1][3]. The reserved numeric ranges for string IDs are as follows: * 30000 thru 30999: Reserved for plugins and plugin settings [1][2] * 31000 thru 31999: Reserved for skins [1][2] * 32000 thru 32999: Reserved for scripts [1][2] * 33000 thru 33999: Reserved for common strings used in add-ons [1][2] For a skin, you should use an ID within the 31000–31999 range [1][4]. While some users have historically experimented with IDs outside these ranges, the system is designed to enforce these boundaries, and using an ID outside the designated range for your add-on type may result in the label failing to display correctly in the GUI [5]. If you are working within a skin, ensure your entry follows the required format: msgctxt "#31001" msgid "Your string text" msgstr "" If you need to access a string from an add-on within a skin, it is recommended to use the $ADDON[addon.id stringID] format rather than the standard $LOCALIZE[ID] function, as this explicitly targets the correct add-on's string resource [5]. For plugin-specific settings, IDs like 30001 are standard practice within the allocated 30000–30999 range [1][6].

Citations:


Use a skin-localized empty-state string.

No results found is hardcoded in a skin XML, while Kodi skin strings use the #31000–#31999 range with $LOCALIZE[...]. Existing No results found for {} entries use plugin string IDs, so this empty list text should not reuse those IDs.

πŸ€– 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 316, Replace the hardcoded β€œNo results found” label in the results dialog
with a skin-localized string using a new ID in the `#31000`–#31999 range and the
$LOCALIZE[...] syntax. Add the corresponding skin string definition, using a
distinct ID rather than reusing existing plugin β€œNo results found for {}”
strings.

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