Mouse doesn't scroll the right amount

System Info and Version
 System/Version info
Hyprland, built from branch main at commit a60c7283e677ed81a466d1c0c864c8a05e192cac  (xwayland: verify new xsurf is valid in prop reads).
Date: Wed May 29 09:34:25 2024
Tag: v0.40.0-144-ga60c7283, commits: 4750

flags: (if any)

System Information:
System name: Linux
Node name: kamack38-rogstrixg533qs
Release: 6.9.2-arch1-1.1-g14
Version: #1 SMP PREEMPT_DYNAMIC Mon, 27 May 2024 06:10:00 +0000

GPU information:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104M [GeForce RTX 3080 Mobile / Max-Q 8GB/16GB] [10de:249c] (rev a1) (prog-if 00 [VGA controller])
05:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne [Radeon Vega Series / Radeon Vega Mobile Series] [1002:1638] (rev c5) (prog-if 00 [VGA controller])

os-release: NAME="Garuda Linux"
PRETTY_NAME="Garuda Linux"
ID=garuda
ID_LIKE=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://garudalinux.org/"
DOCUMENTATION_URL="https://wiki.garudalinux.org/"
SUPPORT_URL="https://forum.garudalinux.org/"
BUG_REPORT_URL="https://gitlab.com/groups/garuda-linux/"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=garudalinux

plugins:

======Config-Start======

Config File: /home/kamack38/.config/hypr/hyprland.conf: Read Succeeded
# #### Monitor
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,highrr,auto,1
# monitor=DP-1,disable

# Rotate 90deg
# monitor=DP-1,highrr,auto,1,transform,1

# Enable vrr
# monitor=DP-1,highrr,auto,1,vrr,1

# #### Autostart
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = $HOME/.config/hypr/portals.sh
exec-once = /usr/lib/polkit-kde-authentication-agent-1
exec-once = hyprpaper
exec-once = $HOME/.config/hypr/bar.sh
exec-once = dunst
exec-once = wl-paste --type text --watch cliphist store  # Stores only text data
exec-once = wl-paste --type image --watch cliphist store # Stores only image data
exec-once = swayidle -w timeout 300 'lock' timeout 600 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on'
exec-once = wl-mpris-idle-inhibit

# #### Variables
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
    kb_layout = pl
    kb_variant =
    kb_model =
    kb_options =
    kb_rules =

    follow_mouse = 1

    accel_profile = flat

    touchpad {
        natural_scroll = yes
    }

    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}

general {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    gaps_in = 5
    gaps_out = 10
    border_size = 2
    col.active_border = rgba(38a3a5ff) rgba(57cc99ff) 0deg
    col.inactive_border = rgba(595959aa)

    layout = dwindle
    allow_tearing = false
}

decoration {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    rounding = 10
    drop_shadow = false
    shadow_range = 4
    shadow_render_power = 3
    col.shadow = rgba(1a1a1aee)

    blur {
        enabled = true
        size = 3
        passes = 1
        new_optimizations = true
    }
}

animations {
    enabled = yes

    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

    bezier = myBezier, 0.05, 0.9, 0.1, 1.05

    animation = windows, 1, 7, myBezier
    animation = windowsOut, 1, 7, default, popin 80%
    animation = border, 1, 10, default
    animation = fade, 1, 7, default
    animation = workspaces, 1, 6, default
}

dwindle {
    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
    pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
    preserve_split = yes # you probably want this
    no_gaps_when_only = 2
}

master {
    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
    new_is_master = true
    no_gaps_when_only = 2
}

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = on
    workspace_swipe_distance = 300
}

misc {
    vfr = no
    disable_hyprland_logo = true
}

# ### Environment variables

# #### Nvidia
# env LIBVA_DRIVER_NAME,nvidia
# env = GBM_BACKEND,nvidia-drm
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = WLR_NO_HARDWARE_CURSORS,1
# export WLR_DRM_DEVICES=/dev/dri/card0 # set to card1 to use nvidia

# #### Apps
env = QT_QPA_PLATFORM,wayland
env = XDG_SESSION_TYPE,wayland
env = MOZ_ENABLE_WAYLAND,1

# #### Windowrules
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrulev2 = workspace 4 silent, class:^(discord)$

# Tile rules
windowrule = tile, neovide
windowrulev2 = tile, class:^(Spotify)$

# Float rules
windowrule = float,org.kde.polkit-kde-authentication-agent-1
windowrulev2 = float,class:^(firefoxdeveloperedition)$,title:^(Picture-in-Picture)$ # Firefox PIP fix
windowrulev2 = float,title:^(Send File — Dolphin)$
windowrulev2 = float,class:^(org.kde.bluedevilsendfile)$

# Btop - system monitor
windowrule = float,system_monitor
windowrule = center,system_monitor
windowrule = animation slide,system_monitor
windowrule = size 1000 760,system_monitor

# Waybar - package update
windowrule = float,package_update
windowrule = center,package_update
windowrule = animation slide,package_update

# Firefox - passwrod prompt
windowrule = float,title:^Password Required
windowrule = stayfocused,title:^Password Required
windowrule = size 400 150,title:^Password Required
windowrule = center,title:^Password Required

# Dolphin - new folder
windowrule = stayfocused,title:^New Folder — Dolphin

# wlogout
windowrule = float,wlogout
windowrule = fullscreen,wlogout
windowrule = noanim,wlogout
windowrule = stayfocused,wlogout

# Rofi
windowrule = float,Rofi
windowrule = center,Rofi
windowrule = animation none,Rofi
windowrule = stayfocused,Rofi

# XWayland video bridge
windowrulev2 = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$
windowrulev2 = noanim,class:^(xwaylandvideobridge)$
windowrulev2 = nofocus,class:^(xwaylandvideobridge)$
windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$

# #### Layerrules
bezier = easeOut,0.33, 1, 0.68, 1
animation = layers,1,2,easeOut

# Dunst (notifications)
layerrule = animation slide,notifications

# Rofi (app launcher)
layerrule = animation popin,rofi

# ##### Vars
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER
$browser = firefox-developer-edition
$private_browser = firefox-developer-edition --private-window
$powermenu = wlogout
$term = kitty
$file_browser = dolphin
$system_monitor = $term --class system_monitor -e btop

# ## Volume
# $raiseVolume = pamixer -i 2
# $lowerVolume = pamixer -d 2
# $muteAudio = pamixer -t
$raiseVolume = volume -i 2
$lowerVolume = volume -d 2
$muteAudio = volume -t

# $toggleMicMute = pactl list sources | grep -oP "Name: \S+" | grep "input" | cut -d' ' -f2 | xargs -I{} pactl set-source-mute {} toggle
$toggleMicMute = microphone -t
$raiseMicVolume = microphone -i 2
$lowerMicVolume = microphone -d 2

# ## Brightness
# $increaseBrightness = brightnessctl set 5%+ -q
# $decreaseBrightness = brightnessctl set 5%- -q
$increaseBrightness = brightness set 5%+ -q
$decreaseBrightness = brightness set 5%- -q

# ##### Binds
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod, F1, exec, ~/.config/hypr/gamemode.sh
bind = $mainMod SHIFT, Z, exec, toggle_zoom

# ## Apps
bind = $mainMod, grave, exec, $term
bind = $mainMod, E, exec, $file_browser
bind = $mainMod, B, exec, $browser
bind = $mainMod SHIFT, B, exec, $private_browser
bind = $mainMod SHIFT, M, exec, $system_monitor
bind = $mainMod, Escape, exec, $powermenu
bind = ALT, Space, exec, killall rofi || rofi -show drun -no-default-config -config ~/.config/rofi/main.rasi
bind = $mainMod, period, exec, killall rofi || rofi -show emoji -emoji-format "{emoji}" -modi emoji -theme ~/.config/rofi/global/emoji
bind = $mainMod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy

# #### Screenshot
bind = , Print, exec, grimblast --notify --cursor copysave output
$screenshotarea = hyprctl keyword animation "fadeOut,0,0,default"; grimblast --notify copysave area; hyprctl keyword animation "fadeOut,1,4,default"
bind = SUPER SHIFT, S, exec, $screenshotarea

# ## Window state
bind = $mainMod, X, killactive,
bind = $mainMod, SPACE, togglefloating,
bind = $mainMod, F, fullscreen, 0
bind = $mainMod, M, fullscreen, 1
bind = $mainMod, T, pin,
bind = $mainMod, P, pseudo, # dwindle
# bind = $mainMod, J, togglesplit, # dwindle

# ## Cycling through windows
bind = ALT, TAB, cyclenext,
bind = ALT SHIFT, TAB, cyclenext, prev

# ## Moving window
bind = $mainMod MOD5, H, movewindow, l # MOD5 is actually right ALT
bind = $mainMod MOD5, left, movewindow, l
bind = $mainMod MOD5, J, movewindow, d
bind = $mainMod MOD5, down, movewindow, d
bind = $mainMod MOD5, K, movewindow, u
bind = $mainMod MOD5, up, movewindow, u
bind = $mainMod MOD5, L, movewindow, r
bind = $mainMod MOD5, right, movewindow, r

# ## Moving window through monitors
bind = $mainMod SHIFT, H, movewindow, mon:-1
bind = $mainMod SHIFT, L, movewindow, mon:+1
bind = $mainMod SHIFT, left, movewindow, mon:-1
bind = $mainMod SHIFT, rifght, movewindow, mon:+1

# ## Focus
bind = $mainMod, Tab, cyclenext,
bind = $mainMod, left, movefocus, l
bind = $mainMod, H, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, L, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, K, movefocus, u
bind = $mainMod, down, movefocus, d
bind = $mainMod, J, movefocus, d

# ## Focusing monitors
bind = $mainMod SHIFT, K, focusmonitor, +1
bind = $mainMod SHIFT, J, focusmonitor, -1

# ## Workspaces
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10

# ## Moving window throughout workspaces
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10

# ## Cycling through workspaces
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, TAB, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
bind = $mainMod SHIFT, TAB, workspace, e-1

# ## Resizing window
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

# ## Window groups
bind = $mainMod, G, togglegroup
bind = $mainMod, N, changegroupactive, f
bind = $mainMod SHIFT, N, changegroupactive, b
bind = $mainMod SHIFT, Escape, moveoutofgroup

# ## Brightness control
binde = , XF86MonBrightnessUp, exec, $increaseBrightness
binde = , XF86MonBrightnessDown, exec, $decreaseBrightness

# ## Audio keybindings
bind = , XF86AudioPlay, exec, playerctl play-pause && mpris-noti
bind = , XF86AudioPause, exec, playerctl pause && mpris-noti
bind = , XF86AudioStop, exec, playerctl stop && mpris-noti

bind = SHIFT, XF86AudioPlay, exec, mpris-noti # Show currently playing song

bind = , XF86AudioNext, exec, playerctl next && mpris-noti
bind = , XF86AudioPrev, exec, playerctl previous && mpris-noti

binde = SHIFT, XF86AudioNext, exec, playerctl position 5+ && mpris-noti
binde = SHIFT, XF86AudioPrev, exec, playerctl position 5- && mpris-noti

bind = , XF86AudioMute, exec, $muteAudio
binde = , XF86AudioRaiseVolume, exec, $raiseVolume
binde = , XF86AudioLowerVolume, exec, $lowerVolume

binde = SHIFT, XF86AudioRaiseVolume, exec, playerctl volume 0.02+ && mpris-noti
binde = SHIFT, XF86AudioLowerVolume, exec, playerctl volume 0.02- && mpris-noti

# ## Microphone
binde = CTRL, XF86AudioRaiseVolume, exec, $raiseMicVolume
binde = CTRL, XF86AudioLowerVolume, exec, $lowerMicVolume
bind = , XF86AudioMicMute, exec, $toggleMicMute # Toggle mute on all
bind = SHIFT, XF86AudioMicMute, exec, pactl list sources | grep -oP "Name: \S+" | grep "input" | cut -d' ' -f2 | xargs -I{} pactl set-source-mute {} false # Unmute all

# ## Launch keybindings
bind = , XF86Launch4, exec, asusctl profile -n && notify-send "$(asusctl profile -p)" -r 68

======Config-End========

Bug or Regression?
Regression
Description
I've noticed that the mouse scroll doesn't scroll the right amount or doesn't work at all. For example scrolling on the waybar changes the volume by 8-10 instead of 2. Additionally, scrolling in kitty doesn't work (scrolls two or three lines and then stops) and in pagers in it.
How to reproduce
I noticed that scrolling by one produces this in wev:
[04:         wl_seat] name: Hyprland
[04:         wl_seat] capabilities: pointer keyboard
[10:    xdg_toplevel] configure: width: 1280; height: 1404
                      tiled-left tiled-right tiled-top tiled-bottom
[09:     xdg_surface] configure: serial: 114
[14:     wl_keyboard] keymap: format: 1 (xkb v1), size: 66475
[14:     wl_keyboard] repeat_info: rate: 25 keys/sec; delay: 600 ms
[10:    xdg_toplevel] configure: width: 1280; height: 1404
                      tiled-left tiled-right tiled-top tiled-bottom maximized
[10:    xdg_toplevel] configure: width: 1265; height: 1384
                      tiled-left tiled-right tiled-top tiled-bottom maximized
[14:     wl_keyboard] enter: serial: 118; surface: 3
[14:     wl_keyboard] modifiers: serial: 0; group: 0
                      depressed: 00000000
                      latched: 00000000
                      locked: 00000000
[11:  wl_data_device] selection: (cleared)
[10:    xdg_toplevel] configure: width: 1265; height: 1384
                      tiled-left tiled-right tiled-top tiled-bottom maximized activated
[10:    xdg_toplevel] configure: width: 1261; height: 1380
                      tiled-left tiled-right tiled-top tiled-bottom maximized activated
[13:      wl_pointer] enter: serial: 121; surface: 3, x, y: 1134.000000, 742.000000
[13:      wl_pointer] frame
[09:     xdg_surface] configure: serial: 115
[14:     wl_keyboard] key: serial: 122; time: 713344; key: 36; state: 0 (released)
                      sym: Return       (65293), utf8: ''
[13:      wl_pointer] axis: time: 716798; axis: 0 (vertical), value: 7.500000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 716804; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 0
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 716807; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 0
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 716811; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 0
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 716814; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 0
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 716820; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 0
[13:      wl_pointer] frame

Everything works on v0.40. Here's the output of doing the same thing:
[08:         wl_seat] name: seat0
[08:         wl_seat] capabilities: pointer keyboard
[10:    xdg_toplevel] configure: width: 1280; height: 1404
[09:     xdg_surface] configure: serial: 140
[14:     wl_keyboard] keymap: format: 1 (xkb v1), size: 66475
[14:     wl_keyboard] repeat_info: rate: 25 keys/sec; delay: 600 ms
[14:     wl_keyboard] enter: serial: 144; surface: 3
[14:     wl_keyboard] modifiers: serial: 0; group: 0
                      depressed: 00000000
                      latched: 00000000
                      locked: 00000000
[11:  wl_data_device] selection: (cleared)
[13:      wl_pointer] enter: serial: 147; surface: 3, x, y: 1155.000000, 436.000000
[13:      wl_pointer] frame
[10:    xdg_toplevel] configure: width: 1261; height: 1380
                      maximized activated tiled-left tiled-right tiled-top tiled-bottom
[09:     xdg_surface] configure: serial: 141
[14:     wl_keyboard] key: serial: 148; time: 816931; key: 36; state: 0 (released)
                      sym: Return       (65293), utf8: ''
[13:      wl_pointer] frame
[13:      wl_pointer] frame
[13:      wl_pointer] frame
[13:      wl_pointer] frame
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] axis: time: 818486; axis: 0 (vertical), value: 15.000000
[13:      wl_pointer] frame

Crash reports, logs, images, videos
No response

[13:      wl_pointer] axis: time: 9355190; axis: 0 (vertical), value: 15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 9356660; axis: 0 (vertical), value: -15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1

what ?

[13:      wl_pointer] axis: time: 9355190; axis: 0 (vertical), value: 15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 9356660; axis: 0 (vertical), value: -15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1

what ? version: a60c728

Yes, as mentioned system info version.

what kind of device do you scroll with because touchpad and mouse scroll wheel events are reported and handled properly on that version

I'm using my mouse - Logitech G604.

Are you sure your mouse's scroll wheel is on the right mode? (advertised as a feature on their website) Because I can't replicate the issue with my hardware.

I think it is, because the scroll wheel clearly stutters and everything works on the v0.40 version.

Using binary-search it should take no more than 8 builds.

I traced the first bad commit to be 121d3a72. Except here scrolling on waybar doesn't work at all and scrolling inside kitty scrolls by one line.

how does the behaviour change after 3ac0e7ead1434c172f276a12f81da1eeb0dc4491?

how does the behaviour change after 3ac0e7e?

I just tested the commit before this, and it seems like xwayland apps work properly, and kitty scrolls line by line, I will test the commit now

that's strange because 3ac0e7ead1434c172f276a12f81da1eeb0dc4491 was added because some wayland clients could not see a difference between touchpad scrolling and scroll wheel scrolling (namely blender which behaved weird without that)

that's strange because 3ac0e7e was added because some wayland clients could not see a difference between touchpad scrolling and scroll wheel scrolling (namely blender which behaved weird without that)

Blender behaves weirdly even with that. The first scroll both zooms and moves camera whilst continuous scrolling only moves camera(like trackpad would I suppose)

I can't repro either of those lol, must be some strange hardware then. Can you get a
WAYLAND_DEBUG=1 blender > sway_blender_wheel_scrolling.log 2>&1  in sway/hyprland and wheel/touchpad variations so I can see what's up?

sway_blender_wheel_scrolling.log
Here, scrolled up for bit, scrolled down for a bit, scrolled a few steps(start and stop), and lastly up and down

might be easier if you test wev 2>&1 | grep axis > hyprland_wev_scroll.log in both hyprland and sway

might be easier if you test wev 2>&1 | grep axis > hyprland_wev_scroll.log in both hyprland and sway

But I don't have sway ): at least I think I uninstalled it since I last used it like a year ago?

well I can't repro the issue at all :P
[ming@wrangler ~]$ wev 2>&1 | grep axis
[13:      wl_pointer] axis: time: 15260343; axis: 0 (vertical), value: 1.343750
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15260350; axis: 0 (vertical), value: 0.976562
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15260357; axis: 0 (vertical), value: 0.855469
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15260364; axis: 0 (vertical), value: 0.976562
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15260372; axis: 0 (vertical), value: 0.730469
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15260379; axis: 0 (vertical), value: 0.609375
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15260386; axis: 0 (vertical), value: 0.609375
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15260393; axis: 0 (vertical), value: 0.488281
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15260400; axis: 0 (vertical), value: 0.609375
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15260407; axis: 0 (vertical), value: 0.367188
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15260414; axis: 0 (vertical), value: 0.242188
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15260436; axis: 0 (vertical), value: -0.121094
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15260455; axis: 0 (vertical), value: 0.000000
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis_stop: time: 15260455; axis: 0 (vertical)
[13:      wl_pointer] axis: time: 15260455; axis: 1 (horizontal), value: 0.000000
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis_stop: time: 15260455; axis: 1 (horizontal)
[13:      wl_pointer] axis: time: 15261291; axis: 0 (vertical), value: -1.464844
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15261298; axis: 0 (vertical), value: -1.343750
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15261306; axis: 0 (vertical), value: -1.343750
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15261313; axis: 0 (vertical), value: -0.855469
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15261320; axis: 0 (vertical), value: -1.343750
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15261327; axis: 0 (vertical), value: -0.855469
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15261334; axis: 0 (vertical), value: -0.855469
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15261341; axis: 0 (vertical), value: -0.367188
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15261348; axis: 0 (vertical), value: -0.242188
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis: time: 15261361; axis: 0 (vertical), value: 0.000000
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis_stop: time: 15261361; axis: 0 (vertical)
[13:      wl_pointer] axis: time: 15261361; axis: 1 (horizontal), value: 0.000000
[13:      wl_pointer] axis_source: 1 (finger)
[13:      wl_pointer] axis_stop: time: 15261361; axis: 1 (horizontal)
[13:      wl_pointer] axis: time: 15264319; axis: 0 (vertical), value: 15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] axis: time: 15264341; axis: 0 (vertical), value: 15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] axis: time: 15264359; axis: 0 (vertical), value: 15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] axis: time: 15264383; axis: 0 (vertical), value: 15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] axis: time: 15264405; axis: 0 (vertical), value: 15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] axis: time: 15265158; axis: 0 (vertical), value: -15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] axis: time: 15265166; axis: 0 (vertical), value: -15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] axis: time: 15265177; axis: 0 (vertical), value: -15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] axis: time: 15265186; axis: 0 (vertical), value: -15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] axis: time: 15265201; axis: 0 (vertical), value: -15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] axis: time: 15265219; axis: 0 (vertical), value: -15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] axis: time: 15265260; axis: 0 (vertical), value: -15.000000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1

hyprland_wev_scroll.log
Corresponding with my actions, it seems like discrete is 1 the moment I scroll down, and -1 the moment I scroll up, but 0 all the when during the scroll

my bet is that it's high-res scrolling of some kind not being handled in the way that normal wheel scrolling is handled

my bet is that it's high-res scrolling of some kind not being handled in the way that normal wheel scrolling is handled

Just tried out KDE because I had that installed :p. It seems like it's just 1 every time downwards scroll, start or continuous, and -1 for downwards. Not sure what hi-res scrolling is(does it allow for "smooth" scrollwheel when the hardware supports it? I wish there's a mouse like that)

Just got sway, exactly the same as KDE(doesn't seem to use hi-res scrolling, whatever that is?)
Uploading sway_wev_scroll.log…

wev 2>&1 | grep wl_pointer > hyprland_wev.log and avoid moving your mouse when scrolling

wev 2>&1 | grep wl_pointer > hyprland_wev.log and avoid moving your mouse when scrolling

Meow
sway_wev_scroll.log

and doing the same on hyprland?

and doing the same on hyprland?

Looks like it sends a lot of 0s(or less frames?), which should've been 1/-1
hyprland_wev_scroll.log

Don't know if this can help: I have a Logitech G502 Lightspeed and when it is using the wireless dongle, this issue occurs in XWayland apps (only scrolls once, have to stop scrolling and then scroll again, and scrolls a single time again). But if I plug in the mouse directly to cable, the problem is gone and scrolling works again.

Don't know if this can help: I have a Logitech G502 Lightspeed and when it is using the wireless dongle, this issue occurs in XWayland apps (only scrolls once, have to stop scrolling and then scroll again, and scrolls a single time again). But if I plug in the mouse directly to cable, the problem is gone and scrolling works again. (i'm on 6868a39)

Im not dev but I can probably guess that they want the logs as I had above in wireless dongle vs plugged in directly for comparison.
Also Im using powerplay so I suppose its also a dongle, which would make sense

wireless mice? might be onto something

I have the same mouse model as darkiox and can confirm plugging it in works around the issue for me too.

Alrighty, got the wev logs.
On the dongle I did a full scroll up and then a full scroll down, only the first event shows of each shows 1 or -1 on discrete.
On wired it works normally.
hyprland_wev_scroll_wired.log
hyprland_wev_scroll_dongle.log

managed to repro with an old wireless mouse I didn't use for a long time and I might have an idea where the issue stems from

test out the PR, works for me but the scrolling sensitivity might be a little high

PR also works for me.

This didn't fix all the issues for me. Scrolling on the waybar PulseAudio module still doesn't work (scrolling once changes the volume multiple times) and the scroll itself is not consistent, i.e. scrolling up and down sometimes differs from the original position (one event more is emitted). The results below are the events caught by wev when scrolling "by one". As you can see, even though I scrolled the same amount, the events emitted are different.
[13:      wl_pointer] axis: time: 1261739; axis: 0 (vertical), value: -7.500000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1261746; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1261749; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1261753; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1261755; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1261758; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1264698; axis: 0 (vertical), value: 7.500000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1264710; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1264717; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1264721; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1264726; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1264731; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1267535; axis: 0 (vertical), value: -7.500000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1267541; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1267545; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1267549; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1267551; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1267554; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1270170; axis: 0 (vertical), value: 7.500000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1270180; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1270187; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1270190; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1270195; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1270199; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1271018; axis: 0 (vertical), value: -7.500000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1271030; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1271036; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1271043; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1271046; axis: 0 (vertical), value: -1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: -1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1274574; axis: 0 (vertical), value: 7.500000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1274581; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1274585; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1274589; axis: 0 (vertical), value: 1.875000
[13:      wl_pointer] axis_source: 0 (wheel)
[13:      wl_pointer] axis_stop: axis: 0 (vertical), discrete: 1
[13:      wl_pointer] frame
[13:      wl_pointer] axis: time: 1274593; axis: 0 (vertical), value: 1.875000

that's just how often scroll events are reported by your mouse, not much we can do here except pass it to the client... sway does who knows what with the scroll inputs and sending empty frames. kde just doesn't handle discrete scrolling at all. Read more on the topic of high resolution scrolling here

Sens is definitely too high, in Okular I basically zoom from smol to huge in one step, something needs to change lol. Why did it work well before?

Decided to take a look using xev. I also commented on the PR that each scroll was sending 5/6 events, and can replicate this when scrolling on a xev window (this was only 1 scroll of the wheel)
ButtonPress event, serial 31, synthetic NO, window 0x1e00001,
    root 0x3b7, subw 0x0, time 35736533, (546,690), root:(4192,733),
    state 0x10, button 5, same_screen YES

ButtonRelease event, serial 31, synthetic NO, window 0x1e00001,
    root 0x3b7, subw 0x0, time 35736533, (546,690), root:(4192,733),
    state 0x1010, button 5, same_screen YES

ButtonPress event, serial 31, synthetic NO, window 0x1e00001,
    root 0x3b7, subw 0x0, time 35736539, (546,690), root:(4192,733),
    state 0x10, button 5, same_screen YES

ButtonRelease event, serial 31, synthetic NO, window 0x1e00001,
    root 0x3b7, subw 0x0, time 35736539, (546,690), root:(4192,733),
    state 0x1010, button 5, same_screen YES

ButtonPress event, serial 31, synthetic NO, window 0x1e00001,
    root 0x3b7, subw 0x0, time 35736542, (546,690), root:(4192,733),
    state 0x10, button 5, same_screen YES

ButtonRelease event, serial 31, synthetic NO, window 0x1e00001,
    root 0x3b7, subw 0x0, time 35736542, (546,690), root:(4192,733),
    state 0x1010, button 5, same_screen YES

ButtonPress event, serial 31, synthetic NO, window 0x1e00001,
    root 0x3b7, subw 0x0, time 35736546, (546,690), root:(4192,733),
    state 0x10, button 5, same_screen YES

ButtonRelease event, serial 31, synthetic NO, window 0x1e00001,
    root 0x3b7, subw 0x0, time 35736546, (546,690), root:(4192,733),
    state 0x1010, button 5, same_screen YES

ButtonPress event, serial 31, synthetic NO, window 0x1e00001,
    root 0x3b7, subw 0x0, time 35736548, (546,690), root:(4192,733),
    state 0x10, button 5, same_screen YES

ButtonRelease event, serial 31, synthetic NO, window 0x1e00001,
    root 0x3b7, subw 0x0, time 35736548, (546,690), root:(4192,733),
    state 0x1010, button 5, same_screen YES

This issue still persists on the master. Can the high-res scrolling be disabled?


Redesign IDE top bar

Pull Request Description
Updating the looks of the project's top bar to the new design.

Project name moved from breadcrumbs to the left of the execution environment selector.
All components use auto-layout in most places, except for breadcrumbs (changing them means basically rewriting them from scratch, but we will use CB's breadcrumbs instead)
Components no longer rely on individual positioning but rather work as parts of the "project view top bar" abstraction (with the use of auto-layout)
We have a new debug scene for the project view top bar, replacing the debug scene for execution environment selector.
Most style parameters were moved to the stylesheet, except breadcrumbs.
Top bar is now fully managed by the Project View, not Graph Editor
Project name is no longer editable. There is no way to rename a project inside the IDE (the corresponding code is removed). It can react on mouse hovers, but the color will not change for now.
Current execution environment has extra bold font and is no longer capitalized.
Breadcrumbs can be considered broken from the design point of view. I have no intention of making them look as in the design because we want to reuse CB's breadcrumbs component instead. The functionality should be fully preserved, though.
The Play Icon on the execution environment selector is not updated to the newest design, I suggest creating a separate task for that (I think it is the first case of a rounded triangle in the application, and implementation would some time).

https://github.com/enso-org/enso/assets/6566674/16747c02-15b2-4806-ace3-6f03c98040f1
Checklist
Please ensure that the following checklist has been satisfied before submitting the PR:

[x] The documentation has been updated, if necessary.
[x] Screenshots/screencasts have been attached, if there are any visual changes. For interactive or animated visual changes, a screencast is preferred.
[x] All code follows the
Scala,
Java,
and
Rust
style guides. In case you are using a language not listed above, follow the Rust style guide.
All code has been tested:

[x] Unit tests have been written where possible.
[x] If GUI codebase was changed, the GUI was tested when built using ./run ide build.

The Play Icon on the execution environment selector is not updated to the newest design, I suggest creating a separate task for that

Added to the list in #7125 epic.

Project name is no longer editable. There is no way to rename a project inside the IDE (the corresponding code is removed). It can react on mouse hovers, but the color will not change for now.

@vitvakatu does it mean that the project name does not turn gray/black upon VCS status change (changed/not changed)?

does it mean that the project name does not turn gray/black upon VCS status change (changed/not changed)?

No, it still follows the old behavior, though now it is harder to notice because of the chosen colors. I adjusted them a bit now.

QA Report: :green_circle:
It's only hard to not ice which breadcrumb I'm currently in, but I guess it will be changed anyway


Profiles: Update followers when profile fields change

Currently we are at the mercy of remote servers refreshing profile data on their schedule. This PR will instead send an Update Activity to all Follower inboxes whenever an update to a relevant option or user meta is updated.
Proposed changes:

Schedule an update when relevant fields are changed

Other information:

[ ] Have you written new tests for your changes, if applicable?

Testing instructions:
This is completely untested so far.

When I tested this on dotcom it did not necessarily seem like it worked, but that may have been a result of our other troubles there. I will try again now that we fixed our problems with the application user there before merging this.


Fahrenheit

My Sonoff TH outputs in Farhenheit as that is the way I configured it.  This plugin apparently also converts to Fahrenheit so my living room shows as being 153 degrees F.  Not likely. Can you fix this?  I prefer to have my Sonoff in F for other applications.
Kevin

Hi Kevin,
I was having the same issue. My 70º room was displaying 161º. Oh a whim I reconfigured the Sonoff to output Celsius with
setoption8 0
in the web console of the Sonoff/Tasmota. The home app now displays the correct temperature, in Fahrenheit.
Hope that helps.
Chris


Restrict the allowance of estimation

Summary
This is related to #163 and #164
To keep the quality of estimation, restrict the allowance of estimation. Estimatior.run() (called by Scenario.estimate()) continues estimation if the max value of simulated values are not in the allowance of actual values. The allowance is set (0.8, 1.2) at this time.
Related classes

covsirphy.Estimator
covsirphy.Scenario

Codes and outputs:
import covsirphy as cs
# Dataset preparation
data_loader = cs.DataLoader("input")
jhu_data = data_loader.jhu()
population_data = data_loader.population()
scenario = cs.Scenario(jhu_data, population_data, country="Italy")
_ = scenario.records()
scenario.trend()
scenario.estimate(cs.SIRF)
scenario.add(end_date="01Jan2021")
_ = scenario.simulate()

Environment

CovsirPhy version: 3.6.0-delta
Python version; 3.8
Installation: pipenv
OS: WSL

The allowance can be changed by users with Scenario.estimate(allowance=(0.8, 1.2), but the defalt value will be changed to (0.98, 1.02).
This may lead long running time. We need to shorten running time by refactoring of Estimator class.


Add worker host in TaskInfo from construction inside JobWorker

@ZacBlanco: made a point that workerAddress is way more available from the CommandHandlingExecutor than I originally anticipated. So moving one more to being in constructor.
Other Miscellaneous Change:
getAndClearTaskUpdates now returns a wire object and the GRPC protoization method happens during the worker's heartbeat instead.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/6969/
Test FAILed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/6970/
Test PASSed.

alluxio-bot, check this please

rebased.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/6985/
Test PASSed.

alluxio-bot, merge this please


TabNavigator: Ability to style a tab's content container with cardStyle

Current Behavior
I have a TabNavigator that uses lazy loading. The issue I'm having is that when the user taps on a lazily loaded tab, they see an awkward empty state while the tab is rendering (in my case, a bright red color because red is my default screen background.
Expected Behavior
What I would like to do is customize the background color of the tab content, i.e. a cardStyle prop so that I can make the split second the content is rendering look less hideous.
Your Environment

software
version

react-navigation
latest

react-native
latest

node
latest

npm or yarn
latest

Hi @joncursi thanks for this feature request.
I wonder, wouldn't be enough to wrap the navigator into a <View style={{flex:1, backgroundColor: 'less-hideous.color'}}> <TabNavigator> </ View>?

My tab navigator is nested in a root stack navigator. So if I were to follow your suggestion, wouldn’t I have to wrap the stack navigator instead? The problem with doing this is that now I’m applying styles to every screen instead of just the tabs where I need it. I’m looking for screen based option or a tabs based option, rather than an entire app option. I already wrap my entire app with a default background color, but I’m trying to customize this background color for when the tabs are loading.
With regard to package versions... I submitted this issue on beta 13, it was still present on beta 14, and it is also still present on beta 15.

So if I were to follow your suggestion, wouldn’t I have to wrap the stack navigator instead?

First off I didn't know about it being nested in a StackNavigator.
Second, you can simply add that View with background to that screen of the stack; if you can put your code into a simple Expo Snack it would be easier to help btw.

I know this issue is old and it's closed but did you @joncursi manage to find a solution for your problem? I'm having the same issue now with a TabNavigator inside a StackNavigator.


wordpress issue

After downloading WordPress how to set it up....

Install Wordpress with standard settings. Once done, install  All In One WP Migration Plugin on Wordpress. Then, download my .wpress file from link in README of my repo. Go to plugin and import the file.
I had already mentioned these steps in installation instructions of README of my repo. Please read it carefully.


Implementation of a two sided error term

Hello all,
I am not reporting a bug.; I have a question about implementation of a custom likelihood function. If this is not a good forum to ask the question, then please feel free to point me in the correct direction. (GPflow does not have a strong presence on stackoverflow)
The specific likelihood that I am trying to implement is a two sided error term with one side being normally distributed and the other side with an assumed truncated normal distribution. This type of likelihood is common in stochastic frontier analyses (see this paper for the original implementation. could not find a better document https://ac.els-cdn.com/0304407680900421/1-s2.0-0304407680900421-main.pdf?_tid=f0e0ac0d-eef7-4f02-8386-fd93d6edd927&acdnat=1538246979_c25210597f80b5cf68aaf06cbdd5b41e). This likelihood is useful because the returned residuals can be converted into an estimate of "efficiency" of each observation given a set of covaraites. (the efficiency part is measured on a scale of zero to one and can be thought of like Carnot's theorem and heat engines etc... for those of you with some physics). The main limitation with stochastic frontier analysis is the assumption of a function form (linear, quadratic etc..). I am trying to address this limitation by implementing a GPR with this two sided likelihood.
Using an R package as I guide https://github.com/cran/sfa/blob/bd47878ee213bcdedbd15dc13c01782fdf7689fd/R/sfa.R#L27 I copied the likelihood and implemented a custom GPflow likelihood. I'll grant you that right now it is a bit bulky
import gpflow as gpflow
from gpflow.decors import params_as_tensors
import tensorflow as tf
import numpy as np
def gaussian_trunc_normal(obs, y_hat, variance, variance_2, mu, N):
    epsilon = obs - y_hat
    sigmau2 = variance
    sigmav2 = variance_2
    mu = mu
    dist = tf.distributions.Normal(tf.constant(0.,tf.float64), tf.constant(1., tf.float64))  ## better way for cdf?
    sc = 1.

    ret = -(N / 2. * -1.8378770664093453 + N * tf.log(1. / (tf.sqrt(sigmau2 + sigmav2))) \
            - tf.log(dist.cdf(tf.divide(mu, tf.cast(tf.sqrt(sigmau2), tf.float64)))) \
             + tf.reduce_sum(tf.log(dist.cdf(((1. - (sigmau2 / (sigmau2 + sigmav2))) \
             - sc * (sigmau2 / (sigmau2 + sigmav2)) * epsilon) / (tf.sqrt(sigmau2 * (1. - sigmau2 / (sigmau2 + sigmav2))))))) \
             - 1. / (2. * (sigmau2 + sigmav2)) * tf.reduce_sum(tf.square((epsilon + sc * mu))))
    return ret

class SFA_trunc_normal(gpflow.likelihoods.Likelihood):
    def __init__(self,N, variance=1.0, variance_2=1.0, mu=.1, **kwargs):
        super().__init__(**kwargs)
        self.variance = gpflow.params.Parameter(
            variance, transform=gpflow.transforms.positive, dtype=gpflow.settings.float_type)
        self.variance_2 = gpflow.params.Parameter(
            variance_2, transform=gpflow.transforms.positive, dtype=gpflow.settings.float_type)
        self.mu = gpflow.params.Parameter(
            mu, transform=gpflow.transforms.positive, dtype=gpflow.settings.float_type)
        self.N= N

    @params_as_tensors
    def logp(self, F, Y):
        return gaussian_trunc_normal(Y, F, self.variance, self.variance_2, self.mu, self.N)

    @params_as_tensors
    def conditional_mean(self, F):  # pylint: disable=R0201
        return tf.identity(F)

    @params_as_tensors
    def conditional_variance(self, F):
        return tf.fill(tf.shape(F), tf.squeeze(self.variance))

    @params_as_tensors
    def predict_mean_and_var(self, Fmu, Fvar):
        return tf.identity(Fmu), Fvar + self.variance

    @params_as_tensors
    def predict_density(self, Fmu, Fvar, Y):
        return gaussian_trunc_normal(Y, Fmu, Fvar + self.variance, self.variance_2, self.mu, self.N)

    @params_as_tensors
    def variational_expectations(self, Fmu, Fvar, Y):
        ## I won't be doing any variational GPs... so I don't think I need this part
        return -0.5 * np.log(2 * np.pi) - 0.5 * tf.log(self.variance) \
               - 0.5 * (tf.square(Y - Fmu) + Fvar) / self.variance

When I test this out on any synthetic data it throws an error and the traceback says the input matrix is not invertable. Below is an example
import numpy as np
import pandas as pd
import gpflow as gpflow

x1 = (np.random.normal(5, 2, 100))
x2 = (np.random.normal(2, 1, 100))

efficiency = np.random.uniform(0, 1, 100)

noise = np.random.normal(0, .3, 100)

y = 3+ 2*(x1) + -3*(x2)  +noise + np.log(efficiency)

kern = gpflow.kernels.RBF(2, active_dims=[0,1])*gpflow.kernels.Linear(2, active_dims=[0,1])*gpflow.kernels.Constant(1)

df =pd.DataFrame(np.vstack((x1, x2, y)).T)
df.columns =['x1', 'x2', 'y']

model =gpflow.models.GPMC(df[['x1', 'x2']].values, df.y.values[:,None], kern, SFA_trunc_normal(df.shape[0]))

gpflow.train.AdamOptimizer().minimize(model, maxiter=1000)

It do not get the error when I use a simple Gaussian likelihood.
I am curious, from a gpflow standpoint, if there is anything immediately wrong with my implementation that would cause the matrix to not be invertable. Secondly, a friend mentioned that the truncated normal part of the likelihood could be implemented as a kernel. I agree that it would be cleaner, but I don't know how to do that and I wouldn't want to go down a rabbit hole if it fundamentally would not work.
Any helpful tips or tricks you could provide would be most appreciated. Thanks!

A few pointers:

If you're using the GPMC model you need to use HMC, and either fix or put priors on all the hyperparameters. Otherwise this is the MAP estimate.

I suspect you only want to sum over certain axes. For example in the term, tf.reduce_sum(tf.square((epsilon + sc * mu)))) looks like it might be only intended to sum of the columns, not rows. A good idea might be to check that the operation really is happening elementwise over the first index of Y.

It's a good idea to check that there aren't any nans in the density before debugging anything else

Does the optimization fail on the first iteration, or does it only fail after some point?

Not that is matters for the optimization, but are you sure you have the right conditional mean etc? If the likelihood is assymetric it doesn't seem like it should have the same result as the Gaussian.

Why do you include the constant kernel? The RBF already includes a variance term, so this won't be having any effect. (also, I wonder if the multiplication by the linear kernel is really what you want, as this seems an odd model to me)

@markmoses we'd like to move towards using stackoverflow for more generic questions and keeping this for actual issues; this seems to be an example of something reasonably suited to stackoverflow: would you be willing to repost your question there?

@markmoses there's a gpflow tag: https://stackoverflow.com/questions/tagged/gpflow - would be great if you could populate it with your question (and any partial or full answer you may have gotten already)!


Remove dependency of identifiers yaml file in ICEES db and API

Now that ICEES KG is separated out from ICEES+, it'd be good to remove dependency of identifiers yaml file from ICEES db and API to have one less manually curated yaml file to maintain and update down the road.

PRs merged and all icees-api dev and prod instances have been redeployed with much simplified config files. Closing the issue.


Update go version

Should close #4

@buggyhunter @chronark works like a charm. Thank you very much for your prompt response!


Name collision on PyPI

Just a note that this package name collides with https://pypi.python.org/pypi/diff-match-patch/ -- that is, both of them come in under import diff_match_patch, but have different APIs.
This makes it impossible to use both in the same project, or to use any combination of libraries that depend on both. As a specific usecase, I was working on a script using https://github.com/sachinrekhi/richtextpy, which depends on the other lib, and then tried to use this library for some fast diffing in another part of the script, and as far as I can tell that's not possible. (Maybe by installing this library outside of sys.path and doing some clever import magic?)
I realize this is no one's problem but my own. :) If you're open to working on it, though, it might be nice to also publish this with an alternate package name like fast_diff_match_patch, since the colliding library is just a straight packaging of the original google script.
Thanks!

Hey, yes, I'm totally open to changing the names to fix that. This has been bothering me too. If you submit a PR renaming both the module (i.e. the import name) and the pypi package (in setup.py) like you said, I'll take care of fixing how it's published on pypi (and I'll rename this repo to match too).
(You might be interested in https://github.com/joshdata/jot by the way.)

This seems to have been fixed.

It's now uploaded to PyPi at https://pypi.org/project/fast-diff-match-patch/ !


Added checking for CancelledError in YAML runner

Capture and raise CancelledError in YAML Runner.
TH expects that TAML runner raises CancelledError when cancelling a Task. Currently the code is not checking the CancelledError.

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


discarding timepoints with prestats_dvols is stripping header from fmriprep confounds file

A local user wanted to discard volumes during prestats stage with:
prestats_dvols[1]=4.

The number of volumes of the fmri are properly discarded, however removetaskpnts.R is not restoring the column headers because it read the data without them ( ie: header=FALSE )
>> ${XCPEDIR}/utils/removetaskpnts.R -n 4 -t /mnt/munin2/Madden/VisAtten.03/Analysis/Resting/RestingPipeline/xcp_36p/output_discard4/sub-9013/ses-1/prestats/sub-9013_ses-1_fmriconf.tsv -p /mnt/munin2/Madden/VisAtten.03/Analysis/Resting/RestingPipeline/xcp_36p/output_discard4/sub-9013/ses-1/prestats/sub-9013_ses-1_fmriconf.tsv
· @1.5

Therefore all the subsequent confounds that are attempted to be pulled from the TSV with generate_confmat.R end up empty because there are no column headers to match against.
>> ${XCPEDIR}/utils/generate_confmat.R -i /mnt/munin2/Madden/VisAtten.03/Analysis/Resting/RestingPipeline/xcp_36p/output_discard4/sub-9013/ses-1/prestats/sub-9013_ses-1_fmriconf.tsv -j rps -o /mnt/munin2/Madden/VisAtten.03/Analysis/Resting/RestingPipeline/xcp_36p/output_discard4/sub-9013/ses-1/confound2/mc/sub-9013_ses-1_realignment.1D
Warning message:
In is.na(outmat) : is.na() applied to non-(list or vector) of type 'NULL'

Runtime Information
Singularity.  XCP v1.2.3
Additional context
This would fix it in our case:
rr=read.table(tab1, sep='\t',header=TRUE)
mat1 = rr[-c(1:nvd),]
write.table(mat1,file=out2, sep='\t',col.names = colnames(rr), row.names=F,quote=F)

did you add DVO to design file?

yes, their prestats section below:
###################################################################
# 1 PRESTATS
###################################################################

prestats_rerun[1]=0
prestats_dvols[1]=4 #remove 4 volumes at beginning (disdaqs)
prestats_cleanup[1]=0
prestats_process[1]=FMP-DVO

We have had the same problem when using the prestats_dvols[1] setting.  Are there updates on this issue?

We have had the same problem when using the prestats_dvols[1] setting. Are there updates on this issue?

I edited our version of ${XCPEDIR}/utils/removetaskpnts.R with the code i posted above, which fixes the issue.

we are working on it @cmpetty  and @mwvoss
pls @cmpetty , pls can submit a pull request of your update pls?


How to Loop search results using conductor?

How do we loop through the search results from the API response of the first task?
We do have two API's

Search member by firstname which gives all member id's matching the firstname
Search member by memberId to obtain more details of the member

We want the first api call to result in list of memberId's and make parallel API's of many number number of id's from the first api call to get more information of the member.
Filter the results from #2 for say firstname, lastname, email address, memberId, phone number alone.
How do we do this in conductor?

Hi @gansa1986 , you can model your workflow in conductor by splitting the work into multiple tasks.
Your first task in the workflow could be a HTTP task which would call the API to give you the list of member ids matching the first name.
You could follow this with a Dynamic Fork task which would spawn off one task per member id and execute these in parallel. This could either be another HTTP task which gets the information about the member or it could be a Simple task, which could be executed by your worker.
If you choose to use HTTP task, then you would need a Simple task after your worker which would do the filtering of info, otherwise if you use the Simple task within your dynamic fork, then your task could make the Http request and also do the filtering in place.

Closing this issue due to inactivity, please reopen if you need more assistance.


Unable to access external URL without ServiceEntry

Bug Description
We have istio v1.15.3 setup via helm (flux).
After enabling mTLS via a custom CA (cert-manager), our gateways cannot talk to services not part of the mesh. It works fine for services that have a sidecar.
In the gateway logs, we get a 503 and cluster not found error. It works if we create a ServiceEntry resource for such a service, and hence it discovers the "cluster" endpoint. (logs below in additional information)
According to the documentation, services in a mesh should be able to talk to services not part of the mesh by default.
We have verified and tried to explicitly set the outboundTrafficPolicy to ALLOW_ANY.
Seems like Istio is unable to find the endpoint/backend for services not part of the mesh, and acts like outboundTrafficPolicy is set to REGISTERED_ONLY, when it is not.
We verified this by getting the meshConfig from the istiod API
curl -s localhost:15014/debug/mesh

Expected Behaviour
Services in the mesh, or Ingress Gateway to be specific, should be able to communicate to services outside the mesh by default.
Related issues we have looked at
https://github.com/istio/istio/issues/12952
https://github.com/istio/istio/issues/30730
https://discuss.istio.io/t/outbound-traffic-to-exernal-service-solved/1895
Version
$ istioctl version
client version: 1.15.2
control plane version: 1.15.3
data plane version: 1.15.3 (12 proxies)

$ kubectl version --short
Client Version: v1.23.1
Server Version: v1.23.11-gke.300

$ helm version
v3.6.3 via helm-controller v0.14.0 (flux)

Additional Information
{
    "bytes_received": 0,
    "user_agent": "curl/7.79.1",
    "response_flags": "NC",
    "method": "GET",
    "protocol": "HTTP/1.1",
    "start_time": "2022-11-08T15:38:34.885Z",
    "upstream_transport_failure_reason": null,
    "duration": 0,
    "route_name": "hello-route",
    "connection_termination_details": null,
    "upstream_cluster": null,
    "authority": "helloworld.example.com",
    "response_code": 503,
    "downstream_local_address": "10.x.x.x:8080", # istio-gatway pod IP
    "bytes_sent": 0,
    "upstream_service_time": null,
    "requested_server_name": null,
    "response_code_details": "cluster_not_found",
    "upstream_local_address": null,
    "x_forwarded_for": "10.x.x.x",
    "upstream_host": null,
    "request_id": "a16574f7-7f6s-4e20-b870-31e754573e",
    "downstream_remote_address": "10.x.x.x:53520",
    "path": "/hello"
}

With debug logs enabled for the gateway we can see these logs too:
{
    "level": "debug",
    "time": "2022-11-10T14:12:50.017261Z",
    "scope": "envoy filter",
    "msg": "cannot find cluster outbound|5000||helloworld.mc-poc-stable.svc.cluster.local"
}
{
    "level": "debug",
    "time": "2022-11-10T14:12:50.017281Z",
    "scope": "envoy router",
    "msg": "[C7342][S48195410574689925] unknown cluster 'outbound|5000||helloworld.mc-poc-stable.svc.cluster.local'"
}
{
    "level": "debug",
    "time": "2022-11-10T14:12:50.017286Z",
    "scope": "envoy http",
    "msg": "[C7342][S48195410574689925] Sending local reply with details cluster_not_found"
}
{
    "level": "debug",
    "time": "2022-11-10T14:12:50.017333Z",
    "scope": "envoy http",
    "msg": "[C7342][S48195410574689925] encoding headers via codec (end_stream=true):\n':status', '503'\n'date', 'Thu, 10 Nov 2022 14:12:49 GMT'\n'server', 'istio-envoy'\n"
}

Where is helloworld.mc-poc-stable.svc.cluster.local service?

Where is helloworld.mc-poc-stable.svc.cluster.local service?

@hzxuzhonghu The helloworld service is in the same cluster as the gateway and istiod.
apiVersion: v1
kind: Service
metadata:
  labels:
    app: helloworld
    service: helloworld
  name: helloworld
  namespace: mc-poc-stable
spec:
  clusterIP: 10.x.x.x
  clusterIPs:
  - 10.x.x.x
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - port: 5000
    protocol: TCP
    targetPort: 5000
  selector:
    app: helloworld
  sessionAffinity: None
  type: ClusterIP

Since the service is a inner  service, why would you say Unable to access external URL. Could you elaborate a little bit more

Since the service is a inner service, why would you say Unable to access external URL. Could you elaborate a little bit more

I meant services that are not part of the mesh, but still in the cluster.  So "mesh-external" services, I understand it creates a bit of a confusion.

That is very unexpected. Can you get a config dump from the pod (or istioctl bug-report)

https://github.com/istio/istio/wiki/Troubleshooting-Istio#collecting-information-2 need the config_dump. thanks

https://github.com/istio/istio/wiki/Troubleshooting-Istio#collecting-information-2 need the config_dump. thanks

I get the following result. The helloworld pod does not have the istio-proxy injected, hence the reason I was calling it a "mesh-external" service
k exec -it istiod-stable-6b6ccd8cfd-l5mr9 -- curl -s 'localhost:8080/debug/config_dump?proxyID=helloworld-v1-5f8b7f46fb-4hgmw.mc-helloworld'

Proxy not connected to this Pilot instance. It may be connected to another instance.

Right, need it from the client (gateway?).
Also its preferred to capture it from Envoy (https://github.com/istio/istio/wiki/Troubleshooting-Istio#collecting-information-2) not from Istiod (https://github.com/istio/istio/wiki/Troubleshooting-Istio#collecting-information-1)

Right, need it from the client (gateway?).
Also its preferred to capture it from Envoy (https://github.com/istio/istio/wiki/Troubleshooting-Istio#collecting-information-2) not from Istiod (https://github.com/istio/istio/wiki/Troubleshooting-Istio#collecting-information-1)

All right, so I have attached the config dump from the gateway, extracted through:
kubectl exec -it istio-internal-tool-85786677b5-9vrdr -- curl 'localhost:15000/config_dump' > config_dump.json

config_dump.zip

Yes, I deployed it in another namespace while reproducing it, the overall setup is still the same.
No we don't have this environment variable on Istiod. The only pilot related env var we set is PILOT_CERT_PROVIDER.
Yes the service exists, and is accessible inside the cluster
❯ k exec -it -n mc-helloworld sleep-79b95fd6d5-xj824 -- sh
$ curl helloworld.mc-helloworld.svc.cluster.local:5000/hello
Hello version: v1, instance: helloworld-v1-5f8b7f46fb-4hgmw

Ok I don't see much explaination for this from the config dump. I think we would need a full istioctl bug-report which gets way more info. You can send it to me privately on slack if you are worried about info leakage (although we don' get secrets, mtls certs, etc)

@howardjohn Thanks, I sent (hopefully) you a message on the CNCF slack

Hi @howardjohn, were you able to look into it further?

Hi, @howardjohn any updates on this?

the issue is still valid as of today


Not accepting app generated password

raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8  https://support.google.com/mail/?p=BadCredentials c9-20020a9d6849000000b006a3bd777dfdsm1292207oto.12 - gsmtp')
Python version 3.11

Sorry for the wait, I just saw this. Did create an app password?
From the README.md:
If you are using etext with Gmail, you should set up an app password for use with etext. You can do that by clicking here.


[PSM Interop] Update and improve local-dev.cfg example

The most important change here is to setting resource_suffix and server_xds_port flags to "generate randomly" by default. Previously we were suggesting static values, and devs ended up with resource conflict errors.

FYI @zasweq @ginayeh


Tracking: Set up EF database repository

Configure the Entity Framework DbContext and create repositories for each entity (see #19). Also add seed data helpers using the data from the TestData project.
- [ ] https://github.com/gaepdit/sbeap/issues/72
- [ ] https://github.com/gaepdit/sbeap/issues/73
- [ ] https://github.com/gaepdit/sbeap/issues/74

Done!


[#889] improvement: Modify the default value of the rss.coordinator.select.partition.strategy parameter to CONTINUOUS.

What changes were proposed in this pull request?
Modify the default value of the rss.coordinator.select.partition.strategy parameter to CONTINUOUS.
Why are the changes needed?
For 0.8.0 Release.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
Exiting UTs.

Codecov Report

Merging #1036 (10aa4b1) into master (96eab1c) will increase coverage by 1.14%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##             master    #1036      +/-   ##
============================================
+ Coverage     54.32%   55.47%   +1.14%
+ Complexity     2550     2091     -459
============================================
  Files           382      310      -72
  Lines         21737    13921    -7816
  Branches       1803     1255     -548
============================================
- Hits          11808     7722    -4086
+ Misses         9228     5780    -3448
+ Partials        701      419     -282

Files Changed
Coverage Δ

...rg/apache/uniffle/coordinator/CoordinatorConf.java
98.78% <100.00%> (ø)

... and 74 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

Merged. Thanks @zuston @leixm


Keep default channel name in sync with app name

Feature Request
Motivation Behind Feature
#49 changed the default channel name to be the app name instead of PhoneGap PushPlugin.
But the default channel doesn't get automatically get updated if it already exists.
Feature Description
Instead of just checking if the default channel exist, also check if the name is still correct and update it if it isn't.
It might also be a good idea to be able to set the default channel name in the android config on init.
Alternatives or Workarounds
Right now it would be possible to overwrite the default channel by just creating it again.
PushNotification.createChannel(
  () => {},
  () => {},
  {
    id: 'PushPluginChannel',
    description: 'My channel name',
  }
);

I already have an implementation for this here and can open a PR if this is useful for the project.


Problem: 'libwebp/webp/decode.h' file not found

I had this problem in the past
https://github.com/rs/SDWebImage/issues/1261
but after using that commit, the problem was fixed.
Now I am updating from cocoapods 0.39.0 to 1.0.0.beta.2.
With that version I cannot use:
pod 'SDWebImage/WebP', :head
but I use:
pod 'SDWebImage/WebP', :git => 'https://github.com/rs/SDWebImage.git', :commit => 'bf899e2'
and I see the changed explained in
https://github.com/rs/SDWebImage/commit/bf899e222fb6e47a288977803bd16b1315c2297c
But I receive:
/Users/ricardoruizlopez/Desktop/wa-ios/Pods/SDWebImage/SDWebImage/UIImage+WebP.m:15:9: 'libwebp/webp/decode.h' file not found
And I see that the file is there.
So, I have no idea what's going on
Can you help me?

can you still replicate the issue?

Hello,
Are you talking about the last cocoapods beta? 1.0.0.beta.6
Or the last SDWebImage version?
Or both?
Thanks.

if you use the latest cocoapods version can you use pod 'SDWebImage/WebP', :head?
if no, how did you resolve the issue?

I'm getting the same issue when using :head with use_frameworks! option for Cocoapods.
I'm using the latest beta 1.0.0.beta.6.

I just tried pointing to the last commit in master and the issue is still happening (with cocoapods 1.0.0.beta.6)
pod 'SDWebImage/WebP', :git => 'https://github.com/rs/SDWebImage', :commit => ‘0da78a4'

New version of CocoaPods does not make symlinks of public headers in case of frameworks used instead of static libraries (use_frameworks!).
Looks like that is why header is not found. So it is impossible to use SDWebImage/WebP over CocoaPods 1.0 in Swift projects.

My workaround is here:
https://github.com/kenmaz/SDWebImage/commit/5034c334be50765dfe4e97c48bcb74ef64175188
I solved it, but I think this workaround is too adhoc.

@kenmaz Thanks a lot. It is great before official fix.

Getting the same issue using cocoapods 1.0. It seems the only solution without workaround is downgrading cocoapods to 0.39. Will this be fixed officially?

The same issue when using Cocoapods 1.0.0. Please fix it.

Yeap, it looks like the issue is caused by CocoaPods 1.0. Will fix it soon.
https://travis-ci.org/rs/SDWebImage/builds/130876102

Thanks guys for the info here. Thanks to @kenmaz, I was able to fix the issue.


Atom Editor code flickers when focused

Description
The code seems to flicker when a pane of the Atom Editor is focused

GIF of the issue in safe mode
Steps to Reproduce
Focus a pane with code
Expected behavior: A static code that does not flicker, similar to when it is not focused.
Actual behavior: Code flickers/moves a little bit
Reproduces how often: Every time
Versions
atom version
Atom    : 1.21.1
Electron: 1.6.15
Chrome  : 56.0.2924.87
Node    : 7.4.0
apm version
apm  1.18.5
npm  3.10.10
node 6.9.5 x64
python
git 2.12.0.windows
visual studio 2015
OS
Windows 10 Home 1607 build 14393.170

Fixed the issue.
Having a transition on the opacity of the cursor created this problem.

style.less

Seems like this issue is from the atom version 1.21.1, since the 1.20 version did not have this kind of issue.

@Bazooo This is a duplicate of https://github.com/atom/atom/issues/15626


increase performance by hiding grid and lable

replaced by change mentioned in https://github.com/haverland/collectmeteranalog/issues/9#issuecomment-1222520555


Unable to patch share

I noticed two issues with  PATCH /project/{:projectid}/aoi/{:aoiid}/timeframe/{:timeframeid}/share/{:shareuuid} endpoint:

404 status, error message aoi not found: this is happening when the share exists but the AOI doesn't because it was deleted. The AOI id becomes invalid and its not possible to construct a valid route. To address this, I suggest we move the endpoint to PATCH /share/{:shareuuid}.
500 status, error message Failed to commit to aoi_timeframe_share: this is the response for all patch request for shares that don't fall in the previous error. I'm not sure why it is happening.

cc @ingalls @geohacker

@ingalls I confirm this is working as expected. Thanks!


Download models inside workflow

This replaces PR #221, and adds functionality to download models within the workflow.
Currently a WIP as doing some testing on it now..

@jordandekraker looks like the the snakemake http remote doesn't like the dropbox URL for the synthseg models, I'll move them to zenodo (better for consistency and longevity anyhow)..

OK looks like this is working now, have tested it on graham too.
Couple things though:

As before, you need to set HIPPUNFOLD_CACHE_DIR to the folder where you want the models. However, now, if you are running from a hippunfold container, you would need to make sure that env var is set inside the container too, by setting either: SINGULARITYENV_HIPPUNFOLD_CACHE_DIR or APPTAINERENV_HIPPUNFOLD_CACHE_DIR. I think Apptainer is backwards compatible with the use of SINGULARITYENV but it may ultimately be deprecated..  I believe compute canada has migrated completely to apptainer anyways?

If a downloaded model timestamp is earlier than the timestamp on the remote file on zenodo, then it will be re-downloaded..

I haven't been able to confirm how this works on a node without internet (the graham node I ended up testing on seemed to have internet connectivity).. so I think it may be worth testing it a bit more..

It wouldn't be hard to make some versions of the container that have a single model, e.g. for the most popular ones like T1w, T2w, and synthseg.. That could make life easier for people as they wouldn't need to manage a HIPPUNFOLD_CACHE_DIR..

That all sounds good to me, but maybe we should make a note in the documentation (maybe the FAQ) about the default HIPPUNFOLD_CACHE_DIR being in the ~/.cache directory. I don't think its worth building multiple containers with the other models though.
I was also thinking we should try to build this soon since a few people might singularity pull hippunfold:latest hoping to get v1.3.0.
I won't be around much for a few weeks though, sorry, on vacation!


Implement list_staff_users based on list_superusers

Also, I did a tiny textual replacement of SuperUser to Superuser in custom_users.NoSuperuser to make things more consistent

good idea! I'll have a look at that

Keep in mind that HQ depends on (the format of the output of) list_superusers


something with the build.gradle on the android app module (flutter)

Launching lib\main.dart on Android SDK built for x86 in debug mode...
Initializing gradle...
Resolving dependencies...
* Error running Gradle:
ProcessException: Process "E:\FlutterApps\flash-chat-flutter\android\gradlew.bat" exited abnormally:

FAILURE: Build failed with an exception.

* Where:
Build file 'E:\FlutterApps\flash-chat-flutter\android\app\build.gradle' line: 25

* What went wrong:
A problem occurred evaluating project ':app'.
> ASCII

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 59s
  Command: E:\FlutterApps\flash-chat-flutter\android\gradlew.bat app:properties

Finished with error: Please review your Gradle project setup in the android/ folder.

Hello @ElsaiedSamaka,
please paste your flutter doctor -v output. :)
Also I see that you already have a few Screens in your lib folder. Does this mean that the app was working correctly until you made some changes? Or is this your first build (for this project)?

@ElsaiedSamaka please check https://github.com/flutter/flutter/issues/41492#issuecomment-536112970.

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact descriptions what happens, logs and the output of 'flutter doctor -v'  please.
All system setups can be slightly different so its always better to open new issues and reference related issues.


module keyboard-state: Unknown module: keyboard-state

I'm on Void Linux, my user is in the input group.

I apologize, the problem has nothing to do with the Waybar but with the package available in Void Linux, the libevdev-devel dependency was missing, necessary to compile the keyboard-state module.


Install minimal depenencies for the check-build-coverage job

The check-build-coverage script only needs python3 and the aws cli.
Speed up the job by avoiding installing all the dependencies.

@kingsleyzissou thanks for the review but I see now that we're actually compiling and running ./cmd/list-images, which needs most of the dependencies.  It basically just doesn't need osbuild but I don't think we're going to get the speed-up from this that I thought we would.  Closing.


Provide example for usage within svelte

Eventually I found this comment so I could get it to work as follows:

cl-editor

I'm not sure if this is the best way and why I'm getting TypeError: $references.editor is undefined when importing from "cl-editor" rather than "cl-editor/dict" some doucmentation on how to use cl-editor within svelte would be appreciated.

I tried your example and it worked, but there is indeed a better way for those who are using svelte:

<Editor
  actions={["b", "i", "u", "h2", "ul", "left", "center", "justify", "forecolor"]}
  {html}
  height={"200px"} />

I tried your example and it worked, but there is indeed a better way for those who are using svelte:

<Editor
  actions={["b", "i", "u", "h2", "ul", "left", "center", "justify", "forecolor"]}
  {html}
  height={"200px"} />

Do you have any issues with pressing certain keys?
I can't get space and asd keys get worked

Hello, thanks for cl-editor and this example.
I would like to be able to validate via an external button the text of the editor in order to save it, do you have an example to allow me to do that? Thank you and happy new year


App startup failed. Please check your data connection and try again.

App startup failed. Please check your data connection and try again.
If this problem persists, please email<EMAIL_ADDRESS>
since Android 11,
OS has a built-in censor and most Apps do Not work...
FireFox works,
Opera VPN does Not,
Opera Data saver works,
Futo GrayJay does Not work,
etc....
When AI wants to seriously Ban someone "Dangerous",
sends a "Limited Connection" flag to the ONT modem,
and that is relayed to AndroidOS 11,
shutting down all communications, most apps.
some .apk work ok, because dont use Standard Android API or Libraries...
or use older, pre-censor.
or lazy software developers do Not follow the ISO9001 standard strictly.
LBRY app can be remote shut down by a Limited Connection Flag, like most other apks.
some Cellphone brands are Censorship resistant to a Limited Connection Flag Attack.
This model is a NoGo

This issue is out of scope of this repository.


Shortcut "Ctrl + " not working on Linux + German keyboard

Under Linux, with a German keyboard, pressing Ctrl+\ does not open the tree view. So that you know, getting this combination on a German keyboard requires pressing Ctrl+AltGr+some normal key ("ß" if you really want to know).
I guess that's quite a corner case but I still signal it cause it's the first command of the quick start (https://basarat.gitbooks.io/alm/content/quickstart.html) and it prevents to go any further :-/

It won't work also on Spanish Keyboards, need to type Command + alt + º

1Password's primary keyboard shortcut is Cmd+\ so the treeview isn't accessible for 1Password users either. I'm embarrassed to say I'm actually blocked by this!

I've let this sit in my brain for quite a while. The key desire is to allow keyboard customization. That is not on the board at the moment :-/

One can use the command pallette to trigger the command. However I agree that it will be a painful experience.


AdvancedPeripheral Blocks now keep their name when changed after placing and/or destroying

Please check if the PR fulfills these requirements

[x] The commit message are well described
[ ] Docs have been added / updated (for features or maybe bugs which were noted). If not, please update the needed documentation here. This is not mandatory
[x] All changes have fully been tested

What kind of change does this PR introduce? (Bug fix, feature, ...)
Bug fix

What is the current behavior? (You can also link to an open issue here)
https://github.com/IntelligenceModding/AdvancedPeripherals/issues/629

What is the new behavior (if this is a feature change)?

Does this PR introduce a breaking change? (What changes might users need to make in their scripts due to this PR?)
No

Other information:

Can you to create a PR for 1.19.2? Because https://github.com/IntelligenceModding/AdvancedPeripherals/blob/dev/1.20.1/CONTRIBUTING.md#setting-up-a-development-environment

PLEASE READ If you want to add features or fix bugs that exist in multiple versions, please make the changes for the oldest fully supported versions, which you can find here. That would be 1.19.2 at the time the article was written.


Handle static dependencies.

Closes #54 by literally implementing @smacke's suggestion in https://github.com/nbsafety-project/nbsafety/issues/54#issuecomment-817232394.

Nice!


General improvements and fixes

[ ] Allow the user to manually choose whether to use ipv4 or ipv6 (or both) for the pods creation.
Every startup.sh script should contain a variable at the start like:

## General variables ##
ipv4-enabled='yes/no or 0/1'
ipv6-enabled='yes/no or 0/1'

[ ] Allow the user to manually choose whether to use ipv4 or ipv6 (or both) for the nftables config.
The nftables.conf should contain a variable at the start like:

## General variables ##
ipv4-enabled='yes/no or 0/1'
ipv6-enabled='yes/no or 0/1'

[x] Adjust the line that creates the /var/run/netns directory for every startup.sh script as it does not properly work on Debian based OS's. It does not pass through the sudo prefix, hence giving a permission error.
This part needs to be adjusted.

Fixed the third item today (bdaa7b063b475d59f21427720ddbbbef154655a1)


Better explain why we don't use PUT

This is something that people are still asking about in the issues and at least one post online has also said our current answer is no good.
In addition to better explaining the rationale for PATCH, this PR also removes the note about users being able to define their own PUT semantics since, until we have an extension mechanism, that may not be
a good idea.

:+1:

this is a nice, concise explanation.

:+1: good to merge if you agree @dgeb!

Thanks for writing this up, @ethanresnick :+1:

Thanks for this PR. Very appreciated.


07/19/2018 00:40 : Create Pull Request for branch master -> prTesting1_2018071900

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestRef1.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


feat: NullIfEmptySlice transform

I wrote a transform function for another member of the community to help them display empty slices as null in their query , they suggested I submit it as a PR to the SDK, so here's an attempt 😉
(also apologies for the space insertion on L20, go fmt did it 😄)

thanks @graza-io !


Dropdown alert for some events

https://github.com/testshallpass/react-native-dropdownalert

Balance updated
New transactions


Question: how to route '/' and only '/'

Hi all,
Quick question. With the default 'prefix' matcher is it possible to specifically only match 'host.domain/'? My company want to replace the homepage on a site with content from a separate app but none of the rest of the existing content. We already have a lot of services in the system and so don't want to change the matcher.

anyone?

can you turn on glob matching per urlprefix-? I assume if you can then just specifying domain.name/ without a * will do what I need.

There isn't currently any way to enforce strict matching to my knowledge.  If you have a route of example.com/ and the load balancer gets a request for example.com/foo and there is not any other more explicit route the request will be sent to the example.com/ backend.


https://git-scm.com/docs/git-config.html is slow

URL for broken page
Try https://git-scm.com/docs/git-config.html
other webpages seem to work correctly e.g:
https://git-scm.com/docs/git-add.html

It is back on-line. But it takes a lot of time, just as if it was not cached and served by Heroku.

It is back on-line. But it takes a lot of time, just as if it was not cached and served by Heroku.

I was able to reproduce and grab a log from the production site. It indicates we were timing out while building the version-list box, which is something that's given us trouble before:
Started GET "/docs/git-config" for <IP_ADDRESS> at 2021-01-07 23:18:53 +0000
Processing by DocController#man as HTML
  Parameters: {"file"=>"git-config"}
  Rendered doc/man.html.erb within layouts/application (Duration: 15616.8ms | Allocations: 3766151)
  Rendered layout layouts/application.html.erb (Duration: 15618.9ms | Allocations: 3766470)
Completed 500 Internal Server Error in 15686ms (ActiveRecord: 1712.2ms | Allocations: 3768338)
Rack::Timeout::RequestTimeoutException (Request waited 13ms, then ran for longer than 15000ms ):
app/models/doc_version.rb:30:in `diff'
app/models/doc_file.rb:63:in `block in version_changes'
app/models/doc_file.rb:48:in `each'
app/models/doc_file.rb:48:in `each_with_index'
app/models/doc_file.rb:48:in `version_changes'
app/views/doc/_versions.html.erb:11
app/views/doc/man.html.erb:8
app/views/doc/man.html.erb:4

I'm not sure what changed:

if the code got slower; perhaps the new ruby/rails are slower for some reason

if we were just creeping up on the timeout and it crossed the line as we added more versions to process. A while back I limited how far back we'd go to avoid this growing without bound. We might need to do so again.

the sql server was just slow due to other load (perhaps not even ours). IIRC one of the problems with building that list is it makes a lot of queries (possibly even n+1 if there are n versions of the manpage)

I was able to reproduce and grab a log from the production site. It indicates we were timing out while building the version-list box, which is something that's given us trouble before:
Started GET "/docs/git-config" for <IP_ADDRESS> at 2021-01-07 23:18:53 +0000
Processing by DocController#man as HTML
  Parameters: {"file"=>"git-config"}
  Rendered doc/man.html.erb within layouts/application (Duration: 15616.8ms | Allocations: 3766151)
  Rendered layout layouts/application.html.erb (Duration: 15618.9ms | Allocations: 3766470)
Completed 500 Internal Server Error in 15686ms (ActiveRecord: 1712.2ms | Allocations: 3768338)
Rack::Timeout::RequestTimeoutException (Request waited 13ms, then ran for longer than 15000ms ):
app/models/doc_version.rb:30:in `diff'
app/models/doc_file.rb:63:in `block in version_changes'
app/models/doc_file.rb:48:in `each'
app/models/doc_file.rb:48:in `each_with_index'
app/models/doc_file.rb:48:in `version_changes'
app/views/doc/_versions.html.erb:11
app/views/doc/man.html.erb:8
app/views/doc/man.html.erb:4

I'm not sure what changed:

if the code got slower; perhaps the new ruby/rails are slower for some reason

if we were just creeping up on the timeout and it crossed the line as we added more versions to process. A while back I limited how far back we'd go to avoid this growing without bound. We might need to do so again.

the sql server was just slow due to other load (perhaps not even ours). IIRC one of the problems with building that list is it makes a lot of queries (possibly even n+1 if there are n versions of the manpage)

we have been having a lot of alerts from heroku for response times, but I could not get some free time to look at it yet. maybe the problem is here.
As a quick fix, limiting the number of versions a bit further seems like a good idea, while we can't find some time to improve the queries

we have been having a lot of alerts from heroku for response times, but I could not get some free time to look at it yet. maybe the problem is here.
As a quick fix, limiting the number of versions a bit further seems like a good idea, while we can't find some time to improve the queries

The cutting-off hack was actually not so long ago: less than a year in 63b66f5e773dce4fed6a37d309396b31f952d438. There have only been 4 major releases since then, though there were some maint ones, too.
If we more aggressively avoid intermediate maint releases, like so:
diff --git a/lib/tasks/index.rake b/lib/tasks/index.rake
index a6954e56..4e8b6db4 100644
--- a/lib/tasks/index.rake
+++ b/lib/tasks/index.rake
@@ -122,8 +122,8 @@ def drop_uninteresting_tags(tags)
         numeric = Version.version_to_num(tag.first[1..-1])
         # drop anything older than v2.0
         next if numeric < 2000000
-        # older than v2.17, take only the highest release
-        if numeric < 2170000 and !ret.empty?
+        # older than v2.30, take only the highest release
+        if numeric < 2300000 and !ret.empty?

that does cut us from 70 versions to 31.

The cutting-off hack was actually not so long ago: less than a year in 63b66f5e773dce4fed6a37d309396b31f952d438. There have only been 4 major releases since then, though there were some maint ones, too.
If we more aggressively avoid intermediate maint releases, like so:
diff --git a/lib/tasks/index.rake b/lib/tasks/index.rake
index a6954e56..4e8b6db4 100644
--- a/lib/tasks/index.rake
+++ b/lib/tasks/index.rake
@@ -122,8 +122,8 @@ def drop_uninteresting_tags(tags)
         numeric = Version.version_to_num(tag.first[1..-1])
         # drop anything older than v2.0
         next if numeric < 2000000
-        # older than v2.17, take only the highest release
-        if numeric < 2170000 and !ret.empty?
+        # older than v2.30, take only the highest release
+        if numeric < 2300000 and !ret.empty?

that does cut us from 70 versions to 31.

I'm ok with trying that solution and see if things improve :)

I'm ok with trying that solution and see if things improve :)

IIRC one of the problems with building that list is it makes a lot of queries (possibly even n+1 if there are n versions of the manpage)

Sorry, I was wrong here. I just ran it locally and it is only one query, which doesn't take all that long. The slow part is actually processing the data in ruby.
Running it locally on my laptop, it takes ~5s to render the page. If I cut off point releases as in the diff above (and then clean out the old ones and reimport based on the now-smaller list), it still takes ~4s. So better, but not substantially so.
TBH, I'd consider just removing the "diff" part of the version box anyway. I think all of this effort is going to produce the little red/green diffstat image for each:

If we instead just showed the list of versions that made any change at all, that should be much cheaper. I think we store a sha1 of the content of each page, so we should be able to just retrieve those and walk the sorted list of versions, comparing hashes (that saves us not only from doing a diff, but also from pulling the manpage content from sql at all; I suspect the problem with git-config is that it is touched in a lot of versions and it is a large file).

IIRC one of the problems with building that list is it makes a lot of queries (possibly even n+1 if there are n versions of the manpage)

Sorry, I was wrong here. I just ran it locally and it is only one query, which doesn't take all that long. The slow part is actually processing the data in ruby.
Running it locally on my laptop, it takes ~5s to render the page. If I cut off point releases as in the diff above (and then clean out the old ones and reimport based on the now-smaller list), it still takes ~4s. So better, but not substantially so.
TBH, I'd consider just removing the "diff" part of the version box anyway. I think all of this effort is going to produce the little red/green diffstat image for each:

If we instead just showed the list of versions that made any change at all, that should be much cheaper. I think we store a sha1 of the content of each page, so we should be able to just retrieve those and walk the sorted list of versions, comparing hashes (that saves us not only from doing a diff, but also from pulling the manpage content from sql at all; I suspect the problem with git-config is that it is touched in a lot of versions and it is a large file).

Otherwise, we could just cache the dots when building the manpages (provided we add the version in ascending order).

Otherwise, we could just cache the dots when building the manpages (provided we add the version in ascending order).

Otherwise, we could just cache the dots when building the manpages (provided we add the versions in ascending order).

I think we do add things out of order (e.g., we may release v1.2.3 after v1.3.0 has come out). It would probably be fixable by sorting the whole list and re-adjusting the neighbors of any newly-added items. But if we are not going to rip it out entirely, I think the speedup you showed in #1567 should be plenty.

Otherwise, we could just cache the dots when building the manpages (provided we add the versions in ascending order).

I think we do add things out of order (e.g., we may release v1.2.3 after v1.3.0 has come out). It would probably be fixable by sorting the whole list and re-adjusting the neighbors of any newly-added items. But if we are not going to rip it out entirely, I think the speedup you showed in #1567 should be plenty.


is this still alive? and any plan?

Curious to know any further updates on this project. Is it still alive?

Looks dead to me, no commit in over 3 years.

it looks like this project  is unused for product environment.

anyone has a program which is grpc in C language, please talk with me, 3ks.


Unknown error with no information when attempting to turn on "settings sync" with extensions disabled

VS Code Version:
OS Version:

Steps to Reproduce:

Disable built-in Github authentication and Microsoft Account for performance and privacy reasons. - I use the awesome code settings sync extension from whom Microsoft stole the name to embed it's own invasive and buggy proprietary service.
Click "manage gear"
Click "Turn on settings sync"

Does this issue occur when all extensions are disabled?: Yes/No

There is an unhelpful, useless, message saying that there was an error turning on settings sync, and asking users to check the logs for more detais.
The logs contains absolutely no information at all.

It's not a dupe.

This one is another one of those issues  that happen because vscode now just assumes that users are sending all their data to microsoft services through the auth extensions.

I am unclear whether anything is forcing you to to stop using the settings sync extension that you like and requiring you to use the integrated settings sync which apparently has dependencies that you are unwilling to accept.

Nope. I clicked it. Accidentally, and seemed like a bug to me, so I opened the bug report.


Remove cut nodes from view

This adds a new cut attr to nodes when they're cut, and adds a cut-node class that sets display to none.
@taramk let me know how you feel about it.
Closes #274

Since attributes are persisted but clipboard state isn't, this could lead to inconsistent state across a page reload. Instead of storing it in an attribute, maybe you could just check the clipboard state if the node is in there?

Ok @progrium I made the change. Much cleaner.