Incorrect launch

OS: Windows 11
There are explanations why this problem occurs, maybe someone has already encountered this?

This is the docker-compose.yml that I am using.
version: '2'
services:
  mysql:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=bookstack
      - MYSQL_USER=bookstack
      - MYSQL_PASSWORD=secret
    volumes:
      - ./mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"

  bookstack:
    image: solidnerd/bookstack
    depends_on:
      - mysql
    environment:
      - DB_HOST=mysql:3306
      - DB_DATABASE=bookstack
      - DB_USERNAME=bookstack
      - DB_PASSWORD=secret
      - APP_URL=http://localhost:8080
    # APP_KEY is used for encryption where needed, so needs to be persisted to
    # preserve decryption abilities.
    # Can run `php artisan key:generate` to generate a key
      - APP_KEY=MyBookstackKey
    volumes:
      - ./bookstack_uploads:/var/www/bookstack/public/uploads
      - ./bookstack_storage_uploads:/var/www/bookstack/storage/uploads
    ports:
      - "8080:8080"

Log Bookstack
2024-01-07 13:04:34 Starting Migration...
2024-01-07 13:04:34
2024-01-07 13:04:34    INFO  Preparing database.
2024-01-07 13:04:34
2024-01-07 13:04:34   Creating migration table ......................................... 30ms DONE
2024-01-07 13:04:34
2024-01-07 13:04:34    INFO  Running migrations.
2024-01-07 13:04:34
2024-01-07 13:04:35   2014_10_12_000000_create_users_table ............................ 103ms DONE
2024-01-07 13:04:35   2014_10_12_100000_create_password_resets_table ................... 56ms DONE
2024-01-07 13:04:35   2015_07_12_114933_create_books_table ............................. 29ms DONE
2024-01-07 13:04:35   2015_07_12_190027_create_pages_table ............................. 33ms DONE
2024-01-07 13:04:35   2015_07_13_172121_create_images_table ............................ 30ms DONE
2024-01-07 13:04:35   2015_07_27_172342_create_chapters_table .......................... 32ms DONE
2024-01-07 13:04:35   2015_08_08_200447_add_users_to_entities .......................... 61ms DONE
2024-01-07 13:04:35   2015_08_09_093534_create_page_revisions_table .................... 56ms DONE
2024-01-07 13:04:35   2015_08_16_142133_create_activities_table ........................ 41ms DONE
2024-01-07 13:04:36   2015_08_29_105422_add_roles_and_permissions ..................... 732ms DONE
2024-01-07 13:04:36   2015_08_30_125859_create_settings_table ......................... 105ms DONE
2024-01-07 13:04:36   2015_08_31_175240_add_search_indexes .............................. 0ms DONE
2024-01-07 13:04:36   2015_09_04_165821_create_social_accounts_table ................... 68ms DONE
2024-01-07 13:04:36   2015_09_05_164707_add_email_confirmation_table ................... 75ms DONE
2024-01-07 13:04:36   2015_11_21_145609_create_views_table ............................. 35ms DONE
2024-01-07 13:04:36   2015_11_26_221857_add_entity_indexes ............................ 329ms DONE
2024-01-07 13:04:36   2015_12_05_145049_fulltext_weighting .............................. 0ms DONE
2024-01-07 13:04:36   2015_12_07_195238_add_image_upload_types ......................... 36ms DONE
2024-01-07 13:04:36   2015_12_09_195748_add_user_avatars ............................... 15ms DONE
2024-01-07 13:04:36   2016_01_11_210908_add_external_auth_to_users ..................... 39ms DONE
2024-01-07 13:04:36   2016_02_25_184030_add_slug_to_revisions .......................... 47ms DONE
2024-01-07 13:04:37   2016_02_27_120329_update_permissions_and_roles .................. 250ms DONE
2024-01-07 13:03:48 wait-for-db: waiting for mysql:3306
2024-01-07 13:04:33 wait-for-db: waiting for mysql:3306
2024-01-07 13:04:34 wait-for-db: done
2024-01-07 13:04:42 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using <IP_ADDRESS>. Set the 'ServerName' directive globally to suppress this message
2024-01-07 13:04:42 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using <IP_ADDRESS>. Set the 'ServerName' directive globally to suppress this message
2024-01-07 13:04:42 [Sun Jan 07 08:04:42.960171 2024] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.57 (Debian) PHP/8.2.12 configured -- resuming normal operations
2024-01-07 13:04:42 [Sun Jan 07 08:04:42.960221 2024] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
2024-01-07 13:06:11 [Sun Jan 07 08:06:11.179645 2024] [reqtimeout:info] [pid 42] [client <IP_ADDRESS>:57936] AH01382: Request header read timeout
2024-01-07 13:09:53 [Sun Jan 07 08:09:53.348108 2024] [mpm_prefork:notice] [pid 1] AH00170: caught SIGWINCH, shutting down gracefully
2024-01-07 13:04:37   2016_02_28_084200_add_entity_access_controls .................... 193ms DONE
2024-01-07 13:04:37   2016_03_09_203143_add_page_revision_types ........................ 34ms DONE
2024-01-07 13:04:37   2016_03_13_082138_add_page_drafts ................................ 37ms DONE
2024-01-07 13:04:37   2016_03_25_123157_add_markdown_support ........................... 31ms DONE
2024-01-07 13:04:37   2016_04_09_100730_add_view_permissions_to_roles .................. 70ms DONE
2024-01-07 13:04:37   2016_04_20_192649_create_joint_permissions_table ................ 265ms DONE
2024-01-07 13:04:38   2016_05_06_185215_create_tags_table ............................. 112ms DONE
2024-01-07 13:04:38   2016_07_07_181521_add_summary_to_page_revisions .................. 17ms DONE
2024-01-07 13:04:38   2016_09_29_101449_remove_hidden_roles ........................... 136ms DONE
2024-01-07 13:04:38   2016_10_09_142037_create_attachments_table ....................... 79ms DONE
2024-01-07 13:04:38   2017_01_21_163556_create_cache_table ............................. 78ms DONE
2024-01-07 13:04:38   2017_01_21_163602_create_sessions_table .......................... 78ms DONE
2024-01-07 13:04:38   2017_03_19_091553_create_search_index_table ..................... 128ms DONE
2024-01-07 13:04:38   2017_04_20_185112_add_revision_counts ............................ 51ms DONE
2024-01-07 13:04:38   2017_07_02_152834_update_db_encoding_to_ut8mb4 .................... 0ms DONE
2024-01-07 13:04:38   2017_08_01_130541_create_comments_table .......................... 97ms DONE
2024-01-07 13:04:38   2017_08_29_102650_add_cover_image_display ........................ 16ms DONE
2024-01-07 13:04:38   2018_07_15_173514_add_role_external_auth_id ...................... 44ms DONE
2024-01-07 13:04:39   2018_08_04_115700_create_bookshelves_table ...................... 610ms DONE
2024-01-07 13:04:39   2019_07_07_112515_add_template_support ........................... 43ms DONE
2024-01-07 13:04:39   2019_08_17_140214_add_user_invites_table ......................... 60ms DONE
2024-01-07 13:04:39   2019_12_29_120917_add_api_auth ................................... 80ms DONE
2024-01-07 13:04:39   2020_08_04_111754_drop_joint_permissions_id ..................... 175ms DONE
2024-01-07 13:04:39   2020_08_04_131052_remove_role_name_field ......................... 88ms DONE
2024-01-07 13:04:39   2020_09_19_094251_add_activity_indexes ........................... 37ms DONE
2024-01-07 13:04:39   2020_09_27_210059_add_entity_soft_deletes ........................ 75ms DONE
2024-01-07 13:04:40   2020_09_27_210528_create_deletions_table ......................... 81ms DONE
2024-01-07 13:04:40   2020_11_07_232321_simplify_activities_table ..................... 238ms DONE
2024-01-07 13:04:40   2020_12_30_173528_add_owned_by_field_to_entities ................ 204ms DONE
2024-01-07 13:04:40   2021_01_30_225441_add_settings_type_column ....................... 13ms DONE
2024-01-07 13:04:40   2021_03_08_215138_add_user_slug .................................. 90ms DONE
2024-01-07 13:04:40   2021_05_15_173110_create_favourites_table ........................ 66ms DONE
2024-01-07 13:04:40   2021_06_30_173111_create_mfa_values_table ........................ 69ms DONE
2024-01-07 13:04:40   2021_07_03_085038_add_mfa_enforced_to_roles_table ................ 29ms DONE
2024-01-07 13:04:40   2021_08_28_161743_add_export_role_permission ..................... 10ms DONE
2024-01-07 13:04:40   2021_09_26_044614_add_activities_ip_column ....................... 19ms DONE
2024-01-07 13:04:40   2021_11_26_070438_add_index_for_user_ip .......................... 21ms DONE
2024-01-07 13:04:41   2021_12_07_111343_create_webhooks_table ......................... 135ms DONE
2024-01-07 13:04:41   2021_12_13_152024_create_jobs_table .............................. 47ms DONE
2024-01-07 13:04:41   2021_12_13_152120_create_failed_jobs_table ....................... 45ms DONE
2024-01-07 13:04:41   2022_01_03_154041_add_webhooks_timeout_error_columns ............. 16ms DONE
2024-01-07 13:04:41   2022_04_17_101741_add_editor_change_field_and_permission ......... 28ms DONE
2024-01-07 13:04:41   2022_04_25_140741_update_polymorphic_types ....................... 18ms DONE
2024-01-07 13:04:41   2022_07_16_170051_drop_joint_permission_type .................... 269ms DONE
2024-01-07 13:04:41   2022_08_17_092941_create_references_table ........................ 91ms DONE
2024-01-07 13:04:41   2022_09_02_082910_fix_shelf_cover_image_types ..................... 1ms DONE
2024-01-07 13:04:41   2022_10_07_091406_flatten_entity_permissions_table .............. 101ms DONE
2024-01-07 13:04:42   2022_10_08_104202_drop_entity_restricted_field .................. 373ms DONE
2024-01-07 13:04:42   2023_01_24_104625_refactor_joint_permissions_storage ............ 300ms DONE
2024-01-07 13:04:42   2023_01_28_141230_copy_color_settings_for_dark_mode ............... 1ms DONE
2024-01-07 13:04:42   2023_02_20_093655_increase_attachments_path_length ............... 83ms DONE
2024-01-07 13:04:42   2023_02_23_200227_add_updated_at_index_to_pages .................. 19ms DONE
2024-01-07 13:04:42   2023_06_10_071823_remove_guest_user_secondary_roles ............... 2ms DONE
2024-01-07 13:04:42   2023_06_25_181952_remove_bookshelf_create_entity_permissions ...... 0ms DONE
2024-01-07 13:04:42   2023_07_25_124945_add_receive_notifications_role_permissions ...... 6ms DONE
2024-01-07 13:04:42   2023_07_31_104430_create_watches_table ........................... 74ms DONE
2024-01-07 13:04:42   2023_08_21_174248_increase_cache_size ............................ 65ms DONE
2024-01-07 13:04:42
2024-01-07 13:04:42 Clearing caches...
2024-01-07 13:04:42
2024-01-07 13:04:42    INFO  Application cache cleared successfully.
2024-01-07 13:04:42
2024-01-07 13:04:42
2024-01-07 13:04:42    INFO  Compiled views cleared successfully.
2024-01-07 13:04:42
2024-01-07 13:05:02 bookstack:80 <IP_ADDRESS> - - [07/Jan/2024:08:05:01 +0000] "GET / HTTP/1.1" 500 14943 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"
2024-01-07 13:05:02 bookstack:80 <IP_ADDRESS> - - [07/Jan/2024:08:05:02 +0000] "GET /manifest.json HTTP/1.1" 500 14971 "http://localhost:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"
2024-01-07 13:05:18 bookstack:80 <IP_ADDRESS> - - [07/Jan/2024:08:05:18 +0000] "GET / HTTP/1.1" 500 14943 "http://localhost:8080/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"
2024-01-07 13:05:18 bookstack:80 <IP_ADDRESS> - - [07/Jan/2024:08:05:18 +0000] "GET /manifest.json HTTP/1.1" 500 14971 "http://localhost:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"
2024-01-07 13:05:19 bookstack:80 <IP_ADDRESS> - - [07/Jan/2024:08:05:18 +0000] "GET / HTTP/1.1" 500 14943 "http://localhost:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"
2024-01-07 13:05:19 bookstack:80 <IP_ADDRESS> - - [07/Jan/2024:08:05:19 +0000] "GET /manifest.json HTTP/1.1" 500 14971 "http://localhost:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"
2024-01-07 13:06:11 bookstack:80 <IP_ADDRESS> - - [07/Jan/2024:08:06:11 +0000] "-" 408 0 "-" "-"

The migration seems to be running successfully.

Mysql log
2024-01-07 13:03:48 2024-01-07T08:03:48.772266Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2024-01-07 13:03:48 2024-01-07T08:03:48.773873Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
2024-01-07 13:03:48 2024-01-07T08:03:48.774411Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.2.0) initializing of server in progress as process 81
2024-01-07 13:03:48 2024-01-07T08:03:48.785510Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2024-01-07 13:03:48 2024-01-07T08:03:48.794188Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-01-07 13:03:50 2024-01-07T08:03:50.304114Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-01-07 13:03:52 2024-01-07T08:03:52.798676Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
2024-01-07 13:03:56 2024-01-07T08:03:56.357320Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
2024-01-07 13:03:56 2024-01-07T08:03:56.466841Z 0 [System] [MY-015015] [Server] MySQL Server - start.
2024-01-07 13:03:56 2024-01-07T08:03:56.683899Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
2024-01-07 13:03:56 2024-01-07T08:03:56.688750Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.2.0) starting as process 125
2024-01-07 13:03:56 2024-01-07T08:03:56.693737Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2024-01-07 13:03:56 2024-01-07T08:03:56.710863Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-01-07 13:03:57 2024-01-07T08:03:57.668708Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-01-07 13:03:58 2024-01-07T08:03:58.487985Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2024-01-07 13:03:58 2024-01-07T08:03:58.488710Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2024-01-07 13:03:58 2024-01-07T08:03:58.510019Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2024-01-07 13:03:58 2024-01-07T08:03:58.542562Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: /var/run/mysqld/mysqlx.sock
2024-01-07 13:03:58 2024-01-07T08:03:58.542726Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.2.0'  socket: '/var/run/mysqld/mysqld.sock'  port: 0  MySQL Community Server - GPL.
2024-01-07 13:03:58 2024-01-07T08:03:58.545136Z 0 [System] [MY-015016] [Server] MySQL Server - end.
2024-01-07 13:03:59 Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
2024-01-07 13:03:59 Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
2024-01-07 13:03:59 Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.
2024-01-07 13:04:01 Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.
2024-01-07 13:04:01 Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
2024-01-07 13:04:01 Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
2024-01-07 13:04:01 2024-01-07T08:04:01.859477Z 13 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.2.0).
2024-01-07 13:04:02 2024-01-07T08:04:02.896187Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.2.0)  MySQL Community Server - GPL.
2024-01-07 13:04:02 2024-01-07T08:04:02.898993Z 0 [System] [MY-015016] [Server] MySQL Server - end.
2024-01-07 13:03:48 2024-01-07 08:03:48+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.2.0-1.el8 started.
2024-01-07 13:03:48 2024-01-07 08:03:48+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2024-01-07 13:03:48 2024-01-07 08:03:48+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.2.0-1.el8 started.
2024-01-07 13:03:48 2024-01-07 08:03:48+00:00 [Note] [Entrypoint]: Initializing database files
2024-01-07 13:03:56 2024-01-07 08:03:56+00:00 [Note] [Entrypoint]: Database files initialized
2024-01-07 13:03:56 2024-01-07 08:03:56+00:00 [Note] [Entrypoint]: Starting temporary server
2024-01-07 13:03:58 2024-01-07 08:03:58+00:00 [Note] [Entrypoint]: Temporary server started.
2024-01-07 13:03:58 '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
2024-01-07 13:04:01 2024-01-07 08:04:01+00:00 [Note] [Entrypoint]: Creating database bookstack
2024-01-07 13:04:01 2024-01-07 08:04:01+00:00 [Note] [Entrypoint]: Creating user bookstack
2024-01-07 13:04:01 2024-01-07 08:04:01+00:00 [Note] [Entrypoint]: Giving user bookstack access to schema bookstack
2024-01-07 13:04:01
2024-01-07 13:04:01 2024-01-07 08:04:01+00:00 [Note] [Entrypoint]: Stopping temporary server
2024-01-07 13:04:03 2024-01-07 08:04:03+00:00 [Note] [Entrypoint]: Temporary server stopped
2024-01-07 13:04:03
2024-01-07 13:04:03 2024-01-07 08:04:03+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up.
2024-01-07 13:04:03
2024-01-07 13:04:04 2024-01-07T08:04:03.870637Z 0 [System] [MY-015015] [Server] MySQL Server - start.
2024-01-07 13:04:04 2024-01-07T08:04:04.060516Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
2024-01-07 13:04:04 2024-01-07T08:04:04.065707Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.2.0) starting as process 1
2024-01-07 13:04:04 2024-01-07T08:04:04.070073Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2024-01-07 13:04:04 2024-01-07T08:04:04.083672Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-01-07 13:04:05 2024-01-07T08:04:05.071261Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-01-07 13:04:05 2024-01-07T08:04:05.763328Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2024-01-07 13:04:05 2024-01-07T08:04:05.764575Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2024-01-07 13:04:05 2024-01-07T08:04:05.790401Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2024-01-07 13:04:05 2024-01-07T08:04:05.905431Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2024-01-07 13:04:05 2024-01-07T08:04:05.905677Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.2.0'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
2024-01-07 13:09:54 2024-01-07T08:09:54.741703Z 0 [System] [MY-013172] [Server] Received SHUTDOWN from user <via user signal>. Shutting down mysqld (Version: 8.2.0).
2024-01-07 13:09:55 2024-01-07T08:09:55.967298Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.2.0)  MySQL Community Server - GPL.
2024-01-07 13:09:55 2024-01-07T08:09:55.969202Z 0 [System] [MY-015016] [Server] MySQL Server - end.

I looked at old discussions and found a solution.
APP_KEY must be equal to 32 characters, which is basically written in the instructions)
I fixed APP_KEY and everything worked!
environment:
...
      - APP_KEY=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
...


More CMake fixes

Hello. This patch is a lot more complex than my previous CMake one, but it's not possible to fix only one thing at a time, unfortunately.
Currently, the CMake build is broken in several places and here's what this patch does:

Link to a correct SDL target depending on build type (static or shared)
Link to a correct libpng target based on the build type
Fix libjpeg build (jmemansi.c wasn't included in the build)
Fix showimage build on Windows - need to link to SDL2main
Use bundled zlib for build
Fix webp build (it doesn't add needed include directory for some reason)
Add zconf.h to gitignore - maybe it should be deleted from the repo even? It's generated during the build of zlib in the binary dir. And zlib's CMake renames zconf.h to zconf.h.included in the source directory, which is annoying and can't be prevented...

Dynamic linking doesn't work on Windows with SUPPORT_WEBP=ON, because libwebp doesn't define WEBP_EXTERN as __declspec(dllexport) - I didn't find a way to fix it yet, unfortunately (maybe the issue should be created so that we don't forget about it?)
P.S. In the next patches it will be good to add ability for user to link their own libpng, libz, libjpeg and libwebp if they want to. I currently build them myself and it's currently impossible to force SDL_image to link to them instead of bundled ones.

@rafaeldelboni thanks!
I think that the better handling of zlib and libpng should be done in the next patch.
I want to add ability for user to link with system deps + the dependencies that can come from users manually doing add_subdirectory for zlib and libpng. The FORCE method inside SDL_Image won't be very nice for everyone, so I'll think about it too. But let's start with something simple - I think that this patch is the least invasive one.
@sezero, @icculus - can you please take a look at this PR?

I’m of the opinion that I don’t think a great deal about the CMake projects in any of the external libraries like SDL_image, so if @sezero has no concerns, let’s merge this and any other CMake stuff Elias has done.
Any CMake changes to SDL itself, though, I want to personally inspect before merging (at least for now).

if @sezero has no concerns, let’s merge this and any other CMake stuff Elias has done.

I don't like cmake, nor do I have much experience with it, but after giving
a very brief look at it, it should be OK.  Let's merge it, and if anything is
broken we can fix later.


Replace Dark Sky API

According to https://blog.darksky.net, Apple has purchased Dark Sky and will shut down the api at the end of 2021. Thus, we need a new data source.

@genebean - potentially weather.gov? They have an open API.
I discovered that the original project died when piwapi stopped working due to weather.com, so I'm following any replacement pretty closely.

@genebean - potentially weather.gov? They have an open API.

I looked at that last night but it looked to only have weather for the US

Perhaps OpenWeatherMap? Seems the free tier is limited to 1 API call / sec, which is (in my opinion) way more than necessary - my own weatherpi was querying once per 5min.
Looks like they have current forecast API and 5-day forecast API that would likely emulate the previous functionality, and looks like it supports a lot of different localization capabilities.
I'm currently waiting on the API key to get activated (apparently it takes a few hours):

Within the next couple of hours, it will be activated and ready to use.

I am also apparently very impatient 😆

Alright, API key got activated, looks like we also have the ability to use icons from their site itself (or write something to use the existing icons - example output is below from their site:
https://samples.openweathermap.org/data/2.5/forecast?id=524901&appid=b6907d289e10d714a6e88b30761fae22
Icon info is here.
So far, looks pretty reasonable - thoughts?

Please do let us know if you can get that API working. I literally bought a screen in a case for this to wall mount it on the 28th, arrived today. I checked on here to start working at setting up my new weather display! To my dismay its over with...

 I'll absolutely get it working and will keep this issue updated with progress. I am certainly considering Open Weather Map @MarticusH. I am also checking with two other sources that look like they may have more to offer too in hopes that one of them will pan out.

Thank you @genebean!

Cool cool, thank you @genebean - let us know what you decide on!

I contacted Foreca at a users suggestion but it seems they don’t currently offer anything free or near-free. I have a meeting scheduled for today though that I’m hoping pans out.🤞More info soon.

Just had a great call with Climacell and found out that in a matter of days they will have a free tier for their weather api that has limits similar to what Apply just killed off for Dark Sky. This is what I plan to move us to. They directed me at the right set of api docs and are checking to see if there will be free air quality info available too. I hope to get this turned around pretty quickly but want to do it in conjunction with merging in some contributions from @metaMMA as that work will make this work easier.

Just a quick update to say I haven’t forgotten about this. I’m still working with @metaMMA to get their enhancements merged in. Hopefully I’ll have more news soon.

Thanks!
Sent from my iPhone

On Apr 25, 2020, at 1:23 AM, Gene Liverman<EMAIL_ADDRESS>wrote:

Just a quick update to say I haven’t forgotten about this. I’m still working with @metaMMA to get their enhancements merged in. Hopefully I’ll have more news soon.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Tonight I started writing the actual Python module to pull forecast data from ClimaCell. Prior to this I’ve been wrapped up in other improvements and some unrelated work. It feels good to start interacting with the new api. 👋 Darksky
Sent with GitHawk

@genebean - Thank you for this! Is this work on a branch somewhere that one could preview/test?

It makes me really happy to see this integration happening. Such a good project.  Keeping my eye out for anything I can help with.

Also very interested in this work. If there is a testable branch I would be happy to take it for a spin.

@genebean still no updates on the ClimaCell version of the weather app?

Did you get any further with the API over the last 6 months?

Hi Everyone. I just installed bolt 1.4.0 version but dont know about the API Key. Is it still running with Dark Sky service? is it ready for the ClimaCell API? Thanks for this contribution!!

Hi Folks,
Perhaps https://openweathermap.org/api can also be a good alternative? Thanks for this.

love the project! has it been updated with the new api?

I guess author @genebean has been too busy, probably given the COVID situation.
I'll try weather.com, since that works for my RAINMETER app...

I guess author @genebean has been too busy, probably given the COVID situation.
I'll try weather.com, since that works for my RAINMETER app...

I have. I recently started looking at this again and have come up with a plan. It's going to take some time as I don't have a lot of time to work on things, but this is going to be addressed as I still use PiWeatherRock every day.

If you have time, why not set out your plan in Projects and maybe some of us can help with tasks?

Any updates?

Another one here wondering about updates, this looks like a great project to work on with a couple of kids who love sciency stuff.

I’m hoping to dive back in this week. I’ve now got the extras motivation of my own setup not working well because the code doesn’t currently handle api errors well and, instead, spams the api with requests causing rate limits to be exceeded. All that to say I think my motivation has returned (finally).

FYI: I started working on this yesterday and plan to work more later today.

After hours of work today I have discovered I left a spaghetti like mess of intertwined code for myself 😞 I'm now working to refactor some of the current code to facilitate replacing Darksky. The upside: I think I see where things are screwy and overly complicated.

Awesome to see you working on this again, sorry to see it's being a pain!

Today I got a normalized data structure created that contains all the bits of the response from Darksky's api that are used in the various bits of my code. The new structure is a dictionary (a hash) with predictable keys. The values are filled in with the data returned from Darksky. The next step is to put this new data structure to use in the existing code. Once that's complete, I'll extract the Darksky bits into a data provider module that simply takes a configuration object or file as input and returns this new data structure. Doing so will mean that any module that can read things such as api keys from the config and returns a dictionary with the needed keys can be used by the core program. This not only lets us create a ClimaCell / tomorrow.io module, but also modules for any other desired data source. That data source could be something region specific to a user or could be one that reads from MQTT. The MQTT angle serves two purposes:

An instance of this program could read from an api and populate topics in MQTT. Additional instances of this program spread around your house could then read from MQTT without worry of hitting the api's rate limits.
Home Assistant could be configured to query an api for weather data, be it from tomorrow.io or a personal weather station, or both. It could then publish those readings to MQTT via the MQTT Statestream integration. This program could then utilize what's been published locally by Home Assistant without also needing to talk to the same source(s).

In case you haven't guessed, I'm very interested in scenario 2 above. Don't worry though, I am still going to facilitate using this without Home Assistant.

@genebean is this project still ongoing?

On 11/29/22 13:16, kodepharm wrote:

@genebean https://github.com/genebean is this project still ongoing?

Hi!
No idea on the project status (I'm an end-user like yourself) but my
DarkSky is still working -- did see a notification the API was to stop
working the end of 2021 and its almost the end of 2022. (Maybe I
shouldn't tell!)  Hope it does continue working or we find what to do
for updating.

Message ID: @.***>

@Barry-IA same, my pi is still able to fetch so i am not sure when is the actual cut off data from darksky. it seems like the entire community on gitter is also silent, i hope things are not abandoned.

For a modified version with wind and weather data from OpenWetherMap
https://github.com/ciprian288/PiWeatherRock-Windguru-Holfuy

@ciprian288 checked out your version of PiweatherRock, very nice. have you thought about using api data from tomorrow.io? i think genebean was thinking to replace darksky with it.

Hello
First of all: many thanks to @genebean for this nice project!
Is there a runnable version at this time? I don't have Dark Sky API unfortunately. It will be deactivated soon anyway.
I tried "Option 1" (https://piweatherrock.technicalissues.us/docs/getting-started/), but there seems to be errors with the creation of the services. After some tinkering I was able to start the PiWeatherRockConfig.service. The website is reachable and the changes are saved. After starting the PiWeatherRock.service nothing happens.
pi@mylittlepi:/etc/system/system $ sudo systemctl status PiWeatherRock   PiWeatherRock.service - PiWeatherRock Service    Loaded: loaded (/etc/system/system/PiWeatherRock.service; bad; vendor preset: enabled)    Active: activating (auto-restart) (Result: exit-code) since Thu 2022-12-15 11:06:24 CET; 1s ago   Process: 2192 ExecStart=/usr/local/bin/pwr-ui -c /home/pi/piweatherrock-config.json (code=exited, status=1/FAILURE)  Main PID: 2192 (code=exited, status=1/FAILURE)
I don't know much about Python and Linux, I'm more into Windows and Powershell.
Translated with www.DeepL.com/Translator (free version)

Hello all. Here’s a short thread about where things are:
https://fosstodon.org/@genebean/109630837282088469
It’s only 4 messages long, but sums up my plan and the challenges.

EDIT: ok, i got this version running: https://github.com/ciprian288/PiWeatherRock-Windguru-Holfuy
two questions: Is it possible to hide the IP? Is it possible to reformat the date in the upper right corner? right now it's: "15 dez", i think "12.12.22" would look nicer.

Nice work! I’ll take a look at what you’ve done sometime soon and see if it’ll help me move the rest of the project forward.

Hey @genebean,
iam looking forward to the implementation.
Have you already seen https://merrysky.net/? It's supposed to be very similar to DarkSky.

On 11/29/22 13:16, kodepharm wrote: @genebean https://github.com/genebean is this project still ongoing?
Hi! No idea on the project status (I'm an end-user like yourself) but my DarkSky is still working -- did see a notification the API was to stop working the end of 2021 and its almost the end of 2022. (Maybe I shouldn't tell!)  Hope it does continue working or we find what to do for updating.
…
Message ID: @.***>

The new API shut down at the end of 2022. If you had an account with the API's, the system still worked up and til March 31, 2023. https://darksky.net/dev.
It has offically stopped working on a couple of my systems now.
I have downloaded the one below, but still having problems as I didn't get the Raspberrypi IP after the reboot. There were no errors following the instructions.
For a modified version with wind and weather data from OpenWetherMap
https://github.com/ciprian288/PiWeatherRock-Windguru-Holfuy

Still searching for a replacement.
Scott

Scott:
I recently updated; below is an extract from my update notes.  The ‘trick’ might be to rename the original PiClock directory to PiClock_old.
The instructions are essentially those of https://github.com/n0bel/PiClock/blob/master/Documentation/Overview.md
with my comments – hopefully highlight where you may have gone off-track.  “BJM” are my initials/comments.
First boot and configure
BJM: Read through and pretty much skipped as used the original SD card.
Actual start of PiClock is here:

Get all the software that PiClock needs.
Become super user! (root) (trumpets play in the background) (ok, maybe just in my head)
sudo su -
BJM: remember the hyphen at the end!  If you copy and paste some text formats will change hyphens, quote marks, etc., to formats the Terminal does not understand.  I have a problem where double hyphens sometimes get converted to a single long hyphen in LibreOffice.
update the repository
apt-get update
then get qt4 for python
apt-get install python-qt4
(manually confirm or stick a  -y   at the end)
pip install python-dateutil --upgrade
pip install tzlocal --upgrade
pip install python-metar --upgrade
apt-get install unclutter
BJM:  The unclutter will work – if the system wants an updated file fine, if not you’ll get a message stating is current and up-to-date.
Get the DS18B20 Temperature driver for Python (optional)
BJM:  I skipped this step but will probably add it in later.  Plus not sure where it gets displayed.
reboot
To get some things running, and ensure the final config is right, we'll do a reboot
reboot
Get the PiClock software
Log into your Pi, (either on the screen or via ssh) (NOT as root) You'll be in the home directory of the user pi (/home/pi) by default, and this is where we want to be. Note that the following command while itself not being case sensitive, further operation of PiClock may be affected if the upper and lower case of the command is not followed.		==>  10” PiClock →  renamed original directory to /PiClock_old
git clone https://github.com/n0bel/PiClock.git
BJM:  So originally when I did this I received an error as the directory was already present.  Easiest way to rename a directory is via the Files GUI.  Also note it’s ‘n zero b e l’: some fonts won’t show its a dotted in the center.
BJM: Here his instructions need to be updated as still referring to DarkSky but the config file has the updated options.  The ‘Map API Key’ section is modified slightly.
Configure the PiClock api keys
We need to set API keys for DarkSky and Mapbox or Google Maps. These are both unless you have large volume. The PiClock usage is well below the maximums imposed by the no cost api keys.
Map API Key
You have your choice of
MapBox  -or-  Google Maps to get your underlying maps from. You only need one or the other 			(mbapi  -or-  googleapi)
and
OpenWeatherMap.org  -or-  Tomorrow.io
BJM:
mbapi =   (Get your own!!)  Also make sure to begin and end with the quote mark.
owmapi = (Get your own! Pay attention to the single quotes.  I have a Pi3 running HomeGenie and used that one without problem.
Google Maps API key
 – See original.
Mapbox api keys
(I’m using Mapbox)
Now that you have your api keys…		BJM: At ‘regular’ level, not superuser.
cd PiClock
cd Clock
cp ApiKeys-example.py ApiKeys.py
nano ApiKeys.py
Put your api keys in the file as indicated

change this to your API keys

Map API keys -- only needs 1 of the following
Google Maps API key (if usemapbox is not set in Config)
googleapi = 'YOUR GOOGLE MAPS API KEY'

Mapbox API key (access_token) [if usemapbox is set in Config]
mbapi = 'YOUR MAPBOX API KEY'

If you want to use Openweathermap.org, uncomment and add appid
owmapi = 'YOU OPENWEATHERMAP APPID'

If you want to use tomorrow.io, uncomment and add appid
also comment/remove owmapi if you're using tomorrow.io
tmapi = 'YOUR tomorrow.io API KEY'

BJM: So to repeat, need  googleapi -or- mbapi
	AND
owmapi -or- tmapi.
Configure your PiClock
here's were you tell PiClock where your weather should come from, and the radar map centers and markers.
cd PiClock
cd Clock
cp Config-Example.py Config.py
nano Config.py
BJM:  Update your location.  Note the space between the two.  I commented out the default line to retain the example.  While in  there I updated the zoom levels of the radars.  On my 10” screen I’m using Radar1 = 5, Radar2 = 7, Radar3 = 9, and Radar4 = 11.  (That’s a shortcut notation; think it’s zoom=.)  The exact level depends on personal preference and I think the size of the screen.

I skipped the NOAA WX config.
Run it!
You'll need to be on the desktop, in a terminal program.
cd PiClock
sh startup.sh -n -s
Your screen should be covered by the PiClock YAY!
BJM: Indeed! :)   There are times/have been times when the wx maps stall.  I’ve not needed to reboot as they automatically eventually update on their own – 20-30 minutes?
HTH – longer than I anticipated but I had no idea where you got lost so I did pretty much the whole thing.
Barry

Barry,
This works very nicely, thanks for the info. Is there a way to set the
forecast from 10 days to 5 days? I've looked thru the config.py file, but
didn't see anything that would change things.
Thanks again.
Scott
On Sat, Apr 15, 2023 at 4:41 PM Barry-IA @.***> wrote:

Scott:
I recently updated; below is an extract from my update notes. The ‘trick’
might be to rename the original PiClock directory to PiClock_old.
The instructions are essentially those of
https://github.com/n0bel/PiClock/blob/master/Documentation/Overview.md
with my comments – hopefully highlight where you may have gone off-track.
“BJM” are my initials/comments.
First boot and configure
BJM: Read through and pretty much skipped as used the original SD card.
Actual start of PiClock is here:
Get all the software that PiClock needs.
Become super user! (root) (trumpets play in the background) (ok, maybe
just in my head)
sudo su -
BJM: remember the hyphen at the end! If you copy and paste some text
formats will change hyphens, quote marks, etc., to formats the Terminal
does not understand. I have a problem where double hyphens sometimes get
converted to a single long hyphen in LibreOffice.
update the repository
apt-get update
then get qt4 for python
apt-get install python-qt4
(manually confirm or stick a -y at the end)
pip install python-dateutil --upgrade
pip install tzlocal --upgrade
pip install python-metar --upgrade
apt-get install unclutter
BJM: The unclutter will work – if the system wants an updated file fine,
if not you’ll get a message stating is current and up-to-date.
Get the DS18B20 Temperature driver for Python (optional)
BJM: I skipped this step but will probably add it in later. Plus not sure
where it gets displayed.
reboot
To get some things running, and ensure the final config is right, we'll do
a reboot
reboot
Get the PiClock software
Log into your Pi, (either on the screen or via ssh) (NOT as root) You'll
be in the home directory of the user pi (/home/pi) by default, and this is
where we want to be. Note that the following command while itself not being
case sensitive, further operation of PiClock may be affected if the upper
and lower case of the command is not followed. ==> 10” PiClock → renamed
original directory to /PiClock_old
git clone https://github.com/n0bel/PiClock.git
BJM: So originally when I did this I received an error as the directory
was already present. Easiest way to rename a directory is via the Files
GUI. Also note it’s ‘n zero b e l’: some fonts won’t show its a dotted in
the center.
BJM: Here his instructions need to be updated as still referring to
DarkSky but the config file has the updated options. The ‘Map API Key’
section is modified slightly.
Configure the PiClock api keys
We need to set API keys for DarkSky and Mapbox or Google Maps. These are
both unless you have large volume. The PiClock usage is well below the
maximums imposed by the no cost api keys.
Map API Key
You have your choice of
MapBox -or- Google Maps to get your underlying maps from. You only need
one or the other (mbapi -or- googleapi)
and
OpenWeatherMap.org -or- Tomorrow.io
BJM:
mbapi = (Get your own!!) Also make sure to begin and end with the quote
mark.
owmapi = (Get your own! Pay attention to the single quotes. I have a Pi3
running HomeGenie and used that one without problem.
Google Maps API key
– See original.
Mapbox api keys
(I’m using Mapbox)
Now that you have your api keys… BJM: At ‘regular’ level, not superuser.
cd PiClock
cd Clock
cp ApiKeys-example.py ApiKeys.py
nano ApiKeys.py
Put your api keys in the file as indicated
change this to your API keys Map API keys -- only needs 1 of the following Google
Maps API key (if usemapbox is not set in Config)
googleapi = 'YOUR GOOGLE MAPS API KEY'
Mapbox API key (access_token) [if usemapbox is set in Config]
mbapi = 'YOUR MAPBOX API KEY'
If you want to use Openweathermap.org, uncomment and add appid
owmapi = 'YOU OPENWEATHERMAP APPID'
If you want to use tomorrow.io, uncomment and add appid also
comment/remove owmapi if you're using tomorrow.io tmapi = 'YOUR
tomorrow.io API KEY' BJM: So to repeat, need googleapi -or- mbapi AND
owmapi -or- tmapi.
Configure your PiClock
here's were you tell PiClock where your weather should come from, and the
radar map centers and markers.
cd PiClock
cd Clock
cp Config-Example.py Config.py
nano Config.py
BJM: Update your location. Note the space between the two. I commented out
the default line to retain the example. While in there I updated the zoom
levels of the radars. On my 10” screen I’m using Radar1 = 5, Radar2 = 7,
Radar3 = 9, and Radar4 = 11. (That’s a shortcut notation; think it’s
zoom=.) The exact level depends on personal preference and I think the size
of the screen.
I skipped the NOAA WX config.
Run it!
You'll need to be on the desktop, in a terminal program.
cd PiClock
sh startup.sh -n -s
Your screen should be covered by the PiClock YAY!
BJM: Indeed! :) There are times/have been times when the wx maps stall.
I’ve not needed to reboot as they automatically eventually update on their
own – 20-30 minutes?
HTH – longer than I anticipated but I had no idea where you got lost so I
did pretty much the whole thing.
Barry
—
Reply to this email directly, view it on GitHub
https://github.com/genebean/PiWeatherRock/issues/48#issuecomment-1509991586,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKSZNKFQMSVRQZP7L53S3LXBMPYPANCNFSM4LYCJHWA
.
You are receiving this because you commented.Message ID:
@.***>

--
Virtutis Gloria Merces

Hi Scott!
Short answer: no idea.
Long answer: you’re getting ten days??  Mine shows four for the current day (three in three hour increments plus the day’s summary, then one each for the next five days.  ...Oh: guess that’s the five days you’re wanting: the coffee hasn’t kicked in yet!
Half-thinking (some coffee is working [grin]) you meant you’re getting a five day forecast and desire ten.  One part of the solution is to find if the forecast source offers ten days.  Another would be updating the overlays: in PiClock/Clock/ subdirectories and have Config.py point to the new ones.
...Things might also display differently if configured for a digital clock vs. analog.  I have an analog one here.  I’m thinking of if I added five more blocks to the weather forecast ‘ladder’ the displayed information would be too small to read, or if add a second ladder column would distort the roundness of the clock display.
Barry

Barry,
Thanks for the reply. My bad. I'm using the Pi 7" screen and had seen all
of the boxes down the right hand side and thought it was 10. It is a bit
small to see everything. There are 9 boxes in total, 4 for the day and then
the 5 day forecast. I have the display set to the analog clock as well.
Tried the digital, but went back to the analog.
My other question is, how do I stop the script to get back to the desktop?
I've crtl+q and crtl+c and esc, but nothing seems to work. Do you know?
Need to get the PI's timezone set correctly.
Scott
On Sun, Apr 16, 2023 at 6:41 AM Barry-IA @.***> wrote:

Hi Scott!
Short answer: no idea.
Long answer: you’re getting ten days?? Mine shows four for the current day
(three in three hour increments plus the day’s summary, then one each for
the next five days. ...Oh: guess that’s the five days you’re wanting: the
coffee hasn’t kicked in yet!
Half-thinking (some coffee is working [grin]) you meant you’re getting a
five day forecast and desire ten. One part of the solution is to find if
the forecast source offers ten days. Another would be updating the
overlays: in PiClock/Clock/ subdirectories and have Config.py point to the
new ones.
...Things might also display differently if configured for a digital clock
vs. analog. I have an analog one here. I’m thinking of if I added five more
blocks to the weather forecast ‘ladder’ the displayed information would be
too small to read, or if add a second ladder column would distort the
roundness of the clock display.
Barry
—
Reply to this email directly, view it on GitHub
https://github.com/genebean/PiWeatherRock/issues/48#issuecomment-1510362769,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKSZNIUHSXUWCHNQM5UGNDXBPSHJANCNFSM4LYCJHWA
.
You are receiving this because you commented.Message ID:
@.***>

--
Virtutis Gloria Merces

Hi Scott!
Yeah: a 7” screen is a little small.  I have one here (used for something else) and I think I’d need my reading glasses plus the magnifying glass to read the forecast.  A 10” screen is nice – start dropping hints for your birthday or next gift event!  (Be a bit greedy and go for a touchscreen one!)
F4 is the stop/halt command.  F2 to start/stop the NOAA wx radio.  Space bar/left arrow/right arrow to change pages.
The -n and -s  switches to startup.sh:
• -n or --no-delay Don't delay on starting the clock right away (default is 45 seconds delay)
• -d X or --delay X Delay X seconds before starting the clock
• -m X or --message-delay X Delay X seconds while displaying a message on the desktop
-n is essentially a no sleep/delay command. Leave it out and a 45 second delay is activated.
-s is log to screen.
Look in startup.sh, the “# wait for Xwindows and the desktop to start up “ section for this and other fun stuff.  Make a backup copy of the original before playing!
Barry

For a modified version with wind and weather data from OpenWetherMap https://github.com/ciprian288/PiWeatherRock-Windguru-Holfuy

@ciprian288 i did fresh install today and the app will attempt to launch with a flicker of black window but then nothing happens. any idea why this is ? thanks

For a modified version with wind and weather data from OpenWetherMap https://github.com/ciprian288/PiWeatherRock-Windguru-Holfuy

@ciprian288 i did fresh install today and the app will attempt to launch with a flicker of black window but then nothing happens. any idea why this is ? thanks

Right now all data is pulled from:
OpenWetherMap https://openweathermap.org/api/one-call-3 - you have to subscribe to "One Call API 3.0" for 1,000 API calls per day for free

The "API Meteo" key MUST BE CHANGED because it is a TEST key


[Docs] TT-Forge-FE compiler architecture overview

3 images outline:

TT-Forge general overview
TT-TVM zoom-in overview
TT-Forge-FE zoom-in overview

In upcoming PRs, we'll push content for sub-sections as well. For now, this is an initial push to cover the initial structure and enable parallel
work for remaining sections.
Fix #570
Details
Few screenshots from new documentation section.

One thing i would change is the position of tvm in the diagrams... it would be good to try to draw it more accurately (closer to reality) and see if it obfuscates the picture...

Let's sync offline and come back with improved version of ti :))


Implement Support for MappedSuperClass support like JPA

Add support for persisting model classes that extend another class. JPA supports this through the use of MappedSuperClass annotation. Implement similar functionality.
For example:
@MappedSuperClass
public class BaseEntity {
    private String createdBy;
    private Date createdOn;
    private String modifiedBy;
    private Date modifiedOn;
}

@Entity
public class Person extends BaseEntity {
    @Identifier
    private long id;
    private String firstName;
    private String lastName;
    private int age;
    @Embedded
    private Address homeAddress;
    @Embedded
    private Address workAddress;
}

Given the above example, persisting a Person object should create an entity with all fields that are directly declared in the Person class as well as its super class, BaseEntity. Meaning, the Person entity in the Cloud Datastore should also have the createdBy, createdOn, modifiedBy and modifiedOn properties.

Implemented a new annotation MappedSuperClass. Entities extending a MappedSuperClass will have the fields from the super class mapped and persisted by the EntityManager.


Added image property to appointment object

Implemented image property for appointment, to access the image of an appointment

Thank you André! I noticed about the API endpoint for connecting events, appointments and bookings on the side via the forum. Thanks for the implementation!


CKEditor file browse page throw exception

install platform latest build and login as host;
edit one of the html module on home page;
enter the full edit window, click the Image button, then click "Browse Server" button.

Expected Result:
the file browse page works correctly.
Actually Result:

This would have been caused by #2197 where previously the GetFiles method explicitly cast to the interface: https://github.com/dnnsoftware/Dnn.Platform/pull/2197/files#diff-d4ef45fd14b01c62a6bbda018f71910fL624

I wasn't able to reproduce on latest 9.3.0 beta.

A few other people have tried and where not able to reproduce, @zyhfish if you are still able to reproduce after the 9.3.0 release, please open a new issue. Thanks.


New Site Added [Papers With Code] in "Seminar, research writing, talk…

Under "Seminar, research writing, talks, etc" Section
Added New Site [ Papers With Code ] : https://paperswithcode.com/
A constructive and inclusive social network for software developers.
Checklist

[✔ ] My change follows the Contributing Guidelines
[✔ ] I have added only one new link to the list.
[ ✔] I have checked that the link that I added does NOT exist in the project already.
[ ✔] I have sorted the link alphabetically under the related section.

I have added a New site and even Sorted the other sites alphabetically under Section " Seminar, research writing, talks, etc "


SPI master mosi outo one cycle late

A 32 bit data is sent out to SPI mosi bus from SPI master value 32'h1000_000. Slave expected to latch bit 28 at the 4th rising clock edge.  The test result shows it appears at 5th cycle.

Good find. Fixed in 0.8.2 release


expanded the feature extraction + docstrings

Here are the main changes:
resizing of images
Images are now being resized. Desired size can be changed with variable "desired_size" at the bottom.
This step was crucial to enable the following steps.
image as vector
The image is being flattened into a 1d vector representation.
dimension reduction with iPCA
Since we load images by a generator the code utilizes the IncrementalPCA by first iterating over every Picture and fitting the PCA.
After that it iterates again over all pictures in order to transform the image vectors to PCA_Vectors.

double for loop is necessary because data exceed working memory
use "n_components" to adjust the amount of features PCA extracts. Currently it finds the 10 most valuable components

pairwise distances
code calculates pairwise distances using the PCA_Vectors and stores them to a list.

oh i forgot to mention that i added doc string along the way.
Some of them can be outdated by now, since coding this was quite a journey and took several attempts.
You might wonder why the "calculate_brightness" function has been coded seperately - this is because i tried to parallelize some part of the extraction but unfortunately python keeps on throwing errors at me.


Fixes #1978

Handled the case of empty string

Thanks. This needs to answer some questions first:

What was the actual problem in #1978?
How did you solve it?
Can we create a test for this?

What was the actual problem in #1978?

There were 2 cases in which I could reproduce the problem. First, if the content size was 0. Second, if in case of POST, PUT, PATCH request there was no postData.
In both the cases the error was that the "text" key had an empty bytes object, which is not JSON serializable.
Something like this was happening.
>>> d['bytestr'] = b''
>>> type(d['bytestr'])
<class 'bytes'>
>>> json.dumps(d)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.5/json/__init__.py", line 230, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python3.5/json/encoder.py", line 198, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python3.5/json/encoder.py", line 256, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python3.5/json/encoder.py", line 179, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: b'' is not JSON serializable

How did you solve it?

I solved it by assigning an empty string whenever an empty bytes like object was return by flow.request.get_text(strict=False) or flow.response.get_text(strict=False)
Also, an empty bytes object OR empty string evaluated to empty string so I used that while assignment
>>> b'' or ""
''

Can we create a test for this?

Yes, I think. We can send a response with no content and a POST/PUT/PATCH request with no post data. I'll make them :slightly_smiling_face:

Apart from fixing this I also used os.path.expanduser() for opening the file while saving the json. Is that fine? It makes it convenient for the user to specify an output file.

Thanks for the explanation.

I solved it by assigning an empty string whenever an empty bytes like object was return by ?flow.request.get_text(strict=False) or flow.response.get_text(strict=False)

If you look at the implementation of get_text, you'll see that it should return a str or None, but never bytes. If .get_text returns bytes, we should fix that rather fixing it here in the HAR dump example.

So should I close this PR and send another one with that fix?

Feel free to force-push the correct changes here. You can also open a new PR if you prefer that.

I don't get travis failed :confused:


[SCB-873] Make the validation result display the parameter name instead of arg0, arg1

Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Make sure there is a JIRA issue filed for the change (usually before you start working on it).  Trivial changes like typos do not require a JIRA issue.  Your pull request should address just this issue, without pulling in other changes.
[x] Each commit in the pull request should have a meaningful subject line and body.
[x] Format the pull request title like [SCB-XXX] Fixes bug in ApproximateQuantiles, where you replace SCB-XXX with the appropriate JIRA issue.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Run mvn clean install to make sure basic checks pass. A more thorough check will be performed on your pull request automatically.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

Coverage decreased (-0.01%) to 86.149% when pulling 9b1e3d30c0ecb0c24e08f1a9a0b3da13e817373b on weichao666:validator into b9eed066509b4cf607b7c346ae9310d6e1d85c39 on apache:master.


Add AtmosphericRetrieval.run_dynesty

Hi Tomas,
As mentioned in #84 , this is my current implementation of run_dynesty. I'm opening this PR to keep track of my remaining to-do items, which are

[ ] double check I/O for the resume=True cases and with the final result using add_retrieval
[ ] finish a run using MPIPool on my cluster to test that it indeed uses the available number of cores when initialized with mpirun -n python
[ ] run black on retrieval.py to fix any formatting

I'm not sure if the try, except, warning for the dynesty and schwimmbad imports are necessary like they are for multinest, but I added them in case. I also just went with making the passing of bounds, prior, etc implicit in the  _lnprior_dynesty and  _lnlikelihood_dynesty functions, as opposed to explicit parameters that would need to be passed as prior_args and loglike_args to the sampler object.
My apologies that the branch/PR contains some past commits from the add_gradient_pt branch, I began working on this branch before those were merged to main. I believe this branch is up to date with main and these commits can be squashed down.

Fantastic, thanks a lot William!
With the current setup, we could probably call _prior_transform and lnlike_func directly and remove _lnprior_dynesty and _lnlike_dynesty?
The try-except for the import may indeed not be needed since pip installing of the two packages should probably not cause a problem? You can add them to the requirements.txt file.

Alright, I think everything on my to-do and the changes you've mentioned has been implemented :) I went ahead and deleted _lnprior_dynesty and _lnlikelihood_dynesty and called them + their args directly when creating the dynesty.NestedSamplers. I've tested that this runs even on my impossible to figure out cluster with mpirun and schwimmbad.MPIPool.
Let me know if anything looks off!


can't get gemini nano to run with page assist on chrome v130 on win11

on chrome v 130
I followed the instructions:
In order to use Chrome AI, you need a browser version greater than 127, which is currently in the Dev and Canary channels. After downloading the supported version, follow these steps:
Go to chrome://flags/#prompt-api-for-gemini-nano and select "Enable".
Go to chrome://flags/#optimization-guide-on-device-model and select "EnabledBypassPrefRequirement".
Go to chrome://components, search for "Optimization Guide On Device Model", and click "Check for Update". This will download the model. If you don't see the settings, repeat steps 1 and 2 and relaunch your browser.
I followed the steps. no joy
Here's a vid showing all steps
https://youtu.be/NxKXcMgiz5k
thank you

Hey, first of all, thanks for your sponsorship!
The Gemini Nano is not fully stable. Two weeks ago, it was working fine, but now it's showing an error. I’ll investigate what's happening. Thank you for the video.
I’ll let you know once it’s fixed. Thanks!

Sorry, guys. This issue may take longer to fix since Chrome changed the APIs. :/ I’ll let you know if there are any updates

The issue has been fixed. Please let me know if it's working or not. :)

No joy.
Go to chrome://flags/#prompt-api-for-gemini-nano and select "Enable".
Go to chrome://flags/#optimization-guide-on-device-model and select "EnabledBypassPrefRequirement".
Go to chrome://components, search for "Optimization Guide On Device Model", and click "Check for Update".

"Optimization Guide On Device Model" doesn't exist on my v. of chrome after reinstalling chrome: "Optimization Guide On Device Model"
Optimization Guide On Device Model is missing after doing steps 1 and 2 and restarting
chrome://settings/help
v of chrome
Version 131.0.6778.70 (Official Build) (64-bit)

Hey, can you select EnabledBypassPrefRequirement from these settings?

still not joy
https://youtu.be/fmqupjXqLGQ

same

Same here ;-(

If it helps; nano is working for me on canary: macos

I've found that gemini does NOT work on chrome dev though :/ only chrome canary.

If it helps; nano is working for me on canary: macos
I've found that gemini does NOT work on chrome dev though :/ only chrome canary.

How did you get it to work?

I had already followed the steps to turn gemini on here

but after some time away from it I ran this in my chrome developer console (await ai.languageModel.capabilities()).available and it said "no" even though it used to be yes for sure.
so in chrome dev console I ran await ai.languageModel.create() to force it to renew itself, after a few minutes (maybe redownloading?). it started working again. I was using the Playground to verify that I even had gemini running as well. if its not working there, its probably broken everywhere


Learn kivy module

need to mess arround with kivy interface module so we can be ready when we need to use it

Hey there, how can I be of help? I just studied Kivy a few days back.

Hey there, how can I be of help? I just studied Kivy a few days back.

Hi Neil, we are a group of college students and are just starting learning Kivy for our project. We don't know much about it yet, so we don't have questions at the moment. We will keep updating throughout the next months this page. If you want to star the project and se the progress, you are welcome to do so.

Hey there, how can I be of help? I just studied Kivy a few days back.

We appreciate your help and if you are willing to help us with futur questions, we would be very grateful.
Thanks again and have a great day,
Level-US team


WIP: migrate from ESRI

Some changes in the text, added links to relevant pages in the docs / to QGIS page, changed section names a bit.

ESRI is officially Esri
added a tip at the beginning of the page about getting familiar with Mergin Maps. All the info is on the bottom of the page, but I feel like it should be also on the top (some people may not scroll so far down to read it :) )
How I read the https://north-road.com/slyr/ , the fcommunity version offers only converting *.style and *.lyr files (not project files). Please check, maybe I misunderstood.
added links/steps to downloading Mergin Maps components to the Migrate section, as I feel like it might be unclear that they need to use the plugin and have an account to use the app
...

@nyalldawson thanks for the review :) ... hopefully more people will discover SLYR this way


how to declare mat3 or mat4 varying?

I need varying mat3 or mat4 in my varying.def.sc.  Is there a list of possible semantics?  I know TEXCOORD0, COLOR1, NORMAL, TANGENT etc.. but none of them is mat3 or mat4 type.

nevermind, I get it.  It's a semantics for hlsl.


Adding footer navigation

This is the footer nav change for the accessibility statement - the rest of the changes are in contentful


RegisterWebhookAsync does not encode the url parameter

RegisterWebhookAsync does not url encode the url parameter which breaks registration if you have a ? or & in it for example. I can create a PR to properly encode it but it will double encode if someone is already encoding it because the current version does not.
I recommend Uri.EscapeDataString
At a minimum if you don't want to encode it might be good to add some notes on that, also that port 443 is the only allowed port for https servers.
This causes an error on twitters side that is not clear if you don't manually encode the url.

Sounds good to me.
I can't think of any reason to not encode it in Tweetinvi, but it should probably take an optional bool encodeUri = true in case someone has a use-case that means it's already encoded :)

No there is no reason not to encode it EXCEPT for someone already using this library and running into this problem.  If they then upgrade and the method signature is the same their code will now break as it will be double encoded.    We could make an ecodeUri param that just breaks for everyone and forces them to set true or false.   Or you could say that likely there are just not a lot of users who probably are currently encoding the url so if we change the current behavior no big deal.

I’d personally change the current behaviour. As long as it’s released in a major version update I think that’s fine & it can just be documented in the release notes.
@linvi would you be happy with that?

I agree, the url should be and will be encoded.
Thanks for the feedback

@JoshKeegan @mitchcapper I have been looking at this tonight, and I actually wondered why Tweetinvi should encode this url.
If the developer does not encore the url why should it be Tweetinvi responsibility to do so?
In the end Tweetinvi is a library that executes what the developer sends, regardless of what he asks for.
In the case Tweetinvi had to handle this encoding we would end up supporting 2 cases :

Developers sends a not encoded url and Tweetinvi should encode it
Developer sends an already encoded url, Tweetinvi should not encode it twice.

By moving this responsibility up to the developer and documenting it this will not be a problem and it also provides more freedom to the developer if tomorrow the way Twitter expects the URL changes (no need of library release).
Let me know what you think but as is, I think I will close this ticket.

Personally I disagree, I think it is odd behavior to encode form data at a higher level.  If you call a post or get function one doesn't normally manually encode the form data ahead of time.   In theory a library should make a developers life easier.  I assume if there is a url parameter I pass it a url and not have previously uri encoded that url.   The fact it must be encoded has to do with how the call is done to twitter so I would put in the realm of the library. If a service updates it would be great if all I do is update the library I use to interact with it and not have to update my code.
With that said clearly I think this way as I filed the bug.   Documentation will also work, but in terms of expected it would not seem to me to be the desired default behavior.

If we think of Tweetinvi as an SDK for Twitter, the consumer of Tweetinvi should just know that by using Tweetinvi, they are using Twitter. The fact that Tweetinvi is using Twitter’s HTTP REST API and this parameter needs URL encoding is irrelevant to the consumer.
What happens if Twitter released a gRpc API and Tweetinvi started changing calls to use that? Having leaked implementation details of the HTTP API, it now becomes harder work to port to a different implementation...
So, from a purist point of view Tweetinvi should do the encoding.
However, in reality, if Twitter made any major changes to their API (never mind something as major as switching to gRpc) it’s likely to require changes to the public contract of Tweetinvi.
So either way the developer using Tweetinvi needs to have some awareness of Twitter and it’s APIs. I don’t think there’s a right answer, but would probably lean towards having Tweetinvi do the encoding.

Thank you both for your comments, I will read more on the subject and will let you know.

I could not find any good source on the subject but I think I understand your point of view and will proceed with it.


Redesign for alpha release

Adding the initial work I've done to retool the site for alpha. This isn't ready for merge yet, but I wanted to get a deploy preview and have something for people to look at.

This is pretty much good to go in terms of layout/organization, just needs content. IMO it'd be better to go ahead and merge so we can lay out issues for bringing in content individually from each SIG/author/etc.

Just got back from vacation - apologies for the delay. Is there a way to see the preview site with the changes that you've made? No worries if not

@mtwo Yeah, it's at https://deploy-preview-30--opentelemetry.netlify.com/

I'd recommend to call the top menu item "Project", instead of "More"
The doc pages have weird behavior where they first display without the stylesheets, and then redraw. I am getting it consistently in the preview. Also, occasionally Chrome offers to translate the page from Norwegian 🤷♂

@yurishkuro I'm not sure what's up with the redraw on the doc pages. I'll look into it a bit more.
My best guess as to why Chrome is trying to translate them after some quick googling is that there's not enough english text on the page, which will get fixed as the content fills out.
I did update the 'More' header to say 'Project', though.

Thanks @austinlparker! One thing I noticed: at most page widths, the sidebar looks like it has an excessive amount of padding on its left.


Incorrect documentation

Hello
In this file, the documentation is incorrect regarding JavaScript "Integer Division/Multiplication".
https://github.com/reason-association/rescript-lang.org/blob/cfb9ea89d3d42fee1ce3e8e67e76dd82e0fa49b1/pages/docs/manual/latest/overview.mdx
It states that in JavaScript 2 / 23 * 1 is integer division, but it is not.

It states that in JavaScript 2 / 23 * 1 is integer division, but it is not.

What is the correct statement?

the goal of this comparison page is not to be 100% accurate on the compile output, but to give an overview on what how JS / ReScript constructs compare on the syntax surface

@ryyppy then I suggest removing integer operations (Division/Multiplication, Addition) because there are no integers in JavaScript.

Thanks! We can't not document the integer calculations there as it'd raise more questions. I've added a disclaimer after the table though


Cannot install via PyPI or Github

For some reason when ever I try to install spdlog, I keep getting this error. I've tried installing as an admin via PyPI. I've tried installing it as a submodule then installing it but I get the same error. I've tried using wheel and I still get the same error. I'm not sure if its just me or if there is something wrong with the setup.py file.
I've written the error below, I'm trying to figure out why I'm getting the error but I just cant seem to figure it out.
Collecting spdlog   Using cached spdlog-2.0.2.tar.gz (113 kB) Collecting pybind11>=2.2   Using cached pybind11-2.6.2-py2.py3-none-any.whl (191 kB) Using legacy 'setup.py install' for spdlog, since package 'wheel' is not installed. Installing collected packages: pybind11, spdlog     Running setup.py install for spdlog: started     Running setup.py install for spdlog: finished with status 'error'     ERROR: Command errored out with exit status 1:      command: 'D:\ViperGL\ViperGL\ViperGLEnv\Scripts\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\ronal\\AppData\\Local\\Temp\\pip-install-ruvcf595\\spdlog_c72a425b30be4082819d3d73c1eddb44\\setup.py'"'"'; __file__='"'"'C:\\Users\\ronal\\AppData\\Local\\Temp\\pip-install-ruvcf595\\spdlog_c72a425b30be4082819d3d73c1eddb44\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\ronal\AppData\Local\Temp\pip-record-3ciqrv4c\install-record.txt' --single-version-externally-managed --compile --install-headers 'D:\ViperGL\ViperGL\ViperGLEnv\include\site\python3.7\spdlog'          cwd: C:\Users\ronal\AppData\Local\Temp\pip-install-ruvcf595\spdlog_c72a425b30be4082819d3d73c1eddb44\     Complete output (15 lines):     WARNING: The wheel package is not available.     running install     running build     running build_ext     building 'spdlog' extension     creating build     creating build\temp.win-amd64-3.7     creating build\temp.win-amd64-3.7\Release     creating build\temp.win-amd64-3.7\Release\src     C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Ispdlog/include/ -ID:\ViperGL\ViperGL\ViperGLEnv\lib\site-packages\pybind11\include -ID:\ViperGL\ViperGL\ViperGLEnv\lib\site-packages\pybind11\include -ID:\ViperGL\ViperGL\ViperGLEnv\include "-IC:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" /EHsc /Tpsrc/pyspdlog.cpp /Fobuild\temp.win-amd64-3.7\Release\src/pyspdlog.obj -std=c++11 -v     cl : Command line warning D9002 : ignoring unknown option '-std=c++11'     cl : Command line warning D9002 : ignoring unknown option '-v'     pyspdlog.cpp     spdlog/include/spdlog/sinks/syslog_sink.h(16): fatal error C1083: Cannot open include file: 'syslog.h': No such file or directory     error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.28.29333\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2     ---------------------------------------- ERROR: Command errored out with exit status 1: 'D:\ViperGL\ViperGL\ViperGLEnv\Scripts\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\ronal\\AppData\\Local\\Temp\\pip-install-ruvcf595\\spdlog_c72a425b30be4082819d3d73c1eddb44\\setup.py'"'"'; __file__='"'"'C:\\Users\\ronal\\AppData\\Local\\Temp\\pip-install-ruvcf595\\spdlog_c72a425b30be4082819d3d73c1eddb44\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\ronal\AppData\Local\Temp\pip-record-3ciqrv4c\install-record.txt' --single-version-externally-managed --compile --install-headers 'D:\ViperGL\ViperGL\ViperGLEnv\include\site\python3.7\spdlog' Check the logs for full command output. ----- Failed to install 'spdlog' -----

Part of the problem is that I have never tried to install (compile) spdlog-python on Windows. I am looking into this issue now.

@bodgergely Thanks a bunch! It would be of great help if I could get it running on windows.

@RonaldoAPSD Can you check if you can do exactly:
pip install spdlog
See if you pick it up v2.0.4 from PyPi since I released a new version.


ng test not working after upgrade to 6.0.0

After upgrading the cli the unit tests doesn't start anymore.
Previous behaviour was that the unit tests were found and executed. Now it does not find the unit tests and says 0 of 0 executed.
Versions
Angular CLI: 6.0.0-rc.6
Node: 9.7.1
OS: win32 x64
Angular: 5.2.2
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, platform-server, router
... service-worker

Repro steps

Upgrade to latest cli
ng test

Observed behavior
27 04 2018 14:59:35.185:INFO [karma]: Karma v1.7.1 server started at http://<IP_ADDRESS>:9876/
27 04 2018 14:59:35.191:INFO [launcher]: Launching browser Chrome with unlimited concurrency
27 04 2018 14:59:35.201:INFO [launcher]: Starting browser Chrome                                                                                27 04 2018 15:00:26.221:INFO [Chrome 66.0.3359 (Windows 10 0.0.0)]: Connected on socket _q17vZKEaK6MoqgCAAAA with id 70169079
Chrome 66.0.3359 (Windows 10 0.0.0): Executed 0 of 0 ERROR (0.016 secs / 0 secs)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>test: `ng test`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>test script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      C:\Users\myuser\AppData\Roaming\npm-cache\_logs\2018-04-27T13_00_28_789Z-debug.log

10 silly lifecycle<EMAIL_ADDRESS>Args: [ '/d /s /c', 'ng test' ]
11 silly lifecycle<EMAIL_ADDRESS>Returned: code: 1  signal: null
12 info lifecycle<EMAIL_ADDRESS>Failed to exec test script
13 verbose stack Error<EMAIL_ADDRESS>test: `ng test`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:285:16)
13 verbose stack     at EventEmitter.emit (events.js:127:13)
13 verbose stack     at ChildProcess.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:127:13)
13 verbose stack     at maybeClose (internal/child_process.js:936:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5)
14 verbose pkgid<EMAIL_ADDRESS>15 verbose cwd C:\Users\myuser\myproj\myproj-web
16 verbose Windows_NT 10.0.16299
17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "test"
18 verbose node v9.7.1
19 verbose npm  v5.6.0
20 error code ELIFECYCLE
21 error errno 1
22 error<EMAIL_ADDRESS>test: `ng test`
22 error Exit status 1
23 error Failed at the<EMAIL_ADDRESS>test script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

.angular.json
{
  "$schema"<EMAIL_ADDRESS>  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "myproj-web": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist",
            "index": "src/index.html",
            "main": "src/main.ts",
            "tsConfig": "src/tsconfig.app.json",
            "polyfills": "src/polyfills.ts",
            "assets": [
              {
                "glob": "**/*",
                "input": "src/assets",
                "output": "/assets"
              },
              {
                "glob": "**/*",
                "input": "src/favicon.ico",
                "output": "/favicon.ico"
              }
            ],
            "styles": [
              "src/styles.scss"
            ],
            "scripts": []
          },
          "configurations": {
            "localdev": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.localdev.ts"
                }
              ]
            },
            "localdev-other": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.localdev-other.ts"
                }
              ]
            },
            "production": {
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true,
              "serviceWorker": false,
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ]
            },
            "demo": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.demo.ts"
                }
              ]
            },
            "demo-other": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.demo-six.ts"
                }
              ]
            },
            "e2e-tests": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.e2e-tests.ts"
                }
              ]
            },
            "preview": {
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true,
              "serviceWorker": true,
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.preview.ts"
                }
              ]
            },
            "dev-other": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.dev-other.ts"
                }
              ]
            },
            "prod-other": {
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true,
              "serviceWorker": true,
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod-other.ts"
                }
              ]
            },
            "preview-other": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.preview-other.ts"
                }
              ]
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "myproj-web:build"
          },
          "configurations": {
            "localdev": {
              "browserTarget": "myproj-web:build:localdev"
            },
            "localdev-other": {
              "browserTarget": "myproj-web:build:localdev-other"
            },
            "production": {
              "browserTarget": "myproj-web:build:production"
            },
            "demo": {
              "browserTarget": "myproj-web:build:demo"
            },
            "demo-other": {
              "browserTarget": "myproj-web:build:demo-other"
            },
            "e2e-tests": {
              "browserTarget": "myproj-web:build:e2e-tests"
            },
            "preview": {
              "browserTarget": "myproj-web:build:preview"
            },
            "dev-other": {
              "browserTarget": "myproj-web:build:dev-other"
            },
            "prod-other": {
              "browserTarget": "myproj-web:build:prod-other"
            },
            "preview-other": {
              "browserTarget": "myproj-web:build:preview-other"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "myproj-web:build"
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "src/test.ts",
            "karmaConfig": "src/karma.conf.js",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.spec.json",
            "scripts": [],
            "styles": [
              "src/styles.scss"
            ],
            "assets": [
              {
                "glob": "**/*",
                "input": "src/assets",
                "output": "/assets"
              },
              {
                "glob": "**/*",
                "input": "src/favicon.ico",
                "output": "/favicon.ico"
              }
            ]
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "src/tsconfig.app.json",
              "src/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "myproj-web-e2e": {
      "root": "",
      "projectType": "application",
      "cli": {},
      "schematics": {},
      "architect": {
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "./protractor.conf.js",
            "devServerTarget": "myproj-web:serve"
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "e2e/tsconfig.e2e.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    }
  },
  "cli": {},
  "schematics": {
    "@schematics/angular:component": {
      "prefix": "app",
      "styleext": "scss"
    },
    "@schematics/angular:directive": {
      "prefix": "app"
    }
  }
}

I also tried to replace, karma, tsconfigs, edited angular.json, replaced angular.json with one from a new project........

I'm running into a similar issue on @angular/cli 6.0.0. For me, the error line looks like Chrome 66.0.3359 (Linux 0.0.0): Executed 0 of 0 ERROR (0.009 secs / 0 secs). Similar to @DominicBoettger, the previous behavior for my project was that the tests were found and executed successfully. I'm having trouble troubleshooting this; no errors appear in my Chrome console when running the tests, and changing the Karma log level to DEBUG doesn't show any obvious issues. I tried futzing around with the dependency versions of Karma and Jasmine, thinking maybe I had upgraded them to incompatible versions, but that did not yield any solutions either. I've looked at the source changes made to my files as part of upgrading to Angular v6, but haven't been able to identify any leads. Also, I'm not even seeing the npm ERR! messages that @DominicBoettger posted. The Executed 0 of 0 ERROR (0.009 secs / 0 secs) is the last line of the output for me before ng test finishes.

I've done some more investigation. My Karma entrypoint file (which I had renamed from src/test.ts to ui/main.karma.ts; all of my .ts files live in ui rather than src) does not seem to be getting executed in the way I'd expect: none of the console.error statements I place in that file ever show up in the console or terminal output (they do show up in the terminal output if I do the same thing in a clean ng new project.)
I confirmed that my main.karma.ts file is correctly referenced from the angular.json test/main option, and I confirmed that compilation fails if I change the "main" attribute to point to a nonexistent filename.
I confirmed that my *.spec.ts files are detected and included by Karma. The generated _karma_webpack_/main.js file available when running Karma contains a var map = {...} line section which maps my spec files to their workspace-relative paths, and the tests themselves show up in that file.
My suspicion is still that something is going wrong with the execution of my Karma main entrypoint file, since like I mentioned, any console.error or other logging statements I add to that file are not showing up in my terminal output. However, that file is very simple and is identical to the test.ts provided out-of-the-box by Angular CLI, so I'm still not sure what the issue is.

I've got the same problem. Karma is running but no tests are executed.
It looks like test.ts is not loaded

I've managed to reproduce the bug with a clean ng new project.
Steps:
Create a new project
ng new test

Add angularfire2 and firebase
npm install firebase angularfire2 --save

Add this code to the app.component.spec.ts
import { AngularFireAuth } from 'angularfire2/auth';
const af = AngularFireAuth;

Also if I run Jest instead of Karma I get the following error:
Zone already loaded.

Could be related to https://github.com/angular/angularfire2/issues/1597

In my project all specs which tests components with jquery are affected. When deleting them it works. With angular 5.2 and cli 1.7 they worked. JQuery is defined in polyfills.ts. Still need to find out how to fix them.

I just ran into this as well (Executed 0 of 0 ERROR) after upgrading to Angular 6 on a project where tests previously ran successfully. I compared the test.ts file in my project versus a new project generated with the Angular 6 CLI, and noticed a lot of additional imports (import 'core-js/es7/reflect',  import 'zone.js/dist/jasmine-patch'), etc in my project. I replaced these with:
import 'zone.js/dist/zone-testing';

and my tests started executing again.  It definitely seems like an error message is getting swallowed somewhere.

I've checked code generated by jasmine.
All specs are present but none of them are loaded.

I'm facing the same issue mentioned above. It seems test.ts file is never executed

I am experiencing the same issue, and I am ground completely to a halt for the time being :(

Thanks to @herkulano for the mention that Jest ran and gave a real error message; as a workaround I dropped in Jest using a couple of the steps from here, and was able to execute my tests and see one failing and fix it...
Except now all my tests pass with jest, yet are still all "0 of 0 ERROR" with ng test.
¯\(ツ)/¯

After upgrading to jest I realized the issue was my version of angular fire 2. I downgraded angular fire to 5.0.0-rc.5-next and it started working again. The main issue is that the error is not being shown to the user.

Same here, it seems after upgrading some tests were broken so I fixed them with Jest. However, karma is still failing. FYI: I'm not using firebase in my project.

In my case problem was caused by rxjs.
In polyfills.ts I had imports like 'rxjs/add/operator/map'
I could build and run app without any problem but test won't work.
After removing old operators (and some refactoring to made it work) tests started to work again

I have tried many different options, updated karma.conf, run rxjs-5-to-6-migrate using both tsconfig.app.json and tsconfig.spec.json, limiting the test to only one file using both fdescribe and an updated context all to no avail, still getting the same error with no indication of what might be the issue.
10% building modules 1/1 modules 0 active(node:20307)
10% building modules 3/3 modules 0 active16 05 2018
16 05 2018 13:28:48.389:INFO [karma]: Karma v2.0.2 server started at http://<IP_ADDRESS>:9876/
16 05 2018 13:28:48.391:INFO [launcher]: Launching browser Chrome with unlimited concurrency
10% building modules 3/4 modules 1 active …Code/app/src sync /\.spec\.ts$/
16 05 2018 13:28:48.397:INFO [launcher]: Starting browser Chrome
16 05 2018 13:29:16.145:INFO [Chrome 66.0.3359 (Mac OS X 10.13.4)]: Connected on socket Oe1qLUQnfzz4NoimAAAA with id 50078300
Chrome 66.0.3359 (Mac OS X 10.13.4): Executed 0 of 0 ERROR (0.012 secs / 0 secs)

Jest does run but requires many tests to be updated in our application which is not at option at the moment.
Any guidance or tips appreciated! 🙏

I'm also experiencing this problem. ng serve and ng build runs without errors. I've tried to move files like package.json, tsconfig.*.json, test.ts, karma.conf.js, etc. from a clean project to my existing one but without luck.
I've also moved some tests from my existing app to the clean project and with some work they do run without any problems. Before upgrading to Angular 6 all tests were working fine.
Jest is also not an option for our project since almost all tests need to be updated.
I can confirm that the spec files are bundled by webpack and served to karma. However, inspecting the source tab in Chrome shows that there is indeed a part of the application missing.
My App:

Vs. new Project:

If that might help, for our configuration it was the presence of rxjs-compat while testing that made everything fail (well, 0 of 0 executed), so in tsconfig.spec.json we added
"compilerOptions": {
        "paths": {
            "rxjs-compat": ["rxjs-compat.mock.ts"],
         }
}

where rxjs-compat.mock.ts is just
console.warn('False rxjs-compat loaded for testing, you should remove this whenever possible');

@WilliamChelman this method did expose an issue with my paths which are defined in tsconfig.json but were not being defined in the tsconfig.spec.json, this was not an issue in Angular 5.x. I have updated tsconfig.spec.json with those now as well:
 "paths": {
      "rxjs-compat": ["rxjs-compat.mock.ts"],
      "@app/*": ["app/*"],
      "@env/*": ["environments/*"]
    }

The only change seems to be an addition of a SUCCESS entry in the output:
Chrome 66.0.3359 (Mac OS X 10.13.4): Executed 0 of 0 SUCCESS (0 secs / 0 secs)
Chrome 66.0.3359 (Mac OS X 10.13.4): Executed 0 of 0 ERROR (0.02 secs / 0 secs)

I am surprised no one from the team have weighed in on this as yet, not even to merely label the issue 😐

In my situation I had one spec file that silently failed the whole test run. After commenting out this spec, I was able to run tests again.
To find the specific test, I ran ls src/**/*.spec.ts | grep -o ".........$" | cut -d. -f1 | sort | uniq to get the previous letter before ".spec.ts" part. Then I added these letters. one by one, to regular expression in test.ts file, like a\.spec\.ts, then (a|b)\.spec\.ts etc. At the beginning, I run more and more tests successfully, until the regex included corrupted test. For me, the last letter added was 'e', so it was either service or pipe specification.
Subsequently, I was able to find autogenerated service test, that caused the error. I am pretty sure, that the error was in beforeEach part, however I can't figure out the exact reason.
Hope my comment helps someone.

I also did several tests and modifications but still get the message
Chrome 66.0.3359 (Windows 10.0.0): Executed 0 of 0 ERROR (0.009 secs / 0 secs)
If i create a new project it works without any problems. It's just not finding any tests in my existing project.

#11011

As mentioned in #11011 by @L2jLiga, I tried downgrading the @angular/cli to 1.7.4 and the tests are running once more. Might be a short term solution for those in a pinch.

My problem was with basePath property of karma.conf file. With @angular/cli - 1.7.4 I had this field empty and after upgrade Angular to version 6 I was experienced the same failing behaviour on tests.
I've filled it in with / and they run 👌 now.

I'd like to look at this but really need a repro to investigate. Can someone put up a repro in github please? Then I can clone it and look into the problem.

@filipesilva you can do reproduce it with these simple steps:
https://github.com/angular/angular-cli/issues/10485#issuecomment-386990790

@herkulano thank you for directing me to the repro, will look at it.

@filipesilva to make it simpler I've created a repro with the problem: https://github.com/herkulano/ng-cli-issue-10485

@filipesilva Also really simple to reproduce like this:

ng new myapp
edit polyfills.ts and add import "zone.js/dist/zone-patch-rxjs";
npm install rxjs-compat
ng test

Hey all, thanks for the reports. I think I know what was happening. It was two things together:

AngularFire2 was importing zone directly (https://github.com/angular/angularfire2/issues/1597). This caused the "Zone already loaded." message.
the Angular CLI build system was splitting the common parts of polyfills and test but not loading the common bits. This resulted in no error messages and no tests ran.

The first problem was fixed in https://github.com/angular/angularfire2/pull/1599 and released in<EMAIL_ADDRESS>The second problem has a fix incoming in https://github.com/angular/devkit/pull/993.
@herkulano I got your repro to work by manually applying the changes in my PR and updating to<EMAIL_ADDRESS>If you want to try this yourself, open<EMAIL_ADDRESS>and replace
chunks: buildOptions.commonChunk ? 'all' : 'initial',`

with
chunks: (chunk) => chunk.name !== "polyfills",

@Ristaaf your repro seems to work fine if I add import 'zone.js/dist/zone-patch-rxjs'; after import 'zone.js/dist/zone'; .

Greak work @filipesilva chunks: (chunk) => chunk.name !== "polyfills" fixed it!! Can't wait for update to update to angular 6 :)

@filipesilva thank you, but you're missing the point.
The problem is not fixing everyone's code, it's having silent errors so that we can fix it.
I already knew this was a problem with AngularFire, but the CLI or Karma gave me no pointers on where or why it was failing. I ended up moving to Jest, which had no problems showing exactly what was going on.

@herkulano it gave you no pointers because of the problem I am fixing in angular/devkit#993.

the Angular CLI build system was splitting the common parts of polyfills and test but not loading the common bits. This resulted in no error messages and no tests ran.

@filipesilva cool, thank you! didn't understand you were actually fixing the underlying problem.


How to get extra parameters

 Issue by amreo
Monday Feb 22, 2016 at 14:39 GMT
Originally opened as https://github.com/gsscoder/commandline/issues/290

how can I get extra parameters like
program file.txt src.cs hello
I want to get {"file.txt", "str.cs", "hello"}

 Comment by nemec
Saturday Apr 23, 2016 at 20:51 GMT

What happens if you do something like this?
class Options
{
    [Value(0, Min=1)]
    public IEnumerable<string> Values { get; set; }
}

If you leave the parameter Max out, I believe it will be unbounded and put everything into IEnumerable.