Missing hrefs in app-menu since NC 29 breaking some apps navigation

Nextcloud version: 29.0.2
Operating system: community docker
Apache or nginx version: Apache 2.4.59
PHP version: 8.2.20

Since I updated my NC to 29.0.1 (from last stable 28 to 29.0.1 and now on 29.0.2) some apps in the app-menu (top navigation bar in web-UI) are missing their href element, making them inaccessible (<a> elements without href always points to current page).

The apps are still working when entering the URL manually. disabling/enabling the apps does not fix the behaviour.

The bug appears on all devices (tested multiple androids, Linux, different browsers). Clearing site data in the browsers, disabling caching in developer tools or using incognito window also doesn’t fix it.

Currently affected Apps are:

  • SnappyMail
  • Tables
  • Tasks

Other Apps that are working:

  • Dashboard
  • Files
  • Photos
  • Activity
  • Talk
  • Contacts
  • Calendar
  • Full text search
  • Announcement Center
  • Deck
  • Notes
  • External sites (2 instances)
  • Money

The error first appeared after updating from 28.x (don’t know the exact version, probably the latest version at the point of the new docker container becoming available) to 29.0.1 and persisted after updating to 29.0.2.

Matching Log entry (one example, reformatted for readability):

{
   "reqId":"qFuEqoBSxvNUyjti0Pn4",
   "level":1,
   "time":"2024-06-23T08:36:41+00:00",
   "remoteAddr":"78.51.234.81",
   "user":"Fenya",
   "app":"no app in context",
   "method":"GET",
   "url":"/ocs/v2.php/apps/notifications/api/v2/notifications?format=json",
   "message":"Unable to generate a URL for the named route \"snappymail.page.index\" as such route does not exist.",
   "userAgent":"Mozilla/5.0 (Macintosh) mirall/3.12.3git (build 21830) (Nextcloud, osx-23.5.0 ClientArchitecture: arm64 OsArchitecture: arm64)",
   "version":"29.0.2.2",
   "exception":{
      "Exception":"Symfony\\Component\\Routing\\Exception\\RouteNotFoundException",
      "Message":"Unable to generate a URL for the named route \"snappymail.page.index\" as such route does not exist.",
      "Code":0,
      "Trace":[
         {
            "file":"/var/www/html/lib/private/Route/Router.php",
            "line":410,
            "function":"generate",
            "class":"Symfony\\Component\\Routing\\Generator\\UrlGenerator",
            "type":"->",
            "args":[
               "snappymail.page.index",
               [
                  
               ],
               1
            ]
         },
         {
            "file":"/var/www/html/lib/private/Route/CachingRouter.php",
            "line":65,
            "function":"generate",
            "class":"OC\\Route\\Router",
            "type":"->",
            "args":[
               "snappymail.page.index",
               [
                  
               ],
               false
            ]
         },
         {
            "file":"/var/www/html/lib/private/URLGenerator.php",
            "line":103,
            "function":"generate",
            "class":"OC\\Route\\CachingRouter",
            "type":"->",
            "args":[
               "snappymail.page.index",
               [
                  
               ]
            ]
         },
         {
            "file":"/var/www/html/lib/private/NavigationManager.php",
            "line":371,
            "function":"linkToRoute",
            "class":"OC\\URLGenerator",
            "type":"->",
            "args":[
               "snappymail.page.index"
            ]
         },
         {
            "file":"/var/www/html/lib/private/NavigationManager.php",
            "line":97,
            "function":"init",
            "class":"OC\\NavigationManager",
            "type":"->",
            "args":[
               
            ]
         },
         {
            "file":"/var/www/html/custom_apps/fulltextsearch/lib/AppInfo/Application.php",
            "line":125,
            "function":"add",
            "class":"OC\\NavigationManager",
            "type":"->",
            "args":[
               [
                  "fulltextsearch",
                  5,
                  "/apps/fulltextsearch/",
                  "/custom_apps/fulltextsearch/img/fulltextsearch.svg",
                  "Search"
               ]
            ]
         },
         {
            "file":"/var/www/html/lib/private/AppFramework/Bootstrap/FunctionInjector.php",
            "line":45,
            "function":"registerNavigation",
            "class":"OCA\\FullTextSearch\\AppInfo\\Application",
            "type":"->",
            "args":[
               [
                  "OC\\Server"
               ]
            ]
         },
         {
            "file":"/var/www/html/lib/private/AppFramework/Bootstrap/BootContext.php",
            "line":50,
            "function":"injectFn",
            "class":"OC\\AppFramework\\Bootstrap\\FunctionInjector",
            "type":"->",
            "args":[
               [
                  "Closure"
               ]
            ]
         },
         {
            "file":"/var/www/html/custom_apps/fulltextsearch/lib/AppInfo/Application.php",
            "line":88,
            "function":"injectFn",
            "class":"OC\\AppFramework\\Bootstrap\\BootContext",
            "type":"->",
            "args":[
               [
                  "Closure"
               ]
            ]
         },
         {
            "file":"/var/www/html/lib/private/AppFramework/Bootstrap/Coordinator.php",
            "line":200,
            "function":"boot",
            "class":"OCA\\FullTextSearch\\AppInfo\\Application",
            "type":"->",
            "args":[
               [
                  "OC\\AppFramework\\Bootstrap\\BootContext"
               ]
            ]
         },
         {
            "file":"/var/www/html/lib/private/App/AppManager.php",
            "line":437,
            "function":"bootApp",
            "class":"OC\\AppFramework\\Bootstrap\\Coordinator",
            "type":"->",
            "args":[
               "fulltextsearch"
            ]
         },
         {
            "file":"/var/www/html/lib/private/App/AppManager.php",
            "line":216,
            "function":"loadApp",
            "class":"OC\\App\\AppManager",
            "type":"->",
            "args":[
               "fulltextsearch"
            ]
         },
         {
            "file":"/var/www/html/lib/private/legacy/OC_App.php",
            "line":128,
            "function":"loadApps",
            "class":"OC\\App\\AppManager",
            "type":"->",
            "args":[
               [
                  
               ]
            ]
         },
         {
            "file":"/var/www/html/ocs/v1.php",
            "line":60,
            "function":"loadApps",
            "class":"OC_App",
            "type":"::",
            "args":[
               
            ]
         },
         {
            "file":"/var/www/html/ocs/v2.php",
            "line":23,
            "args":[
               "/var/www/html/ocs/v1.php"
            ],
            "function":"require_once"
         }
      ],
      "File":"/var/www/html/3rdparty/symfony/routing/Generator/UrlGenerator.php",
      "Line":144,
      "message":"Unable to generate a URL for the named route \"snappymail.page.index\" as such route does not exist.",
      "exception":{
         
      },
      "CustomMessage":"Unable to generate a URL for the named route \"snappymail.page.index\" as such route does not exist."
   }
}

config.php:

<?php
$CONFIG = array (
  'htaccess.RewriteBase' => '/',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'apps_paths' => 
  array (
    0 => 
    array (
      'path' => '/var/www/html/apps',
      'url' => '/apps',
      'writable' => false,
    ),
    1 => 
    array (
      'path' => '/var/www/html/custom_apps',
      'url' => '/custom_apps',
      'writable' => true,
    ),
  ),
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => 'nextcloud-redis',
    'password' => 'REDACTED',
    'port' => 6379,
  ),
  'trusted_proxies' => 
  array (
    0 => '192.168.100.0/24',
  ),
  'instanceid' => 'REDACTED',
  'passwordsalt' => 'REDACTED',
  'secret' => 'REDACTED',
  'trusted_domains' => 
  array (
    0 => 'nextcloud.REDACTED.REDACTED',
    1 => 'nextcloud',
  ),
  'datadirectory' => '/var/www/html/data',
  'dbtype' => 'mysql',
  'version' => '29.0.2.2',
  'overwrite.cli.url' => 'https://nextcloud.REDACTED.REDACTED',
  'dbname' => 'nextcloud',
  'dbhost' => 'nextcloud-db',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'nextcloud',
  'dbpassword' => 'REDACTED',
  'installed' => true,
  'app_install_overwrite' => 
  array (
    0 => 'keeweb',
    1 => 'backup',
    2 => 'workflow_pdf_converter',
    3 => 'files_3d',
  ),
  'maintenance' => false,
  'loglevel' => 0,
  'mail_smtpmode' => 'smtp',
  'mail_sendmailmode' => 'smtp',
  'mail_from_address' => 'admin',
  'mail_domain' => 'REDACTED.REDACTED',
  'mail_smtphost' => 'mailcatcher',
  'mail_smtpport' => '1025',
  'theme' => '',
  'updater.release.channel' => 'stable',
);

No entries in Apache Logs apart from general access messages.

No errors in nextcloud log apart from those relating to this issue: [Bug]: Tons of errors generated from /app/www/public/3rdparty/wapmorgan/mp3info/ · Issue #44573 · nextcloud/server · GitHub

I am seeing the same on NC29.0.3, manual install, PHP8.3, Postgres, nginx on Debian. And I though I was seeing ghosts …
Looks like there is a bug for it: [Bug]: "Unable to generate a URL for the named route" messages with every update · Issue #43910 · nextcloud/server · GitHub

This is the culprit. Go into FTS settings and disable the Navigation Icon option. Problem will go away.

Tracker for the issue here: https://github.com/nextcloud/fulltextsearch/issues/842

1 Like