🗺 Guide for your first contribution

ℹ Note: This is both an issue to recommend this content in the documentation and a 'pinned' issue to help new contributors. Feel free to comment suggested improvements.

Your first contribution

Table of contents

Guide

0. Understand your motivations
1. Understanding what Wagtail is
2. Joining the community

Checklist

3. Before contributing code

Checklist

5.  Finding an issue

Checklist (for a candidate issue)

7. Contributing a solution

Create a fresh branch for your contributions
Keep the changes focused
Write unit tests
Checklist

8. Submitting a Pull Request

Pull Request Checklist
8a. Review & fix the CI failures
8b. Push to the same branch with fixes and do not open a new pull request

9. Next steps

Responding to a review
Once merged in

Common questions

How can I start contributing?
Do I need to ask for permission to work on an issue?
What should I include in my pull requests
When do I need to write unit tests for a PR?
Where can I get help with my PR?
Can I just use Gitpod to develop

Helpful links

Inspiration for this content

This page has a step by step guide for how to get started making contributions to Wagtail, and is recommended for developers getting started with open source generally or with only a small amount of experience writing code for shared teams.
This is a long guide, do not worry about following all the steps in one go or doing them perfectly, there are lots of people around in the community to help but if you can take the time to read and understand yourself you will be a much stronger developer.
Each section has an introduction with an overview and a checklist that can be copied and pasted for you to check through one by one. Get ready to read, there is a lot of reading ahead.

Avoid 'claiming' any issues before completing Steps 0-7. This helps you not over-promise what you can contribute and helps the community support you when you are actually ready to contribute.
Do not worry about issues 'running out', software development is an endless fractal, there is always more to help with.

Guide
0. Understand your motivations
This may be a bit confronting, but take a moment to think about why you want to contribute. If your goal is to simply tick a box of 'first contribution' or to have this on your resume, it may be better to do a bootcamp or many of the online tutorials available.
Open source is a great way to be a better employee, add to your resume and to learn new skills. However, it is often harder and slower than doing this via a training course. Nonetheless it is still worth it if you are wanting to take the time to do things well.
Remember also that 'scratching your own itch' is often the best way to stay motivated with open source. If you are not even slightly interested in the CMS space or the languages that this project uses it may be hard to stick at it long term.
1. Understanding what Wagtail is
Contributing to Wagtail takes a bit more time and understanding compared to some other projects, as it is used to build a CMS for building websites. It is not just a CMS out of the box, instead, it takes some development time to build up the models and supporting code to use as a CMS. Additionally, Wagtail itself is built on top of another framework called Django (a Python web framework), these abstractions can be confusing at first but they do provide a very powerful way to provide a customisable system for developers to build with.
Reading the Zen of Wagtail will provide a start to help with this understanding, it may also help to read the Django overview to see what Django provides. The Wagtail Guide is a helpful resource to understand how the CMS works for every day users.
-   [ ] Read the Zen of Wagtail
-   [ ] Read the Django Overview
-   [ ] Search online for one or two articles that 'compare Wordpress to Wagtail' or 'top ten open source CMS' and read about the CMS landscape
-   [ ] Read some of the Wagtail Guide

2. Joining the community
Make an account on Wagtail Slack server, this is the way many of the community interact day to day. Introduce yourself on #new-contributors and join some of the other channels, keep the intro short and be nice to others. After this, join GitHub and set up your profile. It's really helpful to the community if your name can be added to your profiles in both communities and an image, it does not have to be your public name or a real image if you want to keep that private but please avoid it staying as the 'default avatar'.
You may also want to join StackOverflow and follow the Wagtail tag, this way you can upvote great answers to questions you have or maybe consider contributing answers yourself.
Checklist
-   [ ] Read the community guidelines
-   [ ] Join GitHub
-   [ ] Add your preferred name and image to your GitHub profile
-   [ ] Join Slack
-   [ ] Add your preferred name, timezone and image to your Slack profile
-   [ ] Introduce yourself in `#new-contributors` in Slack
-   [ ] Join the `#support` channel in Slack
-   [ ] _Optional_ Join StackOverflow

3. Before contributing code
Firstly, it is important to be able to understand how to build with Wagtail before you can understand how to contribute to Wagtail. Take the time to do the full Wagtail getting started tutorial without focusing yet on how to contribute code but instead how to use Wagtail to build your own basic demo website. This will require you to have Python and other dependencies installed on your machine and may not be easy the first time, but keep at it and ask questions if you get stuck.
Remember that there are many other ways to contribute, such as answering questions in StackOverflow or #support, contributing to one of the other packages or even the Wagtail user guide. Sometimes, it's best to get started with a non-code contribution to get a feel for Wagtail's code or the CMS interface.
Issue tracking, reading and triage is a critical part of contributing code and it is recommended that you read the issue tracking guide in full. This will help you understand how to find issue to work on and how to support the team with triaging issues.

Take the time to read the issue and links before adding new comments or questions. Remember, it's not time to 'claim' any issues yet either.

Checklist
- [ ] Do the Wagtail tutorial
- [ ] Look at the Wagtail organisation on GitHub, take note of any interesting projects
- [ ] Read through the Issue Tracking section in the docs
- [ ] Give a go at a non-code contribution

5. Setting up your development environment

Many contribution sections gloss over the mammoth task that can be a single line in the documentation similar to “fork the code and get it running locally”. This, on its own, can be a daunting task if you are just getting started. This is why it's best to have done the Wagtail tutorial before this step so you have run into and hopefully solved many of the normal developer environment issues.
First, create a clone of Wagtail on your GitHub account (see below for more details).

Do not try to move past this step until you have a working bakerydemo code locally and a clone of the Wagtail repo that you can edit. When editing the Wagtail core code (both HTML and JavaScript) you should be able to refresh the site running locally and see the changes.

Read, in full, the Development guide. This will walk you through how to get your code running locally so you can contribute. It's strongly recommended to use the Vagrant or Docker setups, especially if you are working on Windows.

Helpful tip. When developing, it's recommended that you always read the latest version of the docs. Not the stable version. This is because it will better reflect what's on the main code branch.

Checklist
- [ ] Install `git` (if not on your machine)
- [ ] Install a code editor/IDE (we recommend VSCode)
- [ ] Install the dependencies set out in the development guide
- [ ] Follow the development guide
- [ ] Make a change to the `wagtail/admin/templates/wagtailadmin/home.html` template file and confirm you can see the changes on the Wagtail dashboard (home) page
- [ ] Add a `console.log` statement to `client/src/entrypoints/admin/wagtailadmin.js` and confirm you can see the logging in the browser

Aside: Understanding Git and GitHub
git is the version control tool, it is something you install on your device and runs usually in the command line (terminal) or via some GUI application.
GitHub & GitLab are two prominent websites that provide a web user interface for repositories using git, Wagtail uses GitHub.
Mozilla has a great guide that helps to explain Git and GitHub.
How to clone a remote repository and what that actually even means:

On GitHub, you will not be allowed to directly create branches or changes in a repository (project) that you do not have access to.
However, you can make a copy (clone) of this repository using your own account, this clone will have all the branches and history that the original repository had.
This is also called ‘fork’ in some cases, as your repository will be a branch of its own that forks the original repository.
See the GitHub docs explain forking.
See Atlassian’s docs on git clone for more details.

6. Finding an issue
Hopefully, at this point, you have a good sense of the purpose of the project and are still keen to contribute.
Once you have the code forked and running locally, you will probably want to start looking for what to contribute.
Finding something to contribute is not always easy, especially if you are new to the project. Once you have a few candidate issues to investigate, be sure to read the entire issue description, all comments and all linked issues or pull requests. Often, you will find that someone else may have started or finished the issue, or sometimes there are clarifications in the comments about how to approach the problem or whether the problem is even something worth solving.
If an issue has a pull request linked, but not merged, read that pull request and the discussion on it. Maybe the previous contributor got stuck or lost momentum, in which case you could pick up where they left off (assuming it's been enough time). If you have an idea about how to solve a problem, just add a comment with a suggestion, we should all aim to help each other out.
If the issue is labelled good-first-issue, that usually means it is smaller and good for first time contributors. There are no problems with finding other issues to contribute to, have a search around and see what you can help with.
Finally, before 'claiming' check you can do the following;
Checklist (for a candidate issue)
-   [ ] Confirm that there is not someone actively working on it (e.g. PR or comments in the last ~2 months)
-   [ ] Ensure you can reproduce the problem/scenario in your local version of Wagtail
-   [ ] Ensure that you feel confident to write a unit test (if it's a code change) to validate that the solution **is** implemented

7. Contributing a solution
Important: Issues are only 'allocated' or 'assigned' to members of the Wagtail core team. We do not assign issues to other contributors.
If you feel ready to contribute a solution, now is a good time to add a comment to the issue describing your intention to do so, to prevent duplicating efforts. Instead of asking "please assign me this issue", write something similar to the following:

I have been able to reproduce this problem/scenario. I am planning to work on this, my rough solution is (...explain).

If it's just a documentation request, you may refine this comment to explain where you plan to add the section in the documentation.
Create a fresh branch for your contributions
Before writing any code, take a moment to get your git hat on. When you clone the project locally, you will be checked out at the main branch. This branch is not suitable for you to make your changes on. It is meant to be the branch that tracks the core development of the project.
Instead, take a moment to create a new branch. You can use the command line or install one of the many great git GUI tools. Don't listen to anyone that says you're not doing it right unless you use the command line. Reduce the things you need to learn today and focus on the git command line interface later. If you have a Mac, I recommend Fork, otherwise, the Github GUI is good enough.
This new branch name should have some context as to what you are fixing and if possible the issue number being fixed. For example git checkout -b 'feature/1234-add-unit-tests-for-inline-panel'. This branch name uses / to represent a folder and also has the issue number 1234, finally, it uses lower-kebab-case with a short description of the issue.

You may find that your editor has some handy Git tooling and will often be able to tell you what branch you are on or whether you have any changes staged. https://code.visualstudio.com/docs/sourcecontrol/overview

Keep the changes focused
As a developer, it is easy to get distracted, maybe a typo here or white space that does not feel 'right' there. Sometimes, even our editor gets distracted and starts adding line breaks at the end of files as we save or it formats code without our consent due to configuration from a different project.
These added changes that are not the primary goal or not strictly required by the project's set-up are noise. This noise makes it harder to review the pull request and also can create confusion for future developers that see these commits and wonder how it relates to the bug that was fixed.
When you go to stage changes, only stage the parts you need or at least review the changes and 'undo' them before you save the commits.
If you do find a different problem, maybe a typo in the docs, this is what branches are for.  Now you have a small change, one that is easy to merge, which you can prepare a pull request for.
Keep your changes focused on the goal, do not add overhead to the reviewer or to yourself by changing things that do not need it (yet).

It's OK to make changes in a 'messy' way locally, with lots of commits that maybe include things that are not needed. However, be sure to take some time to review your commits and clean up anything that is not required before you do your pull request.

Write unit tests
We are getting close to having a pull request, but the next critical step is unit tests. Anecdotally, we find that testing code you wrote will take 5-10x longer than the actual bug fix. Often, if the use case is right, it is better to write the tests first and get them running (but failing) before you fix the problem.
Finding how and where to write the unit tests can be hard in a new project, but hopefully, the project's development docs contain the clues you need to get started. Read through the dedicated testing section in the development documentation.
If you fix a bug or introduce a new feature, you want to ensure that fix is long-lived and does not break again. You also want to help yourself by thinking through edge cases or potential problems. Testing helps with this. While regressions do happen, they are less likely to happen when code is tested.
Many projects will not even review a pull request without unit tests. Often, fixing a bug is not hard, ensuring the fix is the 'real' fix and that it does not break again is the hard part.  It will help you grow as a developer and help your contributions make a longer lasting difference.

A pull request that just adds unit tests to some core functionality that does not yet have tests is a great way to contribute, it helps you learn about the code and makes the project more reliable.

Checklist
- [ ] After feeling confident about a solution, add a comment to the issue
- [ ] Create a new branch off `main` to track your work separate from the main branch
- [ ] Keep the changes focused towards your goal, asking questions on the issue if direction is needed
- [ ] Write unit tests

8. Submitting a Pull Request
A pull request that has the title 'fixes issue' is unhelpful at best, and spammy at worst. Take a few moments to think about how to give your change a title. Communicate, in a few words, the problem solved, feature added or bug fixed. Instead of 'Fixes 10423', use words and write a title 'Fixes documentation dark mode refresh issue'. No one in a project knows that issue 10423 is that one about the documentation dark mode refresh issue.
Also, add a proper name when you create the pull request. This will ensure that any notifications that go out to the team have the correct name from the start. Adding something like fixes #1234 in your commit message will let GitHub know that the change is for that issue.

Remember you can make a draft pull request in both GitHub and GitLab. This is a way to run the CI steps but in a way that indicates you are not ready for a review yet.

Referencing the issue being fixed within the pull request description is just as important as a good title. A pull request without a description is very difficult to review. Add some context and some steps to reproduce the issue or scenario.
If the change is visual, it's strongly recommended to add before and after screenshots. This helps you confirm the change has worked and also helps reviewers understand the change made.
It is often good to write yourself a checklist for any pull request and fill in the gaps. Remember that the Pull Request template is there for a reason so please use that checklist also.
Pull Request Checklist
-   [ ] Small description of the solution, one sentence.
-   [ ] Link to issue/s that should be resolved if this pull request gets merged.
-   [ ] Questions or assumptions, maybe you made an assumption we no longer support IE11 with your CSS change, if it's not in the docs - write the assumption down.
-   [ ] Details - additional details, context or links that help the reviewer understand the pull request.
-   [ ] Screenshots - added before and after the change has been applied.
-   [ ] Browser and accessibility checks done, or not done. Added to the description.

8a. Review & fix the CI failures
Once you have created your pull request, there will often be a series of build/check/CI steps that run.
These steps are normally all required to pass before the pull request can be merged. CI is a broad term but usually, the testing and linting will run on the code you have proposed to change. Linting is a tricky one because sometimes the things that are flagged seem trivial, but they are important for code consistency. Re-read the development instructions and see how you can run the linting locally to avoid frustrating back & forth with small linting fixes.
Testing is a bit more complex. Maybe all the tests can be run locally or maybe the CI will run tests on multiple versions of a project or language. Do your best to run all the tests locally, but there may still be issues on the CI when you do. That is OK, and normally you can solve these issues one by one.
The most important thing is to not just ignore CI failures. Read through each error report and try to work out the problem and provide a fix. Ignoring these will likely lead to pull requests that do not get reviewed because they do not get the basics right.

GitHub will not run the CI automatically for new contributors in some projects. This is an intentional security feature and a core contributor will need to approve your initial CI run.

8b. Push to the same branch with fixes and do not open a new pull request
Finally, after you have fixed the failing linting and tests locally, you will want to push those changes to your remote branch. You do not need to open a new pull request. This creates more noise and confusion. Instead, push your changes up to your branch, and the CI will run automatically on those changes.
You can add a comment if you want to the pull request that you have updated, but often this is not really needed.
Avoid opening multiple pull requests for the same fix. Doing that means all the comments and discussion from the previous pull request will get lost and reviewers will have trouble finding them.
9. Next steps
When you take time to contribute out of your own personal time, or even that from your paid employer, it can be very frustrating when a pull request does not get reviewed. It is best to temper your expectations with this process and remember that many people on the other side of this are also volunteers or have limited time to prioritise.
It is best to celebrate your accomplishment at this point even if your pull request never gets merged. However, it is good to balance that with an eagerness about getting your amazing fix in place to help people who use the project. Balancing this tension is hard, but the unhelpful thing to do is give up and never contribute or decide that you won’t respond to feedback because it came too late.
Also, remember that it is OK to move on and try something else. Try a different issue or project or area of the code. Don’t just sit waiting for a response on the one thing you did before looking at other challenges.
Responding to a review
Almost every Pull Request (PR), except for the most smallest changes, will have some form of feedback. This will usually come in the form of a review and a request for changes, at which point your PR will be flagged as 'needs work' or in some cases 'needs design decision'. Take the time to read all the feedback and try to resolve or respond to comments if you have questions.

Important: Do not close the PR and create a new one, instead keep it open and push your changes/fixes to the same branch. Unless directed to make the PR smaller, keep the same one open and work through items one by one.

Once you feel that you have answered all the concerns, just add a comment (it does not need to be directed at the reviewer) that this is ready for another review.
Once merged in
Well done! It's time to party, you got here. Thank you for taking the time to contribute to Wagtail.
Common questions
How can I start contributing?

Ideally, read this guide in full, otherwise see some quick start tips.
Start simple - pick something small first. The good first issue label is a good place to look.
Read the entire issue, all comments (links) and related issues.
Someone may have started work (that work may have stalled).
Check if assigned, we do not usually use that unless assigned to someone within the core team.

If you have done all of that and think you can give it a go just a comment with something like 'I will give this a go', no need to ask for permission.
Do I need to ask for permission to work on an issue?
No. However, check if there is an existing pull request (PR). If there is nothing, you can optionally add a comment mentioning that you're starting work on it.
What should I include in my pull requests

The fix or feature you are working on
Tests
Linted code (we make use of pre-commit. You can run all formatting with make format)
Updated documentation where relevant (e.g. when adding a new feature)

When do I need to write unit tests for a PR?
Unless you are updating the documentation or only making visual style changes, your Pull Request should contain tests.
If you are new to writing tests in Django, start by reading the Django documentation on testing. Re-read the Wagtail documentation notes on testing and have a look at existing tests.
Note that the JavaScript testing is not as robust as the Python testing, if possible at least attempt to add some basic JS tests to new behaviour.
Where can I get help with my PR?
The #new-contributors channel in Slack is the best place to get started with support for contributing code, especially for help with the process of setting up a dev environment and creating a PR.
There is also the more recently created #development channel for advice on understanding and getting around the Wagtail code-base specifically. Finally, if you have a general problem with understanding how to do something in Wagtail itself or with a specific feature, then #support can be used.
Can I just use Gitpod to develop
While Gitpod is great for some small scale Pull Requests, it will not be a suitable tool for complex contributions and it's best to take the time to set up a fully functional development environment so you can manage branches and ongoing commits to one branch.
Here are some links for using GitPod with the Wagtail packages:

Bakerydemo Gitpod instructions
Wagtail Gitpod – Wagtail development setup in one click

Helpful links

Django's contributor guide is a helpful resource for contributors, even those not contributing to Wagtail.
MDN's open source etiquette is a great guideline for how to be a great contributor.
Learning Git Branching a solid interactive guide to understand how git branching works.
Hacktoberfest every October, join in the fun and submit pull requests for a t-shirt.
21 Pull Requests a December community effort to contribute to open source.
Windows step by step guide to getting bakerydemo running with local Wagtail

Inspiration for this content
Some great further reading also

5 simple ways anyone can contribute to Wagtail
Ten tasty ingredients for a delicious pull request
Preparing a Gourmet Pull Request
Zulip's contributor guide
Documentation for absolute beginners to software development (discussion)
New contributor FAQ

Action for me - incorporate https://github.com/wagtail/wagtail/wiki/New-contributor-FAQ items

Epic work here @lb-! I'm sure this will be a massive help to new contributors.

"Zen of Wagtail" is missing a link (https://docs.wagtail.org/en/stable/getting_started/the_zen_of_wagtail.html).
On "When do I need to write unit tests for a PR?" - cosmetic / CSS changes generally don't need tests, so maybe say "Unless you are updating the documentation or only making visual style changes".
"Where can I get help with my PR?" - #support is probably not the ideal channel, as that's more oriented towards "how do I do X in Wagtail" queries, and I'd say there's not a lot of crossover between those and the kind of help a contributor needs. #new-contributors is probably a better channel to point to, especially for help with the process of setting up a dev environment and creating a PR. (Maybe also #development for advice on understanding and getting around the Wagtail codebase specifically - but suggesting more than one channel here might be counterproductive.)

Do you think it'd be more useful if we rename the title to be more eye-catching/obvious on what's inside?
e.g. "Looking to contribute? Read this first", "Read this before contributing", or "Guide to your first contribution"
I'm just wondering whether there would be people who ignore this pinned issue if they thought it might just be an actual issue on the documentation website.

@lb- I made a small tweak to section 7 to make the fact that we do not assign issues to non-core team members more prominent instead of within a blockquote. I also changed the example comment so that "I have been able to reproduce this problem/scenario." is mentioned first, to make it clearer that they have to confirm the issue before picking it up.
P.s. looks like
```md
```

is not recognised by GFM, so I changed all of them to
```markdown
```

Thanks @laymonage  - love it!

Thanks @floels  - those items are fixed up. Appreciate the feedback.

Need to review the wording, someone has interpreted that we don't allow people outside of the core team to work on bugs. There could be clarity maybe in what we mean by 'we don't assign issues '.

Hi I noticed the 'Table of contents' links aren't working anymore. So glad this guide is here btw, very helpful!

Thanks @valedithat - yeah the TOC thing is annoying, it's not supported in GitHub issues. I thought it's better to have it even if the links don't work.
There is a PR up that will put this content in the actual documentation.
https://github.com/wagtail/wagtail/pull/10071
Once merged, we'll change this pinned issue to be just a link to the docs.

Any feedback is welcome from all on the PR now.

Update. This content is now on the official documentation - please visit https://docs.wagtail.org/en/latest/contributing/first_contribution_guide.html
I've updated the issue description to just have a link to this and hidden the original draft content that was there.


Skip bundling for assembleAndroidTest

Description:
I'm trying to build a release-test apk on my ci-server. However the react.gradle plugin always runs the task "bundleReleaseJsAndAssets" and increases the build-time for my test-apk. I cannot find a solution to skip bundling, its only possible to skip bundling for all release build-types by adding bundleInRelease: true.
React Native version:
0.61.5
Steps To Reproduce

Run gradlew assembleAndroidTest -DtestBuildType=release

Expected Results
Build test apk without bundling.

ok I have found a solution:
project.ext.react = [         entryFile   : "index.js",         enableHermes: true,  // clean and rebuild if changing         // assembleAndroidTest can pass -DbundleInRelease=false to decrease build time         bundleInRelease: System.getProperty('bundleInRelease', 'true').toBoolean(), ]
I've added the system property "bundleInRelease" that can be set by calling:
./gradlew assembleAndroidTest -DtestBuildType=release -DbundleInRelease=false
Works for me, I close this issue.


Clone Nano board time out error uploading firmware

Describe the bug
Clone Nano boards having time out error when uploading firmware
Steps To Reproduce
Steps to reproduce the behavior:

Connect new Arduino Nano chinese clone with CH340 chip
Board is correctly recognized
Upload firmware selecting Nano type
Upload process appears to proceed then gets an error before completing
Note error is avrdude timed out

Expected behavior
Mobiflight uploads firmware normally
Actual behavior
Mobiflight reports error and does not complete upload.
Details

MobiFlight Version: 9.7,1
FlightSim: irrelevant
AddOn: irrelevant

Additional context
Board requires the "old bootloader" method that limits baud rate to 57600.
Mobiflight fails to upload at 115200 baud rate (avrdude gets no response) and times out at 57600.
Testing done showed increasing timeout parameter to 20000 in arduino_nano.board.json file allows enough time to complete the upload at the slower speed.

Just to comment that updating the Nano bootloader solved this and allows the Nano to communicate at 115200 baud. I am aware reloading the arduino bootloader is outside the expertise of most regular users.

I had no idea you could replace the nano bootloader with the new one!

I had no idea you could replace the nano bootloader with the new one!

Ralph gave me the idea and then did a bit of research. It is really not hard to do. Just another arduino to act as programmer and six jumper wires.

Yes, "just" an ISP programer which gets recognized from the Arduini IDE and within the IDE choose flash bootloader.

Yes, "just" an ISP programer which gets recognized from the Arduini IDE and within the IDE choose flash bootloader.

I did this yesterday and after figuring the correct wiring, I was able to load the newer optiboot bootloader to the Nano.
I did have to edit the boards config file in the arduino IDE to specify that the Nano old bootloader boards use the new bootloader file. This I understand was necessary so the IDE could communicate with the board still having the old bootloader to replace it with the new.
Just doing burn bootloader without editing the boards config file writes the old bootloader again as you need to specify you are connected to an old bootloader board.

I changed the wrong timeout value 🤦♂

Never mind.


Unexpected cover image behavior

I have difficulties managing the cover image and could use some guidance.
When I specify an image in cover, under [params] in the config.toml, I don't get the same result as on the demo site (http://vjeantet.fr/). On the demo site, the image is shown "full" screen while on my test site, the picture is shown as all width of the screen but about 25% of the hight. I tried with the same picture as on the demo site (cover_polenord).
I have no clue how to get the cover effect of the demo.
Jmm

To help narrowing down, I observed that my index.html is generated with the following line:
<header class="main-header tag-head" style="background-image: url(http://localhost/images/cover_polenord.jpg)">

When I remove the tag-head in the class name, I get the desired behavior.
What am I doing wrong ?
Jmm

Looks like this is an issue that has an Open PR:
https://github.com/vjeantet/hugo-theme-casper/pull/49
I've corrected it manually (as you have) in index.html for the time being.

Thank you very much for that workaround, Anthony.

And it looks like @vjeantet has merged it, so we should be good from here on out!
I'll take a look at it tonight, but @jmMeessen if it works for you, we might be good to close this.

I just made the necessary "git subrepo" voodoo and can confirm that the latest version of the theme now works.
So I can close this issue.

Thanks for reporting and for the PR !


Agnostic S3 Integration

Describe the feature you'd like
I'd like an "agnostic" S3 implementation
Describe the benefits this feature would bring to BookStack users
Currently, S3 is limited ONLY to amazon, that I can tell
Additional context
There are other S3 implementations besides Amazon. As it stands, my options for storage with bookstack are, as follows:

File (local only)
FTP (old, complicated to make highly available, etc)
"s3" (Amazon only, meaning it's limited ONLY to paying a cloud provider)
Rackspace (rackspace only, again limited to paying a cloud provider)

I want a better solution for storing uploads, etc. than local storage and FTP, and as it happens, I am running a full ceph cluster, complete with a rados gateway, 3 separate instances, load balanced by a highly available, 3-node traefik cluster, to ensure that my rados gateway (and thus, it's s3 api as well) is always up and available, and 3+ nodes in my ceph cluster, with multiple TBs of redundant storage. I have created a user and a bucket, and they are available via the s3 API (http://docs.ceph.com/docs/mimic/radosgw/s3/) - yet, no matter what I do, going so far as working with a friend to add some custom PHP code, BookStack still insists on using on amazonaws.com for s3...

It looks like Bookstack is using a fairly barebones S3 plugin - league/flysystem-aws-s3-v3. Looking at the GitHub here and here for details.
It seems that there are other options that can be added (endpoint?) to provide the functionality like Rocket.Chat does as mentioned in #1195 and as you desire. Specifically with Minio, Issue #139 and using other endpoints Issue #127; see the post 3 posts down.
I haven't been able to fully test this yet myself but I plan to try soonish.

So, I have to go to bed as work calls early tomorrow for me, but I've been able to determine a few things:
Manually establishing an "endpoint" parameter in config/filesystems.php will change the Laravel error messages. With this parameter defined, the URL changes to "$bucketname.$endpointaddress", which if you're using SSL will fail due to CN unmatched. Not using SSL, with Minio's case, it still fails as the endpoint should have a directory tail (like a subfolder) but even explicitly defining it in $endpointaddress causes it to be dropped off. And if you define a bucket, it tries to add the bucket as if it's an Amazon S3 address (like a subdomain). And if you leave $bucketname=$null or $false, it fails to perform because it's expecting a bucket name.
More to the point though, looking through ImageService.php in the Bookstack app itself, it still seems like with S3 defined it's hardcoded looking for the Amazon address (see lines 419-441). The Flysystem docs, under "Compatible Storage Protocols", seem to indicate the endpoint setup should work and at least from other bug reports already noted in the post above, people are getting the functionality. They just don't include their configs or patches and I'm terrible at coding.

Thanks for looking into this @armouredking! I'm not much of a developer either. I'm a systems engineer who can do enough coding in non-scripting  languages to get into trouble :P

Yeah, exactly. What would you recommend besides BookStack though? It has all the features I'm looking for EXCEPT for S3 integration. And yeah, I don't have to pay for s3 either, I have 7TBs= of local redundant storage for a reason, no need to pay someone else for it (approximately $164.74/month for paying for equivalent storage from amazon - not really in my budget)

Hi Both,
Thanks for giving BookStack a try and thanks @armouredking for looking into this.
Just spent a couple of hours looking at this myself and managed to get BookStack going with minio. I'll list the steps below and hopefully the same will apply for ceph. Some changes to BookStack config/filesystems.php file are needed so watch out as these changes may cause trouble or be discarded when updating. Once someone confirms this works for them I'll make these changes properly officially configurable via the .env file.
Minio Steps
As used in examples below, my minio instance base URL is http://<IP_ADDRESS>:9000. Where you see this url change it to be your own base URL.

Create a bucket for your content. In these steps my bucket will be called bookstack.
Edit your BookStack .env file and set the following:

STORAGE_TYPE=s3
STORAGE_S3_KEY=<MINO_ACCESS_KEY>
STORAGE_S3_SECRET=<MINO_SECRET_KEY>
STORAGE_S3_BUCKET=bookstack #(Bucket Name)
STORAGE_URL=http://<IP_ADDRESS>:9000/bookstack #(Minio public URL + '/' + bucket name)

Edit the BookStack file config/filesystems.php, Find the section starting as 's3' => [ and replace it with the below, changing the endpoint value to be your base minio instance URL:

        's3' => [
            'driver' => 's3',
            'key'    => env('STORAGE_S3_KEY', 'your-key'),
            'secret' => env('STORAGE_S3_SECRET', 'your-secret'),
            'region' => env('STORAGE_S3_REGION', 'your-region'),
            'bucket' => env('STORAGE_S3_BUCKET', 'your-bucket'),
            'endpoint' => 'http://<IP_ADDRESS>:9000',
            'use_path_style_endpoint' => true,
        ],

Since Minio does not support Object ACLs, to set uploaded images as publicly fetchable, you'll need to set a policy on the bucket. This can be applied just to images, since file uploads (page attachments) have controlled access thanks to being less frequent. The path prefix for images should be uploads/images/. Set this to read-only then save the policy.

Test uploading images, saving drawings & saving attachments.

As said above, Please confirm if this works for you and I'll make the config changes to be officially & properly configurable. The hard-coded s3 URL's mentioned above should not matter, These are only utilised as a backup when a STORAGE_URL is not set.

@ssddanbrown Thanks for looking into this! I will test this out and see if it works with Ceph :)

@ssddanbrown @armouredking This seems to work for Ceph using the rados gateway and s3 API for images and drawings. However, it seems to have issues uploading via attachments, both selected via the file browser, and dragged and dropped. I've tested with .pdf, .doc, and .jpg. Attempting to upload an attachment completely breaks bookstack when running via artisan - the server stops responding, and the process have to be killed manually, as ^C in artisan doesn't kille the process. Running via nginx+php-fpm doesn't crash but it just hang at upload indefinitely.
I downloaded https://cyberduck.io/ and used it to connect to the same ceph s3 endpoing, with the same credentials, and it uploaded the same files just fine, so I'm inclined to think it's some bookstack issues, though I could be wrong. I tried scouring all the logs I could find, but I couldn't find any issues, error messages or anything else.

@ssddanbrown Not having much luck with a Minio implementation.
Following direction, I can get it working using IP addresses and port numbers. However, it fails whenever name resolution is involved. There are no entries in the Laravel log, and the NGINX/PHP logs are also bereft. Step by step:
Edit .env file as noted above, using ADDR:PORT syntax.
Edit the filesystems.php file, again using the endpoint parameter in an ADDR:PORT syntax.
Edit Minio bucket to have ACL as noted.
At this point, I can browse the Bookstack app (using ADDR:PORT) and upload pictures. I can even see them in the image selector. Additionally, using the Minio dashboard I can see that the folder has been created, the image is available, and thumbnail folders are also created. Excellent.
Now, going back into the .env file and the filesystems.php file, I change the ADDR:PORT syntax to HTTPS://DOMAIN.NAME (there are no ports, due to reverse proxy via HaProxy).
I return to the website, this time at domain.name and what do you know - the pictures I uploaded are still visible. Not unexpected: after all, they didn't go anywhere and the only thing that has changed is the link address. Excellent.
Here's where trouble starts. Going back to image upload, the first problem encountered is that the image no longer shows up in the picker. I get a blank UI, as if no pictures (including the visible uploaded ones that can be seen on a page) exist. Attempting to upload a new picture appears to function but eventually will time out. When I say "appears to function" I mean I can select a picture, tell it to upload, watch the little progress bar go to 100%, and then it stops. Using inspector/console in Edge and Firefox, I see the following error occur:
Unhandled promise rejection Error: "Request failed with status code 504"
exports https://domain.name/dist/app.js?version=v0.24.3:51:102989
exports https://domain.name/dist/app.js?version=v0.24.3:57:1314
exports https://domain.name/dist/app.js?version=v0.24.3:51:102003
These do not appear to actually correlate to a specific file, so I'm assuming there's some backend magic going on to make a conglomerate file and I'm assuming lines 51 and 57 might tell me something about what's trying to happen but if those are placement ids those are long lines.
Refreshing the page will now display the following:

503 Service Unavailable
No server is available to handle this request.

HaProxy stats also agrees:
archives | docker_bookstack | DOWN | 665 | 1 | 1 | 665
-- | -- | -- | -- | -- | -- | --
archives | BACKEND | DOWN | 665 | 0 | 0 | 867
If I wait about 3-5 minutes, the server will come back (no reboot required). HaProxy stats will show the service returning with DOWN (1/2) and then back UP. The part that is confusing me though, is that the uploaded image is available in the bucket. As can be seen below, there are two images: the one done via ADDR:PORT (everything worked as expected) and the one uploaded via DOMAIN.NAME (where the server/docker app ingloriously ceases to respond for a time with no error message outside of the 504 reported in Inspector):

I'm at a loss as to how to proceed from here, seeing as there are no error messages outside of what inspector tells me. This works for other apps (Rocket.Chat) which goes through the same reverse proxies, so I don't know where it's being hung up.
Unrelated side curiosity -- it's not Dec 12th, and the clocks don't think it is. Why did the upload folder show 12-Dec? Is that just a "make it appear in order" thing?


Merging Develop into Master 9.13.2018 - fixing readme file

Description of the change:
Reason for the change:
Link to original source:

Closes #

Hello @Whatthefoxsays,Thanks again for the PR! We appreciate your contribution and look forward to                                              continued collaboration. Thanks!                                             Team SendGrid DX


sys: Fix sys.maxsize and add sys.maxunicode

Current implementation of sys.maxsize is unsigned type
but AFAIK the type of sys.maxsize should be identical with
Py_ssize_t which is known as signed type.
sys.maxunicode is hardcoded from cpython repository
https://github.com/python/cpython/blob/master/Python/sysmodule.c#L2654

The maxsize value is under debate. What should be used might change again later. Please see #447


Nontrivial location name change notifications

This adds yet another admin notification, this time for nontrivial changes to the name of locations.  This happens from time to time when a user accidentally uses the wrong location for an observation, and instead of changing the observation to fix it, they edit the location (despite the clear warning on the location form not to do this!).  Hopefully this will allow me to keep a better tabs on that kind of error.
Also, I added links direct to the edit action (in addition to the show action link which is already there) to all of these name and location admin notifications.

Looks good. I think you should merge it.

Thanks, Joe.  Done.  Trivial stuff, but will save me a click frequently...


How can I delete a document after uploading using api?

I'm uploading a document using the Gradio client apis;
I'm uploading the file like this..
 # upload file(s).  Can be list or single file
    local_file, remote_file = client.predict(filePath, api_name='/upload_api')

    # ingest
    res = client.predict(remote_file,
                         langchain_mode, chunk, chunk_size, True,
                         *loaders,
                         h2ogpt_key,
                         api_name='/add_file_api')

then to delete the file...
 client.predict(path, "UserData", None, api_name='/delete_sources')
the document is removed from the database, but the file remains in /user_path. Next time the server is started it re-ingests the document.
Is there some way to remove the file from /user_path using only the apis?

If you want to delete the actual document on disk, you'd need to add a line around here:
https://github.com/h2oai/h2ogpt/blob/964050881d8bac0e7254cb83420b2577cb8dab9c/src/gpt_langchain.py#L7556
It's a bit risky to do, why we don't do it, since that may be original source.
We only currently have a purge for entire collection, and that removes the files too.
But we can keep this issue open as a feature request.


Styleable: added public member function setRgb()

Added setRgb() function to Styleable.

Thanks, I understood the intention of the method. Could you fix the review findings please?

Ups, I missed the review. I'm trying to merge master into my branch, but it's blocked because I need the approved review.

these github reviews are hard to understand, how they work... :).

I updated the code with your changes and I also changed uint32_t to uint8_t here: https://github.com/igagis/svgdom/blob/master/src/svgdom/elements/Styleable.cpp#L700

hmm tests are failing, there's some weird message about pugixml that seems unrelated to my changes

It was beacuse cygwin mirror was temporary unavailable, there are such lines in the log:
HTTP status 404 fetching http://cygwin.mirror.constant.com/x86_64/setup.xz.sig

I restarted the build on Appveyor

Other builds on travic-ci fail because of some other reason, so there is a problem in the code still.
I also added more review comments, please address those and tests might pass then.

Hmm the tests are failing because camera.svg is not matching the etalon sample,but I haven't been able to figure out how this is related to my code. The only changes that I did are removing the const and changing uint32_t to uint8_t.
I just tested my changes on Mac and they work:
std::unique_ptr<svgdom::SvgElement> dom = utki::makeUnique<svgdom::SvgElement>();

std::unique_ptr<svgdom::PathElement> path = utki::makeUnique<svgdom::PathElement>();

svgdom::PathElement::Step step;

step.type = svgdom::PathElement::Step::Type_e::MOVE_ABS;
step.x = 0;
step.y = 0;
path->path.push_back(step);

step.type = svgdom::PathElement::Step::Type_e::LINE_ABS;
step.x = 0;
step.y = 300;
path->path.push_back(step);

step.type = svgdom::PathElement::Step::Type_e::LINE_ABS;
step.x = 300;
step.y = 300;
path->path.push_back(step);

step.type = svgdom::PathElement::Step::Type_e::LINE_ABS;
step.x = 300;
step.y = 0;
path->path.push_back(step);

StyleValue styleVal;
styleVal.type = StyleValue::Type_e::NORMAL;
//styleVal.color = vcolor[0] | (vcolor[1] << 8) | (vcolor[2] << 16);
styleVal.setRgb(255, 0, 0);
path->styles[StyleProperty_e::FILL] = styleVal;

dom->children.push_back(std::move(path));

std::string domStr = dom->toString();

std::cout<<domStr<<std::endl;

And the outpus is:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
	<path style="fill:#ff0000" d="M0,0 L0,300 300,300 300,0"/>
</svg>

Instead of styleVal.setRgb(255, 0, 0);  try some arbitrary numbers, like styleVal.setRgb(0xfd, 0x13, 0x4e);  and see what will be the result of generated fill:#ff0000

I changed uint8_t back to uint32_t and the tests are not failing anymore

I suggest you to add test for setRgb to make sure it works properly. No need to create a new test, you can add setRgb checks to toString test

I added the test to toString and the tests are passing. I think it's ready to merge.


[Alert] ownerState is undefined in styleOverrides when providing action prop

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Current behavior 😯
When overriding Alert styles in styleOverrides using the callback method, app crashes because ownerState is undefined if I also provide the action prop.
Expected behavior 🤔
I can provide custom action prop and still use styleOverrides
Steps to reproduce 🕹
Here is a repro sandbox
Context 🔦
Having had a brief look, my guess would be the culprit is at this line in Alert implementation - looks like when action is used, ownerState does not get passed to AlertAction.
Your environment 🌎
No response

Ooops, looks like we forgot to pass ownerState on the AlertAction when a custom action is used. I am creating a PR for it, thanks for reporting.


Document unknown in Basic Types

Right now, the unknown top-level type is only documented in the release notes: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html#new-unknown-top-type
It’s good to document unknown next to the any type, because it replaces certain use-cases for any. This new documentation gives an overview of unknown and focuses on giving practical examples, while the existing release notes focus on defining the new feature and give exhaustive examples.
Fixes #960

Thanks for the PR, the revised version of the handbook in the v2 site already has a section on unknown in the basic types doc - good call, otherwise I'd have taken this directly


Known issues and/or under working work items of refactor (#445)

Done

[x] Pass the integration tests (#445) // @gnawux
[x] Fix issues with devicemapper driver (#464, hyperhq/runv#392) // @gnawux
[x] Tty improvement ( #471 hyperhq/runv#394 ) // @laijs
[x] Implement streams attach in hyperd ( #476  ) //@laijs
[x] start container API (#469) //@gnawux
[x] Remove attach info from pod start API ( #482 ) // @gnawux
[x] Tty cleanup ( #483 ) //@laijs
[x] #468 Hyperd reported wrong IPs after pod has been restarted
[x] Release Pods and Re-associate Sandbox after daemon restart ( #509 #511 ) // @laijs @Crazykev
[x] On disk (and associate) compatibility with 0.7 or earlier version ( #518 ) // @Crazykev
[x] ~~Reimplement the service with IPVS ( #494)  ~~ // @Crazykev

Patch Available
Work in Process
Next

[ ] Pod level Port mapping
[ ] Remove created volumes during Pod/Container remove

Edit: add #464 to the list

Edit: add hyperhq/runv#392 to the list

Edit: add #469

Edit: add #471 #468 into the list

Edit: update #471 , add #476

Edit: add #482

Update, most of the work items are done. Move the remains to next release milestone


✨ Check <> '' is pushed to the parquet writer

Thanks for stopping by to let us know something could be better!
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 [...]
Describe the solution you'd like A clear and concise description of what you want to happen.
Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.
Additional context Add any other context or screenshots about the feature request here.

The issue was the value was a blob, which wasn't on the list of columns that could be pushed too.


Replace bloated express-winston module

The production install size can be reduced by 9mb by replacing the express-winston module which has a dependency on lodash.

<EMAIL_ADDRESS>           : 30.0M
 -<EMAIL_ADDRESS>: 9.4M
   -<EMAIL_ADDRESS>      : 9.2M
 -<EMAIL_ADDRESS>    : 5.2M
   -<EMAIL_ADDRESS>      : 4.1M
     - date-fns1.29.0     : 3.9M
 -<EMAIL_ADDRESS>      : 12.0M
   -<EMAIL_ADDRESS>        : 5.6M
     -<EMAIL_ADDRESS>    : 4.9M
   -<EMAIL_ADDRESS>     : 3.0M
   -<EMAIL_ADDRESS>       : 1.3M

date-fns shouldn't be an issue anymore with<EMAIL_ADDRESS>(winstonjs/logform#11)
<EMAIL_ADDRESS>          : 1.4M
 -<EMAIL_ADDRESS>           : 120K
   -<EMAIL_ADDRESS>           : 48K


Add support for missing config types to //pkg/expr/expr.go

From discussion in PR #412:
There are config types (email, ip addr, dns name, uri, etc.) that are not currently supported by the parsing bits of the expr language. We need to add the hand-parsing bits to derive the appropriate config.* types and enable downstream handling.

Is this still relevant?

I think the modern way to state this issue is that the expression language needs to have rich enough support to express literals of every supported attribute type, or at least needs to support functions that can take various inputs and return a value of the appropriate type.

@geeknoid sure. and I think this is still relevant.

This is done: https://github.com/istio/istio/pull/4156


Docker and Timezone

Can we add a timezone setting in the .env so to have the time of the docker logs in sync with the local time? Or should it be configured in another way?

Hmm. Could be done and would need to be tested. https://serverfault.com/questions/683605/docker-container-time-timezone-will-not-reflect-changes shows some ideas as to how.
UTC timestamps is a well-know *ix-ism for logs, and doesn't require knowing which TZ a machine was set to at build time. There is value in that, as well.
This isn't a priority for me, and, if you'd like to scratch that itch and offer a PR that defaults to UTC but can be changed to a user's TZ, that'd definitely be welcome.

This has been implemented. Go ahead and test please, and let us know if you find issues.


additional postfix header_checks

Context

docker-mailserver is presently using postfix's header_checks via the configuration file target/postfix/sender_header_filter.pcre.  I would like to add support for extending this file to include additional user header check directives (such as regex rejects) in the user configuration directory.
Expected Behavior

This is working as expected, but see possible fix for improved functionality.
Actual Behavior

This is not user configurable.
Possible Fix

One potential solution would be to append the user's config/postfix-header_checks.cf file to follow the existing target/postfix/sender_header_filter.pcre.  Or if postfix supports multiple checks, include both in the processing rules.  I am open to how this could be solved and willing to submit a PR for it.
Steps to Reproduce

Start docker-mailserver

Your Environment

Amount of RAM available: 16GB
Mailserver version used: docker-mailserver
Docker version used: 18.03.1-ce
Environment settings relevant to the config:
Any relevant stack traces ("Full trace" preferred):

Could you provide a PR for this?


 :(

Can I go to sleep now (For another few months)

Im expecting something new at least next month


Add names Lasse, Lola and Stina

Greetings from Sweden! 👋

Thanks, and welcome to anyname. @rawstream


RC Test: Resistance In A Wire 1.5.0-rc.3

@jessegreenberg, @ariel-phet, @emily-phet, @terracoda, @phet-steele, Resistance in a Wire 1.5.0-rc.2 is ready for RC testing.
NOTE: This is the SECOND rc, despite the naming (#buildproblems).
Link to sim
Link to iFrame
Test Matrix
Before beginning, please familiarize yourself with how a screen reader works. Here is a page with information about PhET's supported screen readers and documentation about how to use them:
Screen reader intro
The simulation to test has labels and/or descriptions. They can be "seen" here:
Link to a11y view
This view shows what is available to a screen reader user. The sim is on the left side in an iframe, while the right side has all of the accessible descriptions. Beneath the sim are real-time alerts that will be announced by the screen reader. Please make sure that the descriptions on the right accurately describe the simulation at all times.
PhET supports the following platforms for accessibility so please test these:
(These should be in the test matrix)

[x] JAWS with latest Windows, latest Firefox
[x] NVDA with latest Windows, latest Firefox
[x] VoiceOver with latest macOS, latest Safari

Please also verify

[x] stringTest=double (all strings doubled)
[x] stringTest=long (exceptionally long strings)
[x] stringTest=X (short strings)
[x] stringTest=rtl (right-to-left)
[x] stringTest=xss (test passes if sim does not redirect, OK if sim crashes or fails to fully start)
[x] showPointerAreas (touchArea=red, mouseArea=blue)
[x] Full screen test
[x] Screenshot test
[x] Does AR need to be notified for any LOL updates?

Accessibility strings that are not visible should not be translatable yet, do not worry if these do not change with string tests.
If any new issues are found, please note them in https://github.com/phetsims/resistance-in-a-wire/issues and reference this issue.
Critical screen reader information

JAWS might complain about Firefox Quantum. If that is the case, please test with https://www.mozilla.org/en-US/firefox/organizations/
The screen reader must be turned on and reading before the browser is open for it to work. See https://github.com/phetsims/a11y-research/issues/90
JAWS might not automatically switch to forms mode for some controls (like sliders and radio buttons). In this case, pressing "enter" should switch to forms mode. For example, see https://github.com/phetsims/resistance-in-a-wire/issues/138
The screen reader might focus the last UI component that had focus on sim load, typically on refresh. This is a "feature". For example, see For example, see phetsims/resistance-in-a-wire#139.

(Other potentially useful items)
Please make sure that the following issues are fixed:

[x] https://github.com/phetsims/joist/issues/482
[x] https://github.com/phetsims/scenery/issues/770
[x] https://github.com/phetsims/resistance-in-a-wire/issues/140 (verify the correct string)
[x] https://github.com/phetsims/resistance-in-a-wire/issues/142 (should just be a FF setting)
[x] https://github.com/phetsims/resistance-in-a-wire/issues/141

@ariel-phet please assign and prioritize

QA is done.

Awesome! Liam!

Thanks @lmulhall-phet, new rc (spot check) coming up!


Heltec Lora V3 entering sleep on boot with voltage present

I have been testing a Heltec Lora V3 running an iGate firmware and powered by USB. I have been monitoring the 12v battery supplying the USB buck convertor. The voltage has been reporting fine and so today I enabled monitor external voltage health, but it booted straight into sleep.
I am using default voltage divider values and pin 7 for the external voltage.
If I re-flash and restore the config with external voltage health turned off, the voltage is reading ok.
Any help appreciated
Paul
MW0PDV

Paul
you were monitoring the 12V with the external voltage measurements and sending it over aprs, right?
the battery being always over 10,9V, right?
What has to do with the buck converter?
what are your values for the voltage divider from the 12V battery?

Hi Ricardoyou were monitoring the 12V with the external voltage measurements and sending it over aprs, right?Yes external voltages have been sending to APRS fine. I have been testing as MW0PDV-15 for about a week.What has to do with the buck converter?Sorry was just trying to explain the 12 volt battery is being used to power ESP32 via a buck converter, I.e. no internal battery.the battery being always over 10,9V, right?Today I was testing on a bench power supply set at about 12.8 volts,  I have checked 15volts gives me 3v on pin 7.15volts on a bench supply reports 16.08 volts to APRS, see screen shot below from testing today.what are your values for the voltage divider from the 12V battery?The default 100k +27kThanksPaul.Sent from my iPadOn 23 Aug 2024, at 17:31, Ricardo Guzman (Richonguzman) @.***> wrote:
Paul
you were monitoring the 12V with the external voltage measurements and sending it over aprs, right?
the battery being always over 10,9V, right?
What has to do with the buck converter?
what are your values for the voltage divider from the 12V battery?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

so, you've been monitoring the hole week the external voltage with good results
resistors and process works fine,
but as soon as you enable External Voltage Monitoring the boards turn off as somehow it does not see the correct value of the battery "health" and shuts down?
is the pin GPIO-7 ?
when you enable the monitor battery (is only external battery monitoring enabled and not internal battery monitoring?)

Hi RicardoThanks for quick response.Yes GPIO-7, the one highlighted below in screenshot.Also confirm I only have external monitoring enabled.Thanks Paul.Sent from my iPadOn 23 Aug 2024, at 18:43, Ricardo Guzman (Richonguzman) @.***> wrote:
so, you've been monitoring the hole week the external voltage with good results
resistors and process works fine,
but as soon as you enable External Voltage Monitoring the boards turn off as somehow it does not see the correct value of the battery "health" and shuts down?
is the pin GPIO-7 ?
when you enable the monitor battery (is only external battery monitoring enabled and not internal battery monitoring?)
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

when enabled it never boots again?
what values do you have on the low external monitor values? 10.9 ?

When saving the configuration after selecting monitor external battery, the displays goes blank. I have only waited 5 minutes but it just remains in sleep during that time.If I then use the web flash utility to connect and select monitor / console, do a reset, the console display  shows something like “sleeping low battery” The only way I know know to recover is to re flash the board.Is there a command to execute in the console to query external voltage or force out of sleep?I have 12.2v set as a sleep voltage, but I did try 3v to try and rule out errors in voltage calculation but this made no difference Paul Sent from my iPadOn 23 Aug 2024, at 20:52, Ricardo Guzman (Richonguzman) @.***> wrote:
when enabled it never boots again?
what values do you have on the low external monitor values? 10.9 ?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

this is really strange as you only monitor external value, which gives you correct values.
when re-booting , the board checks for the value (external in your case) and as I understand you validate its higher than "sleep voltage value".
so it should go on without any problem.
can you send me a picture on how you've set the switches on the BATTERY part of the WEB UI-configuration?

Below config will work and send external voltage to APRSAnd sent this report to APRSWhen the config below was saved it’s gone into deep sleepSent from my iPadOn 23 Aug 2024, at 21:26, Ricardo Guzman (Richonguzman) @.***> wrote:
this is really strange as you only monitor external value, which gives you correct values.
when re-booting , the board checks for the value (external in your case) and as I understand you validate its higher than "sleep voltage value".
so it should go on without any problem.
can you send me a picture on how you've set the switches on the BATTERY part of the WEB UI-configuration?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

when you say bellow I see no images added here

First config screen It’s APRS reportThen the config that sends the board into sleepSent from my iPadOn 23 Aug 2024, at 23:10, Ricardo Guzman (Richonguzman) @.***> wrote:
when you say bellow I see no images added here
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

still no images

Sent from my iPadOn 23 Aug 2024, at 23:44, Ricardo Guzman (Richonguzman) @.***> wrote:
still no images
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

My iPad seemed to be stripping the images, I will send from my computer in the morning, I have tried sending with no annotation to see if that worksThanks Paul.Sent from my iPadOn 23 Aug 2024, at 23:44, Ricardo Guzman (Richonguzman) @.***> wrote:
still no images
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

This is the config that works fine sending external voltage to APRS

This is the APRS report using the above config

This is the config that when saved will put the board into sleep

Hi Ricardo, I tried doing some basic diagnostics using VS. If I inhibit the StartupBatteryHealth function from putting the Heltec V3 into sleep, I can see the checkExternalVoltage function is called several times but returns a value of 0.04, even with voltage on the GPIO pin. Eventually it returns the correct voltage. See attached screenshot of VS terminal window.
Paul.

i was checking the code as I was suspicious that somehow the Config.battery.externalVoltagePin was not initialized before the batteryHealth function but all is working as it should.... so this may be a timing issue
maybe to add a delay to let the pin "really" read instead of just showing 0.04V???
test adding :
delay(3000);
at battery_utils.cpp , line 208 and move the code one line down
maybe this delay could solve the issue or help us understand what's going on

Hi Ricardo
I tried the delay but that still didn't work.
Working through things a bit it seems that the variable voltageDividerTransformation isn't initialising properly. If I hard code a value of 4 instead as in batteryutils line 191 in the screenshot below, the board boots ok.
However it doesnt go into sleep but maybe thats because I polling APRS at 1 minute intervals for testing.
Paul.
[cid:5a008e72-4ebf-43a1-9611-3f56f8b5301b]

From: Ricardo Guzman (Richonguzman) @.>
Sent: Tuesday, August 27, 2024 3:04 PM
To: richonguzman/LoRa_APRS_iGate @.>
Cc: MW0PDV @.>; Author @.>
Subject: Re: [richonguzman/LoRa_APRS_iGate] Heltec Lora V3 entering sleep on boot with voltage present (Issue #162)
i was checking the code as I was suspicious that somehow the Config.battery.externalVoltagePin was not initialized before the batteryHealth function but all is working as it should.... so this may be a timing issue
maybe to add a delay to let the pin "really" read instead of just showing 0.04V???
test adding :
delay(3000);
at battery_utils.cpp , line 208 and move the code one line down
maybe this delay could solve the issue or help us understand what's going on
—
Reply to this email directly, view it on GitHubhttps://github.com/richonguzman/LoRa_APRS_iGate/issues/162#issuecomment-2312660231, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AI56WIKJVAAVUDNWRD6AUTLZTSBNFAVCNFSM6AAAAABNAM3KUCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJSGY3DAMRTGE.
You are receiving this because you authored the thread.Message ID: @.***>

Hi Ricardo
I tried the delay but that still didn't work.
Working through things a bit it seems that the variable voltageDividerTransformation isn't initialising properly. If I hard code a value of 4 instead as in batteryutils line 191 in the screenshot below, the board boots ok.
However it doesnt go into sleep but maybe thats because I polling APRS at 1 minute intervals for testing.
Paul.

Hi Ricardo
I still need to change line 18 in Battery_utils to stop it going into sleep on boot.
It will now enter sleep on low voltage with the mod you have made
The line below works

This one sends the board to sleep

new test , maybe this is the solution as I find the problem was the BATTERY_Utils::setup() was not called before doing the verification of batteryHealth at boot
so I add "BATTERY_Utils::setup();" in Power_Utils::setup() line 175, and deleted it from LoRa_APRS_iGate.cpp

Great thanks Ricardo, all seems to be working now :-) I will test over the next couple hours on MW0PDV-15, putting it in and out of sleep.
Really appreciate the work you are doing on LoRa Firmware/Software
Thanks
Paul.

Great thanks Ricardo, all seems to be working now :-) I will test over the next couple hours on MW0PDV-15, putting it in and out of sleep.
Really appreciate the work you are doing on LoRa Firmware/Software Thanks Paul.

good results!
thanks for the help!
let me know in a few days if everything is going fine to close the issue and rest on this ;)

Hi Ricardo
Testing update, the Heltec v3 board is now sleeping and waking up, thanks 😀
However there is now no beacon text before it enters sleep. Earlier I was seeing a Beacon text as below,
This is really useful for remote igates to know why they are offline

this beacon is sended when it was working fine and then the voltage got low
the warning does never happened when booting and the external voltage is still low

Hi Ricardo Ieft the board running, see example below, I have beacon interval set to 30min.
After yellow highlighted beacon at 19:55 I set the voltage low.
At 20:25 the board entered sleep as expected, but no beacon.
Once in sleep I set voltage high
The green highlighted beacon is the wake up Beacon, having slept for 30 minutes
This was working before the latest mod.

updated code, I add code to force sending all packets of the output buffer as this maybe is losing the last packet that warns the soon to be sleeping board when Tx over RF (inserted of over Internet  / TCPIP)
please test

Brilliant thanks Ricardo, just done some quick testing it’s looking good😀
I will do some more extensive testing in the morning
Thanks
Paul

Hi Ricardo, I have been testing for a few hours this morning, everything seems to be working fine with the external voltage monitoring 😀
Thanks again
Paul.

great!


[backport-1.2] [FLINK-5942] [checkpoint] Harden ZooKeeperStateHandleStore to handle corrupt data

Backport of #3446 onto the release-1.2 branch.
If calling ZooKeeperStateHandleStore.getAll or getAllSortedByName as the
ZooKeeperCompletedCheckpointStore does in the recovery case, the operation will fail
if there exists a Znode with corrupted data. This will break Flink's recovery
mechanism, because it will read this node over and over again. In order to solve this
problem, this commit changes the behaviour such that it ignores corrupted Znodes it
cannot read.

Merging this PR.


[INFO] Semantic versioning per PR

As we are shifting to semantic versioning, we will start assigning major/minor/patch to each PR. This process is being defined, but each PR will be considered a release.
I want to highlight this one line in the spec:

Once a versioned package has been released, the contents of that version MUST NOT be modified. Any modifications MUST be released as a new version.
https://semver.org/#spec-item-3

Please be sure to review the FAQ it will answer most of your questions.
https://semver.org/#faq

Closing, we are not going to implement it.
We keep bound to OpenShift major versions for now.


Jaeger Showing 2 Traces With Same MessageId

Describe the bug
I have two simple spring boot apps that communicate over jms and implement
opentelemetry auto tracing with jaeger. When sending the traces to my local jaeger instance, I see two different traces showing where one is correctly showing both spans end-to-end and the other appears to be a duplicate that has the same messageId as the consumer.
To Reproduce
Steps to reproduce the behavior:

built both apps with maven
start jaeger-all-in-one docker container
run the applications with the following command:

-Dotel.metrics.exporter=none \
-Dotel.exporter.jaeger.endpoint="http://localhost:14250" \
-Dotel.resource.attributes=service.name="OTLJmsAuto" \
-Dotel.traces.sampler="always_on" \
-Dotel.instrumentation.jms.enabled=true \
-Dapplication.home=./ \
-Dapplication.name=producer \
-javaagent:./opentelemetry-javaagent-all.jar \
-jar ./target/producer-0.0.1-SNAPSHOT.jar

navigate to http://localhost:16686/search and see two different traces showing(see screenshots)

Expected behavior
Only the top trace should show which includes two spans(producer and consumer).
Screenshots

Version (please complete the following information):

OS: Linux
Jaeger version: 1.22

What troubleshooting steps did you try?
Tried upgrading dependency versions as well as using the latest version of opentelemetry-javaagent-all.jar. Tried with debug mode.

I'm afraid this is the wrong repository for this issue. Please, report it against the OpenTelemetry Java instrumentation, which is where you get the instrumentation libraries. In your case, Jaeger is only responsible for the backend.


[Bug report] Vercel seems not work well with VuePress Next with stucked deployment

Bug report

This issue may need to create into vercel/vercel, sorry for confusing
Currently I can only deploy by Vercel CLI with vercel --prod

edited: RESOLVED
Description

While I was deploying a VuePress-Next website with Vercel, Vercel stucked in info Initializing VuePress and preparing data... and didn't continue deploying
Steps to reproduce

Deploy a VuePress-Next Project in Vercel
It stucks

Reproduction link / repo:

https://github.com/imgradeone/glzxsgyk
https://github.com/imgradeone/vuepress-v2-test
https://glzxsgyk-k8st3mvcs-imgradeone.vercel.app/

Expected behavior

It should be deployed correctly as VuePress 1.0 doesn't have this problem
Screenshots

Environment info

Browser: not deployed
Output of vuepress info:

<!--StartFragment-->
System:
--
16:53:37.988 | OS: Linux 4.14 Amazon Linux 2
16:53:37.988 | CPU: (4) x64 Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
16:53:37.988 | Memory: 9.01 GB / 15.38 GB
16:53:37.988 | Shell: 4.2.46 - /bin/bash
16:53:37.988 | Binaries:
16:53:37.988 | Node: 14.16.1 - /tmp/yarn--1623488016906-0.06970557184669901/node
16:53:37.988 | Yarn: 1.22.10 - /tmp/yarn--1623488016906-0.06970557184669901/yarn
16:53:37.988 | npm: 6.14.12 - /node14/bin/npm
16:53:37.988 | Utilities:
16:53:37.988 | Git: 2.23.4 - /usr/bin/git
16:53:37.988 | Browsers:
16:53:37.988 | Chrome: Not Found
16:53:37.989 | Firefox: Not Found
16:53:37.989 | npmPackages:
16:53:37.989 | @vuepress/bundler-vite: Not Found
16:53:37.989 | @vuepress/bundler-webpack:  2.0.0-beta.18
16:53:37.989 | @vuepress/cli:  2.0.0-beta.18
16:53:37.989 | @vuepress/client:  2.0.0-beta.18
16:53:37.989 | @vuepress/core:  2.0.0-beta.18
16:53:37.989 | @vuepress/markdown:  2.0.0-beta.18
16:53:37.989 | @vuepress/plugin-active-header-links:  2.0.0-beta.18
16:53:37.989 | @vuepress/plugin-back-to-top:  2.0.0-beta.18
16:53:37.989 | @vuepress/plugin-container:  2.0.0-beta.18
16:53:37.989 | @vuepress/plugin-debug: Not Found
16:53:37.989 | @vuepress/plugin-docsearch: Not Found
16:53:37.989 | @vuepress/plugin-git:  2.0.0-beta.18
16:53:37.989 | @vuepress/plugin-google-analytics: Not Found
16:53:37.989 | @vuepress/plugin-medium-zoom:  2.0.0-beta.18
16:53:37.989 | @vuepress/plugin-nprogress:  2.0.0-beta.18
16:53:37.989 | @vuepress/plugin-palette:  2.0.0-beta.18
16:53:37.989 | @vuepress/plugin-prismjs:  2.0.0-beta.18
16:53:37.989 | @vuepress/plugin-pwa: Not Found
16:53:37.990 | @vuepress/plugin-pwa-popup: Not Found
16:53:37.990 | @vuepress/plugin-register-components: Not Found
16:53:37.990 | @vuepress/plugin-search: Not Found
16:53:37.990 | @vuepress/plugin-shiki: Not Found
16:53:37.990 | @vuepress/plugin-theme-data:  2.0.0-beta.18
16:53:37.990 | @vuepress/plugin-toc: Not Found
16:53:37.990 | @vuepress/shared:  2.0.0-beta.18
16:53:37.990 | @vuepress/theme-default:  2.0.0-beta.18
16:53:37.990 | @vuepress/theme-vue: Not Found
16:53:37.990 | @vuepress/utils:  2.0.0-beta.18
16:53:37.990 | vue:  3.1.1
16:53:37.990 | vue-loader:  16.2.0
16:53:37.990 | vue-router:  4.0.8
16:53:37.990 | vuepress: ^2.0.0-beta.18 => 2.0.0-beta.18
16:53:37.990 | vuepress-vite: Not Found

<!--EndFragment-->

We don't have access for the third link. Could you paste the vercel log in your issue?

And where is your config file?

We don't have access for the third link. Could you paste the vercel log in your issue?

Sorry, I changed the URL to https://glzxsgyk-k8st3mvcs-imgradeone.vercel.app/
and the log:
16:56:29.859  	Cloning github.com/imgradeone/glzxsgyk (Branch: main, Commit: 667556b)
16:56:30.106  	Cloning completed: 246.555ms
16:56:30.123  	Analyzing source code...
16:56:31.099  	Installing build runtime...
16:56:33.438  	Build runtime installed: 2.339s
16:56:36.397  	No Build Cache available
16:56:37.434  	Detected package.json
16:56:37.434  	Installing dependencies...
16:56:37.778  	yarn install v1.22.10
16:56:37.847  	[1/4] Resolving packages...
16:56:38.046  	[2/4] Fetching packages...
16:56:44.158  	info<EMAIL_ADDRESS>The platform "linux" is incompatible with this module.
16:56:44.159  	info<EMAIL_ADDRESS>is an optional dependency and failed compatibility check. Excluding it from installation.
16:56:44.159  	[3/4] Linking dependencies...
16:56:44.159  	warning "vuepress > @vuepress/theme-default ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>16:56:47.107  	[4/4] Building fresh packages...
16:56:48.061  	Done in 10.29s.
16:56:48.448  	yarn run v1.22.10
16:56:48.485  	$ vuepress build docs
16:56:48.815  	info Initializing VuePress and preparing data...

And where is your config file?

Config: https://github.com/imgradeone/glzxsgyk/blob/main/docs/.vuepress/config.js

Still 404.
16:56:48.815  	info Initializing VuePress and preparing data...

If the above is your last line, please wait. Something(e.g.: timeout error) is expected to be thrown and logged. That may help finding out the reason.

I had ever reported this to Vercel, but they could not get it solved at that time, so I went back to Netlify.
I think you'd better send a feedback to Vercel instead of here.

I had ever reported this to Vercel, but they could not get it solved at that time, so I went back to Netlify.
As I remember, it would just get stuck and timeout after about 40 mins, without any logs.
I think you'd better send a feedback to Vercel instead of here, because we can work well with Netlify, GitHub Actions, etc.

OK, I've sended a feedback to Vercel.
then also, there aren't any logs, truly.

I can reproduce it and I've already submitted a ticket to Vercel support.
I will share their response here when I get it.

Well, using Vercel CLI with vercel --prod is OK, without this problem.

For now, if you need to use VuePress v2 with automatic builds, you need to try Netlify or Tencent Cloud CloudBase. (at least I tested)
Also, Cloudflare Pages didn't work well too.

i've meet the same issue, and my repository url is https://github.com/ENDsoft233/51book, hoping to bring some help to you.

Tried latest beta (23) - still the same: info Initializing VuePress and preparing data....
@vercel-support any news about this issue?

maybe vercel has solved the issue. My project work well just now

Yeah, just succeed to deploy our docs on Vercel:
https://vuepress-next.vercel.app/

Yeah, just succeed to deploy our docs on Vercel:
https://vuepress-next.vercel.app/

After my site is published, except the home subdirectory is the resource path error 404, I would like to ask where should be modified to fix this problem


Pool members aren't being added to AS3 pool

Environment

BIG-IP Version: <IP_ADDRESS>

Summary
Tried using vscode-f5-chariot (v1.12.0) to convert TMSH config into AS3. When I run the conversion over a simple virtual server with a single pool member, the member isn't part of the AS3 output.
Steps To Reproduce
Steps to reproduce the behavior:

Convert following config:

ltm virtual /Common/vs_hcf_443 {
    destination /Common/<IP_ADDRESS>:443
    ip-protocol tcp
    mask <IP_ADDRESS>
    pool /Common/hcf_80
    profiles {
        /Common/tcp { }
    }
    source <IP_ADDRESS>/0
    translate-address enabled
    translate-port enabled
}
ltm pool /Common/hcf_80 {
    description hcf_80
    members {
        /Common/<IP_ADDRESS>:80 {
            address <IP_ADDRESS>
        }
    }
    monitor /Common/http
}
ltm node /Common/<IP_ADDRESS> {
    address <IP_ADDRESS>
}

Observe the AS3 output:

{
    "class": "ADC",
    "schemaVersion": "3.27.0",
    "id": "urn:uuid:d58e0962-5bce-4403-9bcf-8c863a24a181",
    "label": "Converted Declaration",
    "remark": "Auto-generated by AS3 Config Converter",
    "Common": {
        "class": "Tenant",
        "Shared": {
            "class": "Application",
            "template": "shared",
            "vs_hcf_443": {
                "layer4": "tcp",
                "pool": "hcf_80",
                "translateServerAddress": true,
                "translateServerPort": true,
                "class": "Service_Generic",
                "virtualAddresses": [
                    "<IP_ADDRESS>"
                ],
                "virtualPort": 443,
                "persistenceMethods": [],
                "snat": "none"
            },
            "hcf_80": {
                "remark": "hcf_80",
                "members": [
                    {
                        "addressDiscovery": "static",
                        "servicePort": null
                    }
                ],
                "monitors": [
                    {
                        "bigip": "/Common/http"
                    }
                ],
                "class": "Pool"
            }
        }
    }
}

Observe the ACC log output

[2021-06-03T05:40:21.412Z] [INFO]: ACC METADATA {
  recognized: {
    'ltm virtual /Common/vs_hcf_443': {
      destination: '/Common/<IP_ADDRESS>:443',
      'ip-protocol': 'tcp',
      mask: '<IP_ADDRESS>',
      pool: '/Common/hcf_80',
      profiles: '{',
      '/Common/tcp': {},
      '}': '',
      source: '<IP_ADDRESS>/0',
      'translate-address': 'enabled',
      'translate-port': 'enabled'
    },
    'ltm pool /Common/hcf_80': {
      description: 'hcf_80',
      members: '{',
      '}': '',
      monitor: '/Common/http'
    },
    'ltm node /Common/<IP_ADDRESS>': { address: '<IP_ADDRESS>' }
  },
  supported: {
    'ltm virtual /Common/vs_hcf_443': {
      destination: '/Common/<IP_ADDRESS>:443',
      'ip-protocol': 'tcp',
      mask: '<IP_ADDRESS>',
      pool: '/Common/hcf_80',
      profiles: '{',
      '/Common/tcp': {},
      '}': '',
      source: '<IP_ADDRESS>/0',
      'translate-address': 'enabled',
      'translate-port': 'enabled'
    },
    'ltm pool /Common/hcf_80': {
      description: 'hcf_80',
      members: '{',
      '}': '',
      monitor: '/Common/http'
    }
  },
  unSupported: { 'ltm node /Common/<IP_ADDRESS>': { address: '<IP_ADDRESS>' } },
  declarationInfo: {
    classes: { Pool: 1, Service_Generic: 1 },
    maps: {
      applications: [ '/Common/Shared' ],
      objects: [ '/Common/Shared/vs_hcf_443', '/Common/Shared/hcf_80' ],
      tenants: [ '/Common' ]
    },
    total: 2
  }
}

Expected Behavior
I am expecting to see the member (<IP_ADDRESS>) as part of the AS3 pool output.
Actual Behavior
As you can see from the output there is no pool member being output. Looking at the ACC log it seems to see the pool, but it doesn't output the member IP then either?
'ltm pool /Common/hcf_80': {
      description: 'hcf_80',
      members: '{',
      '}': '',
      monitor: '/Common/http'
    }

Added fine testing f5-chariot using mac
            "hcf_80": {
                "remark": "hcf_80",
                "members": [
                    {
                        "addressDiscovery": "static",
                        "servicePort": 80,
                        "serverAddresses": [
                            "<IP_ADDRESS>"
                        ],
                        "shareNodes": true
                    }
                ],
                "monitors": [
                    {
                        "bigip": "/Common/http"
                    }
                ],
                "class": "Pool"
            }

https://github.com/mdditt2000/f5-appsvcs-acc/tree/master/Github/37
Trying Windows

breaks using windows. Mac is fine https://github.com/mdditt2000/f5-appsvcs-acc/tree/master/Github/37

Create Jira CHARON-321 for PM tracking

I think this is related to #28.  I will dig into that one and report back.

This should be fixed with the release of vscode-f5-chariot v1.13.0 released 7.6.2021.  There was a problem with line returns in windows.  The fix was to standardize all line returns on execution.
Please confirm this is working with latest version.

Change By:
@v-zhuravlev-f5

Done

In Code Review Done

Closing issue


(#169) Add screen space check to select_popup

Close #169
Autocompletion popup now renders upwards if there's not enough space below the console input.
Other changes:

Aligned baseline of first item in Select_Popup to already typed text in console.

Synchronized font size of popup with font size of the console.

Added support for Numpad keys. And added Space as completion approval key. And close it with Backspace.

Sorted console commands in alphabetical order.

@kolumb looks good to me! :+1: Thank you for your contribution!


Pulling out non needed columns.

Codecov Report

:exclamation: No coverage uploaded for pull request head (hotfix/removing-non-existant-columns@39b9861).

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d0ecfb2...39b9861. Read the comment docs.

lgtm


Feature/ride request

Here is all that was done:

Added endpoint for Ride Request
Minor bug fixes (small annotation mistakes by me)
Small adjustments to entities (Annotation for enum to strin)
Auto annotation for created at last modified at is working now
Minor fixes for converters (typos)

Ship it! :SHIPIT:


Possible problem with recipient placeholders

I can't test at this moment but if I understand this right, We're passing an entire string here https://github.com/HelpChat/ChatChat/blob/2e756cf4698b5c44b86b22446d74cef2a6db705f/plugin/src/main/java/at/helpch/chatchat/util/FormatUtils.java#L43 and the parser method will only remove the first 11 characters and append a % at the start then attempt to parse the placeholders.
This means in a part that looks something like this "hello, this test %recipient_placeholder-here%" would become " test %%recipient_placeholder-here%"

While the replaceRecipientPlaceholder method does suck, this should still parse correctly as we are substringing from %recipient_, this means that when we replace this string, we are given %placeholder_here%, instead of %%placeholder_here%.
As discussed on discord, this method should be reworked as currently it probably only works if the string given only contains the recipient placeholder format, and nothing else. Not only this, but it should be reworked to support multiple recipient placeholders

Fixed with #15


Ridiculous legal issues with logo

You are using and promoting the capabilities of SimpleIcons in your own docs, then you are threatening to sue them and force them to remove your logo...
Just wow.
Remove it from your docs please:
https://code.visualstudio.com/docs/devcontainers/create-dev-container#_add-an-open-in-dev-container-badge

https://github.com/simple-icons/simple-icons/issues/11236

Thanks for the continued discussion and feedback here. We've removed the use of the logo and will provide any updates in the future if something changes in this space.
Related: https://github.com/microsoft/vscode/pull/215758


Remove colleges code + colleges_by_fips file

Doesn't take a ton off the build (-22KB) but good to remove the cruft

https://trello.com/c/LnksM5Vl/737-remove-college-dataset-in-frontend

https://trello.com/c/LnksM5Vl/737-remove-college-dataset-in-frontend


Problem with HaxelibHelper or ProjectXMLParser and flixel library

Hello!
I'm working on flixel to make it work with openfl 4 and up to lime 3.3.0 i was able to compile sample flixel projects, but after updatin lime to 3.4.1 i get this output:
Called from ? line 1
Called from CommandLineTools.hx line 1569
Called from CommandLineTools.hx line 24
Called from CommandLineTools.hx line 130
Called from CommandLineTools.hx line 1443
Called from lime/project/ProjectXMLParser.hx line 23
Called from lime/project/ProjectXMLParser.hx line 56
Called from lime/project/ProjectXMLParser.hx line 2116
Called from lime/project/ProjectXMLParser.hx line 1301
Called from lime/tools/helpers/HaxelibHelper.hx line 31
Called from /usr/lib/haxe/std/haxe/format/JsonParser.hx line 74
Called from /usr/lib/haxe/std/haxe/format/JsonParser.hx line 78
Called from /usr/lib/haxe/std/haxe/format/JsonParser.hx line 249
Uncaught exception - Invalid char 44 at position 397
Build halted with errors.

i think that the problem is with HaxelibHelper or ProjectXMLParser.
In order to reproduce this issue you'll need flixel from this branch https://github.com/Beeblerox/flixel/tree/Separate-render and you'll have to use this demo: https://github.com/Beeblerox/flixel-demos/tree/dev/Other/FrameCollections
The only thing i can tell you that there wasn't this issue in lime 3.3.0, but it was introduced in lime 3.4.0
i was trying to compile project both with Haxe 3.3 and Haxe 3.4rc and still no luck.
And i'm on Windows 10 (wonder if it somehow affects or not)

I would first see if the path looks correct, and if it's loading
https://github.com/openfl/lime/blob/develop/lime/tools/helpers/HaxelibHelper.hx#L31
Then I wonder if it's something with the contents of the JSON file, perhaps a bad character it doesn't recognize, or a file encoding it can't handle (like a UTF-8 bug or something?)
...or a bug with Haxe JSON?

i don't know how to do it, because i hadn't worked with haxe macros feature at all and don't know how to print file contents at this time.
But as i written earlier i've tried the same code but with lime 3.3.0 and it worked

@Beeblerox, can you provide this project.xml file?

@Beeblerox the problem is in incrorrect json. Look here:
https://github.com/Beeblerox/flixel/blob/Separate-render/haxelib.json#L10
this is an incorrect definition for object.

@mayakwd thank you for advice!!!
i'll check it tonight when i get home

@mayakwd thank you again. i fixed json file and it succesfully compiled.
It's strange that this file worked with previous versions of lime


Make liveness/readiness probes configurable

Issue submitter TODO list

[X] I've looked up my issue in FAQ
[X] I've searched for an already existing issues here (legacy) and here
[X] I've tried installing latest charts and the issue still persists there
[X] I'm running a supported version of the application & chart which is listed here

Describe the bug (actual behavior)
The liveness and readiness proves are not configurable and hardcoded.
Expected behavior
The probes should be configurable.
Your installation details
Helm chart version: 0.7.5
Steps to reproduce

Screenshots
No response
Logs
No response
Additional context
No response

+1


exploitdb: 2024-02-07 -> 2024-02-10

Diff: https://gitlab.com/exploit-database/exploitdb/-/compare/refs/tags/2024-02-07...2024-02-10
Description of changes

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] 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/)
24.05 Release Notes (or backporting 23.05 and 23.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.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 287849 run on x86_64-linux 1

1 package built:

exploitdb


Handling of stopped clusters on ctlptl apply

From Tim in Slack:

I had this fun thing happy after rebooting and trying to start my minikube cluster again. I've found that if I use minikube stop followed by ctlptl apply -f (my cluster config) then it will delete my cluster rather than confirming it exists and starting it. I'm not sure whether ctlptl ought to be used to start a cluster, but I did find that it was better than minikube start in some cases as ctlptl re-patches the containerd registry mirror. What is the correct way to restart a minikube cluster after reboot? Is this a bug or am I misusing it?
ctlptl apply -f cluster.yaml
Deleting cluster minikube to initialize with registry ctlptl-registry
🔥  Deleting "minikube" in docker ...
🔥  Deleting container "minikube" ...
🔥  Removing /home/tim/.minikube/machines/minikube ...
💀  Removed all traces of the "minikube" cluster.
...

Ignoring the containerd patching hack/issue for minikube, this isn't a hugely unusual use case to to apply and expect ctlptl to launch an existing, yet stopped, local cluster tool.
We should think about if there's common scenarios where we can handle this (though there's some chicken-and-egg problems, e.g. we can't read local registry info until we start the cluster, so we might end up starting it and then realizing we can't reconcile it in-place and needing to delete it, which would take longer than just having done that in the first place!)
Otherwise, it might be a good idea to clarify the behavior in the README a bit.

ya, ctlptl doesn't really have any knowledge right now of stopped clusters, but should be straightforward enough to add


Attitude rate controller issue

In the existence of torque caused by the hanging object, the controller becomes unstable.
Some parameters
|max motor torque|max object torque|
|-|-|-|-|
|9e-3Nm|0.01kg x 10m/s2 x 0.05m=5e-3Nm|

Without object external torque: Kp=400 Ki=0 Kd=0. Quick converge.
With object external torque: using the same parameter have ~40% convergence error. When changing the Ki to a larger value like 1e6 (integration ~ 0.02 x 2e4 = 4e2. 400*1.0=4e2). There is a little overshoot, but the problem is resolved.

The problem is resolved by tuning the PID parameters through matching the Magnitude.


cloudflare_zlib feature isn't available on crates.io

If the cloudflare_zlib feature is considered stable, a new minor flate2 release should be issued to make it available in the official package. Then I could use that as a dependency instead of a local flate2-rs clone.

I see this is a duplicate of https://github.com/alexcrichton/flate2-rs/issues/229, so closing for now.
Is there any info about when will this feature land?

Sorry for the delay, should be published now!


Infinite loop of restarting due to OutOfMemoryError (I guess)

I have no reproducible example so I ask this as an open question. I have around a billion rows in my db, and, I don't know what I did but I suspect the device rebooted while clickhouse has working on merge parts or whatever.
What I'm currently experiencing is clickhouse crashes on loading (out of memory according to top and logs). No error is raised (clickhouse-server.err.log is empty).
I attach the clickhouse-server.log for a complete start-to-crash scenario.
I have no idea what to do to get rid of this except removing all my data and inserting it again. What do you think of this ?
clickhouse-server.log
EDIT: I remember I was trying a script about de-deplucating my data, so a lot of DELETEs and UPDATEs were performed. Can this be the cause ?

What does dmesg say, is oom killer invoked?

It looks like it does kill clickhouse-server. There is a short extract from dmesg output:
[ 5683.514206] Out of memory: Kill process 1887 (clickhouse-serv) score 979 or sacrifice child
[ 5683.514305] Killed process 1887 (clickhouse-serv) total-vm:22897712kB, anon-rss:16065748kB, file-rss:0kB, shmem-rss:0kB
[ 5684.381747] oom_reaper: reaped process 1887 (clickhouse-serv), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB

It's strange that the log is almost empty, let's set logger.level = "trace" so that we have more messages (https://clickhouse.yandex/docs/en/operations/server_settings/settings/#server_settings-logger).
Does it run long enough so that you connect with clickhouse-client? What's in system.merges? I've recently seen a problem where there was a very big array field in the table, and it required about 30GB of memory to complete the merge. They had to migrate to a larger instance so that the merge could complete.

clickhouse-client --query "select * from system.merges"
default	credential	1.143259521	0	1	['20190729_28016_791975_4_821925']	20190729_28016_791975_4_1231304	20190729	1	11172356	86	0	0	0	0	0	567393504	12
default	credential	0.952820128	0	1	['20190805_813035_823186_4_872908']	20190805_813035_823186_4_1231304	20190805	1	4695788	38	0	0	0	0	0	508029824	13
default	credential	0.779207283	0	1	['20190805_896161_900069_3_934048']	20190805_896161_900069_3_1231304	20190805	1	12864515	98	0	0	0	0	0	398894304	14
default	credential	0.599287864	0	1	['20190805_900218_905745_4_930396']	20190805_900218_905745_4_1231304	20190805	1	21272275	160	0	0	0	0	0	289415200	16
default	credential	0.252530037	0	1	['20190805_905838_917049_3_935883']	20190805_905838_917049_3_1231304	20190805	1	25443008	217	0	0	0	0	0	92279008	20```

The logger level is already to `trace` btw...
Is there any chance I can deal with this without migrating to a larger instance ? Or should I just erase everything ?

You can cancel mutations by kill mutation or manually.
You can reduce background_pool_size / background_schedule_pool_size -- number of simultaneously running tasks.

Thanks a lot. Clickhouse is running again, I reduced the pool size.