Skip to content

Honour the app-hosts discovery rule (feature app_hosts_v1) - #35

Merged
guijacquemet merged 4 commits into
mainfrom
claude/honour-app-hosts
Oct 14, 2026
Merged

guijacquemet merged 4 commits into
mainfrom
claude/honour-app-hosts

Conversation

@guijacquemet

@guijacquemet guijacquemet commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

QuPath lists an app only if the registry entry's hosts say qupath (Tools PR #133, merged; feature app_hosts_v1).

  • LcAppHosts.groovy (new part, in parts.txt): Groovy port of app_hosts.listed_for(entry, 'qupath'), same sentences. Applied in LcRegistry.loadFile, after the trust checks. Not listed: the skip sentence goes to the Tools log and is the problem text in the dialog's "skipped" list (same place as the Tools-too-old sentence). No hosts key: listed, and the 'declares no hosts' sentence is logged every time the registry is read. Invalid declaration: not listed, sentence with the problem.
  • LcCompat.REQUIRED_FEATURES now includes app_hosts_v1 (min_tools_version stays 0.3.0a1). Existing tests that fabricate schemas got the feature added; new trust case for an app lacking only app_hosts_v1.
  • tests/gui_test_app_hosts_body.groovy: runs the app_hosts section of conformance.json (cases, sentence templates, compat_rule, compat_cases) and FAILS if the key is missing; also writes the qupath vectors as real registry files and checks LcRegistry.load(), problems and the log. gui_test_conformance_body also requires the app_hosts section.
  • Sandbox driver tests/gui_test_listing_body.groovy (contract of Tools tests/release_sandbox/README.md: env LC_HOME, LC_EXPECT_APP, LC_EXPECT_LISTED, LC_EXPECT_SENTENCE; prints exactly one CHECK qupath_lists_the_app / CHECK qupath_does_not_list_the_app line). tests/run_gui_ci.sh accepts it by name (not in the default run); tests/run_listing_matrix.sh runs it in the qupath-gui job for the matrix: Playground, NucleiSky, GuessTheCondition listed; VLab4Mic and CellTracksColab NOT listed; an app with no declaration listed.
  • README section "Which apps this host lists".

CI installs Tools from main (TOOLS_REF, as before; the temporary pointer at the Tools branch is removed now that #133 is merged). release.yml also installs Tools main for its OS smoke; at release time it needs a Tools with app_hosts_v1 (main has it).

Known limit (same as the Tools-too-old sentence): with at least one app left, the dialog shows the skipped list after "Rescan apps", not at first open.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN

…y qupath (app_hosts_v1)

LcAppHosts ports app_hosts.listed_for(entry, 'qupath') with the same sentences; a skipped app is said in the Tools log and the dialog's skipped list, an absent declaration is logged every time. Require feature app_hosts_v1. Tests run the app_hosts vectors of conformance.json (fail when missing), the sandbox driver tests/gui_test_listing_body.groovy runs for the app matrix in the qupath-gui job. CI temporarily installs Tools from claude/app-hosts-discovery.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
… for it)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
@guijacquemet
guijacquemet marked this pull request as ready for review October 14, 2026 06:48
@guijacquemet
guijacquemet merged commit 18743f6 into main Oct 14, 2026
2 checks passed
@guijacquemet
guijacquemet deleted the claude/honour-app-hosts branch October 14, 2026 16:16
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.

2 participants