Fixed a crash where the renderer would attempt to create a swapchain with u32::MAX dimensions when the OS didn't provide a preferred extent. Updated Renderer::new to accept window dimensions and use them as a fallback. Also renamed InstanceCreateFailed to VulkanError for better generality.
Updated the Renderer constructor to accept RawDisplayHandle and RawWindowHandle, and updated the client to pass these handles during resumption. This is a prerequisite for surface creation.
Added ash-window dependency to bridge winit and Vulkan. Extracted raw display handle in the event loop and queried required Vulkan extensions to pass down to the renderer initialization.
Added ash and thiserror dependencies to the renderer crate. Defined RendererError for typed Vulkan failure handling. Implemented the Renderer struct with basic Vulkan Entry and Instance creation.
Added winit event loop with ControlFlow::Poll for continuous rendering, and initialized tracing-subscriber for standardized logging. Also integrated anyhow for robust error handling in the client binary.