I think this should be switched to off-by-default, so someone can't be surprised if they create a title field in their config.php. So this would become:

            if (array_key_exists ('include_in_nav', $ini) && $ini['include_in_nav']
                && array_key_exists ('title', $ini) && $ini['title'] != '') {

(also changed `key_exists() -> array_key_exists()` since it's deprecated... :)

From there, apps like the blog and events would add:

    ; Title of the app
    title = Blog
    
    ; Include this app in the page list for the site navigation tree
    include_in_nav = On

Other than that, I think this is awesome. I was just thinking about how clunky redirects are for including apps in the site nav, and I think this is a great solution.