Wire browse-worlds screen to GET /api/worlds #36
Reference in New Issue
Block a user
Delete Branch "agent/1de295a0da42"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Browse-worlds screen wired to GET /api/worlds and fully verified end-to-end.
Client-side fixes:
card.theme_override_constants/separation = 4(not a real property path) ->add_theme_constant_override("separation", 4); fixed @onready paths for refresh_button/back_button missing /HeaderHBox/; cast dict values to String to avoid Variant type-inference errors that only trigger once cards actually render (missed by an empty-state-only test)Backend bugs found and fixed while verifying (both pre-existing, both blocking this task's endpoint for ANY real data, not introduced by this change):
ENUM(WorldVisibility, ...)had novalues_callable, so SQLAlchemy sent the Python enum's member name ("PUBLIC") to Postgres instead of its value ("public") -- broke both GET and POST /api/worlds/ for any query touching the visibility columnstrbut the column is a real datetime -- caused a second 500 (ResponseValidationError) on GET once the enum bug was fixedVerified for real: spun up a throwaway Postgres, ran real migrations, started a real backend, registered a user via the actual API, POSTed a world, GETed it back, and ran the Godot smoke test against it -- confirmed 2 real world cards render in the instantiated scene from live backend data, not just an empty-list pass.
- main_menu.gd: Play button now navigates to world_list.tscn - world_list.gd: fix invalid theme_override_constants property-path syntax (use add_theme_constant_override), fix @onready node paths missing /HeaderHBox/, cast Variant dict values to String to avoid type-inference errors when cards actually render - world_list.tscn: wire up Back/Refresh button signal connections (scene had zero [connection] blocks, buttons were dead) - backend: fix real bug where World.visibility enum sent member names ("PUBLIC") to Postgres instead of lowercase values, breaking both GET and POST /api/worlds/ for any real query - backend: fix WorldResponse.created_at typed as str instead of datetime, causing a second 500 on GET once the enum bug was fixed - add smoke_test_world_list.gd: headless scene-level smoke test that registers a user, instantiates the real scene, and confirms world cards render from live backend data (not just an API-level check)