The ISO does not install anything to c: so are we supposed to run inside the E: drive letter every time?

I don't understand. Mount the EWDK_ni_release_svc_prod1_22621_220804-1759.iso, run SetupVSEnv and then invoke devenv.exe from there. Are we supposed to do this every time? Is there not a way to install to the hard drive?

It doesn't install anything, it is a standalone build environment. Yes you need to run the setup script(s) in each shell that is going to use the kit. It is ideal for build machines, but I also use it as a standard dev environment within vscode.

I've been fighting VS 2022 install issues. I installed it about a year ago. Now it's all changed. I can see how MSFT might love a mounted ISO solution - read-only, never corrupted, but I would hope that MSFT would also provide a script to use to invoke VS 2022 with the ISO. I'm looking at making it mount at a fixed drive letter so all my peers can do the same thing. E: may move around, etc. To answer your question, yes, please say something - maybe HollisTech or someone could provide a sample script to use as a VS 2022 shortcut - but the way it stands, it's a bit unclear

@markyoung2u  the setupVSEnv.cmd script in BuildTools is intended to launch a shell from which you can start VisualStudio with the proper environment set.. You first run SetupBuildEnv.cmd, then SetupVSEnv.cmd. However be warned that each EWDK release is tied to a specific version of VS, so using it this way puts you back to having a specific VS version dependency. This is why I use it with VSCode instead. That way I can have any version of VS installed on my build system and still have a complete control of which version of the WDK I am using. Best of both worlds as far as I am concerned.  As far as detecting the EWDK volume path, that is as trivial as searching for a path :\EWDK\BuildEnv, i.e.

Get-PSDrive -PSProvider 'FileSystem' | ForEach-Object {
        $drv = "$($_.Name):"
        if (Test-Path -Path "$drv\EWDK\BuildEnv" -PathType Container) {
             $script:defaultProfessionalToolsPath = "$drv\EWDK\BuildEnv"
              Write-Host "EWDK found at $drv\EWDK"
              break
         }
 }

Maybe this not the right forum but a big part of this is that I cannot seem to get the entire ISO downloaded. I was not even aware there was any issue as EDGE gave me no indication the 1st time that I did not get entire 15.9 GB image when I only got 9GB
9,287,778,304 EWDK_ni_release_svc_prod1_22621_220804-1759.iso
I moved/saved that iso and tried again and got an image just less than 9GB (again with EDGE). I tried 3rd time with Chrome and got 9,998,090,239 EWDK_ni_release_svc_prod3_22621_230511-2102.iso (newer 17.1.6 version) but neither 2nd nor 3rd version can be mounted, File Explorer says they are corrupt why I try to mount, but neither Edge nor Chrome gave me any download error message? Is there some way of downloading more reliably on a home 6 MBs network than using a browser? Can I somehow use robocopy?

Welcome to the world where you are disadvantaged if you do not have gigabps internet and software is compiled, released and ‘tested in production’…
I have 3mbs (per channel)and for a long time the only successful way I have been able to download ISO’s and memory dumps is to RDC to a well connected machine (aws will do it) download there and then zip into a multiparty (75kb per part) file.  Then use onedrive to transfer that locally - onedrive is better at picking up from where it left off and if you lose 50kb it’s not the end of the world.  It also understand how to drive multiple channels (so I can max out both my 3mbs ADSL links)
Note that edge and chrome are the same thing these days. You might get more robust results with cUrl but it sounds like you link is bouncing.  Firefox is another idea
good luck

I came into work and downloaded for 4th time. Even here it got a Network Error mid-download. I saw it and clicked a "|>" button to Resume (never saw this before, wondering if it just goes away by itself?). It appeared to pick up where it left off and this time it completed, and I got the full ISO: 17,045,657,600 EWDK_ni_release_svc_prod3_22621_230511-2102.iso. I was able to mount it and invoked devenv.exe from the D: drive that the ISO mounted to, but the download page says it's supposed to be 17.1.6 but it reports 17.1.5 ?

So sorry this has been such an ordeal @markyoung2u.
If you have any suggestions or recommendations specific to the docs, anything we could include that might help the next person to come down this path, please do me know.  Happy to leave this issue open a bit since it seems it's been useful to interact.  I wonder if you might get more results by trying a wider forum, for example:

windows-hardware-wdk
OSR's NTDEV forum

MSFT should clarify this is not an installation step at all, it is something you must do every time you want to work on a driver with VS 2022. I.e. downloading the ISO is the install part, the rest is the execute-every-time part.
Even on a high-speed connection the almost 16GB download gets and error (but can be resumed successfully) and on slower connections it simply does not work. I'm sure can understand that a warning should be added to save thousands of man hours chasing down issues if it actually mounts but is not the full image, or retrying the download if mounting reports a corrupted image. This is especially bad since so many people work from home now. Please provide a direct link so something like robocopy can download, verify, and restart where it left off on errors, etc.
Fix the secondary step https://learn.microsoft.com/en-us/legal/windows/hardware/enterprise-wdk-license-2022 to change "17.1.6 (Recommended)" to "17.1.5 (Recommended)" or fix the ISO itself to actually report 17.1.6
Ted, I appreciate your wanting to get this resolved, as do I. I'm still not 100% successful after weeks of working on this and the end is still not in sight...

Hi Mark, I've just pushed an update to https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk#enterprise-wdk-ewdk that clarifies which is the part to execute every time.
I did download the one labelled 17.1.6 myself and was able to reproduce the behavior you saw, i.e. after I downloaded it and mounted it, the command prompt that came up said 17.1.5.  I'm reaching out internally to see what we can do about that.

I could not see any change you made?

I noticed the link https://learn.microsoft.com/en-us/visualstudio/releases/2022/system-requirements has 17.5 as the latest, not 17.6 although 17.6 and  future 17.7 are mentioned later

Visual Studio 2022 version 17.5 Release Notes

I've always thought "Enterprise WDK (EWDK)" was not labeled "Step 4" because it is optional, not needed if you do not develop drivers, but maybe it could be added. Just an idea, not asking for it.

I looked at links and was trying to figure out the .NET Framework version. Below says to look at registry "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" and next para talks about the "Release" REG_DWORD value, but should be Client\Release. My value 533325 indicates .NET Framework 4.8.1
https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed

HollisTech - Have you actually tried win11 with VS 2020 mounted the ISO and compiled a driver?

Hi @markyoung2u,
On https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk#enterprise-wdk-ewdk, I added the sentence that starts "Once you have downloaded the ISO" to indicate that the download is a one-time operation and is then followed by the steps to repeat each time you want to build.  I also added step 5 about ejecting the ISO to make it clear that these steps are repeatable.
You're right that EWDK is not labelled step 4 because it's an alternate way to use the kit.  I added a sentence just below the heading to indicate that it is an alternative.
Thanks again for letting us know, we've updated https://learn.microsoft.com/en-us/legal/windows/hardware/enterprise-wdk-license-2022 to indicate that the first link is indeed 17.1.5.
Finally, https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed is owned by a different documentation team (and is sourced out of a different repo).  If you would like to alert them to the issue you found there, you can select "Submit and view feedback for This page" at the bottom of that page.
On behalf of the driver doc team, thanks again for reaching out and best of luck sorting through these issues.  Again, the forums I linked to above can be quite helpful for this type of query.

I have been under impression that EWDK is needed to build drivers, now you are telling me it is an alternate way. I will pursue this elsewhere, you can close this issue
Mark
From: Ted Hudek @.>
Sent: Wednesday, June 7, 2023 6:46 PM
To: MicrosoftDocs/windows-driver-docs @.>
Cc: Young, Mark A @.>; Mention @.>
Subject: Re: [MicrosoftDocs/windows-driver-docs] The ISO does not install anything to c: so are we supposed to run inside the E: drive letter every time? (Issue #3506)
[EXTERNAL EMAIL]
Hi @markyoung2u [github.com]https://urldefense.com/v3/__https:/github.com/markyoung2u__;!!LpKI!j5hdKA9Xeui27zDzowab0CzKdsKyNczDMXnOY38e3PzeS8DwqnsTa1qbpDsXBVsNBvToexZ4Xce9uHuGn-S8mrxY8sw$,
On https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk#enterprise-wdk-ewdk [learn.microsoft.com]https://urldefense.com/v3/__https:/learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk*enterprise-wdk-ewdk__;Iw!!LpKI!j5hdKA9Xeui27zDzowab0CzKdsKyNczDMXnOY38e3PzeS8DwqnsTa1qbpDsXBVsNBvToexZ4Xce9uHuGn-S8d6PJXas$, I added the sentence that starts "Once you have downloaded the ISO" to indicate that the download is a one-time operation and is then followed by the steps to repeat each time you want to build. I also added step 5 about ejecting the ISO to make it clear that these steps are repeatable.
You're right that EWDK is not labelled step 4 because it's an alternate way to use the kit. I added a sentence just below the heading to indicate that it is an alternative.
Thanks again for letting us know, we've updated https://learn.microsoft.com/en-us/legal/windows/hardware/enterprise-wdk-license-2022 [learn.microsoft.com]https://urldefense.com/v3/__https:/learn.microsoft.com/en-us/legal/windows/hardware/enterprise-wdk-license-2022__;!!LpKI!j5hdKA9Xeui27zDzowab0CzKdsKyNczDMXnOY38e3PzeS8DwqnsTa1qbpDsXBVsNBvToexZ4Xce9uHuGn-S8o4rPsGY$ to indicate that the first link is indeed 17.1.5.
Finally, https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed [learn.microsoft.com]https://urldefense.com/v3/__https:/learn.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed__;!!LpKI!j5hdKA9Xeui27zDzowab0CzKdsKyNczDMXnOY38e3PzeS8DwqnsTa1qbpDsXBVsNBvToexZ4Xce9uHuGn-S8LzVFQDE$ is owned by a different documentation team (and is sourced out of a different repo). If you would like to alert them to the issue you found there, you can select "Submit and view feedback for This page" at the bottom of that page.
On behalf of the driver doc team, thanks again for reaching out and best of luck sorting through these issues. Again, the forums I linked to above can be quite helpful for this type of query.

Reply to this email directly, view it on GitHub [github.com]https://urldefense.com/v3/__https:/github.com/MicrosoftDocs/windows-driver-docs/issues/3506*issuecomment-1581661085__;Iw!!LpKI!j5hdKA9Xeui27zDzowab0CzKdsKyNczDMXnOY38e3PzeS8DwqnsTa1qbpDsXBVsNBvToexZ4Xce9uHuGn-S88p9uzq8$, or unsubscribe [github.com]https://urldefense.com/v3/__https:/github.com/notifications/unsubscribe-auth/AD4U6G6SWWRG56O7W2FHRJLXKEHDZANCNFSM6AAAAAAYQHFGHY__;!!LpKI!j5hdKA9Xeui27zDzowab0CzKdsKyNczDMXnOY38e3PzeS8DwqnsTa1qbpDsXBVsNBvToexZ4Xce9uHuGn-S8OX3QhV4$.
You are receiving this because you were mentioned.Message ID: @.***>
Internal Use - Confidential


add click-to-open commands for Zed and Emacs

I got this set up for folks at work and needed to find a couple more click-to-open commands. If you'd like, here they are!

Awesome! Thank you!


tests(*) plugin schema helper

Summary

Override Entity.new_subschema in schema instance returned by Entity.new
Use Entity.new to instantiate plugins schemas in spec helpers

These changes allow the helper validate_plugin_config_schema to be consistent with how plugins schemas are loaded in the plugins DAO. In particular, this fixes an issue where default values for nested records are not populated in the entity validated and returned by validate_plugin_config_schema.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

I discussed these changes with @gszr — patch looks good, waiting for CI.


fix(site-config.js): Adding config file for customzing new apps

:tada: This PR is included in version 1.1.4 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Falco runtime error in k8s_replicationcontroller_handler_state for large k8s clusters (400+ nodes)

Describe the bug
We upgraded from falco:0.28.1 to falco:0.31.0 due to this bug in large k8s environments and we seem to have hit a new runtime error. We're now seeing:
* Setting up /usr/src links from host
* Running falco-driver-loader for: falco version=0.31.0, driver version=319368f1ad778691164d33d59945e00c5752cd27
* Running falco-driver-loader with: driver=module, compile=yes, download=yes
* Unloading falco module, if present
* Looking for a falco module locally (kernel 5.4.149-73.259.amzn2.x86_64)
* Trying to download a prebuilt falco module from https://download.falco.org/driver/319368f1ad778691164d33d59945e00c5752cd27/falco_amazonlinux2_5.4.149-73.259.amzn2.x86_64_1.ko
* Download succeeded
* Success: falco module found and inserted
Rules match ignored syscall: warning (ignored-evttype):
         loaded rules match the following events: access,brk,close,cpu_hotplug,drop,epoll_wait,eventfd,fcntl,fstat,fstat64,futex,getcwd,getdents,getdents64,getegid,geteuid,getgid,getpeername,getresgid,getresuid,getrlimit,getsockname,getsockopt,getuid,infra,k8s,llseek,lseek,lstat,lstat64,mesos,mmap,mmap2,mprotect,munmap,nanosleep,notification,page_fault,poll,ppoll,pread,preadv,procinfo,pwrite,pwritev,read,readv,recv,recvmmsg,select,semctl,semget,semop,send,sendfile,sendmmsg,setrlimit,shutdown,signaldeliver,splice,stat,stat64,switch,sysdigevent,timerfd_create,write,writev;
         but these events are not returned unless running falco with -A
2022-02-17T22:44:13+0000: Runtime error: SSL Socket handler (k8s_replicationcontroller_handler_state): Connection closed.. Exiting.

We downgraded to falco:0.30.0 which does not have the runtime error.
How to reproduce it
Upgrade to falco:0.31.0 and scale your Kubernetes cluster to around 400 nodes.
Expected behaviour
No runtime error
Screenshots

Environment

Falco version: 0.31.0

System info:

Cloud provider or hardware configuration: EKS v1.21.2 / ec2 instance size - r5dn.4xlarge
OS: Amazon Linux 2

Kernel: 5.4.149-73.259.amzn2.x86_64

Installation method: Kubernetes

Additional context

I am seeing similar issue,
2022-05-12T01:16:36+0000: Runtime error: SSL Socket handler (k8s_namespace_handler_state): Connection closed.. Exiting.

Running falco-driver-loader for: falco version=0.31.0, driver version=319368f1ad778691164d33d59945e00c5752cd27
Running falco-driver-loader with: driver=bpf, compile=yes, download=yes

Did you try running this with Falco's --k8s-node option?

I too am experiencing this.

Hello there! This was due to the falco operator which does not set the node value correctly, the --k8s-node option is set, but the nodes were not fetched correctly by the operator...

Just landed here after seeing this in my environment as well, with 0.32.1.

Are there any instructions how to debug?
version 0.32.1, custom crafted manifests

OK, on physical hw, custom k8s deployment
FAILS on Google cloud with BPF enabled as below

  "system_info": {
    "machine": "x86_64",
    "nodename": "falco-7xnlh",
    "release": "5.4.170+",
    "sysname": "Linux",
    "version": "#1 SMP Sat Apr 2 10:06:05 PDT 2022"
  },
  "version": "0.32.1"

❯ k logs -n monitoring falco-x58wb -f -c falco --tail 300 -p
* Setting up /usr/src links from host
* Running falco-driver-loader for: falco version=0.32.1, driver version=2.0.0+driver
* Running falco-driver-loader with: driver=bpf, compile=yes, download=yes
* Mounting debugfs
* Skipping download, eBPF probe is already present in /root/.falco/falco_cos_5.4.170+_1.o
* Skipping compilation, eBPF probe is already present in /root/.falco/falco_cos_5.4.170+_1.o
* eBPF probe located in /root/.falco/falco_cos_5.4.170+_1.o
* Success: eBPF probe symlinked to /root/.falco/falco-bpf.o
Mon Jul 25 15:49:17 2022: Runtime error: SSL Socket handler (k8s_daemonset_handler_state): Connection closed.. Exiting.

    spec:
      containers:
      - args:
        - /usr/bin/falco
        - --cri
        - /run/containerd/containerd.sock
        - --cri
        - /run/crio/crio.sock
        - -K
        - /var/run/secrets/kubernetes.io/serviceaccount/token
        - -k
        - https://$(KUBERNETES_SERVICE_HOST)
        - --k8s-node
        - $(FALCO_K8S_NODE_NAME)
        - -pk
        env:
        - name: FALCO_BPF_PROBE
          value: ""
        - name: FALCO_K8S_NODE_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName

When changed to
        - -k
        - http://$(KUBERNETES_SERVICE_HOST):$(KUBERNETES_SERVICE_PORT)

Then it works without problem. I do have custom image. Obviously there is some issue with /var/run/secrets/kubernetes.io/serviceaccount/token.
  -K, --k8s-api-cert (<bt_file> | <cert_file>:<key_file[#password]>[:<ca_cert_file>])
                                Use the provided files names to authenticate user and (optionally) verify the K8S API server identity. Each
                                entry must specify full (absolute, or relative to the current directory) path to the respective file.
                                Private key password is optional (needed only if key is password protected). CA certificate is optional.
                                For all files, only PEM file format is supported. Specifying CA certificate only is obsoleted - when single
                                entry is provided for this option, it will be interpreted as the name of a file containing bearer token.
                                Note that the format of this command-line option prohibits use of files whose names contain ':' or '#'
                                characters in the file name.

Is there any way how to get more debug info from the K8s auth?

Hi @epcim, since Falco 0.32.1 you can have more debug info by adding the following args to Falco:
-o libs_logger.enabled=true -o libs_logger.severity=trace

@jasondellaluce ok, so we know it has k8s connectivity and it reads some resources
FYI:

I realised, that with 0.32.1 the falco pod limits needs to be increased from 512MB to 1Gi (due OOM Kill)
The cluster I run the Falco has 25 nodes, 850 pods, but (some nodes has as only as 30 pods). So not small.
It reads and add [libs]: K8s [ADDED, Service the Kinds, Pod, Namespace, Service, ReplicaSet
Fails on daemonsets ?

Output from container:
* Setting up /usr/src links from host
* Running falco-driver-loader for: falco version=0.32.1, driver version=2.0.0+driver
* Running falco-driver-loader with: driver=bpf, compile=yes, download=yes
* Mounting debugfs
* Skipping download, eBPF probe is already present in /root/.falco/falco_cos_5.4.170+_1.o
* Skipping compilation, eBPF probe is already present in /root/.falco/falco_cos_5.4.170+_1.o
* eBPF probe located in /root/.falco/falco_cos_5.4.170+_1.o
* Success: eBPF probe symlinked to /root/.falco/falco-bpf.o
Tue Jul 26 10:52:14 2022: [libs]: starting live capture
Tue Jul 26 10:52:15 2022: [libs]: cri: CRI runtime: containerd 1.4.8
Tue Jul 26 10:52:15 2022: [libs]: docker_async: Creating docker async source
Tue Jul 26 10:52:15 2022: [libs]: docker_async (6a20bc616b5a): No existing container info
Tue Jul 26 10:52:15 2022: [libs]: docker_async (6a20bc616b5a): Looking up info for container via socket /var/run/docker.sock
Tue Jul 26 10:52:15 2022: [libs]: docker_async (http://localhost/v1.24/containers/6a20bc616b5a/json): Fetching url
Tue Jul 26 10:52:15 2022: [libs]: docker_async (http://localhost/v1.24/containers/6a20bc616b5a/json): http_code=200
Tue Jul 26 10:52:15 2022: [libs]: docker_async (http://localhost/v1.24/containers/6a20bc616b5a/json): returning RESP_OK
...
...
...
Tue Jul 26 10:42:49 2022: [libs]: K8s [ADDED, ReplicaSet, vk8s-ff4f6d37-22cf-44ee-af39-58c6b0f14dc3-786f859c79, c17e3f24-d389-4ddc-8c24-7531f9cb2682]
Tue Jul 26 10:42:49 2022: [libs]: K8s [ADDED, ReplicaSet, vk8s-ff4f6d37-22cf-44ee-af39-58c6b0f14dc3-7c46688b79, ca481853-3f88-4179-a90c-96f84256f5cb]
Tue Jul 26 10:42:49 2022: [libs]: K8s [ADDED, ReplicaSet, vk8s-ff4f6d37-22cf-44ee-af39-58c6b0f14dc3-854cc8b9cf, 9d75ddc1-faff-41c0-925e-0f0fbd1d9919]
Tue Jul 26 10:42:49 2022: [libs]: K8s [ADDED, ReplicaSet, vk8s-ff4f6d37-22cf-44ee-af39-58c6b0f14dc3-87d55bd54, 73149029-2d60-460d-af34-b5d7b6e47a37]
Tue Jul 26 10:42:49 2022: [libs]: K8s [ADDED, ReplicaSet, vk8s-ff4f6d37-22cf-44ee-af39-58c6b0f14dc3-f78486b56, 0d185513-64ef-40fe-baca-ef13ab283536]
Tue Jul 26 10:42:49 2022: [libs]: k8s_handler (k8s_daemonset_handler_state) dependency (k8s_pod_handler_state) ready: 1
Tue Jul 26 10:42:49 2022: [libs]: k8s_handler (k8s_daemonset_handler_state)::collect_data(), checking connection to https://<IP_ADDRESS>
Tue Jul 26 10:42:49 2022: [libs]: k8s_handler (k8s_daemonset_handler_state)::collect_data(), connected to https://<IP_ADDRESS>/apis/apps/v1/daemonsets?pretty=false
Tue Jul 26 10:42:49 2022: [libs]: k8s_handler (k8s_daemonset_handler_state) check_enabled() enabling socket in collector
Tue Jul 26 10:42:49 2022: [libs]: k8s_handler (k8s_daemonset_handler_state)::collect_data() [https://<IP_ADDRESS>], requesting data from /apis/apps/v1/daemonsets?pretty=false... m_blocking_socket=1, m_watching=0
Tue Jul 26 10:42:49 2022: [libs]: k8s_handler (k8s_daemonset_handler_state) sending request to https://<IP_ADDRESS>/apis/apps/v1/daemonsets?pretty=false
Tue Jul 26 10:42:49 2022: [libs]: Socket handler (k8s_daemonset_handler_state) socket=169, m_ssl_connection=61592496
Tue Jul 26 10:42:49 2022: [libs]: GET /apis/apps/v1/daemonsets?pretty=false HTTP/1.1
User-Agent: falcosecurity-libs
Host: <IP_ADDRESS>:443
Accept: */*
Authorization: Bearer eyJhbGciOiJSUzI1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Tue Jul 26 10:42:49 2022: [libs]: Socket handler (k8s_daemonset_handler_state) Retrieving all data in blocking mode ...
Tue Jul 26 10:42:49 2022: [libs]: Error fetching K8s data: SSL Socket handler (k8s_daemonset_handler_state): Connection closed.
Tue Jul 26 10:42:49 2022: Runtime error: SSL Socket handler (k8s_daemonset_handler_state): Connection closed.. Exiting.
Tue Jul 26 10:42:49 2022: [libs]: docker_async: Source destructor
Tue Jul 26 10:42:49 2022: [libs]: Socket handler (k8s_deployment_handler_state) closing connection to https://<IP_ADDRESS>/apis/apps/v1/deployments?pretty=false
Tue Jul 26 10:42:49 2022: [libs]: Socket handler (k8s_daemonset_handler_state) closing connection to https://<IP_ADDRESS>/apis/apps/v1/daemonsets?pretty=false
Tue Jul 26 10:42:49 2022: [libs]: Socket handler (k8s_replicaset_handler_state) closing connection to https://<IP_ADDRESS>/apis/apps/v1/replicasets?pretty=false
Tue Jul 26 10:42:49 2022: [libs]: Socket handler (k8s_service_handler_state) closing connection to https://<IP_ADDRESS>/api/v1/services?pretty=false
Tue Jul 26 10:42:49 2022: [libs]: Socket handler (k8s_replicationcontroller_handler_state) closing connection to https://<IP_ADDRESS>/api/v1/replicationcontrollers?pretty=false
Tue Jul 26 10:42:49 2022: [libs]: Socket handler (k8s_pod_handler_state) closing connection to https://<IP_ADDRESS>/api/v1/pods?fieldSelector=status.phase!=Failed,status.phase!=Unknown,status.phase!=Succeeded,spec.nodeName=gke-gc01-int-ves-io-gc01-int-ves-io-p-cf25a10e-w3qi&pretty=false
Tue Jul 26 10:42:49 2022: [libs]: Socket handler (k8s_namespace_handler_state) closing connection to https://<IP_ADDRESS>/api/v1/namespaces?pretty=false
Tue Jul 26 10:42:49 2022: [libs]: Socket handler (k8s_node_handler_state) closing connection to https://<IP_ADDRESS>/api/v1/nodes?pretty=false

shall not be due rights, but for clarity, the ClusterRole:
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: {{ default "falco" .falco_app_name }}-read
  namespace: {{ if .falco_namespace }}{{ .falco_namespace }}{{ else }}monitoring{{ end }}
  labels:
    app: falco
    component: falco
    role: security
rules:
  - apiGroups:
      - extensions
      - ""
    resources:
      - nodes
      - namespaces
      - pods
      - replicationcontrollers
      - replicasets
      - services
      - daemonsets
      - deployments
      - events
      - configmaps
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - apps
    resources:
      - daemonsets
      - deployments
      - replicasets
      - statefulsets
    verbs:
      - get
      - list
      - watch
  - nonResourceURLs:
      - /healthz
      - /healthz/*
    verbs:
      - get

Here is some order of things that happens
❯ k logs -n monitoring $POD -c falco -p | egrep '(ready: |Error )'
Tue Jul 26 10:58:10 2022: [libs]: k8s_handler (k8s_api_handler_state) dependency (k8s_dummy_handler_state) ready: 1
Tue Jul 26 10:58:10 2022: [libs]: k8s_handler (k8s_api_handler_state) dependency (k8s_dummy_handler_state) ready: 1
Tue Jul 26 10:58:10 2022: [libs]: k8s_handler (k8s_api_handler_state) dependency (k8s_dummy_handler_state) ready: 1
Tue Jul 26 10:58:10 2022: [libs]: k8s_handler (k8s_api_handler_state) dependency (k8s_dummy_handler_state) ready: 1
Tue Jul 26 10:58:10 2022: [libs]: k8s_handler (k8s_node_handler_state) dependency (k8s_dummy_handler_state) ready: 1
Tue Jul 26 10:58:11 2022: [libs]: k8s_handler (k8s_node_handler_state) dependency (k8s_dummy_handler_state) ready: 1
Tue Jul 26 10:58:11 2022: [libs]: k8s_handler (k8s_namespace_handler_state) dependency (k8s_node_handler_state) ready: 1
Tue Jul 26 10:58:11 2022: [libs]: k8s_handler (k8s_namespace_handler_state) dependency (k8s_node_handler_state) ready: 1
Tue Jul 26 10:58:11 2022: [libs]: k8s_handler (k8s_pod_handler_state) dependency (k8s_namespace_handler_state) ready: 1
Tue Jul 26 10:58:11 2022: [libs]: k8s_handler (k8s_pod_handler_state) dependency (k8s_namespace_handler_state) ready: 1
Tue Jul 26 10:58:11 2022: [libs]: k8s_handler (k8s_replicationcontroller_handler_state) dependency (k8s_pod_handler_state) ready: 1
Tue Jul 26 10:58:11 2022: [libs]: k8s_handler (k8s_replicationcontroller_handler_state) dependency (k8s_pod_handler_state) ready: 1
Tue Jul 26 10:58:11 2022: [libs]: k8s_handler (k8s_service_handler_state) dependency (k8s_pod_handler_state) ready: 1
Tue Jul 26 10:58:12 2022: [libs]: k8s_handler (k8s_service_handler_state) dependency (k8s_pod_handler_state) ready: 1
Tue Jul 26 10:58:12 2022: [libs]: k8s_handler (k8s_replicaset_handler_state) dependency (k8s_pod_handler_state) ready: 1
Tue Jul 26 10:58:48 2022: [libs]: k8s_handler (k8s_replicaset_handler_state) dependency (k8s_pod_handler_state) ready: 1
Tue Jul 26 10:58:49 2022: [libs]: k8s_handler (k8s_daemonset_handler_state) dependency (k8s_pod_handler_state) ready: 1
Tue Jul 26 10:58:49 2022: [libs]: Error fetching K8s data: SSL Socket handler (k8s_daemonset_handler_state): Connection closed.

Well the query to k8s to daemonsets works, so there must be some issue with processing in falco IMO.
Steps to reproduce
k exec -ti -n monitoring falco-zzfmk -c falco -- sh

TOKEN="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)";
CACERT=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
curl -s -H "Authorization: Bearer $TOKEN" --cacert $CACERT  https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT/apis/apps/v1/daemonsets?pretty=false | head

{"kind":"DaemonSetList","apiVersion":"apps/v1","metadata":{"resourceVersion":"427824185"},"items":[{"metadata":{"name":"gke-metadata-server","namespace":"kube-system","uid":"452584fa-614e-40bd-8477-3b0781ce9dfc","resourceVersion":"417631995","generation":10,"creationTimestamp":"2020-12-16T10:33:18Z","labels":{"addonmanager.kubernetes.io/mode":"Reconcile","k8s-app":"gke-metadata-server"},
...
...

btw, I claimed it works like http://$(KUBERNETES_SERVICE_HOST):$(KUBERNETES_SERVICE_PORT) but that was not true, as it must be always https. The only difference is that falco was not crashing when http was used..
KUBERNETES_SERVICE_HOST=<IP_ADDRESS>
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443

additionally, I though that with this in place, falco will only query metadata for it's own node..
        - --k8s-node
        - $(FALCO_K8S_NODE_NAME)

but insteady calling everything everywhere, ie: /apis/apps/v1/daemonsets?pretty=false

I was able to solve this issue by cleaning up the old replicasets (had about 5k of these)

We have the same issue with the replicasets failing, we currently have >6k replicasets. But I am not sure deleting them is practical for us. Installing different versions of Falco I have narrowed it down to the following:
Works: Falco 0.32.0 Helm chart version 1.19.4
Fails: Falco 0.32.1 Helm chart version 2.0.0

We have the same issue with 0.32.1.

Same issue with 0.32.1

either, have the same experience with 5.9.2022 :latest and 0.32.2 - GCP cluster, 25nodes.
The number of delete old ReplicaSets was 2600. Deleting them manually on other environments is not an option!
I am using --k8s-node filter option, but I suspect falco does not reflect that when reading these replicasets..  see
# parsing these lines.. [libs]: K8s [ADDED, ReplicaSet, ...........
❯ k logs -n monitoring falco-bk4t5 -c falco -p |grep ReplicaSet | wc -l
2071

Some other pods managed to read only 506 RS and then fails.
The only error it throws and not recover is:
Mon Sep  5 12:57:15 2022: [libs]: Error fetching K8s data: SSL Socket handler (k8s_daemonset_handler_state): Connection closed.
Mon Sep  5 12:57:15 2022: Runtime error: SSL Socket handler (k8s_daemonset_handler_state): Connection closed.. Exiting.

Again the setup:
    spec:
      containers:
      - args:
        - /usr/bin/falco
        - --cri
        - /run/containerd/containerd.sock
        - --cri
        - /run/crio/crio.sock
        - -K
        - /var/run/secrets/kubernetes.io/serviceaccount/token
        - -k
        - https://$(KUBERNETES_SERVICE_HOST)
        - --k8s-node
        - $(FALCO_K8S_NODE_NAME)
        - -pk
        - -o
        - libs_logger.enabled=true
        - -o
        - libs_logger.severity=info
        env:
        - name: FALCO_BPF_PROBE
        - name: FALCO_K8S_NODE_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - ```

@jasondellaluce could this have some attention? As this is real blocker.
@mac-abdon could you please remove (400+ nodes from title and mention it somewhere else).

@jasondellaluce could this have some attention? As this is real blocker. Even it works now on older , even small, clusters this will break any falco deployemnt.

@epcim this is high priority in the project's roadmap. We're still in the process of figuring out what's the optimal way for mitigating this.

I discussed this issue on the Falco Community Call today, so I'm sharing some of the information from that call for others who may be impacted.
As a workaround, you can consider removing the "-k " command-line option. I was under the impression that this option was used to grab all the (non-audit) k8s.* metadata, but this is not the case. With or without this switch, Falco will pull a subset of information from the local kubelet API (perhaps based on the uppercase -K switch, but I'm unsure). Without the lowercase "-k" switch, Falco will not be able to retrieve some metadata that is only available from the cluster API, which I believe to be the following field types (from https://falco.org/docs/rules/supported-fields/):
k8s.rc.*
k8s.svc.*
k8s.rs.*
k8s.deployment.*
Check your rules to determine whether you are using any of these, and if not, you can probably remove that switch as a workaround and get yourself back up and running until this is fixed.

As a workaround, you can consider removing the "-k " command-line option.

This workaround worked for us. Thanks!
falco: v0.32.2
Kubernetes(EKS): v1.21.14

Hey @IanRobertson-wpe
just a note
-K (uppercase) is used only if -k (lowercase) is present. So you can remove both -k and -K.

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle stale

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle rotten

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.
Provide feedback via https://github.com/falcosecurity/community.
/close

@poiana: Closing this issue.

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.
Provide feedback via https://github.com/falcosecurity/community.
/close

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Has that issue been solved?
I am still getting with huge, loaded nodes the error:
Defaulted container "falco" out of: falco, falcoctl-artifact-follow, falco-driver-loader (init), falcoctl-artifact-install (init)
Thu Mar 23 20:09:35 2023: Falco version: 0.34.1 (x86_64)
Thu Mar 23 20:09:35 2023: Falco initialized with configuration file: /etc/falco/falco.yaml
Thu Mar 23 20:09:35 2023: Loading rules from file /etc/falco/falco_rules.yaml
Thu Mar 23 20:09:36 2023: Loading rules from file /etc/falco/rules.d/falco-custom.yaml
Thu Mar 23 20:09:36 2023: The chosen syscall buffer dimension is: 8388608 bytes (8 MBs)
Thu Mar 23 20:09:36 2023: Starting health webserver with threadiness 16, listening on port 8765
Thu Mar 23 20:09:36 2023: Enabled event sources: syscall
Thu Mar 23 20:09:36 2023: Opening capture with Kernel module
k8s_handler (k8s_replicaset_handler_state::collect_data()[https://mydomain] an error occurred while receiving data from k8s_replicaset_handler_state, m_blocking_socket=1, m_watching=0, SSL Socket handler (k8s_replicaset_handler_state): Connection closed.
k8s_handler (k8s_deployment_handler_state::collect_data()[https://mydomain] an error occurred while receiving data from k8s_deployment_handler_state, m_blocking_socket=1, m_watching=0, SSL Socket handler (k8s_deployment_handler_state): Connection closed.
k8s_handler (k8s_replicaset_handler_state::collect_data()[https://mydomain] an error occurred while receiving data from k8s_replicaset_handler_state, m_blocking_socket=1, m_watching=0, K8s k8s_handler::receive_response(): invalid call (request not sent).
k8s_handler (k8s_deployment_handler_state::collect_data()[https://mydomain] an error occurred while receiving data from k8s_deployment_handler_state, m_blocking_socket=1, m_watching=0, K8s k8s_handler::receive_response(): invalid call (request not sent).

@jasondellaluce , @leogr : FYI.

@VF-mbrauer I see. Does it also cause Falco to terminate?
cc @alacuku

@VF-mbrauer, does it recover at some point? or keeps erroring? At startup time all the falco instances connect to the api-server and they may be throttled by api-server that's why you are seeing that error.
Anyway we are working on a new k8s-client for falco that should solve the problem we have with the current implementation, please see: falcosecurity/libs#987

@jasondellaluce, yes it will go first run into an OOM and then Restart, after some time it gets stalled into "CrashLoopBackOff"
falco-7sgbh                     2/2     Running            0               88m
falco-fd9kz                     1/2     CrashLoopBackOff   8 (19s ago)     43m
falco-hwv6s                     1/2     CrashLoopBackOff   8 (88s ago)     56m
falco-jj5vj                     1/2     CrashLoopBackOff   9 (2m16s ago)   49m
falco-nj6mn                     1/2     CrashLoopBackOff   6 (2m17s ago)   53m
falco-q4247                     2/2     Running            0               88m
falco-q6hwl                     1/2     CrashLoopBackOff   8 (4s ago)      52m
falco-qmgmh                     1/2     CrashLoopBackOff   10 (50s ago)    57m
falco-s4v9n                     1/2     CrashLoopBackOff   8 (3m42s ago)   54m
falco-shn6m                     2/2     Running            6 (3m51s ago)   45m
falco-tbs94                     1/2     CrashLoopBackOff   8 (75s ago)     47m
falco-vvd49                     1/2     CrashLoopBackOff   7 (4m11s ago)   51m
falco-w5tc4                     1/2     CrashLoopBackOff   4 (25s ago)     34m

So to workaround that I increased the Memory a bit.

hi, I am using 0.34 on EKS 1.22 with EBPF. I get the following error in daemons - an error occurred while receiving data from k8s_replicaset_handler_state, m_blocking_socket=1, m_watching=0, Socket handler (k8s_replicaset_handler_state): read more than 100 MB of data from https://x.x.x.x/apis/apps/v1/replicasets?pretty=false (104858058 bytes, 102407 reads). Giving up, this ismulti dev env cluster with a lot of deployments/argo rollouts, what can I do about this to improve or fix? (edite

There is some disconnection between code and config - for me metadata_download mb setting does nothing and reading the code makes sense it doesn't.


AdminLTE 3.0 Plans

Hello everyone,
As you may already know, Bootstrap v4 is coming soon. Thus, a major update for AdminLTE is due with the release of BS4. For the time being, we will only take suggestions for AdminLTE 3. In other words, v2 will get bug fixes and patches but won't get new features.
Quick glance at our plans for AdminLTE 3:

Full utilization of Bower for package management
SASS instead of LESS
Customized Bootstrap via variables to significantly decrease the number of (override) lines of code in AdminLTE.css
Front-end template using the easily customizable color-scheme of AdminLTE to create a sense of consistency and broaden AdminLTE's domain
Color variables of AdminLTE will be removed and Bootstrap 4 color vars will replace them

That is to say, instead of @light-blue for example, we will use $brand-primary

The box component will be replaced with the new BS4 cards
The main header will use a custom navbar to avoid current issues with responsiveness
The treeview in the sidebar will be rewritten to provide advanced features and options such as treeview search and expand only when a specific element gets clicked.
App.js will be removed and ECMA6 will be used for each plugin to produce AdminLTE.js

Treeview.js for example will be its own plugin and app.js will only supply a demo use case
This gives developers the ability to create their own custom app.js and use only the relevant plugins

I still prefer Grunt over Gulp so I will keep using it (this is debatable)
The layout may make use of the new flexbox functionality that BS4 provides. Thus, reducing the number of calls to $(window).resize(...)

The product of these changes should make AdminLTE highly customizable and convert it into a framework level tool rather than just a template. Suggestions and contributions are highly recommended as always. If you know of new plugins, tools or ideas, please feel free to post them here.

"This gives developers the ability to create their own custom app.js and use only the relevant plugins" - perfect
"That is to say, instead of @light-blue for example, we will use $brand-primary" - but it would be nice if you could provide some precompiled .css files with old colors. You would save a lot of time for users who dont have experience with SASS.

@jlamer I prefer to completely break free and move forward with Bootstrap 4 and AdminLTE 3 and leave behind the old versions of both. Better not to drag anything from the old versions as that will become a liability to support and encourage some developers to stay with the past notions. It's normal to break backwards compatibility with major version updates. Moving to AdminLTE 3 is not mandatory for everyone and who needs to use the old model can choose to stay with v2.x.

I completely agree, but I dont think precompiling few css files with old colors would be problem. I think we could overcome a lot of questions about how SASS works.

It will start by the compiled CSS files, then requests will follow to provide their LESS sources to make modifications easy, then issues will rise concerning problems with certain CSS classes in this or that browser/version/device that need solving and support in the LESS files. And probably some developers who are comfortable with LESS will start copying classes from SASS to it increasing the need to support LESS. And before you know it, you'll find LESS sneaking in besides SASS and calling for attention and support. Why open the door at the first place?

I think you misunderstood me. What I was trying to say was that it would be nice if in dist there were also css files compiled with all color variables like $brand-primary etc. from version 2.

AdminLTE 3 will have its own colors. It would be more likely to use a new color scheme but it may reserve the old one in case we find it better.
Thanks!

@jlamer this way I think we are referring to different sides of the same thing and there's no conflict.
@almasaeed2010 my understanding is that you will not carry the old CSS classes over to v3 but instead use those of Bootstrap 4 even if you decide to revert to the old, still you'll apply them using Bootstrap 4's approach, right?

That is correct.

In my opinion that would be a good approach to to it.

Try to use NiceScroll Plugin.

It's worth considering suggestions in #710.

If you may consider adding RTL native support, currently I support RTL over AdminLTE by reference bootstrap.rtl and by swapping pull-right/pull-left.
Appreciated your awesome efforts.

https://github.com/nakupanda/bootstrap3-dialog

I like the new framework idea of AdminLTE. Do you plan on dropping the jQuery dependency in a basic version of AdminLTE? By basic I mean a simple good looking template without 3rd party plugins (so BS4 with AdminLTE layout/design). Sure, if a 3rd party plugin depends on jQuery then the user will need to add jQuery.

JQuery is a must as Bootstrap 4 depends on it to work.

@lesichkovm not for all features..

@JeroenNoten @lesichkovm exactly ... AFAIK only javascript plugins - see http://getbootstrap.com/javascript/ ... layout stuff can be nowadays accomplished without JS with CSS3

More background for my "no jQuery dependency" idea: If you use AdminLTE (or Bootstrap) with AngularJS, you don't need (or want :)) the jQuery versions of the plugins, since you are either write a plugin yourself using AngularJS or you adapt the jQuery-versions (by wrapping them into a AngularJS directive, but then I would add jQuery to the project).
Most of the time I just need the template without any functions from the JS plugins (neither from Bootstrap nor from AdminLTE). That's why I asked, if something like "removing jQuery" is in the backlog. :)

No external dependency on JavaScript at all is a great idea, if it can be accomplished, of course.

Another plugin for scrolling:
https://github.com/malihu/malihu-custom-scrollbar-plugin/tree/3.x

Enhancement: Add sidebars status cookie (without persistence)
Many developers addressed sidebar persistence, obviously it's a common need. While it should be handled on the server and will be implemented differently according to the language/framework used, still the first step is executed on the client by setting a cookie upon sidebar status change. That cookie will be used later on the server script (if found) to display the sidebar correctly.
I suggest to make setting the sidebars status cookies (both left and right) a part of the template core features with a standard cookie names, preferably configurable with a default values. The developers will then need to handle the server-side part of it using their chosen technology. That way we address a common need and avoid making each developer repeat the same step by adding it once to the core functionality.

Agree with @YasserHassan .

Maybe within the browser storage instead of cookies?

Highly agree @ivantcholakov. For me it sounds like an access to the local storage to read/write the sidebar status. That can be done within a few lines of code. And for me it does not seem like a core functionality, since it can be added easily.

@ivantcholakov it's another way. We need to evaluate both. Maybe implement both with on/off switches and leave it to the developer to decide which to use. I'm sure a lot of developer are ready to contribute to it including myself.
@ManuelRauber the ease of adding a feature is not the measure of a core function but rather how common it is and whether it's client-side. Any developer who chooses to use the collapsible sidebars would expect their status to persist over page loads. By taking a part of the implementation and making it ready out of the box in a well-implemented, tested, and documented way with server-side samples, we could save some frustration. Notice that it might be easy for you but not for everyone such as those who ask about it every now and then.

I'm curious why the author does not release v3-alpha branch allows you developers to submit their desired function or component ... waiting for the official version BS4 procedures, functions, and merge the various submissions fixes some issues functionality.; this is not better ... if BS4 and other official version came out before you start alpha version, from v3-alpha to the official version, is estimated to be a long time .... I feel like this is not very good

@crperlin I prefer to settle on the main direction and conceptual points and giving them enough thought first before making the code available. Otherwise, the community would start pulling the project in different directions on a technical level via code contributions without a clear direction.

@YasserHassan  Use Xmind to write programs using the process structure, determine the direction ??? such as this ??

@crperlin I'm not sure I've got your point. However my idea is to let the concept mature first before making the code available. I prefer discussions that reach conclusions that are then complied to a set of points.

@YasserHassan  yes , But the lines are not frequent author, not engage in online discussions

@YasserHassan I see your point with having the persistence implemented in the core functionality. But I still don't see this as a server-side implementation, since the sidebar "shown/hidden" is a client state. What do you think about implementing this with client-side localstorage and providing a plugin with server-side persistence, rusing simple RESTful urls, leaving it to the developer implementing the server-side. Some samples could show how to implement the server using insert favorite language here.

Thanks for the suggestions guys! I will consider all of them when development of v3.0 starts.
Keep it up :+1:

@ManuelRauber the sidebar state server-side part is required for the initial page load. For example, if you collapse the sidebar after page load, it will show expanded first then animate to collapse with every page load. You need to set the state (class) to the correct status before sending the page to the server to show right initially. The client-side function should be capturing user's expand/collapse action and setting cookie only. Refer to #315 for this.
Considering the above, in my opinion, local storage is not the right way to do it unless you need to do extra work to sent its value with each request to the server (in turn could be stored in a session), something a cookie would do directly and implicitly.

@almasaeed2010 thank you for your effort. I suggest having a special label for V3 issues to take each V3 idea to its own thread while differentiating them from V2 to avoid mixing them all in this issue.

@ManuelRauber @YasserHassan I dont see reason why I should store sidebar state on my server. Imagine someone is using 3 devices: smartphone, tablet and desktop. So he opens site first time on desktop and he has a plenty of space so he keeps sidebar open. Now, if he decided to open it in tablet or smartphone, he would have sidebar opened so he has to close it and on dekstop open it again. I dont think thats very good UX. Yes, you could store something like HTTP_USER_AGENT but it can change very often when new versions are installed and why all that extra work? Cookies are not an ideal option - they can be deleted by some cleaning/security/whatever software and you cant set them to "forever". I am sure localStorage is the way to go.

@jlamer you don't store sidebar state on the server, you only process it there. I'm also for storing the state on the client, the multiple clients point you mentioned is another reason. There are pros and cons to both cookies and local storage so implementation depends on each situation and the developer's best judgement.

@almasaeed2010  I recommend "PJAX = pushState+Ajax" to achieve click the sidebar on the right page load effect;. And to avoid the whole station to achieve partial refresh refresh
PJAX project : https://github.com/defunkt/jquery-pjax;
I hope thie feture can add V3

First I use quite this thema think very good, I want to help in version 3. besides the setting bower we give the option to use cdnjs desvolvedor ? to perform the grunt

Is their any plan to add RTL in admin LTE 3.0?

Is there any plan on including the material design styles as an option

Sticky Footer
I would like the current sticky footer tho be replaced with non-javascript implementation. Pure CSS might do the job better, without page blinking. Also, the pure CSS solution should avoid flexbox, in order to work on more devices and browsers.

Why avoid flexbox? http://caniuse.com/#feat=flexbox
Sticky-Footer with flexbox is really super easy to do. :)

@ManuelRauber
We are trying to support all major browsers including IE9-10 which don't support flexbox.

In 2014 I did a sticky footer with flexbox and I was reported that it failed on IE10 and on a relatively new Samsung mobile device. I don't know how the situation with flexbox is now, I just don't want to take chances.

I suggest evaluating the support of IE9 and 10, even 11. Microsoft is quietly replacing IE by its new Edge browser which is the default browser of the new Windows 10. One of the major reasons for supporting older IE versions was the wide use of Windows XP and that reason is no longer valid that XP has reached its end of life.
Some companies decided to fully drop IE support in favor of investing the time wasted in getting the projects to work right on it in favor of implementing new features and taking advantages of the new technologies.
It's hard to imagine deciding the future of a new project while dragging the weight of old problematic technologies that their own owner is trying to get rid of quietly.
I am not saying to fully drop the support of IE as that will not be realistic before a couple of years but to adopt a standards-compliant, modern-browser-first approach to implementation with partial support for IE. This would mean that some features will be partially or partially unavailable on older IE versions in favor of benefiting from all the new technologies and breaking the project free of dead weights so it can proceed faster.

@YasserHassan  Microsoft announced 10 months after no longer provide support for legacy strong push IE11 IE browser , xp user has very few times .. We should instead accompany a small number of users in the end Sike

@crperlin if I understand you correctly, Microsoft itself will not support IE 9 and 10 in the near future, correct?
What I see is that their goal is to kill the whole IE line and replace it by Microsoft Edge which is a completely new browser. It has already started on both PC and mobile with Windows 10.

A sticky footer example without flexbox: http://codepen.io/jamiemlaw/pen/Bnscp

I just came across some disucussion about Bower development slowing down and thought I'd share it here. Here's another interesting comment.
Personally I've never had a reason to use Bower over NPM and thought I'd at least bring up a discussion whether a dependency to Bower is absolutely neccessary for this project especially for a new major release.

Add the Web Font Loader, https://github.com/typekit/webfontloader
Prepare and keep all the used fonts on the local server; avoid CDNs, especially in the admin side.

I strongly recommend moving the search input form the left sidebar to the top bar with consideration to small screen size on mobiles. On small screens, a good approach is showing an magnifying glass icon that exposes the search functionality when clicked. Google Play Store mobile app is a good example.
I'm recommending the top search because it would provide a better user experience on small screens when the left sidebar is collapsed besides it's more common. However, if the left sidebar search is in high demand, we can have both to use from according to the project.

There is something that I am not quite sure about. Would it be good using Jekyll for generation demo pages and documentation? The static HTML pages require lots of copy/paste.

Suggestion: iCheck plugin replacing
radio and checkbox styling with pure CSS: https://github.com/flatlogic/awesome-bootstrap-checkbox

@racztiborzoltan :+1:

@racztiborzoltan +1

Suggestion:
Using more CDN service links (JavaScript plugins, CSS plugins, fonts), instead "plugins" files, without bower.

smaller AdminLTE package size
smaller size of plugins directory. Less not used garbage, for example, if the frontend developer would like to use newer plugin. (example: DataTables v1.10.7 --> v1.10.10)
Freer hand to the frontend developer! Assets management? Which programming language? Which library? Bower or Npm or Composer or ...? Minification? Caching? etc... I hope that was understandable.

Some examples:
"plugins/bootstrap-slider": https://cdnjs.com/libraries/bootstrap-slider/5.3.0

https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/5.3.0/css/bootstrap-slider.min.css
https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/5.3.0/bootstrap-slider.min.js

"plugins/bootstrap-wysihtml5": https://cdnjs.com/libraries/wysihtml/0.4.15

Newest version: https://cdnjs.com/libraries/wysihtml/0.5.2

"plugins/chartjs": https://cdnjs.com/libraries/Chart.js/1.0.2

https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.js
https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js

"plugins/ckeditor": https://cdn.ckeditor.com/

https://cdn.ckeditor.com/4.4.3/standard/ckeditor.js
Note: "plugins/ckeditor" directory is not in use.

etc...

@racztiborzoltan I prefer an administration panel not to use CDNs.

I believe dependencies should be included the way that makes the template easiest to download and view. Typically, the template will not be used as-is and will need to be processed and prepared for use anyway. For example, with modern frameworks, it's typical to replace the dependencies like Bootstrap and jQuery with asset packages.

Suggestion: Pre-slice the template
Typically, the template needs to be sliced to separate the header, footer, ...etc and this repeats with each new version. It's better for project developers and for the development of AdminLTE itself to keep it sliced form the beginning. If viewing the template without a web server is required, a pre-generated static version could be added in a demo folder.

The problem with CDns is that when they are not working, the whole thing becomes a mess. And to the new user who visits Adminlte, It does not give a good first impression.

And they will be probably slower because of additional DNS lookups. Webservers using HTTP2 can handle multiple static files simultaneously without problem.

not every project uses bower
If a frontend developer starts an admin

example:

copy content of starter.html
paste into own template system (twig, blade, volt, etc...)
change the resource links (script src; link href, img src, etc...)
maybe use asset manager (javascript and css collector, minificator)

Who uses the starter.html file without the slightest change? Who has no problem using the CDN-s.
Otherwise: bower, npm, composer, etc. Decide the developer.

@racztiborzoltan first of all, we appreciate the suggestions! Regarding CDNs, we have tried that in a previous version of AdminLTE. A major problem was offline support. We'd like to offer the maximum amount of support across different environments. This is only achievable by providing the source code to run locally. However, we add links in the documentation to all the plugins we use. This way, it is easy for a person who prefers CDNs to pick the plugins that offer them.
Thank you all for the suggestions! We are working currently on V3 and very excited to push the newest changes. We think you'll love the new updates and features.
Thanks!

@almasaeed2010 : two types of github release?

AdminLTE.VERSION.zip - with local resource links (jquery, datepicker, etc. etc.)
AdminLTE.VERSION.small.zip - with CDN resource links, if CDN link exists
and, of course the original source code release

@racztiborzoltan unless this is fully automated, it would be a source of problems and unmatching packages. There have been problems with maintaining version numbers in packaging files (hopefully will be solved in v3), so imagine adding multiple editions to the mix.

@YasserHassan : thanks for the reply
Another suggestion: Polyfill services - A helping hand for the legacy browsers.

@racztiborzoltan as you can see from previous discussions, I'm not pro for supporting legacy browsers (e.g. IE 10 and earlier). It's either a trade off between either innovation and creativity vs. supporting old technologies or having both at a high extra cost. Besides that, I have a feeling that Polyfill would actually complicate things rather than solve problems. We better start from an objective and reach an agreement on one thing that needs to be done and adopt to it knowing that we won't get everything. The effort and time dedicated to managing different technologies just to get the template to work in different environments will not only not add to the project bottom line but will also consume part of the available effort that @almasaeed2010 and other contributors are thankfully dedicating to this project without a real gain.

+1 for gulp instead of grunt (for easier embedding in Angular based apps)

"Suggestion: Pre-slice the template"
Yes, yes, yes.
This is crucial for anything more than just playing a bit with the template. If you're trying to set up a site with some pages and not others, it's a lot of cutting and pasting and cleaning up. I imagine it's also a lot more of a pain to maintain for the author.

@YasserHassan
@drorm
"Suggestion: Pre-slice the template", I also like that.
But I don't like how the Bootstrap maintainers did that, I don't want to play with Jekyll in order just to see the template from a local computer. I think about something different, although I did not see it done by somebody else - to use Twig template engine, a JavaScript implementation: https://github.com/twigjs/twig.js It could assemble the final pages from their fragments, also it could fill the demo data. For those projects that use the Twig engine (or other similar engines that exist, with almost the same syntax) this would be a great easing.

Suggestion: Consider Semantic-UI http://semantic-ui.com , https://github.com/semantic-org/semantic-ui/ as a base for the next major implementation. This sounds radical, but I think it would be a good choice. For such an implementation I am motivated to help with some of my time here.

why closed? does the plan to move to bootstrap4 still exist?

Are we not moving to bootstrap 4 anymore?

maybe we can crowdfund this effort ?

Thanks for the great work! Is there a roadmap/timeline for version 3.0? I would be particularly looking forward to Angular support.

Would be more than willing to contribute time

I can also contribute :)

I am so happy if I can contribute also :)

@almasaeed2010 Any updates?

Will you still be using bower as it is deprecated now?

AdminLTE 3.0 is completely dependent on the release of a stable Bootstrap 4.0. Currently BS4 is in alpha stages. Unfortunately, we can't do anything until at least a release candidate for BS4 is announced.

The product of these changes should make AdminLTE highly customizable and convert it into a framework

Perfect, i'll wait those changes 👍

@almasaeed2010 u are a genius men.

The beta is out, is it considered stable enough to be the root of AdminLTE 3.0 ?

They said that BS4 beta will have no more BC, so I think it is stable enough.

Awesome! Hype!

Bootstrap is currently v4.0.0-beta, this is stable enough to release a BS4 version of AdminLTE 3.0
Any plans for a first release soon!

any update?

Is this plan is active? The BS4 beta has released and now it is the latest version. The Bootstrap home page has change already.

@almasaeed2010 any update on the future of AdminLTE?

SASS instead of LESS

yes!

The box component will be replaced with the new BS4 cards

don't do that please, the box component is awesome and highly customizable, the perfect replacement for BS3 panels.

@EliuTimana +1

Thank you all for your interest in AdminLTE 3. I understand that it has been a long time since any progress was made towards upgrading the template. The good news is that with BS4 finally out, I’ve been working on a new plan for AdminLTE and trying out the new BS4 framework. Soon, I will post a full update on the progress and hopefully have the ground work laid out for the next big release :D
I am really excited about resuming the work and coming up with new ideas and tools to make AdminLTE better for all of us.
Thank you for your patience and enthusiasm.

What about start using yarn instead of bower and webpack?

@EliuTimana using yarn(npm) instead of bower is good idea, but webpack is for module bundle not to manage packages ;)

I am also curious about the status of bootstrap 4 support.  Laravel v5.6 uses Bootstrap v4 by default now.

I would love to contribute 💯

AdminLTE 3 dev is now available in the dev branch https://github.com/almasaeed2010/AdminLTE/tree/v3-dev
Eager to hear your opinion, issues and comments! Let's make this the best for everyone :D

the new branch. joined

@almasaeed2010 any approximate date of stable version/release for AdminLTE3?

I am working on the control sidebar and figuring out which plugins have support for bootstrap 4. Any plugins that don't bootstrap 4 will have to get removed. Once those 2 tasks are done we'll release a beta version for people to test. meanwhile, we'll need to write the new documentation. If not many issues arise, we'll release 3.0. So the process might take some time. I'd assume 1 month before the stable release is available (can't promise anything but this seems reasonable to me).
I am really excited to get this version out there :) hopefully that won't take long.

Will the 3.0 release use Font Awesome 5.0?

Don't forget Right To Left Please :heart:

Any plan to release an angular version, as of now i am trying to build an angular app using PrimeNG which is an awesome component library, however many people are trying to include AdminLTE in Angular, i would be happy to contribute if there are any plans for the same and thanks for a great Bootstrap Template.

Any dates for release at npm?

any news?

If its Bootstrap 4.0 then should it not be Admin LTE 4.0 to avoid confusion :)

The previous version was 2 and the bootstrap version that it was based was bs3, I don't see any problem with that.

any news?

现在离发布Admin LTE 3.0计划都几年了，难产了吗

期待Admin LTE 3.0早日发布

可能难产了

https://github.com/almasaeed2010/AdminLTE/tree/v3-dev

This branch seems unfinished? In that its missing skins and all sorts of other css files in the dist folder? Am I missing something obvious here?

https://github.com/almasaeed2010/AdminLTE/tree/v3-dev

This branch seems unfinished? In that its missing skins and all sorts of other css files in the dist folder? Am I missing something obvious here?

Yes, that's why there is dev in the name of the branch. It's under development.

https://github.com/almasaeed2010/AdminLTE/tree/v3-dev

This branch seems unfinished? In that its missing skins and all sorts of other css files in the dist folder? Am I missing something obvious here?

Yes, that's why there is dev in the name of the branch. It's under development.

I realise that - the reason I ask is that there is a Admin-LTE 3 Alpha release only a few commit behinds. Being alpha I would have thought most core stuff like skins would be in here?
Do I need to build dist/css/adminlte.min.css or something? I can see commits relating to skins so not sure why I cant figure this out.

Can see the skin files were part of the LESS CSS. But were deleted with this commit 7b67b58db6128bc5d3c6d2409b81ef4c1348d32a. Cannot seem to find the addition of the same files with SCSS.

AdminLTE 3 no longer has skin classes. To reduce the footprint of the framework, v3 defines a list of modifiers that can be mixed and matched to build your own "skin". For examples on available combinations, visit https://adminlte.io/themes/dev/AdminLTE/ then open the right sidebar:

Oh I see! Right that makes sense. OK will have another stab at this. Thanks.

Waiting anxiously for version 3 to download ...

I am working on the control sidebar and figuring out which plugins have support for bootstrap 4. Any plugins that don't bootstrap 4 will have to get removed. Once those 2 tasks are done we'll release a beta version for people to test. meanwhile, we'll need to write the new documentation. If not many issues arise, we'll release 3.0. So the process might take some time. I'd assume 1 month before the stable release is available (can't promise anything but this seems reasonable to me).
I am really excited to get this version out there :) hopefully that won't take long.

Almost a full year out from this post, very excited to get working with this and hoping there is any update you can share?

It is now March 15, 2019. What is the story on the AdminLTE 3 release date?

Any news on AdminLTE 3?

It will come very soon

Hi, do you have any idea when it will arrive? or you are not working on it any more, that would be useful info as well.

@papppeter please read this https://github.com/ColorlibHQ/AdminLTE/issues/2078#issuecomment-490869710

Any news from release date of V3?
Current get 404 error for V3 Dev Demo: https://adminlte.io/themes/dev/AdminLTE/

@pctin Oh dang, I did a misstake 🤦♂ I've fixed the 404 error.
About release:
I look forward to release soon v3.0.0-beta.1 with some fixes and nice enhancements, after release I need to look over all the open issues and pick all v3 issues or feature requests.
May I release beta.1 without docs and create them with beta.2.

That's excellent news indeed!
The AdminLTE3 preview is simply gorgeous. I have no doubt that it's by far the best free (as in speech) bootstrap admin template available. I do hope you can release it asap.


Backport 1.3: Fix corner case uses of memory_buffer_alloc.c

This change fixes the following corner cases in memory_buffer_alloc.c:

Calling verify_chain() on an uninitialized chain. Would previously cause a NULL dereference.
Allocating a memory block large enough to overflow the length variable.
Initializing the allocator with a buffer smaller than the size of a memory header.

This PR is based on the information recorded in https://github.com/ARMmbed/mbedtls/issues/639.
NOTES:

This PR includes tests.
This is a backport for #778

Failure in x509parse-suite (https://jenkins-internal.mbed.com/job/mbedtls-pr/425/execution/node/192/log/). DO NOT MERGE pending investigation.

@gilles-peskine-arm: I have fixed the issue.

Changed the code in x509_crl.c according to the latest review comments.

Automatic CI run picked an old version. Running manually: https://jenkins-internal.mbed.com/job/mbedtls-commit-tests/46/

Mbed TLS 1.3 is now End of Life, as has been previously announced.
Unfortunately that means no further releases of Mbed TLS 1.3 will be made, so this PR will not be merged, and is closed now.


Fix ordering of message queue messages

In order to keep the reader channel unblocked we have to handle every done and doneInProc token by sending a MsgNextResult.
I am tempted to combine the token read and switch statements in  rowsQ.NextResult and rowsQ.Next into a common helper but I don't think it will add much value. Also, as TDS evolves, they may need to diverge in behavior at some point. As written, it's fairly clear which token types each function expects to see in the stream.

@kardianos hi can you look at this one? I need it to unblock go-sqlcmd.
thx


Proposal: change leading option to line-height

I propose deprecating the par.leading option, and add a par.line-height option instead.
Motivation
The current leading model is broken
Current leading model specifies the space between bottom edge of last line and top edge of the next line. This is fine when every line frame is of the same height but becomes undesirable when some lines become taller.  See https://github.com/typst/typst/issues/1028#issuecomment-2029983751 for example. To alleviate the problem, currently Typst hacks into the bounding box of inline formula. However, this workaround is not ideal as it leads to the exact issues described in #1028 and lacks a straightforward solution.
Furthermore, line spacing becomes uneven when text with different size appeared in paragraph. No proper solution exists under current leading model.
Typst:

LaTeX:

The current leading model is confusing and inconsistent with precedence
Typst define leading as “The spacing between lines”. However, other typesetting software such as Adobe InDesign and Affinity Publisher use the term “leading” to refer to the distance between text baselines. Other typesetting systems like CSS, LaTeX, and Microsoft Word do not employ the term “leading”, yet they all relate line spacing to the distance between baselines.
Typography guidelines (example) consider line spacing in terms of baseline distance too.
Proposal
Deprecate the leading option and introduce a new option called line-height, which represents the basic distance between baselines. leading can be removed in the future version along with locate function.
For each line frame $L_i$, define $H_i$ as the distance from the top edge to the baseline (height), and $D_i$ as the distance from the baseline to the bottom edge (depth). During layout processes, Typst should insert a blank frame of height $x$ between two lines, $L_1$ and $L_2$. The height of this frame is determined by:
$$x = \max(0, D_1 + H_2 - s)$$
where $s$ represents the line-height value. Essentially, we maintain consistent baseline spacing unless there is an collision.
In the future, an additional option min-line-gap$=g$ can be added, changing the above formula to
$$x = \max(g, D_1 + H_2 - s).$$
See below for the explanation of $g$.
Alternative
The TeX model
(Reference: The TeXBook, p.77-80)
TeX employs the following formula:
$$x = \begin{cases}D_1 + H_2 - s, &D_1 + H_2 -s \geq l\\g, &\text{otherwise}\end{cases}$$
where $x$ is the space inserted between lines, and $s$, $l$, $g$ corresponds to \baselineskip, \lineskiplimit and \lineskip respectively. Notably the first formula presented in Proposal section is a special case where $l = g = 0$. So the proposed formula is compatible to the LaTeX algorithm.
https://github.com/typst/typst/issues/1028#issuecomment-2124864812 demonstrated an instance of the model in Typst where $s=14\text{pt}, l=0,$ and $g=1\text{pt}$.
The InDesign model
From InDesign's document:

The default auto-leading option sets the leading at 120% of the type size. […] By default, leading is a character attribute, which means that you can apply more than one leading value within the same paragraph. The largest leading value in a line of type determines the leading for that line.

This model is not suitable for Typst because it do not play well with inline formulas.

with the largest "element height + leading" determining the line height.

i think it is how current model works? the problem is that, once the "largest element" becomes too large, you no longer want to use the original leading(which is designed for not-so-large cases), but a much smaller value, like 1pt. And that is why inline math are pretending if they are actually smaller.

with the largest "element height + leading" determining the line height.

i think it is how current model works? the problem is that, once the "largest element" becomes too large, you no longer want to use the original leading(which is designed for not-so-large cases), but a much smaller value, like 1pt. And that is why inline math are pretending if they are actually smaller.

Why couldn't it just always be 1 pt for inline math then?

Why couldn't it just always be 1 pt for inline math then?

i havent think in detail and im not sure if it is a good idea. i personally perfer @peng1999 's because the idea behind is backed by *TeX and is battle tested.
One thing to notice is that "changing the spacing model" sounds difficult but  actually doesnt need change a lot of code, at least for the demo in https://github.com/typst/typst/issues/1028#issuecomment-2124864812, the changeset is very small and straight forward. I've also search all occurance of "leading" and found that there isnt too much usage.

Sorry i didn't read this yesterday.

Allow different elements on the line to have different values of leading

This sounds even more advanced than any model mentioned here. IIUC spacing models mentioned here all have a single leading/line-heigh within a paragraph. And this one can set leading for every element.
But i'm not sure what it will looks like in typst. Currently leading is only defined in par. Should we add leading to all other elements like text, equation(and set leading automatically depending on if it's inline/block)? I feel like it is not a good user interface.

Will leave a comment here once I've had the chance to discuss this with @reknih. I'll try try to recover the original reasoning for the current model.

Related: #159, #1221.
The (good-enough) solution I currently use everywhere: https://github.com/typst/typst/issues/159#issuecomment-1609939896.

The current model
Let me first lay out our original thoughts behind the thoughts behind our original design:

Text and its surrounding containers should interact in a nice, evenly-spaced manner: If you write #rect(fill: aqua, inset: 5pt)[Hello] in Typst today, you get a rectangle with a very even inset. In contrast, if you take CSS for instance, a Hello is not evenly spaced. The left inset looks smaller than top and bottom, and even these two aren't perfectly even.
The reason why Typst's output is evenly spaced is because of the way top- and bottom-edge work. Rather than using ascender and descender (plus half-leading in CSS), we picked the default edges cap-height and baseline because they most closely reflect the real extent of normal uppercase letters in a font.

Even default spacing: Since cap-height & baseline are closely related to visual edges and the spacing between them (leading) is even, the current leading model gives very even looking spacing independently of the font. With a line-height based model, changing the font without changing the line-height can give a widely varying look.

Correspondence between metrics for line and paragraph spacing: The line leading and block spacing work in very similar ways and are therefore metrically compatible: Specifying twice the amount for block.spacing as for par.leading will lead to twice the visual spacing.

With the existence of top-edge and bottom-edge, leading was a natural and simple way to define the spacing, so we didn't see reason to complicate things further. Notably, handling math equations well was not a design goal at the time because Typst didn't have support for equations at the time. :P

The proposed model

The obvious main benefit of the proposed change is that it handles equations more nicely. But it's also nice that not only font size, but also font change (e.g. raw block) doesn't lead to almost unnoticable shifts in line layout. So that's a big plus.

That the line height doesn't react to font change is both a benefit and a downside at the same time, in my opinion. It leads to a less even look when changing fonts, but leads to more predictable behaviour and less layout shifting when changing fonts.

For the spacing between lines, I believe the proposed change is good. I think what's still important to discuss is how all of this affects the remaining metrics: The bounding box of first and last line and the spacing between paragraphs:

I assume, since the proposal doesn't say anything special about the first and last line, that they should remain as-is. This means we would retain the nice even spacing interaction with containers, which is good.

At the same time, this raises the question of how equations are handled in the first and last line. If we remove the current equation slack hack, then almost all equations will have a non-zero descent, and as a result a final line with an equation in it will lead to different container bounds than one with an equation.

Moreover, the question is how paragraph spacing interacts with this. Right now, the spacing between paragraphs is defined as block.spacing (though I'm considering to move it to par.spacing for discoverability and also since paragraphs are not blocks per se). With a line-height-based model, should this stay as-is? This would mean no metrical correspondence between the values specified for paragraph spacing and line height.

This is only slightly related, but still somewhat relevant: https://github.com/typst/typst/pull/4390

When implementing this in #4236. I found it hard to deal with spacing between paragraphs. Especially for a tight list/enum/term.
Paragraph spacing difference
This leads to another difference in typst and LaTeX. In typst, the spacing between paragraphs is defined as the distance between the bottom edge of previous paragraph and the top edge of current paragraph. If you set it to 0, these 2 paragraph will be very close.

However, in LaTeX, it layouts text line by line, and each line always has a minimal spacing with the first line. If we set \parskip to zero, it will make the distance between paragraphs looks like the distance between lines within a paragraph.
\usepackage{parskip}
\setlength{\parskip}{0pt}

Tight list implementation
Back to the tight list implementation issue. In LaTeX, each list item is a paragraph. To make a list look tight, simply remove all extra inserted spaces, like setting \parskip, \itemskip to 0.
In typst, the implemetation is similar (at least for term list). The distance between paragraphs should be carefully calculated. In the previous model, it should equals to leading: the distance between lines' top/bottom edge.
However this make it very hard when it comes to the line height model. In this way, we don't know "the distance between lines' top edge and bottom edge" unless we can see the ascent and descent of lines. And currently I cannot get it when it cross the boundary of paragraphs.
I don't know if there is a way to robustly get "the descent of the last line in previous par" and "the ascent of the first line in current par". Or how hard it would be to implement this mechenism? If this is possible, we can do this and get a nice tight list. Otherwise we might need to consider how to deal with paragraph spacing in this proposal cc @peng1999

@peng1999 do you have any thoughts on my response?

@laurmaedje These are some of my thoughts.

That the line height doesn't react to font change is both a benefit and a downside at the same time, in my opinion.

Actually it can react to font change. Just set the line-height to em's.

Moreover, the question is how paragraph spacing interacts with this.

The core idea of the proposal is to consider baseline when calculating spacing. In line spacing, we maintain the equation:
$$\text{space between baselines} = \texttt{par.line-height}$$
In paragraph spacing, we effectively deal with baseline distance between last line of the previous prargraph and the first line of the current:
$$\text{space between baselines} = \texttt{par.line-height} + \texttt{par.spacing}$$
The similar calculation happens at tight list/enum/term. See https://github.com/typst/typst/issues/4224#issuecomment-2171089296 for implementation details.

Reguarding to the spacing related to surrounding containers, I don't think there is anything that need to be changed.

Actually it can react to font change. Just set the line-height to em's.

Then it reacts to font size change, but not to font change. 1em == text.size independently of the font.

In paragraph spacing, we effectively deal with baseline distance between last line of the previous prargraph and the first line of the current ...

That's definitely possible, but would definitely require further changes as paragraphs cannot be considered as isolated frames. Still doable.

Reguarding to the spacing related to surrounding containers, I don't think there is anything that need to be changed.

Then, then equation problem remains for the ascent of the first line and descent of the last line.

The first and last line is related to "text inside a container" problem you mentioned, but I think the problem is orthogonal.

That's fair to an extent (both solutions don't fix it), but I think the various problems with equations still need to be considered holistically.

@laurmaedje Could you elaborate more about the "equation problem"? (And maybe especially about the first line and last line) I hope we are on the same page. I suppose you mean that current line height PR only fixed #1028 within a paragraph. But the distance between paragraph will become too much in that PR if inline equation appears in the first/last line of a paragraph.

if we get rid of the slack / reduced height of equations, add line-height, but keep top-edge and bottom-edge as they are now, then the first and last lines will fully expand much more due to equations than they do currently.

For me I think it is like we need to employ similar method in this proposal. Maybe, instead of using "distance between bbox" to measure paragraph spacing, we need use something like \parskip and do similar max(...) calculations. But I'm really not sure about this at this moment. I need checkout how LaTeX handles this.

it would happen quite quickly since many equations have a top edge exceeding the text top edge.

BTW, what's expected behavior? I'm afraid it will never look like previous slackness hack since it manually fake the bbox of equations so it is... not correct. For me, the ideal result is that the distance between paragraphs will get bigger but shouldnt be too much.

BTW, what's expected behavior?

I'm honestly not sure.

Maybe, instead of using "distance between bbox" to measure paragraph spacing, we need use something like \parskip and do similar max(...) calculations.

Perhaps. I am not just wondering about the spacing between paragraphs though, but also about the one from the top of the page / container to the first baseline. And similarly from the last baseline to the bottom of a container.

Maybe a dumb thought, but could we support both definitions and call the one we have "leading" and the new one "line-spacing"? I know it could be somewhat confusing and would add to the kitchen sink argument and I don't know how that would behave with the issues mentioned here but idk.
I do like this definition we have since it is easy to understand but it is true that converting or porting templates from typesetting tools with other definitions is difficult and since there's no solid conversion, it is hard to rectify.

I would also prefer to keep both, just because it's more customizable, but I'm afraid it will put too much overhead on maintaining both modes. But maybe it's not that hard to do, IDK.

I think having both would be the worst of both worlds

In my experience it is hard to have a leading algorithm that is right for all scenarios. Some are more generally useful than others but I don't think there is one magic bullet. Over at SILE we ship with five different leading algorithms (tex, fixed, fit-font, fit-glyph, and css) out of the box, and users can easily supply their own leading calculation function in a 3rd party package or even inline in a document.
We have also had a long standing issue considering changing the default from tex to fixed as well. The problem is it isn't a clear cut win in all scenarios.
I find in my own projects that I use different ones even inside the same project (e.g. the covers or spine of a book, the imprint page, content inside tables, poetry, or the body of prose books might each be best suited to a different way of figuring leading. It isn't just a matter of tuning parameters on one algorithm either, sometimes a different algorithm can be useful.

Based on comments here, in other issues, and also on Hackernews, I want to clarify one thing: I'm not at all against changing the line spacing model and I'm also not defending the current model because I want to keep it.
I just want to make sure that if we change this, we don't do it hastily, but rather think things through properly. Otherwise, we will end up changing it twice. I was too occupied with other things recently to properly invest time into this issue, but that doesn't mean that it's disregarded. Things just take a bit of time sometimes.

Having extensive experience working with typography and layouts in HTML/CSS, DTP tools like Illustrator/InDesign, Sketch and Figma, as well as some experience in LaTeX, I want to add my two cents.
Please keep in mind that this is mainly from a user perspective. I hope some of what I write adds value by offering a more complete picture of the topic, as @laurmaedje wisely aims to do, to prevent making changes twice.
Appreciation time
First, I want to mention that @peng1999 created an great issue here, which goes far beyond the usual "please make line height work." I think the ideas here are already a great starting point.
And Laurenz, I want to applaud your response to this issue and many others. Your calm, friendly, and community-oriented approach to handling proposals is an under-appreciated skill, and I hope it will greatly contribute the success of Typst in the long run.
The most basic case
The strong reaction from many people on this issue may stem from a basic scenario: an institution or other entity requiring 12pt Arial with a 1.5 line height.
Ideally, you want to maintain consistent line height throughout the document, creating a basic form of a baseline grid.
For example, you struggled with line height consistency in your own thesis due to the case mentioned in this issue:

What usually happens: People set the line height to 1.5, then compare it to Word (for social sciences) or LaTeX (for STEM) and experience a mini breakdown, because you now have 2 (or 3) different versions.
The strong reactions in some of the issues, with replies suggesting that "leading" was chosen due to historical practices, might have been interpreted by some as: you set a 10pt font size and get 9.6pt because that's how Gutenberg did it. (I'm joking here.) Even though it was never intended to keep this as is.
Typesetters using leading for letterpress printing typically handled one size per line. Today, it's common to have different font sizes or even different fonts per line. Monospace code blocks or 🦥 are just two obvious examples. In this sense, the use of leading to achieve a certain line height was more of a technological constraint than a feature.
Some ingredients for dealing with line height in layouts
Laurenz, you mentioned here that your thoughts on even spacing in (inline-)blocks elements were one of the reasons for the current model. You also briefly mentioned here that you would want Typst to be able handle certain DTP tasks, such as magazine-like layouts.
In my experience the following ingredients are helpful to achieve that:

Line height (baseline to baseline) to align text on the same line, in the same same block as well as across blocks of text (the last part is important)
Baseline adjustment for single characters or sequences of characters (typst already has this feature)
Optional, but premium: A baseline grid (necessary for serious work, but optional in the sense that few tools get it right)
Optional: Inheritance

Having a baseline grid is a beast of its own and probably a separate feature, but it might make sense to consider the possibility, as this needs to hook into the line heights, and I suppose this is what you mean by "thinking it through first."
Your easy to use #rect(fill: aqua, inset: 5pt)[Hello] example could be kept easy, if inline-block elements would honor the line-height of their content. This is what CSS does.
That said, I think opinionated spacing is a slippery slope. Default spacings often do more harm than good or, in other words, cost more time than they save. Thus the rise of things like reset.css or normalize.css. (Different topic)
But ideas like special treatments for the first or last lines and mixing or collapsing block-level with text spacing can lead to utter chaos really quickly.
If it helps anyone involved, I can provide a few visual examples that showcase common scenarios related to handling line height in layouts and typesetting. Since this post is already too long, I refrained from making it even longer.

@woerndl you may want to join the Discord. That's where most of the nitty gritty discussion takes place


Migrate: Nextjs

The aim for this PR is to migrate to NextJS
This PR will include a bunch of changes and we must make sure that everything is aligned with what main/dev

src\hooks\use-site-metadata.tsx needs to be implemented, temporarily removed until clearing other errors

@Rodanus @red-game-dev it's up for review. Tested & seems stuff passes + we get +~6pp on the migration. Added some extras to lift it up 👌


data insertion doesnt bind data correctly

Pretty new to this one
Added SQLite.swift package using swift package manager. Selected 0.15.3 version
Followed the steps in inserting the record, creating db and reading records.
But when i hit the insert record the column seems to be nonexistent at run time.

This is how I try to call the insert, I was testing on sending an object DataModel to it, it does read the object but cannot seem to pass. The insert statemetn in the terminal suggest there are nothing on the insert statement.

Changing the column declaration to SQLite.Expression fixed the issue.


🐞 Issue with active line highlight

Description
Some part of the utility area appears to conflict with CodeEdit's highlighting the active line:
https://github.com/CodeEditApp/CodeEdit/assets/65467530/9f88452b-222e-40ff-ac4d-1c8d7d92d3ff
To Reproduce

Select any line
Move the utility area/scroll the page
The highlight should render oddly

Expected Behavior
The highlight should be independent of the utility area.
Version Information
CodeEdit: [e.g. 0.0.x-alpha.y]
macOS: [e.g. 13.2.1]
Xcode: [e.g. 14.2]
Additional Context
No response
Screenshots
No response

The issue becomes much more obvious when selecting all text with cmd + A.

Even odder, the highlightable section appears to correspond to the syntax highlighted section:

And in cases when the overall file length (by rows) is small, the entire thing is able to be highlighted:

But then goes back to the errored behavior after a certain threshold:
https://github.com/CodeEditApp/CodeEdit/assets/65467530/d3495ab5-d058-4ecb-97d2-364b77f068ac


add missing fan info to dumps

Issue
Added max fan speed to json dump and current fan speed to normal dump.
I haven't been coding in Rust, but I hope this was simple enough for me not to butcher it :)

Merge this PR. Thanks!


Testing - Add fake countries to bootstrap-classify for testing

I think this is done

i think this is done as well chore(countries): Add fake countries used in testing #4#5

thanks


NameError: name 'dataset' is not defined

output of utils/demo.py
NameError: name 'dataset' is not defined
what is dataset  as it's not imported

Hi,
This function comes from the original repository of RODNet and is not used in the repository.
Colin


adds windows option to the whole tutorial

Such awesome job on #12
There is still a $ jekyll serve in part two and some Terminals to turn into cmds, but this can be updated later.


calculate Voltage and resistance

maybe a nice to have is to calculate Voltage and resistance

its a long time ago for me too:-)
here you go...
https://www.esdsite.nl/elektronica/formules/wetvanohm.html

close


Changed promu and release building to Go 1.13.1 as well.

Updated docs.
Signed-off-by: Bartek Plotka<EMAIL_ADDRESS>

Merging as we have partial Go 1.13 move without this.


patch: build only src files

:tada: This PR is included in version 5.2.6 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Update README.md

Update Performance

Add  classification accuracy data of VGG-16, MobileNet V3, ResNet50, DarkNet.

Add  classification accuracy data of VGG-16, MobileNet V3, ResNet50, DarkNet.


[SPARK-37833][INFRA][FOLLOW-UP] Run checking modules of precondition only in forked repository

What changes were proposed in this pull request?
This PR is a followup of https://github.com/apache/spark/pull/35121. We should run "Check all modules" in precondition job only in the forked repository because is-changed.py requires APACHE_SPARK_REF to be set: https://github.com/apache/spark/blob/master/dev/is-changed.py#L60
Why are the changes needed?
To fix broken build in main branch. PRs are not affected.
Does this PR introduce any user-facing change?
No, dev-only.
How was this patch tested?
Should be merged to test.

cc @dongjoon-hyun, let me just merge this to fix up the build. If this doesn't work, I will just revert this and #35121.

Merged to master.


Inkscape SVGs don't load

This is probably just too ancient to be updated or work correctly at all with the current inkscape SVG format, but i'm giving it a shot. When i load my SVGs, i just get infinite loading.

Hey there, thanks for the interest! I'd like to give this a look and see if I can get it working, but just to give you a heads up, it might take me a bit to get around to it.

Hi, has there been any progress on this? I also get infinite loading when trying to load an SVG created in inkscape


Release 0.1.8

Could you release version 0.1.8? It's contains the --strip-key-quotes feature which the README Usage instructions mention. This is a really useful feature and the only way to install it is to clone and make the repo.

@jrhouston Thank you!


Add developer docs on adding/updating dependencies

Adding/updating dependencies requires updates to docs/user/install.md version tables, tool summaries and instructions AND/OR docs/developer/install.md, plus helper install scripts in bash/

See PR #328.

Merged #316.


[BUG] The host system will be stuck when aborting the ISO installation

Describe the bug
The host system will be stuck when aborting the ISO installation
To Reproduce
Steps to reproduce the behavior:

Install Harvester using ISO
Set up all the configurations
Select "No" to abort the installation

Result
The console displays "Installation halted. Rebooting system in 5 seconds", not nothing happens. Using ESC is not able to go back to the previous section

Environment:

Harvester ISO version: master-head
Installation Mode: ISO
Underlying Infrastructure (e.g. Baremetal with Dell PowerEdge R630):

Validated on master-head
After aborting the installation, the system will be rebooted in a few seconds.


Handle python -OO

With optimization -OO docstrings are omitted and will be
None. Only append to the docstring if it exists.

Yeah, looks like this should already be caught by __debug__.


[Fix bug 1206684] Fix username privacy selector alignment.

Tested locally and it's working fine. r+


binoculars in vehicles are not zooming

when you try to use binocs in vehicles - they will not zoom
https://youtu.be/hDmI7FvLTDs

thank you, we are working on it