(
    title: "Status",
    summary: Some("Update on Eva and Gemview"),
    published: Some((
        year: 2022,
        month: 3,
        day: 7,
        hour: 12,
        minute: 0,
        second: 0,
    )),
    tags: ["updates", "eva", "gemview", "programming"],
)
---
I've been working off and on mostly on squashing bugs and making these projects more robust. There were (and still are) a number of rough edges to smooth over. Things like making sure that the window and tab titles generally always match what is going on, giving the user more visual feedback about what is going on, and reporting errors. Ive added a spinner to the tab labels in Eva, which spins to indicate that a page is currently being loaded. No we set the title to "bookmarks" when viewing bookmark pages. And now when a page fails to load you get an error page instead, indicating the error.

The error pages are a work in progress right now. I need to go through the potential errors and give a more user-understandable text for a lot of them. Right now we only customize this is two cases, and in all others just print the raw error string as Rust would format it in the terminal. It's made somewhat more challenging due to the way that page load errors are received. Since all network traffic now runs on background threads, we have to send the data from the background thread to the main thread. In the case of errors, Rusts std::error::Error type is not able to be passed between threads (it doesn't implement the send trait) so we first convert it to a string. So we know that something went wrong, but we don't have a nice match friendly error enum to work with.

I've improved url handling in GemView somewhat. Previously, any url passed to the widget had to include the scheme, ie you could type in "gemini://gemini.circumlunar.space" but not "gemini.circumlunar.space". Now you can omit the scheme if desired, assuming that the scheme is gemini.

Lastly, for now, I did some work on a module to handle opening file:// url's. It's not active yet, but when it is you should be able to not only open local files but also browse the filesystem, as there is a function to create a gmi document from a directory, with links to it's parent and all of the directory entries. Since gmi is line based, this will not be as rich as what is provided in the typical web browser. You won't get folder and file icons, and there won't be any metadata about the size of files or timestamps. Still, should be useful.

With the move to threaded network traffic this is close to where I wanted to be before an initial release. So after a bit more cleanup and some more documentation I'm going to do a 0.2 release of GemView on crates.io and a 0.1 release of Eva. Should be sometime later this week, hopefully.
