Feature Request: Add Docker Support for Blackhole Threats

Hi @ebarkie,
I'd like to propose adding Docker support to the blackhole-threats project. I've created a Dockerfile that successfully builds and runs the service with the following features:

Based on Debian 12 (slim) for a minimal footprint
Multi-architecture support (amd64/arm64)
Uses S6-overlay for proper process management
Automatic configuration file generation
Clean logging and graceful shutdown

Example Usage
docker run -d -p 179:179 -v $PWD/config:/config --name rtbh-feeds blackhole-threats

Sample Output
Scenario 1: No Configuration File Present
If no configuration file is mounted, the container automatically generates a default configuration file at /config/blackhole-threats.yaml:
[2024-12-27 12:09:51] [INFO] =====================================================
[2024-12-27 12:09:51] [INFO]              Blackhole Threats Service
[2024-12-27 12:09:51] [INFO] =====================================================
[2024-12-27 12:09:51] [INFO]
[2024-12-27 12:09:51] [INFO] A BGP RTBH feed service that aggregates threat
[2024-12-27 12:09:51] [INFO] intelligence and automatically updates BGP blackhole
[2024-12-27 12:09:51] [INFO] routes for network security.
[2024-12-27 12:09:51] [INFO]
[2024-12-27 12:09:51] [INFO] Source: github.com/ebarkie/blackhole-threats
[2024-12-27 12:09:51] [INFO] =====================================================

[2024-12-27 12:09:51] [INFO] Creating default configuration file...
[2024-12-27 12:09:51] [INFO] Default configuration created at /config/blackhole-threats.yaml

time="2024-12-27T12:09:51Z" level=info msg="BGP threat blackhole route server (version 2d3a268)"
time="2024-12-27T12:09:51Z" level=info msg="Add Peer" Key= Topic=config
time="2024-12-27T12:09:51Z" level=info msg="Add a peer configuration" Key=<IP_ADDRESS> Topic=Peer
time="2024-12-27T12:09:51Z" level=info msg="Server started"
time="2024-12-27T12:09:51Z" level=info msg="Refresh complete" announced=0 nets=0 withdrawn=0
^C
[2024-12-27 12:09:53] [INFO] =====================================================
[2024-12-27 12:09:53] [INFO]              Shutting down gracefully...
[2024-12-27 12:09:53] [INFO] =====================================================

Scenario 2: Configuration File Already Present
If a configuration file is mounted at /config/blackhole-threats.yaml, the container uses it directly without creating a new one:
[2024-12-27 12:09:40] [INFO] =====================================================
[2024-12-27 12:09:40] [INFO]              Blackhole Threats Service
[2024-12-27 12:09:40] [INFO] =====================================================
[2024-12-27 12:09:40] [INFO]
[2024-12-27 12:09:40] [INFO] A BGP RTBH feed service that aggregates threat
[2024-12-27 12:09:40] [INFO] intelligence and automatically updates BGP blackhole
[2024-12-27 12:09:40] [INFO] routes for network security.
[2024-12-27 12:09:40] [INFO]
[2024-12-27 12:09:40] [INFO] Source: github.com/ebarkie/blackhole-threats
[2024-12-27 12:09:40] [INFO] =====================================================

time="2024-12-27T12:09:40Z" level=info msg="BGP threat blackhole route server (version 2d3a268)"
time="2024-12-27T12:09:40Z" level=info msg="Add Peer" Key= Topic=config
time="2024-12-27T12:09:40Z" level=info msg="Add a peer configuration" Key=<IP_ADDRESS> Topic=Peer
time="2024-12-27T12:09:40Z" level=info msg="Server started"
time="2024-12-27T12:09:40Z" level=info msg="Refresh complete" announced=0 nets=0 withdrawn=0
^C
[2024-12-27 12:09:42] [INFO] =====================================================
[2024-12-27 12:09:42] [INFO]              Shutting down gracefully...
[2024-12-27 12:09:42] [INFO] =====================================================

Features

Automatically creates a default configuration if none exists
Proper signal handling and graceful shutdown
Configurable through volume mount at /config
Multi-arch support (amd64/arm64)

I've attached the complete Dockerfile below. Feel free to review and integrate it into the repository if you find it useful.
# Use Debian 12 (Bookworm) as base
FROM debian:12-slim

ARG TARGETPLATFORM

# Set environment variable to minimize s6 output
ENV S6_LOGGING=0 \
    S6_VERBOSITY=0

# Install required packages
RUN set -x \
    && apt-get update \
    && apt-get install -y \
         xz-utils \
         wget \
         curl \
         jq

# Fetch latest S6 Overlay version and install it
RUN set -x \
    && case ${TARGETPLATFORM} in \
         "linux/amd64") S6_OVERLAY_ARCH="x86_64" ;; \
         "linux/arm64") S6_OVERLAY_ARCH="aarch64" ;; \
    esac \
    && S6_OVERLAY_VERSION=$(curl -s https://api.github.com/repos/just-containers/s6-overlay/releases/latest | jq -r .tag_name | sed 's/v//') \
    && echo "Installing S6 Overlay version: ${S6_OVERLAY_VERSION}" \
    && wget -qO - https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz | tar -JxpC / \
    && wget -qO - https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz | tar -JxpC / \
    && wget -qO - https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-noarch.tar.xz | tar -JxpC / \
    && wget -qO - https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-arch.tar.xz | tar -JxpC /

# Install blackhole-threats
RUN set -x \
    && case ${TARGETPLATFORM} in \
         "linux/amd64") RELEASE_ARCH="amd64" ;; \
         "linux/arm64") RELEASE_ARCH="arm64" ;; \
    esac \
    && LATEST_RELEASE=$(curl -s https://api.github.com/repos/ebarkie/blackhole-threats/releases/latest | jq -r .tag_name) \
    && RELEASE_VERSION=${LATEST_RELEASE#v} \
    && wget -O /tmp/blackhole-threats.deb \
         "https://github.com/ebarkie/blackhole-threats/releases/download/${LATEST_RELEASE}/blackhole-threats_${RELEASE_VERSION}_${RELEASE_ARCH}.deb" \
    && dpkg -i /tmp/blackhole-threats.deb \
    && rm -rf /tmp/blackhole-threats.deb /etc/blackhole-threats.yaml /var/lib/apt/lists/*

# Create required directories and service structure
RUN set -x \
    && mkdir -p \
         /config \
         /etc/s6-overlay/s6-rc.d/blackhole-threats/dependencies.d \
         /etc/s6-overlay/s6-rc.d/user/contents.d \
         /etc/s6-overlay/s6-rc.d/blackhole-threats/log \
         /var/log/blackhole-threats \
    && touch /etc/s6-overlay/s6-rc.d/user/contents.d/blackhole-threats

# Create service definition
COPY <<EOF /etc/s6-overlay/s6-rc.d/blackhole-threats/run
#!/bin/sh
exec 2>&1

echo
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] ====================================================="
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO]              Blackhole Threats Service"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] ====================================================="
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO]"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] A BGP RTBH feed service that aggregates threat"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] intelligence and automatically updates BGP blackhole"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] routes for network security."
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO]"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] Source: github.com/ebarkie/blackhole-threats"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] ====================================================="
echo

# Check and create config if needed
if [ ! -f /config/blackhole-threats.yaml ]; then
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] Creating default configuration file..."
    cat > /config/blackhole-threats.yaml <<CONF
# Default configuration
gobgp:
  global:
    config:
      as: 64512
      routerid: "<IP_ADDRESS>"
  neighbors:
    - config:
        neighboraddress: "<IP_ADDRESS>"
        peeras: 64512

feeds:
#  - url: http://localhost/drop.txt
#    community: 64512:666
CONF
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] Default configuration created at /config/blackhole-threats.yaml"
    echo
fi

exec s6-setuidgid root /usr/sbin/blackhole-threats -conf /config/blackhole-threats.yaml
EOF

# Create service shutdown script
COPY <<EOF /etc/s6-overlay/s6-rc.d/blackhole-threats/finish
#!/command/with-contenv sh

echo
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] ====================================================="
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO]              Shutting down gracefully...             "
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] ====================================================="
echo

# Perform any cleanup tasks here if needed
exit 0
EOF

# Create logging configuration
COPY <<EOF /etc/s6-overlay/s6-rc.d/blackhole-threats/log/run
#!/bin/sh
exec -n
exec s6-log -bp T n20 s1000000 /var/log/blackhole-threats
EOF

# Create service type
COPY <<EOF /etc/s6-overlay/s6-rc.d/blackhole-threats/type
longrun
EOF

# Set permissions
RUN chmod +x \
    /etc/s6-overlay/s6-rc.d/blackhole-threats/run \
    /etc/s6-overlay/s6-rc.d/blackhole-threats/log/run \
    /etc/s6-overlay/s6-rc.d/blackhole-threats/finish

EXPOSE 179

ENTRYPOINT ["/init"]

Let me know if you'd like any modifications or have questions about the implementation.

This is awesome, I'd love to include it!
I usually use buildah/podman and it seems to be having trouble with the "heredoc", but I think it's resolved in a newer version of buildah.  I'm sure the  Dockerfile is fine.  I'll test this when I have time a little later..
Thank you for making this!

This is awesome, I'd love to include it!
I usually use buildah/podman and it seems to be having trouble with the "heredoc", but I think it's resolved in a newer version of buildah. I'm sure the Dockerfile is fine. I'll test this when I have time a little later..
Thank you for making this!

No worries, glad you like, any problems let me know.
FYI, used docker version 27.4.0 to build.
I will drop you the k8s configs when done shortly which might be worth documenting for others.

@ebarkie,
Got a solution for you :)
You could use a simple Github Action to build it, just tested and working perfectly.  Also builds the multi arch images fine ;)
The only thing I am not sure about is how we can get the version tag to automaticly update, ile have a play around and see if I can figure a way.  Then you could tie this to your usual build process :)
All you need to do is add in a couple of secrets in GH with DOCKER_USERNAME and DOCKER_PASSWORD and it will work.  You can create an PAT in DH, doesn't have to be your DH account password.
name: ci

on:
  push:
    branches:
      - "main"

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
      - name: Login to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - name: Build and push
        uses: docker/build-push-action@v5
        with:
          context: .
          platforms: linux/amd64,linux/arm64
          push: true
          tags: ebarkie/blackhole-threats:latest


Add missing tests

closes #45

Codecov Report

Merging #48 (8b53e04) into main (20385fb) will increase coverage by 6.63%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main      #48      +/-   ##
==========================================
+ Coverage   88.02%   94.65%   +6.63%
==========================================
  Files          50       50
  Lines         768      749      -19
==========================================
+ Hits          676      709      +33
+ Misses         92       40      -52

Impacted Files
Coverage Δ

lib/application/client/search/status.dart
100.00% <ø> (+75.00%)
:arrow_up:

lib/application/common/form.dart
100.00% <ø> (+87.50%)
:arrow_up:

lib/application/delete/bloc/state.dart
100.00% <ø> (+46.15%)
:arrow_up:

lib/application/edit/bloc/state.dart
100.00% <ø> (+37.50%)
:arrow_up:

lib/application/load/bloc/state.dart
100.00% <ø> (+30.00%)
:arrow_up:

lib/application/register/bloc/state.dart
100.00% <ø> (+10.00%)
:arrow_up:

lib/domain/common/entity_mixin.dart
100.00% <ø> (+25.00%)
:arrow_up:

lib/domain/common/error.dart
100.00% <100.00%> (+66.66%)
:arrow_up:

lib/infrastructure/drift/native_db.dart
100.00% <100.00%> (+100.00%)
:arrow_up:

lib/presentation/client/details/widgets/form.dart
93.57% <100.00%> (+4.25%)
:arrow_up:

... and 11 more

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


Show number of unread messages in taskbar

Expected Behavior
I'd like to have Franz windows title in format:
Franz (x) where x is number on unreaded messages
Current Behavior
Windows title is constant Franz
Screenshots (if appropriate):
Franz vs Rambox

Your Environment

Franz Version used: 5.0.0-beta.14
Operating System and version: Windows 10.0.16299 Build 16299

Can this be reopened and added?


⚠ Jenkins Plugins Artifactory has degraded performance

In 33ef698, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1339 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 1bf7094 after 14 minutes.


Why the apiKey not stored in runtimeConfig object?

The docs state:
// entirely optional
  chatgpt: {
    apiKey: 'Your apiKey here goes here'
  },

Wouldn't you want to reference the key within the runtimeConfig property like so?
	runtimeConfig: {
		OPENAI_API_KEY: "" //<---- would be copied form an `.env` file
	},

@dosstx You can do like this:
chatgpt: {
apiKey: 'Here to bind the runtimeConfig Key'
},


split code to pytest mode and single mode.

ps:
Add the result of pytest_executor.py.
Signed-off-by: huzhaoyX<EMAIL_ADDRESS>

@ceciliapeng2011 please help have a review


MSID: 88841 Version: 1 DOI: 2<IP_ADDRESS>90935

"msas": "Medicine"
"msid": "88841"
"preprintDoi": "10.1101/2<IP_ADDRESS>90935"
"Reviewed Preprint posted": "2023-09-05"
"Sent for peer review": "2023-05-25"
"Posted to bmedRxiv": "2023-06-05" (link: "Go to medRxiv": "https://www.medrxiv.org/content/10.1101/2<IP_ADDRESS>90935v2/")
[PLACE PDF URL HERE WHEN AVAILABLE] See step 7
Step 1. Inform bioRxiv
Who can help: @QueenKraken, @nlisgo, @scottaubrey

[x] Manuscript is in data hub index (https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v1/by-publisher/elife/get-by-manuscript-id?manuscript_id=88841)

Step 2. Create preview of manuscript
Who can help: @fred-atherden, @nlisgo, @scottaubrey

[ ] Manuscript is available for preview (https://prod--epp.elifesciences.org/preview/88841/v1)

[ ] Trigger import for staging: https://prod--epp.elifesciences.org/import
[ ] Sync data folder with s3://prod-elife-epp-data/data
[ ] Trigger import for staging: https://staging--epp.elifesciences.org/import
[ ] Sync data folder with s3://staging-elife-epp-data/data
[ ] Pull request created to enhanced-preprint-data
[ ] Post link to pull request below

Pull request: [PLACE LINK TO PULL REQUEST HERE]
Detailed instructions: https://github.com/elifesciences/enhanced-preprints-data#add-a-manuscript
Step 3: Awaiting public reviews and QC
Who can help: Production team

[ ] QC passed or QC not needed

Who can help: Editorial team

[x] Public reviews available on sciety (https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>90935)
[x] Manuscript and editor details at the top of this issue (Supplied by Editorial team)
[x] Reviews returned by EPP - https://prod--epp.elifesciences.org/api/reviewed-preprints/88841/v1/reviews

Example
"msas": "Genetics and Genomics", "Neuroscience"
"msid": "84628"
"version": "1"
"preprintDoi": "10.1101/2<IP_ADDRESS>4241"
"articleType": "Reviewed Preprint"
"status": "Published from the original preprint after peer review and assessment by eLife."

"Reviewed Preprint posted": "2023-01-02"
"Sent for peer review": "2022-10-28"
"Posted to bioRxiv": "2022-11-21" (link: "Go to bioRxiv": "https://www.biorxiv.org/content/10.1101/2<IP_ADDRESS>4241v1")

Editors:
Reviewing Editor
Michael B Eisen
University of California, Berkeley, United States
Senior Editor
Michael B Eisen
University of California, Berkeley, United States

Step 4: Modify manuscripts.json (no PDF)

[ ] Reviewed preprint is published to EPP (https://elifesciences.org/reviewed-preprints/88841)

[ ] Pull request created to enhanced-preprint-client
[ ] Pull request switched to "Ready for review"
[ ] Post link to pull request below

[ ] Request that a doi be registered

[ ] Post link to #enhanced-preprint comment below

Pull request: [PLACE LINK TO PULL REQUEST HERE]
#enhanced-preprint comment thread: [PLACE LINK TO COMMENT HERE]

Instructions to modify manuscripts.json

Visit: https://github.com/elifesciences/enhanced-preprints-client/actions/workflows/publish-manuscript.yaml
Click: Run workflow
Complete the form and click "Run workflow"
A successful run should result in a new pull request at https://github.com/elifesciences/enhanced-preprints-client/pulls
Open the pull request and click the "Ready for review" button to trigger tests
Once the tests pass and you are happy with the changes the PR can be merged

Example pull request: https://github.com/elifesciences/enhanced-preprints-client/pull/334/files
Once the pull request is merged in it should be available a few minutes later.

Request that a doi
Post the following in #enhanced-preprint:
@Fred can you register a doi for https://elifesciences.org/reviewed-preprints/88841

Step 5: Awaiting search reindex

[ ] Reviewed preprint is avaliable on journal homepage (https://elifesciences.org)

The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.

Additional info
If needed, the jenkins pipeline to reindex search can be triggered sooner.
https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 6: Published! Request PDF generation

[ ] Post the link to the PDF url at the top of the issue

[ ] Post link to #enhanced-preprint comment below

#enhanced-preprint comment thread: [PLACE LINK TO COMMENT HERE]
Post the following to the #enhanced-preprint on slack:
@Ryan Dix-Peek please can you generate a PDF for https://elifesciences.org/reviewed-preprints/88841

Step 7: Introduce PDF to data folder and git repo

[ ] PDF is avaliable at https://github.com/elifesciences/enhanced-preprints-data/raw/master/data/88841/v1/88841-v1.pdf

Detailed instructions: https://github.com/elifesciences/enhanced-preprints-data#add-a-pdf
Step 8: Add PDF url to manuscripts.json

[ ] Reviewed preprint PDF is available for download (https://prod--epp.elifesciences.org/reviewed-preprints/88841)

[ ] Pull request created to enhanced-preprint-client
[ ] Pull request switched to "Ready for review"
[ ] Post link to pull request below

[PLACE LINK TO PULL REQUEST HERE]

Instructions to add PDF url to manuscripts.json

Visit: https://github.com/elifesciences/enhanced-preprints-client/actions/workflows/add-pdf-url-to-manuscript.yaml
Click: Run workflow
Complete the form and click "Run workflow"
A successful run should result in a new pull request at https://github.com/elifesciences/enhanced-preprints-client/pulls
Open the pull request and click the "Ready for review" button to trigger tests
Once the tests pass and you are happy with the changes the PR can be merged

Example pull request: https://github.com/elifesciences/enhanced-preprints-client/pull/397/files
Once the pull request is merged in it should be available a few minutes later.

Step 9: Done!

[ ] Kettle is on!

The authors used all caps for the surnames, and bioRxiv have faithfully reproduced this:

Going to reach out to them to ask for it to be fixed.

(One author also missing an affiliation)

Authors have corrected the issues in a new version - https://www.medrxiv.org/content/10.1101/2<IP_ADDRESS>90935v2/.
need to wait for the MECA package to be made available.
@acollings in the meantime do we need to move the hypothe.is comments over to the v2? If so, could you assist please?

Done! (@fred-atherden FYI)

V2 available at s3://transfers-elife/medrxiv_Current_Content/September_2023/07_Sep_23_Batch_1043/1ce42975-6d96-1014-b6ef-afd5f5780eae.meca


fix: Return atleast one facet

Temporary workaround to return at least one facet, will be refactored later

Codecov Report

Merging #463 (97cc54c) into main (0fe7a03) will decrease coverage by 0.02%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main     #463      +/-   ##
==========================================
- Coverage   30.75%   30.72%   -0.03%
==========================================
  Files          78       78
  Lines        9111     9119       +8
==========================================
  Hits         2802     2802
- Misses       6053     6061       +8
  Partials      256      256

Impacted Files
Coverage Δ

server/services/v1/search_reader.go
0.00% <0.00%> (ø)

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


Huh, TypeError utils.union is not a function, when verb readme and have tasks:["readme"] in config

Easily as 1, 2, 3... hahaha lol.
[charlike@voltaire compose-emitter]$ verb readme
[TypeError: base-runner#runner utils.union is not a function]

The bug is only when you have tasks:readme on local config and run verb readme, otherwise it works.
And that's strange. Because in this repo it can be found in 2 lines. I check that it exist in lazy-cache file, also it exist in deps, so.. can realize what happens. Maybe it is inherited/passed from another place?
edit: Okey it seems it comes from index.js#L102, but in the try block above that line there's no execution of .sortArgs or another method that calls sortArgs which is the one and only place where utils.union is called. Strange.

thanks for looking into it. I'll get it fixed


Add Festival library as module to support speech synthesis (text-to-speech) #14011

https://en.wikipedia.org/wiki/Festival_Speech_Synthesis_System
http://www.cstr.ed.ac.uk/projects/festival/
There was a mention of text-to-speech as a possible means of increasing accessibility in Godot for developers and application end-users who use screen readers (https://github.com/godotengine/godot/issues/14011).
I'm new to Godot engine (and C++) development, and this is my first attempt at creating a module.  I wanted to create something portable and bound to an external C++ library.  The docs suggested that modules can be zipped up to share with others (http://docs.godotengine.org/en/latest/development/cpp/custom_modules_in_cpp.html?highlight=external#creating-a-new-module), but the majority of the relevant examples in the source seemed to be significantly more complex than the example provided in the documentation.
Right now, this module works on Linux from the build created by scons and Qt Creator, but I haven't tried other operating systems or an export of a game.  I may need to add another folder for voices, since Festival needs at least one to use as a default, but I haven't yet looked into configuring the module's path as the appropriate directory.
I'd appreciate any feedback on this, and I hope that it can be helpful to someone.  Thanks to anyone who worked on the documentation, as well as the following posts for pointing me in the right direction!: https://www.reddit.com/r/godot/comments/85q04a/how_to_get_text_to_speech_set_up_in_godot_need/ & https://godotengine.org/qa/3475/how-to-link-external-library-in-custom-modules-scsub

Careful with this. The voices that Festival uses all have wildly varying licenses and terms of use; some (if not most) of them may be problematic with Godot, even if the Festival library itself is MIT license compatible.

Thanks for the explanation. In that case, I'll probably use the API myself when I'll be implementing dialog features for my project.

You're welcome.  I'm working on porting this module to a GDNative plugin.  I'll post an update here when that's ready.

@malcolmhoward What's the status of this? Have you ported this to a GDNative plugin?
I don't think this is worth having built into Godot. Any text to speech that has a decent amount of localization support would be a huge amount of code which would simply be bloat for most users. It's not suitable as-is due to submodules, hasn't been updated, and the author said he's working on making this a GDNative plugin instead. As such, I suggest closing this PR.

I missed that this PR was still open. That's indeed both too niche and too much code and dependencies to add in the core engine, GDNative was created specifically for such use cases.
The module can still be distributed in a thirdparty repo and linked e.g. in https://github.com/Calinou/awesome-godot for users who would want to compile it themselves, until a GDNative alternative is made available.


Add declaration of arg to for-in loop

Closes #42

Does this fix the previous exception? I would have thought arg would just
be a global.
On Wed, 4 May 2016, 13:56 Cristiano Betta<EMAIL_ADDRESS>wrote:

You can view, comment on, or merge this pull request online at:
https://github.com/Nexmo/nexmo-node/pull/43
Commit Summary

Add declaration of arg to for-in loop

File Changes

M lib/nexmo.js
https://github.com/Nexmo/nexmo-node/pull/43/files#diff-0 (4)

Patch Links:

https://github.com/Nexmo/nexmo-node/pull/43.patch
https://github.com/Nexmo/nexmo-node/pull/43.diff

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/Nexmo/nexmo-node/pull/43

Yes it does. Added reference to that post.

Added another fix for issue #44.


Add catalan translation

Translated with ❤ from Barcelona

@ferranabello thanks for the contribution - Looks great - just a quick conflict resolution if you could!

@ferranabello thanks for the contribution - Looks great - just a quick conflict resolution if you could!

That's solved, thanks @MattKiazyk 👌


⚠ Bofrost.at has degraded performance

In 38dee86, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 2109 ms

Resolved: Bofrost.at performance has improved in 166e27a.


Homarr shows error after onboard

Environment
Docker
Version
v0.14.1
Describe the problem
Installed via Synology container Manager, after the onboard process, site show error going to the board.
tried again in Ubuntu, using docker compose, same error occurs.
attached is the error from Synology container manager.
Logs
No response
Context

Please tick the boxes

[X] I confirm that I attached the proper logs
[X] I've read the docs
[X] I've checked for duplicate issues
[X] I've tried to debug myself

I have the same issue, also hosted on Synology.

Do you know where the synology config is ? I’m not familiar with it. What was your installation process like ?

I've actually just redeployed the container and it completed the upgrade process correctly.  I did mine using docker run from the Synology CLI via SSH.  I have Portainer running, so I get the logs from that.
My run command was like this;
docker run
--name homarr
--restart unless-stopped
-p 7575:7575
-v /volume3/docker/homarr/configs:/app/data/configs
-v /volume3/docker/homarr/data:/data
-v /volume3/docker/homarr/icons:/app/public/icons
-v /var/run/docker.sock:/var/run/docker.sock
--label=com.centurylinklabs.watchtower.monitor-only=true
ghcr.io/ajnart/homarr:latest
Unless you are running Watchtower you won't need the label, the paths will need to be updated to suit you deployment.  Hopefully that works for you.

I've actually just redeployed the container and it completed the upgrade process correctly. I did mine using docker run from the Synology CLI via SSH. I have Portainer running, so I get the logs from that.
My run command was like this;
docker run --name homarr --restart unless-stopped -p 7575:7575 -v /volume3/docker/homarr/configs:/app/data/configs -v /volume3/docker/homarr/data:/data -v /volume3/docker/homarr/icons:/app/public/icons -v /var/run/docker.sock:/var/run/docker.sock --label=com.centurylinklabs.watchtower.monitor-only=true ghcr.io/ajnart/homarr:latest
Unless you are running Watchtower you won't need the label, the paths will need to be updated to suit you deployment. Hopefully that works for you.

You mention the synology cli, so there is no way to install homarr simply with a GUI right ? If yes then they might have an outdated “template” to correctly set the app up.
if you’re using docker manually and encountering issue with file permissions we recommend trying to use homarr without mounting a database

The only way I know to do it via the GUI would be using a task, the way Marius hosting describes it.  Only really saves connecting to the CLI directly, which personally I find easier.
I think in my case something went wrong with the upgrade when I previously tried it, removing the container and starting again sorted it out and now it is running fine.

I also installed in ubuntu using docker compose, my config are as follow
`  GNU nano 6.2                                                 docker-compose.yml
version: '3'
#---------------------------------------------------------------------#
Homarr - A simple, yet powerful dashboard for your server.
#---------------------------------------------------------------------#
services:
homarr:
container_name: homarr
image: ghcr.io/ajnart/homarr:latest
restart: unless-stopped
volumes:
- ./homarr/configs:/app/data/configs
- ./homarr/data:/data
- ./homarr/icons:/app/public/icons
ports:
- '7575:7575'
`

I also installed in ubuntu using docker compose, my config are as follow

GNU nano 6.2                                                 docker-compose.yml
version: '3'
#---------------------------------------------------------------------#
Homarr - A simple, yet powerful dashboard for your server.
#---------------------------------------------------------------------#
services:
homarr:
container_name: homarr
image: ghcr.io/ajnart/homarr:latest
restart: unless-stopped
volumes:

./homarr/configs:/app/data/configs
./homarr/data:/data
./homarr/icons:/app/public/icons
ports:
'7575:7575'

the issue occurred even before I upgrade to v0.14.1, that's why I upgraded. Added ./homarr/data:/data both version has this issue (forgot what version I had before)

We fixed it in v14.1, try to delete ./homarr/data

We fixed it in v14.1, try to delete ./homarr/data

I'm was using 14.1 and the issue persist, did another brand new install in Ubuntu, same issue.
Thanks

Is this still an issue?

Closing, OP did not reply


SAP Cloud SDK - Questions about upcoming SDK V3 Release

Hey guys,
Within the last 18 months we created more than 40 different VDM packages and more than 15 nodeJs APPs within the SAP Cloud SDK on a customer project. We do have some kind of data-lake implemented with CAP application and surrounding ingestion- and extraction-layer applications within nodeJs apps and the usage of SAP Cloud SDK.
On our agenda we have still the left-over topic about updating (older, stable) applications, using SDK v1, to the newest version of v2. Before we're starting with that, we wanna make sure about the release planing of v3, because maybe it does make sense to wait until the release of the newest major version is going to be published ;-)?
Beside that, we wanna get more details about the release roadmaps of the SDK and your release cycles as well.
Making it more transparent does help us, our customers and the community to get better capabilities to plan our release cycles accordingly to the ones of our key dependency: your beautiful SDK.
Thanks for a short feedback and your support.
Kind Regards,
Cedric

Hi @drvup ,
Thank you very much for your adoption and support as a user!

Before we're starting with that, we wanna make sure about the release planing of v3

Please check our release policy here.

because maybe it does make sense to wait until the release of the newest major version is going to be published ;-)?

It depends on your use cases.
For example, for v2 upgrade, if you only use the http-client instead of vdm, there is not much effort.
In general, by following our current upgrade guide, you should be able to upgrade from v1 to v2 with maximal 1 day (our goal).
Sure, there will be a new one for v3 upgrade, which might also take 1 day.
However, doing v2 upgrade and v3 upgrade together might be risky, just like a CI/CD pipeline:

if your pipeline is always green, perfect
if you commit frequently, and fix issues timely, every step should be relatively easy
if you commit huge amounts of files or have a yearly release schedule without testing properly before, you might spend more time for fixing the issue

Therefore, I recommend doing it step by step, because eventually you have to cover both upgrade guide.

we wanna get more details about the release roadmaps of the SDK and your release cycles as well.

The release cycles can be found in the link above.
The scope of v3 needs to be finalised and will be published later. I can share the current status (might be changed):

Allow user to define a middleware and use it for the http requests (also odata/openapi). A typical use case would be the resilience middleware, where e.g., retry/circuit breaker/timeout can be enabled. See ADR here
Improve our OData and OpenAPI generator for better performance and UX

Let me know if it helps.
Thank you very much.
BR,
Junjie

Hey @jjtang1985 ,
thanks for your fast response. Always appreciated :)
Thanks for pointing me to the right path on the documentation about release schedules / cycles etc. - I do not know why I did not see it on the page before :/
Bigger thanks to point me to the knowledge-base of this repo! Really nice things there. Anyhow, great way to share and keep some knowledges visible to everyone!
=> I was also thinking the same way like you, talking about upgrading from v1 to v3 via v2 first. I made the experience that it's not done within 1 day updating applications to use and adopt sdk v2. The reason for it is the other architecture of de- / serializers and the schema (I used to love it after some time and I see the effort within custom de- / serializers in use).
From customer POV, it's important to highlight to keep the upgrading effort as low as possible (they often still compare it with ABAP world -.-).
Thanks for sharing some insights about the upcoming changes, looking forward to get more details :)
Thanks and Kind regards,
Cedric

@Junjie thanks for the great answer. I would like to add a few comments:

We waited rather long for the first major version v1 -> v2. This lead to a rather big number of breaking changes because a lot of legacy has accumulated. We plan to make releases more frequent. This means more often less pain, which is in general a better feeling then very rarely a big pain.
We tried to avoid the word migration or update because in the onPrem world this often means a big project with hunderts of working days for customers. Here it is really just a npm library update.
If possible use TypeScript with the SDK because it will show errors directly at compile time and with a high test coverage you create confidence that your update is not breaking something.
Since version 6 CAP also uses the SDK 2.0 so I would recommend to align the dependencies to have small node_modules.

Best
Frank

Hi @drvup ,
Here is our announcement of the version 3.
Please feel free to provide feedback there.
Thank you!


Support platform-specified configuration.

I added a new configuration file tauri.linux.conf.json  for my Linux app,  which has a different productName , But when this action runs, it returns an error message:
    Finished release [optimized] target(s) in 8m 17s
    Bundling terminal_0.6.0_amd64.deb (/home/runner/work/wisburg-terminal/wisburg-terminal/src-tauri/target/release/bundle/deb/terminal_0.6.0_amd64.deb)
    Bundling terminal_0.6.0_amd64.AppImage (/home/runner/work/wisburg-terminal/wisburg-terminal/src-tauri/target/release/bundle/appimage/terminal_0.6.0_amd64.AppImage)
    Bundling /home/runner/work/wisburg-terminal/wisburg-terminal/src-tauri/target/release/bundle/appimage/terminal_0.6.0_amd64.AppImage.tar.gz (/home/runner/work/wisburg-terminal/wisburg-terminal/src-tauri/target/release/bundle/appimage/terminal_0.6.0_amd64.AppImage.tar.gz)
    Finished 3 bundles at:
        /home/runner/work/wisburg-terminal/wisburg-terminal/src-tauri/target/release/bundle/deb/terminal_0.6.0_amd64.deb
        /home/runner/work/wisburg-terminal/wisburg-terminal/src-tauri/target/release/bundle/appimage/terminal_0.6.0_amd64.AppImage
        /home/runner/work/wisburg-terminal/wisburg-terminal/src-tauri/target/release/bundle/appimage/terminal_0.6.0_amd64.AppImage.tar.gz (updater)

        Info 1 updater archive at:
        Info         /home/runner/work/wisburg-terminal/wisburg-terminal/src-tauri/target/release/bundle/appimage/terminal_0.6.0_amd64.AppImage.tar.gz.sig
Expected artifacts paths:
/home/runner/work/wisburg-terminal/wisburg-terminal/src-tauri/target/release/bundle/deb/智堡终端_0.6.0_amd64.deb
/home/runner/work/wisburg-terminal/wisburg-terminal/src-tauri/target/release/bundle/appimage/智堡终端_0.6.0_amd64.AppImage
/home/runner/work/wisburg-terminal/wisburg-terminal/src-tauri/target/release/bundle/appimage/智堡终端_0.6.0_amd64.AppImage.tar.gz
/home/runner/work/wisburg-terminal/wisburg-terminal/src-tauri/target/release/bundle/appimage/智堡终端_0.6.0_amd64.AppImage.tar.gz.sig
Error: No artifacts were found.

It seems this action doesn't recognize the Linux configuration file, and just uses the old product name that is in the main configuration file.

I am having a similar issue on the mac side where I am trying to compile a Silicon and an Intel version. Here is the output after targeting the silicon target directly:
    Finished 3 bundles at:
Password: <empty>
        /Users/runner/work/wowthing-sync/wowthing-sync/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Wowthing Sync.app
        /Users/runner/work/wowthing-sync/wowthing-sync/src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/Wowthing Sync_0.1.9_aarch64.dmg
        /Users/runner/work/wowthing-sync/wowthing-sync/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Wowthing Sync.app.tar.gz (updater)

Deriving a key from the password and decrypting the secret key... done
        Info 1 updater archive at:
        Info         /Users/runner/work/wowthing-sync/wowthing-sync/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Wowthing Sync.app.tar.gz.sig
Done in 519.41s.
Expected artifacts paths:
/Users/runner/work/wowthing-sync/wowthing-sync/src-tauri/target/release/bundle/dmg/Wowthing Sync_0.1.9_x64.dmg
/Users/runner/work/wowthing-sync/wowthing-sync/src-tauri/target/release/bundle/macos/Wowthing Sync.app
/Users/runner/work/wowthing-sync/wowthing-sync/src-tauri/target/release/bundle/macos/Wowthing Sync.app.tar.gz
/Users/runner/work/wowthing-sync/wowthing-sync/src-tauri/target/release/bundle/macos/Wowthing Sync.app.tar.gz.sig

@calebsmithdev did you use tauri-action from git? Like tauri-apps/tauri-action@dev instead of @v0. support for non-native targets was not part of a v0 release yet.

@FabianLars that did it! So sorry - I didn't think of trying a dev version (or a different version in general).


GoodYear - The number of jobs posted on Peviitor (25) and the one returned by the API (50) isn't the same.

ENVIROMENT: production
URL: https://peviitor.ro/
Browser: Chrome
Device: laptop
OS: Windows 10
STEPS TO REPRODUCE:

Open "https://peviitor.ro/" in the browser.
Type "GoodYear" in the search bar.
Check the number of jobs available for GoodYear.
Run "GoodYear" scraper on "https://dev.laurentiumarian.ro/scraper/based_scraper_py/".
Check the number of jobs displayed.

EXPECTED RESULTS:
The number of jobs posted on "https://peviitor.ro/" and the number of jobs returned by the API should be the same.
ACTUAL RESULT:
The number of jobs posted on Peviitor website is 25 while the number of jobs returned by the API is 50.

Fixed

After retesting, the number of jobs posted on the peviitor and the number of jobs returned by the API is the same.(77)


update policy serialization

Issue #, if available:
Description of changes:
cedar#1041 uncovered a bug in #173 😱 ValidationRequest objects were being serialized as { "schema":..., "policies": ..., "policySet": ...} where the policies and policySet values were identical. This PR gets rid of the unwanted policySet field.

I don't understand how this fixes anything

Also mysterious to me. But it appears that Jackson was getting two different names from the getter (getPolicySet) and the class field (policies). And instead of warning or failing to build, it decided that we must want both fields.


Alignment of Documents corrected

Previous version:

After change:

Try to add real values into the input fields, or at least try to add fake data as to reproduce the real feel into it. This should be done while testing the Design. So that even the worst addition of data from any user won't affect the situation as such.
Try using this: https://www.lipsum.com
This would ease the effort :) If still, this works fine, let me know. I would merge them then.


decorates_association add a :fill option to fill collection with blank objects up to given size

I would like to write a decorator like this
class DocumentDecorator < ApplicationDecorator
  decorates_association :attachments, fill: 5
end

and then use it in a view like this
<%= form_for :document do |f| %>
  ...
  <%= f.fields_for :attachments do |af| %>
    <% if af.object.persisted? %>
      ...
    <% else %>
      ...
    <% end %>
  <% end %>
<% end %>

For collections, form_for renders its block for each item and takes care of appropriately indexed field names.
In the example, I want to display a fixed number of slots for attachments, some of them maybe empty. For empty slots, I need new, unsaved items to render them.
The view code, as shown above, does not need to know about the number of slots nor does it know how to create a new items. For now, I'm writing the necessary code by hand
class ArticleDecorator < ApplicationDecorator
  def attachments
    AttachmentDecorator.decorate_collection(
      fill_empty_slots(
        object.attachments,
        object.max_attachment_count,
        Attachment)
    )
  end
end

class ApplicationDecorator < Draper::Decorator
  protected
  def fill_empty_slots(items, max, klass)
    empty_slots = max - items.size
    blanks = empty_slots.times.map { klass.new }
    items + blanks
  end
end

I'm hoping that Draper could handle this for me.

Sorry, doesn't seem relevant. Feel free to experiment with an implementation and send a PR though.


Added transition:error trigger when error inside async renderViews occurs

Refs #22
Less sure about this one, and I'm not entirely certain what you meant by "returning loadPromise directly" since it actually looks like it is returned.
I ran into issues with the... "Lifecycle hooks load should not cancel the transition when returned promise is rejected" test whenever I tried to let the error trickle up or introduce a reject() in this Promise, so I've just removed the duplicate call to renderViews and replaced it with a transition:error call.
Trying to balance the "Emitted when a transition fails" definition of the "transition:error" event in events.md and the "triggered for any error while routing" definition in errors.md, I don't think this breaks any patterns, and all the tests pass now.
I definitely foresee followup changes requested here, so let me know what's needed!

If load is rejected still should render the view and follow normal route flow. Errors in load should be  recovered
This is a key difference from activate other wise it could lead to inconsistent activation state: an route that activate was called but is not effectively active
You should add another catch handler after the first catch to handle the error. Just i don't know if should trigger an transition:error event or jut re throw the error
It should do the same as throwing an error in render view without load. Can you test that?

I think I understand what you're asking for now, but I'm less sure this is an okay solution. I tried to balance the transition:abort and other tests where "No root outlet region defined" was expected. mnRoute.hasRenderedView() is now called after mnRoute.renderView() to determine if everything went successfully. It's a bit more fragile, but it doesn't break any of the current tests.
I did move the one test I added from events into render and detached it from relying on the load chain.
Let me know what else should be changed from this.

Overall looks good. I would just create a standalone function instead of hasRenderedView method to avoid polluting Route namespace

Pushed another commit that turned it into a variable in cherrytree-adapter:renderViews. I had it as a function because I'd used it in multiple places while testing.
Re-linted and tests still pass.

BTW i stopped work with marionette.
Using nextbone plus nextbone-routing
Do you want to maintain this repository?

I'm fairly certain our use of this is a bit atypical, so I'd rather avoid having permissions to make changes that accidentally break things for other people... If we need significant changes, I may instead end up hard-forking this and making a new repository under my organization until we switch to something that's not Backbone/Marionette.
Thanks for the offer though!

(That said, if you could release this as 1.1.2 sometime soon, that'd be really helpful!)


Remove manual memory management from app_ofline

And add tracing

Build is failing; missing include?

I'll close this until @pan-wang  work is in.

I removed app-offline class. You can close this one


Malicious Object Detected [Trojan] when trying to download Foundry

Component
Other (please describe)
Have you ensured that all of these are up to date?

[X] Foundry
[X] Foundryup

What version of Foundry are you on?
latest
What command(s) is the bug in?
No response
Operating System
None
Describe the bug
Malicious object detected when trying to download foundry using the Rust method, on Windows operating system.
What my Kaspersky detected:
Event: Malicious object detected
Component: Application Control
Result description: Detected
Type: Trojan
Name: VHO:Trojan.Win32.Convagent.gen
Threat level: High
Object path: C:\[redacted]\cargo-install9Y6UXn\local\build\libm-766624a62d39c941
Object name: build-script-build.exe
Reason: Cloud Protection
MD5: 8707AA726C0D65B0200C03A6612DCF24

Malicious object detected when trying to download foundry using the Rust method, on Windows operating system.

how did you install it?

I'm using Rust, using this command cargo install --git https://github.com/foundry-rs/foundry --profile local --force foundry-cli anvil chisel

Closing, cargo binary seems to be the culprit. Can't repro on windows boxes.


add the range_* functions

Summary
This adds the range_array, range_vector and range_row_vector functions to help construct containers of linearly spaced elements between low and high and separated by by. Fixes #838.
Tests
Added tests.
Side Effects
None.
Checklist

[X] Math issue #838

[X] Copyright holder: Marco Colombo
The copyright holder is typically you or your assignee, such as a university or company. By submitting this pull request, the copyright holder is agreeing to the license the submitted work under the following licenses:
- Code: BSD 3-clause (https://opensource.org/licenses/BSD-3-Clause)
- Documentation: CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

[X] the basic tests are passing

unit tests pass (to run, use: ./runTests.py test/unit)
header checks pass, (make test-headers)
dependencies checks pass, (make test-math-dependencies)
docs build, (make doxygen)
code passes the built in C++ standards checks (make cpplint)

[X] the code is written in idiomatic C++ and changes are documented in the doxygen

[X] the new changes are tested

This also renames the spaced_vector functions to linspaced_vector, following the suggestion and discussion in #838.

I'm sorry, but would it be possible to not add new nondifferentiable functions for no reason?
This range function coerces a real to an int, which is something Stan has intentionally not allowed before.
I don't see any use case for the range. If the size of the resulting vector is known ahead of time then range_vector(low, high, by) is the same as linspaced_vector(N, low, low + by*(N-1)).
If the size is not known then it's not even possible to store the vector in a local variable because those must have a declared size.

The requirement for having sizes defined ahead of time is a killer for range, so I'm closing this. When I get to document linspaced I can mention how it can be used as a workaround for range. Thanks @nhuurre for your input!

If the size is not known then it's not even possible to store the vector in a local variable because those must have a declared size.

The one workaround to this general rule is calling functions.  You can have an expression with no declared size and then pass it as an argument to a function with no declared size.  The function argument acts like an unsized local variable if you really do need one.

Thanks so much to have linspaced_vector!


Noted Like operator is not supported in .NET Core

Noted Like operator is not supported in .NET Core
//cc @KathleenDollard

Looks great.
It brings to mind that with VB.NET 16 timeframe, we'll be adding back functionality like this that .NET Core is currently missing. Is there an obvious technique for how we mark features that are missing on .NET Core prior to 16.0?

I think we could add a custom label that at least indicates we should review it. What do you think, @mairaw? Possibly just the "updateeachrelease" metadata value, which we can remove once it is supported in .NET Core.

Yeah, that could work. Or we could add a Dev16 project. I think there's more we'll have to worry about for that release.

I'll create a Dev16 project.


Swift Package not working

Unable to install DeviceKit as Swift Package from Xcode.

Same here. I get the error:
The package dependency graph can not be resolved; unable find any available tag for the following requirements:
https://github.com/devicekit/DeviceKit — 2.0.0..<3.0.0

Can you post your SPM config, or part of it?
We are personally not that familiar with SPM...

Hi @ValentinFromSpace  and @vegidio! Today I've released a new CocoaPods version and also a new release 2.1.0 which should include some fixes for SPM made by other contributors - @Zandor300  and I are not familiar with SPM. Does this fix the problem?

Yes! Working seamlessly now. Beautiful theme by the way!

Okay, I will be closing this now then! 👍🏻

Yes! Working seamlessly now. Beautiful theme by the way!

@ValentinFromSpace Oh thank you 😊- I've used and adapted the Fairyfloss Theme 💜.


Add grpc rules loading

What type of PR is this?

Uncomment one (or more) /kind <> lines:

/kind bug

/kind cleanup

/kind design

/kind documentation

/kind failing-test

/kind feature

If contributing rules or changes to rules, please make sure to also uncomment one of the following line:

/kind rule-update

/kind rule-create

Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area build
/area engine

/area rules

/area tests

/area proposals

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

Add the ability to reload rules files on the fly via the embedded grpc server.

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: mstemm
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [mstemm]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits.
:memo: Please follow instructions in the contributing guide to update your commits with the DCO
Full details of the Developer Certificate of Origin can be found at developercertificate.org.
The list of commits missing DCO signoff:

66b5f1d This version builds
1cf38eb This version builds

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

Is it that hard to just replace the ruleset without replacing the entire engine, eg adding some way to "reset" engine state and call load_rules_file() for each new file again?
I don't know how feasible that is though.

I actually started by going down that route, thinking this would be a trivial change. The big problem with that approach is that we want to to do the rules reload via the grpc server, and the grpc server runs in a separate thread than the one processing events.
So you'd have to add some kind of synchronization between the threads while the reload is in progress to avoid race conditions. But this results in potentially stalling event processing while the reload is happening. We've noticed in some commercial uses of the falco engine that this can lead to dropped syscall events in high volume environments with complex rules files.
Although I did get something to compile, I'm not sure it's going to ultimately be better than the current approach of signaling falco with SIGHUP to simply restart everything. I'm going to clean this up a bit and see what shape it's in.
It would also have the benefit of cleaning up the currently gigantic init_falco function, which has grown to ~1200 (!!) lines and is currently kind of a mess with a mix of command line validation, opening plugins, initializing the engine, loading rules, handling one-off paths like --list/--validate/etc.

Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits.
:memo: Please follow instructions in the contributing guide to update your commits with the DCO
Full details of the Developer Certificate of Origin can be found at developercertificate.org.
The list of commits missing DCO signoff:

66b5f1d This version builds
1cf38eb This version builds

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

It would also have the benefit of cleaning up the currently gigantic init_falco function, which has grown to ~1200 (!!) lines and is currently kind of a mess with a mix of command line validation, opening plugins, initializing the engine, loading rules, handling one-off paths like --list/--validate/etc.

+1 +1 +1 +1 +1 from me :) That alone would be superb!
I understand the issue better now, thanks!
Just a question: isn't the tbb::concurrent_queue<std::shared_ptr<falco_engine>> m_pending_falco_engine; just another locking mechanism by itself too? I mean, the concurrent_queue will surely use some sort of locking in it. I am quite curious about its performance and its impact on events drop too.

Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits.
:memo: Please follow instructions in the contributing guide to update your commits with the DCO
Full details of the Developer Certificate of Origin can be found at developercertificate.org.
The list of commits missing DCO signoff:

66b5f1d This version builds
1cf38eb This version builds
a272c5c Move validation to after swengine init
7e59fde falco_engine cleanups. this passes most tests
7956772 Rules loading cleanups. This passes mosts tests
5fe33b4 swappable falco engine cleanups. this passes mosts tests
83f0a0b falco cleanups. this passes most tests

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

Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits.
:memo: Please follow instructions in the contributing guide to update your commits with the DCO
Full details of the Developer Certificate of Origin can be found at developercertificate.org.
The list of commits missing DCO signoff:

66b5f1d This version builds
1cf38eb This version builds
a272c5c Move validation to after swengine init
7e59fde falco_engine cleanups. this passes most tests
7956772 Rules loading cleanups. This passes mosts tests
5fe33b4 swappable falco engine cleanups. this passes mosts tests
83f0a0b falco cleanups. this passes most tests
25b8da0 More falco_engine cleanups. this should pass all tests
0d640f1 Remove temp debug logs (falco_engine)
7b7b601 Rules loading cleanups. This version should pass all tests
4412274 swappable falco engine cleanups. this should pass all tests
5c98476 Falco cleanups. this should pass all tests

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

Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits.
:memo: Please follow instructions in the contributing guide to update your commits with the DCO
Full details of the Developer Certificate of Origin can be found at developercertificate.org.
The list of commits missing DCO signoff:

66b5f1d This version builds
1cf38eb This version builds
a272c5c Move validation to after swengine init
7e59fde falco_engine cleanups. this passes most tests
7956772 Rules loading cleanups. This passes mosts tests
5fe33b4 swappable falco engine cleanups. this passes mosts tests
83f0a0b falco cleanups. this passes most tests
25b8da0 More falco_engine cleanups. this should pass all tests
0d640f1 Remove temp debug logs (falco_engine)
7b7b601 Rules loading cleanups. This version should pass all tests
4412274 swappable falco engine cleanups. this should pass all tests
5c98476 Falco cleanups. this should pass all tests
b0ebd97 falco_engine fix typos

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

Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits.
:memo: Please follow instructions in the contributing guide to update your commits with the DCO
Full details of the Developer Certificate of Origin can be found at developercertificate.org.
The list of commits missing DCO signoff:

08a67b7 This version builds
54dea70 This version builds
d338185 Move validation to after swengine init
4356307 falco_engine cleanups. this passes most tests
83fe8d6 Rules loading cleanups. This passes mosts tests
03d826d swappable falco engine cleanups. this passes mosts tests
c648f2f falco cleanups. this passes most tests
cc4332c More falco_engine cleanups. this should pass all tests
1ed2bec Remove temp debug logs (falco_engine)
7e37fc8 Rules loading cleanups. This version should pass all tests
946a431 swappable falco engine cleanups. this should pass all tests
9f88c7c Falco cleanups. this should pass all tests
b55df88 falco_engine fix typos

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

Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits.
:memo: Please follow instructions in the contributing guide to update your commits with the DCO
Full details of the Developer Certificate of Origin can be found at developercertificate.org.
The list of commits missing DCO signoff:

08a67b7 This version builds
54dea70 This version builds
d338185 Move validation to after swengine init
4356307 falco_engine cleanups. this passes most tests
83fe8d6 Rules loading cleanups. This passes mosts tests
03d826d swappable falco engine cleanups. this passes mosts tests
c648f2f falco cleanups. this passes most tests
cc4332c More falco_engine cleanups. this should pass all tests
1ed2bec Remove temp debug logs (falco_engine)
7e37fc8 Rules loading cleanups. This version should pass all tests
946a431 swappable falco engine cleanups. this should pass all tests
9f88c7c Falco cleanups. this should pass all tests
b55df88 falco_engine fix typos
eb86768 Fixing falco bugs after rebase
1b112d7 Fixing falco tests after rebase

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

Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits.
:memo: Please follow instructions in the contributing guide to update your commits with the DCO
Full details of the Developer Certificate of Origin can be found at developercertificate.org.
The list of commits missing DCO signoff:

08a67b7 This version builds
54dea70 This version builds
d338185 Move validation to after swengine init
4356307 falco_engine cleanups. this passes most tests
83fe8d6 Rules loading cleanups. This passes mosts tests
03d826d swappable falco engine cleanups. this passes mosts tests
c648f2f falco cleanups. this passes most tests
cc4332c More falco_engine cleanups. this should pass all tests
1ed2bec Remove temp debug logs (falco_engine)
7e37fc8 Rules loading cleanups. This version should pass all tests
946a431 swappable falco engine cleanups. this should pass all tests
9f88c7c Falco cleanups. this should pass all tests
b55df88 falco_engine fix typos
eb86768 Fixing falco bugs after rebase
1b112d7 Fixing falco tests after rebase
cdd4f51 Better fix for falco tests after rebase

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

It would also have the benefit of cleaning up the currently gigantic init_falco function, which has grown to ~1200 (!!) lines and is currently kind of a mess with a mix of command line validation, opening plugins, initializing the engine, loading rules, handling one-off paths like --list/--validate/etc.

+1 +1 +1 +1 +1 from me :) That alone would be superb!
I understand the issue better now, thanks! Just a question: isn't the tbb::concurrent_queue<std::shared_ptr<falco_engine>> m_pending_falco_engine; just another locking mechanism by itself too? I mean, the concurrent_queue will surely use some sort of locking in it. I am quite curious about its performance and its impact on events drop too.

For the record, in the past, we did an attempt to load rules on the fly using an external lib. The issue we faced is similar. The most performant way we found is in this commit :point_down: (never merged)
https://github.com/falcosecurity/falco/commit/f8c10f6c2791f902804c4739dc0a5b4c995030e5
The full code is here :point_down:
https://github.com/falcosecurity/falco/commits/libhawk-rules

Very cool @leogr , i like it

@mstemm ,if falco is running as daemonset, does it mean I will have to update each falco pod through grpc server as well as updating the configmap where the rule resides?

@mstemm ,if falco is running as daemonset, does it mean I will have to update each falco pod through grpc server as well as updating the configmap where the rule resides?

I think so. That may be not the best. Maybe, we have to rethink a bit the UX of this feature. Any idea?

@mstemm ,if falco is running as daemonset, does it mean I will have to update each falco pod through grpc server as well as updating the configmap where the rule resides?

I think so. That may be not the best. Maybe, we have to rethink a bit the UX of this feature. Any idea?

I prefer to modify the rule once (via the configmap), and the running Falco pods detects the mounted rule updated, then auto-reload. May a golang thread to monitor the rule file changes and then send request to the grpc server?

@mstemm ,if falco is running as daemonset, does it mean I will have to update each falco pod through grpc server as well as updating the configmap where the rule resides?

I think so. That may be not the best. Maybe, we have to rethink a bit the UX of this feature. Any idea?

I prefer to modify the rule once (via the configmap), and the running Falco pods detects the mounted rule updated, then auto-reload. May a golang thread to monitor the rule file changes and then send request to the grpc server?

Hey @Kaizhe
There's always a proposal to do something similar (with the signal instead of the gRPC API) :point_right: https://github.com/falcosecurity/falco/issues/1692
Anyway, I believe we can watch for rule files changes directly in Falco without needing a gRPC API. It would be straightforward.
Furthermore, I'm thinking that we should differentiate between rules hot reload and config hot reload.
The config hot reload requires stopping the capture for a while (no detection for a few seconds) and then restarting itself.
On the other hand, I think rules hot reload could be implemented without fully reloading Falco.
(cc @jasondellaluce since I know he's playing with filter checks and perhaps the rule loader too).

@mstemm ,if falco is running as daemonset, does it mean I will have to update each falco pod through grpc server as well as updating the configmap where the rule resides?

I think so. That may be not the best. Maybe, we have to rethink a bit the UX of this feature. Any idea?

I totally agree, with current implementation, Falco is the gRPC server, it means you need to know all IP of all your instances. The task is even harder with Falco running inside a k8s cluster (a node can be spawned and a new Falco pod booted while you're already connected to other nodes, and you miss it).
This is not the topic here, but I think we should consider to reverse the situation, Falco should also work as a gRPC client (to falco-exporter or falcosidekick).
For the hot reload of rules, I think a classic fsnotify may work in most of the situation, just by telling Falco to follow direct files and rules.d folder.

Adicionar regras grpc


WIP: .travis.yml: add pair of linux-ppc64le targets.

WIP, no approval requested. Second commit that removes most targets will be removed prior approval is requested. The request will be closed and reopened couple of times in order to get some timing statistics.

It's about 2 minutes provision time. There is no support ccache-ing. There is ccache, but cache is not offloaded, so there is no gain. As result non-extended test build is couple of minutes slower than it could have been. One can also observe several minutes variation, as if jobs are schedule to less and more busy systems, unbalanced that is. Extended test can take >30 minutes (if you happen to run on apparently more busy system). This is >2x slower that tests on x86_64. One can wonder if this can have some kind of serializing effect on queue, because if it does, then push-to-repo queue could get unbearably slow during bursts...

Extended test adds between 30 to 50[!] minutes of additional CPU time. I'd say this is a bit excessive. I therefore would rather suggest to keep one non-extended --strict-warning build and keep sanitizer build commented for occasions when there is reason to believe that there is PPC-specific problem that can be troubleshooted with sanitizer... Removing WIP...

Re-based and ready to roll.


Optimizer window pagination

Describe the Bug
I believe I have found multiple issues with window pagination implementation.

AttributeError is always thrown in ListConnectionWithTotalCount.resolve_connection_from_cache
backup solution in case of AttributeError prevents pagination
order and thus pagination itself is non-deterministic when explicit order is not used
usage of last returns everything and bypasses max_results

System Information

Operating system: linux
Strawberry version (if applicable): 0.47.1
Database version: 10.11.6-MariaDB

Additional Context
ListConnectionWithTotalCount.resolve_connection_from_cache
AttributeError is always thrown here:
https://github.com/strawberry-graphql/strawberry-django/blob/d6051db6f1e792604d66206734df9d6ebcfbbb40/strawberry_django/relay.py#L195
I think there should be something like this?
has_next_page = result[-1]._strawberry_row_number < result[-1]._strawberry_total_count if result else False

Backup solution in case of AttributeError prevents pagination
This might be intended behavior, but:
In case of AttributeError pagination falls back to resolve_connection but (probably due to unavailable overfetch?) pageInfo's hasNextPage is wrongly reporting as false
Order and thus pagination itself is non-deterministic when explicit order is not used
This is probably the biggest issue. Maybe fixable via pk ordering in case of empty order_by in apply_window_pagination ?
Usage of last returns everything and bypasses max_results
When last is used on it's own and execution ends up here:
https://github.com/strawberry-graphql/strawberry-django/blob/d6051db6f1e792604d66206734df9d6ebcfbbb40/strawberry_django/optimizer.py#L561-L573
slice_metadata.start is evaluated to 0
slice_metadata.end becomes sys.maxsize
and queryset ends up filtering out nothing

Upvote & Fund

We're using Polar.sh so you can upvote and help fund this issue.
We receive the funding once the issue is completed & confirmed by you.
Thank you in advance for helping prioritize & fund our backlog.

Hey @Kitefiko ,
Hrm, I'm not really I understood the issue. When and why does AttributeError gets raised for you? Could you try to provide an MRE for it?

Hi @bellini666
We've run into these issue as well, particularly with ListConnectionWithTotalCount.resolve_connection_from_cache here:
https://github.com/strawberry-graphql/strawberry-django/blob/d6051db6f1e792604d66206734df9d6ebcfbbb40/strawberry_django/relay.py#L195
Just so its clear, the result object here is actually the QuerySet._result_cache list, so it will never have the annotated _strawberry_row_number / _strawberry_total_count attributes. It's items will though, so as suggested in parent issue it should instead be something like:
has_next_page = (
    result[-1]._strawberry_row_number < result[-1]._strawberry_total_count
    if result
    else False
)

@bellini666 FYI #622 only fixes 1 of the 4 problems raised in this issue, so it may be worth keeping this open?

@SupImDos good point, going to reopen this

@SupImDos @Kitefiko could any of you help me with some MREs for the remaining issues here so I can try to tackle?

@SupImDos @Kitefiko could any of you help me with some MREs for the remaining issues here so I can try to tackle?

@bellini666 Yes, we've specifically run into the "Usage of last returns everything and bypasses max_results" issue, so I should be able to put together an MRE for that soon.

@bellini666
Sorry for the delay! I've created an MRE for the "Usage of last returns everything and bypasses max_results" issue:

Branch: mre/pagination-with-only-last
Commit: 922ec47b8a7fd2e48a48b8b6cdc6f385804e3254

In short, doing:
query {
  milestoneConn(last: 3) {
    edges {
      node {
        id
      }
    }
  }
}

Results in:
SELECT "projects_milestone"."name",
    "projects_milestone"."id",
    "projects_milestone"."due_date",
    "projects_milestone"."project_id"
FROM "projects_milestone" LIMIT<PHONE_NUMBER>854775807    # <- This is ``sys.maxsize``

Hi @SupImDos ,
Thanks for the MRE! 😊
Here is what is happening: The relay limit/offset algorithm on strawberry is implemented using slices, and those are calculated here: https://github.com/strawberry-graphql/strawberry/blob/main/strawberry/relay/utils.py#L126
If you take a look at this line, you will see that if you only ask for last without anything else, it will do a slice like nodes[: sys.maxint] and then indeed get the last results in python.
A good workaround would be to make this do nodes[-last:], but when I tried that, django raised ValueError: Negative indexing is not supported.
I think the only options we have to solve this specific case (we only have last and nothing else) would be:

Reverse the sorting in the queryset and change last to first

In theory, this would work the same, but then we would need to re-reverse the results after.

Call .count() in the queryset before the slice so we can do nodes[count - last:]

This one would not require re-reversing, but is somewhat more complicated to implement, as it would require changing the strawberry API to allow hooking into it.
What do you think? Anything that I'm missing here?


Check lighting of 3D furnace

From CurseForge:
On another note... I like the 3D Furnace, especially since you can right-click with the fuel/items to fill it up rather than opening the GUI. Although there seems to be a bug where the items inside it turn very dark but that could be a mod conflict or a lightning issue, not entirely sure. By the looks of it... it seems to happen when you stack the furnaces on top of each other and the top ones aren't being used.

Pushed v0.2 to CurseForge.


Adjust the header position based on banner visibility

Description of expected behavior
The top position of the <Header> should be based on whether the following banners are opened or closed:

API Key banner
Coud banner

Current behavior
The banner position is currently 0, which makes it overlap with, and hide, the other banners.

Fixed by #564


3.0 Preview 3 Release

FWIW, it seems I can't check out this branch anymore:
$ git checkout v3.0.0-preview3
...
HEAD is now at d7dd4b0 Update for 3.0 preview 3. (#986)
$ git submodule update --init --recursive
...
...
Submodule path 'src/vstest': checked out 'df96f832f28de9798bf3a1b2d6b7933439e00ae4'
error: Server does not allow request for unadvertised object 8e7f5f9da867d9a809f11b2aab7540ee3999252a
Fetched in submodule path 'src/websdk', but it did not contain 8e7f5f9da867d9a809f11b2aab7540ee3999252a. Direct fetching of that commit failed.

Not sure what happened, but I can no longer reproduce the cloning issue.

Someone on the websdk team force pushed or deleted a branch or something--@dseefeld also saw this around the same time you did, and I helped websdk get a tag up so it's accessible again.

Finished in https://github.com/dotnet/source-build/pull/986.


Incorrect parsing as html

Hi guys, great work you are doing 👍
We are using you by-proxy through gatsbyjs/gatsby over at freecodecamp/guides. We have run into an issue where markdown inside of code blocks is being incorrectly parsed as html
raw markdown:
```C++
#include <iostream>
using namespace std ;
int main()
{
    cout<<"Hello World"<<endl;
    return 0;
}
# with three backticks here

source
This is a difference in how it is parsed on GitHub

#include <iostream>
using namespace std ;
int main()
{
    cout<<"Hello World"<<endl;
    return 0;
}

and how it is parsed though remark

#include <iostream>
using namespace std ;
int main()
{
    cout<<"Hello World"<<endl; return="" 0;="" }<="" code=""></endl;></iostream>

It seems that <iostream> is being incorrectly parsed as html.

Heya! 👋
This is a very big issue. You’re using a lot of tooling: lots of gatsby plugins probably, and in turn lots of remark plugins. Without more info, I have no idea what’s going on here.
You’re posting this issue here on the remark issue tracker, but this project itself is not really related to HTML at all. Here’s what remark does (and that looks fine).
I first suggest checking with gatsby-transformer-remark and see what’s going on there. Maybe they have an idea what’s going on. It could be something related to one of the remark plugins, but from this info I wouldn’t know!
Hope this helps! Good luck!

I just took a look at what gatsby-transformer-remark does and 😱 !!!
I'll wade through that lot first, if I need to come back here I will reopen this issue 👍
Thanks for your time

Sure no problem! Good luck, and let me know if you find something I can help with!


[Tool] update toolchain to 20240831

add utf8 as default locale (#43422, 49295)
add gh command (#43100)
upgrade centos7 gcc to 14.2 (#49655, #50431)
fix centos7 yum list due to EOL (#48805)

Why I'm doing:
What I'm doing:
Fixes #issue
What type of PR is this:

[ ] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[x] Tool

Does this PR entail a change in behavior?

[ ] Yes, this PR will result in a change in behavior.
[x] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[ ] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

[ ] This is a backport pr

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto-backported to the target branch

[ ] 3.3
[ ] 3.2
[ ] 3.1
[ ] 3.0
[ ] 2.5

@mergifyio rebase

Any updates on this?

Any updates on this?

fighting on gcc14 compiling, will create a separate PR for branch-3.3/branch-3.2, it should be what you are waiting for.

@mergifyio rebase

@Mergifyio rebase

@mergifyio rebase

@mergifyio rebase


language fallback  problem with versions higher than 5.3.0 (episerver)

Hello,
I use this library with episerver
If I use nuget packages > 5.3.0
Then I see in the admin UI only the 4 main languages that have resources:

so e.g. fallback from nl-BE to nl won't work anymore.
With 5.3.0 I see in the admin UI all languages that exist in Episerver:

now e.g. fallback from en-GB to en works fine

moved issue from core repo.

this is strange, as I cannot repro with 5.4 locally:

do you have similar setup in epi?

yes it looks similar

resources are defined only for the main languages like :
[TranslationForCulture("Naar de homepagina", "nl")]
[TranslationForCulture("À la page d'accueil", "fr")]
[TranslationForCulture("Zur Startseite", "de")]
public static string ToHomepage => "To the homepage";

list of languages is taken from episerver available languages, can you repo with 5.4?

the first screenshot at the top is with 5.4
it only shows 4 languages that have resources
as soon as I change localizationprovider to 5.3.1 or higher, I see this

can you repro this in clean alloy?

yes. same problem (latest nuget versions of everything)

this is even more odd. have exactly the same setup.. no repro. is it possible for you to drop me a link to project repo?

I sent dropbox link to your email

ok, I got it. this might a bit misleading, but you don't need LocalizationProvider.AspNet package when running in Episerver. this is required only for "pure" Asp.Net Mvc apps. which means that you don't need also this fragment:
app.UseDbLocalizationProvider(cfg =>
{
    cfg.DefaultResourceCulture = new CultureInfo("en");
    cfg.ModelMetadataProviders.EnableLegacyMode = () => true;
    cfg.Connection = "EPiServerDB";
});

instead, either you just rely on default settings that are set in Episerver init module, or customize it via following approach:
[InitializableModule]
[ModuleDependency(typeof(InitializationModule))]
public class InitLocalization : IInitializableModule
{
    public void Initialize(InitializationEngine context)
    {
        ConfigurationContext.Setup(_ =>
                                   {
                                       _.ModelMetadataProviders.EnableLegacyMode = () => true;
                                       _.EnableInvariantCultureFallback = true;
                                       _.DefaultResourceCulture = CultureInfo.InvariantCulture;
                                   });

        UiConfigurationContext.Setup(_ =>
                                     {
                                         _.TreeViewExpandedByDefault = true;
                                         _.ShowInvariantCulture = true;
                                     });
    }

    public void Uninitialize(InitializationEngine context)
    {
    }
}

hope this will solve your issues

You don't need LocalizationProvider.AspNet package when running in Episerver.

I see
Unable to uninstall 'LocalizationProvider.AspNet.5.3.0' because 'DbLocalizationProvider.AdminUI.EPiServer.5.3.0,
DbLocalizationProvider.AdminUI.EPiServer.Xliff.5.3.0,
DbLocalizationProvider.EPiServer.5.3.0,
DbLocalizationProvider.EPiServer.JsResourceHandler.5.3.0' depend on it.

I'm lazy.. sorry - you don't need to initialize from aspnet package. run through epi module if you need to customize, or just leave it to defaults..

yes, now it works again.
Thank you very much for your help!

Hello,
sorry to reopen this
now my test resource have fromcode field = 0
and don't get updated anymore ?
SELECT [Id]
      ,[ResourceKey]
      ,[ModificationDate]
      ,[Author]
      ,[FromCode]
      ,[IsModified]
      ,[IsHidden]
  FROM [EPiServerDB_1848eeb6].[dbo].[LocalizationResources]

Id	ResourceKey	ModificationDate	Author	FromCode	IsModified	IsHidden
37	Alloy.Resources.FaqResources.WhatAreYouLookingFor	2019-03-08 10:33:59.290	type-scanner	0	0	0
38	Alloy.Resources.FaqResources.NoMatchingResults	2019-03-08 10:33:59.293	type-scanner	0	0	0
39	Alloy.Resources.FaqResources.MoreInformation	2019-03-08 10:33:59.293	type-scanner	0	0	0
40	Alloy.Resources.FaqResources.ViewAllQuestions	2019-03-08 10:33:59.293	type-scanner	0	0	0
41	Alloy.Resources.FaqResources.BackToTop	2019-03-08 10:33:59.297	type-scanner	0	0	0


Contribution Example for Hacktoberfest 2023

Description
Example of a Pull Request (PR) for Hacktoberfest 2023 event.
Follow the Guidelines & Evaluation Criteria and make sure to include the following statement if you decide to submit your PR as part of the Stack Builders Inc. Hacktoberfest 2023 event.:

As part of Stack Builders Inc. Hacktoberfest 2023 event.

Closing now that Hackoberfest 2023 has finished.


Add Publishing API dashboard

https://trello.com/c/qPIJoZIV/728-publishing-api-metrics-making-visible
Adds a dashboard giving an overview of various Publishing API metrics,
this is expected to be refined once additional database queries are made
available through graphite/collectd.

Can you add a screenshot please?

Merge away.


React WebChat integration misses CSS

I used the standard example to integrate the WebChat into the my React application (default create-react-app) but somehow the css does not work and I searched the internet for hours to find some solution but it seems I am the only one having this problem.

Removing bootstrap from the CSS bundle fixes the chat control, but obviously screws up the rest of the site.

The webchat control doesn't appear to play nicely with the way bootstrap handles tables.
The following hack fixes the problem:

@corinagum thank you . I know found the examples for using CSS-in-JS. But where can I find all the possible properties to edit regarding the WebChat (e.g. the header or the bubbles) or do I now always have to make Middlewares?

The StyleSet Options that are available for branding are viewable here.
If you would prefer to make more detailed styling changes than what's available above, I recommend following the Idiosyncratic manual styling. Please note: subsequent updates to Web Chat could break your idiosyncratic styles, and would have to be updated when Web Chat is bumped.
Middleware is only needed when you want to do custom rendering, where you are adding new DOM elements to the Web Chat component to style your bot.
Hope that helps. :) Please let me know if you have more questions.

Do you know any popular UI frameworks that put margin on .row to prevent CSS conflicts specifically with Bootstrap?

Microsoft is far more expert on the use cases and types of websites that want to use their software than I am.  I just know that bootstrap is super popular.
I also know that many many people are going to open visual studio, create a Web Application from one of the templates, integrate the webchat code per the examples, and it's going to look broken.
Your call on how to address it.  Update the instructions, the samples, change webchat.js or do nothing.

We are thinking to go BEM on CSS subclasses, e.g. row, from-user, etc. What do you think?
Few goals:

People will not abuse the unique name for styling, we want them to try out style options first, then glamor (a.k.a. style set) later. But no CSS today, because we know we are going to break it from time to time
If we decided to support plain CSS file later (by putting specific CSS points in the DOM tree), we don't want to change the subclasses name again
Should we eliminate subclasses and make each of them glamor/CSS-in-JS object?


Error resolving type specified in JSON 'DotNetCheck.Manifest.NuGetFeedVariableMapper, MauiCheck'

multiple issues around this issues occured during installation process of preview 7. All were at least about reading manifest information.

dotnet workload install maui - failed

when reached Installation roll back failed: Failed to install manifest microsoft.net.sdk.android version 30.0.100-preview.7.93: The transaction has aborted.. Deinstallation started.

check-maui - also failed
Error: Error resolving type specified in JSON 'DotNetCheck.Manifest.NuGetFeedVariableMapper, MauiCheck'. Path 'check.variableMappers[0].$type', line 9, position 74.

Now deinstalled SKD 6 Preview7 and steped back to Preview6 and  nothing works anymore.
Any hints

Yes, please update your tool version: dotnet tool update -g redth.net.maui.check

maui-check will now install Preview 7 and Preview 6 is no longer supported to install via maui-check.
You can try a few things if you are having problems with preview7 installation: https://github.com/Redth/dotnet-maui-check/blob/main/README.md#troubleshooting


TypeLoadException: Could not find method due to a type load error

when i play it ,unity show me the error that
TypeLoadException: Could not find method due to a type load error
PhoneCamera.LoadDetector () (at Assets/Scripts/PhoneCamera.cs:159)
PhoneCamera.LoadWorker () (at Assets/Scripts/PhoneCamera.cs:132)
PhoneCamera.Start () (at Assets/Scripts/PhoneCamera.cs:53) ,what's the problem?

I'm guessing InvokeRepeating has troubles finding required method, not sure why. You don't have to use InvokeRepeating to call Detect, but can call it in a while cycle or in Update method. Similar to my new example: https://github.com/Syn-McJ/TFClassify-Unity-Barracuda/blob/master/Assets/Scripts/PhoneCamera.cs#L86


Add GOVERNANCE.md

How is the project governed?
See examples:
https://prometheus.io/governance/
https://github.com/containernetworking/cni/blob/master/GOVERNANCE.md
https://github.com/containerd/project/blob/master/GOVERNANCE.md
https://github.com/envoyproxy/envoy/blob/master/OWNERS.md

GOVERNANCE.md merged