Add support for phpstan/phpdoc-parser 2

I noticed locally that random test started to fail, turns out it's because phpdocumentor/type-resolver added support for phpstan/phpdoc-parser v2, but this library not ready for phpdoc-parser v2.
I chose minimal version of 1.13 because minimal version of phpdocumentor/type-resolver required it so there should be no changes to composer update --prefer-lowest

Is it not possible to have something compatible like Symfony did with TypeInfo with https://github.com/symfony/symfony/pull/58804 ?

Is it not possible to have something compatible like Symfony did with TypeInfo with symfony/symfony#58804 ?

It's definitely possible, I just did quick fix, this issue probably gonna show up then someone does composer update in their project. Also phpstan/phpdoc-parser should stay in composer.json so this doesn't happen again

@Korbeil I changed PR to add support to v2 instead of locking to v1

Now, do I read this issue correctly in that support for 2.x is added but has yet to be released?

Yes.
You can add "phpstan/phpdoc-parser": "^1.13" to your composer.json as workaround for now

I just released AutoMapper 9.2.0 which should resolve your issue without forcing v1 on phpstan/phpdoc-parser @jorismak https://github.com/jolicode/automapper/releases/tag/9.2.0


Provide windows support for colors

as seen in https://stackoverflow.com/questions/12492810/python-how-can-i-make-the-ansi-escape-codes-to-work-also-in-windows

Thanks for the pull request! I think it makes sense to run os.system("") in the CLI main function instead of when loading ansiterm.py, to avoid an unnecessary os.system("") call when PyDesignFlow is used as library instead of as CLI tool. See c9c96351574d73d3b0817d0d98e1b728e951229e.
Does this work for you?

Seems reasonable and pythonic, importing shouldn't change behavior or have side effects, but users of the library would then need to do the same, for Windows support, but this works for me


Improve Node Startup Latency

Dynamically provisioning nodes quickly is important to ensure workloads can scale out quickly due to demand or recover in the event of infrastructure instability. This issue will track node startup latency improvement work on the EKS Optimized AL2 AMI.
Current work:
Cache Common Startup Container Images https://github.com/awslabs/amazon-eks-ami/pull/938
There are several container images that are commonly needed to bootstrap a node (get it to a Ready state for pods):

pause
aws-node (VPC CNI) images (init and aws-node)
kube-proxy images (minimal and normal)

Disable Startup Yum Update Check https://github.com/awslabs/amazon-eks-ami/pull/1074
There is currently a yum update run that blocks executing the eks-bootstrap script. This update check generally results in 0 updates if you are updating AMIs frequently, but the check takes 5-8 seconds because it hydrates the yum cache. This check also causes version skew across a cluster, where the same AMI ID may run different software versions depending on when it was launched which could cause problems with rollback and node churn.

Remove unnecessary Sleeps in the VPC CNI Initialization https://github.com/aws/amazon-vpc-cni-k8s/pull/2104 (released in v1.12.0)
The VPC CNI had some unnecessary sleeps that resulted in 2-3 seconds of latency starting up. VPC CNI is required to be fully initialized before pods can be created on a node, so the initialization process should be as fast as possible.

Remove init-container from VPC CNI https://github.com/aws/amazon-vpc-cni-k8s/pull/2137
The VPC CNI uses an init container to initialize some kernel settings related to networking that must be run as Privileged. The sequencing of the init container was resulting in some latency on startup. Generally, the VPC CNI would take 9-10 secs to full initialize. The PR above removed the init container and runs it as a regular container in the pod. This allows some parallelization of the initialization and removes the kubelet sequencing latency. The PR results in the VPC CNI's full initialization time to 4 sec. Half of the remaining latency is the container pulls which is solved in the caching PR above (https://github.com/awslabs/amazon-eks-ami/pull/938). Integrating these two PRs together results in a 2 sec full initialization of the VPC CNI.

Add CLUSTER_ENDPOINT parameter to the VPC CNI to avoid kube-proxy race https://github.com/aws/amazon-vpc-cni-k8s/pull/2138
With all the optimizations listed above, a new concern introduced is race between the VPC CNI and kube-proxy. The VPC CNI uses the kubernetes service cluster IP to reach kube-apiserver. This wasn't a concern before since the increased latency of the VPC CNI resulted in kube-proxy almost always winning the race to initialize. After the optimizations, the VPC CNI loses about half of the time and then hangs due to a 5 second timeout on reaching the kube-apiserver. The whole race can be avoided by passing the CLUSTER_ENDPOINT (the kube-apiserver load balancer endpoint) to the VPC CNI to use for initialization. The VPC CNI still needs to wait on kube-proxy to finish before completing the CNI plugin initialization, but the work to get to that point can be parallelized.

💯 for removing the yum update! If you can't completely remove it could it at least be configurable?

Here's a timing chart that is pretty steady from a K8s 1.24 cluster with all of the enhancements mentioned above:
## c6a.4xlarge - i-02ca66ee7f998e438
| Event | Time (seconds) |
| ----- | -------------- |
| Instance Request | 0 |
| Instance Created 15:18:20 | 1 |
| VM Initialized 15:18:30 | 11 |
| Cloud-Init Initial Starts 15:18:35 | 16 |
| Network Target Start 15:18:35 | 16 |
| Cloud-Init Config Starts 15:18:36 | 17 |
| Cloud-Init Config z-Exits 15:18:36 | 17 |
| Cloud-Init Final Starts 15:18:36 | 17 |
| Cloud-Init Initial z-Exits 15:18:36 | 17 |
| Network Target Ready 15:18:36 | 17 |
| ContainerD Starts 15:18:37 | 18 |
| Cloud-Init Final (user-data) z-Exits 15:18:39 | 20 |
| Kubelet Starts 15:18:39 | 20 |
| Kubelet Node Registration 15:18:40 | 21 |
| AWS Node Container Starts 15:18:41 | 22 |
| kube-proxy Started 15:18:41 | 22 |
| VPC CNI Init Container Starts 15:18:41 | 22 |
| VPC CNI Plugin Initialized 15:18:44 | 25 |
| Node Ready 15:18:50 | 31 |
| Pod Starts 15:18:50 | 31 |

How did you measure these startup times? And what were the startup times before implementing the changes? I am using the terraform karpenter example to start Nvidia GPU nodes and am currently seeing startup times of 2-3 minutes for a node to be ready using the default eks-AMI.

How did you measure these startup times? And what were the startup times before implementing the changes? I am using the terraform karpenter example to start Nvidia GPU nodes and am currently seeing startup times of 2-3 minutes for a node to be ready using the default eks-AMI.

The measurements were taken using some custom tooling that we'll be open sourcing very soon. You'll be able to run the tooling as a daemonset to capture timing metrics for your nodes in a standardized format like shown above.
GPU instance types often take much longer to boot within EC2. I have not focused on exotic instance types like baremetal and gpus. The timings above are for c6a.4xlarge, but I have tested on m5 and c6i with similar results. Notably, i instance types and instance types with d (disk) capabilities will take a little longer to boot as well.
I will update this issue once the timing tooling is available.
Here are timings from before the optimizations:
c5.xlarge - i-08f01b534e902dbf7

Event
Time (seconds)

Instance Request
0

Instance Created 16:18:45
1

VM Initialized 16:18:56
12

Cloud-Init Config Starts 16:19:05
21

Cloud-Init Initial Starts 16:19:05
21

Cloud-Init Initial z-Exits 16:19:05
21

Network Target Ready 16:19:05
21

Network Target Start 16:19:05
21

Cloud-Init Config z-Exits 16:19:13
29

Cloud-Init Final Starts 16:19:13
29

ContainerD Starts 16:19:14
30

Cloud-Init Final (user-data) z-Exits 16:19:18
34

Kubelet Starts 16:19:18
34

Kubelet Node Registration 16:19:23
39

kube-proxy Started 16:19:26
42

VPC CNI Init Container Starts 16:19:28
44

AWS Node Container Starts 16:19:35
51

VPC CNI Plugin Initialized 16:19:39
55

Node Ready 16:19:44
60

Pod Starts 16:19:48
64

Here's a gif of startups taking around 25 seconds by cherry-picking a v1.26 kubelet change to v1.24 (along with all the optimizations mentioned above).

@bwagner5 how does this compare to Bottlerocket? Also are we likely to see this change backported for EKS?

bit +1 on getting all these improvements to BR too

@bwagner5
Other than the changed mentioned above do I need to take can network considerations (like using VPC endpoint) and bootstrap (hadrcoding API url, CA, Kube-dns ip ) considerations to achieve above 31 second results ?

I tested it with Karpenter which will automatically hardcode the API URL, CA Bundle, and kube-dns IP as params to the eks bootstrap.sh script. The EKS DescribeCluster call that occurs in the bootstrap.sh script shouldn't take much time though, so I suspect you can get similar results without hardcoding the params, at least for single node launches. You may run into rate limiting on the API call though when doing large node scale outs.

Understood, wont it help with speeding up downloading aws-node and kube-proxy images if ECR,S3 VPC endpoints are enabled.

@kakarotbyte You may see some improvement using the endpoints but I wouldn't expect it to be significant (haven't tested that though). However, in my tests I used the AMI's cached images of aws-node and kube-proxy though.

FYI I've open sourced the node latency timing tool that I've been using to create the timing charts and emit metrics for my testing here: https://github.com/awslabs/node-latency-for-k8s
Would love feedback on how / if this works well on other OS distributions (I've only been using the eks-optimized AL2).


Checking model output

Hi, I wanted to know if you have implemented to check the model output at test time. Because we had aligned labels according to tokens so model output would be according to that. How can we convert them back to original which was before aligning ?
Best Regards

Hi, here is how we did the conversion from predictions to text again: commit


Node taints for Node Groups

I have issues
I'm submitting a...

[ ] bug report
[ ] feature request
[X] support request - read the FAQ first!
[ ] kudos, thank you, warm fuzzy

What is the current behavior?
I need to be able to set taints on newly created node groups. These node groups will be highly varialbe in terms of sizing, so the taints are required on creation.
If this is a bug, how to reproduce? Please include a code sample if relevant.
I thought of adding kubelt_extra_args to the node group defination, but it didnt work, or perhaps thats not the right way to do it?
    az3-c = {
      desired_capacity = 1
      max_capacity     = 2
      min_capacity     = 1
      subnets          = ["subnet-004514be54bcd7eb7"]
      kubelet_extra_args = "--node-labels=function=data_only --register-with-taints=function=data_only:NoSchedule"
      instance_type = "m5a.4xlarge"
      additional_tags = {
        Name = module.eks_dev_label.id
      }
    }

What's the expected behavior?
Was hoping for a node taint to be applied.
Are you able to fix this problem and submit a PR? Link here if you have already.
Environment details

Affected module version: "12.1.0"
OS: Mac
Terraform version: Terraform v0.12.26

Any other relevant info

Maybe it helps you to see what I use?
  worker_groups_launch_template = [
    {
      name                    = "prometheus-spot-1"
      override_instance_types = ["m5.2xlarge", "r5.xlarge", "r5ad.xlarge"]
      spot_instance_pools     = 3
      asg_max_size            = 5
      additional_userdata     = module.bastion_vpc1.user_data_users
      kubelet_extra_args = join(" ", [
        "--node-labels=cluster_name=xxxxxxx,kubernetes.io/lifecycle=spot,worker_group=prometheus-spot-1,app=prometheus",
        "--register-with-taints app=prometheus:NoSchedule"
      ])
      enabled_metrics = local.enabled_metrics
      subnets         = aws_subnet.private_extra.*.id
      tags = [
        {
          "key"                 = "k8s.io/cluster-autoscaler/enabled"
          "propagate_at_launch" = "false"
          "value"               = "true"
        },
        {
          "key"                 = "k8s.io/cluster-autoscaler/xxxxx"
          "propagate_at_launch" = "false"
          "value"               = "true"
        }
      ]
    }
  ]

Hi @mattlawnz, it looks like you're using the Managed Node Groups. These do not currently support node tainting. There is a request over on the AWS team's roadmap for this feature: https://github.com/aws/containers-roadmap/issues/864
If you really need to work with node taints then I suggest you use the traditional worker groups similar to Max's example above.

Thanks all for the examples & explanation. I have this working as a worker group.


Portfolio suggestion

Want to add my portfolio here ;-)

This is definitely a solid, good portfolio. But it doesn't really feel memorable to me, or "awesome", when compared to things like

http://bellbros.com
http://ktsuskin.com
http://www.rleonardi.com/interactive-resume
https://www.shantellmartin.art


Set FIRSTDAYOFWEEK to sunday for arabic locale (#780)

This pull request address issue: https://github.com/google/closure-library/issues/780

Please look at the reply here: https://github.com/google/closure-library/issues/780#issuecomment-267144177


FancyZones - Naming zones

Description of the new feature / enhancement
It would be nice to be able to name the different zones so that it is easier to remember what should be in what zone.
title or title + description w/e is best
Scenario when this would be used?
When using FancyZones
Supporting information
No response

/dup #16770


ndjson

Implement ndjson https://docs.pola.rs/api/python/stable/reference/api/polars.read_ndjson.html and https://docs.pola.rs/api/python/stable/reference/api/polars.DataFrame.write_ndjson.html as a data saver/loader.
It should go into https://github.com/DAGWorks-Inc/hamilton/blob/main/hamilton/plugins/polars_post_1_0_0_extensions.py, one class for the writer, on class for the reader, e.g. much like how the polars json reader and writer  are structured.
There should be requisite tests to exercise the functionality. We can do one test that writes & then reads it's own output.
Then an example should be added to the directory called materialization under example/polars. It should mirror the current structure in there.
If there's an issue with type hints, let me know and we can chat through it.

Hi @skrawcz , thanks for the detailed instructions!

@iblameRishi need any pointers? are you still interested in this task?

Hey, sorry yes still interested! will make the PR by tomo

@iblameRishi just checking in. How are things?


feat: expose probe in mysqlcluster

Add MySQLLivenessProbe MySQLReadinessProbe SidecarReadinessProbe ExporterLivenessProbe in .Spec.PodSpec to allow the user special probe

closes/fixes #879

[x] I've made sure the CHANGELOG.md will remain up-to-date after this PR is merged.

@cndoit18 PTAL

resole the code conflect plz @HappyUncle


Investigate PageSpeed to speed up serving

PageSpeed has been turned down, so looks like there's nothing to do here.


Typescript warnings when trying to add additional props to SearchResults

From looking at the type definition for SearchResult.d.ts, the [key:strig]: any should allow me to add any additional props.  However, when in typescript it will give warnings about them.
Warning: Failed prop type: Invalid prop results supplied to Search
It seems like it doesn't effect the functionality, but console gets flooded with these warnings  Is this a typescript issue only and is there a workaround.
Example:
When you define the results:
  {
    "title": "Gusikowski LLC",
    "description": "User-friendly reciprocal parallelism",
    "image": "https://s3.amazonaws.com/uifaces/faces/twitter/alecarpentier/128.jpg",
    "price": "$34.11"
  }

In my case, I added
  {
    "tester": "a"
    "title": "Gusikowski LLC",
    "description": "User-friendly reciprocal parallelism",
    "image": "https://s3.amazonaws.com/uifaces/faces/twitter/alecarpentier/128.jpg",
    "price": "$34.11"
  }

"tester" will be treated as an unknown property and warnings will come.
Also another question, is it possible to update the id to be an any.  In my case, i have a string value of a GUID but because it's a number I can't set it.
export interface SearchResultProps {
  [key: string]: any;

  /** An element type to render as (string or function). */
  as?: any;

  /** The item currently selected by keyboard shortcut. */
  active?: boolean;

  /** Additional classes. */
  className?: string;

  /** Additional text with less emphasis. */
  description?: string;

  /** A unique identifier. */
  id?: number;

Thanks,
Derek

Warning: Failed prop type: Invalid prop results supplied to Search

This comes from propTypes and duplicates #1681.

Also another question, is it possible to update the id to be an any.

any - no, but I almost sure that it can string. Good suggestion, PR is comming.


The vanilla image contains .NET 4.6 now

ok


fix livestream startup issue

fixed some small bugs in livestream extension that was throwing errors when I downloaded a fresh clone of lnbits and tried to launch it.

thank you, this is needed!


jre directory has version and is hardcoded on mac

we should change the name of the directory from "jre1.7.0_60.jre" to just "jre" to make it easier to upgrade.  i tried that though and i got some weird dynamic loading error, so there is somewhere in the code or in the xcode project that must be updated but was not obvious to me.
right now, we have upgraded to 7u71 but it's in a folder named 7u60 which is confusing.

not developing the non-electron anymore


Add DNS-Challenge For LetsEncypt Cert

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
When Getting a cert it's obviously going to block me since my ISP blocks 443,80, and 8080. Also when I do it on my own it won't input the files.
Describe the solution you'd like
A clear and concise description of what you want to happen.
I would like the choice if Lets Encrypt cert fails the first time it will ask if you want to try via DNS.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
I haven't really found an alternative solution the only one is getting the cert from certbot yourself but then it won't input!
Additional context
Add any other context or screenshots about the feature request here.
I want to say thank you for this amazing piece of software!

I am currently using Synology's reverse proxy feature because of how easy it is with Certs, its biggest flaw is I need to manually open port 80 and then close it when I am done, so auto-renew doesn't work. I run my things on port 8080 mainly for a little added security (I know that that isn't much) and because Synology can't do port 80 or 443, but it would be even better to DNS Challenges. Ideally (and I know this varies depending on how a DNS providers API works) but Nginx-Proxy-Manager would have prebuilt code such that a user would just need to edit the API call in-order for the functionality to be automated.

@rml596 I have found a really easy solution using https://www.sslforfree.com/ Then Getting a wildcard cert all you have to do is *.example.com to get a wildcard cert which is easy to have one cert to renew every 3 months. Then import manually.

I really would like to see this feature with DNS-Challenge to not have to have port 80 forwarded.

+1
a posibility to create wildcard-certificates with letsencrypt would be very useful!

Yes
On Tue, May 12, 2020 at 8:21 AM Michael Schmid<EMAIL_ADDRESS>wrote:

+1
a posibility to create wildcard-certificates with letsencrypt would be
very useful!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/jc21/nginx-proxy-manager/issues/378#issuecomment-627307948,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKNJLO6WYJA3V4HQOIC5X4DRRE5LDANCNFSM4MKYQFHA
.

--
Thank You,
Connor Hackenberg

+1 for adding the dns-challenge method for issuing/renewing letsencrypt certs. My ISP blocks port 80 so http verification doesn't work for me

+1 my ISP (all ISP in China) also block 80 and 443 ports, must use DNS challenge for Let's Encrypt

This is possible since the end of 2020.


Add new block processing algorithm to RuntimeHost

Implement the algorithm from #281 using the database operations implemented in #290 and EthereumAdapter functionality added in #312 as a replacement for the old subscribe_to_event approach.

Obsolete, see #372

I've repurposed this to be about the block-stream-based event processing in SubgraphInstanceManager, SubgraphInstance, RuntimeHost and WasmiModule. So it isn't really obsolete.

Oh OK sounds good!


Selection is empty when programmatically assigning a selection

What is the problem?
The Selection is empty when programmatically assigning a selection using .select.
What is the current behavior?
If you assign a selection programatically (eg: selection.select(["div:nth-child(5)"]);)
the events like "move" are called accordingly but getSelection()returns an empty array.
Please provide the steps to reproduce and create a CodeSandbox.
https://codesandbox.io/s/viselectvanilla-forked-3wxov?file=/src/main.ts
What is the expected behavior?
getSelection()should return the selected elements.
Your environment:
Toolset (e.g. webpack, vite, vue-cli...):
Version (@viselect/<insert package>): 3.0.0.beta9
Browser:  Safari
OS:  Mac

Jup, that's a bug :) I'll release a new version in the upcoming days!

v3.0.0-beta.10 with this fix is released :)


Increase the value of a kernel parameter to stop NVMe remounts

🗣 Description
Setting the nvme_core.io_timeout kernel parameter to the highest allowable value fixes a bug where NVMe volumes occasionally fail and are mounted read-only.
See this link for more details.
💭 Motivation and Context
We have been seeing cases where NVMe volumes in AWS sporadically encounter a timeout condition and are remounted read-only.  This behavior interferes with the operation of the Cyber Hygiene commander, for example, and must cease.
🧪 Testing
I added a test to verify that the molecule code functions as intended.
TODO: I intend to deploy an image for each OS that we use and verify that the kernel parameter is set correctly.
🚥 Types of Changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (causes existing functionality to change)

✅ Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

I built a one-off CyHy Docker image and deployed it.  It looks like the /etc/modprobe.d approach is working great!


protonup-qt: 2.7.7 -> 2.8.0

Description of changes
Now that pyside6 is packages I am trying to change the package to build from source. I have packaged the remaining dependencies.
https://github.com/DavidoTek/ProtonUp-Qt/releases/tag/v2.8.0

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Build is currently failing because it cannot find PySide6, not sure how to remedy this yet.
> ERROR: Could not find a version that satisfies the requirement PySide6-Essentials>=6.3.0 (from protonup-qt) (from versions: none)
> ERROR: No matching distribution found for PySide6-Essentials>=6.3.

It's clear that the PySide6 package available on nixpkgs isn't useable for ProtonUp-Qt. I would recommend changing this PR to use the AppImage.

What do you mean it is clear the package isn't usable? I believe the issue is more likely to be with my package and could be fixed.


(PUP-10124) fix slot for portage package provider

until now slot was expected to contain : which is not the case in current Linux Gentoo

My concern on this is that the ticket states that it was working in 6.7.2 and i don't see any relevant changes on this file between 6.7.2 and 6.10.0


Order_id not set Klarnapaylater order

Expected behavior
Order_id set in ps_mollie_payments (orders with payment method Ideal or creditcard order_id is set)
Actual behavior
order_id is empty in ps_mollie_payments (attached screenshot)
If order_id is not set in database it's not possible to start klarna payment automatically.
Steps to reproduce the behavior
Produce an order with Klarna using frontoffice of Webshop.
Environment

PrestaShop version: 1.7.
Mollie module version: latest version
PHP version: 7.2

Hello there, @basemedia!
Could you please clarify whether the order made with Klarna is finished when you see the NULL value or is it just created and unpaid? As order_id is set when the order is created after payment is finished. If you create a payment but don't finish it then the order is not created and so there is no order_id.
Looking forward to your reply!
Best regards,
Invertus Support team

Goodmorning,
The order is finished correctly (the order is present in the backoffice of prestashop). The bank_status (in the table) is "open" though(screenshot). The status of the klarna order is "authorized" in the backoffice of Mollie. Maybe it has something to do with this?

Thanks for the additional details, @basemedia!
Our developer asked if the issue is related to this one order only or if all of the orders made with Klarna are affected. Most likely the issue is related to a faulty webhook, so it would be really helpful if you could check the order history on your account at mollie.com and see if the webhook call was successful, or if any error can be seen.
To deal with the case efficiently, could you also share your BO+SSH+FTP credentials to<EMAIL_ADDRESS>so that our developer could check the issue out from their side?
Looking forward to your reply!
Best regards,
Invertus Support team

It's on all klarna orders. Somehow the transaction id is not set (this was an issue before) Maybe the update of the module went wrong?

Hello, @basemedia!
Without a proper investigation, it is hard to tell what could have caused the issue, in this case, we would need access to your shop via BO and SSH. This way we could investigate the issue and hopefully implement a fix.
Waiting for the details!
Best regards,
Invertus Support team

Hi @basemedia,
Due to inactivity, I will mark this issue as resolved. Let us know if you will have any other questions or when you would like to continue!
Best regards,
Invertus Support team


Green commander do not apeare in the commander selection menu

Hello,
I tried your mod but couldn't test it properly because no green commander appeared in the commander selection menu.
Otherwise great mod keep it up, I find the idea of a biological unit very cool.
If you need a possible French translation i can help you.

A fix has been pushed and it should be live in a few hours
not looking for translations atm but will keep it in mind


panic: reflect.Set: value of type time.Duration is not assignable to type int

Gitea version (or commit ref): Gitea version 1.0.1 taken from https://dl.gitea.io/gitea/1.0.1/gitea-1.0.1-linux-amd64
Git version: <IP_ADDRESS>
Operating system: CentOS 7 64-bit
Database (use [x]):

[ ] PostgreSQL
[x] MySQL
[ ] MSSQL
[ ] SQLite

Can you reproduce the bug at https://try.gitea.io:

[ ] Yes (provide example URL)
[ ] No
[x] Not relevant

Log gist:

$ /home/git/bin/gitea web --config /home/git/etc/gitea.ini
panic: reflect.Set: value of type time.Duration is not assignable to type int

goroutine 1 [running]:
panic(0xef8720, 0xc4203a0200)
        /usr/local/go/src/runtime/panic.go:500 +0x1a1
reflect.Value.assignTo(0xf728a0, 0xc4203a01f0, 0x86, 0x101b933, 0xb, 0xef7d20, 0x0, 0xf728a0, 0xf728a0, 0xc4203a01f0)
        /usr/local/go/src/reflect/value.go:2163 +0x35c
reflect.Value.Set(0xef7d20, 0x17f6010, 0x182, 0xf728a0, 0xc4203a01f0, 0x86)
        /usr/local/go/src/reflect/value.go:1333 +0xa4
code.gitea.io/gitea/vendor/gopkg.in/ini%2ev1.setWithProperType(0x1814e40, 0xef7d20, 0xc42038d880, 0xef7d20, 0x17f6010, 0x182, 0x100d293, 0x1, 0x0, 0x0)
        /srv/app/src/code.gitea.io/gitea/vendor/gopkg.in/ini.v1/struct.go:153 +0x1c6
code.gitea.io/gitea/vendor/gopkg.in/ini%2ev1.(*Section).mapTo(0xc420384e10, 0xf49240, 0x17f6010, 0x199, 0x17f6010, 0x199)
        /srv/app/src/code.gitea.io/gitea/vendor/gopkg.in/ini.v1/struct.go:234 +0x44a
code.gitea.io/gitea/vendor/gopkg.in/ini%2ev1.(*Section).MapTo(0xc420384e10, 0xee0480, 0x17f6010, 0xc420384e10, 0x0)
        /srv/app/src/code.gitea.io/gitea/vendor/gopkg.in/ini.v1/struct.go:253 +0x111
code.gitea.io/gitea/modules/setting.NewContext()
        /srv/app/src/code.gitea.io/gitea/modules/setting/setting.go:700 +0x266b
code.gitea.io/gitea/routers.GlobalInit()
        /srv/app/src/code.gitea.io/gitea/routers/init.go:43 +0x4c
code.gitea.io/gitea/cmd.runWeb(0xc4202bd900, 0x0, 0xc4202bd900)
        /srv/app/src/code.gitea.io/gitea/cmd/web.go:158 +0xa5
code.gitea.io/gitea/vendor/github.com/urfave/cli.HandleAction(0xf12ea0, 0x11356a0, 0xc4202bd900, 0xc420183d00, 0x0)
        /srv/app/src/code.gitea.io/gitea/vendor/github.com/urfave/cli/app.go:471 +0xb9
code.gitea.io/gitea/vendor/github.com/urfave/cli.Command.Run(0x100dd9c, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x102f35b, 0x16, 0x0, ...)
        /srv/app/src/code.gitea.io/gitea/vendor/github.com/urfave/cli/command.go:191 +0xcc7
code.gitea.io/gitea/vendor/github.com/urfave/cli.(*App).Run(0xc420337380, 0xc42000c180, 0x4, 0x4, 0x0, 0x0)
        /srv/app/src/code.gitea.io/gitea/vendor/github.com/urfave/cli/app.go:241 +0x6a3
main.main()
        /srv/app/src/code.gitea.io/gitea/main.go:42 +0x354

Description
The bug caused by the next setting (found manually without diving into the code):
[mirror]
DEFAULT_INTERVAL = 8h

If the relevant setting is commented then gitea starts successfully.
Configuration
; App name that shows on every page title
APP_NAME = Gitea: Git with a cup of tea
; Change it if you run locally
RUN_USER = git
; Either "dev", "prod" or "test", default is "dev"
RUN_MODE = prod

[repository]
ROOT = /home/git/gitea
SCRIPT_TYPE = bash
; Default ANSI charset
ANSI_CHARSET =
; Force every new repository to be private
FORCE_PRIVATE = false
; Global maximum creation limit of repository per user, -1 means no limit
MAX_CREATION_LIMIT = -1
; Mirror sync queue length, increase if mirror syncing starts hanging
MIRROR_QUEUE_LENGTH = 1000
; Patch test queue length, increase if pull request patch testing starts hanging
PULL_REQUEST_QUEUE_LENGTH = 1000
; Preferred Licenses to place at the top of the List
; Name must match file name in conf/license or custom/conf/license
PREFERRED_LICENSES = Apache License 2.0,MIT License
; Disable ability to interact with repositories by HTTP protocol
DISABLE_HTTP_GIT = false
; Force ssh:// clone url instead of scp-style uri when default SSH port is used
USE_COMPAT_SSH_URI = false

[repository.editor]
; List of file extensions that should have line wraps in the CodeMirror editor
; Separate extensions with a comma. To line wrap files w/o extension, just put a comma
LINE_WRAP_EXTENSIONS = .txt,.md,.markdown,.mdown,.mkd,
; Valid file modes that have a preview API associated with them, such as api/v1/markdown
; Separate values by commas. Preview tab in edit mode won't show if the file extension doesn't match
PREVIEWABLE_FILE_MODES = markdown

[repository.local]
; Path for uploads. Defaults to `tmp/local-repo`
LOCAL_COPY_PATH = tmp/local-repo

[repository.upload]
; Whether repository file uploads are enabled. Defaults to `true`
ENABLED = true
; Path for uploads. Defaults to `data/tmp/uploads` (tmp gets deleted on gitea restart)
TEMP_PATH = data/tmp/uploads
; One or more allowed types, e.g. image/jpeg|image/png. Nothing means any file type
ALLOWED_TYPES =
; Max size of each file in MB. Defaults to 3MB
FILE_MAX_SIZE = 3
; Max number of files per upload. Defaults to 5
MAX_FILES = 5

[ui]
; Number of repositories that are showed in one explore page
EXPLORE_PAGING_NUM = 20
; Number of issues that are showed in one page
ISSUE_PAGING_NUM = 10
; Number of maximum commits showed in one activity feed
FEED_MAX_COMMIT_NUM = 5
; Value of `theme-color` meta tag, used by Android >= 5.0
; An invalid color like "none" or "disable" will have the default style
; More info: https://developers.google.com/web/updates/2014/11/Support-for-theme-color-in-Chrome-39-for-Android
THEME_COLOR_META_TAG = `#6cc644`
; Max size of files to be displayed (defaults is 8MiB)
MAX_DISPLAY_FILE_SIZE = 8388608
; Whether show the user email in the Explore Users page
SHOW_USER_EMAIL = true

[ui.admin]
; Number of users that are showed in one page
USER_PAGING_NUM = 50
; Number of repos that are showed in one page
REPO_PAGING_NUM = 50
; Number of notices that are showed in one page
NOTICE_PAGING_NUM = 25
; Number of organization that are showed in one page
ORG_PAGING_NUM = 50

[ui.user]
; Number of repos that are showed in one page
REPO_PAGING_NUM = 15

[ui.meta]
AUTHOR = Gitea - Git with a cup of tea
DESCRIPTION = Gitea (Git with a cup of tea) is a painless self-hosted Git service written in Go
KEYWORDS = go,git,self-hosted,gitea

[markdown]
; Enable hard line break extension
ENABLE_HARD_LINE_BREAK = false
; List of custom URL-Schemes that are allowed as links when rendering Markdown
; for example git,magnet
CUSTOM_URL_SCHEMES =
; List of file extensions that should be rendered/edited as Markdown
; Separate extensions with a comma. To render files w/o extension as markdown, just put a comma
FILE_EXTENSIONS = .md,.markdown,.mdown,.mkd

[server]
; Listen protocol. One of 'http', 'https', 'unix' or 'fcgi'.
PROTOCOL = http
DOMAIN = localhost
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
; Listen address. Either a IPv4/IPv6 address or the path to a unix socket.
HTTP_ADDR = <IP_ADDRESS>
HTTP_PORT = 3000
; Permission for unix socket
UNIX_SOCKET_PERMISSION = 666
; Local (DMZ) URL for Gitea workers (such as SSH update) accessing web service.
; In most cases you do not need to change the default value.
; Alter it only if your SSH server node is not the same as HTTP node.
LOCAL_ROOT_URL = %(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/
; Disable SSH feature when not available
DISABLE_SSH = false
; Whether use builtin SSH server or not.
START_SSH_SERVER = false
; Username to use for builtin SSH server. If blank, then it is the value of RUN_USER.
BUILTIN_SSH_SERVER_USER =
; Domain name to be exposed in clone URL
SSH_DOMAIN = %(DOMAIN)s
; Network interface builtin SSH server listens on
SSH_LISTEN_HOST =
; Port number to be exposed in clone URL
SSH_PORT = 22
; Port number builtin SSH server listens on
SSH_LISTEN_PORT = %(SSH_PORT)s
; Root path of SSH directory, default is '~/.ssh', but you have to use '/home/git/.ssh'.
SSH_ROOT_PATH =
; For built-in SSH server only, choose the ciphers to support for SSH connections,
; for system SSH this setting has no effect
SSH_SERVER_CIPHERS = aes128-ctr, aes192-ctr, aes256-ctr<EMAIL_ADDRESS>arcfour256, arcfour128
; For built-in SSH server only, choose the key exchange algorithms to support for SSH connections,
; for system SSH this setting has no effect
SSH_SERVER_KEY_EXCHANGES = diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521<EMAIL_ADDRESS>; For built-in SSH server only, choose the MACs to support for SSH connections,
; for system SSH this setting has no effect
SSH_SERVER_MACS =<EMAIL_ADDRESS>hmac-sha2-256, hmac-sha1, hmac-sha1-96
; Directory to create temporary files when test public key using ssh-keygen,
; default is system temporary directory.
SSH_KEY_TEST_PATH =
; Path to ssh-keygen, default is 'ssh-keygen' and let shell find out which one to call.
SSH_KEYGEN_PATH = ssh-keygen
; Enable SSH Authorized Key Backup when rewriting all keys, default is true
SSH_BACKUP_AUTHORIZED_KEYS = true
; Enable exposure of SSH clone URL to anonymous visitors, default is false
SSH_EXPOSE_ANONYMOUS = false
; Indicate whether to check minimum key size with corresponding type
MINIMUM_KEY_SIZE_CHECK = false
; Disable CDN even in "prod" mode
OFFLINE_MODE = false
DISABLE_ROUTER_LOG = false
; Generate steps:
; $ ./gitea cert -ca=true -duration=8760h0m0s -host=myhost.example.com
;
; Or from a .pfx file exported from the Windows certificate store (do
; not forget to export the private key):
; $ openssl pkcs12 -in cert.pfx -out cert.pem -nokeys
; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes
CERT_FILE = custom/https/cert.pem
KEY_FILE = custom/https/key.pem
; Upper level of template and static file path
; default is the path where Gitea is executed
STATIC_ROOT_PATH =
; Default path for App data
APP_DATA_PATH = data
; Application level GZIP support
ENABLE_GZIP = false
; Landing page for non-logged users, can be "home" or "explore"
LANDING_PAGE = home
; Enables git-lfs support. true or false, default is false.
LFS_START_SERVER = false
; Where your lfs files put on, default is data/lfs.
LFS_CONTENT_PATH = data/lfs
; LFS authentication secret, changed this to yourself.
LFS_JWT_SECRET   =

; Define allowed algorithms and their minimum key length (use -1 to disable a type)
[ssh.minimum_key_sizes]
ED25519 = 256
ECDSA   = 256
RSA     = 2048
DSA     = 1024

[database]
; Either "mysql", "postgres", "mssql" or "sqlite3", it's your choice
DB_TYPE = mysql
HOST = <IP_ADDRESS>:3306
NAME = gitea
USER = root
PASSWD =
; For "postgres" only, either "disable", "require" or "verify-full"
SSL_MODE = disable
; For "sqlite3" and "tidb", use absolute path when you start as service
PATH = data/gitea.db
; For "sqlite3" only. Query timeout
SQLITE_TIMEOUT = 500
; For iterate buffer, default is 50
ITERATE_BUFFER_SIZE = 50

[indexer]
ISSUE_INDEXER_PATH = indexers/issues.bleve
; repo indexer by default disabled, since it uses a lot of disk space
REPO_INDEXER_ENABLED = false
REPO_INDEXER_PATH = indexers/repos.bleve
UPDATE_BUFFER_LEN = 20
MAX_FILE_SIZE = 1048576

[admin]
; Disable regular (non-admin) users to create organizations
DISABLE_REGULAR_ORG_CREATION = false

[security]
; Whether the installer is disabled
INSTALL_LOCK = false
; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!!
SECRET_KEY = !#@FDEWREWR&*(
; Auto-login remember days
LOGIN_REMEMBER_DAYS = 7
COOKIE_USERNAME = gitea_awesome
COOKIE_REMEMBER_NAME = gitea_incredible
; Reverse proxy authentication header name of user name
REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER
; Sets the minimum password length for new Users
MIN_PASSWORD_LENGTH = 6
; True when users are allowed to import local server paths
IMPORT_LOCAL_PATHS = false
; Prevent all users (including admin) from creating custom git hooks
DISABLE_GIT_HOOKS = false

[openid]
;
; OpenID is an open standard and decentralized authentication protocol.
; Your identity is the address of a webpage you provide, which describes
; how to prove you are in control of that page.
;
; For more info: https://en.wikipedia.org/wiki/OpenID
;
; Current implementation supports OpenID-2.0
;
; Tested to work providers at the time of writing:
;  - Any GNUSocial node (your.hostname.tld/username)
;  - Any SimpleID provider (http://simpleid.koinic.net)
;  - http://openid.org.cn/
;  - openid.stackexchange.com
;  - login.launchpad.net
;  - <username>.livejournal.com
;
; Whether to allow signin in via OpenID
ENABLE_OPENID_SIGNIN = false
; Whether to allow registering via OpenID
; Do not include to rely on DISABLE_REGISTRATION setting
;ENABLE_OPENID_SIGNUP = true
; Allowed URI patterns (POSIX regexp).
; Space separated.
; Only these would be allowed if non-blank.
; Example value: trusted.domain.org trusted.domain.net
WHITELISTED_URIS =
; Forbidden URI patterns (POSIX regexp).
; Space separated.
; Only used if WHITELISTED_URIS is blank.
; Example value: loadaverage.org/badguy stackexchange.com/.*spammer
BLACKLISTED_URIS =

[service]
; Time limit to confirm account/email registration
ACTIVE_CODE_LIVE_MINUTES = 180
; Time limit to confirm forgot password reset process
RESET_PASSWD_CODE_LIVE_MINUTES = 180
; User need to confirm e-mail for registration
REGISTER_EMAIL_CONFIRM = false
; Does not allow register and admin create account only
DISABLE_REGISTRATION = false
; User must sign in to view anything.
REQUIRE_SIGNIN_VIEW = false
; Mail notification
ENABLE_NOTIFY_MAIL = false
; More detail: https://github.com/go-gitea/gitea/issues/165
ENABLE_REVERSE_PROXY_AUTHENTICATION = false
ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false
; Enable captcha validation for registration
ENABLE_CAPTCHA = true
; Default value for KeepEmailPrivate
; New user will get the value of this setting copied into their profile
DEFAULT_KEEP_EMAIL_PRIVATE = false
; Default value for AllowCreateOrganization
; New user will have rights set to create organizations depending on this setting
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
; Default value for EnableTimetracking
; Repositories will use timetracking by default depending on this setting
DEFAULT_ENABLE_TIMETRACKING = true
; Default value for AllowOnlyContributorsToTrackTime
; Only users with write permissions could track time if this is true
DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME = true
; Default value for the domain part of the user's email address in the git log
; if he has set KeepEmailPrivate true. The user's email replaced with a
; concatenation of the user name in lower case, "@" and NO_REPLY_ADDRESS.
NO_REPLY_ADDRESS = noreply.git.tps.local

[webhook]
; Hook task queue length, increase if webhook shooting starts hanging
QUEUE_LENGTH = 1000
; Deliver timeout in seconds
DELIVER_TIMEOUT = 5
; Allow insecure certification
SKIP_TLS_VERIFY = false
; Number of history information in each page
PAGING_NUM = 10

[mailer]
ENABLED = false
; Buffer length of channel, keep it as it is if you don't know what it is.
SEND_BUFFER_LEN = 100
; Name displayed in mail title
SUBJECT = %(APP_NAME)s
; Mail server
; Gmail: smtp.gmail.com:587
; QQ: smtp.qq.com:465
; Note, if the port ends with "465", SMTPS will be used. Using STARTTLS on port 587 is recommended per RFC 6409. If the server supports STARTTLS it will always be used.
HOST = mail-03.tps.local
; Disable HELO operation when hostname are different.
DISABLE_HELO =
; Custom hostname for HELO operation, default is from system.
HELO_HOSTNAME =
; Do not verify the certificate of the server. Only use this for self-signed certificates
SKIP_VERIFY =
; Use client certificate
USE_CERTIFICATE = false
CERT_FILE = custom/mailer/cert.pem
KEY_FILE = custom/mailer/key.pem
; Mail from address, RFC 5322. This can be just an email address, or the `"Name"<EMAIL_ADDRESS>format
FROM =<EMAIL_ADDRESS>; Mailer user name and password
USER =
PASSWD =
; Send mails as plain text
SEND_AS_PLAIN_TEXT = false
; Enable sendmail (override SMTP)
USE_SENDMAIL = false
; Specify an alternative sendmail binary
SENDMAIL_PATH = sendmail
; Specify any extra sendmail arguments
SENDMAIL_ARGS =

[cache]
; Either "memory", "redis", or "memcache", default is "memory"
ADAPTER = memory
; For "memory" only, GC interval in seconds, default is 60
INTERVAL = 60
; For "redis" and "memcache", connection host address
; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180
; memcache: `<IP_ADDRESS>:11211`
HOST =
; Time to keep items in cache if not used, default is 16 hours.
; Setting it to 0 disables caching
ITEM_TTL = 16h

[session]
; Either "memory", "file", or "redis", default is "memory"
PROVIDER = memory
; Provider config options
; memory: not have any config yet
; file: session file path, e.g. `data/sessions`
; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180
; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table`
PROVIDER_CONFIG = data/sessions
; Session cookie name
COOKIE_NAME = i_like_gitea
; If you use session in https only, default is false
COOKIE_SECURE = false
; Enable set cookie, default is true
ENABLE_SET_COOKIE = true
; Session GC time interval in seconds, default is 86400 (1 day)
GC_INTERVAL_TIME = 86400
; Session life time in seconds, default is 86400 (1 day)
SESSION_LIFE_TIME = 86400

[picture]
AVATAR_UPLOAD_PATH = data/avatars
; Chinese users can choose "duoshuo"
; or a custom avatar source, like: http://cn.gravatar.com/avatar/
GRAVATAR_SOURCE = gravatar
; This value will be forced to be true in offline mode.
DISABLE_GRAVATAR = false
; Federated avatar lookup uses DNS to discover avatar associated
; with emails, see https://www.libravatar.org
; This value will be forced to be false in offline mode or Gravatar is disabled.
ENABLE_FEDERATED_AVATAR = false

[attachment]
; Whether attachments are enabled. Defaults to `true`
ENABLE = true
; Path for attachments. Defaults to `data/attachments`
PATH = data/attachments
; One or more allowed types, e.g. image/jpeg|image/png
ALLOWED_TYPES = image/jpeg|image/png|application/zip|application/gzip
; Max size of each file. Defaults to 32MB
MAX_SIZE = 4
; Max number of files per upload. Defaults to 10
MAX_FILES = 5

[time]
; Specifies the format for fully outputted dates. Defaults to RFC1123
; Special supported values are ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano
; For more information about the format see http://golang.org/pkg/time/#pkg-constants
FORMAT =

[log]
ROOT_PATH = /home/git/gitea/log
; Either "console", "file", "conn", "smtp" or "database", default is "console"
; Use comma to separate multiple modes, e.g. "console, file"
MODE = file
; Buffer length of channel, keep it as it is if you don't know what it is.
BUFFER_LEN = 10000
; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace"
LEVEL = Trace

; For "console" mode only
[log.console]
LEVEL = Trace

; For "file" mode only
[log.file]
LEVEL = Info
; This enables automated log rotate(switch of following options), default is true
LOG_ROTATE = true
; Max line number of single file, default is 1000000
MAX_LINES = 1000000
; Max size shift of single file, default is 28 means 1 << 28, 256MB
MAX_SIZE_SHIFT = 28
; Segment log daily, default is true
DAILY_ROTATE = true
; Expired days of log file(delete after max days), default is 7
MAX_DAYS = 7

; For "conn" mode only
[log.conn]
LEVEL =
; Reconnect host for every single message, default is false
RECONNECT_ON_MSG = false
; Try to reconnect when connection is lost, default is false
RECONNECT = false
; Either "tcp", "unix" or "udp", default is "tcp"
PROTOCOL = tcp
; Host address
ADDR =

; For "smtp" mode only
[log.smtp]
LEVEL = Info
; Name displayed in mail title, default is "Diagnostic message from server"
SUBJECT = Diagnostic message from server
; Mail server
HOST =
; Mailer user name and password
USER =
PASSWD =
; Receivers, can be one or more, e.g. 1<EMAIL_ADDRESS>RECEIVERS =

; For "database" mode only
[log.database]
LEVEL =
; Either "mysql" or "postgres"
DRIVER =
; Based on xorm, e.g.: root:root@localhost/gitea?charset=utf8
CONN =

[cron]
; Enable running cron tasks periodically.
ENABLED = true
; Run cron tasks when Gitea starts.
RUN_AT_START = false

; Update mirrors
[cron.update_mirrors]
SCHEDULE = @every 10m

; Repository health check
[cron.repo_health_check]
SCHEDULE = @every 24h
TIMEOUT = 60s
; Arguments for command 'git fsck', e.g. "--unreachable --tags"
; see more on http://git-scm.com/docs/git-fsck/1.7.5
ARGS =

; Check repository statistics
[cron.check_repo_stats]
RUN_AT_START = true
SCHEDULE = @every 24h

; Clean up old repository archives
[cron.archive_cleanup]
RUN_AT_START = true
SCHEDULE = @every 24h
; Archives created more than OLDER_THAN ago are subject to deletion
OLDER_THAN = 24h

; Synchronize external user data (only LDAP user synchronization is supported)
[cron.sync_external_users]
; Synchronize external user data when starting server (default false)
RUN_AT_START = false
; Interval as a duration between each synchronization (default every 24h)
SCHEDULE = @every 24h
; Create new users, update existing user data and disable users that are not in external source anymore (default)
;   or only create new users if UPDATE_EXISTING is set to false
UPDATE_EXISTING = true

[git]
; Disables highlight of added and removed changes
DISABLE_DIFF_HIGHLIGHT = false
; Max number of lines allowed of a single file in diff view
MAX_GIT_DIFF_LINES = 1000
; Max number of characters of a line allowed in diff view
MAX_GIT_DIFF_LINE_CHARACTERS = 5000
; Max number of files shown in diff view
MAX_GIT_DIFF_FILES = 100
; Arguments for command 'git gc', e.g. "--aggressive --auto"
; see more on http://git-scm.com/docs/git-gc/1.7.5
GC_ARGS =

; Operation timeout in seconds
[git.timeout]
MIGRATE = 600
MIRROR = 300
CLONE = 300
PULL = 300
GC = 60

[mirror]
; Default interval as a duration between each check
;DEFAULT_INTERVAL = 8h
; Min interval as a duration must be > 1m
MIN_INTERVAL = 10m

[api]
; Max number of items will response in a page
MAX_RESPONSE_ITEMS = 50

[i18n]
LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,ja-JP,es-ES,pt-BR,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR
NAMES = English,简体中文,繁體中文（香港）,繁體中文（台灣）,Deutsch,Français,Nederlands,Latviešu,Русский,日本語,Español,Português do Brasil,polski,български,Italiano,Suomalainen,Türkçe,čeština,Српски,Svenska,한국어

; Used for datetimepicker
[i18n.datelang]
en-US = en
zh-CN = zh
zh-HK = zh-TW
zh-TW = zh-TW
de-DE = de
fr-FR = fr
nl-NL = nl
lv-LV = lv
ru-RU = ru
ja-JP = ja
es-ES = es
pt-BR = pt-BR
pl-PL = pl
bg-BG = bg
it-IT = it
fi-FI = fi
tr-TR = tr
cs-CZ = cs-CZ
sr-SP = sr
sv-SE = sv
ko-KR = ko

; Extension mapping to highlight class
; e.g. .toml=ini
[highlight.mapping]

[other]
SHOW_FOOTER_BRANDING = false
; Show version information about Gitea and Go in the footer
SHOW_FOOTER_VERSION = true
; Show time of template execution in the footer
SHOW_FOOTER_TEMPLATE_LOAD_TIME = true

[markup.asciidoc]
ENABLED = false
; List of file extensions that should be rendered by an external command
FILE_EXTENSIONS = .adoc,.asciidoc
; External command to render all matching extensions
RENDER_COMMAND = "asciidoc --out-file=- -"
; Input is not a standard input but a file
IS_INPUT_FILE = false

Can you try it with newer version?

Yep, with 1.2.3 it works fine. IMHO, it is time to update documentation links (just through them to https://github.com/go-gitea/gitea/releases).
Thanks!


perltidy?

The code is in kind of an ad-hoc style. Any chance of adding a .perltidyrc file to be used consistently?

I'm not sure if Perltidy supports the new signatures that I'm using. Also, I'm not sure where my code is particularly ad-hoc :-) If Perltidy works on Windows, I'll try installing it, but I'd prefer not to spend hours trying to configure it in a way that it doesn't mess up all code.
I'm planning to look at moving OpenGL::Glew into a local copy of the OpenGL / pogl distribution this weekend, and that code certainly should follow the style of OpenGL when it is merged. I'm not sure if Perltidy can handle some files but not others.

I like how Perltidy will change and fix the mixture of tabs and spaces - this is due to me switching editors recently and my new settings haven't propagated through all the code. There should be no tabs left anywhere.
Unfortunately, the rest of your settings seem pretty unacceptable to me, or require lots of fiddling with .perltidyrc which I would rather not spend time on:
my @vertices = ( -1.0, -1.0,   1.0, -1.0,    -1.0,  1.0,
                  1.0, -1.0,   1.0,  1.0,    -1.0,  1.0
               );

gets converted to
my @vertices
    = (-1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0);

losing the "pairs" information.
my $config = {
    grab => 0,
};

gets converted to
my $config = {grab => 0,};

making it hard to add more config items later.
 I know that the above is likely inconsistent with other syntactically identical situations but as there is information that is conveyed not in the syntax but in the whitespace, the forced unification through Perltidy is not worth it to me.
But there certainly are sections that benefit from the unification. I guess that running the code through Perltidy and cleaning the relevant parts by importing them into git manually is sensible, but not as an ongoing part of the process.

Easily fixed by adding comment markers. Give me a sec.

Please consider: https://github.com/wchristian/app-shadertoy/commit/587c5257ac6265023343445a9e69b0e31f28bfc0

If you're familiar enough with Perltidy to know which knobs to twiddle, I'll compile a list of the things I don't like and I'll get back.

Please do, i'd happily do that, and i already know the setting needed for the signatures one. :)

But I'm already not that keen on adding special markers for "leave this untouched".

I can understand that, but consider: In the case of the vertices a comment explaining what is what and why it's like that would be appropiate, and in the case of the config, the marker can probably go away once you have more than one config pair. Some of the things are also that way because i configured a very long line length.
Generally once you're past the initial settling in bit, tidy is really smooth flying, especially if you have someone familiar on hand. :)

I'm writing these down so that I don't forget. If there are easy fixes for them, tell me, but I'm not promising that these are all things that annoy me with the perltidy settings ;)
Things that break using Perltidy for the moment for me:

Doesn't work with defaults in signatures

The following makes Perl::Tidy stop parsing:
sub foo( $options={} ) {
}

Reindenting of number-lists

This is especially annoying as for OpenGL, there usually are flat lists of floats passed around and
the whitespace there has semantic meaning. There is the "comment at first line" workaround.

Inlining of single-argument method calls
My::Class->new(
some => 'argument',
);

gets inlined to
My::Class->new( some => 'argument', );

which is not what I want, because likely I'll add more arguments later. I understand that this is hard to disambiguate for Perl::Tidy from other function calls that might be safely moved onto a single line.


Use go-homedir in plugins shared_preferences and path_provider

github.com/mitchellh/go-homedir

Done in https://github.com/go-flutter-desktop/plugins/commit/bc46135251516e37a6bb6173e4c0b0820a9c0e8d


Usage Guide

I think a short usage guide would be awesome to include in the v3 release – a tiny document highlighting how to do common tasks.
A few points we should include off the top of my head (incomplete): How to use routing, the import system, how to fetch data, how to use the generators, how to work with containers and components.
Any ideas what else to include?

This is pretty much done with our current, extensive documentation!


muxer error: DTS is not monotonically increasing

Which version are you using?
v0.19.2
Which operating system are you using?

[ x] Linux amd64 standard

Describe the issue
The HLS muxer on proxied mode keeps on stuttering. More like the HLS Muxer gets destroyed with an error - (muxer error: DTS is not monotonically increasing) and then starts again when the client requests again. It keeps on going and the stream gets disconnected and then connects again.
Describe how to replicate the issue

Start the server
Use HLS stream (tested on 2 such instances) on proxied mode. Keep fmp4 segment option, rest is default
Test with any client

Did you attach the server logs?

no
Did you attach a network dump?

no

Hello, this is camera-specific, you have to provide either a working RTSP URL or a video sample.

It is a private hls stream. How do I upload a video sample?

Just checking on this error, can this be fixed.

as i already said, you have to provide either a working RTSP URL or a video sample (for instance, by recording your stream with ffmpeg and the -c copy option, then posting the sample).

The file you provided makes the muxer close with error muxer error: unsupported, not with error muxer error: DTS is not monotonically increasing - are you sure that the sample was taken from your original stream? i'm interested into widening support for streams with non-standard PTS / DTS, but i have to understand exactly what i'm dealing with.

Here found the perfect stream with the error.
http://<IP_ADDRESS>:1935/live/Stream1/playlist.m3u8
This should help you.

Dear @aler9
Are there any update for this issue, I have facing same problem with video streaming from mobile phone with profile h264 high.
Output from rtmp-simple-server:
2022/07/27 14:22:24 INF [RTMP] [conn [::1]:51127] is publishing to path 'live/xyz', 1 track
2022/07/27 14:22:24 INF [HLS] [muxer live/xyz] created automatically
2022/07/27 14:22:24 INF [HLS] [muxer live/xyz] is converting into HLS
2022/07/27 14:22:26 INF [HLS] [muxer live/xyz] destroyed (muxer error: DTS is not monotonically increasing, was 2.492s, now is 2.491s)
2022/07/27 14:22:26 INF [HLS] [muxer live/xyz] created automatically
2022/07/27 14:22:26 INF [HLS] [muxer live/xyz] is converting into HLS
2022/07/27 14:22:29 INF [HLS] [muxer live/xyz] destroyed (muxer error: DTS is not monotonically increasing, was 2.961s, now is 2.927s)
2022/07/27 14:22:29 INF [HLS] [muxer live/xyz] created automatically

This is my video captured from nginx rtmp gateway:
h264_high_err_dts.flv.zip
Video info by ffmpeg:
Input #0, flv, from 'h264_high_err_dts.flv':
  Duration: 00:01:42.63, start: 0.000000, bitrate: 1297 kb/s
  Stream #0:0: Audio: aac (HE-AAC), 44100 Hz, stereo, fltp
  Stream #0:1: Video: h264 (High), yuv420p(progressive), 720x1480, 30 fps, 30 tbr, 1k tbn

I appear to be having a similar error. I am publishing a rtmp stream from OBS and trying to watch it HLS.
Server is running locally. OBS is streaming to endpoint rtmp://localhost:1935 my stream key is "test".
Attempt to watch in firefox at URL http://localhost:8888/test/. Firefox keeps showing buffering symbol.
Console output of server attached.
Is this a setup issue?

I am also having this issue also with https. Any ideas on how to fix?

I too am experiencing this muxer error.  All is well in v0.18.5 but updating to v0.19.x causes the issue to surface when using identical NVENC encoder settings to stream via RTMP in OBS v27.2.4.

Ah yeah setting Encoder to Software (x264) in OBS has fixed this for me. Thanks @FlantasticDan

I'm experiencing a similar issue. I'm using the ffmpeg encoder in OBS (StreamFX), but I get this error when I'm not streaming with x264. I found that changing the key frame interval to zero does allow the stream to load, though the stream quality comes out poor.

Can confirm this issue as well, even on v0.20.0. Using v0.18.5 for now as GPU encoding is a necessity for me.

v0.20.2 includes a fix that should solve the issue with most configurations. I'm leaving this issue opened since i'm not sure that all cases were covered.

Still running into this issue, though it's probably related to my setup. I'm currently using the 'StreamFX' plugin for OBS that gives me FFMPEG options for streaming, in which I've adjusted some settings to achieve a low latency stream that currently works with RTSP.
I tried adjusting some of the HLS settings in the YML file, though I have left it as default for this (minus changing hlsVariant to lowLatency), and I am noticing a new warning appear when trying to resolve the stream in VLC/Chrome:
2022/11/05 21:40:22 INF [HLS] listener opened on :443
2022/11/05 21:40:28 INF [HLS] [muxer portal] created (requested by <IP_ADDRESS>)
2022/11/05 21:40:28 INF [path portal] [rtsp source] started
2022/11/05 21:40:29 INF [path portal] [rtsp source] ready: 2 tracks (H264, MPEG4Audio)
2022/11/05 21:40:29 INF [HLS] [muxer portal] is converting into HLS, 2 tracks (H264, MPEG4Audio)
2022/11/05 21:40:30 INF [HLS] [muxer portal] destroyed (muxer error: DTS is not monotonically increasing, was 1.3s, now is 1.299666667s)
2022/11/05 21:40:32 INF [HLS] [muxer portal] created (requested by <IP_ADDRESS>)
2022/11/05 21:40:32 INF [HLS] [muxer portal] is converting into HLS, 2 tracks (H264, MPEG4Audio)
2022/11/05 21:40:32 WAR [path portal] [rtsp source] expected FU-A packet, got STAP-A packet
2022/11/05 21:40:34 INF [HLS] [muxer portal] destroyed (muxer error: DTS is not monotonically increasing, was 1.8s, now is 1.799666667s)
2022/11/05 21:40:38 INF [HLS] [muxer portal] created (requested by <IP_ADDRESS>)
2022/11/05 21:40:38 INF [HLS] [muxer portal] is converting into HLS, 2 tracks (H264, MPEG4Audio)
2022/11/05 21:40:38 WAR [path portal] [rtsp source] expected FU-A packet, got SEI packet
2022/11/05 21:40:40 INF [HLS] [muxer portal] destroyed (muxer error: DTS is not monotonically increasing, was 1.733s, now is 1.732666667s)
2022/11/05 21:40:45 INF [path portal] [rtsp source] stopped

Execute command h265 to h264_nvenc
cmd ： ffmpeg -i  -vcodec h264_nvenc
Same error message
INF [HLS] [muxer mystream] is converting into HLS, 2 tracks (H264, MPEG4Audio)
INF [HLS] [muxer mystream] destroyed (muxer error: DTS is not monotonically increasing, was 7.465791667s, now is 6.172830556s)

I faced this issue recently, but after another look at my code, I realized the thread I was running this on was being called repeatedly. I don't know if this will help anybody, but check your threads....

Still running into this issue, though it's probably related to my setup. I'm currently using the 'StreamFX' plugin for OBS that gives me FFMPEG options for streaming, in which I've adjusted some settings to achieve a low latency stream that currently works with RTSP. I tried adjusting some of the HLS settings in the YML file, though I have left it as default for this (minus changing hlsVariant to lowLatency), and I am noticing a new warning appear when trying to resolve the stream in VLC/Chrome:
2022/11/05 21:40:22 INF [HLS] listener opened on :443
2022/11/05 21:40:28 INF [HLS] [muxer portal] created (requested by <IP_ADDRESS>)
2022/11/05 21:40:28 INF [path portal] [rtsp source] started
2022/11/05 21:40:29 INF [path portal] [rtsp source] ready: 2 tracks (H264, MPEG4Audio)
2022/11/05 21:40:29 INF [HLS] [muxer portal] is converting into HLS, 2 tracks (H264, MPEG4Audio)
2022/11/05 21:40:30 INF [HLS] [muxer portal] destroyed (muxer error: DTS is not monotonically increasing, was 1.3s, now is 1.299666667s)
2022/11/05 21:40:32 INF [HLS] [muxer portal] created (requested by <IP_ADDRESS>)
2022/11/05 21:40:32 INF [HLS] [muxer portal] is converting into HLS, 2 tracks (H264, MPEG4Audio)
2022/11/05 21:40:32 WAR [path portal] [rtsp source] expected FU-A packet, got STAP-A packet
2022/11/05 21:40:34 INF [HLS] [muxer portal] destroyed (muxer error: DTS is not monotonically increasing, was 1.8s, now is 1.799666667s)
2022/11/05 21:40:38 INF [HLS] [muxer portal] created (requested by <IP_ADDRESS>)
2022/11/05 21:40:38 INF [HLS] [muxer portal] is converting into HLS, 2 tracks (H264, MPEG4Audio)
2022/11/05 21:40:38 WAR [path portal] [rtsp source] expected FU-A packet, got SEI packet
2022/11/05 21:40:40 INF [HLS] [muxer portal] destroyed (muxer error: DTS is not monotonically increasing, was 1.733s, now is 1.732666667s)
2022/11/05 21:40:45 INF [path portal] [rtsp source] stopped

It's a similar disorder.
I am testing with windows v0.20.4, and the program used for playback is VLC.
When configured with the HLS default option, it works normally, but when changing to the Low Latency option according to the guide, the following error occurs.
2022/12/16 10:31:03 INF [HLS] [muxer mystream] created (requested by <IP_ADDRESS>)
2022/12/16 10:31:03 INF [HLS] [muxer mystream] is converting into HLS, 2 tracks (H264, MPEG4-audio)
2022/12/16 10:31:07 INF [HLS] [muxer mystream] destroyed (muxer error: DTS is not monotonically increasing, was 4.605211111s, now is 4.605211111s)

I am occasionally seeing this with a LL-HLS proxy on a stream that's been going for some hours to a Chrome browser.
The source is running rtsp-simple-server 0.20.4, streaming a raspberry pi camera. This source is wifi connected.
The proxy is running 0.20.4, connecting to the source via rtsp/tcp.  This proxy is on wired ethernet.
Another process (NVR) that is connected to the source rtsp/tcp at the same time consumes the stream normally.
If I restart rtsp-simple-server on the source - the proxy and browser recover automatically and the stream resumes without intervention.
Log snippet from the proxy:
[...]
Dec 18 08:28:44 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:28:44 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:28:44 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:28:44 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:28:45 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:28:45 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:28:55 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:28:55 INF [path frontdoor] [rtsp source] stopped
Dec 18 08:29:01 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:01 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:29:01 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:01 INF [path frontdoor] [rtsp source] started
Dec 18 08:29:01 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:01 INF [path frontdoor] [rtsp source] ready: 1 track (H264)
Dec 18 08:29:01 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:01 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:29:02 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:02 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:29:04 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:04 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:29:04 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:04 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:29:05 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:05 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:29:07 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:07 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:29:07 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:07 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:29:08 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:08 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:29:12 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:12 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:29:12 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:12 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:29:13 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:13 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:29:21 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:21 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:29:21 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:21 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:29:22 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:22 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:29:32 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:32 INF [path frontdoor] [rtsp source] stopped
Dec 18 08:29:38 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:38 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:29:38 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:38 INF [path frontdoor] [rtsp source] started
Dec 18 08:29:38 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:38 INF [path frontdoor] [rtsp source] ready: 1 track (H264)
Dec 18 08:29:38 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:38 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:29:39 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:39 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:29:41 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:41 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:29:41 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:41 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:29:42 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:42 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:29:44 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:44 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:29:44 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:44 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:29:44 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:44 WAR [path frontdoor] [rtsp source] invalid FU-A packet (non-starting)
Dec 18 08:29:44 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:44 WAR [path frontdoor] [rtsp source] invalid FU-A packet (non-starting)
Dec 18 08:29:45 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:45 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:29:49 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:49 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:29:49 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:49 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:29:50 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:50 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:29:58 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:58 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:29:58 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:58 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:29:59 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:29:59 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:30:09 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:30:09 INF [path frontdoor] [rtsp source] stopped
Dec 18 08:30:15 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:30:15 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:30:15 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:30:15 INF [path frontdoor] [rtsp source] started
Dec 18 08:30:15 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:30:15 INF [path frontdoor] [rtsp source] ready: 1 track (H264)
Dec 18 08:30:15 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:30:15 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:30:16 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:30:16 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:30:18 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:30:18 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:30:18 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:30:18 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:30:19 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:30:19 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
Dec 18 08:30:21 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:30:21 INF [HLS] [muxer frontdoor] created (requested by <IP_ADDRESS>)
Dec 18 08:30:21 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:30:21 INF [HLS] [muxer frontdoor] is converting into HLS, 1 track (H264)
Dec 18 08:30:22 rpi4b-1 rtsp-simple-server[27912]: 2022/12/18 08:30:22 INF [HLS] [muxer frontdoor] destroyed (muxer error: DTS is not monotonically increasing, was 0s, now is 0s)
[...]

I'm still getting this error with OBS NVENC HEVC option. I'm just recording my screen so it shouldn't be a camera issue.
Version: MediaMTX v0.23.5 with all default settings.
2023/06/20 03:39:01 INF [HLS] [muxer REDACTED] created (requested by <IP_ADDRESS>)
2023/06/20 03:39:01 INF [HLS] [muxer REDACTED] is converting into HLS, 2 tracks (H265, MPEG4-audio-gen)
2023/06/20 03:39:12 INF [HLS] [muxer REDACTED] destroyed (muxer error: unable to extract DTS: DTS is not monotonically increasing, was 11.417s, now is 11.416666667s)
2023/06/20 03:39:14 INF [HLS] [muxer REDACTED] created (requested by <IP_ADDRESS>)
2023/06/20 03:39:14 INF [HLS] [muxer REDACTED] is converting into HLS, 2 tracks (H265, MPEG4-audio-gen)
2023/06/20 03:39:25 INF [HLS] [muxer REDACTED] destroyed (muxer error: unable to extract DTS: DTS is not monotonically increasing, was 10.417s, now is 10.416666667s)
2023/06/20 03:39:30 INF [HLS] [muxer REDACTED] created (requested by <IP_ADDRESS>)
2023/06/20 03:39:30 INF [HLS] [muxer REDACTED] is converting into HLS, 2 tracks (H265, MPEG4-audio-gen)
2023/06/20 03:39:37 INF [HLS] [muxer REDACTED] destroyed (muxer error: unable to extract DTS: DTS is not monotonically increasing, was 7.6s, now is 7.599666667s)
2023/06/20 03:39:46 INF [HLS] [muxer REDACTED] created (requested by <IP_ADDRESS>)
2023/06/20 03:39:46 INF [HLS] [muxer REDACTED] is converting into HLS, 2 tracks (H265, MPEG4-audio-gen)
2023/06/20 03:40:02 INF [HLS] [muxer REDACTED] destroyed (muxer error: unable to extract DTS: DTS is not monotonically increasing, was 16.584s, now is 16.583666667s)
2023/06/20 03:40:11 INF [HLS] [muxer REDACTED] created (requested by <IP_ADDRESS>)
2023/06/20 03:40:11 INF [HLS] [muxer REDACTED] is converting into HLS, 2 tracks (H265, MPEG4-audio-gen)
2023/06/20 03:40:15 INF [HLS] [muxer REDACTED] destroyed (muxer error: unable to extract DTS: DTS is not monotonically increasing, was 4.133s, now is 4.132666667s)
2023/06/20 03:40:24 INF [HLS] [muxer REDACTED] created (requested by <IP_ADDRESS>)
2023/06/20 03:40:24 INF [HLS] [muxer REDACTED] is converting into HLS, 2 tracks (H265, MPEG4-audio-gen)
2023/06/20 03:40:40 INF [HLS] [muxer REDACTED] destroyed (muxer error: unable to extract DTS: DTS is not monotonically increasing, was 16.084s, now is 16.083666667s)
2023/06/20 03:40:49 INF [HLS] [muxer REDACTED] created (requested by <IP_ADDRESS>)
2023/06/20 03:40:49 INF [HLS] [muxer REDACTED] is converting into HLS, 2 tracks (H265, MPEG4-audio-gen)
2023/06/20 03:41:05 INF [HLS] [muxer REDACTED] destroyed (muxer error: unable to extract DTS: DTS is not monotonically increasing, was 16.15s, now is 16.149666667s)
2023/06/20 03:41:14 INF [HLS] [muxer REDACTED] created (requested by <IP_ADDRESS>)
2023/06/20 03:41:14 INF [HLS] [muxer REDACTED] is converting into HLS, 2 tracks (H265, MPEG4-audio-gen)
2023/06/20 03:41:30 INF [HLS] [muxer REDACTED] destroyed (muxer error: unable to extract DTS: DTS is not monotonically increasing, was 16.15s, now is 16.149666667s)
2023/06/20 03:41:39 INF [HLS] [muxer REDACTED] created (requested by <IP_ADDRESS>)
2023/06/20 03:41:39 INF [HLS] [muxer REDACTED] is converting into HLS, 2 tracks (H265, MPEG4-audio-gen)
2023/06/20 03:41:55 INF [HLS] [muxer REDACTED] destroyed (muxer error: unable to extract DTS: DTS is not monotonically increasing, was 16.15s, now is 16.149666667s)
2023/06/20 03:42:04 INF [HLS] [muxer REDACTED] created (requested by <IP_ADDRESS>)
2023/06/20 03:42:04 INF [HLS] [muxer REDACTED] is converting into HLS, 2 tracks (H265, MPEG4-audio-gen)
2023/06/20 03:42:20 INF [HLS] [muxer REDACTED] destroyed (muxer error: unable to extract DTS: DTS is not monotonically increasing, was 16.084s, now is 16.083666667s)

#2128
This is a continuation of the above issue.
Currently, about six samples from various cameras are raised to about 10 minutes. I extracted the image through the command below, and I attach the command just in case.
ffmpeg -i [rtsp url] -acodec copy -vcodec copy c:/sample.mp4
And I attach the video together, but the size of the video compression file is too large, so I replace it with the Google drive address. Thank you. Please give me quick feedback.
https://drive.google.com/file/d/1dgU__r5sKyyD5NeRoq9yKudhvYn29HxA/view?usp=sharing

@aler9
Is this problem related to camera image resolution or frame? I think it's currently set at 1080p for about 30 frames, but I thought lowering this to about 720p 15 frames would solve the problem

@curlydoggy thanks for providing the samples but some kind of conversion must have happened since i'm able to stream them to the server without triggering the error:
ffmpeg -stream_loop -1 -re -i sample5.mp4 -c copy -f rtsp rtsp://localhost:8554/p1

2023/08/08 11:03:58 INF [RTSP] [session 3a98f4fd] created by <IP_ADDRESS>:57428
2023/08/08 11:03:58 INF [RTSP] [session 3a98f4fd] is publishing to path 'p1', 1 track (H264)

关于你提到的非线性增长的问题，我在使用opencv读取rtmp视频流的时候遇到，我尝试去掉音频，发现解决了问题。我的推流代码：
ffmpeg -stream_loop -1 -re -i video/21.mp4 -c:v libx264 -s 640x640 -r 30 -an -f flv rtmp://<IP_ADDRESS>:1935/live
-c 编码格式， -r 帧率 -an 去除音频

I've observed this issue with both OBS 27.2.4 & 29.1.3.
It seems to occur when the following is true:

OBS x264 Hardware Encoder is used (with B-frames enabled).
Reading from MediaMTX with RTMP or SRT (and HLS?).

If B-frames are disabled in OBS, it works.
Obviously, that's not a desired solution since B-frames allows for both higher quality and lower bandwidth.
Since RTSP does not exhibit this issue, I suspect MediaMTX does not properly mux incoming h264 streams with b-frames.

i was able to reproduce this error on OBS using Apple Hardware encoder h264 ,Apple Software and Hardware encoder hevc. Apple Software encoder h264 worked fine. So it might be something awkward with apple encoder I guess?

i was able to reproduce this error on OBS using Apple Hardware encoder h264 ,Apple Software and Hardware encoder hevc. Apple Software encoder h264 worked fine. So it might be something awkward with apple encoder I guess?

My OBS version is 29.1.3

Do I understand correctly this is still an unsolved problem? (and there is even no patch I can apply manually or just an ugly workaround to make it work?)

Same problem here
The problem happens when I relay my SRT video stream encoded using Intel's QSV encoders (both AVC and HEVC) from srt-live-server to MediaMTX. AMD's AMF encoders and software encoders (x264 & x265) work without problems. But when I stream to MediaMTX directly, QSV AVC, both AMF encoders and software encoders work, QSV HEVC still doesn't.
DTS is monotonically increasing for video streams encoded by every encoder listed above, but I do see errors like Packet corrupt (stream = 0, dts = 0), concealing xxx DC, xxx AC, xxx MV errors in I frame(the three values marked xxx are the same), PPS id out of range: 0 and Error parsing NAL unit #1 a few times when I read the AMF or software encoded stream from srt-live-server using ffmpeg. For QSV encoders these errors can last much longer, for a few seconds until ffmpeg starts recognizing the stream.
Maybe it's the problem with buffering? I guess that srt-live-server's internal buffer is so small that the first frame(s) in its buffer don't contain enough data to successfully decode (maybe the keyframes required for that frame to decode have been removed from the buffer) and MediaMTX's demuxer doesn't like these corrupted frames, so it refused to continue.
I have no experience with Golang, but hope these information help.
MediaMTX version: v1.4.2
OBS Studio version: 30.0.2
ffmpeg version: 2023-11-22-git-0008e1c5d5-full_build from gyan.dev
Hardware devices used: RDNA2 iGPU for AMF, Xe-HPG for QSV

I see the same issue with these settings
OBS 30.0.2
Apple Hardware Encoder
B-Frames (enabled)
The issue is resolved when disabling B-Frames (all other settings the same), but given the OBS defaults (enabled B-Frames) this is not ideal. Also as mentioned above, B-Frames have some very nice benefits.

Hello,
I encounter exactly the same errors with an RTMP stream from DJI M30 Drone.
Autosave is interrupted every few seconds.
I tried with MediaMTX docker versions 1.4.2 and 1.6.0, same results.
MediaMTX LOG:
2024/03/19 12:25:45 INF [path 1581F4BND22B400CTWG1/live2] [record] recording 1 track
2024/03/19 12:25:46 ERR [path 1581F4BND22B400CTWG1/live2] [record] DTS is not monotonically increasing, was 7.935s, now is 7.935s
2024/03/19 12:25:48 INF [path 1581F4BND22B400CTWG1/live2] [record] recording 1 track
2024/03/19 12:25:49 ERR [path 1581F4BND22B400CTWG1/live2] [record] DTS is not monotonically increasing, was 10.938s, now is 10.938s
2024/03/19 12:25:51 INF [path 1581F4BND22B400CTWG1/live2] [record] recording 1 track
2024/03/19 12:25:51 ERR [path 1581F4BND22B400CTWG1/live2] [record] DTS is not monotonically increasing, was 12.971s, now is 12.971s
2024/03/19 12:25:53 INF [path 1581F4BND22B400CTWG1/live2] [record] recording 1 track
2024/03/19 12:25:54 ERR [path 1581F4BND22B400CTWG1/live2] [record] DTS is not monotonically increasing, was 15.946s, now is 15.946s
2024/03/19 12:25:56 INF [path 1581F4BND22B400CTWG1/live2] [record] recording 1 track
2024/03/19 12:25:56 ERR [path 1581F4BND22B400CTWG1/live2] [record] DTS is not monotonically increasing, was 17.982s, now is 17.982s
Recording files:
-rw-r--r-- 1 root root 106956 Mar 19 12:25 2024-03-19_12-25-43-939628.mp4
-rw-r--r-- 1 root root 143516 Mar 19 12:25 2024-03-19_12-25-51-930456.mp4
-rw-r--r-- 1 root root 121772 Mar 19 12:25 2024-03-19_12-25-56-950044.mp4
-rw-r--r-- 1 root root 118636 Mar 19 12:25 2024-03-19_12-25-58-968299.mp4
-rw-r--r-- 1 root root 119116 Mar 19 12:26 2024-03-19_12-26-01-935886.mp4
-rw-r--r-- 1 root root 143836 Mar 19 12:26 2024-03-19_12-26-06-954012.mp4
-rw-r--r-- 1 root root 165372 Mar 19 12:26 2024-03-19_12-26-18-955981.mp4
-rw-r--r-- 1 root root 122220 Mar 19 12:26 2024-03-19_12-26-20-977656.mp4
-rw-r--r-- 1 root root 121884 Mar 19 12:26 2024-03-19_12-26-23-946786.mp4

For situations like @Ric06 mentioned, where the DTS is the same, removing the '=' here, in mediacommon dts_extractor function did the trick. I've tested it, and it doesn't seem to cause any issues with HLS muxing or recording.

For situations like @Ric06 mentioned, where the DTS is the same, removing the '=' here, in mediacommon dts_extractor function did the trick. I've tested it, and it doesn't seem to cause any issues with HLS muxing or recording.

Purely mathematically this still will be monotonically increasing. A typo in the code? May be let's do a PR, so that some member of the project will take a look into the fix? (since there are >100 issues, but only 3 PRs).

I came here because I encountered the same problem. The if check should be dts < d.prevDTS, not dts <= d.prevDTS

Hello everyone,
I merged the @xaionaro patch (https://github.com/bluenviron/mediacommon/pull/119) that converts the check from dts <= d.prevDTS to dts < d.prevDTS, since multiple people mentioned that it solve the issue in some cases, but let me explain why this error happens and why the patch won't solve the issue for every possible stream.
MediaMTX has been conceived as a real-time media router - minimizing latency is pivotal, therefore a series of algorithms that require queues or buffers, and are present inside VLC, FFmpeg and GStreamer, cannot be implemented inside the server as they would increase latency.
Each frame of a video stream has two timestamps, DTS and PTS. Some protocols allow to route both of them (MPEG-TS, SRT, UDP, RTMP), others route PTS only (WebRTC and RTSP). Therefore, when a stream is converted from, for instance, RTSP to RTMP, the PTS needs to be filled by scratch since it's not available.
In FFmpeg, PTS is computed by putting frames into a buffer, waiting some time and then increasing it gradually. This is a technique that cannot be replicated here for the reason explained above. In its place, another algorithm was conceived from scratch (https://github.com/bluenviron/mediacommon/blob/main/pkg/codecs/h264/dts_extractor.go), it works by analyzing each H264 unit and extracting the Picture Order Count (POC) field. This is compared with the expected POC (that starts from zero minus the number of B-frames), their difference corresponds to the difference between PTS and DTS. Since we know the DTS, then PTS is obtained.
This algorithm works with about 90% of streams, the problem is that there are some streams that are generated in such a bad way that they declare the wrong number of B-frames, consequently the expected POC is wrong and the DTS is wrong. The DTS is subjected to some coherence checks, and this leads to the error mentioned in this issue.
Therefore, changing the check from strictly monotonically to monotonically won't solve the issue, since in case of a bad stream (like the ones generated through QSV HEVC), the DTS will be computed in a wrong way and will certainly result to a negative DTS difference.
The algorithm can be definitely improved, but at the moment i don't know how to do it. I spent a lot of time reading H264 and H265 specifications and i did not find a better approach.

I think it's better to close this issue since there are a lot of unrelated cases here, some of which have already been fixed, while others are not. If the problem persists, feel free to open other issues, each one dedicated to the specific encoder or hardware.

That might explain why some encoders have started working with MediaMTX by disabling B-frames.
Can you link or point to more information about issues with QSV HEVC encoding?

@aler9 thanks for spending time explaining this. It is an insightful post!

The algorithm can be definitely improved, but at the moment i don't know how to do it. I spent a lot of time reading H264 and H265 specifications and i did not find a better approach.

Might be a stupid thought, but it feels like the best approach would be to enable dependency injection (and make the POC-based solution as one of the available solutions). People may implement different solutions and few the most successful will prevail. I'm pretty sure some people would prefer to have a buffer, for example :)

Can you link or point to more information about issues with QSV HEVC encoding?

regarding the QSV HEVC, we discovered that there's a bug inside the SPS parser, discussion is here: #3285

I'm pretty sure some people would prefer to have a buffer, for example :)

absolutely yes, but i'd like to avoid adding an additional option in the configuration file and automatically detect such situations.


--format=json does not work for staged-config

Issue
om staged-config does not return a json output even if the --format=json flag is set
To reproduce run
om --format=json --target=pcf.hemet.cf-app.com --username=pivotalcf --password=<redacted> -k staged-config --product-name=pivotal-container-service

Expected Result
The config output in json
Actual Result
product-properties:
  .pivotal-container-service.pks_tls:
    value:
      cert_pem: "-----BEGIN CERTIFICATE-----
contents
-----END CERTIFICATE-----\r\n"
      private_key_pem: '***'
  .properties.cloud_provider:
    value: GCP
  .properties.cloud_provider.gcp.master_service_account:
    value<EMAIL_ADDRESS>  .properties.cloud_provider.gcp.network:
    value: hemet-pcf-network
  .properties.cloud_provider.gcp.project_id:
    value: cf-pks-golf
  .properties.cloud_provider.gcp.worker_service_account:
    value<EMAIL_ADDRESS>  .properties.cloud_provider.vsphere.vcenter_master_creds:
    value:
      password: '***'
  .properties.network_selector:
    value: flannel
  .properties.network_selector.nsx.nat_mode:
    value: true
...

sadly - it's not wired up as an option to staged_config. Potential for a PR here!

We actually do not want to have this be respected.
We are standardizing on only ever providing & accepting "Ops Manager Configuration Files" in yml format.
There is a need here to clarify what the --format flag does (and what it impacts), but I think the correct approach is to remove it from being a global flag.

I think the correct approach is to remove it from being a global flag.

Opening a separate issue for that.

Great. And here is a link to the "Only ever provide these in YML format" issue, (which is weirdly in ops-manifest issues):
https://github.com/pivotal-cf/ops-manifest/issues/5


How can I trian llava-next-llama-8B？

Are there any scripts or a link to how to train the llava-next-llama-8B model?

maybe you can use the finetune_clip.sh in the scripts file.


Fix typos in original_project

Hmmm, we probably have to put some information into the old project.
The old project is in legacy mode and we have no plans to update it (until there's some breaking bug or something like that).

The SUBTRACT change might cause issues but the others are just typos.


add missing short types

I planned to parse PE headers, that contains 2-4 bit fields, but lib missing those types. I suggest to add it:)

Sure that sounds like a good idea! I suggest the following new types be added:

[ ] U2
[ ] I2
[ ] U4
[ ] I4

This should be a rather easy issue to solve and get started with, I won't have to implement it for a little while but as a pointer for the person that decides to implement it:
Read

dataView.getUint8
Bitmask the relevant 2 or 4 bits
If it is a signed integers it is two's complement convert it from unsigned to signed then

Write
Writing is the same but in reverse.

@eliassjogreen does it make sense to have a 2 bit and 4 bit int value? Bitfield I can get. But I don't really see the use for a signed 0 | 1 or a signed 0 to 7?

I mean the use is mostly for parsing things like file headers and other such things. But I also don't see any issue implementing it if there is a use for it and it doesn't damage the rest of the module.

I can understand supporting nibble (4-bits) but 2-bits?

It's very much an esoteric thing I guess, but maybe if someone has 4x 2-bits packed together for stuff like ternary choices (yes, no, maybe)?

How would these eve be implemented? I assume it just consumed a full byte? Because it's pretty hard to read 1.25 bytes for example

Yeah, you're right. I was thinking adding support for quarter bytes using floats and shifting but that is probably just a mess.

If someone needs to have a compound type that uses bit indices then I feel like we should help them write that component, but I don't think we should have it in byte_type itself. It feels like such a unique case that only one or two people will need it.

Yep, agreed. Closing the issue


[Fonts] [Icons] Time to update the material font (missing heart_plus, etc)

I tried to update the Material Icons font for Flutter but the instructions on https://github.com/flutter/flutter/wiki/Updating-Material-Design-Fonts-&-Icons don't let non-Googlers do it.
I need the heart_plus icon (U+F884) which I see on the fonts.google.com site but isn't available in the Icons list.

I think heart_plus is only part of Material Symbols, rather than Material Icons. https://github.com/flutter/flutter/issues/102560 tracks support for the new icon set.

Ah, I see.


Minimum Height Binary Search Tree

Added python implementation for creating a minimum height binary search tree, given a list of nodes

Let me know if I should go ahead and update the README as well.

Thanks for contributing @anish03 ! You are welcomed to also add docs for your implementations at https://github.com/AllAlgorithms/algorithms


provide temporary column default

This will be needed in instances that run this migration while already having some seed data in the output_scenarios_pu_data table to avoid a not null constraint violation.

@kgajowy I even added this to my local copy of your PR and forgot to raise this in my review 🤦🏼


Outputting alternative transcripts

Greetings,
I am working with the DeepSpeech Pytorch wrapper to generate adversarial examples. I was wondering if the the classifier has a way of retrieving alternative transcripts in addition to the most probable transcript.
Regards

@scfang: You can use the parameter decoder_type to use beam search for other alternative transcripts. Other params like beam_width, cutoff_prob, etc. also help.

@minhitbk thank you for your answer. I managed to retrieve the alternative text.
I have another question though, what would be the right way to retrieve the probability/confidence level of a transcript as a whole? I see in the documentation that using estimator.predict() with transcription_output=False returns an output of probability of characters with shape (nb_samples, seq_length, nb_classes), but I am not sure how to translate this into overall transcript probability/confidence.
Regards

@scfang : This depends on the language model that you are going to use. Currently there are only 2 supported by DeepSpeech, namely the greedy search and the beam search. Both are also supported by the art estimator. There maybe other strategies available if you want to make a further investigation.


feat(package manager): can i port this config to Lazy.nvim

can i port this config to Lazy.nvim

as in "is it possible"? the answer is yes.
I am currently exploring lazy.nvim and may change the config to use it, but I have a few edge cases and questions i'm discussing with folke at the moment.

@tjdevries if you go through with it then a video about why and how would be interesting!

That's exactly the plan 😁

That's exactly the plan 😁

Is it stable enough for a beginner framework like kickstart? I'm new to vim/neovim. I've been trying every framework, modifying, breaking, writing my own versions, breaking them, studying dotfiles of well-known masters. I have been watching IT since it first landed in the repo. I'm dying to try it out, and plan to do so soon. Watching for Folke's framework too.  Problems found and fixed. Regressions. Breaking releases. It's all getting fixed very quickly, but is it stable enough for a beginner framework?

I've used lazy.nvim (not commuted final changes to my dot files yet) and for beginner config, it works pretty well. You can clone folke's nvim dot files and remove plugins you don't use.

I understand kickstart's goal is simplicity and beginner friendliness, which results in a single short config file.
But a simple config (with lsp and completion plugins for, say cpp/rust and python) with different config files for different plugins would be great for people to build on. A single init.lua blows up very fast.

I don't know if it's stable enough yet -- that's why I'm waiting a bit before merging into this repo.
Yes, you can easily start to use other files after downloading this one. I do not want this to be a sprawling config that confuses people by it's breadth. It is supposed to kickstart people on their nvim journey, not be the final resting place of where they use nvim.

I understand kickstart's goal is simplicity and beginner friendliness, which results in a single short config file.
But a simple config (with lsp and completion plugins for, say cpp/rust and python) with different config files for different plugins would be great for people to build on. A single init.lua blows up very fast.

you can use this template by foke LazyVim

Just found out that packer_compiled.lua is not an lockfile as I thought initially (this was my bad because I never looked closely into it). But now that I know it's not supported in packer but supported by LazyVim, this is huge vor beginners I would say, because it's just much easier to keep an working config in your repo and you can always go back if something break on an update.
This is the key feature for me and the reason why I will switch.

here i did a rudimentary version for this, plugins.lua and defaults.lua are not loading atm, so all customisation has to be done in the init.lua https://github.com/nvim-lua/kickstart.nvim/pull/169

Another aspect to this I think bears mentioning is that Packer is very straight forward to use. Add a single 'use' directive and you get a plugin installed.
I need to research further but it's not clear to me that lazy is as much of an easy base for people to build on.
Totally love this project - it has done exactly what it says on the tin and gave me a really nice foundaton on which to build.

I need to research further but it's not clear to me that lazy is as much of an easy base for people to build on.

The only thing to pay attention to when switching from Packer to Lazy is that the keywords used are different (for example: requires =  for Packer becomes dependencies = in Lazy) which doesn't change anything for a beginner since he doesn't know any of them anyway. Then the configuration is actually slightly easier in Lazy (you don't even have to use use ^^ and it takes into account whatever you put in a .config/nvim/lua/plugins/ folder out of the box, for the rest it's very similar), it also has some other interesting features for beginners (not having to restart neovim after installing all the plugins for example).
Now it's still a relatively young project with quite a lot of issues to address and so, maybe it's not yet suitable for kickstart.nvim which is very understandable, I don't really know, but if you have the chance, it's definitely worth checking. :)

Done by #178 :)


connection pool: idle connection never closed

Currently, the pool keeps idle connections open indefinitely (or until the server closes). That is okay from a correctness point of view but may lead to a very large number of open connections when for example implementing a crawler.

@weissi  Should this be a new global setting on the client that would apply to all of its connections?
Maybe we could set it to an acceptable default value, and if needed expose it as a new Configuration property the user can set.