Blank page after installing Bookstack via docker-compose

Attempted Debugging

[X] I have read the debugging page

Searched GitHub Issues

[X] I have searched GitHub for the issue.

Describe the Scenario
Similar to #4023, except the fixes proposed do not work. Upon fresh installation, I am greeted by a blank screen.
My docker-compose.yml:
services:
  bookstack:
    image: lscr.io/linuxserver/bookstack
    container_name: bookstack
    environment:
      - PUID=1002
      - PGID=1002
      - APP_URL=https://wiki.url
      - DB_HOST=bookstack_db
      - DB_PORT=3306
      - DB_USER=bookstack
      - DB_PASS=<redacted>
      - DB_DATABASE=bookstackapp
    volumes:
      - /home/<user>/bookstack/bookstack_app_data:/config
      - /etc/letsencrypt:/etc/letsencrypt
    ports:
      - 6875:80
    restart: unless-stopped
    depends_on:
      - bookstack_db
  bookstack_db:
    image: lscr.io/linuxserver/mariadb
    container_name: bookstack_db
    environment:
      - PUID=1002
      - PGID=1002
      - MYSQL_ROOT_PASSWORD=<redacted>
      - TZ=Europe/Berlin
      - MYSQL_DATABASE=bookstackapp
      - MYSQL_USER=bookstack
      - MYSQL_PASSWORD=<redacted>
    volumes:
      - /home/<user>/bookstack/bookstack_db_data:/config
    restart: unless-stopped

with the error:
SQLSTATE[HY000] [1045] Access denied for user<EMAIL_ADDRESS>(using password: YES) (SQL: select * from information_schema.tables where table_schema = bookstackapp and table_name = migrations and table_type = 'BASE TABLE')

I've checked that the database container is accessible from the bookstack container and the user exists and can log in. There however doesn't seem to be any tables with the bookstackapp schema:
select distinct table_schema from information_schema.tables;
gives
+--------------------+
| table_schema       |
+--------------------+
| information_schema |
+--------------------+

Do you have any idea where the problem could lie? Thank you in advance!
Exact BookStack Version
LinuxServer.io Docker Image (v23.05.2)
Log Content
Bookstack container
$ docker logs -f bookstack` gives:
[migrations] started
[migrations] 01-nginx-site-confs-default: skipped
[migrations] 02-default-location: skipped
[migrations] done
───────────────────────────────────────

      ██╗     ███████╗██╗ ██████╗
      ██║     ██╔════╝██║██╔═══██╗
      ██║     ███████╗██║██║   ██║
      ██║     ╚════██║██║██║   ██║
      ███████╗███████║██║╚██████╔╝
      ╚══════╝╚══════╝╚═╝ ╚═════╝

   Brought to you by linuxserver.io
───────────────────────────────────────

To support LSIO projects visit:
https://www.linuxserver.io/donate/

───────────────────────────────────────
GID/UID
───────────────────────────────────────

User UID:    1002
User GID:    1002
───────────────────────────────────────

using keys found in /config/keys
App Key found - setting variable for seds
Running config - DB_HOST set
Waiting for DB to be available
PHP Warning:  PHP Startup: Invalid date.timezone value '', using 'UTC' instead in Unknown on line 0

   Illuminate\Database\QueryException

  SQLSTATE[HY000] [1045] Access denied for user<EMAIL_ADDRESS>(using password: YES) (SQL: select * from information_schema.tables where table_schema = bookstackapp and table_name = migrations and table_type = 'BASE TABLE')

  at /app/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php:760
    756▕         // If an exception occurs when attempting to run a query, we'll format the error
    757▕         // message to include the bindings with SQL, which will make this exception a
    758▕         // lot more helpful to the developer instead of just the database's errors.
    759▕         catch (Exception $e) {
  ➜ 760▕             throw new QueryException(
    761▕                 $query, $this->prepareBindings($bindings), $e
    762▕             );
    763▕         }
    764▕     }

      +36 vendor frames
  37  /app/www/artisan:35
      Illuminate\Foundation\Console\Kernel::handle()
[custom-init] No custom files found, skipping...
[10-Jun-2023 19:44:56] NOTICE: PHP message: PHP Warning:  PHP Startup: Invalid date.timezone value '', using 'UTC' instead in Unknown on line 0
[ls.io-init] done.

Bookstack Database container
$ docker logs -f bookstack_db gives:
[migrations] started
[migrations] no migrations found
───────────────────────────────────────

      ██╗     ███████╗██╗ ██████╗
      ██║     ██╔════╝██║██╔═══██╗
      ██║     ███████╗██║██║   ██║
      ██║     ╚════██║██║██║   ██║
      ███████╗███████║██║╚██████╔╝
      ╚══════╝╚══════╝╚═╝ ╚═════╝

   Brought to you by linuxserver.io
───────────────────────────────────────

To support LSIO projects visit:
https://www.linuxserver.io/donate/

───────────────────────────────────────
GID/UID
───────────────────────────────────────

User UID:    1002
User GID:    1002
───────────────────────────────────────

cp: not replacing '/config/custom.cnf'
[custom-init] No custom files found, skipping...
230610 21:44:47 mysqld_safe Logging to '/config/databases/bdbcf0b607b4.err'.
230610 21:44:47 mysqld_safe Starting mariadbd daemon with databases from /config/databases
[ls.io-init] done.

MariaDB log within the database container
In /config/databases/bdbcf0b607b4.err:
230610 21:44:47 mysqld_safe Starting mariadbd daemon with databases from /config/databases
2023-06-10 21:44:47 0 [Note] Starting MariaDB 10.11.3-MariaDB-log source revision 0bb31039f54bd6a0dc8f0fc7d40e6b58a51998b0 as process 393
2023-06-10 21:44:47 0 [Note] Using unique option prefix 'myisam_recover' is error-prone and can break in the future. Please use the full name 'myisam-recover-options' instead.
2023-06-10 21:44:47 0 [Note] InnoDB: Compressed tables use zlib 1.2.13
2023-06-10 21:44:47 0 [Note] InnoDB: Number of transaction pools: 1
2023-06-10 21:44:47 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2023-06-10 21:44:47 0 [Note] mariadbd: O_TMPFILE is not supported on /tmp (disabling future attempts)
2023-06-10 21:44:47 0 [Note] InnoDB: Using Linux native AIO
2023-06-10 21:44:47 0 [Note] InnoDB: Initializing buffer pool, total size = 256.000MiB, chunk size = 4.000MiB
2023-06-10 21:44:47 0 [Note] InnoDB: Completed initialization of buffer pool
2023-06-10 21:44:47 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2023-06-10 21:44:47 0 [Note] InnoDB: 128 rollback segments are active.
2023-06-10 21:44:47 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2023-06-10 21:44:47 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2023-06-10 21:44:47 0 [Note] InnoDB: log sequence number 47014; transaction id 16
2023-06-10 21:44:47 0 [Note] InnoDB: Loading buffer pool(s) from /config/databases/ib_buffer_pool
2023-06-10 21:44:47 0 [Note] Plugin 'FEEDBACK' is disabled.
2023-06-10 21:44:47 0 [Note] InnoDB: Buffer pool(s) load completed at 230610 21:44:47
2023-06-10 21:44:47 0 [Note] Server socket created on IP: '<IP_ADDRESS>'.
2023-06-10 21:44:47 0 [Note] Server socket created on IP: '::'.
2023-06-10 21:44:47 0 [Note] /usr/bin/mariadbd: ready for connections.
Version: '10.11.3-MariaDB-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  Alpine Linux
2023-06-10 21:44:48 4 [Warning] Aborted connection 4 to db: 'unconnected' user: 'unauthenticated' host: 'localhost' (This connection closed normally without authentication)
2023-06-10 21:44:49 6 [Warning] Aborted connection 6 to db: 'unconnected' user: 'unauthenticated' host: 'bookstack.bookstack_default' (This connection closed normally without authentication)
2023-06-10 21:44:55 7 [Warning] Aborted connection 7 to db: 'unconnected' user: 'unauthenticated' host: 'bookstack.bookstack_default' (This connection closed normally without authentication)
2023-06-10 21:44:55 8 [Warning] Access denied for user<EMAIL_ADDRESS>(using password: YES)
2023-06-10 21:45:05 9 [Warning] Access denied for user<EMAIL_ADDRESS>(using password: YES)
... [and more the same line, but with different time]

PHP Version
Unsure, host system runs php7.4 (fpm) but the container seems to have its own php
Hosting Environment
docker-compose image running on Ubuntu 20.04.6 LTS x86_64 (DigitalOcean Droplet), proxypass to <IP_ADDRESS>:6875 using nginx/1.18.0
MariaDB is already installed on the host system.

So it looks like a connection is being made and everything, but it's simply a case of the credentials not matching with what's expected.
With both the app and database container image used in this, the database details are somewhat "sticky", in that they're only used on first start-up, or made persistent via other means after first boot.
This means that any changes made to the compose env details, after an initial boot (boot with existing volume files mounted), may not apply.
Based upon the provided info, I'm assuming this is a fresh system with no pre-existing data (do not continue below if that's not the case).
In that case, I'd advise doing the following:

Take down the existing containers.
Delete the existing mapped volume folders for these containers on the host system.
In your compose stack, Make sure that DB_PASS on the bookstack container is aligned with MYSQL_PASSWORD on the database container. I'd maybe avoid special characters for parsing safety here for these values.
Bring the stack up, so that any persistent data is re-created in those mapped volume folders.

Hi there, sorry I just got the time to look into this again, but that fixed it, thank you so much!
It actually did not occur to me that DB_PASS and MYSQL_PASSWORD should be the same, which in hindsight was extremely obvious. I actually tried making all the password fields the same but that did not work because I only restarted the container and did not delete the existing mapped volume folders.
Thanks once again for the help!


Improve docstrings

A little bit silly but it was bothering me :)

This change is

Uh let me do it properly


Removed extra bracket in realsense launch file

The realsense launch file had an extra bracket that was breaking the tf tree.

@ToniRV @marcusabate @nathanhhughes @yunzc @SunZezhou Could one of you take a look and merge this.


Soil Options

Considering the fact that you’ve done stone types, why not do the same for soil using the silt, clay, and sand system pictured at the bottom. There could be a few uses/ mechanics added through this, certain soil types may be more fertile based on composition or certain biome types may be more inclined to have certain soil types. Another addition could be block physics based on composition, depending on percentage of silt, sand or clay the block may be affected by gravity more or less (somewhere between sand and dirt).

I really like the idea of having different types of soils but I think this would do better as a stand-alone mod rather than being integrated in Strata itself.

I really like the idea of having different types of soils but I think this would do better as a stand-alone mod rather than being integrated in Strata itself.

I really like the idea of having different types of soils but I think this would do better as a stand-alone mod rather than being integrated in Strata itself.

Will you make this sort of mod? I would really like different soils as currently you can't say have like jungle soil in a plains a s it all looks the same


Add diagnostics (and some other improvements)

Note: This PR is quite big (because a lot of the changes were interdependant).

Changelog

Added tenzir -f <file> to load and execute a file.
Added struct diagnostic { ... } and struct location { ... } to emit diagnostics (errors, warnings, notes) during parsing and execution (with more diagnostics to come in the future).
Added a recursive-descent parser that, in contrast to the pure combinator-based approach, is able emit helpful diagnostics.
Added a colorful diagnostic printer which prints annotated snippets of the relevant code.
Added an operator argument parser to facilitate operator implementations, has diagnostics, usage and docs links
Added a parse_operator(...) function to operator plugins (and similar for loaders/parsers/printers/saves), with a deprecated fallback to make_operator(...).
Changed serialization to use inspect(op) instead of to_string(op). This not only solves some incomplete escaping attempts, but also allows transporting metadata (such as location) and eliminates the need for workarounds for serialization of export | where ... and other optimizations.
Added separate plugins for parsing and serialization. This is also because the plugin (implicitly) provides the inspect implementation, but not all plugins define operators (some resolve to already existing operator implementations). Inheriting from operator_plugin implicitly adds both.
Improved loader/parser/printer/saver plugin API (e.g. using a printer with invalid arguments will now error when parsing the pipeline, instead of during execution or sometimes even not at all).
Changed the main code path to not use language plugins anymore. They can be replaced with better solutions soon.
Changed the default connector to stdin/stdout for all formats (e.g. to unify write json and write csv).

Future work

The recursive descent parser is pretty experimental and will probably see quite some improvements in the future. In particular, this applies to the built-in dynamic lexer and the parser interface, which were just built to get the job done. This absolutely needs some more work, but we might want to merge this anyways to already get everything mentioned above and avoid merge conflicts.
The diagnostic printer already supports disabling colors, but we need some detection logic with manual overrides.
The diagnostic printer works with files and command-line strings, but the output format was built for files. We should consider adding an alternative diagnostic printer if the input was given as a one-line string.
Make use the diagnostics in more places. In particular, I did not convert many places yet where warnings/errors could be emitted during execution.
Convert remaining operators while expanding the parser as needed.
Currently, the parser makes use of exceptions (which get caught at an outer layer). This becomes problematic once exceptions cross our plugin API boundaries, that is: parse_operator(...) can currently throw a diagnostic. I don't really like this. Furthermore, as it is right now, plugin parsers cannot emit warnings. At least this should be changed.
This still contains some definitions and a parser for the potential upgrade of expression. They are more or less dead code and are to be upgraded as part of the expression revamp, or eventually deleted if they stay unused.
This PR adds a default implementation for operator_base::to_string() that uses caf::detail::stringification_inspector. This output is not too readable, and in particular unsuitable for user-facing messages. We should consider a json_writer that uses to_string(...) for some types, such as expressions.
Try to find a solution for the problem that arises from the implicit plugin::name() overrides in connection with defining both loader and saver (or parser and printer).

We should avoid merging other PRs until this is in so we can avoid further merge conflicts.

We need to merge #3232 for CI. It would also be great to not delay #3225, @lava is going to check how much both branches conflict.

We need to merge #3232 for CI. It would also be great to not delay #3225, @lava is going to check how much both branches conflict.

I will enable auto merge here any second now. But CI might fail also for actual reasons, so go ahead if you want to.

@lava is going to check how much both branches conflict.

There's two conflicts, one in fwd.hpp and one in pipeline_manager.cpp, both are just 1-2 lines and straightforward to resolve.


Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string

Hi, I am trying to run homenotalone project locally, I followed your README instructions
node --version
v18.2.0

psql -U nassos -d athome -h <IP_ADDRESS> -p 5434
Password for user nassos:
psql (15.3 (Ubuntu 15.3-1.pgdg20.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

athome=#

Here is my .env file
VITE_DB_URL=postgresql://nassos@localhost:5434/athome
VITE_ORIGIN=athome.com
VITE_ADMIN_PASSWORD='@h0me'

The database is seeded successfully and I managed to connect using pgPromise node.js library
import pgPromise from 'pg-promise';

// Create an instance of pg-promise
const pgp = pgPromise()

// connection string:
const cn = 'postgresql://nassos:@h0me@localhost:5434/athome'

// Creating a new database instance from the connection details:
const db = pgp(cn);

// psql -U nassos -d athome -h <IP_ADDRESS> -p 5434

db.connect()
    .then(obj => {
        // Can check the server version here (pg-promise v10.1.0+):
        const serverVersion = obj.client.serverVersion;
        const cp = obj.client.connectionParameters;

        console.log(serverVersion)
        console.log('Connected to database:', cp.database);

        obj.done(); // success, release the connection;
    })
    .catch(error => {
        console.log('ERROR:', error.message || error);
});

15.3 (Ubuntu 15.3-1.pgdg20.04+1)
Connected to database: athome

I have installed successfully dependencies pnpm i
and started a development server but I am getting the following error when I try to access the home page of the web site.
 pnpm dev

><EMAIL_ADDRESS>dev /home/athan/Work/TestSvelte/homenotalone
> vite dev

@vavite/node-loader/plugin: @vavite/node-loader is not enabled. Please run with `node --experimental-loader=@vavite/node-loader`.

  VITE v4.2.0  ready in 769 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: use --host to expose
  ➜  press h to show help

Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string
    at Object.continueSession (/home/athan/Work/TestSvelte/homenotalone/node_modules/.pnpm/pg@8.11.0/node_modules/pg/lib/crypto/sasl.js:24:11)
    at Client._handleAuthSASLContinue (/home/athan/Work/TestSvelte/homenotalone/node_modules/.pnpm/pg@8.11.0/node_modules/pg/lib/client.js:272:18)
    at Connection.emit (node:events:527:28)
    at /home/athan/Work/TestSvelte/homenotalone/node_modules/.pnpm/pg@8.11.0/node_modules/pg/lib/connection.js:117:12
    at Parser.parse (/home/athan/Work/TestSvelte/homenotalone/node_modules/.pnpm/pg-protocol@1.6.0/node_modules/pg-protocol/dist/parser.js:40:17)
    at Socket.<anonymous> (/home/athan/Work/TestSvelte/homenotalone/node_modules/.pnpm/pg-protocol@1.6.0/node_modules/pg-protocol/dist/index.js:11:42)
    at Socket.emit (node:events:527:28)
    at addChunk (node:internal/streams/readable:324:12)
    at readableAddChunk (node:internal/streams/readable:297:9)
    at Readable.push (node:internal/streams/readable:234:10)

Can you help me fix this and complete my test ?
Thank you

Hmm... Is it possible that it's because no Postgres password is explicitly set in the connection string?
Maybe it needs postgresql://nassos:xxxxxxxxx@localhost:5434/athome?


change the name of struct blockIODevice to BlockIODevice

the struct blockIODevice is begin with lower case letters, and we cannot export it and instantiate it from other packages.This PR fixed it
Signed-off-by: Wang Qilin<EMAIL_ADDRESS>

IIRC I did this way so the inner struct was hidden and you just had to instantiate the upper struct with only the public fields (I explicitly did this way cause I didn't want another struct just for Major, Minor and you can always use the other struct without instantiating the private one)

This is intentional. It'll stay not exported for now.

On Sun, Oct 25, 2015 at 08:06:35AM -0700, Antonio Murdaca wrote:

IIRC I did this way so the inner struct was hidden and you just had
to instantiate the upper struct with only the public fields…

This got unpacked in more detail on IRC today, starting with 1.


First Tool Documentation - KH2 Text Editor

Extensive detail on how to use the text editor. Many functions aren't currently listed either because their types are marked as unknown or I simply didn't know their purpose or how to use them. It covers all the main bases though. This document should be totally usable for the majority of people that wish to change text in the game.
Includes proper markdown formatting and example images littered throughout.

I think that's an excellent idea for this program and future ones.


Hoping for a 1.21.1 update

As the title states, I am really hoping for this mod to update to 1.21 or 1.21.1.
This mod really is the only thing that makes Serene Seasons Playable to me.
I don't want to be annoying with asking "Port This? Port That?" etc, I just wanna know if you plan to do this or not.
Kindest Regards!

Done in Git, for versions 1.20.4, 1.21.1, and 1.21.4. However I had to drop 1.20.1 and below due to big changes in the building logic (mostly NeoForge). Will be released as 1.4.0 soon, if you want to test right now, you can download from GitHub Actions.


CreateTable(CreateFlags createFlags = CreateFlags.None,string tableName=null)

Hi every one I'd like to suggest  another optional parameter of table name to be able to assign it progrmaticaly specially when it is connected to another table column value. I've seen more cases like that.
Track of changes will be:

CreateTable(CreateFlags createFlags = CreateFlags.None,string tableName=null)
CreateTable(Type ty, CreateFlags createFlags = CreateFlags.None,string tableName = null)
GetMapping(Type type, CreateFlags createFlags = CreateFlags.None,string tableName = null)
TableMapping(Type type, CreateFlags createFlags = CreateFlags.None,string tableName=null)

Thanks

It's a bit tricky since a bunch of functions rely on being able to call GetMapping reliably.
Can you give an example where this feature is needed?

In a stock market scenario, we would save the symbol name and data. Symbol name is repetitive and consume space on each entry. Also for a very large file (15gb+) operations seems to slow down.
In this scenario, we can create same schema table with different symbol name. Hence, we don't need to save symbol name anymore and each symbol data is stored on different table but with same schema. Saves resource on disk and queries become faster.
Yes, it's possible to create separate file for each symbol.


fix #740; add null checks

Add checks for null to avoid the NPE.

Thanks for the contribution. It makes sense.


URL passed to fs.listdir instead of a path

Bug description
https://github.com/Lightning-AI/lightning/blob/master/src/pytorch_lightning/trainer/connectors/checkpoint_connector.py#L582
This line is called fs.listdir(dir_path) where dir_path is an URL instead of a path.
pyarrow will complain about it:
pyarrow.lib.ArrowInvalid: FileSelector.base_dir must not be a URI, got: hdfs:///somewhere/MNIST

How to reproduce the bug
use a HDFS path in trainer's default_root_dir
Error messages and logs
  File "main.py", line 63, in main
    trainer.fit(mnist_model, train_loader, valid_loader)
  File "/home/jobuser/build/yuxlu-test/environments/satellites/python/lib/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 696, in fit
    self._call_and_handle_interrupt(
  File "/home/jobuser/build/yuxlu-test/environments/satellites/python/lib/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 650, in _call_and_handle_interrupt
    return trainer_fn(*args, **kwargs)
  File "/home/jobuser/build/yuxlu-test/environments/satellites/python/lib/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 735, in _fit_impl
    results = self._run(model, ckpt_path=self.ckpt_path)
  File "/home/jobuser/build/yuxlu-test/environments/satellites/python/lib/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 1110, in _run
    self._restore_modules_and_callbacks(ckpt_path)
  File "/home/jobuser/build/yuxlu-test/environments/satellites/python/lib/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 1063, in _restore_modules_and_callbacks
    self._checkpoint_connector.resume_start(checkpoint_path)
  File "/home/jobuser/build/yuxlu-test/environments/satellites/python/lib/python3.10/site-packages/pytorch_lightning/trainer/connectors/checkpoint_connector.py", line 78, in resume_start
    self.resume_checkpoint_path = self._hpc_resume_path or checkpoint_path
  File "/home/jobuser/build/yuxlu-test/environments/satellites/python/lib/python3.10/site-packages/pytorch_lightning/trainer/connectors/checkpoint_connector.py", line 66, in _hpc_resume_path
    max_version = self.__max_ckpt_version_in_folder(dir_path_hpc, "hpc_ckpt_")
  File "/home/jobuser/build/yuxlu-test/environments/satellites/python/lib/python3.10/site-packages/pytorch_lightning/trainer/connectors/checkpoint_connector.py", line 506, in __max_ckpt_version_in_folder
    files = [os.path.basename(f["name"]) for f in fs.listdir(dir_path)]
  File "/home/jobuser/build/yuxlu-test/environments/satellites/python/lib/python3.10/site-packages/fsspec/spec.py", line 1301, in listdir
    return self.ls(path, detail=detail, **kwargs)
  File "/home/jobuser/build/yuxlu-test/environments/satellites/python/lib/python3.10/site-packages/fsspec/implementations/arrow.py", line 66, in ls
    for entry in self.fs.get_file_info(FileSelector(path))
  File "pyarrow/_fs.pyx", line 433, in pyarrow._fs.FileSystem.get_file_info
  File "pyarrow/error.pxi", line 144, in pyarrow.lib.pyarrow_internal_check_status
  File "pyarrow/error.pxi", line 100, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: FileSelector.base_dir must not be a URI, got: hdfs:///somewhere/MNIST

Environment
fsspec: 2022.10.0
pyarrow: 8.0.0
pytorch_lightning: 1.7.7
More info
No response
cc @awaelchli @ananthsub @ninginthecloud @rohitgr7 @otaj

changing to this fixes it:
        # check directory existence
        # fs = get_filesystem(dir_path)
        import fsspec.core
        fs, uri = fsspec.core.url_to_fs(dir_path)
        if not fs.exists(uri):
            return None

        # check corresponding file existence
        files = [os.path.basename(f["name"]) for f in fs.listdir(uri)]
        files = [x for x in files if name_key in x]
        if len(files) == 0:
            return None

I think using url_to_fs and passing paths instead of URL to FS operations is the standard behavior, isn't it? Lightning's get_filesystem is just a wrapper around url_to_fs but it discards the returned path. Maybe we need to change all usage of get_filesystem, to make sure a path is passed to FS instead of an URL?

@leoleoasd Thanks for reporting this.
I don't fully understand what the difference is between the uri and dir_path. I feel like fs.exists(dir_path) should work as expected like it does for S3 and other filesystems.

Yes, fs.exists(path) works, but I don't think it is the standard usage. (Maybe it won't work in some else implementations)
https://filesystem-spec.readthedocs.io/en/latest/usage.html#use-a-file-system
All examples in fsspec document call fs.xxxx with a path instead of a URI.

I think, to follow the examples, we should update all usages of fs.xxx


How to retrieve the last run time

Is there a way to get a job's last run time in order to use it my logic? ie. Get all records where created_at > last_run_time?
Currently I've setup my job to run once an hour and then use last_run_time = Time.now - 1.hour, but its not full proof eg. if the job fails and needs to be rerun.

Hi @davidjnorth
Take a look at https://github.com/moove-it/sidekiq-scheduler#schedule-metadata, :scheduled_at is a Float (see https://ruby-doc.org/core-2.3.0/Time.html#method-i-to_f), and represents the timestamp at which the job was scheduled to be pushed to sidekiq.
 So, you could do Time.at(metadata[:scheduled_at]) - 1.hour
As far as I understand, you are trying to get the records that you didn't process yet. Relying in created_at could lead to some problems in case you have more than one server doing SomeModel.create(...) because their clocks can be out of sync ...
When dealing with that use case I ended up having a column of boolean type in the model's table that is updated to true when the record is processed.
Another option, in case you have a sequential ID for that table, is to store somewhere the last processed ID, obtain that ID at the beginning of the job and then query for "id > ?".

Thanks for the response @snmgian
I looked through the gem and found this SidekiqScheduler::RedisManager.get_job_last_time(name). This is essentially what I was looking for, although I did not end up using it because it gets updated even if the job fails, and does not update when "Enqueue now" is clicked on the sidekiq dashboard.
I ended up storing the last_successfully_run_time myself and then using and updating that where necessary. I see your concern about doing it in this way due to the clocks being out of sync so I may change to the boolean solution.
Thanks for the input.


Bump npm package version to 0.3.0

When this merges, would you mind tagging this commit with 0.3.0 so the bower and npm packages get the update?

Done

Hey @terranisu, I see the change merged in but not the tag. Mind pushing that to the repo? Thanks!


Expose number of bytes processed by StreamDeserializer

Use case from IRC:

<Yorhel> Hi everyone. Does serde_json support decoding JSON with trailing data?
<Yorhel> E.g. I'd like to do something in the form of: let (val, data) = serde_json::from_str("{}garbage");
<Yorhel> With val being the parsed Value and data pointing to the trailing "garbage"

Bincode has a bytes_read() method on their Deserializer that would support this much better than serde_json. You can kind of fake it like this:
let mut bytes = 0;
let stream = StreamDeserializer::new(s.bytes().map(|b| { bytes += 1; Ok(b) });
/* deserialize a thing */
let garbage = &s[bytes..];

But there must be a better way for us to support this.

Specifically, I think the number we want is the number of bytes so far deserialized into a successful T.
let data = b"[0] [1] [";

let mut de = serde_json::Deserializer::from_slice(data).into_iter::<Vec<i32>>();
assert_eq!(0, de.byte_pos());

println!("{:?}", de.next()); // [0]
assert_eq!(3, de.byte_pos());

println!("{:?}", de.next()); // [1]
assert_eq!(7, de.byte_pos());

println!("{:?}", de.next()); // error
assert_eq!(8, de.byte_pos());

// if err.is_eof(), can join the remaining data to new data and continue
let remaining = &data[de.byte_pos()..];

Here is a related use case from @vorner that I believe is addressed by byte_offset().

<vorner> Hello. I'm trying to create a JSONRPC server, so I want to combine tokio and serde_json. The problem is, I'd either need something like from_slice which would tell me how many bytes it used, or StreamDeserializer that would work on top of Futures' Stream instead of an iterator. Is there a way to get something like that?
<oli_obk_> vorner: can't you tunr a Stream into an Iterator that simply stops on encountering an error?
<oli_obk_> vorner: it might even store the error inside the iterator itself, so you can obtain it afterwards
<vorner> oli_obk_: Stops? Like ends?
<vorner> I don't worry about errors.
<vorner> The problem is, the data arrive in chunks over network.
<vorner> So it returns NotReady
<oli_obk_> ohh...
<vorner> I need to stop processing that Stream for now and resume later when more data arrive.
<vorner> Which might be in the middle of an object
<oli_obk_> hmm... don't we have an impl for `Read`
<oli_obk_> vorner: `from_reader` might be more up your alley
<vorner> Yes. But that'd expect the Read to block, not return EWOULDBLOCK (or what is the exact name).
<oli_obk_> vorner: oh, just return Ok(0) ^^
<oli_obk_> actually that's probably wrong
<vorner> That means EOF, doesn't it?
<oli_obk_> maybe ErrorKind::WouldBlock
<oli_obk_> https://doc.rust-lang.org/nightly/std/io/enum.ErrorKind.html
<vorner> Yes, that'd be the one. But if I return that, the StreamReader would give up forever.
<vorner> But that WouldBlock means only „No data for now, try again later“
<vorner> The other option is to feed it with a buffer of whatever data I have. But then I'd need to know how much it consumed.
<oli_obk_> vorner: yea, that's not implemented yet.. I guess blocking is out of the option?
<oli_obk_> I mean... you could wrap the blocking op in an async
<vorner> Well, then I'd need to have a thread for each connection.
<oli_obk_> oh
<dtolnay> vorner: this might work for getting number of bytes processed by a StreamDeserializer https://github.com/serde-rs/json/issues/183
<vorner> Now I'm assuming I get one object per line, so I split the input into lines. But it is possible to have a multi-line objects, at least the jsonrpc specs have such examples.
<vorner> dtolnay: Yes, that one looks like a reasonable workaround.
<dtolnay> after each successful read from the stream, you would need to save the bytes read and after the first error (which might be because of a cut-off object) you can keep the rest of the data for next time
<vorner> At least until I get enough time to understand the internals of the StreamDeserializer and make a Stream-based version. But it seems I find bits to improve on every library I touch. Likely because Rust is so young.

Fixed in #303.


[WIP] replace ansible base_parser with create_base_parser

As of https://github.com/ansible/ansible/pull/50069 the base_parser
function no longer exists. Use
ansible.arguments.optparse_helpers.create_base_parser
instead.
Fixes: https://github.com/philpep/testinfra/issues/401

This is only a draft and turns out to more involved than a function name replaced with another. The argument parsing and storage moved from being methods of the CLI class and derived classes to partly static methods and in the end the resulting options is stored in a global variable instead of a data member.

@philpep this is above my paygrade and I would very much appreciate your guidance on how to proceed with this change. Should I keep going in this direction or would you recommend another approach?

Looks like https://github.com/philpep/testinfra/pull/410 is another direction for a solution!

@decentral1se indeed! Let's close this one then.


TypeError: Cannot read property 'classList' of undefined

It seems something wrong when I put it the following code in a setInterval function.
Code like following:
      this.counter.timer && clearInterval(this.counter.timer)
      this.counter.timer = setInterval(() => {
        let newTime = new Date();
        this.counter.timeLeft = Math.floor((new Date(this.counter.startTime).getTime() - newTime.getTime()) / 1000);
        if (this.counter.timeLeft >= 0) {
          let h = Math.floor(this.counter.timeLeft / 60 / 60);
          this.counter.H = h < 10 ? "0" + h : h;

          let m = Math.floor((this.counter.timeLeft / 60) % 60);
          this.counter.M = m < 10 ? "0" + m : m;

          let s = this.counter.timeLeft % 60;
          this.counter.S = s < 10 ? "0" + s : s;
        } else {
          this.counter.timer && clearInterval(this.counter.timer)
          // 切换倒计时
          this.counter.GFlip = new Flip({ node: this.$refs.gifts,  from: 132486, duration: 2 })
          this.counter.GFlip.flipTo({ to: 131909 })
        }
      }, 1000);

@tylerrrkd any minimal reproducible example like, in codepen?

@gaoryrt wait a minute, friend

@gaoryrt Hi, friend, here is the codepen url https://codepen.io/Tylerrrkd/pen/NOJQdR

@tylerrrkd review your code plz
line 57 of js, this.counter.timeLeft would be negative
line 16 of scss, width: .59rem; would make the second number invisible
fixed in https://codepen.io/gaoryrt/pen/BqEBjd

Cannot read property 'classList' of undefined might caused by incorrect usage of vue

@gaoryrt yep, I solved it after wrapped in a setTimeout statement, it may be caused by DOM's render speed.


Custom Titlebar blocks interaction with in-app toolbar

Describe the bug
When implementing a custom toolbar and extend it into the title bar, the in-app toolbar doesn't respond to user interaction and became part of the Titlebar content itself.
Steps to reproduce the bug

Create a new Windows SDK v1 application.
Use the following XAML in MainWindow.xaml

<Grid>
   <StackPanel
       x:Name="TitleBar"
       Grid.Row="0"
       Height="35"
       HorizontalAlignment="Stretch"
       VerticalAlignment="Top"
       Orientation="Horizontal"
       Spacing="15">
       <TextBlock VerticalAlignment="Center" Text="Custom Titlebar Application" />
   </StackPanel>
</Grid>

Extend the TitleBar in the code behind MainWindow.xaml.cs

public MainWindow()
{
    this.InitializeComponent();

    // Custom Title Bar
    ExtendsContentIntoTitleBar = true;

    SetTitleBar(TitleBar);
}

Expected behavior
in-app toolbar should respond to user interaction
Screenshots

NuGet package version
No response
Windows app type

[ ] UWP
[X] Win32

Device form factor
Desktop
Windows version
No response
Additional context
Windows version: Windows 11

@pratikone FYI

With custom title bar minimize, maximize and close buttons very often are not handling mouse events.

Can you upgrade to latest winappsdk release ?  this has been fixed there.

Can you upgrade to latest winappsdk release ? this has been fixed there.

Nops, the bug still

Problem still Exits in WinAppSDK 1.2


Side-effects in table keys and select labels

The spec does not say when the side-effects that may occur in table keys and select labels occur.
One simple solution would be to forbid function and method calls in these places.

I don't think you want to forbid hdr.isValid() method calls in table key expression, do you?
Perhaps the most precise way to express the restriction is something like "key expressions may only contain pure function and method calls, and even among those, only ones that have no direction out or inout parameters"?  This is assuming the definition of pure proposed in this article: https://github.com/jafingerhut/p4-guide/tree/master/extern-annotations
Given the contents of that article, it would be correct for the built-in method hdr.isValid() to be annotated with the @pure annotation, and it has no direction out nor inout parameters.

I believe that all P4_16 functions, by which I mean the ones written in P4_16, not an extern function, must be 'pure' in the same sense as in that linked article in my previous comment, and might be reasonable to call inside a table key expression, as long as they have no  direction out nor inout parameters.

Indeed, the implementation allows "built-in" functions, like isValid.
Still, the question is "when are these functions evaluated", and in what order.
For tables it's perhaps easier to answer this question, but for select labels the situation is trickier. There is no obvious place to lift the function evaluation, esp. if you want to evaluate only as many labels as necessary.

If they are pure functions with neither out nor inout direction parameters, isn't the order of evaluation unimportant, and their time of evaluation the only thing that matters is "before the value is needed"?

There is the semantics, but there is also the cost of evaluating the function, that some of the people may care about. Perhaps we should not worry too much about this in the spec; I maintain, however, that these restrictions won't surprise too many people.

So are you proposing for the spec to say something like "table key expressions may not contain any function or method calls, except the following list of built-in ones: ...", where that list of allowed ones includes hdr.isValid()?

Something to that effect; I put this on the agenda for the next design meeting.

But there's no PR yet...

I am asking because I started to write a PR, and had questions about what it should say.  May create a proposed one soon.

See also discussion on this p4c PR: https://github.com/p4lang/p4c/pull/2259
especially the discussion beginning with this comment: https://github.com/p4lang/p4c/pull/2259#issuecomment-605543708

There are two different proposed PRs for this issue: #831 and #834
See this comment for a brief description of the differences between them: https://github.com/p4lang/p4-spec/pull/834#issuecomment-608999089

PR #834 addressed the table keys portion of this issue.  I will close this one and create a separate one to remind us to address the expr part of select (expr) { ... } expressions.


remove duplicate delete definitions

Current coverage is 72.83% (diff: 100%)

Merging #906 into master will decrease coverage by 0.84%

@@             master       #906   diff @@
==========================================
  Files           112        111     -1
  Lines         16673      16659    -14
  Methods        2314       2309     -5
  Messages          0          0
  Branches       2006       2004     -2
==========================================
- Hits          12285      12134   -151
- Misses         3725       3847   +122
- Partials        663        678    +15

Powered by Codecov. Last update 3688b2a...c1689ca


Nearest Neighbor rescaling

Many games have a native resolution of 800x600, and this does not rescale so well to monitors that have a 1080 resolution. 1920x1200 monitors are rare and it's even rarer to find one with decent specs.
What I would like is if there could be a nearest neighbor rescale where the pixel width looks perfect, but some pixels are vertically truncated.

Unfortunately, Nearest Neighbor ( or Point) filtering does not work correctly with this game.  There is no easy way to fix this.  It is unlikely that we will be able to do that.
With default filtering:

With Nearest Neighbor filtering (notice the trees):

I think they may be talking about games in general, not just Silent Hill 2?

If you want to scale 800x600 to 1080p then I think there are two options to keep the pixel width looking perfect:

use interpolation
add pillar boxes around the picture to fill in the space around the 800x600 image

There are hardware boxes (like the RetroTink 5x Pro) that can do interpolation, but I am not aware of any good software solution for this.

Couldn't you (I mean, someone) tinker with magpie to achieve the same result?

I think they need/want a software solution that will convert PC games from smaller resolution to larger resolution, keeping the pixels intact.  Normally what happens is that the game runs in 800x600 and then the monitor will convert that to the native screen resolution and blur the output.
The issue with software solutions is that it needs to not only convert the screen resolution but, in most cases, it also needs to adjust the mouse movement, which, incidentally can be quite tricky.
dxwrapper does have the ability to add pillar boxes to some old games, but cannot do the sharp interpolation nor does it correct any mouse movements.
I suppose if you got a hardware device that would just pass through 1080p but do sharp interpolation of resolution smaller than 1080p that would work also.  But I am not aware of any device that does that today.  The OSSC Pro is supposed to do that, but it is not out yet.

I think they need/want a software solution that will convert PC games from smaller resolution to larger resolution, keeping the pixels intact.

Yes, I get that. But isn't that integer scaling, putting aside whatever the odd request of cutting some pixels?
Modern amd and nvidia drivers also ship it (but they aren't customizable, so that's why I proposed the software alternative)

Normally what happens is that the game runs in 800x600 and then the monitor will convert that to the native screen resolution and blur the output.

Aktually, I believe in 2022 the default if for either windows or the GPU to take care of the scaling part.
So that you don't see the black screen involved with switching mode.

But isn't that integer scaling, putting aside whatever the odd request of cutting some pixels?

You can't do integer scaling from 800x600 to 1080.  It would just scale it 1:1, which is not scaling at all.

I believe in 2022 the default if for either windows or the GPU to take care of the scaling part.

True.  Some GPUs will do scaling for this and supports sharp scaling.  My Nvidia card can do this in the Nvidia Control Panel.  Good point.

You can't do integer scaling from 800x600 to 1080. It would just scale it 1:1, which is not scaling at all.

 Now everything makes sense.
Still.. I feel like this would be way less effort to add to magpie, than here.
The most difficult thing would be probably just to add some hotkey to adjust the cutting position/margin.

I'm admittedly a little confused as to why Silent Hill 2 came up.

Sorry I got confused on which thread I was on.  I did a lot of testing for nearest neighbor filtering for Silent Hill 2.

What I would like is if there could be a nearest neighbor rescale where the pixel width looks perfect, but some pixels are vertically truncated.

Unfortunalty this would not be easy to do for Direct3D, Direct3D8 or Direct3D9 games.   However, by default, dxwrapper does nearest neighbor filtering for games using Dd7to9.
If the game is using DirectDraw and Dd7to9 works for the game you could set the following for games native resolution of 800x600.  This will clip 60 pixels, 30 from the top and 30 from the bottom.
[Compatibility]
Dd7to9                     = 1

[Dd7to9]
DdrawClippedWidth          = 800
DdrawClippedHeight         = 540
DdrawOverrideWidth         = 1920
DdrawOverrideHeight        = 1080
DdrawIntegerScalingClamp   = 1
DdrawMaintainAspectRatio   = 1

Scaling like how it's done on the left is what he's requesting, but dxwrapper only does scaling like how it's done on the right.

dxwrapper does not scale it that way.  That scaling is normally done by the video card or monitor.  dxwrapper just outputs at the resolution of the game and the video card/monitor will scale it to fit the resolution of the monitor, usually making it look like some kind of bilinear scaling.
There is only one option in dxwrapper to allow it to scale DirectDraw games.  In this mode it does Nearest Neighbor scaling (a.k.a. Point Filtering), as you can see here.  I explain how to do this scaling in dxwrapper in the comment above.  However, if you are not using a DirectDraw game then dxwrapper does not do any scaling at all.
Note:  It is a lot of work for me to add scaling to 3D games.  But if I ever do I will make options for Nearest Neighbor, Bilinear and others.

Doesn't that only work if you want an exact 1:1 pixel rescale? I'd certainly like it if you could make it possible to rescale a DirectDraw game like this:

dxwrapper can do that.  Just enable the following options:
Dd7to9                     = 1
DdrawOverrideWidth         = 1920
DdrawOverrideHeight        = 1080

Here is a screenshot of Diablo 1, which uses DirectDraw.  Notice how the screen is stretched, but it is still nearest neighbor (click on it to see the full image):

Closing issue.  If there are more questions you can reopen it.


Pep8 review

Coverage remained the same at 90.873% when pulling cd01b5b50c09be4ccebf4742b849f93298cbc1a4 on pep8-review into 86f3093b4731e626fc0e4769a87f163833175f95 on V3.

Coverage remained the same at 90.873% when pulling 8d9aaddf23a43208a11556b197261e5401426494 on pep8-review into 86f3093b4731e626fc0e4769a87f163833175f95 on V3.

Coverage remained the same at 90.873% when pulling 8d9aaddf23a43208a11556b197261e5401426494 on pep8-review into 86f3093b4731e626fc0e4769a87f163833175f95 on V3.


Call eval on model before inference

When running in is_testing = True mode, the model needs eval() to be called before performing inference. Not doing this causes a loss in performance. There might be a better way to do this but this is the best I could find.

Did you want this PR merged? Or is there a problem that needs addressing?


external IP forward

are there ways to forward the player's external IP to the game server? Wireguard seems to play the role of a proxy server because the server sees the address <IP_ADDRESS> (ip wireguard) is it possible to make a normal IP for players using the wireguard tunnel?

Need to know more about your setup. Who and where is the "player", what is the config you're using, what are you trying to accomplish, etc.

how do I configure Iptables to forward?

It depends on what you're trying to forward and how, need a lot more info about your setup and what you're trying to accomplish if you want help.


add and remove dynamically columns and recalculate them

I'm submitting a ...  (check one with "x")
[X ] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request => Please do not submit support request here

Current behavior
I add and remove dynamically some columns, which does not work well. The table does not recalculate the column sizes. I think it is the same problem you can show on your demo column toggling.
Expected behavior
After adding or removing rows the column size should be recalculate, showing your code I think this is would you also are expecting but it does not work
Reproduction of the problem
Show your demo for column toggling on http://swimlane.github.io/ngx-datatable/#
On open demo

After hide all columns

After show all columns

Table version: 6.1.1

Ionic version: 2.0.1

Angular version: 2.2.1

Some news about it?

Hey dude!
I've added a .tgz file to the branch which allows you to install my changes into the project.
Maybe you could have a look at "npm link" ? It would save me a step of packaging the project, although it's not a lot of work :)
i've also added a zip (which has the .tar) to this message. This way, i won't have to add it to git if there are issues.
Thanks again for testing!
swimlane-ngx-datatable-6.2.0.zip

Hi,  thx I'll test it tomorrow. Happy to test it.
Am 20.02.2017 18:23 schrieb "gerhardboer"<EMAIL_ADDRESS>
Hey dude!
I've added a .tgz file to the branch which allows you to install my
changes into the project.
Maybe you could have a look at "npm link" ? It would save me a step of
packaging the project, although it's not a lot of work :)
i've also added a zip (which has the .tar) to this message. This way, i
won't have to add it to git if there are issues.
Thanks again for testing!
swimlane-ngx-datatable-6.2.0.zip
https://github.com/swimlane/ngx-datatable/files/788130/swimlane-ngx-datatable-6.2.0.zip
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/swimlane/ngx-datatable/issues/529#issuecomment-281137080,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADmpTG5cl03B4PSd_JvT2KKvd6ivzygmks5recv0gaJpZM4MC47S
.

@gerhardboer I'll start testing it, is your version 6.2.0 released yesterday including versione 6.2.0 released yesterday also from the team?
Update to released version 6.2.0 resolved me the issue?!? But I can't find nothing about in the changelog? I changed also a little bit my code, I added columns and rows dynamically on a new temporary variable and copy the array only at the end to the columns and rows variables I used for datatable

Yes, the zip is updated with version 6.2.0 + my changes.
So you just updated from npmjs.org and it works?
That's always nice! I don't think there were changes regarding this issue in the 6.2.0 release though.
So maybe a happy accident?
Too bad my changes are hard to test now

@gerhardboer sorry I changed my previous post! Please read it again!

Don't really follow unfortunately.
Could you make a plnkr or which shows the steps and the issue?
And the issue still happens when you installed the package from the zip?

Ok I try to explain it better:
Using last angular version the impact of the issue is less. Some screenshots:
Click first time on search it looks like this

Click a second time on search the space between first column (Date & Time) and second column "Temperature T&H Ext." increase. Every time I click search again the space between the columns increase.

This is what I have done before:
I have a simple ngx-datatable like this
<ngx-datatable [rows]="rows" [columns]="columns"....../></ngx-datatable>
In my component I do something like that
private rows: any[];
private columns: any[];

loadData() {
    this.columns.push(  .... first column');
    this.columns.push( .... second column');
    this.columns.push( .... third column');

    this.rows.push( ... first row....');
    this.rows.push( ... second row....');
    ....
    this.rows.push( ... last row....');
}

Adding dynamically columns and data on the same variable which is bind to ngx-datatable columns and rows property, drives the table column size crazy, like the pinning demo.
Change the code a little bit, we have the behavior for first and second screenshot.
private rows: any[];
private columns: any[];

loadData() {
    let tmpColumns: any[] = [];
    let tmpRows: any[] = [];

    tmpColumns.push(  .... first column');
    tmpColumns.push( .... second column');
    tmpColumns.push( .... third column');

    tmpRows.push( ... first row....');
    tmpRows.push( ... second row....');
    ....
    tmpRows.push( ... last row....');

    // at the and set temporary variables to binding variables
   this.columns = tmpColumns;
   this.rows = tmpRows;
}

set the property at the end and do the whole dynamic stuff with temporary variables works better, but we have still the issue like the first and second screenshot.
So to repeat:
Add dynamical data to column and rows property with old and new angular does not work.
Add dynamical data to column and rows using temporary variable, with old angular version still does not work and with angular version >= 2.4.0 does work better (first two screenshots)
Now at the end, I tested your version:
Using temporary variables and your version anything is working fine, but using your version and set dynamically columns and rows do ngx-datable property has still the same error.
But the combination between temporary variables and your lib resolves me the issue, also if it does not close the complete issue, in my opinion.
I hope I was clear enough and my English was good enough :octopus:

Thanks for the clarification 👍
I think setting the rows to a new array is a better way to update the table.
At the moment there is some specific code which handles this kind of in memory detection, but it's in the way of setting changeDetection to OnPush which would greatly increase performance.
My 'fix' was a step in the direction for onPush and i hoped to get some examples which would help this kind of major change to be added.
Since you've found improvement with updating the rows and columns in a way that Angular can detect easily, i don't think this case would help 😞
But no problem, thanks for validating my changes in a real example 👍

@gerhardboer - Are you on gitter or slack? would love to chat more!

@gerhardboer  @amcdnl Is there a way to manual reorder a column after dynamically add rows? The sorting is not work for me, or not as I would expect.

was playing with dynamic columns just recently and experiencing same issue with columns allocating not enough space.
@mburger81 yeah the sorting would be nice to have. I think the column should always stay in original position.

Hi,
I was also looking for a way to maintain the column order, and came up with one approach by just adding one line to the toggle method as follows:
  toggle(col) {
    const isChecked = this.isChecked(col); // confirm if selected column *was previously* checked

    if (isChecked) {
      this.columns = this.columns.filter(c => {
        return c.name !== col.name; // return every column except the one previously checked; this is the new desired array
      });
    } else { // this handles scenario where box goes goes from unchecked to checked..it appends the previously unchecked to the this.columns array
      this.columns = [...this.columns, col]; // append newly selected column
      this.columns = _.intersectionBy(this.allColumns,this.columns,'name'); // retain original sequence of columns by comparing to allColumns array; this means allColumns manages state of desired sequence
    }

The underlying issue was that the 'columns' array doesn't maintain sequence info nor does it know where to re-add a removed object, so i ended up relying on 'allColumns' sequence to fill both gaps here.  There are probably "better" ways to e.g. create one column array that maintains info about sequence and checked status however, for now i prefer the current approach of keeping two arrays because it works well in combination with some DnD (drag and drop) functionality i'm using, which works well with the simple data structure of 'allColumns'.
If anyone is interested in adding DnD, just check out ng2-dnd ..example 9 here: https://github.com/akserg/ng2-dnd
after installing the library, you just need add a few things to the column toggling html as follows:

   Available Columns

                <input type='checkbox' [id]="col.name" (click)='toggle(col)' [checked]='isChecked(col)' />
                {{col.name}}

Hope that helps, If it's appropriate I can update the examples in this code base, however, i'm not sure it's a problem to add dependencies like lodash / ng2-dnd, so i'm leaving it here for now...
Regards,

S. Arora

I sorted this out in our application by making all the columns seem new again without lodash. After arranging the columns in the correct order, I use a map to keep only the user configurable properties available on the columns interface as defined in ngx-datatable-column directive:
let newColumns = prevColumnsResult.map(c => {
      let { name, prop, frozenLeft, frozenRight, flexGrow, resizeable, comparator, pipe, sortable, draggable, canAutoResize, minWidth, width, maxWidth, checkboxable, headerCheckboxable, headerClass, cellClass, cellTemplate, headerTemplate } = c;
      return { name, prop, frozenLeft, frozenRight, flexGrow, resizeable, comparator, pipe, sortable, draggable, canAutoResize, minWidth, width, maxWidth, checkboxable, headerCheckboxable, headerClass, cellClass, cellTemplate, headerTemplate };
    });```

This seems to remove all the properties that are user defined and force data-table to recalculate everything related to column sizing.

I've updated toogle function in demo file  column-toggle.component.ts and it works like expectation.
if(isChecked) {
  this.columns = this.columns.filter(c => {
    return c.name !== col.name;
  });
} else {
  const newColumns = [...this.columns, col];
  this.columns = this.allColumns.filter(
        f => newColumns.filter(
          s => s.name === f.name)
        ).map(x => Object.assign({}, x));
}

https://github.com/hatung/ngx-datatable/commit/6b2f0ff7feb4fbed428c64f829d62e89375aacd7

@hatung your code snippet above allows me to toggle columns while preserving order, thank you so much!

So the trick is simpler in my case. Just create a new array with the columns and afterwards assign it to the scoped variable:
let newCols = [];
for (i = 0 ; i < dataset.cols.length ; i++) {
  newCols.push({name: dataset.cols[i]})
};
this.columns = newCols;

ok

I want to add row and column in a Dynamic Table for that what i need to do ,please help me further.

@hatung Your fix worked beautifully. The issue that persists for me is any selects or inputs I have in the columns disappear.


chore: add example for balance AccountStore

Added an example for balance AccountStore #6532.
13g44iYtkxLZ2tkp6iTJiqs7yEiEr4bVsPZTueWDjd6Bor1P

Ping @ECJ222 ?

Hi @bkchr,
Hope you are doing good, I have been a little busy I will jump back on this issue.

Can you please resolve the requested changes?

Hey @bkchr,
I have resolved your requested changes.

bot merge

@ECJ222 please run cargo +nightly fmt and we're good to go.

@ECJ222 please run cargo +nightly fmt and we're good to go.

I have formatted my code changes @kianenigma  👍


How can build my app to use the Dll version of Crt/VC++ runtime?

Hi guys,
I am taking dependencies on a C library which is built against the shared/dll version of the CRT. I'd like to avoid potential pitfalls of two CRTs managing resources in the same process and would like to build my CoreRT app using the dll version of the CRT. How can I do it?
Just for completeness, what would be the process to build using the shared VC++ runtimes as well?

You would need to build a custom corert that has /MT flipped to /MD at
https://github.com/dotnet/corert/blob/master/src/Native/CMakeLists.txt#L180 and https://github.com/dotnet/corert/blob/master/src/BuildIntegration/Microsoft.NETCore.Native.Windows.props#L34

Thank you for the information, much appreciated!


Resizing the scan area

Is there any way to resize the scan area? I've attempted to edit the second activity xml file, but unsure of what i should change.
Thank you in advance.

I have the same problem and I don’t have any idea to solve this problem...

yeah i need to resize the scan area too, because this one have a smaller area to scan

android->app->src->main->res->layout->my_camera.xml
app:inner_width="200dp"
app:inner_height="200dp"
You can change these 2 values


Trivy-db cannot be pulled (toomanyrequests)

Hi.
It seems that there's too many requests on the registry:
$ docker pull ghcr.io/aquasecurity/trivy-db:2
Error response from daemon: toomanyrequests: retry-after: 755.31µs, allowed: 44000/minute

I reproduced it on my laptop (and it failed very quickly).

It seems like a global quota issue.
Thanks

It seems they address this in their troubleshooting guide: https://aquasecurity.github.io/trivy/v0.57/docs/references/troubleshooting/#github-rate-limiting
However, from my own testing, this also does not always work.

However, from my own testing, this also does not always work.

Yeah especially if you're not a customer of ghcr ^^
It might be better to publish on other public registries (at least docker.io) and let users decide and purchase subscriptions or reuse the ones they already purchased :)

Please reference https://github.com/aquasecurity/trivy/discussions/7699


Implement workaround against Cloudflare

As a result of the investigation #37, a proper workaround must be implemented in order for the application to continue working as expected.

page.remove_listener crashes (missing key) when the response must still come through, even though page.on was correctly registering the event.
A similar behaviour was reported in this issue, I'll see if a workable POC could be implemented to report it officially.

Adding reference for testing purposes.


reCAPTCHA scrolling to bottom of page

There was a problem, on iOS, with the "image challenge" that caused the page to scroll all the way to the bottom. That appears to be fixed, but if you choose the "audio challenge" option then the same problem happens. It scrolls all the way to the bottom of the page. I see this on both an iPhone and iPad Pro. Anyone else?

Update. The original problem of scrolling to the bottom of the page has returned. Now both visual and audio challenges cause you to be scrolled to the bottom of the page. Does anyone see this?

I have the same issue on iPhone's 4 and 4S. And the most annoying it's reproducing on Android. As we investigated this problem appears on the phones with small screens (800×480 and lower) and only on the devices with non-chromium webview, e.g. Samsung, HTC, Fly, etc. Scroll is disabled and users cannot confirm the captcha. Problem has started since 23–26 of November

Yes I can see this. Also one more to this in  desktop browsers if you check the checkbox using keyboard (not by clicking on the check box by mouse) then it scrolls to bottom.

Still scrolling

Any fix for the same?

@SamskruthiShashidhar no still scrolling.

Scrolling here as well. Iphone 6, Iphone 7 . Responsive site . Driving me bonkers.

Solved it using explicit recaptcha rendering which has a call back function

var onloadCallback = function () {
try{
var captchawidget= grecaptcha.render(document.getElementById("g-recaptcha-someId"), {
'sitekey' : "someKey",
'theme': "light",
'callback' : formfocus
});
}catch(e){console.log("g-recaptcha-widget-not-available");}
}
var formfocus = function (response) {
$("#putTheResponseToSomeId_that_can_be_accessed_in_ form_validation").val(response);
try{
if ($(window).width() < 768 ){
$("html, body").animate({ scrollTop: $(".focusbackDiv").offset().top }, "slow");
}
}catch(e){console.log("focus element not present");}
};

I'm not a programmer . Any way you can help . I'll be glad to pay you . I
have a wordpress site . I have a dev that's trying to help as well.
I'm using contact form 7
On Thursday, September 14, 2017, SamskruthiShashidhar <
<EMAIL_ADDRESS><javascript:_e(%7B%7D,'cvml','notifications@github.com');>> wrote:

Solved it using explicit recaptcha rendering which has a call back function

var onloadCallback = function () {
try{
var captchawidget= grecaptcha.render(document.get
ElementById("g-recaptcha-someId"), {
'sitekey' : "someKey",
'theme': "light",
'callback' : formfocus
});
}catch(e){console.log("g-recaptcha-widget-not-available");}
}
var formfocus = function (response) {
$("#putTheResponseToSomeId_that_can_be_accessed_in_
form_validation").val(response);
try{
if ($(window).width() < 768 ){
$("html, body").animate({ scrollTop: $(".focusbackDiv").offset().top },
"slow");
}
}catch(e){console.log("focus element not present");}
};
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/google/recaptcha/issues/131#issuecomment-329378643,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AedgE1vFAN1x0Wr6dXSubM73iBvJu335ks5siLtSgaJpZM4KnucH
.

--
Thank you,
Jason Engel
This email and any files transmitted with it are confidential and intended
solely for the use of the individual or entity to whom they are addressed.
If you have received this email in error please notify the system manager.
This message contains confidential information and is intended only for the
individual named. If you are not the named addressee you should not
disseminate, distribute or copy this e-mail. Please notify the sender
immediately by e-mail if you have received this e-mail by mistake and
delete this e-mail from your system. If you are not the intended recipient
you are notified that disclosing, copying, distributing or taking any
action in reliance on the contents of this information is strictly
prohibited.

You might want to look at the v3 support in the most recent release. That uses a wholly invisible reCAPTCHA that just returns a confidence score for the request. This might alleviate some of your issues. Example hosted at https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php

I'm inserting classes on the "recaptcha-challenge" wrapper-div elements with Javascript with the help of setInterval(...)

I need reCAPTCHA v2 on Android WebView. And I have that bug. Note: No bug on iOS WebView.
Now I added the bad code for workaround it:
      var prevHeight = 0;

      setInterval(function() {
        if (document.documentElement.scrollHeight !== prevHeight) {
          prevHeight = document.documentElement.scrollHeight;

          setTimeout(() => {
            window.scrollTo(0, 0);
          }, 200);
        }
      }, 200);

Is exist better solution?

Slight mod:
if (window.innerWidth < 768 && (/iPhone|iPod/.test(navigator.userAgent) && !window.MSStream)) {
    document.getElementById("rc-anchor-container").scrollIntoView();
 }

If you inspect the console, every captcha I've seen thus far contains the id "rc-anchor-container." This way, when scrollIntoView() fires, it's already in the view, so the page doesn't move.


Ember 2.8 deprecation warning

I'm getting the following warning when building a project with ember-component-css installed:
DEPRECATION: EmberApp.concatFiles() is deprecated. Please use the broccoli-concat module directly.
It looks like ember-component-css calls concatFiles(..) in index.js.  Could you update when convenient?  Here's the preferred module: https://github.com/ember-cli/broccoli-concat

This is fixed in the latest beta. Give that a try.

@itzamna314  Just released a 0.2.1 version. An upgrade should fix it.


Message pack protocol in TS client

Note: it is not plugged in yet (https://github.com/aspnet/SignalR/pull/677 required to make it work end-to-end)

:up::date: - rebased on latest dev

:up::date:

:watch: - still need a review. @Eilon approval is for usage of msgpack5 and not the PR in general.

Yes, spec update is coming.


.

sudoku #7

add your project into  main index.html

add your project into main index.html

@codewithganeshhh added


add copy to section links

Wow, great idea, thanks Belle! Could we make the icon smaller and a muted colour?

@sampoder yep, is this be better?


Build failure: xdg-desktop-portal-hyprland-1.3.3

Steps To Reproduce
Steps to reproduce the behavior:

build xdg-desktop-portal-hyprland-1.3.3

Build log
Running phase: qtPreHook
@nix { "action": "setPhase", "phase": "qtPreHook" }
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/79n1c2k1n6cs6wzc1yw9j968z5f8k6ps-source
source root is source
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
fixing cmake files...
cmake flags: -DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF -DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DCMAKE_INSTALL_LOCALEDIR=/nix/store/lwrmvnk3iif67xm52a9xzvr8w0bkrjq8-xdg-desktop-portal-hyprland-1.3.3/share/locale -DCMAKE_INSTALL_LIBEXECDIR=/nix/store/lwrmvnk3iif67xm52a9xzvr8w0bkrjq8-xdg-desktop-portal-hyprland-1.3.3/libexec -DCMAKE_INSTALL_LIBDIR=/nix/store/lwrmvnk3iif67xm52a9xzvr8w0bkrjq8-xdg-desktop-portal-hyprland-1.3.3/lib -DCMAKE_INSTALL_DOCDIR=/nix/store/lwrmvnk3iif67xm52a9xzvr8w0bkrjq8-xdg-desktop-portal-hyprland-1.3.3/share/doc/xdg-desktop-portal-hyprland -DCMAKE_INSTALL_INFODIR=/nix/store/lwrmvnk3iif67xm52a9xzvr8w0bkrjq8-xdg-desktop-portal-hyprland-1.3.3/share/info -DCMAKE_INSTALL_MANDIR=/nix/store/lwrmvnk3iif67xm52a9xzvr8w0bkrjq8-xdg-desktop-portal-hyprland-1.3.3/share/man -DCMAKE_INSTALL_OLDINCLUDEDIR=/nix/store/lwrmvnk3iif67xm52a9xzvr8w0bkrjq8-xdg-desktop-portal-hyprland-1.3.3/include -DCMAKE_INSTALL_INCLUDEDIR=/nix/store/lwrmvnk3iif67xm52a9xzvr8w0bkrjq8-xdg-desktop-portal-hyprland-1.3.3/include -DCMAKE_INSTALL_SBINDIR=/nix/store/lwrmvnk3iif67xm52a9xzvr8w0bkrjq8-xdg-desktop-portal-hyprland-1.3.3/sbin -DCMAKE_INSTALL_BINDIR=/nix/store/lwrmvnk3iif67xm52a9xzvr8w0bkrjq8-xdg-desktop-portal-hyprland-1.3.3/bin -DCMAKE_INSTALL_NAME_DIR=/nix/store/lwrmvnk3iif67xm52a9xzvr8w0bkrjq8-xdg-desktop-portal-hyprland-1.3.3/lib -DCMAKE_POLICY_DEFAULT_CMP0025=NEW -DCMAKE_OSX_SYSROOT= -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_STRIP=/nix/store/gxpdysvlj9l6bfin03k6yq0s922pk7pg-gcc-wrapper-13.3.0/bin/strip -DCMAKE_RANLIB=/nix/store/gxpdysvlj9l6bfin03k6yq0s922pk7pg-gcc-wrapper-13.3.0/bin/ranlib -DCMAKE_AR=/nix/store/gxpdysvlj9l6bfin03k6yq0s922pk7pg-gcc-wrapper-13.3.0/bin/ar -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_INSTALL_PREFIX=/nix/store/lwrmvnk3iif67xm52a9xzvr8w0bkrjq8-xdg-desktop-portal-hyprland-1.3.3
-- The C compiler identification is GNU 13.3.0
-- The CXX compiler identification is GNU 13.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /nix/store/gxpdysvlj9l6bfin03k6yq0s922pk7pg-gcc-wrapper-13.3.0/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/gxpdysvlj9l6bfin03k6yq0s922pk7pg-gcc-wrapper-13.3.0/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring XDPH in Release with CMake
-- Checking deps...
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Performing Test HAVE_STDATOMIC
-- Performing Test HAVE_STDATOMIC - Success
-- Found WrapAtomic: TRUE
-- Found OpenGL: /nix/store/jz5imlpjk5a01224mimn6bsp9v0wrlgb-libglvnd-1.7.0/lib/libOpenGL.so
-- Found WrapOpenGL: TRUE
-- Found XKB: /nix/store/rnlflxkgglrdiii7wl7k99893zr4iamc-libxkbcommon-1.7.0/lib/libxkbcommon.so (found suitable version "1.7.0", minimum required is "0.5.0")
-- Found WrapVulkanHeaders: /nix/store/v0qw5vwbbhz0s32g8prvgpd8zy26vziz-vulkan-headers-1.3.283.0/include
-- Found PkgConfig: /nix/store/fcmc82gp5qc0s8qvcw4c0w46c67zd295-pkg-config-wrapper-0.29.2/bin/pkg-config (found version "0.29.2")
-- Checking for modules 'wayland-client;wayland-protocols;wayland-scanner;libpipewire-0.3;libspa-0.2;libdrm;gbm;hyprlang>=0.2.0'
--   Found wayland-client, version 1.23.0
--   Found wayland-protocols, version 1.36
--   Found wayland-scanner, version 1.23.0
--   Found libpipewire-0.3, version 1.2.3
--   Found libspa-0.2, version 0.2
--   Found libdrm, version 2.4.122
--   Found gbm, version 24.2.1
--   Found hyprlang, version 0.5.2
-- Checking for module 'sdbus-c++'
--   Found sdbus-c++, version 1.5.0
-- Checking for module 'hyprland-protocols'
--   Found hyprland-protocols, version 0.3.0
-- Found WaylandScanner at /nix/store/mq0445zflcxkh6r38afzczlpw8bax9kv-wayland-scanner-1.23.0-bin/bin/wayland-scanner
-- Found wayland-protocols at //nix/store/sm9mxbw5lanjmabjgd53yps0b9j3lrc9-wayland-protocols-1.36/share/wayland-protocols
-- Configuring done (1.9s)
CMake Error in CMakeLists.txt:
  Imported target "PkgConfig::deps" includes non-existent path

    "/nix/store/0ikl83z4h69imxkwsly3hcm424f7wi7j-wayland-scanner-1.23.0-dev/include"

  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

  * The path was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and references files it does not
  provide.

CMake Error in CMakeLists.txt:
  Imported target "PkgConfig::deps" includes non-existent path

    "/nix/store/0ikl83z4h69imxkwsly3hcm424f7wi7j-wayland-scanner-1.23.0-dev/include"

  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

  * The path was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and references files it does not
  provide.

-- Generating done (0.0s)
CMake Warning:
  Manually-specified variables were not used by the project:

    BUILD_TESTING
    CMAKE_EXPORT_NO_PACKAGE_REGISTRY
    CMAKE_POLICY_DEFAULT_CMP0025

CMake Generate step failed.  Build files cannot be regenerated correctly.

Additional context
This issue only recently occurred upon updating nixpkgs-unstable to the latest revision.
My entire nix config is here.
Notify maintainers
@fufexan

Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.6.47, NixOS, 24.11 (Vicuna), 24.11.20240828.71e91c4`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.18.5`
 - nixpkgs: `/nix/store/887hpp8a2i99n9jjwcvz6qkhhhqsvzkg-source`

Add a :+1: reaction to issues you find important.

I suspect this is fixed by https://github.com/hyprwm/xdg-desktop-portal-hyprland/commit/2425e8f541525fa7409d9f26a8ffaf92a3767251
For some reason wayland-scanner has a pkg-config that defines that it has a non-existent include directory, which cmake then later chokes on since it declares it has a dependency on wayland-scanner as a package, not a tool.

Indeed. I'm cooking up a PR for this.


Tests produce 422 Unprocessable Entity

Running some tests from tests.py:
INFO:     Started server process [1813280]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://<IP_ADDRESS>:8000 (Press CTRL+C to quit)
INFO:     <IP_ADDRESS>:55394 - "POST /generate/description-mode HTTP/1.1" 422 Unprocessable Entity
INFO:     <IP_ADDRESS>:38478 - "POST /generate/description-mode HTTP/1.1" 422 Unprocessable Entity
INFO:     <IP_ADDRESS>:46720 - "POST /generate HTTP/1.1" 422 Unprocessable Entity

pls check your data is json string not object.


⚠ Site ANTS has degraded performance

In 3e76815, Site ANTS (https://ants.gouv.fr) experienced degraded performance:

HTTP code: 200
Response time: 13815 ms

Resolved: Site ANTS performance has improved in 7128fed.


[Bug]: recurring error after updating to angular 15: ngx-editor Property 'pmViewDesc' must be of type 'ViewDesc', but here has type 'ViewDesc'

What happened?
after updating my projects angular version to v15 the build keeps crashing. it is caused by a package which is used by ngx-editor (prosemirror-view). when checking resolved issues to see if maybe someone experienced the same issue i found a ticket with the exact same error message but in angular version 13. i updated ngx-editor to latest version (currently v15.3.0) to see if it will fix the error as proposed in the ticket, but the build keeps crashing. we cant use this build in our project if this persists. has anyone else experienced this error aswell? any pointers to fixing the build are much appreciated!
Version
v15.3.0
Angular Version
v15.2.8
What browsers are you seeing the problem on?
No response
Link to reproduce
No response
Relevant log output
Error: node_modules/prosemirror-view/dist/index.d.ts:215:9 - error TS2717: Subsequent property declarations must have the same type.  Property 'pmViewDesc' must be of type 'ViewDesc', but here has type 'ViewDesc'.

215         pmViewDesc?: ViewDesc;
            ~~~~~~~~~~

  node_modules/prosemirror-state/node_modules/prosemirror-view/dist/index.d.ts:215:9
    215         pmViewDesc?: ViewDesc;
                ~~~~~~~~~~
    'pmViewDesc' was also declared here.

** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **

✖ Failed to compile.

Willing to submit a PR?
None

I added those resolutions to package.json (same as ngx-editor devDependencies), cleared node_modules, yarn.lock or package-lock.json. The build works, but the downside is to remember updating those resolutions in sync with ngx-editor evolutions.
"resolutions": {
    "prosemirror-codemirror-6": "^1.0.0",
    "prosemirror-commands": "^1.5.0",
    "prosemirror-history": "^1.3.0",
    "prosemirror-inputrules": "^1.2.0",
    "prosemirror-keymap": "^1.2.1",
    "prosemirror-model": "^1.19.0",
    "prosemirror-schema-list": "^1.2.2",
    "prosemirror-state": "^1.4.2",
    "prosemirror-view": "^1.30.1"
  }

Sorry for the delay in response.
I believe there is no need to use resolutions. Just deleting the node_modules and package-lock.json and reinstalling should do. And, you should check the typescript version required(minimum).
Also, this is not with the library itself, it is because of some conflicting package version or with typescript mismatch during upgrades.

Hello! I'm also running into the same issue in<EMAIL_ADDRESS>"typescript": "4.5.2"
"@angular/cdk": "13.3.2",
"@angular/common": "13.2.0",
"@angular/compiler": "13.2.0",
"@angular/core": "13.2.0",
"@angular/forms": "13.2.0",
"@angular/material": "13.3.2",
"@angular/platform-browser": "13.2.0",
"@angular/platform-browser-dynamic": "13.2.0",

Sorry I missed this. You must also check the tsconfig.json configuration. You can refer the project setup for any, this happens mostly after an update I guess. There isn't much I could do here as there is no bug in the editor.
Some things to check

delete lock file and node_modules directory to avoid duplicated package installs overtime
verify typescript version
verify tsconfig

these should resolve the issue. You can refer the code in this repo in projects/demo folder its already working.
Closing this as I couldn't do much here.  This problem occurred for several people in the past, the above solution worked for everyone. Hope that solves your issue too.
Thanks.


NATIVE-516: Add design proposals

This were all proposals I found. If you know about anything else, please let me know.

Should we move this do docs? There is already a documentation file about ui/ux changes. Maybe we can describe them there and link.

Not sure, I also thought about it. I'd say linking (or at least mentioning) it in the ui-ux doc would definitely make sense, not sure about moving everything there since these are not really docs. So I'd vote for mentioning/linking but not moving.

@lulo4907 what do you mean by that? Where did you get that name/information from that it should be here?

@klinzo Ah, okay. Then I misunderstood some content of this task.


The last question...

Also, is it possible to have the custom sky texture be a different color in each biome?

Get any biomes and change the color.


IntelliSense for multi-root workspace does not work

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: v1.70.2
OS Version: macOS v12.5.1

Steps to Reproduce:

Use multi-root workspace with Javascript Node.js & React.js projects
Try to use IntelliSense and auto-complete

Updated steps

Download https://github.com/dalisoft/vscode-workspace-bug/archive/refs/heads/master.zip DO NOT CLONE, DOWNLOAD ZIP FILE
Run ./git-init.sh (Linux & macOS)
Open workspace.code-workspace with VSCode
Install dependencies for all workspaces
Try to work with IntelliSense on both backend and frontend folder, you'll see the bug

Settings

Workspace settings
{
  "folders": [
    {
      "path": "api-shared"
    },
    {
      "path": "ui-shared"
    },
    {
      "path": "backend"
    },
    {
      "path": "frontend"
    },
  ],
  "settings": {
    "git.autofetchPeriod": 60,
    "task.allowAutomaticTasks": "on",
    "typescript.tsserver.useSyntaxServer": "always",
    "typescript.tsserver.experimental.enableProjectDiagnostics": true,
    "typescript.tsserver.maxTsServerMemory": 5120,
    "typescript.tsserver.log": "verbose",
    "cSpell.enabled": false,
    "eslint.workingDirectories": [
      "./api-shared",
      "./ui-shared",
      "./backend",
      "./frontend",
    ],
  }
}

Global settings
Actual
https://user-images.githubusercontent.com/3511344/187973344-430f76e9-e778-4489-9044-314c99d24dc3.mp4
Excepted
https://user-images.githubusercontent.com/3511344/187976968-f7ab2f6d-9df8-4d89-b177-ce35a02194cc.mp4
How to switch between Actual & Excepted?
Just open backend folder from VSCode
Interesting facts

On my daily using (6-8 folders with macOS Native tabs) using Workspaces feature reduces my memory usage up-to 4-5 times (from 14GB to ~3GB) while increasing CPU usage by 3-x (so coolers forgets about silent)
On workspaces (6-8 folders) using launch tasks uses CPU very aggressively so CPU coolers keeps at max almost always
On workspaces easier to work and opening terminals, so it increases productivity up-to 20% and it's huge if calculate per year

What doesn't work? Please share a minimal example that demonstrates the problem

Thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our issue reporting guidelines. Please take the time to review these and update the issue.
Happy Coding!

Thank you for reply @mjbvz
I am updated Original Post (first comment) with video

Please share code that demonstrates the issue so we can intestate

Hello @mjbvz
I am made fully 1:1 copy for reproducible repo and yep, it's not working on minimal reproducible repo too.
Steps to reproduce:

Download https://github.com/dalisoft/vscode-workspace-bug/archive/refs/heads/master.zip
Run ./git-init.sh (Linux & macOS)
Open workspace.code-workspace with VSCode
Try to work with IntelliSense on both backend and frontend folder, you'll see the bug

Thanks

Closing as a duplicate of https://github.com/microsoft/TypeScript/issues/50595

@mjbvz These are different case. THIS for workspace, the linked is for invalid adding src path

@mjbvz The issue you linked and marked this as duplicate of that issue is now almost solved by changing tsconfig/jsconfig but this issue is not solved. Please re-open this issue

@mjbvz The other issue was solved, see comment. Please re-open this issue, it's still not solved even using node16 in config


Unable to See public images once i upload a image.

Hi Team,
A very good job on the Ui and the layout of the components.
When i tried, reverting back to the public images, since i included the image i uploaded in public image. I could not see anything in the public image tab.

Hi Deepak, I am not sure why you are facing that issue. I also created a new user and replicated what you have done and I did not face any such issues. Can you please verify again?


Navigation2D.get_simple_path doesn't return shortest path

Godot version
6ecdef84cf36ba9268ccc19b78210b039098eb52
System information
Windows 10, GLES3, NVidia GeForce GTX 760 2GiB
Issue description
This issue continues the story started in #28235
Godot uses A* algorithm to calculate the shortest path between two points through navigation mesh of polygons.
To compute the traveling cost to next polygon:
In some revisions it uses sum of lengths of rectangular perpendiculars from enter point of polygon to common side with the next polygon.
In last revision it uses more complex way, where costs calculated earlier have some correction.
But no one way cannot calculate right traveling cost between polygons because polygons are not points. They have minimum and maximum distance between their points but not have a single cost as a number.
To calculate the shortest path we can use points instead polygons because they have no area and distances between them are constant numbers at one moment of time.
One of these methods is described here. Main idea to use navmesh vertices as A* nodes and create connections between mutually visible vertices. I used this method when I wrote my pathfinding library. It can be improved by creating connections only between those vertices that have both sides pointing in the same side from the line of the connecting segment.

This method have pros and cons:
Pros: Very fast if navmesh is static and if space is indexed by 2D-array of squares with lots of cross-visibility data
Cons: Greater algorithmic complexity of baking map changes on the fly and space reindexing
Algorithm in action (the picture is a link to YouTube):

I don't think my way is the best. But if it helps, I can share the source code of the library. It is rather messy and contains only a naive implementation.
This issue may be related to the following: #60277 and #19011
Steps to reproduce

Create Navigation2D node under root node
Create TileMap node under Navigation2D node
Create Line2D node under root node to visualize found path
Create simple TileSet in TileMap node with one or two tiles with square navigation polygon in one of them
Draw some walkable area by tiles in editor window
Create script in root node with some code:

extends Node2D

var start: Vector2 = Vector2.ZERO
var finish: Vector2 = Vector2.ZERO

func _input(event):
	if event is InputEventMouseButton:
		if event.pressed:
			match event.button_index:
				BUTTON_LEFT:
					start = get_global_mouse_position()
					update_path()
	elif event is InputEventMouseMotion:
		finish = get_global_mouse_position()
		update_path()

func update_path():
	$Line2D.points = $Navigation2D.get_simple_path(start, finish)

Result:

Minimal reproduction project
TestNavigationFix.zip

CC @smix8

From limited testing the root cause seem to be that the 2D navpoly creates NavigationMesh resources with wrong geometry as I cannot recreate this pathing issue in 3D which uses the same pathing algo and navmesh as 2D.

It happens because TileMap contains many square navigation polygons. Every square have two triangles. The problem is in calculation costs for each possible path and costs comparison order.
Godot feels like one path is cheaper or have equal cost than another, but sometimes it is wrong

Actually I do can create the issue in 3D but only with GridMap cells which are the equivalent of 2D tilemaps.
So the problem has more to do with how the gates for the navigation region connections are calculated and not the navmesh per se.

in 3D it also still generates unoptimal paths, like in 3.4
NavMRP.zip

Navigation2D.get_simple_path doesn't return shortest path

I think that's the exact reason why it's called like that in the first place though. Otherwise it would be called get_shortest_path instead? :thinking:
Indeed seems like that's the case, from the message of the first commit involving navigation (in which get_simple_path was added):

-Begin work on Navigation Meshes (simple pathfinding for now, will improve soon)

I guess it was never improved properly? :slightly_smiling_face:
So if the pathfinding algorithm would be changed to actually always return the shortest path then the method to obtain such path should actually be called get_shortest_path.

@Flavelius
That project has no bug in the Godot navigation. The (imported?) navmesh is corrupted which is the reason for this broken pathfinding in your test project.

.

@smix8 I'm familiar with how it currently works. I was referring only to the name of get_simple_path which is originated in 1.x version (and it's based on the behavior at that time). All I'm saying is that if the behavior will be changed to obtaining the shortest path (currently it's not guaranteed) then this method should also be renamed accordingly.

@Flavelius That project has no bug in the Godot navigation. The (imported?) navmesh is corrupted which is the reason for this broken pathfinding in your test project.
 .
@kleonc You can safely forget anything about the pre < 3.5 navigation. That code and the entire underlying navigation system was nearly completely replaced in both 2D and 3D. Both 2D and 3D now share identical pathfinding. The only difference is that the NavigationServer2D facilitates conversions between Vector2 and Vector3. The actual pathfinding happens in 3D on the NavigationServer3D. The NavigationServer2D converts the 2D navpolys to a flat 3D NavigationMesh.

I extracted the navmesh to not have to supply my whole project with the MRP, it was already 'corrupted' in the source project (as every other navmesh i bake in 3.5 in the same way). Interestingly they don't cause any problems apart from sometimes generating unoptimal paths (not always though, so it's the same behaviour as in 3.4).
If you say the 'corruption' is the problem for the unoptimal path (which is what i considered to be the bug as many authors of similar issues), then there's another issue i commented on that said the 'corruption' was resolved, which in conclusion then seemingly isn't in my godot version (3.5 RC4) atleast: https://github.com/godotengine/godot/issues/59182

@Flavelius
The problem is that the NavigationServer cannot merge half your mesh triangle edges so a portion of your navmesh polygons are not connected or connected wrong which results in the path problems you are experiencing. This is not a bug in the NavigationServer but caused by improper navmesh geometry.
This is your navmesh in my custom debug view, it is a complet polygon mess as you can see by the red line connections formed.

This is not a bug in the NavigationServer but caused by improper navmesh geometry
Isn't the navmesh generated by godot (the navserver?) This navmesh atleast was generated in godot 3.5 RC4.
If not then this is probably a separate bug.
Interestingly though the failing/unoptimal paths are all on a straight polygon (visually), not crossing islands.

Godot parses the source geometry from the scene nodes. If the meshes on the scene nodes are already corrupted this is what the recast library that bakes the navmesh gets to work with.

If the meshes on the scene nodes are already corrupted

The source meshes are not corrupted and in 3.4 the navmeshes are neither, which just leads me to believe it's the generation algorithm. But it may also be that this is just an error that already existed in 3.4 and is just logged in 3.5. Not sure what to report as isse then.

Could you send me a project that includes the source geometry so I can take a closer look what is going on with the baking steps.

NavProblem.zip
I tried stripping out everything else, and had to delete the .import folder because the size was just too large. I hope this doesn't alter the outcome.

Totally unrelated to the issue I suggest not saving binary mesh data in a text format (.tres). With such complex meshes like in the test project parsing and saving the text file takes ages for something that takes a split second as a binary file (.res) and the Godot Editor has a high chance of even crashing when tab in/out of the editor window.
The source of your problems again is the imported mesh and collision shape. The geometry parsing expects proper triangulated mesh data for both terrain source mesh or convex collision shape and both fail at this. When you draw debug lines for each face in the meshes you immediatly see that you used quads or n-gons faces in e.g. Blender and those do not work for building navmesh. Since the data for the collision shape is only stored as an array as long as the array sizes is possible for triangles Godot would not notice that the data is corrupted but it will parse the array as if it would be triangles so each 4th value ends up in the wrong place.

@smix8 Could Godot somehow detect n-gons and warn user?

@Zireael07
This is more a question for the guys and gals that maintain the Godot resource importer. When the mesh is already used in resources like collision shape the anwser is no as many of them do not store face or format information for performance and memory reasons. E.g. a convex collision shape does not store additional face data cause it is always expected (and documented) to be made out of a triangle array. A mesh triangle vertex array and a quad vertex array can look the same without additional data to decipher it.

I meant on import ofc ;)

The source of your problems again is the imported mesh and collision shape

Good to know, this is not something i was aware of (nor is it mentioned in the docs) though that it only works (well) with triangles but fails silently with quads/ngons (and quads are usually not something to be called corrupt). It's also not something one would intuitively expect as being wrong as even the generation settings allow setting the polygon points for the resulting navmesh. This should be noted in the docs somewhere as it seems to be an important, mostly unknown, caveat.
But thanks for the hint about the binary/text saving. I instinctly save everything as tres, as many of my problems with godot are something i'm then able to fix manually by rewriting the text file; but for binary only content it indeed makes more sense.

I just re-checked my terrain mesh in blender (with select by trait->polygon sides) and interestingly it doesn't even contain n-gons, nor quads. It's actually fully triangulated. The collision shape in godot also confirms this, visually (and works without problems too). Maybe there's a bug in your visualization tool or something deeper in godot itself?

@Flavelius
You are correct with the collision shape debug. Actually "my visualization tool" is just the Godot meshdatatool or surfacetool both yielding the same mesh because that is e.g. what the NavigationMesh.create_from_mesh() function is using. I also did a line mesh manually to rule out that one of those tools have a bug - maybe I am just to incompetent to construct meshes in recent Godot, that is also a possibility. More likely there is a bug that went unnoticed for far too long and we need to dig deeper. Might be worth opening your own issue for this now so we no longer sidetrack this original issue.

documentation for triangulated navmesh, soon a navmesh import warning for quad and n-gon meshes

Thanks for being so engaged in fixing this. But for the errors, i still believe this is not a good way to work with the underlying problem. The navmesh itself can be triangulated as much as it needs to be, but it should be generatable from any kinds of polygonal source meshes (like in other game engines and tools). It is kind of detrimental to a fluent workflow to force triangulation for any mesh that can potentially contribute to the navmesh (many meshes are typically used visually and for that quads are easier to work with in for example blender, and often times even preferred for loops).
And if the methods on NavigationMesh like create_from_mesh also just internally rectified the triangulation requirements, then there would even be no need to implement errors and warnings.
Or am i misunderstanding something?
As for the unoptimal a* search; i used the 'A* pathfinding project' for unity for a long time. it also has a funnel modifier for simplifying paths but it works alot better, not sure what it does differently to godot though (https://arongranberg.com/astar/docs/funnelmodifier.html). But if it's the the same underlying algorithm, in my understanding this could only point to an unoptimally/wrongly generated navmesh.

@Flavelius
Godot has no support for quad and n-gon meshes. The only primitives supported are POINT, LINES and TRIANGLES.
The main 3D import / export format GLTF does not support quad and n-gon meshes.
The ReCast library that bakes navmesh also expects triangles.
As a result everything in the entire Godot Navigation chain expects triangles.
Quad an n-gon is useful for DCC software like Blender and Maya (less costly subdiv) but it requires constant conversions in game engines so it is less accepted and support outside the artistic 3d content creation bubble.
Funnel is not funnel. The A* in Godot returns a raw grid cell path. This results in the funnel getting stuck on every single grid corner as soon as the path goes diagonal. This is less a problem in 3D with large flat areas cause the polygons span from real geometry obstacle corners to corners. Grids create artifical corners in the middle of nowhere so the path look ugly without a lot of pre-processing or post-processing or making the entire pathfinding algo more costly.

@smix8 i have to say now i'm even more confused. When you said earlier that the source of my problems was that I was using quads or ngons what did you mean there (when Godot and gltf don't even use those)? Also if they don't exist in Godot what would an error message accomplish then? If this get's too much off topic here, I'm also on the Godot discord with the same username.

The error msg is for the import stage, e.g. when users import 3D assets from Blender / Maya into Godot as other formats supported by Godot like Collada can import those. Discussed this on devchat and this is the only stage where this can be detected to give a warning.

Ok, so technically this is not related to the navmesh problem but only to indicate/hint at incomplete fbx & collada importer functionality, if i now understand correctly. Then these warnings do make sense, yes.