LSP client doesnt seem to respect server's text document sync options

Check for existing issues

[X] Completed

Describe the bug / provide steps to reproduce it
servers can specify how the client should sent document changes: full, incremental, or none. Next LS specifies "full", but Zed seems to be sending incremental updates, which is causing problems with formatting.
steps:
open an elixir project using the Next LS LSP server.
open the RPC logs
open an elixir file
wait for it all to be compiled
make a change
observer that the client sends an incremental update to rather than the full text
// Send:
{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///Users/mitchell/src/btcticker/lib/btcticker_web.ex","languageId":"","version":0,"text":"defmodule BtctickerWeb do\n  @moduledoc \"\"\"\n  The entrypoint for defining your web interface, such\n  as controllers, views, channels and so on.\n\n  This can be used in your application as:\n\n      use BtctickerWeb, :controller\n      use BtctickerWeb, :view\n\n  The definitions below will be executed for every view,\n  controller, etc, so keep them short and clean, focused\n  on imports, uses and aliases.\n\n  Do NOT define functions inside the quoted expressions\n  below. Instead, define any helper function in modules\n  and import those modules here.\n  \"\"\"\n\n  def controller do\n    quote do\n      use Phoenix.Controller, namespace: BtctickerWeb\n\n      import Plug.Conn\n      import BtctickerWeb.Gettext\n      alias BtctickerWeb.Router.Helpers, as: Routes\n    end\n  end\n\n  def view do\n    quote do\n      use Phoenix.View,\n        root: \"lib/btcticker_web/templates\",\n        namespace: BtctickerWeb\n\n      # Import convenience functions from controllers\n      import Phoenix.Controller,\n        only: [get_flash: 1, get_flash: 2, view_module: 1, view_template: 1]\n\n      # Include shared imports and aliases for views\n      unquote(view_helpers())\n    end\n  end\n\n  def live_view do\n    quote do\n      use Phoenix.LiveView,\n        layout: {BtctickerWeb.LayoutView, \"live.html\"}\n\n      unquote(view_helpers())\n    end\n  end\n\n  def live_component do\n    quote do\n      use Phoenix.LiveComponent\n\n      unquote(view_helpers())\n    end\n  end\n\n  def component do\n    quote do\n      use Phoenix.Component\n\n      unquote(view_helpers())\n    end\n  end\n\n  def router do\n    quote do\n      use Phoenix.Router\n\n      import Plug.Conn\n      import Phoenix.Controller\n      import Phoenix.LiveView.Router\n    end\n  end\n\n  def channel do\n    quote do\n      use Phoenix.Channel\n      import BtctickerWeb.Gettext\n    end\n  end\n\n  defp view_helpers do\n    quote do\n      # Use all HTML functionality (forms, tags, etc)\n      use Phoenix.HTML\n\n      # Import LiveView and .heex helpers (live_render, live_patch, <.form>, etc)\n      import Phoenix.LiveView.Helpers\n\n      # Import basic rendering functionality (render, render_layout, etc)\n      import Phoenix.View\n\n      import BtctickerWeb.ErrorHelpers\n      import BtctickerWeb.Gettext\n      alias BtctickerWeb.Router.Helpers, as: Routes\n    end\n  end\n\n  @doc \"\"\"\n  When used, dispatch to the appropriate controller/view/etc.\n  \"\"\"\n  defmacro __using__(which) when is_atom(which) do\n    apply(__MODULE__, which, [])\n  end\nend\n"}}}
{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///Users/mitchell/src/btcticker/lib/btcticker_web.ex","version":1},"contentChanges":[{"range":{"start":{"line":6,"character":0},"end":{"line":6,"character":0}},"text":"\n  "}]}}
{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///Users/mitchell/src/btcticker/lib/btcticker_web.ex","version":2},"contentChanges":[]}}

Environment
Zed: v0.106.0 (preview)
OS: macOS 13.5.2
Memory: 8 GiB
Architecture: aarch64
If applicable, add mockups / screenshots to help explain present your vision of the feature
No response
If applicable, attach your ~/Library/Logs/Zed/Zed.log file to this issue.
If you only need the most recent lines, you can run the zed: open log command palette action to see the last 1000.
2023-09-27T19:36:14 [INFO] ========== starting zed ==========
2023-09-27T19:36:14 [INFO] Opening main db
2023-09-27T19:36:15 [ERROR] crates/settings/src/settings_file.rs:90: EOF while parsing a value at line 1 column 0
2023-09-27T19:36:15 [INFO] Opening main db
2023-09-27T19:36:15 [WARN] request completed with error: failed to resolve host name
2023-09-27T19:36:15 [ERROR] crates/copilot/src/copilot.rs:958: error fetching latest release
Caused by:
0: failed to resolve host name
1: [6] Couldn't resolve host name
2023-09-27T19:36:15 [WARN] request completed with error: failed to resolve host name
2023-09-27T19:36:15 [ERROR] auto-update failed: error:failed to resolve host name
Caused by:
[6] Couldn't resolve host name
2023-09-27T19:36:16 [INFO] set environment variables from shell:/opt/homebrew/bin/zsh, path:/Users/mitchell/zls/zig-out/bin:/Applications/Sublime Text.app/Contents/SharedSupport/bin:/Users/mitchell/go/bin:/Users/mitchell/Library/Python/2.7/bin:/Users/mitchell/Library/Python/3.8/bin:/Users/mitchell/Library/Python/3.9/bin:/Users/mitchell/.cargo/bin:/Users/mitchell/.bin:/opt/homebrew/opt/sqlite/bin:/opt/homebrew/bin/qt@5.5/bin:/Users/mitchell/.local/share/zinit/polaris/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/mitchell/.nix-profile/bin:/run/current-system/sw/bin:/nix/var/nix/profiles/default/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin
2023-09-27T19:37:02 [INFO] open paths ["/Users/mitchell/.config/zed/settings.json"]
2023-09-27T19:37:02 [INFO] Opening main db
2023-09-27T19:37:02 [INFO] starting language server "json-language-server", path: "/Users/mitchell/.config/zed/settings.json", id: 1
2023-09-27T19:37:02 [INFO] Node runtime install_if_needed
2023-09-27T19:37:14 [INFO] Node runtime install_if_needed
2023-09-27T19:37:18 [INFO] Node runtime install_if_needed
2023-09-27T19:37:26 [ERROR] /Users/administrator/actions-runner-2/_work/zed/zed/crates/install_cli/src/install_cli.rs:21: Os { code: 2, kind: NotFound, message: "No such file or directory" }
2023-09-27T19:37:26 [ERROR] /Users/administrator/actions-runner-2/_work/zed/zed/crates/install_cli/src/install_cli.rs:24: Os { code: 13, kind: PermissionDenied, message: "Permission denied" }
2023-09-27T19:38:00 [ERROR] oneshot canceled
2023-09-27T19:38:19 [INFO] build git repository ".git"
2023-09-27T19:38:24 [INFO] starting language server "elixir-ls", path: "/Users/mitchell/src/next_ls", id: 2
2023-09-27T19:38:56 [ERROR] unexpected item event after pane was dropped
2023-09-27T19:38:57 [INFO] 2 unhandled notification window/logMessage:
{
"message": "Started ElixirLS v0.16.0",
"type": 3
}
2023-09-27T19:38:57 [INFO] 2 unhandled notification window/logMessage:
{
"message": "Running in /Users/mitchell/src/next_ls",
"type": 3
}
2023-09-27T19:38:57 [INFO] 2 unhandled notification window/logMessage:
{
"message": "ElixirLS built with elixir "1.15.5" on OTP "26"",
"type": 3
}
2023-09-27T19:38:57 [INFO] 2 unhandled notification window/logMessage:
{
"message": "Running on elixir "1.15.5 (compiled with Erlang/OTP 26)" on OTP "26"",
"type": 3
}
2023-09-27T19:38:57 [INFO] 2 unhandled notification window/logMessage:
{
"message": "Protocols are not consolidated",
"type": 3
}
2023-09-27T19:38:57 [INFO] 2 unhandled notification window/logMessage:
{
"message": "Elixir sources not found (checking in /private/tmp/elixir-20230828-6830-14xd5rx/elixir-1.15.5). Code navigation to Elixir modules disabled.",
"type": 3
}
2023-09-27T19:38:57 [INFO] 2 unhandled notification window/showMessage:
{
"message": "Building core Dialyzer Elixir PLT. This will take a few minutes (often 15+) and can be disabled in the settings.",
"type": 3
}
2023-09-27T19:39:27 [ERROR] unexpected item event after pane was dropped
2023-09-27T19:39:54 [INFO] 2 unhandled notification window/showMessage:
{
"message": "Saved Elixir PLT to /Users/mitchell/.mix/elixir-ls-26.0.2_elixir-1.15.5",
"type": 3
}
2023-09-29T04:25:10 [ERROR] oneshot canceled
2023-09-29T04:25:18 [INFO] ========== starting zed ==========
2023-09-29T04:25:18 [INFO] Opening main db
2023-09-29T04:25:18 [INFO] Opening main db
2023-09-29T04:25:18 [INFO] build git repository ".git"
2023-09-29T04:25:19 [INFO] set environment variables from shell:/opt/homebrew/bin/zsh, path:/Users/mitchell/zls/zig-out/bin:/Applications/Sublime Text.app/Contents/SharedSupport/bin:/Users/mitchell/go/bin:/Users/mitchell/Library/Python/2.7/bin:/Users/mitchell/Library/Python/3.8/bin:/Users/mitchell/Library/Python/3.9/bin:/Users/mitchell/.cargo/bin:/Users/mitchell/.bin:/opt/homebrew/opt/sqlite/bin:/opt/homebrew/bin/qt@5.5/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/mitchell/.local/share/rtx/installs/swift/5.9/bin:/Users/mitchell/.local/share/rtx/installs/elixir/1.14.5-otp-25/bin:/Users/mitchell/.local/share/rtx/installs/elixir/1.14.5-otp-25/.mix/escripts:/Users/mitchell/.local/share/rtx/installs/erlang/<IP_ADDRESS>/bin:/Users/mitchell/.local/share/rtx/installs/neovim/nightly/bin:/Users/mitchell/zls/zig-out/bin:/Applications/Sublime Text.app/Contents/SharedSupport/bin:/Users/mitchell/go/bin:/Users/mitchell/Library/Python/2.7/bin:/Users/mitchell/Library/Python/3.8/bin:/Users/mitchell/Library/Python/3.9/bin:/Users/mitchell/.cargo/bin:/Users/mitchell/.bin:/opt/homebrew/opt/sqlite/bin:/opt/homebrew/bin/qt@5.5/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/mitchell/.local/share/rtx/installs/swift/5.9/bin:/Users/mitchell/.local/share/rtx/installs/elixir/1.14.5-otp-25/bin:/Users/mitchell/.local/share/rtx/installs/elixir/1.14.5-otp-25/.mix/escripts:/Users/mitchell/.local/share/rtx/installs/erlang/<IP_ADDRESS>/bin:/Users/mitchell/.local/share/rtx/installs/neovim/nightly/bin:/opt/homebrew/bin:/Users/mitchell/zls/zig-out/bin:/Applications/Sublime Text.app/Contents/SharedSupport/bin:/Users/mitchell/go/bin:/Users/mitchell/Library/Python/2.7/bin:/Users/mitchell/Library/Python/3.8/bin:/Users/mitchell/Library/Python/3.9/bin:/Users/mitchell/.cargo/bin:/Users/mitchell/.bin:/opt/homebrew/opt/sqlite/bin:/opt/homebrew/bin/qt@5.5/bin:/Users/mitchell/.local/share/zinit/polaris/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/mitchell/.nix-profile/bin:/run/current-system/sw/bin:/nix/var/nix/profiles/default/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin
2023-09-29T04:25:20 [INFO] Node runtime install_if_needed
2023-09-29T04:25:20 [INFO] 0 unhandled notification LogMessage:
{
"level": 0,
"message": "[DEBUG] [agent] [2023-09-29T04:25:20.851Z] Agent service starting",
"metadataStr": "[DEBUG] [agent] [2023-09-29T04:25:20.851Z]",
"extra": [
"Agent service starting"
]
}
2023-09-29T04:25:20 [INFO] 0 unhandled notification client/registerCapability:
{
"registrations": [
{
"id": "5e6efcb2-46d3-4663-9fff-f6380eafe61e",
"method": "workspace/didChangeWorkspaceFolders",
"registerOptions": {}
}
]
}
2023-09-29T04:25:20 [INFO] 0 unhandled notification LogMessage:
{
"level": 0,
"message": "[DEBUG] [agent] [2023-09-29T04:25:20.860Z] Telemetry initialized",
"metadataStr": "[DEBUG] [agent] [2023-09-29T04:25:20.860Z]",
"extra": [
"Telemetry initialized"
]
}
2023-09-29T04:25:23 [INFO] Opening main db
2023-09-29T04:25:23 [INFO] starting language server "next-ls", path: "/Users/mitchell/src/btcticker", id: 1
2023-09-29T04:25:28 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:28 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:28 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:28 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:28 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:29 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:29 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:29 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:31 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:31 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:32 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:33 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:34 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:35 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:35 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:35 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:35 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:35 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:35 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:35 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:35 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:35 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:35 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:36 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:36 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:36 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:36 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:36 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:36 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:36 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:36 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:36 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:36 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:25:36 [ERROR] error reading file on event No such file or directory (os error 2)
2023-09-29T04:26:34 [ERROR] unexpected item event after pane was dropped
2023-09-29T04:27:08 [ERROR] unexpected item event after pane was dropped
2023-09-29T04:27:36 [ERROR] unexpected item event after pane was dropped
2023-09-29T04:28:02 [INFO] open paths ["/Users/mitchell/.config/zed/keymap.json"]
2023-09-29T04:28:02 [INFO] starting language server "json-language-server", path: "/Users/mitchell/.config/zed/keymap.json", id: 2
2023-09-29T04:28:02 [INFO] Node runtime install_if_needed
2023-09-29T04:28:04 [INFO] Node runtime install_if_needed
2023-09-29T04:28:04 [ERROR] unexpected item event after pane was dropped
2023-09-29T04:28:04 [ERROR] crates/project/src/project.rs:2822: no worktree found for diagnostics path "/Users/mitchell/.config/zed/keymap.json"
2023-09-29T04:28:07 [WARN] request completed with error: request or operation took longer than the configured timeout time
2023-09-29T04:28:07 [ERROR] request or operation took longer than the configured timeout time
Caused by:
[28] Timeout was reached
2023-09-29T04:30:53 [ERROR] unexpected item event after pane was dropped
2023-09-29T04:33:15 [WARN] request completed with error: request or operation took longer than the configured timeout time
2023-09-29T04:33:15 [ERROR] request or operation took longer than the configured timeout time
Caused by:
[28] Timeout was reached

This should be fixed in v0.106.2 :)

Thank you!


Chapter 11 RGB vs GRB

NeoPixels are traditionally GRB buffer order, but your code is written for RGB colour order buffering.
set_led(0, 255, 0, 0) therefore turns on the green LED, and set_led(0, 0, 255, 0) turns on the red LED, incorrectly, using an Adafruit neopixel ring.
I modified the example thus, to get the correct colours
pixels[led] = (green << 16) + (red << 8) + blue
Your example only uses white or random colours, so you would not have noticed this in your testing.

Thanks David.
I need to do a new printing, there are a few things that need fixing.
How are things with you?
We've been quite busy with our granddaughter, and trying to reduce work to
3 days a week. But all good.
All the best,
Si.
On Thu, 16 Jun 2022 at 16:56, David Whale @.***> wrote:

NeoPixels are traditionally GRB buffer order, but your code is written for
RGB colour order buffering.
set_led(0, 255, 0, 0) therefore turns on the green LED, and set_led(0, 0,
255, 0) turns on the red LED, incorrectly, using an Adafruit neopixel ring.
I modified the example thus, to get the correct colours
pixels[led] = (green << 16) + (red << 8) + blue
Your example only uses white or random colours, so you would not have
noticed this in your testing.
—
Reply to this email directly, view it on GitHub
https://github.com/simonmonk/prog_pico_ed1/issues/2, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAQC6UK4DAIP4LLL6T7IRL3VPNFCXANCNFSM5Y7I7YZA
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

--
http://simonmonk.org
@simonmonk2

Simon, if you want a hand tech-editing/testing the new edition of the book, email me and we can sort something out. I've used the 1st edition quite a lot now with students, and have some constructive feedback, I think!


chore: Update dependabot

Update the dependabot config again
Closes #412
Closes #414
Closes #422

bors r+


Selected text in light themes is nearly unreadable

We've discussed a few different solutions to get this effect to look good in light themes.
One possibility: we change the default "plain text" color to something lighter when it's selected, maybe white or similar.

Just did a quick inspect in dev mode, it looks like all we need to do is override this selector for selected text as follows:
atom-text-editor, :host {
color: white;
}
basically, this is what a light theme's relevant css would be similar to:
atom-text-editor,
:host {
  background-color: #ffffff;
  color: #1d1f21;

Addressed in a quick and dirty fashion by 67eef39
As a quick patch, I've added this style:
:host {
&::shadow {
.selection .region {
color:white;
}
}

Tested, and the above doesn't actually work. Discussed with mhulse, and we decided to make alternate palette options for light and dark themes.

With regards to changing the body class: This won't work, because the body tag is overridden by the UI theme (for interface outside of editor) and Syntax theme (for UI inside the editor). The path, just FYI, is /html/body/atom-workspace/atom-workspace-axis/atom-workspace-axis/atom-pane-container/atom-pane/div/atom-text-editor-- body is WAY outside the atom-text-editor tree that we use to style!
Instead of body, could we target atom-text-editor (which is a tag, not a class)? Or maybe
atom-text-editor,
:host

Here's an interesting discussion on the topic with relevant info.

I'm working on a test that involves the use of  :host-context(.magical-selection-light) and :host-context(.magical-selection-dark).
Some info on theming elements in the shadow DOM:
The :host-context() pseudo class matches the host element if it or any of its ancestors matches .
A common use of :host-context() is for theming an element based on its surrounds. For example, many people do theming by applying a class to  or :

You can :host-context(.different) to style  when it's a descendant of an element with the class .different:
:host-context(.different) {
  color: red;
}
This gives you the ability encapsulate style rules in an element's Shadow DOM that uniquely style it, based on its context.

70d7427 resolves this issue by adding unique @keyframes for light and dark options, and adding a "Go Dark" option to the plugin settings to choose between the two.


Multilingual Menu not rendering

Please use https://discourse.gohugo.io/ for questions/troubleshooting. Also see  Hugo Documentation.


Revert 3 jenkins task

@MihailInternul Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.


BUG: Issue with Mobile Responsiveness on Review Us Page

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
Hello @subhadeeproy3902 ,
The Issue is:
I have identified an issue with the "Review Us" page on mobile devices. The content appears to overflow outside the frame, causing misalignment and readability issues. I have attached a screenshot for better understanding.
I would like to fix this issue to ensure proper alignment and improve the mobile user experience. Please assign this issue to me, and I will work on resolving it promptly.
Looking forward to your response.
Attachment: Screenshot of the "Review Us" page on mobile devices

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

There is an existing issue @Aniket-2504

no worries , sorry for that


realtime machine learning scoring engine

User story:

Allow user to submit a machine learning topology by REST.
The gearpump environment classpath should be clean and not affect user app.
For different processor, it may use different algorithm, and the algorithm is hosted in different jars. So the topology should be able to support multiple jars.
User can dynamically swap one algorithm implementation by providing a new jar, without impacting other algorithm.
Need to support a RPC like question and answer. For each data point, the topology should be able to return a score.

Feature completed.


Documentation on pip install in edit mode - for local development

Need to write up some guidelines for using packages that are in development. Here are my notes from chatting with @rmarkello at Neurohackademy.
You can install them via pip by typing:
pip install -e .
from inside of the local clone of the repository.
What's crazy magic about this is that it "installs" the package BUT it installs it by adding symlinks to the local clone of the project. So this means that when you CHANGE a file in the folder it will automatically be changed in your python environment.
😱 🙀 🙌 ✨ 🍰 😎
When you checkout a different branch in the local clone these links will automatically update.

Here's some more useful information, related to installing things:
If you want to install a package from github you can type:
pip install git+https://git.example.com/MyProject
If you want a particular version:
pip install<EMAIL_ADDRESS>Here's the docs file: https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support

If you get messed up with various packages, you can pip uninstall the package and start again 😌
pip uninstall BrainNetworksInPython

This is pretty cool, we should add it to "documentation for contributors" for BrainNetworksInPython


HDFS-15374. Add documentation for command fedbalance.

HDFS-15374. Add documentation for command fedbalance.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 32s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+0 :ok:
markdownlint
0m  0s
markdownlint was not available.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ trunk Compile Tests _

+0 :ok:
mvndep
1m 10s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
20m  6s
trunk passed

+1 :green_heart:
mvnsite
2m 36s
trunk passed

+1 :green_heart:
shadedclient
37m 55s
branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 26s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
2m 25s
the patch passed

+1 :green_heart:
mvnsite
2m 23s
the patch passed

-1 :x:
whitespace
0m  0s
The patch has 6 line(s) that end in whitespace. Use git apply --whitespace=fix <<patch_file>>. Refer https://git-scm.com/docs/git-apply

+1 :green_heart:
xml
0m  2s
The patch has no ill-formed XML file.

+1 :green_heart:
shadedclient
13m 50s
patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
asflicense
0m 32s
The patch does not generate ASF License warnings.

59m 48s

Subsystem
Report/Notes

Docker
ClientAPI=1.40 ServerAPI=1.40 base: https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/2035

Optional Tests
dupname asflicense mvnsite xml markdownlint

uname
Linux c9caa8420966 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / c30c23cb665

whitespace
https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/1/artifact/out/whitespace-eol.txt

Max. process+thread count
414 (vs. ulimit of 5500)

modules
C: hadoop-project hadoop-tools U: .

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/1/console

versions
git=2.17.1 maven=3.6.0

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 31s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+0 :ok:
markdownlint
0m  0s
markdownlint was not available.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ trunk Compile Tests _

+0 :ok:
mvndep
1m  5s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
19m 14s
trunk passed

+1 :green_heart:
mvnsite
2m 31s
trunk passed

+1 :green_heart:
shadedclient
36m 45s
branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 25s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
2m 23s
the patch passed

+1 :green_heart:
mvnsite
2m 17s
the patch passed

-1 :x:
whitespace
0m  0s
The patch has 14 line(s) that end in whitespace. Use git apply --whitespace=fix <<patch_file>>. Refer https://git-scm.com/docs/git-apply

+1 :green_heart:
xml
0m  1s
The patch has no ill-formed XML file.

+1 :green_heart:
shadedclient
13m 33s
patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
asflicense
0m 32s
The patch does not generate ASF License warnings.

58m 12s

Subsystem
Report/Notes

Docker
ClientAPI=1.40 ServerAPI=1.40 base: https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/2/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/2035

Optional Tests
dupname asflicense mvnsite xml markdownlint

uname
Linux f885cd2acc00 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / b2200a33a6c

whitespace
https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/2/artifact/out/whitespace-eol.txt

Max. process+thread count
421 (vs. ulimit of 5500)

modules
C: hadoop-project hadoop-tools U: .

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/2/console

versions
git=2.17.1 maven=3.6.0

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

Hi @goiri , very sorry for my late response. Since the fedbalance function was still changing I wanted to update the doc until the fedbalance was finished. Now the fedbalance is done so I update the doc.
Some changes:

The option -router and -forceCloseOpen are changed to without arg.
A new option -delay is added.
Other comments are also addressed.
Add a title in the mount table to differentiate the command and the mount point.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 31s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+0 :ok:
markdownlint
0m  0s
markdownlint was not available.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ trunk Compile Tests _

+0 :ok:
mvndep
1m  3s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
18m 55s
trunk passed

+1 :green_heart:
mvnsite
0m 52s
trunk passed

+1 :green_heart:
shadedclient
34m 43s
branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 25s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
0m 38s
the patch passed

+1 :green_heart:
mvnsite
0m 36s
the patch passed

-1 :x:
whitespace
0m  0s
The patch has 11 line(s) that end in whitespace. Use git apply --whitespace=fix <<patch_file>>. Refer https://git-scm.com/docs/git-apply

+1 :green_heart:
xml
0m  1s
The patch has no ill-formed XML file.

+1 :green_heart:
shadedclient
13m 33s
patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
asflicense
0m 31s
The patch does not generate ASF License warnings.

52m 41s

Subsystem
Report/Notes

Docker
ClientAPI=1.40 ServerAPI=1.40 base: https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/3/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/2035

Optional Tests
dupname asflicense mvnsite xml markdownlint

uname
Linux 22891428a048 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / 9cbd76cc775

whitespace
https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/3/artifact/out/whitespace-eol.txt

Max. process+thread count
413 (vs. ulimit of 5500)

modules
C: hadoop-project hadoop-tools/hadoop-federation-balance U: .

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/3/console

versions
git=2.17.1 maven=3.6.0

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

Refer fedbalance-site.xml in the doc.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
21m 51s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+0 :ok:
markdownlint
0m  0s
markdownlint was not available.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ trunk Compile Tests _

+0 :ok:
mvndep
0m 59s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
19m 12s
trunk passed

+1 :green_heart:
mvnsite
0m 54s
trunk passed

+1 :green_heart:
shadedclient
35m  3s
branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 28s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
0m 40s
the patch passed

+1 :green_heart:
mvnsite
0m 37s
the patch passed

-1 :x:
whitespace
0m  0s
The patch has 11 line(s) that end in whitespace. Use git apply --whitespace=fix <<patch_file>>. Refer https://git-scm.com/docs/git-apply

+1 :green_heart:
xml
0m  2s
The patch has no ill-formed XML file.

+1 :green_heart:
shadedclient
13m 55s
patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
asflicense
0m 31s
The patch does not generate ASF License warnings.

74m 48s

Subsystem
Report/Notes

Docker
ClientAPI=1.40 ServerAPI=1.40 base: https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/4/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/2035

Optional Tests
dupname asflicense mvnsite xml markdownlint

uname
Linux 0e84689aea83 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / 9821b94c946

whitespace
https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/4/artifact/out/whitespace-eol.txt

Max. process+thread count
420 (vs. ulimit of 5500)

modules
C: hadoop-project hadoop-tools/hadoop-federation-balance U: .

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/4/console

versions
git=2.17.1 maven=3.6.0

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 30s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+0 :ok:
markdownlint
0m  0s
markdownlint was not available.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ trunk Compile Tests _

+0 :ok:
mvndep
0m 26s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
19m 13s
trunk passed

+1 :green_heart:
mvnsite
0m 52s
trunk passed

+1 :green_heart:
shadedclient
34m 31s
branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 26s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
0m 40s
the patch passed

+1 :green_heart:
mvnsite
0m 37s
the patch passed

+1 :green_heart:
whitespace
0m  0s
The patch has no whitespace issues.

+1 :green_heart:
xml
0m  1s
The patch has no ill-formed XML file.

+1 :green_heart:
shadedclient
13m 46s
patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
asflicense
0m 31s
The patch does not generate ASF License warnings.

52m 43s

Subsystem
Report/Notes

Docker
ClientAPI=1.40 ServerAPI=1.40 base: https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/5/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/2035

Optional Tests
dupname asflicense mvnsite xml markdownlint

uname
Linux 041c9178452d 4.15.0-60-generic #67-Ubuntu SMP Thu Aug 22 16:55:30 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / b2facc84a1b

Max. process+thread count
422 (vs. ulimit of 5500)

modules
C: hadoop-project hadoop-tools/hadoop-federation-balance U: .

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/5/console

versions
git=2.17.1 maven=3.6.0

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 30s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+0 :ok:
markdownlint
0m  0s
markdownlint was not available.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ trunk Compile Tests _

+0 :ok:
mvndep
0m 26s
Maven dependency ordering for branch

+1 :green_heart:
mvninstall
18m 53s
trunk passed

+1 :green_heart:
mvnsite
0m 53s
trunk passed

+1 :green_heart:
shadedclient
33m 59s
branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+0 :ok:
mvndep
0m 26s
Maven dependency ordering for patch

+1 :green_heart:
mvninstall
0m 39s
the patch passed

+1 :green_heart:
mvnsite
0m 36s
the patch passed

+1 :green_heart:
whitespace
0m  0s
The patch has no whitespace issues.

+1 :green_heart:
xml
0m  2s
The patch has no ill-formed XML file.

+1 :green_heart:
shadedclient
13m 52s
patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
asflicense
0m 31s
The patch does not generate ASF License warnings.

52m 17s

Subsystem
Report/Notes

Docker
ClientAPI=1.40 ServerAPI=1.40 base: https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/6/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/2035

Optional Tests
dupname asflicense mvnsite xml markdownlint

uname
Linux cf9bcbcc0783 4.15.0-60-generic #67-Ubuntu SMP Thu Aug 22 16:55:30 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
personality/hadoop.sh

git revision
trunk / 201d734af39

Max. process+thread count
422 (vs. ulimit of 5500)

modules
C: hadoop-project hadoop-tools/hadoop-federation-balance U: .

Console output
https://builds.apache.org/job/hadoop-multibranch/job/PR-2035/6/console

versions
git=2.17.1 maven=3.6.0

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

The review is done in HDFS-15374, so let's close this PR.


[BUG] A force-formatted disk was not added as an additional data volume

Describe the bug
A force-formatted disk was not added as an additional data volume successfully.

To Reproduce
Steps to reproduce the behavior:

Select an additional disk that already has a partition and filesystem type
Set the force-formatted to true
click save and check the node disks again
no additional disk was added to the LH side

Issue:
We should provisioning the single root partition after force-format instead of the original block device.
e.g that should be /dev/sdb1 instead of the /dev/sdb

Expected behavior
The force-formatted disk should be added as an additional data disk.
Support bundle

Environment:

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

Expected behavior
The force-formatted disk should be added as an additional data disk.

The Expected behavior been verified in #1240 , for raw disk without partition, it is not allowed to be added as a additional disk.

Test Information

Environment: Laptop qemu/KVM single node
Harvester Version: v0.3.0-rc1

Verify Steps:

create VM with 2 disks
Install Harverster
login to console, use lsblk to check 2nd disk don't have any partition
open dashboard, navigate to host's disk section, check raw disk such like /dev/sdb is not allowed to be added
login to console, use fdisk to create a partition on 2nd disk
open dashboard, navigate to host's disk section, check raw disk such like /dev/sdb is still not allowed to be added

The UI and error message still enhance-able, I would check related issues and open one if needed.


BIGTOP-3374. Add dependencies on the utilities provided by Bigtop to bigtop.bom.

As a simple test, I ran ./gradlew hadoop-pkg -Dbuildwithdeps=true with this PR and confirmed it built bigtop-groovy, bigtop-jsvc and bigtop-utils in addition to zookeeper.

LGTM, +1

Thanks! Merged on master.


[WIP]DenseNet Generator #331

This pull request resolves #331 .
The pull request is in progress.
The details of the pull request:
Add a dense net generator

Pull Request Test Coverage Report for Build 1073

71 of 71 (100.0%)  changed or added relevant lines in 3 files are covered.
9 unchanged lines in 4 files lost coverage.
Overall coverage increased (+0.003%) to 94.089%

Files with Coverage Reduction
New Missed Lines
%

autokeras/net_transformer.py
1
95.24%

autokeras/bayesian.py
2
93.24%

autokeras/nn/graph.py
2
97.44%

autokeras/nn/layer_transformer.py
4
96.08%

Totals

Change from base Build 1072:
0.003%

Covered Lines:
2881

Relevant Lines:
3062

💛  - Coveralls


remove build on pre-commit hook

Warnings

:warning:

Changes were made to package.json, but not to package-lock.json - Perhaps you need to run npm run install?

  Generated by :no_entry_sign: dangerJS against a1e5c4e36320735f97fbf0939a01e2d28422f9e7


Does the CustomServersClient work with 2020.12.9s?

I can not get it to work in the newest version. Either i am doing something wrong or the mod has been patched. Any info on this?

The mod still works well, I see some problems when putting it with the other mod but I managed to solve it, if you are trying to do this, delete the BelpnEx folder, download the BelpnEx they sent and the files too, put everything in the Among Us, open Among Us and it should be working

I'm having trouble getting this to work. In the bottom right of have that manager servers button but no idea how to add servers to it

Now it does ig


[tele5] extractor writes two .info.json files

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm reporting that yt-dlp is broken on a supported site
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[ ] I've read about sharing account credentials and I'm willing to share it if required

Region
Germany
Provide a description that is worded well enough to be understood
The tele5 extractor is writing two .info.json files if called with --write-info-json, which makes post processing the .info.json information a bit fragile.
The tele5 extractor uses the DiscoveryPlus extractor, which may be the reason.
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
[debug] Command-line config: ['-vU', '--skip-download', '--write-info-json', 'https://tele5.de/mediathek/die-braut-des-prinzen']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>from yt-dlp/yt-dlp [7ead7332a]
[debug] Lazy loading extractors is disabled
[debug] Python 3.12.4 (CPython arm64 64bit) - macOS-14.5-arm64-arm-64bit (OpenSSL 3.3.1 4 Jun 2024)
[debug] exe versions: ffmpeg 4.4.4 (fdk,setts), ffprobe 4.4.4, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2024.07.04, mutagen-1.47.0, requests-2.32.3, sqlite3-3.46.0, urllib3-2.2.2, websockets-12.0, xattr-1.1.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1834 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version<EMAIL_ADDRESS>from yt-dlp/yt-dlp
yt-dlp is up to date<EMAIL_ADDRESS>from yt-dlp/yt-dlp)
[Tele5] Extracting URL: https://tele5.de/mediathek/die-braut-des-prinzen
[Tele5] mediathek-die-braut-des-prinzen: Downloading JSON metadata
[download] Downloading playlist: mediathek-die-braut-des-prinzen
[debug] Using fake IP <IP_ADDRESS> (DE) as X-Forwarded-For
[Tele5] 7162307: Downloading token
[Tele5] 7162307: Downloading JSON metadata
[Tele5] 7162307: Downloading JSON metadata
[Tele5] 7162307: Downloading m3u8 information
[info] Writing playlist metadata as JSON to: NA [mediathek-die-braut-des-prinzen].info.json
[Tele5] Playlist mediathek-die-braut-des-prinzen: Downloading 1 items of 1
[download] Downloading item 1 of 1
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, size, br, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7162307: Downloading 1 format(s): hls-10323+hls-audio-aacl-125-English
[info] Writing video metadata as JSON to: Die Braut des Prinzen [7162307].info.json
[info] Writing updated playlist metadata as JSON to: NA [mediathek-die-braut-des-prinzen].info.json
[download] Finished downloading playlist: mediathek-die-braut-des-prinzen

Try --no-write-playlist-metafiles.

Thanks, works for me.
But shouldn't the playlist metadata be written into the same file as the video metadata?

For whatever reason, the extractor is returning a 1-item playlist instead of the playlist item.
I expect that the behaviour is as it is because it wouldn't be desirable to include the playlist metadata in the info JSON for every video in a (long, especially) playlist, given that separate files could be merged with an external tool like jq if desired.
Some extractors that return playlists end with this pattern:
    if playlist has exactly one entry
        set relevant default metadata into the entry from the playlist
        return entry
    return playlist

But this surely can't be generalised reliably enough to be applied automatically.

diff --git a/yt_dlp/extractor/tele5.py b/yt_dlp/extractor/tele5.py
index a45537541..599d79e9e 100644
--- a/yt_dlp/extractor/tele5.py
+++ b/yt_dlp/extractor/tele5.py
@@ -65,9 +65,15 @@ def _real_extract(self, url):
             query['filter[show.slug]'] = slug_a
         cms_data = self._download_json(f'https://de-api.loma-cms.com/feloma/{endpoint}/', playlist_id, query=query)

+        video_ids = traverse_obj(cms_data, ('blocks', ..., 'videoId', {str}))
+
+        if len(video_ids) == 1:
+            return self._get_disco_api_info(
+                url, video_ids[0], disco_host='eu1-prod.disco-api.com', realm='dmaxde', country='DE')
+
         return self.playlist_result(map(
             functools.partial(self._get_disco_api_info, url, disco_host='eu1-prod.disco-api.com', realm='dmaxde', country='DE'),
-            traverse_obj(cms_data, ('blocks', ..., 'videoId', {str}))), playlist_id)
+            video_ids), playlist_id)

     def _update_disco_api_headers(self, headers, disco_base, display_id, realm):
         headers.update({

Works - and this is exactly how I'd expect the extractor to work.
Thanks again!


[Pulsar-admin] Delete namespace can't delete topics

Expected behavior
delete namespace and delete all topics belongs to this namespace
Actual behavior
namespace deleted but topics not deleted and when i delete topic manual, i got
Reason: Policies not found for data/demension namespace

Steps to reproduce
1.Delete the namespace (Has topics in this namespace)
2../pulsar-admin topics list-partitioned-topics namespace
3.Delete the topic got before.
System configuration
Pulsar version: 2.2.0-SNAPSHOT

Should add check for delete namespace interface.
If namespace has topics, delete topic process will failed by message 'The namespace still have topics'


Batch resolve pin urls

Dependency: deploy after PR #1205
Ticket: #1189
This version includes both the resolve and claim_search version.  Flip between the 2 using USE_CLAIM_SEARCH.
:warning: It's currently using resolve (despite buggy) because pin URLs are canonical and I don't know how to derive the claim ID from that -- I don't think there an option to pass urls to claim_search?

yea, no way to pass urls to claim search. How can we properly cutover so it works on both here+android?  Make a new pinnedIds?

Notes for Drew

Move from pinnedUrls to pinnedClaimIds.  pinnedClaimIds: [
  '52582e3e30c2367866a62c7375dd3373f0dbe5fa',
],

If both are defined, pinnedUrls take precedence. Currently, pinnedUrls might not appear correctly due to an SDK bug.
Do switch to pinnedClaimIds for all homepages.

Notes for Tom
If merged now, the existing homepages would be using batched resolve instead of claim_search, until the homepages are updated to use claim ID.
  (1) pinnedUrls     --> uses doResolveUris (resolve)
  (2) pinnedClaimIds --> uses doResolveClaimIds (claim_search)

Notes for tester (Rafael?)
I've tested as much as I can, but another set of eyes on the code would be helpful.  If want to execute the code itself:

Add USE_LOCAL_HOMEPAGE_DATA=true into your local env, otherwise it will fetch instead.
Copy the homepage files from the homepage repo into /custom as usual, and make modifications.
Edit the homepage (e.g. odysee-en.js) to use pinnedClaimIds instead as noted in the Drew notes above.
I mostly tested by going into /$/help, refresh (to clear claim cache), and let the unrelated /claim_search|resolve/ settle in devtools.  Clear dev tools, then from the sidebar:

Click home to test out ClaimTileDiscover.  Also customized to just 1 category to reduce log clutter.
Click a category to test out ClaimListDiscover.

Resolved IDs will be excluded from the API call, hence the need to refresh.


Logical theme system example: IP based access permissions

As per https://github.com/BookStackApp/BookStack/issues/3374#issuecomment-1140344900, re-purposing this to provide a logical theme system example.

Describe the feature you'd like
Hello
Thanks for building BookStack
I would like to see an option to limit the access for some /pages/books/shelves based on (public) viewer public IP address so it will check with a list of IPs in the settings that you already provided the works as whitelist.
Describe the benefits this would bring to existing BookStack users
For instance you have a public BookStack on your server and it's publicly available to everyone but there are pages and books and you don't want people to see/access so you set custom permissions for it but each time for accessing it you have to login, which is no problem for one or two device but for like 10 or more in the office it's nightmarish and imagine you have multi-factor authentication enabled as well.
So, how it will help? well in those cases all those devices are on the same network so will have the same public IP address and BookStack will override the custom permissions and let them access/see the pages/books/shelves that are not publicly available for the IP addresses that are not in the whitelist even though the user did not logged in.
Can the goal of this request already be achieved via other means?
Not sure.
Have you searched for an existing open/closed issue?

[ ] I have searched for existing issues and none cover my fundemental request

How long have you been using BookStack?
0 to 6 months
Additional context
No response

Duplicate :/

Updated the issue details and re-opening as a task for myself to provide an example.

Hi @AuthorShin,
As promised, here's an example of using the Logical theme system to enable this functionality in some form.
The below enables auto-login to specific user accounts based upon certain IP addresses.
Setup
You should already have a themes/ folder within your BookStack directory.
Within this create a custom directory, then within that create a functions.php file with the code from the below themes/custom/functions.php section.
Within your BookStack .env file, add the below line to set your theme folder:
APP_THEME=custom

Within your themes/custom/functions.php file, You can edit the IP-address mapping on around lines 17-19 (Within the $userIdsByIp array). This functions.php file is fully commented to describe what each section does.
The way this is done means that you can still login via another user by going directly to the /login path on your instance if required.
Note: This is essentially an unsupported functionality addition. There may be logical holes in usage and this could break upon future updates.
themes/custom/functions.php file
<?php

use BookStack\Auth\User;
use BookStack\Facades\Theme;
use BookStack\Theming\ThemeEvents;
use Illuminate\Http\Request;

// Register a new web-middleware-before hook to authenticate as a specific user depending
// on IP address. Takes a request and always returns null to indicate we don't want to
// change the response provided back to the user.
Theme::listen(ThemeEvents::WEB_MIDDLEWARE_BEFORE, function (Request $request) {

    // A mapping of IP addresses to system user IDs.
    // You can add multiple entries here to map many IPs to user accounts.
    // In this example, requests coming from the IP '<IP_ADDRESS>' will be logged
    // in as the user with an ID of '3' in the database.
    $userIdsByIp = [
        '<IP_ADDRESS>' => 3,
    ];

    // A list of path prefixes we want to ignore to allow some normal auth activities (e.g. Login)
    $ignorePathsPrefixes = ['login', 'register', 'password'];

    // Gather the path and IP of the current request
    $path = $request->path();
    $ip = $request->ip();

    // Track whether the request is allowed for our auto-ip-login logic based upon checking
    // the request path against the above $ignorePathsPrefixes
    $autoLoginPath = true;
    foreach ($ignorePathsPrefixes as $pathPrefix) {
        if (strpos($path, $pathPrefix) === 0) {
            $autoLoginPath = false;
        }
    }

    // If we're already logged-in, don't attempt any login logic and quit out early.
    // If the path is not an auto-login path, and they're using an auto-login IP,
    // log the user out to allow access to normal login functions if desired.
    if (auth()->check()) {
        if (isset($userIdsByIp[$ip]) && !$autoLoginPath) {
            auth()->logout();
        }
        return null;
    }

    // If the current IP address is in our '$userIdsByIp' mapping, and if the path is
    // an auto-login path, look-up the user and log them in. This will force a
    // failure if the user ID is not found in the system.
    if (isset($userIdsByIp[$ip]) && $autoLoginPath) {
        $userId = $userIdsByIp[$ip];
        $user = User::query()->findOrFail($userId);
        auth()->login($user);
    }

    return null;
});

Since the above has been provided I'll therefore close this off but feel free to still comment here if you have questions or need additional guidance.

Thanks a lot man for the time and effort.
Is this supposed to work if the BookStack is installed as a Docker container?

@ssddanbrown
Thanks a lot man for the time and effort.
Is this supposed to work if the BookStack is installed as a Docker container?

@AuthorShin Being a docker container should not make too much of a difference, as long as you can access the relevant themes folder. If you're not sure let me know what container image you're using and I'll double check their setup.

@AuthorShin It sounds like the functions.php theme file is just not being used.

I setup the themes folder

How/where did you set this up?
For the versions of the linuxserver/bookstack image that support the themes folder, the themes folder should already exist at www/themes within your mounted volume targeting /config in the container.
What version of BookStack are you using? It may be you're currently still using an older container image.
It's since a mid-march image using BookStack v22.02.3 that themes have been supported with linuxserver.io.

I had v22.04.2 now I updated it to the latest version v22.06.1.

How/where did you set this up?
Here which is on casaOS:

And about functions.php file it's in the exact path that you mentioned (www/themes).

@ssddanbrown
www/themes/custom/functions.php  or  www/themes/functions.php ?
I used www/themes/custom/functions.php .

Should I change ID=3 in the following?
   $userIdsByIp = [         'MyPublicAddress' => 3,     ];

www/themes/custom/functions.php is correct.

Should I change ID=3 in the following?

Yeah, the number should be the ID of the user you want to be logged in for that IP address.
The user ID can be found in the URL when editing a user as an admin.

And there is another question which is unrelated.
Isn't custom permissions suppose to limit access to that shelve/book that we apply them to and the books/pages that they contain?
For example I add custom permissions on a shelve named Debra and within that we have 2 books named Work and Home which each containing a lot of chapters and pages. the shelve (Debra) access is limited and I cannot be accessed without logging in but on 'My Recently Viewed' and 'Recently Updated Pages' those pages and books with show up and if I click on them they will be open.
Actually just the shelve page itself is limited not anything inside it.

Isn't custom permissions suppose to limit access to that shelve/book that we apply them to and the books/pages that they contain?

This is detailed in our docs here:
https://www.bookstackapp.com/docs/user/roles-and-permissions/#content-level-permissions
Specifically:

Custom permissions applied to books or chapters will auto-cascade to all child content within, unless that content has its own custom permissions.
Custom permissions applied to shelves will not auto-cascade, due to the many-to-many relation to books, but they can be copied to all child books in a single action where required.

This is also mentioned as a warning message when applying shelf custom permissions.

@AuthorShin Are you testing while still logged in?

Why logged in? The whole idea is to access it with specific IP without the need to login.

@AuthorShin I was just making sure, in case you were expecting to re-log-you-in as another user.
Maybe the logic is not running at all, Could you made the below change temporarily (Adding the dd( line)? This should break BookStack display and show a message instead. If not then the theme system is not running.
// BEFORE
Theme::listen(ThemeEvents::WEB_MIDDLEWARE_BEFORE, function (Request $request) {

// AFTER
Theme::listen(ThemeEvents::WEB_MIDDLEWARE_BEFORE, function (Request $request) {
    dd('This is working!');

@AuthorShin I was just making sure, in case you were expecting to re-log-you-in as another user.
Maybe the logic is not running at all, Could you made the below change temporarily (Adding the dd( line)? This should break BookStack display and show a message instead. If not then the theme system is not running.
// BEFORE
Theme::listen(ThemeEvents::WEB_MIDDLEWARE_BEFORE, function (Request $request) {

// AFTER
Theme::listen(ThemeEvents::WEB_MIDDLEWARE_BEFORE, function (Request $request) {
    dd('This is working!');

This is my functions.php file right now:
<?php

use BookStack\Auth\User;
use BookStack\Facades\Theme;
use BookStack\Theming\ThemeEvents;
use Illuminate\Http\Request;

// Register a new web-middleware-before hook to authenticate as a specific user depending
// on IP address. Takes a request and always returns null to indicate we don't want to
// change the response provided back to the user.
Theme::listen(ThemeEvents::WEB_MIDDLEWARE_BEFORE, function (Request $request) {
    dd('This is working!');
    // A mapping of IP addresses to system user IDs.
    // You can add multiple entries here to map many IPs to user accounts.
    // In this example, requests coming from the IP '<IP_ADDRESS>' will be logged
    // in as the user with an ID of '3' in the database.
    $userIdsByIp = [
        '<IP_ADDRESS>' => 3,
    ];

    // A list of path prefixes we want to ignore to allow some normal auth activities (e.g. Login)
    $ignorePathsPrefixes = ['login', 'register', 'password'];

    // Gather the path and IP of the current request
    $path = $request->path();
    $ip = $request->ip();

    // Track whether the request is allowed for our auto-ip-login logic based upon checking
    // the request path against the above $ignorePathsPrefixes
    $autoLoginPath = true;
    foreach ($ignorePathsPrefixes as $pathPrefix) {
        if (strpos($path, $pathPrefix) === 0) {
            $autoLoginPath = false;
        }
    }

    // If we're already logged-in, don't attempt any login logic and quit out early.
    // If the path is not an auto-login path, and they're using an auto-login IP,
    // log the user out to allow access to normal login functions if desired.
    if (auth()->check()) {
        if (isset($userIdsByIp[$ip]) && !$autoLoginPath) {
            auth()->logout();
        }
        return null;
    }

    // If the current IP address is in our '$userIdsByIp' mapping, and if the path is
    // an auto-login path, look-up the user and log them in. This will force a
    // failure if the user ID is not found in the system.
    if (isset($userIdsByIp[$ip]) && $autoLoginPath) {
        $userId = $userIdsByIp[$ip];
        $user = User::query()->findOrFail($userId);
        auth()->login($user);
    }

    return null;
});

@ssddanbrown
After adding dd things are still working. (php file is above)

Even with having the functions.php file like this things are still working:
<?php

use BookStack\Auth\User;
use BookStack\Facades\Theme;
use BookStack\Theming\ThemeEvents;
use Illuminate\Http\Request;

// Register a new web-middleware-before hook to authenticate as a specific user depending
// on IP address. Takes a request and always returns null to indicate we don't want to
// change the response provided back to the user.
Theme::listen(ThemeEvents::WEB_MIDDLEWARE_BEFORE, function (Request $request) {
    dd('This is working!');
});

After adding dd things are still working. (php file is above)

Then the theme folder is likely not being read.
Just to confirm, Is www/themes/custom/functions.php part of the folder that's passed to your BookStack contained as a mounted volume to /config? Does the same www folder contain a .env file and uploads directory?

Just to confirm, Is www/themes/custom/functions.php part of the folder that's passed to your BookStack contained as a mounted volume to /config? Does the same www folder contain a .env file and uploads directory?

@ssddanbrown
Yes it is.
And there are  .env file and uploads directory inside that www folder but I didn't add APP_THEME=custom to that .env file, I add it to the container Environment Variables as that's how in casaOS works.
As shown here:
https://github.com/BookStackApp/BookStack/issues/3464#issuecomment-1167472105

I added that to the www/.env file but no change.
In settings of BookStack the version is shown like this:

Is it correct?

@ssddanbrown
Thanks for all the time and energy that you're putting in.
For casaOS you have to have BookStack container and MariaDB separated.
You can use this .json files to import via casaOS and install the easily.
BookStack:
{"origin":"custom","network_model":"bridge","index":"/","icon":"https://cdn.jsdelivr.net/gh/IceWhaleTech/AppIcon@main/all/bookstack.png","image":"lscr.io/linuxserver/bookstack:latest","envs":[{"container":"PUID","host":"1000","desc":"","type":0},{"container":"PGID","host":"1000","desc":"","type":0},{"container":"APP_URL","host":"https://bookstack.local","desc":"","type":0},{"container":"DB_HOST","host":"MariaDBinternaLIPaddress","desc":"","type":0},{"container":"DB_USER","host":"bookstack","desc":"","type":0},{"container":"DB_PASS","host":"YourMYSQL_PASSWORDfromMariaDB","desc":"","type":0},{"container":"DB_DATABASE","host":"bookstackapp","desc":"","type":0},{"container":"APP_THEME","host":"custom","desc":"","type":0}],"ports":[{"container":"80","host":"6875","protocol":"tcp","desc":"","type":0}],"volumes":[{"container":"/config","host":"/home/docker/bookstack/data","type":0,"desc":""}],"devices":[],"port_map":"6875","cpu_shares":10,"restart":"always","enable_upnp":false,"label":"KGB Archives","description":"","position":true,"host_name":"","privileged":false,"cap_add":[],"cmd":[],"version":"1.0"}

MariaDB:
{"origin":"custom","network_model":"bridge","index":"","icon":"https://cdn.jsdelivr.net/gh/IceWhaleTech/AppIcon@main/all/mariadb.png","image":"lscr.io/linuxserver/mariadb:latest","envs":[{"container":"PUID","host":"1000","desc":"","type":0},{"container":"PGID","host":"1000","desc":"","type":0},{"container":"MYSQL_ROOT_PASSWORD","host":"YourMYSQL_ROOT_PASSWORD","desc":"","type":0},{"container":"TZ","host":"Europe/London","desc":"","type":0},{"container":"MYSQL_DATABASE","host":"bookstackapp","desc":"","type":0},{"container":"MYSQL_USER","host":"bookstack","desc":"","type":0},{"container":"MYSQL_PASSWORD","host":"YourMYSQL_PASSWORD","desc":"","type":0}],"ports":[{"container":"3306","host":"3316","protocol":"tcp","desc":"","type":0}],"volumes":[{"container":"/config","host":"/home/docker/bookstack/database","type":0,"desc":""}],"devices":[],"port_map":"","cpu_shares":10,"restart":"always","enable_upnp":false,"label":"BookStackDB","description":"","position":true,"host_name":"","privileged":false,"cap_add":[],"cmd":[],"version":"1.0"}

Okay, have now done a run-though testing this with a fresh CasaOS setup on a fresh Ubuntu 22.04 install.
I used the configs you provide (thanks!) and only tweaked the password fields, APP_URL option and DB_HOST options.
I left all volume paths as-is.
After getting a running BookStack setup on CasaOS, I uploaded a functions.php in the location shown below:

This worked as expected, with first the simplified debug version of functions.php causing the displayed output, then with the full IP address to user mapping. Within the paths shown, the themes folder already existed, I did create the custom folder myself. I also restarted my BookStack container after mapping and this continued to work.
I did experience a bug within CasaOS, where using the file upload tool in the file browser, to upload a smaller file over a larger existing file, would only overwrite the larger file for the length of the new smaller file, effectively producing a bad merge of the two files. This caused invalid PHP in my case which could lead to a white blank screen upon BookStack access.

Do my paths exactly align with yours?
What was your method of creating the theme folder and files? I did this within the CasaOS file browser.
What is the output of running ls -alh /home/docker/bookstack/data/www/themes/custom/ on the host system? Mine is as follows:

ls -alh /home/docker/bookstack/data/www/themes/custom/
total 12K
drwxrwxr-x 2 dan dan 4.0K Jun 29 10:38 .
drwxrwxr-x 3 dan dan 4.0K Jun 29 10:24 ..
-rw-rw-r-- 1 dan dan  464 Jun 29 10:38 functions.php

I was suprised to see CasaOS use my own system user (dan) for permissions here.
I'm just wondering if file/folder permissions could be getting in the way here if the bookstack container processes don't have the ability to access the themes folder or functions file.


Tab Content goes Blank after Route is Pushed then Popped

Hi! I have used react-native-tab-view to set up a four-pane system and ran into this bug. All of my panes have "filter" buttons which push a new route onto the stack. Within the filter scene, when the user is finished, they click "Done" and it will pop that route off the stack and return to the pane being managed by react-native-tab-view.
I noticed that when a route is pushed, and then subsequently popped, the tab content of the other 3 non-active tabs (which do have content to show, and originally showed that content before pushing and popping) now show up completely blank:

In this blank area, there is a  with, as I mentioned, a lot of rows rendered. It should not be blank. I also noticed that if you simply nudge this ListView component (a small swipe up or down in that blank area), the ListView content pop back up (re-render?).
I'm not sure where the bug with this lies, but my hunch is that it's in this library, so I figured I would start here!
Any help appreciated! Thanks!

Is a React Native bug https://github.com/facebook/react-native/issues/1831
Set removeClippedSubViews as a workaround.

Thank you!

This works, Thanks!


add translation into Chinese (Traditional)

Pull Request Summary
Hello, I made translation into Chinese (Traditional).

Looks great, thanks!


性能不佳：在本地笔记本电脑上通过Ollama运行大型模型

Running large models through Ollama on a local laptop results in significant lag, and the computer's performance is not fully utilized.

Hi @GeYingzhen01, sorry about that. Would it be possible to upgrade to 0.1.27 if you haven't already? A few performance-related issues were fixed. If you're still seeing issues (e.g. GPU not detected) let me know!

After upgrading to version 0.1.27, there has been a significant performance improvement. Although the generation speed is still not fast, the program runs without any lag. I've noticed that, even though other applications are able to use the GPU normally, my computer's GPU is not utilized by this updated version.


Create lib that uses Viem

Viem is a lighter alternative to Ethers. This new lib can be part of the @semaphore-protocol/data package so that devs can choose what they prefer to use in their applications.

I worked on this ISSUE. Check it out if you like.
https://github.com/semaphore-protocol/semaphore/pull/364

Picking this up! @cedoor

Re-opening this issue again due to lack of activity.

I am interested in this task and can start asap. I can create PRs for the migration step by step.

Hi @NexusGhost27, sure! I'll assign it to you


CPU usage is high when scrolling

Issue Type: Performance Issue
Scroll the screen to reproduce
VS Code version: Code 1.36.1 (2213894ea0415ee8c85c5eea0d0ff81ecc191529, 2019-07-08T22:59:35.033Z)
OS version: Windows_NT x64 10.0.18362

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz (8 x 3408)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwareoop_rasterization: disabled_offprotected_video_decode: unavailable_offrasterization: enabledskia_deferred_display_list: disabled_offskia_renderer: disabled_offsurface_synchronization: enabled_onvideo_decode: enabledviz_display_compositor: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
15.95GB (10.16GB free)

Process Argv

Screen Reader
no

VM
0%

Process Info
CPU %	Mem MB	   PID	Process
    2	    95	 11844	code main
    0	    13	  9692	   electron-crash-reporter
    1	    81	 12216	   gpu-process
   19	   112	 14008	   shared-process
    0	   232	 15088	   window (peer.h - sigsrv - Visual Studio Code)
    0	    11	 12292	     watcherService
    0	    11	 10564	       console-window-host (Windows internal process)
    0	    69	 12736	     extensionHost
    0	    32	 15424	   utility
    1	    68	 15796	   window (Issue Reporter)

Workspace Info
|  Window (peer.h - sigsrv - Visual Studio Code)
|    Folder (sigsrv): more than 24543 files
|      File types: hpp(12264) h(11183) c(182) ipp(181) cpp(116) lib(105)
|                  obj(78) tlog(41) dll(39) mak(29)
|      Conf files: sln(5) cmake(4) settings.json(2);

Extensions (11)

Extension
Author (truncated)
Version

go-outliner
766
0.1.20

python-preview
don
0.0.4

python-extension-pack
don
1.6.0

gitlens
eam
9.8.3

python
ms-
2019.6.24221

cpptools
ms-
0.24.0

Go
ms-
0.11.4

code-settings-sync
Sha
3.3.1

cmake
twx
0.0.17

cmake-tools
vec
1.1.3

vscodeintellicode
Vis
1.1.7

(1 theme extensions excluded)

Based on the info provided above
CPU %	Mem MB	   PID	Process
    2	    95	 11844	code main
    0	    13	  9692	   electron-crash-reporter
    1	    81	 12216	   gpu-process
   19	   112	 14008	   shared-process
    0	   232	 15088	   window (peer.h - sigsrv - Visual Studio Code)
    0	    11	 12292	     watcherService
    0	    11	 10564	       console-window-host (Windows internal process)
    0	    69	 12736	     extensionHost
    0	    32	 15424	   utility
    1	    68	 15796	   window (Issue Reporter)

The CPU usage seems reasonable. Can you please provide more info?

Ok, the previous information was generated by the report issue itself. I now manually scroll the text bar and observe the CPU occupancy of the Vs Code, which can be found at around 25%. The previous version did not have this problem.

@luoyefeisong can you please open Developer Tools and go to Performance tab and do some recording?

Record
Scroll in the editor, make sure the CPU is higher than normal
Stop recording and share the log

With the log we can dig into where the time is being used.

Sorry, I am not very familiar with js, here is my record
Profile-20190722T100524.zip

it seems you have long lines in the document, is it correct?

I just open a C file and it will take up such a high CPU. You can just open a C file and test it.
Like this, only one file is opened.

I'm seeing similar CPU usage/lag while scrolling C files since the last update 1.36.0+

Can you please try run vs code by disabling all extensions and see if you can reproduce the same issue? code--disable-extensions. I'm wondering whether it's because C++ extension introduces semantic syntax highlighting.

I believe setting "editor.occurrencesHighlight": false fixed my performance issue. I also updated the ms-vscode.cpptools extension to 0.24.1 (July 22) and I turned that setting back the default true and I am not seeing any issues. The release notes indicate improvements to semantic colorization.

It is no problem for me to try my other computer.
Turn off the problem first. Maybe there is something wrong with my computer.


How do I connect to the new mongodb

Hi,
How can I connect to the seed mongo db? Should I update: 'mongoose.connect('mongodb://localhost/DBNAME');'
in server.js?
Thanks!
Robin

If you're using mongoose I suggest you have a look at the mongoose documentation on how to connect to your mongodb instance.


Is this a severe bug?

http://recordit.co/Ku2BfXpduM   Here you could see a screen recording I made.
When I tried to import some new modules or I just press shift+ctrl+alt+o to try to import, all the import lines will go inside the class...That's terrible.. Could you help me solve the issue? Thanks a lot!

This is a known issue. All java source files usually contain a package declaration but you don't have one in your file. Add a package declaration or at least couple of empty lines at the beginning of java source file and it should work fine. Currently the package does not support java files without package declaration.

#35 duplicate

OK  I see  ,thanks~


feat: add data update bulk/resume commands

What does this PR do?

Adds data update bulk/resume commands
Adds --column-delimiter flag to data import bulk
move data import bulk logic into a generic bulkIngest func that will be used by all bulkIngest-related commands (data import/update bulk in this PR, data delete/upsert bulk will be migrated in a separate PR)

What issues does this PR fix or reference?
@W-17037056@

QA
🟢 data import bulk still works as expected
❯ sf data import bulk --file ~/repos/salesforcecli/plugin-data/test/test-files/data-project/data/bulkUpsertLarge.csv --sobject account --wait 10
 ›   Warning: @salesforce/plugin-data is a linked ESM module and cannot be auto-transpiled. Existing compiled source will be
 ›    used instead.

 ───────────────── Importing data ─────────────────

 ✔ Creating ingest job 11.01s
 ✔ Processing the job 1m 22.73s
   ▸ Processed records: 76380
   ▸ Successful records: 76380
   ▸ Failed records: 0

 Status: JobComplete
 Job Id: 750Ov00000IpmhlIAB
 Elapsed Time: 1m 34.38s

🟡 sf data import bulk without setting --column-delimiter
It fails as expected but I'm wondering if there's a way to auto-detect the delimiter??
❯ sf data import bulk --file ~/repos/salesforcecli/plugin-data/test/test-files/data-project/data/bulkUpsertPipes.csv --sobject account --wait 10
 ›   Warning: @salesforce/plugin-data is a linked ESM module and cannot be auto-transpiled. Existing compiled source will be
 ›    used instead.

 ───────────────── Importing data ─────────────────

 ✔ Creating ingest job 1.57s
 ✘ Processing the job 11.74s
   ▸ Processed records: ✘
   ▸ Successful records: ✘
   ▸ Failed records: ✘

 Status: Failed
 Job Id: 750Ov00000IpeIoIAJ
 Elapsed Time: 13.41s

Error (JobFailedError): Job failed to be processed due to:

InvalidBatch : Field name not found : NAME|TYPE|PHONE|WEBSITE|ANNUALREVENUE

To review the details of this job, run this command:

sf org open --target-org<EMAIL_ADDRESS>--path "/lightning/setup/AsyncApiJobStatus/page?address=%2F750Ov00000IpeIoIAJ"

🟢 data import bulk --column-delimiter works as expected
❯ sf data import bulk --file ~/repos/salesforcecli/plugin-data/test/test-files/data-project/data/bulkUpsertPipes.csv --sobject account --wait 10 --column-delimiter PIPE
 ›   Warning: @salesforce/plugin-data is a linked ESM module and cannot be auto-transpiled. Existing compiled source will be
 ›    used instead.

 ───────────────── Importing data ─────────────────

 ✔ Creating ingest job 1.39s
 ✔ Processing the job 11.66s
   ▸ Processed records: 10
   ▸ Successful records: 10
   ▸ Failed records: 0

 Status: JobComplete
 Job Id: 750Ov00000IpTdaIAF
 Elapsed Time: 13.11s

🟡  sf data update bulk with csv with no ID colum
As I was trying to figure out how to use the new command, I encountered this:
❯ sf data update bulk --file ~/repos/salesforcecli/plugin-data/test/test-files/data-project/data/bulkUpsert.csv --sobject account --wait 10
 ›   Warning: @salesforce/plugin-data is a linked ESM module and cannot be auto-transpiled. Existing compiled source will be
 ›    used instead.

 ───────────────── Updating data ─────────────────

 ✔ Creating ingest job 1.48s
 ✘ Processing the job 5.73s
   ▸ Processed records: 10
   ▸ Successful records: 0
   ▸ Failed records: 10

 Status: JobComplete
 Job Id: 750Ov00000IpoIAIAZ
 Elapsed Time: 7.42s

Error (FailedRecordDetailsError): Job finished being processed but failed to process 10 records.

To review the details of this job, run this command:

sf org open --target-org<EMAIL_ADDRESS>--path "/lightning/setup/AsyncApiJobStatus/page?address=%2F750Ov00000IpoIAIAZ"

The sf org open works as expected but I'm not able to find any useful information about why it failed on that page. Are we able to surface a more descriptive error message to the user?
Looks like I needed to have an ID column in my csv - maybe that's something we can detect on our end if it's not something that the API tells us
🟢  sf data update bulk
❯ sf data update bulk --file ~/repos/salesforcecli/plugin-data/test/test-files/data-project/data/bulkUpsert.csv --sobject account --wait 10
 ›   Warning: @salesforce/plugin-data is a linked ESM module and cannot be auto-transpiled. Existing compiled source will be
 ›    used instead.

 ───────────────── Updating data ─────────────────

 ✔ Creating ingest job 1.40s
 ✔ Processing the job 5.79s
   ▸ Processed records: 10
   ▸ Successful records: 10
   ▸ Failed records: 0

 Status: JobComplete
 Job Id: 750Ec00000FTwWFIA1
 Elapsed Time: 7.23s

🟢 handles aborted job
~/repos/trailheadapps/dreamhouse-lwc on  main via ⬢ v20.15.0 took 8.4s
❯ sf data update bulk --file ~/repos/salesforcecli/plugin-data/test/test-files/data-project/data/bulkUpsertPipes.csv --sobject account --wait 10
 ›   Warning: @salesforce/plugin-data is a linked ESM module and cannot be auto-transpiled. Existing compiled source will be
 ›    used instead.

 ───────────────── Updating data ─────────────────

 ✔ Creating ingest job 1.77s
 ✘ Processing the job 2m 2.77s
   ▸ Processed records: ✘
   ▸ Successful records: ✘
   ▸ Failed records: ✘

 Status: Aborted
 Job Id: 750Ov00000IppR7IAJ
 Elapsed Time: 2m 5.28s

Error (JobAbortedError): Job has been aborted.

To review the details of this job, run this command:

sf org open --target-org<EMAIL_ADDRESS>--path "/lightning/setup/AsyncApiJobStatus/page?address=%2F750Ov00000IppR7IAJ"

sf data update bulk --async and sf data update resume
~/repos/trailheadapps/dreamhouse-lwc on  main via ⬢ v20.15.0 took 9.6s
❯ sf data update bulk --file ~/repos/salesforcecli/plugin-data/test/test-files/data-project/data/bulkUpsert.csv --sobject account --async
 ›   Warning: @salesforce/plugin-data is a linked ESM module and cannot be auto-transpiled. Existing compiled source will be
 ›    used instead.

 ───────────── Updating data (async) ─────────────

 ✔ Creating ingest job 1.57s
 ◼ Processing the job

 Status: UploadComplete
 Job Id: 750Ec00000FU0MvIAL
 Elapsed Time: 1.61s

Run "sf data update resume --job-id 750Ec00000FU0MvIAL" to resume the operation.

~/repos/trailheadapps/dreamhouse-lwc on  main via ⬢ v20.15.0 took 3.5s
❯ sf data update resume --job-id 750Ec00000FU0MvIAL
 ›   Warning: @salesforce/plugin-data is a linked ESM module and cannot be auto-transpiled. Existing compiled source will be
 ›    used instead.

 ───────────────── Updating data ─────────────────

 ◯ Creating ingest job - Skipped
 ✔ Processing the job 931ms
   ▸ Processed records: 10
   ▸ Successful records: 10
   ▸ Failed records: 0

 Status: JobComplete
 Job Id: 750Ec00000FU0MvIAL
 Elapsed Time: 966ms


CanFire returning wrong value

Hello, there is a problem in  C_BaseCombatWeapon::CanFire(already gone reported here and not solved: https://github.com/spirthack/CSGOSimple/issues/8), CanFire returning 1 in situations that shouldn't, for example, if you are already in shooting(which should return 0, since you are already in shoot and increase m_flNextPrimaryAttack), it seems to me that it is a wrong calculation in m_nTickBase, since in any situation servertime is less than m_flNextPrimaryAttack.

can u check it right now?

#8 looks fixed


Configuring HDFS Master timeout

Flintrock version: 0.11.0
Python version: 3.7.4
OS: Linux

Hi Nicholas,
When starting my cluster, the HDFS configuration times out. Unlike the previous issue about m5.large's though, the Hadoop logs don't show anything amiss: the NameNode and SecondaryNameNode are starting and stopping normally.
Here is my config file:
services:
  spark:
    version: 2.4.4

  hdfs:
    version: 3.1.2

provider: ec2

providers:
  ec2:
    key-name: spark_cluster
    identity-file: /home/kasra/distributed-setup/spark_cluster.pem
    instance-type: t2.micro
    region: us-west-2
    ami: ami-04b762b4289fba92b # amazon linux 2
    user: ec2-user
    tenancy: default  # default | dedicated
    ebs-optimized: no  # yes | no
    instance-initiated-shutdown-behavior: terminate  # terminate | stop

launch:
  num-slaves: 1
  install-hdfs: True
  install-spark: True

debug: true

And I'm happy to provide the Hadoop logs too if you want them, though like I said they don't show any errors or warnings.
I would appreciate any help or insight you might have. Thanks!

I don't know that Spark will work out of the box with Hadoop 3+. I would stick to Flintrock's default of Hadoop 2.8.5 and see if you still have any issues.

Yes, that's exactly it!  In particular, instead of 50070 it's 9870.


Release notes for <IP_ADDRESS>-mac77 (Edge) cc @gbarr01

Deploy preview for docsdocker ready!
Built with commit 4563b7ea4803d458b91c0fe69326adea75d146a5
https://deploy-preview-7680--docsdocker.netlify.com

Editorial pass completed; good to go!


HDFS-16426. Fix nextBlockReportTime when trigger full block report force

jira: HDFS-16426
When we trigger full block report force by command line, the next block report time will be set like this:
nextBlockReportTime.getAndAdd(blockReportIntervalMs);
nextBlockReportTime will larger than blockReportIntervalMs.
If we trigger full block report twice, the nextBlockReportTime will larger than 2 * blockReportIntervalMs. This is obviously not what we want.
We fix the nextBlockReportTime = now + blockReportIntervalMs after full block report trigger by command line.

@tasanuma @Hexiaoqiao Please take a look.

@tasanuma Thanks for your advice, I update the PR to set resetBlockReportTime=true when triggering full block report by force. Please take a look.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
0m 50s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s

No case conflicting files found.

+0 :ok:
codespell
0m  1s

codespell was not available.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

+1 :green_heart:
test4tests
0m  0s

The patch appears to include 1 new or modified test files.

_ trunk Compile Tests _

+1 :green_heart:
mvninstall
33m 38s

trunk passed

+1 :green_heart:
compile
1m 25s

trunk passed with JDK Ubuntu-11.0.13+8-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
compile
1m 17s

trunk passed with JDK Private Build-1.8.0_312-8u312-b07-0ubuntu1~20.04-b07

+1 :green_heart:
checkstyle
0m 59s

trunk passed

+1 :green_heart:
mvnsite
1m 24s

trunk passed

+1 :green_heart:
javadoc
1m  2s

trunk passed with JDK Ubuntu-11.0.13+8-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
javadoc
1m 32s

trunk passed with JDK Private Build-1.8.0_312-8u312-b07-0ubuntu1~20.04-b07

+1 :green_heart:
spotbugs
3m  9s

trunk passed

+1 :green_heart:
shadedclient
25m 21s

branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
1m 23s

the patch passed

+1 :green_heart:
compile
1m 26s

the patch passed with JDK Ubuntu-11.0.13+8-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
javac
1m 26s

the patch passed

+1 :green_heart:
compile
1m 16s

the patch passed with JDK Private Build-1.8.0_312-8u312-b07-0ubuntu1~20.04-b07

+1 :green_heart:
javac
1m 16s

the patch passed

+1 :green_heart:
blanks
0m  0s

The patch has no blanks issues.

+1 :green_heart:
checkstyle
0m 55s

the patch passed

+1 :green_heart:
mvnsite
1m 25s

the patch passed

+1 :green_heart:
javadoc
0m 58s

the patch passed with JDK Ubuntu-11.0.13+8-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
javadoc
1m 33s

the patch passed with JDK Private Build-1.8.0_312-8u312-b07-0ubuntu1~20.04-b07

+1 :green_heart:
spotbugs
3m 35s

the patch passed

+1 :green_heart:
shadedclient
24m 49s

patch has no errors when building and testing our client artifacts.

_ Other Tests _

-1 :x:
unit
450m 24s
/patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt
hadoop-hdfs in the patch passed.

+1 :green_heart:
asflicense
0m 48s

The patch does not generate ASF License warnings.

556m 34s

Reason
Tests

Failed junit tests
hadoop.hdfs.server.diskbalancer.command.TestDiskBalancerCommand

hadoop.hdfs.server.namenode.TestAddOverReplicatedStripedBlocks

hadoop.hdfs.server.namenode.ha.TestSeveralNameNodes

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3887/2/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/3887

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell

uname
Linux 700022c21a6a 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
trunk / 6965a47a285adc5786da5c418d36c3e1b1b45826

Default Java
Private Build-1.8.0_312-8u312-b07-0ubuntu1~20.04-b07

Multi-JDK versions
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.13+8-Ubuntu-0ubuntu1.20.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_312-8u312-b07-0ubuntu1~20.04-b07

Test Results
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3887/2/testReport/

Max. process+thread count
3074 (vs. ulimit of 5500)

modules
C: hadoop-hdfs-project/hadoop-hdfs U: hadoop-hdfs-project/hadoop-hdfs

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3887/2/console

versions
git=2.25.1 maven=3.6.3 spotbugs=4.2.2

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

Thanks for your contribution, @liubingxing. Thanks for your review, @tomscut.

Thanks @tasanuma @tomscut


Tray icon UX

I'd like to report my experience with using the tray icon so that this feature could be enhanced in the future to provide a better, more seamless UX.
All of this is under Linux, but some of the points will probably apply to other platforms as well.
Compared to other Linux apps, the current sleek tray icon experience feels a bit clunky and does not provide a smooth UX -- especially compared to the rest of the app which is generally, in my opinion, well thought-out.
Here's what I believe could be improved:

Single-instance mode: when a sleek instance is already running and a user launches another one, sleek shouldn't create another window and put another icon in the tray. Instead, the currently running window should be focused. This way a user can assign a hotkey to show/hide sleek very easily, using built-in window manager/desktop preferences.
When opening sleek from the tray icon, the icon is first removed and then re-added, which looks clunky/jerky. No other app does this (including Electron-based ones such as Joplin), so I hope it's possible avoid this behavior. I understand it could be an Electron quirk, but perhaps this issue could be helped.
Left-clicking the tray icon should toggle sleek visibility, as described in https://github.com/ransome1/sleek/issues/618
The tray icon looks odd on many modern Linux desktops, like GNOME or Xfce that prefer monochromatic icons in the tray. This problem is not unique to sleek as some other (usually closed-source apps hardcode their tray icons), but the problem bugs a lot of users, there's even a special project that patches hardcoded icons for a good UX.

It would be great if sleek could pick up an icon from the currently active XDG/freedesktop.org theme, or if an SVG icon could be specified via a CLI parameter. With v2.0.8 under Xfce the icon looks just bad, with a white circle around it (I think it's a regression from other 2.x versions as the white circle wasn't there before): https://i.imgur.com/Imjb10v.png
I realize some of these could be Electron-related, but I hope they can be addressed over time. I would be happy to test any builds that improve tray icon behavior when/if they become available.

Interesting because I use Gnome and left click to open the app works great for me.

It does for me too. But that's not the issue. Left click should toggle visibility, not just open the app. I'm not aware of any tray app under Linux that just opens itself on left click, but does not hide itself on a subsequent click. GoldenDict, Telegram, Syncthing (both Qt and GTK GUIs, Pidgin, KeePassXC, the list goes on.


Webpack

Does this work with Webpack? I'm currently getting:

Error: Cannot find module "."

Thank you!


[FR] Specify if the order of entries in an RPZ file matters

Current behavior
unbound.conf(5) does not state whether the order of the entries in a Response Policy Zone (RPZ) file matters. While in the Response Policy Zone Options section, it states "RPZ clauses are applied in order of configuration"; it would be nice to know if the order of entries in a given file is also adhered to.
Describe the desired feature
Explicitly state whether the order of RPZ file entries matters.
Potential use-case
I am using unbound as both a recursive resolver and "ad blocker". When having a wildcard entry that corresponds to one RPZ action (e.g., CNAME .), one may want to perform a different action on specific subdomains (e.g., CNAME rpz-passthru.). As an explicit example, what is the outcome of a DNS query for www.example.com based on an RPZ file that looks like below?
$ORIGIN example.
www.example.com CNAME rpz-passthru.
*.example.com CNAME .

If the order of entries matters, then the query will be resolved normally; however if the order of entries does not matter, then sometimes the response will be NXDOMAIN and other times it will be resolved normally. It would be nice to know either way.
Based on a very small sample size, it appears that the order does matter; but that can be a fluke and so I would like to know for certain if one can actually rely on that always being the case.

I actually have a similar situation where is seems like any "Blocking" rule super seeds "permissive" rules like the passtrhu.
There can be a numerous good arguments for why this is, however, in my case I maintenance a local rpz zone that differs from my projects records *.mypdns.cloud", in my local RPZ zone I have a number of paastru` records for e.g. GitHub like these
avatars.githubusercontent.com.blacklist.matrix.lan,CNAME,rpz-passthru
private-user-images.githubusercontent.com.blacklist.matrix.lan,CNAME,rpz-passthru

Whereas the @matrix project have the following records
raw.githubusercontent.com.whitelist.mypdns.cloud,CNAME,rpz-passthru
*.githubusercontent.com.malicious.mypdns.cloud,CNAME,.
*.githubusercontent.com.tracking.mypdns.cloud,CNAME,.

Expected behaviour is to get the PASSTRUE = the IP for both avatars- private-user-images.githubusercontent.com
While the log for sure show what actually happens.
Jul 12 19:28:35 vision unbound[104053]: [104053:5] info: <IP_ADDRESS> avatars.githubusercontent.com. A IN
Jul 12 19:28:35 vision unbound[104053]: [104053:5] info: rpz: applied [malicious policy] *.githubusercontent.com. rpz-nxdomain <IP_ADDRESS>@36385 avatars.githubusercontent.com. A IN
Jul 12 19:28:35 vision unbound[104053]: [104053:5] info: <IP_ADDRESS> avatars.githubusercontent.com. A IN NXDOMAIN 0.000000 1 58

The question is now, how can the expected output be accommodated by using the RPZ standard rules? is this a request for a weight system, from where a list with the weight of 0 supersedes other lists? (As Zero is the first number in the IT universe and stays first in line)

@zacknewman, the order of records in a single RPZ file does not matter. An RPZ file is just a regular zone file with extra metadata information. In your example www.example.com. exists and will match the passthru rule. Anything else that does not exist under example.com. (because of the wildcard) will match the NXDOMAIN rule. Duplicate records in the zonefile are ignored by Unbound. I'll update the text on the man page to reflect this.
@spirillen, I believe you are talking about different rpz feeds (different rpz: clauses in Unbound). I will reply to your issue instead.

Note that a wildcard in DNS is not the same as a wildcard in regular expressions for example.
It is not a catch all under example.com, rather it only matches labels that do not exist.
Quick example for a zonefile with the following content:
one.example.com. TXT "exists"
two.example.com. TXT "exists"
*.example.com. TXT "wildcard"

A query for a.two.example.com. IN TXT will return NXDOMAIN.
It will not be expanded from the above wildcard because two.example.com exists in the zone.
In contrast a query for a.three.example.com. IN TXT will return "wildcard".
The same wildcard rules apply to RPZ files.

No problem! You would be surprised how often DNS people (including me) are bitten by wildcard semantics.


Light LED

changing light color on sole do not save, after restart solo leds are again 2 yellow on the back and one green and one red on the front

Are you changing them using the LED control python script that Hugh Eaves made? If so, that is expected behavior. The LED override with scripts is temporary on-demand. It is not a permanent change.

after i install open solo 4 i have 2 LED yellow and in the front one green one red, i change it the color with solex but they not save this

Those changes are temporary and do not stick through a reboot.

ok thank fot this information,
but why is on open solo4 2 yellow one green and one red?
is this changeble?

like the original front green back red
thanks in advance


Add a documentation page for data quality required for fine-tuning

Self Checks

[X] I have searched for existing issues search for existing issues, including closed ones.
[X] I confirm that I am using English to submit this report (我已阅读并同意 Language Policy).
[X] [FOR CHINESE USERS] 请务必使用英文提交 Issue，否则会被关闭。谢谢！:）
[X] Please do not modify this template :) and fill in all the required fields.

1. Is this request related to a challenge you're experiencing? Tell me about your story.
I'm trying to fine-tune the model to be able to pronounce Egyptian dialect.
I currently have a number of long videos -between 6 to 8 hours- that contain Egyptian books and the corresponding audio for different people reading those books, I'm cutting those audios into segments on silence and matching the segments to the text from the books, but I'm lacking some information to do so, such as:

How long should the ideal audio/text segments be to get the best results?
Should I keep the audio stereo or should I turn it to the mono channel?
Should I resample those audios or keep their original frequency?
should I delete the audio segments with slight background music or should  I keep them?
should I keep the punctuation in the text or should I delete them?
Is there any cleaning for the text or the audio that should be done before fine-tuning?

2. Additional context or comments
No response
3. Can you help us with this feature?

[X] I am interested in contributing to this feature.

In the later version, we plan to remove the fine-tune part. Instead, we'll add a series of tools to enhance your reference audio's quality.

But what if I need to add a new language or a dialect that the model usually doesn't handle? We need to fine-tune the model to accomplish such a task, right?

But what if I need to add a new language or a dialect that the model usually doesn't handle? We need to fine-tune the model to accomplish such a task, right?

True, If you want to fine-tune for a new language (though the next version will support most of spoken languages in the world) ,you may need about 2K hours of low quality data, and about 100h (the more, the better) high quality data (44.1khz with high accuracy label).
Hope that this can help you with running the project.

Thanks a lot for your response, that's really helpful, I have one last question: does the data need to be cut to a certain length? I have multiple long audios -around 7 to 8 hours each- should I cut them down to shorter segments? and If I should do so, what is the recommended segment length? 15 minutes? 5 minutes? 30 seconds?

Yes, we recommend you to cut them into 30s / per segment.

Thank you very much for your helpful and fast responses

https://tts.byylook.com/ai/text-to-speech

But what if I need to add a new language or a dialect that the model usually doesn't handle? We need to fine-tune the model to accomplish such a task, right?

True, If you want to fine-tune for a new language (though the next version will support most of spoken languages in the world) ,you may need about 2K hours of low quality data, and about 100h (the more, the better) high quality data (44.1khz with high accuracy label). Hope that this can help you with running the project.

Thank you for your hard work on this project I was wondering if it's possible to provide a rough estimate for when the next model might be available? Even a ballpark estimate would be greatly appreciated.

But what if I need to add a new language or a dialect that the model usually doesn't handle? We need to fine-tune the model to accomplish such a task, right?

True, If you want to fine-tune for a new language (though the next version will support most of spoken languages in the world) ,you may need about 2K hours of low quality data, and about 100h (the more, the better) high quality data (44.1khz with high accuracy label). Hope that this can help you with running the project.

do you have any ETA about the new version you are talking about?
I'm very interested into Italian
I'm actually trying to finetune f5-TTS but this is my first attempt at training a model and above all I don't have the resources ($$$) to train enough, I hope your new version includes Italian :)


Error: Failed to build native gem extension on Ubuntu 17.04 (solved)

For anyone getting the error below when running:
sudo gem install taskwarrior-web
Fetching: rinku-2.0.3.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing taskwarrior-web:
	ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.3.0/gems/rinku-2.0.3/ext/rinku
/usr/bin/ruby2.3 -r ./siteconf20170911-3777-1k20c7f.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

extconf failed, exit code 1

Gem files will remain installed in /var/lib/gems/2.3.0/gems/rinku-2.0.3 for inspection.
Results logged to /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rinku-2.0.3/gem_make.out

You'll need to install ruby 2.3 dev:
sudo apt-get install ruby2.3-dev

Closing this since there is no action to take, but thank you for providing the info for folks searching to find.