How do we lxd import? Instructions are extremely unclear

I use Ubuntu 16.04, and all i got for importing instructions was the help screen when I type just: lxd import
To test this feature, I had already done a backup of a container from the containers directory, with zfs send | zfs receive.
Then I targz-ed the directory I sent, as root user in order to preserve file ownerships. I took it to a different machine, with a fresh install of the newest lxd (2.15) just like the source machine's lxd.
I didn't know where to untar it, because the instructions were so unclear. So I created a zfs filesystem called test-container under default/containers in the destination machine zfs pool. I untarred (as root again), and did a "mv" of the contents of the untarred directory inside the default/containers/test-container (that was the original name of the container, as well).
Then I did: lxd import test-container
and got:
root@test-vm:/# lxd import test-container
error: The container "test-container" does not seem to exist on any storage pool.
What should I do? The instructions ought to be a lot clearer than this...

We have https://github.com/lxc/lxd/blob/master/doc/backup.md for that. Suggestions on how to extend that documentation would be welcome.

I had read that also, and still couldn't figure out what to do.
I wish this page mentioned that all I need to backup is the container I want (and nothing else is necessary) from zfs (with zfs send, for example).
Also instructions how to restore (with zfs receive -d default).
Before that, I had my backed-up files, and I was placing them in /var/lib/lxd/containers, which was wrong... but how could I know?
After zfs receiving, I must create a link from /var/lib/lxd/containers/my-test-container to the other directory which I don't remember right now. And only then can I lxd import my container.
Also I would like to know whether the above instructions seem enough to you, or whether I will have restored only part of my container if I follow them.
Thanks for a great product!

@brauner can you clarify and then update the documentation?
IIRC we only need the container to be restored in /var/lib/lxd/storage-pools/... with LXD re-creating the symlink in /var/lib/lxd/containers, but maybe I'm wrong and we have a bug :)

lxd import doesn't recreate the bug. Also mention fuidshift of lxd-tools (ubuntu package), as it might be needed after a backup restore operation.

fuidshift shouldn't be needed when using "lxd import" as the container's id map is part of backup.yaml, letting LXD do the remapping on container start.

So assuming that you're using ZFS and have backed up the container with send/receive. You should:

Ensure that there are no containers with the same name in your LXD
Cleanup any manual restore attempt you may have done such as a direct restore in /var/lib/lxd/containers or leftover files for your container in /var/lib/lxd/storage-pools/
Do your "zfs receive" to recreate the ZFS filesystem for the container
Ensure that the mountpoint property for that filesystem is /var/lib/lxd/storage-pools/POOL/containers/NAME where POOL is the storage pool name as reported by "lxc storage list" and NAME is the name of your container (and must match the ZFS filesystem)
Mount the ZFS filesystem "zfs mount "
Run "lxd import NAME" where NAME is the container's name

If that all works and the container fails to start, then please post the error as well as "lxc config show --expanded NAME". It could well be that LXD doesn't recalculate the map on "lxd import", if that's the case, there is a very simple trick to force LXD to do so, which should unstick things.

I followed your steps (all of them as root). Here's the result: When I typed lxd import test-container, I got:
error: open /var/lib/lxd/containers/test-container/backup.yaml: no such file or directory

which I believe means I need to do ln -s from there to there.
I did that, and ran import again. It ran. Now I'm doing start and exec bash.  Couldn't you have it do it automatically, without trick?

You didn't provide the "lxc config show" I asked above.

As for the need to make the symlink, yes, that shouldn't be needed as LXD should be able to locate the container in /var/lib/lxd/storage-pools. @brauner I thought you fixed that one?

Can you also provide the following from your ZFS backup filesystem, before running a "lxd import":

ls -lh /var/lib/lxd/storage-pools/default/containers/test-container/rootfs/
cat /var/lib/lxd/storage-pools/default/containers/test-container/backup.yaml

@stgraber, symlinks are not needed for import to work.

@brauner Any idea what cause the error above?
error: open /var/lib/lxd/containers/test-container/backup.yaml: no such file or directory

I want to see the output of lxc info.

I see one potential problem in the code.

karjala@test-vm:~$ lxc config show --expanded test-container
architecture: x86_64
config:
  image.architecture: amd64
  image.description: ubuntu 16.04 LTS amd64 (release) (20170619.1)
  image.label: release
  image.os: ubuntu
  image.release: xenial
  image.serial: "20170619.1"
  image.version: "16.04"
  volatile.base_image: 7a7ff654cbd8f5f09bec03aa19d8d7d92649127d18659036a963b1ea63f90d25
  volatile.eth0.hwaddr: 00:16:3e:67:10:f9
  volatile.eth0.name: eth0
  volatile.idmap.base: "0"
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":100000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":100000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":100000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":100000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  eth0:
    nictype: bridged
    parent: lxdbr0
    type: nic
  root:
    path: /
    pool: default
    type: disk
ephemeral: false
profiles:
- default
stateful: false
description: ""
karjala@test-vm:~$

More answers coming soon...

root@alex-latitude:~# zfs receive -d -n -v backup-white-cyprus/stephan-demo <~karjala/test.stream
would receive full stream of default/containers/test-container@snapshot-snap0 into backup-white-cyprus/stephan-demo/containers/test-container@snapshot-snap0
root@alex-latitude:~# zfs receive -d backup-white-cyprus/stephan-demo <~karjala/test.stream
root@alex-latitude:~# zfs set mountpoint=/here-the-good-containers backup-white-cyprus/stephan-demo/containers/test-container

...

root@alex-latitude:/here-the-good-containers# cat backup.yaml
container:
  architecture: x86_64
  config:
    image.architecture: amd64
    image.description: ubuntu 16.04 LTS amd64 (release) (20170619.1)
    image.label: release
    image.os: ubuntu
    image.release: xenial
    image.serial: "20170619.1"
    image.version: "16.04"
    volatile.base_image: 7a7ff654cbd8f5f09bec03aa19d8d7d92649127d18659036a963b1ea63f90d25
    volatile.eth0.hwaddr: 00:16:3e:3e:10:0f
    volatile.eth0.name: eth0
    volatile.idmap.base: "0"
    volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'
    volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'
    volatile.last_state.power: STOPPED
  devices: {}
  ephemeral: false
  profiles:
  - default
  stateful: false
  description: ""
  created_at: 2017-07-02T04:36:58Z
  expanded_config:
    image.architecture: amd64
    image.description: ubuntu 16.04 LTS amd64 (release) (20170619.1)
    image.label: release
    image.os: ubuntu
    image.release: xenial
    image.serial: "20170619.1"
    image.version: "16.04"
    volatile.base_image: 7a7ff654cbd8f5f09bec03aa19d8d7d92649127d18659036a963b1ea63f90d25
    volatile.eth0.hwaddr: 00:16:3e:3e:10:0f
    volatile.eth0.name: eth0
    volatile.idmap.base: "0"
    volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'
    volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'
    volatile.last_state.power: STOPPED
  expanded_devices:
    eth0:
      nictype: bridged
      parent: lxdbr0
      type: nic
    root:
      path: /
      pool: default
      type: disk
  name: test-container
  status: Stopped
  status_code: 102
  last_used_at: 2017-07-02T16:11:10.271550129Z
snapshots: []
pool:
  config:
    size: 50GB
    source: /var/lib/lxd/disks/default.img
    zfs.pool_name: default
  description: ""
  name: default
  driver: zfs
  used_by: []
volume:
  config: {}
  description: ""
  name: test-container
  type: container
  used_by: []

root@alex-latitude:/here-the-good-containers# ls -al
total 14
drwxr-xr-x  4<PHONE_NUMBER>36    6 Ιούλ  2 07:37 .
drwxr-xr-x 26 root   root   4096 Ιούλ  2 23:32 ..
-r--------  1 root   root   2336 Ιούλ  2 22:27 backup.yaml
-rw-r--r--  1 root   root   1568 Ιούν 20 04:03 metadata.yaml
drwxr-xr-x 22<PHONE_NUMBER>36   22 Ιούν 20 02:52 rootfs
drwxr-xr-x  2 root   root      8 Ιούν 20 04:03 templates
root@alex-latitude:/here-the-good-containers# ls -alh rootfs/
total 39K
drwxr-xr-x 22<PHONE_NUMBER>36  22 Ιούν 20 02:52 .
drwxr-xr-x  4<PHONE_NUMBER>36   6 Ιούλ  2 07:37 ..
drwxr-xr-x  2<PHONE_NUMBER>36 173 Ιούλ  2 07:41 bin
drwxr-xr-x  3<PHONE_NUMBER>36   3 Ιούν 20 02:52 boot
drwxr-xr-x  5<PHONE_NUMBER>36  91 Ιούν 20 02:51 dev
drwxr-xr-x 92<PHONE_NUMBER>36 182 Ιούλ  2 07:44 etc
drwxr-xr-x  3<PHONE_NUMBER>36   3 Ιούλ  2 07:37 home
drwxr-xr-x 20<PHONE_NUMBER>36  24 Ιούλ  2 07:44 lib
drwxr-xr-x  2<PHONE_NUMBER>36   3 Ιούν 20 02:49 lib64
drwxr-xr-x  2<PHONE_NUMBER>36   2 Ιούν 20 02:49 media
drwxr-xr-x  2<PHONE_NUMBER>36   2 Ιούν 20 02:49 mnt
drwxr-xr-x  2<PHONE_NUMBER>36   2 Ιούν 20 02:49 opt
drwxr-xr-x  2<PHONE_NUMBER>36   2 Απρ  12  2016 proc
drwx------  3<PHONE_NUMBER>36   8 Ιούλ  2 07:43 root
drwxr-xr-x  3<PHONE_NUMBER>36   3 Ιούν 20 02:51 run
drwxr-xr-x  2<PHONE_NUMBER>36 236 Ιούλ  2 07:44 sbin
drwxr-xr-x  2<PHONE_NUMBER>36   2 Απρ  29 11:38 snap
drwxr-xr-x  2<PHONE_NUMBER>36   2 Ιούν 20 02:49 srv
drwxr-xr-x  2<PHONE_NUMBER>36   2 Φεβ   5  2016 sys
drwxrwxrwt  7<PHONE_NUMBER>36   7 Ιούλ  2 22:27 tmp
drwxr-xr-x 10<PHONE_NUMBER>36  10 Ιούν 20 02:49 usr
drwxr-xr-x 13<PHONE_NUMBER>36  15 Ιούν 20 02:52 var

This is my ZFS backup filesystem, as you asked. It's not attached to a LXD system at all.

Since I'm not sure that's you wanted (the directories were different in your question), I'm repeating these steps in the RESTORE lxd machine, just before the lxd import command.

root@test-vm:/var/lib/lxd/storage-pools/default/containers/test-container# ls -al
total 11
drwxr-xr-x  4<PHONE_NUMBER>36    6 Jul  2 07:37 .
drwxr-xr-x  3 root   root   4096 Jul  2 23:41 ..
-r--------  1 root   root   2336 Jul  2 22:27 backup.yaml
-rw-r--r--  1 root   root   1568 Jun 20 04:03 metadata.yaml
drwxr-xr-x 22<PHONE_NUMBER>36   22 Jun 20 02:52 rootfs
drwxr-xr-x  2 root   root      8 Jun 20 04:03 templates

root@test-vm:/var/lib/lxd/storage-pools/default/containers/test-container# ls -al rootfs/
total 39
drwxr-xr-x 22<PHONE_NUMBER>36  22 Jun 20 02:52 .
drwxr-xr-x  4<PHONE_NUMBER>36   6 Jul  2 07:37 ..
drwxr-xr-x  2<PHONE_NUMBER>36 173 Jul  2 07:41 bin
drwxr-xr-x  3<PHONE_NUMBER>36   3 Jun 20 02:52 boot
drwxr-xr-x  5<PHONE_NUMBER>36  91 Jun 20 02:51 dev
drwxr-xr-x 92<PHONE_NUMBER>36 182 Jul  2 07:44 etc
drwxr-xr-x  3<PHONE_NUMBER>36   3 Jul  2 07:37 home
drwxr-xr-x 20<PHONE_NUMBER>36  24 Jul  2 07:44 lib
drwxr-xr-x  2<PHONE_NUMBER>36   3 Jun 20 02:49 lib64
drwxr-xr-x  2<PHONE_NUMBER>36   2 Jun 20 02:49 media
drwxr-xr-x  2<PHONE_NUMBER>36   2 Jun 20 02:49 mnt
drwxr-xr-x  2<PHONE_NUMBER>36   2 Jun 20 02:49 opt
drwxr-xr-x  2<PHONE_NUMBER>36   2 Apr 12  2016 proc
drwx------  3<PHONE_NUMBER>36   8 Jul  2 07:43 root
drwxr-xr-x  3<PHONE_NUMBER>36   3 Jun 20 02:51 run
drwxr-xr-x  2<PHONE_NUMBER>36 236 Jul  2 07:44 sbin
drwxr-xr-x  2<PHONE_NUMBER>36   2 Apr 29 11:38 snap
drwxr-xr-x  2<PHONE_NUMBER>36   2 Jun 20 02:49 srv
drwxr-xr-x  2<PHONE_NUMBER>36   2 Feb  5  2016 sys
drwxrwxrwt  7<PHONE_NUMBER>36   7 Jul  2 22:27 tmp
drwxr-xr-x 10<PHONE_NUMBER>36  10 Jun 20 02:49 usr
drwxr-xr-x 13<PHONE_NUMBER>36  15 Jun 20 02:52 var

root@test-vm:/var/lib/lxd/storage-pools/default/containers/test-container# cat backup.yaml
container:
  architecture: x86_64
  config:
    image.architecture: amd64
    image.description: ubuntu 16.04 LTS amd64 (release) (20170619.1)
    image.label: release
    image.os: ubuntu
    image.release: xenial
    image.serial: "20170619.1"
    image.version: "16.04"
    volatile.base_image: 7a7ff654cbd8f5f09bec03aa19d8d7d92649127d18659036a963b1ea63f90d25
    volatile.eth0.hwaddr: 00:16:3e:3e:10:0f
    volatile.eth0.name: eth0
    volatile.idmap.base: "0"
    volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'
    volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'
    volatile.last_state.power: STOPPED
  devices: {}
  ephemeral: false
  profiles:
  - default
  stateful: false
  description: ""
  created_at: 2017-07-02T04:36:58Z
  expanded_config:
    image.architecture: amd64
    image.description: ubuntu 16.04 LTS amd64 (release) (20170619.1)
    image.label: release
    image.os: ubuntu
    image.release: xenial
    image.serial: "20170619.1"
    image.version: "16.04"
    volatile.base_image: 7a7ff654cbd8f5f09bec03aa19d8d7d92649127d18659036a963b1ea63f90d25
    volatile.eth0.hwaddr: 00:16:3e:3e:10:0f
    volatile.eth0.name: eth0
    volatile.idmap.base: "0"
    volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'
    volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'
    volatile.last_state.power: STOPPED
  expanded_devices:
    eth0:
      nictype: bridged
      parent: lxdbr0
      type: nic
    root:
      path: /
      pool: default
      type: disk
  name: test-container
  status: Stopped
  status_code: 102
  last_used_at: 2017-07-02T16:11:10.271550129Z
snapshots: []
pool:
  config:
    size: 50GB
    source: /var/lib/lxd/disks/default.img
    zfs.pool_name: default
  description: ""
  name: default
  driver: zfs
  used_by: []
volume:
  config: {}
  description: ""
  name: test-container
  type: container
  used_by: []

root@test-vm:~# lxc info
config: {}
api_extensions:

storage_zfs_remove_snapshots
container_host_shutdown_timeout
container_syscall_filtering
auth_pki
container_last_used_at
etag
patch
usb_devices
https_allowed_credentials
image_compression_algorithm
directory_manipulation
container_cpu_time
storage_zfs_use_refquota
storage_lvm_mount_options
network
profile_usedby
container_push
container_exec_recording
certificate_update
container_exec_signal_handling
gpu_devices
container_image_properties
migration_progress
id_map
network_firewall_filtering
network_routes
storage
file_delete
file_append
network_dhcp_expiry
storage_lvm_vg_rename
storage_lvm_thinpool_rename
network_vlan
image_create_aliases
container_stateless_copy
container_only_migration
storage_zfs_clone_copy
unix_device_rename
storage_lvm_use_thinpool
storage_rsync_bwlimit
network_vxlan_interface
storage_btrfs_mount_options
entity_description
image_force_refresh
storage_lvm_lv_resizing
api_status: stable
api_version: "1.0"
auth: trusted
public: false
environment:
addresses: []
architectures:

x86_64
i686
certificate: |
-----BEGIN CERTIFICATE-----
secret
-----END CERTIFICATE-----
certificate_fingerprint: .........................secret.............
driver: lxc
driver_version: 2.0.8
kernel: Linux
kernel_architecture: x86_64
kernel_version: 4.4.0-83-generic
server: lxd
server_pid: 3707
server_version: "2.15"
storage: zfs
storage_version: <IP_ADDRESS>-0ubuntu16

Thanks, so the backup looks good with the right ownership on files which matches what's in backup.yaml.
Can you now create the symlink in /var/lib/lxd/containers/ and then run "lxd import test-container" but don't start the container after that. Instead, post:

ls -lh /var/lib/lxd/storage-pools/default/containers/test-container/rootfs/
lxc config show --expanded test-container

That should let me figure out exactly what LXD is going to do when you do start the container and see why you'd then end up with broken uid/gid.

root@test-vm:/var/lib/lxd/containers# ls -lh /var/lib/lxd/storage-pools/default/containers/test-container/rootfs/
total 36K
drwxr-xr-x  2<PHONE_NUMBER>36 173 Jul  2 07:41 bin
drwxr-xr-x  3<PHONE_NUMBER>36   3 Jun 20 02:52 boot
drwxr-xr-x  5<PHONE_NUMBER>36  91 Jun 20 02:51 dev
drwxr-xr-x 92<PHONE_NUMBER>36 182 Jul  2 07:44 etc
drwxr-xr-x  3<PHONE_NUMBER>36   3 Jul  2 07:37 home
drwxr-xr-x 20<PHONE_NUMBER>36  24 Jul  2 07:44 lib
drwxr-xr-x  2<PHONE_NUMBER>36   3 Jun 20 02:49 lib64
drwxr-xr-x  2<PHONE_NUMBER>36   2 Jun 20 02:49 media
drwxr-xr-x  2<PHONE_NUMBER>36   2 Jun 20 02:49 mnt
drwxr-xr-x  2<PHONE_NUMBER>36   2 Jun 20 02:49 opt
drwxr-xr-x  2<PHONE_NUMBER>36   2 Apr 12  2016 proc
drwx------  3<PHONE_NUMBER>36   8 Jul  2 07:43 root
drwxr-xr-x  3<PHONE_NUMBER>36   3 Jun 20 02:51 run
drwxr-xr-x  2<PHONE_NUMBER>36 236 Jul  2 07:44 sbin
drwxr-xr-x  2<PHONE_NUMBER>36   2 Apr 29 11:38 snap
drwxr-xr-x  2<PHONE_NUMBER>36   2 Jun 20 02:49 srv
drwxr-xr-x  2<PHONE_NUMBER>36   2 Feb  5  2016 sys
drwxrwxrwt  7<PHONE_NUMBER>36   7 Jul  2 22:27 tmp
drwxr-xr-x 10<PHONE_NUMBER>36  10 Jun 20 02:49 usr
drwxr-xr-x 13<PHONE_NUMBER>36  15 Jun 20 02:52 var

root@test-vm:/var/lib/lxd/containers# lxc config show --expanded test-container
architecture: x86_64
config:
  image.architecture: amd64
  image.description: ubuntu 16.04 LTS amd64 (release) (20170619.1)
  image.label: release
  image.os: ubuntu
  image.release: xenial
  image.serial: "20170619.1"
  image.version: "16.04"
  volatile.base_image: 7a7ff654cbd8f5f09bec03aa19d8d7d92649127d18659036a963b1ea63f90d25
  volatile.eth0.hwaddr: 00:16:3e:e7:3f:1e
  volatile.eth0.name: eth0
  volatile.idmap.base: "0"
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":100000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":100000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":100000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":100000,"Nsid":0,"Maprange":65536}]'
devices:
  eth0:
    nictype: bridged
    parent: lxdbr0
    type: nic
  root:
    path: /
    pool: default
    type: disk
ephemeral: false
profiles:
- default
stateful: false
description: ""

I haven't started the container yet.

Ok, perfect, that does show a bug in the import code then.
It shows the following changing from:
    volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'
    volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'

To:
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":100000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":100000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":100000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":100000,"Nsid":0,"Maprange":65536}]'

Instead of the expected:
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":100000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":100000,"Nsid":0,"Maprange":65536}]'
    volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'

Run:
lxc config set test-container volatile.last_state.idmap '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'
lxc start
That should fix the issue.

@brauner any idea what's going on here? Looks like we're replacing the existing idmap with the current system one, which is reasonable, but we do so without keeping the previous value for volatile.last_state.idmap so the container doesn't remap the filesystem on startup.

Indeed, that command you gave me just now fixed the problem (for this one time).

@stgraber, sounds like the backup.yaml file couldn't not be updated and hence is missing the updated volatile key.

Oh, ok the original backup.yaml contains the correct entry.

The container directory itself was owned by 165536 (if that's of any use to anyone):
root@alex-latitude:/here-the-good-containers# ls -al
total 14
drwxr-xr-x  4<PHONE_NUMBER>36    6 Ιούλ  2 07:37 .
drwxr-xr-x 26 root   root   4096 Ιούλ  2 23:32 ..
-r--------  1 root   root   2336 Ιούλ  2 22:27 backup.yaml
-rw-r--r--  1 root   root   1568 Ιούν 20 04:03 metadata.yaml
drwxr-xr-x 22<PHONE_NUMBER>36   22 Ιούν 20 02:52 rootfs
drwxr-xr-x  2 root   root      8 Ιούν 20 04:03 templates

@stgraber, why should this be a bug in the import code? All the import code does with backup.yaml is to unmarshal it into a go struct. It doesn't alter the values.

Hm, wait.

We're currently wiping all volatile.* keys on import except for volatile.base_image. I'll take a look at the volatile keys now and see which ones would make sense to keep.

Question: Shouldn't the developers of lxc have tested their product before claiming that lxd import does not need the link to exist before tunning the command? Whenever you fix a bug, you should test the product to see that the bug has been fixed. I think that's the proper way...

We have automated testing for this feature which wasn't cleaning everything up, @brauner's fix is now fixing that particular issue so that this doesn't regress.
Not requiring the symlink was one of the very many details we discussed back when the feature was implemented and was forgotten when the test code was written. https://github.com/lxc/lxd/blob/master/test/suites/backup.sh
Bugs happen, when we find them, we fix them and add tests, apparently even on Sundays.

Ok ok!

Did you also fix the uids problem? Is it planned to be fixed? Do you need reminders? Should I open a new ticket for that?

The uid problem is also addressed in the branch I sent.

@brauner May I reiterate the request to update backup.md?
The instructions there are quite vague, and I can't quite make what I read here and on 3481 into a complete backup-and-restore sequence.

@yoniy0, without wanting to relay the question back to you what exactly are you looking for? I just want to make sure that I'm not putting anything useless in there. What exactly are you looking for? Implementation details or an example command line like lxd import <container-name>?

@brauner TL;DR: a complete man page for lxd import.
Longer:

One has the data (including backup.yaml) of an old container <container-name> on some media, and a new LXD instance. We can also assume no container in the new instance is currently named <container-name>.
What steps should one take to import the old container into the new instance?


Error on Setup

Hello,
i have the HA Version 2023.06.01 and the BraiinOS+ 2022-04-29-0-5eb2c5fe-22.02.4-plus on my S9.
If i try to setup the miner on the HA i get the message "error on setup".
Is there something wrong ?  The Integration have the Version 0.6.0
BR

This is an issue with a function used to setup the miner in newer version of HASS, the name of the function changed.  This should be the same issue as #166, getting fixed in #39.


The program encountered a blockage preventing it from reading snapshot data from mysql-cdc [Bug]

Search before asking

[X] I searched in the issues and found nothing similar.

Flink version
1.14.5
Flink CDC version
2.3
Database and its version
mysql 5.7.41
Minimal reproduce step
flink config:
taskmanager.memory.process.size: 2 gb
taskmanager.numberOfTaskSlots: 1
parallelism.default: 1
mysql table schema and data:
The data must be kept confidential.  If needed, please contact me at<EMAIL_ADDRESS>What did you expect to see?
Read the snapshot data of this table normally.
What did you see instead?
The snapshot data query was successful, but there was no return value when calling the method com.ververica.cdc.connectors.mysql.debezium.task.MySqlSnapshotSplitReadTask.readField(ResultSet, int, Column, Table).
Anything else?
No response
Are you willing to submit a PR?

[X] I'm willing to submit a PR!

The code part you provide is about getting a field from the ResultSet. It is helpful to look at the thread dump and find where the problem is hanging on.

Closing this issue as it has been migrated to Apache Jira.


Use stable version of coduo/php-matcher

https://github.com/Lakion/Lionframe/blob/master/composer.json#L23 this line should be no longer required after merge.

Awesome, thanks Norbert! :+1:


[BUG] 'flutter run' not compatible with 'open file' ?

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
i have a project in ~/code/ptc, therefore i run nvim code/ptc in my home directory.
when i do FlutterRun, and i get an error, the console output is something like this:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following assertion was thrown building:
no rangeStarts found for Articulation.cervicalSpineFlexion
'package:ptc/backend/movements.dart':
Failed assertion: line 72 pos 12: 'rangeStarts.isNotEmpty'

When the exception was thrown, this was the stack:
#2      new ArticulationMovements (package:ptc/backend/movements.dart:72:12)
#3      _ArticulationsScreenState.build.<anonymous closure> (package:ptc/ui/articulations_screen.dart:58:26)

normally, i should be able to hover over the filename - e.g. movements.dart - and hit 'gf' to go to the file, however, flutter run puts the 'ptc' part in the path, but vim is already inside the ptc directory, therefore it can't find the path.
the workaround is that a copy paste the output into a different buffer, remove the 'ptc/' and then 'gf' works as expected..
Expected Behavior
not sure. maybe flutter run shouldn't print the base directory of the project?
Steps To Reproduce
trigger a bug during execution and try to use 'gf' on the returned file.
Environment
- OS: arch linux
- Flutter version: 3.22.3
- Is flutter in $PATH: yes
- neovim version: v0.10.1

Anything else?
No response

Thank you for providing detailed information on the issue.
The intention here is to keep the original behaviour because we do not want to modify the logs that we receive from the Flutter framework. The logs are generated directly by Flutter, and altering them could lead to inconsistencies or confusion, especially when debugging across different environments. Maintaining the full path as it is output by Flutter ensures we preserve the integrity of the log information.

maybe there's a way to alter 'gf' in lua, to strip the base path

You could try to use includeexpr.

I see this plugin may be doing what you want:
https://github.com/dart-lang/dart-vim-plugin/blob/4bdc04e2540edf90fda2812434c11d19dc04bc8f/ftplugin/dart.vim#L26

I am reopening this case, I added package resolve function based on what I found in https://github.com/dart-lang/dart-vim-plugin. @Dieterbe would it be possible for you to test it? If you are using lazy here is example setup to test:
return {
  "nvim-flutter/flutter-tools.nvim",
  branch = "resolve-url",
....
}

wow! accommodating the functionality in flutter-tools.nvim's lua code was actually the outcome i was hoping for, but i was not ready to do the work, and i didn't want to impose the burden on you.
i'm excited that you decided to give this a shot, and it will be my pleasure to test it and provide my feedback. stay tuned!


Improved: WidgetWorker should not write generated html to Appendable (OFBIZ-11907)

Refactoring of WidgetWorker so that it generates URI and JSoup Element
objects to represent created URLs, hidden forms and anchor tags. This
replaces the previous approach where WidgetWorker would write string
representations of the URLS, hidden forms and anchor tags directly to an
Appendable object passed to it.
Callers to WidgetWorker have been modified to render the new objects
created by WidgetWorker to their relevant I/O.

Hi Daniel,
Sorry "This branch has conflicts that must be resolved" as report GH

Hi @JacquesLeRoux , conflict has been fixed now.

Hi Daniel,
Sorry again, "This branch has conflicts that must be resolved" as reports GH. I guess it will be easier to fix for you. TIA :)

All fixed @JacquesLeRoux

Thanks Daniel,
I'll try to have a look today, at least ASAP... before asking people to not change things in this area...

Hi Daniel,
Sorry again, of course I want to review before pushing.
I don't like reviewing in GH (web). I don't like either the GH "command line instructions" because it suggests to merge and then you don't have an easy access to the changes.
I prefer using a patch and do the review in the IDE or such while and after patching and testing.
Unfortunately with https://patch-diff.githubusercontent.com/raw/apache/ofbiz-framework/pull/217.patch I  face 2 failing hunks. One "MacroFormRendererTest.java.rej" is not a problem but it shows that your last update misses  "import static org.hamcrest.MatcherAssert.assertThat;".
The other "WidgetWorker.java.rej" is problematic because it's a huge one (see attachment). Please update again against trunk HEAD, TIA

OK, GH is not able to show the zipped WidgetWorker.java.rej.zip file in preview above despite saying it's uploaded :/.
Trying here rather... OK same "Error rendering preview" in Preview. Not sure how to see this file, trying a trick with changing extension to txt...
Nothing works or I don't understand how it works :/ Maybe because I use an old FF version. Trying with Edge...

I'm don't know how to resolve this @JacquesLeRoux .
Before the most recent merge commit a few moments ago I attempted to apply the patch you linked to against trunk and saw the failures you mentioned. As far as I can tell they are due to a difference in whitespace in the trunk compared to the lines expected to be replaced by the patch.
I then tried generated another patch using 'git format-patch trunk --stdout > OFBIZ-11907.patch', but saw the exact same problem with then applying the new patch to trunk.
The issue appears to be with the whitespace is this part of the patch:

   String tokenValue = CsrfUtil.generateTokenForNonAjax(request, target);

   if (UtilValidate.isNotEmpty(tokenValue)) {

       String currentString = externalWriter.toString();

       if (currentString.startsWith("<form")) {

           currentString = currentString.substring(currentString.lastIndexOf("\"")+1);

       }

       if (currentString.indexOf('?') == -1) {

           externalWriter.append("?" + CsrfUtil.getTokenNameNonAjax() + "=" + tokenValue);

       } else {

           externalWriter.append("&" + CsrfUtil.getTokenNameNonAjax() + "=" + tokenValue);

       }

   additionalParameters.forEach(uriBuilder::addParameter);

   try {

       return uriBuilder.build();

   } catch (URISyntaxException e) {

       final String msg = "Syntax error when building URI: " + uriBuilder.toString();

       Debug.logError(e, msg, MODULE);

       throw new RuntimeException(msg, e);

If a way to resolve this can be found then I think the patch will apply cleanly.
Perhaps this is a reason to coordinate large formatting changes across the code base as this is the third time I've tried to fix the merge and we are now getting hit by some subtle diff/patch issue that I'm unable to definitively diagnose.

Hi @JacquesLeRoux , If you haven't been able to work with the patch from this PR, please reject it and I'll re-implement the changes against trunk which should hopefully result in a clean patch.
Thanks,
Dan.

HI Daniel,
That would be perfect, working and updating from trunk HEAD should work, TIA


Injection is not working

Failed to inject dll. What can cause this problem?

Did u tried to debug? Where is the error?

I think the problem is here.
Is it possible that 32 and 64 bit is a problem here?
GetExitCodeThread(thread, (DWORD*)&exit_code);

build x86(32)


Fix reply to parsing.  Responses come as array of strings rather than…

… a string

Thanks @aochsner !


Update typescript to 4.8.4

Ideally monaco should allow customising the TypeScript version, 4.5.5 has several months and newer features are not available.
In the jump to 4.8, InlayHintsOptions has been removed and merged inside UserPreferences, not sure if you want to build a sub-type.

@microsoft-github-policy-service agree [company="Xata"]

@microsoft-github-policy-service agree company="Xata"

Is there any motion on this?
Since TS 5.0 is on the horizon, has there been any more thought on making the version of TypeScript used in monaco customizable at runtime?

cc @hediet

FYI #3721 just merged which brings in TS 5.0; you can likely close this!


Crash on start: TypeError: [....] is not a function

Pylance stopped working after installing version 2023.10.50. No more code highlight, completion ..... nothing works
Went back to version 10.40 and everything went back to normal
Environment data

Language Server version: 2023.10.50
OS and version: vs code on Windows 11,  Using ssh on an Ubuntu 20 .04
Python version (& distribution if applicable, e.g. Anaconda): 3.8.10

Repro Steps
Crash on vs code startup
Logs
Log attached

Pylance stopped working after installing version 2023.10.50. No more code highlight, completion ..... nothing works
Went back to version 10.40 and everything went back to normal
Environment data

Language Server version: 2023.10.50
OS and version: vs code on Windows 11,  Using ssh on an Ubuntu 20 .04
Python version (& distribution if applicable, e.g. Anaconda): 3.8.10

Repro Steps
Crash on vs code startup
Logs
Log attached

I have the same problem on my windows 11. Therefore, I have to use version 10.40

Duplicate of #5009. Please switch to pre-release build 2023.10.53.

Same problem here but will try the suggested fix.


Customizing the grader provider doesn't work

I've been trying to customize the grading provider, but it doesn't seem to be working. Am I doing something wrong? Or is this not working as intended.
I created an example here, that tries to set a grading provider a couple ways.
However the verbose output shows that its using gpt-4:
$ promptfoo eval --verbose
...

Calling OpenAI API: {"model":"gpt-4-0125-preview","messages":[{"role":"system","content":"You are comparing multiple pieces of text to see which best fits the following criteria: choose the funniest tweet\n\nHere are the pieces of text:\n\n\n<Text index=\"0\">\nJust discovered that bananas are a great source of potassium and vitamin B6! 🍌 Not only are they delicious, but they're also a powerhouse of nutrients. #HealthyEating #BananaLove\n</Text>\n\n<Text index=\"1\">\n\"Just found out bananas are a great source of potassium. Guess I'm one step closer to being a fruit ninja. #BananaBattles\"\n</Text>\n\n\nOutput the index of the text that best fits the criteria. You must output a single integer."}],"seed":0,"max_tokens":1024,"temperature":0,"top_p":1,"presence_penalty":0,"frequency_penalty":0}
...
Model-graded comparison #1 of 2 complete
Calling OpenAI API: {"model":"gpt-4-0125-preview","messages":[{"role":"system","content":"You are comparing multiple pieces of text to see which best fits the following criteria: choose the tweet that contains the most facts\n\nHere are the pieces of text:\n\n\n<Text index=\"0\">\nExploring the concrete jungle where dreams are made of - #NYC. The city's energy is infectious, its diversity inspiring, and its skyline breathtaking. Truly, there's no place like New York! 🗽🍎 #ILoveNY #BigApple #CityThatNeverSleeps\n</Text>\n\n<Text index=\"1\">\n\"Just saw a rat on the subway carrying a whole slice of pizza. Even the wildlife in NYC hustles harder. #OnlyInNYC\"\n</Text>\n\n\nOutput the index of the text that best fits the criteria. You must output a single integer."}],"seed":0,"max_tokens":1024,"temperature":0,"top_p":1,"presence_penalty":0,"frequency_penalty":0}

If you think this is a bug, I can try taking a stab at a fix

Thank you for providing a repro example!  It made it pretty easy to troubleshoot, so I just wound up making a PR.
select-best doesn't support provider overrides right now because it is a bit of a special case (output comparisons run after all LLM outputs have been received, as opposed to on-the-fly like other assertions).
#478 fixes this issue and will be included in the next release.

Awesome! Looking forward to the next releases


Generators

[ ] Need a more centralized, scalable, versatile generator system based on blueprints perhaps.
[ ] Convert to package (not addon) and use as a dependency for Streams module?[1]

This is currently in a "maker" addon I think it was. Just moved old stuff to it for posterity.
[1] There is still the need for generating entry models for streams generated via GUI which I was intending on being an out of the box feature. Which you can still extend and customize but otherwise those WILL need to be used by internal systems. So, does that generation stay with other generation logic as a dependency? Or bake it in where needed? I prefer the former.. dependency/standardize it.

streams-creator package


Load Reporting hook

Includes https://github.com/grpc/grpc/pull/6177

RFC

?? I have no idea how this got closed. Reopening.

What state is this in?

Ready for review (just merged with master).

I missed you comment about making it a plugin. Doing that now. Merged with master otherwise.

It might need a remerge...

Ack. I'm wrapping up the filter/plugin changes as recently discussed.

Can you resolve this?

Done.

LGTM, merge on green

Flakes are known. Tagging for merging.


Update effector command to support optional argument 'effector name'.

Tested.  But has conflicts so will need to be rebased.

Brought up to date with master.

Merging.


chore(ci): Test PR, please ignore

SUMMARY

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TESTING INSTRUCTIONS

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

Still need this? ¯\_(ツ)_/¯

Closing, as I assume this PR is no longer relevant (feel free to reopen if this is not the case).


Add a scroll view for mobile platforms

The usernames section is not visible on mobiles, maybe add a scroll view and fix it

Hi :)
#42

it is still not scrollable on mobile mate


fix user warning

Fixes warning: UserWarning: floordiv is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').
Before submitting

[ ] Was this discussed/approved via a Github issue? (no need for typos, doc improvements)
[x] Did you read the contributor guideline?
[ ] Did you make sure to update the docs?
[ ] Did you write any new necessary tests?

What does this PR do?
Fixes # (issue).
PR review
Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
Make sure you had fun coding 🙃

Failures look unrelated.


regexp: timeout in ReplaceAll

What version of Go are you using (go version)?

$ go version
go version go1.17.6 darwin/amd64

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/catena/Library/Caches/go-build"
GOENV="/Users/catena/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/catena/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/catena/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.17.6"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/catena/go/src/github.com/catenacyber/go/src/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/pp/dc1dtf9x2js3v0jx_m010nqr0000gn/T/go-build4237848497=/tmp/go-build -gno-record-gcc-switches -fno-common"
GOROOT/bin/go version: go version go1.17.6 darwin/amd64
GOROOT/bin/go tool compile -V: compile version go1.17.6
uname -v: Darwin Kernel Version 21.3.0: Wed Jan  5 21:37:58 PST 2022; root:xnu-8019.80.24~20/RELEASE_X86_64
ProductName:	macOS
ProductVersion:	12.2.1
BuildVersion:	21D62
lldb --version: lldb-13<IP_ADDRESS>
Apple Swift version 5.6 (swiftlang-<IP_ADDRESS>3.62 clang-13<IP_ADDRESS>)
gdb --version: GNU gdb (GDB) 9.1

What did you do?
Run https://go.dev/play/p/MQ6jQYNTuLo?v=gotip
What did you expect to see?
The program finishing and printing Hello
What did you see instead?
timeout running program

Program exited.

Found by https://github.com/catenacyber/ngolo-fuzzing on oss-fuzz
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49460
Not sure this is a real bug, but it looks like some function uses too much recursivity...

@rsc, this seems likely to be https://github.com/golang/go/issues/11181 redux.

any news on this ?

FWIW, the RE2 fuzzer does this to make RE2::GlobalReplace() replace only the first match (if any) and thus avoid wasting time on pathological cases. I imagine that the Go regexp package would need only minor modifications in order to support something similar.

Interesting, are you also saying that ReplaceAll is intrinsically quadratic ?

Yes, see https://github.com/golang/go/issues/11181#issuecomment-221027218 for a summary of the situation.

I had read it, but I do not think I fully understand it.
But I understand your reply, so I know what to do, thanks


D365 Field Service missing

Hi, can't find c7d15985-e746-4f01-b113-20b575898250 Dynamics 365 Field Service in here nor in the CSV file located here
https://download.microsoft.com/download/e/3/e/e3e9faf2-f28b-490a-9ada-c6089a1fc5b0/Product names and service plan identifiers for licensing.csv

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 7c245452-161d-89a1-c026-99a0721cf071
Version Independent ID: 16dec59a-eb83-1837-4efd-4645e7aeaed2
Content: Product names and service plan identifiers for licensing - Azure AD - Microsoft Entra
Content Source: articles/active-directory/enterprise-users/licensing-service-plan-reference.md
Service: active-directory
Sub-service: enterprise-users
GitHub Login: @Nicholak-MS
Microsoft Alias: nicholak

@mansohrstrom Thanks for your feedback! We will investigate and update as appropriate.

@mansohrstrom Apologies for the delay, checking with my team and will update you.

@mansohrstrom I have added the above product and service plan information to both the online table as well as the downloadable CSV. They are now both available for consumption. Thanks.
#please-close


got "syntax error, unexpected ')' when using 0.11.1

When using 0.11.1, calling "Setting::all();", got the error message:

This can be solved by remove the "," in line 71.

Thanks for the report, will add a fix in now.

Released in v0.11.2


Add option to set nuclear_counts = True in generate_cell_table

Is your feature request related to a problem? Please describe.
Right now, there's no option to set nuclear_counts = True in a call to generate_cell_table. This is problematic because the user cannot extract nuclear properties nor retrieve any props computed by assign_multi_compartment_features.
Describe the solution you'd like
We should add the nuclear_counts parameter to generate_cell_table as well.

Yes, once we have the option to generate nuclear segmentations, we should add in this. Hopefully next week


Read from followers: APM-296

This adds documentation for the read-from-followers feature.

Add x-arango-allow-dirty-read header to read-only operations.
Add snippets from this PR: https://github.com/arangodb/arangodb/pull/16477

Upstream PR is merged. @ansoboleva

it's this one that's blocking the docs PR https://github.com/arangodb/arangodb/pull/16477
@Simran-B are you done with your review of the docublocks?


Remove all uses of patterns

Fixes #717

thanks @mattbriancon !
Do we need any special handling to keep supporting Django 1.6? I can't recall if 1.6 already supports patterns as a list.

oh, and the tests went bonkers

I'll look into the tests the weekend. Not sure what happened there :confused:.

Regarding Django 1.6, I figured my approach was fine because filer/urls.py had already been converted to use a list. Happy to add a compatibility layer if necessary.

Hey what is the status on this patch? Is any help needed? Would love a filer version where the Warnings disapear. ;)

Apologies! I'll try to get this up to date with the tests passing by this weekend.

@stefanfoulis @Wegi should be good to go!

@mattbriancon Thanks!


Add button show more to product sample

Current product sample shows only 4 related product.
We could add a button "Show more" which will fetch a longer list by using amp-list and changing the source by using amp-bind to show more products, some code here.
@ericlindley-g, @choumx  FYI

@kmh287 @choumx I tried to bind to the src of amp-list but I got:
error.js:131 amp-bind: Binding to [src] on <AMP-LIST> is not allowed.
How can I use it?

Sorry about that, this week's canary was delayed. It should be in dev channel by end of today.

Ok, I can see that amp-list with amp-bind works with version<PHONE_NUMBER>331 which I got by building locally the library and trying examples/bind/list.html,  but it doesn't with<PHONE_NUMBER>795 which is the prerelease version available online. When using<PHONE_NUMBER>795 I get:
amp-bind: Expression evaluation error in "product.relatedProductsSrc". "https://amp-by-example-staging.appspot.com/json/more_related_products.json" is not a valid result for [src].

@kul3r4 I'm unable to reproduce that locally. Could you post the code in either a gist or a PR?

Sorry I forgot to add it, branch

Hmm, this is for Product_Page.html right? Have you pushed a commit where you set relatedProductsSrc to that url?

Should be here

Thanks to @kmh287 I solved this by disabling the web-worker experiment AMP.toggleExperiment('web-worker')
@choumx FYI

@kmh287 I think this is because the web worker entry point ww.js is not canary-able, which means you'll need to wait until the change hits prod. I'm working on a change to fix this. Good catch!

Fixed!


[Documentation] Is tray available on Windows?

I'm a bit confused by the wording in the Readme: it mentions this is a cross-platform library but goes on to state that tray is only available on Linux.
Are methods to add tray icons, explorer context items, ... part of tao and more specifically the Tauri ecosystem yet?

Trays are supported on Windows, maybe the wording on the readme needs update.

Are methods to add tray icons, explorer context items, ... part of tao and more specifically the Tauri ecosystem yet?

Yes, in tao and tauri, you can create system tray icons(with a menu if you want) and menu bars on the window level on Windows and Linux, and menu bar for the app on macOS

Thanks for the clarification!
Are you aware of a way to also have explorer context menu items in tauri? (usually called Shell Extensions)

That's a special case (file type registration). I'm referring to generic menus, e.g. what SharpShell does:

https://github.com/dwmkerr/sharpshell#shell-context-menus

That's a special case (file type registration). I'm referring to generic menus, e.g. what SharpShell does:

It is actually the same and it is not implemented yet.
On Windows, this is simple, it is just a matter of adding a registry key in the right location for your use case. You can use win32 apis through windows-rs crate to do this or spawn a powershell command to do it.

It's not the same as far as I'm aware, these context menus are fully programmable (nested hierarchies etc.) - I'm not aware of a way to do that through the registry.

Check this SO https://stackoverflow.com/a/2069565 and the links in it. It has useful info about this. Join our discord if you want to discuss this further. This issue seems resolved to me so no need to diverge of its subject.

Thanks, I agree this can be closed, but the SO is about a totally different topic :) (file type associations, not shell extensions)

The .NET library you mentioned above, links to this MSDN article(https://docs.microsoft.com/en-us/windows/win32/shell/context-menu-handlers?redirectedfrom=MSDN) which goes in detail on how to register shell context menus handlers through registry keys and more.
From the article:

In Windows 7 and later, you should resort to COM code-based solutions only when the static methods are insufficient.

We won't implement this directly in tao or tauri but whatever you want to do can be done through windows-rs crate, be it COM or simple registry manipulation.
I am happy to discuss this and help as much as I can over at discord. Just ping me in the Server.


[Enhancement] Simplify building with Arduino IDE

Please consider renaming Astarok.ino -> TrialsOfAstarok.ino.
Arduino IDE expects the containing folder and main .ino project file to match.

I use VSCode - you should too :)

I understand... but I feel most casual users will use the Arduino IDE to get new games on their Arduboy.
Please feel free to Close.


Update notice w/ link to release post

We need a way for notifying people that there's been a Cody release (minor version, not patch), w/ a link to an announcement post to explain what's changed. The goal being to bring people on the journey with us as we improve Cody: understand the changes, get excited, a share it with their colleagues and the world.

[x] Design
[x] Reviewed & ready to go

https://github.com/sourcegraph/cody/assets/153/bb45f229-cb55-4e94-acb7-9f6b4b61967b
Figma:

Design
Prototype

Notes:

Top position was chosen instead of bottom to avoid clashing with the command menu and stop generating button
It uses the same styles as the command popup menu aside from the border-radius
Sparkles SVG should use var(--vscode-textLink-foreground)

This is so pretty ✨

I'll get started on the frontend side of this (and #667)

Versions could also add callouts for specific big changes, e.g. recipes → commands:


JSON keys can't start with numbers

From Mattermost. Not exactly due to bids-matlab code but a behavior that could become annoying for us when dealing with some derivatives.

the bids-matlab json encode/decode functions can't handle json keys that start with numbers? This is for the simple reason that matlab struct field names can't start with numbers. I wonder if it's worth finding a workaround - this interferes with common use cases like defining a surface mesh density of, e.g., 32k, or an image resolution of 2mm.

You can use a Map object instead of a struct (see this).
>> m.data = containers.Map({'32k','2mm'},{'mesh density','image resolution'})

m =

  struct with fields:

    data: [2x1 containers.Map]

>> bids.util.jsonencode(m)

ans =

    '{"data":{"2mm":"image resolution","32k":"mesh density"}}'

You can also directly use a struct in Octave:
octave> m = struct('2mm','image resolution','32k','mesh density')
m =

  scalar structure containing the fields:

    2mm = image resolution
    32k = mesh density

octave> bids.util.jsonencode(m)
ans = {"2mm":"image resolution","32k":"mesh density"}

Decoding will be a bit more problematic as matlab.lang.makeValidName will be used to construct valid keys.
What are the actual situations where this issue arises? In the example above, 32k and 2mm look more like values than keys.

You can use a Map object instead of a struct (see this).
>> m.data = containers.Map({'32k','2mm'},{'mesh density','image resolution'})

m =

  struct with fields:

    data: [2x1 containers.Map]

>> bids.util.jsonencode(m)

ans =

    '{"data":{"2mm":"image resolution","32k":"mesh density"}}'

You can also directly use a struct in Octave:
octave> m = struct('2mm','image resolution','32k','mesh density')
m =

  scalar structure containing the fields:

    2mm = image resolution
    32k = mesh density

octave> bids.util.jsonencode(m)
ans = {"2mm":"image resolution","32k":"mesh density"}

Decoding will be a bit more problematic as matlab.lang.makeValidName will be used to construct valid keys.
What are the actual situations where this issue arises? In the example above, 32k and 2mm look more like values than keys.

Will add the relevant parts of the mattermost discussion here: (for reference).

If you look at https://bids-specification.readthedocs.io/en/stable/05-derivatives/03-imaging.html#preprocessed-coregistered-andor-resampled-volumes, the Resolution field may be an object indexed by the values of the res- entity (similarly Density and den-). If somebody uses res-1 or  den-32k, you're going to get these.

Found this: https://www.mathworks.com/matlabcentral/answers/435390-json-decode-lost-information

Seeing from other discussions that people are complaining about losing order information on parse. IIRC matlab should give you access to Java objects. Java has an insertion-ordered hash map (https://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashMap.html), in case somebody feels the urge to write a new parser.
Actually, if you're wrapping Java objects, maybe the JSON API itself makes more sense: https://www.oracle.com/technical-resources/articles/java/json.html

Will add the relevant parts of the mattermost discussion here: (for reference).

If you look at https://bids-specification.readthedocs.io/en/stable/05-derivatives/03-imaging.html#preprocessed-coregistered-andor-resampled-volumes, the Resolution field may be an object indexed by the values of the res- entity (similarly Density and den-). If somebody uses res-1 or  den-32k, you're going to get these.

Found this: https://www.mathworks.com/matlabcentral/answers/435390-json-decode-lost-information

Seeing from other discussions that people are complaining about losing order information on parse. IIRC matlab should give you access to Java objects. Java has an insertion-ordered hash map (https://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashMap.html), in case somebody feels the urge to write a new parser.
Actually, if you're wrapping Java objects, maybe the JSON API itself makes more sense: https://www.oracle.com/technical-resources/articles/java/json.html

Thanks for the extra information. So there is no particular issue if using containers.Map during encoding but decoding in MATLAB (not Octave) is potentially problematic as struct fields like 1 or 32k will be prepended with a x. While jsondecode could use containers.Map, I guess it will never happen (by default) as it would be painful to either receive struct or Map depending on the fields (given that their accessor syntax is different) or always receive a Map, which would break backward compatibility. Map is also always scalar while you can get struct arrays.
In SPM/JSONio, I added two options to have some control over the conversion. In particular, you can change the string that is prepended to the field name. You could use a prefix unique to bids-matlab to recognise when it happens and deal with it accordingly. This would force to use JSONio though, which might not be a good thing on the long run.
function json = spm_jsonread(filename, opts)
% JSON (JavaScript Object Notation) parser - a compiled routine
% FORMAT json = spm_jsonread(filename, opts)
% filename - name of a JSON file or JSON string
% json     - JSON structure
% opts     - structure of optional parameters:
%              ReplacementStyle: string to control how non-alphanumeric
%                characters are replaced {'underscore','hex','delete','nop'}
%                [Default: 'underscore']
%              Prefix: string to prepend when first character of a field is
%                not alphabetical [Default: 'x']

Concerning the comment about order, an object is an unordered set of name/value pairs so I hope BIDS and bids-matlab are not relying on any order for objects.

Thanks for the extra information. So there is no particular issue if using containers.Map during encoding but decoding in MATLAB (not Octave) is potentially problematic as struct fields like 1 or 32k will be prepended with a x. While jsondecode could use containers.Map, I guess it will never happen (by default) as it would be painful to either receive struct or Map depending on the fields (given that their accessor syntax is different) or always receive a Map, which would break backward compatibility. Map is also always scalar while you can get struct arrays.
In SPM/JSONio, I added two options to have some control over the conversion. In particular, you can change the string that is prepended to the field name. You could use a prefix unique to bids-matlab to recognise when it happens and deal with it accordingly. This would force to use JSONio though, which might not be a good thing on the long run.
function json = spm_jsonread(filename, opts)
% JSON (JavaScript Object Notation) parser - a compiled routine
% FORMAT json = spm_jsonread(filename, opts)
% filename - name of a JSON file or JSON string
% json     - JSON structure
% opts     - structure of optional parameters:
%              ReplacementStyle: string to control how non-alphanumeric
%                characters are replaced {'underscore','hex','delete','nop'}
%                [Default: 'underscore']
%              Prefix: string to prepend when first character of a field is
%                not alphabetical [Default: 'x']

Concerning the comment about order, an object is an unordered set of name/value pairs so I hope BIDS and bids-matlab are not relying on any order for objects.

One gotcha to watch out for: containers.Map is a pass-by-reference handle object, unlike regular pass-by-value Matlab arrays and objects. If you're not careful about how you mix them with regular Matlab values, you could be setting yourself or users up for subtle bugs.

One gotcha to watch out for: containers.Map is a pass-by-reference handle object, unlike regular pass-by-value Matlab arrays and objects. If you're not careful about how you mix them with regular Matlab values, you could be setting yourself or users up for subtle bugs.

Closing this.
This is mentioned in the starter kit and is a problem bigger than just bids.matlab


Bug: generateText is ignoring dynamic parameters due to a hard-coded model class

Is your feature request (or bug) related to a problem? Please describe.
In the generateText and generateMessageResponse function, the model class is currently hard-coded(gpt-4o), which prevents dynamically switching to different models based on incoming parameters. This reduces flexibility and can increase development complexity in scenarios where different models are needed.
When using a non-OpenAI AI provider, an error is reported because the gpt-4o model cannot be found.
Describe the solution you'd like

Remove the hard-coded model class reference in the generateText and generateMessageResponse function and instead use a model name/type passed in as a function parameter or configuration.
Ensure there is a sensible default value to maintain compatibility with existing functionality or cases where a specific model is not provided.

Describe alternatives you've considered

Leaving it as is would require manual code changes to switch models in different scenarios, which is not ideal.
Introducing a separate function to handle switching model classes could lead to redundant logic and increase maintenance overhead.

Additional context

Risks: This change is minor, but it’s important to check if other parts of the code depend on the old hard-coded logic.
Testing:

Test with multiple model types to confirm that the function correctly switches to the specified model.

I tried to directly modify the hard-coded gpt-4o to the incoming ModelClass, but encountered a new problem. The current TikTok Model only supports a limited number of models in a list. This modification alone will not solve the problem, and may even introduce new problems.

I had the same reverse problem actually.

was using anthropic model with generateObject and then it always failed. Worked only when I switched to using the hardcoded functions.  So as this is trimTokens that is problematic, seems to me that we should need to have some custom solution for triming. As https://www.npmjs.com/package/js-tiktoken  is openAI only and it will fail on each try to trim with other models.

I tried to directly modify the hard-coded gpt-4o to the incoming ModelClass, but encountered a new problem. The current TikTok Model only supports a limited number of models in a list. This modification alone will not solve the problem, and may even introduce new problems.

Hello! Could you clarify the issue you encountered with the TikTok Model supporting only a limited list of models? Are you referring to the trimTokens function?

similar case is with twitter agents, i am passing api key and model name in character.json but it always fall back to one api key provided in .env (gemini api key)
resulting api key gets exhausted while running multiple characters.

I tried to directly modify the hard-coded gpt-4o to the incoming ModelClass, but encountered a new problem. The current TikTok Model only supports a limited number of models in a list. This modification alone will not solve the problem, and may even introduce new problems.

Hello! Could you clarify the issue you encountered with the TikTok Model supporting only a limited list of models? Are you referring to the trimTokens function?

Yes, what I meant to say is Tiktoken. I'm sorry I wrote TikTok by mistake at first. I'm referring to the parameter model: TiktokenModel of the trimTokens method.

@FWangZil I encountered the same issue today also, trying to use anthropic with generateObject, do you have a temporary fix for this?

@FWangZil I encountered the same issue today also, trying to use anthropic with generateObject, do you have a temporary fix for this?

Sorry, I haven't found a particularly good method yet, because models other than openai seem to be outside the allowed range of TiktokenModel and need to be modified or processed in other ways.

@FWangZil I encountered the same issue today also, trying to use anthropic with generateObject, do you have a temporary fix for this?

Sorry, I haven't found a particularly good method yet, because models other than openai seem to be outside the allowed range of TiktokenModel and need to be modified or processed in other ways.

Apologies for the delayed response; I was busy with another task. I've created a PR: https://github.com/elizaOS/eliza/pull/1605/. Could you test it to see if it resolves your issue?
I used the AutoTokenizer from Hugging Face's transformers library to handle non-tiktoken models. You'll need to set the environment variable for your custom tokenizer. You can find the model you need here: https://huggingface.co/models?sort=trending
For example:
env
TOKENIZER_MODEL="Xenova/claude-tokenizer"
TOKENIZER_TYPE="auto"

@impozzible, please kindly try the PR and see if it fixes your issue.


not working with Trait

Loading model 'Cars\ItemsTrait'
Class Cars\ItemsTrait does not exist

trait code
<?php

namespace Cars;

trait ItemsTrait {
...

using in models
<?php

namespace Cars;

class Disc extends \MyEloquent {

    use ItemsTrait;
...

may i ask: i.e. "notifyNow" is unknown:
$order->user->notifyNow(new ReservationCanceled($order));
but the parser should be able to see use Notifiable;  inside the model and "could" add:
* @method notifyNow(Notification $notification, array $channels)
 * @method notify(Notification $notification)
 * @method routeNotificationFor($driver, Notification $notification)

because phpstorm still seems to have a problem with traits inside traits when it comes to code-completion,
this would be a nice help....

because phpstorm still seems to have a problem with traits inside traits when it comes to code-completion,

Never heard of this. Do you have a bug reference?

$order->user

Can you please share relevant parts from the Order model? phpdoc and relation definition.
IMHO this should work. Having the Notifiable on a model certainly correctly autocompletes ->notifyNow(), and all the others you mentioned, for me:

This using the latest PhpStorm (EAP, but pretty sure this worked regularly before already)
And in fact I would argue, this works unrelated to the ide-helper; this is just regular PHP.

@mfn sure, i have found this: https://youtrack.jetbrains.com/issue/WI-30885 - and because autocomplete (in latest EAP) is not working for me, i was sure that´s because of this old bug. but when it´s working for u, it´s great 😁 which version are u using ???

@mfn so i am doing something wrong accessing the user... maybe u can identify my problem within that screenshot:

but also not working with:

seems like something is buggy with my phpstorm 😢

@mfn can u pease test something for me ?
when u go into the file: \vendor\laravel\framework\src\Illuminate\Notifications\Notifiable.php
are u able to show the usage of RoutesNotifications ??

i did a "invalidate cache / restart" and ....

okay... wow... shit... 😖
@mfn pardon, if i may ask: does this work for u without any phpdoc:

because for me it´s only working with /** @var kuchen_order $order */ and i am so confused right now, that i don´t know if that is "okay" or if phpstorm should be able to handle that, too - without any extras.
thanks!!

In your last case, without /** … */ I would assume you don't even get ->user autocomplete from $order because the IDE doesn't know that.
Interestingly, your code shows an anti-pattern:
mode::where()->with()->get()->first();

->get()will fetch all matching results
->first() will return the first from the in memory collection ⬅ not so good ❗

More idiomatic would be to simply do:
mode::where()->with()->first();

because then internally it will use limit.
Of course if you know that whereKoId() will only match one entry all the time, it probably does not matter.
However: when you use the second approach, the IDE does know you will get back a post 😄
The issue is that the first call after ->with() is on the query builder related classes which have proper phpdoc that they return static, i.e. a version of the model itself:

If we look at the same for ->first() of the collection class, it's just "mixed" and that's why the IDE "looses" the information. From \Illuminate\Support\Collection::first:

Neither PhpStorm nor Laravel have much in place here to support Generics, so this is a fix for another time (PhpStorm will receive support for this in the next major version AFAIK).
Something else: your custom phpdoc it not quite right. Technically first() always returns your "fact or null", so it would be rather:
/** @var Model|null $yourModel */

HTH!

wow, many many thanks for this great explanation! I learned something 😊👍


fallback for non-sse response

Description

Solution for https://github.com/nomic-ai/gpt4all/issues/2174, gpt4all doesn't support SSE, this is a fallback in case the response is non-SSE.

Checklist

[x] The base branch of this PR is dev, rather than main
[x] The relevant docs, if any, have been updated or created

Screenshots
continue.dev loading from gpt4all

gpt4all logs

Testing

start gpt4all with the server mode.
in continue.dev use it as an OpenAI compatible provider.
ask something, it should respond.

@raja-jamwal thanks for taking the time to look into this!
I am slightly concerned about the complexity that this adds, just to account for a special case with GPT4All. My preference would be to make an entirely new provider for GPT4All because it isn't in the true sense "OpenAI-compatible".
This would mean adding a new file in the same folder as OpenAI.ts, which can implement similar code to OpenAI, or subclass it where appropriate. Would you be interested in trying this?

Yes, that makes more sense. I'll make those changes.

Hi @raja-jamwal, just wanted to check in, have you had a chance to take a look at this?

I'm going to close this for now, but let me know if you have the chance to take another look and we can re-open!


[Solution] Added non-passive event listener warning in Chrome

This warning can simply be fixed, as of version 5.62.0 by changing the line 536 in codemirror/lib/codemirror.js
From
emitter.addEventListener(type, f, false);

To
emitter.addEventListener(type, f, {passive: false});

Will that not cause IE to set useCapture to true for the listener?

would be great if it can be fixed message in console:
[Violation] Added non-passive event listener to a scroll-blocking  event. Consider marking event handler as 'passive' to make the page more responsive. See


Show/Hide menus in navbar depending on the user roles

It would be important for the menu item to disappear or appear based on permission.
How could this be solved?
Example:
All menu items: Dashboard, Permissions, Roles, Users
The Super Administrator role can see all menu items (Dashboard, Permissions, Roles, Users)
The Admin role must see the Dashboard and Users menu items
The Writer role must see the Dashboard menu item

Thank you very much. I look forward to the update. Can I invite you for a coffee?

hola buen dia,
me da el siguiente error:
"A admin menu not exists."
como podria resolverlo?
gracias!

@juanjuan77 make sure to run the migration with the seeder.
./vendor/bin/sail artisan vendor:publish --provider="BalajiDharma\LaravelMenu\MenuServiceProvider"
./vendor/bin/sail artisan migrate --seed --seeder=AdminCoreSeeder

Added roles for menu item. Also, displayed menu based on roles

My sidebar menu doesn't appear

Go to admin panel on http://localhost/admin


Async Swift Action and Promise/Future

@JacopoMangiavacchi commented on Thu Apr 07 2016
Current Swift support is limited to synchronous action.  It should be nice to support GCD queue capabilities and implement a Whisk Swift API based on Promise/Future pattern such as BrightFutures https://github.com/Thomvis/BrightFutures

Async Swift is now possible by using Swift 4.1 and completion handler.


Refactor common build opts, build robin_map without -fexceptions

-fexceptions seems to be the default for gcc and clang, anyways.
The common options are factored out into a new helper function, with the option of a mode argument, which is either user-facing (the default, adds -fno-stack-protector on Unix systems) or lib-facing (no-op).

Addendum: -ffunction-sections and -fdata-sections were removed from the common options, since they are given with compilation_mode=opt.


Changes the AP properties on Actor type to be Uris

The ActivityPub spec on W3C is great and all, but it has some real issues with specificity. It says the AP properties are links, although in one case, Inbox, it calls it a 'reference'. So I get why I see a bunch of implementations that make it a Link. But when you actually try and integrate with other systems, they all assume inbox, outbox, following, followers, and liked are just strings containing a url. Mastodon, for example, cannot parse a profile if these properties come as Link types. Fedify-based services also won't parse a profile unless these properties are url strings.

Did you find out that the library already automatically converts strings to links in these contexts?

I'm talking about generating profiles using this library. Yes, the library parses IRI strings to Link objects when it deserialises JSON into the various AS types.
However profiles generated by the library are only written with IRI strings for these properties if you manually set JsonLDContext for them to null. Because the JsonLdContext property defaults to a non-empty value it means LinkConverter always writes a full Link object. Reference ActivityPub services like Mastodon and Fedify refuse to parse the Actor object if Inbox, Outbox, Following, etc are Links.
I can see the actor profile for your bot generates with just the IRI string, although when I run it locally it generates Link objects. SO ¯_(ツ)_/¯
Incidentally, Evan Prodromou's recently published ActivityPub book says Inbox, Outbox, etc are Objects and consuming systems should be ready to parse an Object or just an IRI. Fedify at least refuses to parse an actor profile if those properties are Objects. 😩 I didn't try Mastodon.
I pulled the PR because for my own implementation I am just setting JsonLdContext to null for all of the child properties. At least until I stop being slightly mad at how W3C TRs are consistently under-written.

That would certainly solve the problem I am facing. I keep looking for, and not finding, a solution that involves not creating locally scoped contexts for each object in the document, or at least requiring an intentional creating of a scope to start a new scope.


feat(model): improve shader selection logic

This PR upgrades @wowserhq/format to the latest version, and switches out incomplete shader selection logic in favor of the shader selection logic available in the latest version of @wowserhq/format.
This PR also introduces an initial implementation of env-mapped texture coordinate generation, and adds more fragment shaders for different texture combiner operations.

Codecov Report
Attention: 8 lines in your changes are missing coverage. Please review.

Comparison is base (74e7764) 7.01% compared to head (25d5fec) 7.26%.

Files
Patch %
Lines

src/lib/model/shader/vertex.ts
0.00%
5 Missing and 1 partial :warning:

src/lib/model/shader/fragment.ts
0.00%
1 Missing and 1 partial :warning:

Additional details and impacted files
@@           Coverage Diff            @@
##            main     #57      +/-   ##
========================================
+ Coverage   7.01%   7.26%   +0.24%
========================================
  Files         57      56       -1
  Lines       2166    2092      -74
  Branches     352     325      -27
========================================
  Hits         152     152
+ Misses      1786    1729      -57
+ Partials     228     211      -17

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


mjml-button is not working in Outlook Mail (live.com)

Code used:
<mjml>
  <mj-body>
    <mj-container background-color="#ecf0f1">
      <mj-section padding-bottom="0" padding-top="30px">
        <mj-column background-color="#fff">
          <mj-image padding-top="60px" padding-left="30px" padding-right="30px" src="images/headline01.png" alt=""></mj-image>
          <mj-text padding-top="10px" padding-bottom="10px" font-family="Helvetica,Arial,sans-serif" font-size="30px" padding-left="30px" padding-right="30px" line-height="120%" align="center" color="#00285b">Foo bar
          </mj-text>
          <mj-text padding-top="10px" padding-bottom="10px" padding-left="30px" padding-right="30px" font-family="Helvetica,Arial,sans-serif" font-size="18px" line-height="120%" align="center" color="#333333">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
          </mj-text>
          <mj-text padding-bottom="15px" padding-top="10px" padding-left="30px" padding-right="30px" font-family="Helvetica,Arial,sans-serif" font-size="14px" line-height="120%" align="center" color="#7f8d8e">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
          </mj-text>
          <mj-button padding-bottom="50px" padding-top="0" padding-left="30px" padding-right="30px" background-color="#8aba14" href="#" border-radius="17px">READ MORE</mj-button>
        </mj-column>
      </mj-section>
    </mj-container>
  </mj-body>
</mjml>

Issue in Outlook Mail:
Content inside the button has dissapeared and most of the following HTML is distorted.
Side-by-side view:

Hey @TisLars, please add a valid href to your button and it should work correctly. Outlook breaks on invalid hrefs.

Indeed, Outlook.com doesn't allow to distinguish between its mobile and desktop clients, so we're displaying the mobile version by default (you can find more info here: https://github.com/mjmlio/mjml/issues/717#issuecomment-308349095).
However, the section shouldn't overflow outside of the container like it is in your screenshot. Which version of Outlook.com are you using?
You can see a Litmus test here: https://litmus.com/checklist/emails/public/960726c#chromeoutlookcom

I am using the live web-version of Outlook Mail in Chrome. Most likely it has to do with the difference in service we used to sent the newsletter. You used Litmus (I guess) and I used Campaign Monitor.
However, thank you for answering both questions and referring me to the more detailed explanation. So far this framework is very solid and enjoyable!

Ha thanks, probably due to Campaign Monitor indeed then! I didn't know about CM altering the HTML, please share any info you might find about what changes they make, it's always useful to help other members that would have the same issue.
I'm closing as I think your question is answered!

is not working for outlook in windows 10
I need to manually update the code to

         Google link

to make it work
can this be fixed?
thanks
original code https://mjml.io/try-it-live/r18ndeHsL

@klepon can you highlight what has been changed in your code ?
@ngarnier maybe that could be included in the code generation of mj-button tag to extend responsiveness on Mail from Windows 10 ?

We won't use vml for button because then you can't use them in section with background as VML can't be nested. Current implementation of mj-button is the best trade off we could have between compatility and features


Corn Flake value's off

Hi, love your mod! I have been using it for quite awhile since i started the workshop.
The base value of the corn flakes is off by a bit. Just an update of the value from 42 to 52 under ItemStaticData.cs should do the trick.

Thanks! Happy to hear you're finding it useful.
Good catch, fixed.  Pull Request for <IP_ADDRESS> sent for main repo and should be live after they approve it.
Thanks again!


Add support for external Fabric networks

We've had support for external Ethereum RPC nodes for a while now, but we've never had full support for external (not generated by the FireFly CLI) Fabric networks. There's still a fair amount of manual config editing necessary to create a Fabric Common Connection Profile, but I am not aware of any tooling that can autogenerate that at the moment.
There is a corresponding tutorial for using this new capability here:
https://github.com/kaleido-io/firefly/blob/fabric-test-network-tutorial/docs/tutorials/chains/fabric_test_network.md
This PR also splits out the init command into two subcommands so we can keep Ethereum and Fabric specific flags separate. The new commands are:

ff init ethereum ...
ff init fabric ...

The existing ff init command continues to maintain backwards compatibility for now, but new flags going forward will be added to the newer, more specific subcommands.

Poke for running GitHub actions


[tool_crash] FileSystemException: Cannot create file, path = 'E:\formations[FreeCourseSite.com] Udemy - The Complete Flutter UI Masterclass  iOS & Android in Dart\02 Food Delivery App\002 flutter-food-delivery-ui-starter\flutter_food_delivery_ui\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java' (OS Error: Le chemin d’accès spécifié est introuvable., errno = 3)

Command
flutter --no-color run --machine --track-widget-creation --device-id=emulator-5554 lib\main.dart

Steps to Reproduce

...
...
...

Logs
FileSystemException: FileSystemException: Cannot create file, path = 'E:\formations[FreeCourseSite.com] Udemy - The Complete Flutter UI Masterclass  iOS & Android in Dart\02 Food Delivery App\002 flutter-food-delivery-ui-starter\flutter_food_delivery_ui\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java' (OS Error: Le chemin d’accès spécifié est introuvable.
, errno = 3)
#0      _File.throwIfError (dart:io/file_impl.dart:645:7)
#1      _File.createSync (dart:io/file_impl.dart:283:5)
#2      ForwardingFile.createSync (package:file/src/forwarding/forwarding_file.dart:24:16)
#3      ForwardingFile.createSync (package:file/src/forwarding/forwarding_file.dart:24:16)
#4      _renderTemplateToFile (package:flutter_tools/src/plugins.dart:27:8)
#5      _writeAndroidPluginRegistrant (package:flutter_tools/src/plugins.dart:641:3)
#6      injectPlugins (package:flutter_tools/src/plugins.dart:1079:11)
#7      FlutterProject.ensureReadyForPlatformSpecificTooling (package:flutter_tools/src/project.dart:232:11)
<asynchronous suspension>
#8      FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:707:21)
<asynchronous suspension>
#9      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:619:33)
<asynchronous suspension>
#10     FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart)
#11     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:29)
#12     _rootRun (dart:async/zone.dart:1184:13)
#13     _CustomZone.run (dart:async/zone.dart:1077:19)
#14     _runZoned (dart:async/zone.dart:1619:10)
#15     runZoned (dart:async/zone.dart:1539:10)
#16     AppContext.run (package:flutter_tools/src/base/context.dart:149:18)

[✓] Flutter (Channel stable, v1.17.0, on Microsoft Windows [version 10.0.18363.900], locale fr-FR)
    • Flutter version 1.17.0 at C:\Users\eugen\Documents\tools\flutter_windows_1.17.0-stable\flutter
    • Framework revision e6b34c2b5c (6 weeks ago), 2020-05-02 11:39:18 -0700
    • Engine revision 540786dd51
    • Dart version 2.8.1

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at C:\Users\eugen\AppData\Local\Android\sdk
    • Platform android-29, build-tools 29.0.3
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
    • All Android licenses accepted.

[✓] Android Studio (version 3.5)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 44.0.1
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)

[!] IntelliJ IDEA Ultimate Edition (version 2019.1)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA 2019.1.2
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • For information about installing plugins, see
      https://flutter.dev/intellij-setup/#installing-the-plugins

[✓] VS Code (version 1.46.0)
    • VS Code at C:\Users\eugen\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.11.0

[✓] Connected device (1 available)
    • Android SDK built for x86 • emulator-5554 • android-x86 • Android 8.1.0 (API 27) (emulator)

! Doctor found issues in 1 category.

Flutter Application Metadata
Type: app
Version: 1.0.0+1
Material: true
Android X: false
Module: false
Plugin: false
Android package: null
iOS bundle identifier: null
Creation channel: stable
Creation framework version: 1aedbb1835bd6eb44550293d57d4d124f19901f0

possibly related to
https://github.com/flutter/flutter/issues/58529
https://github.com/flutter/flutter/issues/58928
https://github.com/flutter/flutter/issues/20579 (closed)
https://github.com/flutter/flutter/issues/50880

I'm closing this as a duplicate of #50880. @ndjaka you can fix this by moving your Flutter app to a directory that your user has write permissions to.


ask for server address

You should take into account that not all installations use an url path like the one in your script: phpMyAdmin
For example, my provider has installed it on https://my.server.domain/database/phpmyadmin
(see subpath database, plus lowercase letters phpmyadmin)
So I recommend you fix the script to ask server full address, instead of using server IP/port

I'll consider this and write some documentation...


AcceptSDKHandler: Cannot find Swift declaration

I have installed through pod. Imported the AcceptSDK but getting this error.
'AcceptSDKHandler' is unavailable: cannot find Swift declaration for this class
I am not able to  figure out what's wrong

Could you please try on device instead of Simulator?

Thanks. It worked


Refactor all occurrences of AddressBook to TaAssist.

Resolves #26. Changes are only in source code, not in docs.

Codecov Report
Base: 70.54% // Head: 70.54% // No change to project coverage :thumbsup:

Coverage data is based on head (4708bfc) compared to base (1a0044e).
Patch coverage: 78.94% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff            @@
##             master      #73   +/-   ##
=========================================
  Coverage     70.54%   70.54%
  Complexity      399      399
=========================================
  Files            73       73
  Lines          1263     1263
  Branches        128      128
=========================================
  Hits            891      891
  Misses          339      339
  Partials         33       33

Impacted Files
Coverage Δ

src/main/java/seedu/taassist/AppParameters.java
75.00% <ø> (ø)

src/main/java/seedu/taassist/Main.java
0.00% <ø> (ø)

src/main/java/seedu/taassist/MainApp.java
0.00% <0.00%> (ø)

.../main/java/seedu/taassist/commons/core/Config.java
68.18% <ø> (ø)

.../java/seedu/taassist/commons/core/GuiSettings.java
69.23% <ø> (ø)

...n/java/seedu/taassist/commons/core/LogsCenter.java
78.37% <ø> (ø)

...ain/java/seedu/taassist/commons/core/Messages.java
0.00% <ø> (ø)

...main/java/seedu/taassist/commons/core/Version.java
82.50% <ø> (ø)

.../java/seedu/taassist/commons/core/index/Index.java
100.00% <ø> (ø)

...st/commons/exceptions/DataConversionException.java
100.00% <ø> (ø)

... and 63 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


PyPi module update

At the moment, the version available on Pypi is version 0.5.1 (dated 2015-08-25)
Is it possible to generate a new version and to make it available on Pypi please ?
Or let me know the process to make it :)
Thx !

Has this project been abandoned?


playground: parse error when formatting a type alias

The Go playground can compile a program that uses a type alias, but cannot format it.
For example: https://play.golang.org/p/ZNNB8i24zR
Run prints: 42
Format prints: prog.go:4:9: expected type, found '=' (and 1 more errors)

@broady, can you show @andybons how to fix this?

This is #21645

Thanks, closing this as a dup and metadata-ified that one.


The SolutionDir property is different from the MSBulid output

The SolutionDir property does not end with a directory separator. This is different than how MSBuild sets this property:

In ProjectAnalyzer the Path.GetDirectoryName API is used. This does not append the directory with the directory separator.

Note: fix is in PR #148

Thanks!


Using same method names breaks schema with UseOffsetPaging in v13

Is there an existing issue for this?

[X] I have searched the existing issues

Product
Hot Chocolate
Describe the bug
When having two methods with the same name in a query class, UseOffsetPagingAttribute seems to reuse the CollectionSegment, resulting in an invalid schema if these methods return different types.
I have noticed that this is mentioned as a breaking change in v13, however I would say that this change is actually also unexpected and unwanted behavior. This is especially the case when removing the UseOffsetPagingAttribute, then suddenly the schema does follow the return type (or better explained when you want to go from non-paged to paged by adding the attribute, and then not notice that the type is incorrect).
And yes, I have noticed the InferCollectionSegmentNameFromField setting, but I would rather not have to explicitly set a behavior for something that shouldn't be a problem in the first place (not mentioning the fact that I don't know if this option will be removed in the future or not). Also, this property only seems to exist as a global setting, and not in the UseOffsetPagingAttribute as the migration docs seem to suggest.
Steps to reproduce
Have the following code and generate or browse the schema:
public class Dog
{
    public string DogName { get; set; } = null!;
}

public class Cat
{
    public string CatName { get; set; } = null!;
}

public class AnimalQuery
{
    [UseOffsetPaging(IncludeTotalCount = true, MaxPageSize = 100)]
    public IQueryable<Dog> GetCats()
    {
        throw new NotImplementedException();
    }

    public InnerFixedQuery Fixed { get; set; } = new();
}

public class InnerFixedQuery
{
    [UseOffsetPaging(IncludeTotalCount = true, MaxPageSize = 100)]
    public IQueryable<Cat> GetCats()
    {
        throw new NotImplementedException();
    }
}

Observe that both the endpoints have the CatsCollectionSegment, whereas v12 would generate DogsCollectionSegment and CatsCollectionSegment.
Note that Dogs and Cats are just for demonstration purposes, we internally reuse certain words as methods like GetMetrics in different subqueries with different return types, which explains the use case a lot better.
Relevant log output
No response
Additional Context?
No response
Version
13.0.5

The reason for this are aggregations. When putting aggregations on the paging types its important to know the context which is better inferred from the field.
However, you can override this behavior globally and per field and even override the name of the connection.
This is not a bug but gives more control to the implementor. This change has been done to the cursor pagination now for over a year and this change just aligns both variants.
I am closing this issue as it is not a bug.
In order to change default behavior do this:
.SetPagingOptions(new() { InferConnectionNameFromField = false });

Odd design decision because in my opinion there's no gain on either variant, and there are downsides to both. And because InferConnectionNameFromField is actually not available on UseOffsetPagingAttribute (as I've also mentioned in my message) it really felt like an oversight.


[Feature Request] Pull the Outline of the explanatory memorandum

Problem
Not enough useful information in app to persuade users to engage with the bill
Solution
Pull the outline of the explanatory memorandum

This may be outside the scope of ausbills and should be up to the user to get this.

Out of scope


Try to scale down Prometheus and alertmanager replica

Right now when user enable monitoring then the alertmanager and Prometheus statefulset have 3 and 2 replica sets, which doesn't make sense for single node cluster, try to check if we can able to set those replica to 1 without CVO overrides.
NAME                                 READY   AGE
statefulset.apps/alertmanager-main   3/3     3m14s
statefulset.apps/prometheus-k8s      1/2     3m13s

https://github.com/openshift/cluster-monitoring-operator/pull/1077 something automatic happen on 4.8 time frame.

https://github.com/openshift/cluster-monitoring-operator/pull/1077 is merged and with 4.8 there will be only single replica for prometheus and alertmanager.