Sliders (text-size, brush width, etc) are not draggable on iPad Safari

Describe the bug
The slider in the tools area (e.g. text size, draw brush size, rotation range, etc) cannot be manipulated at all using touch controls on my iPad - my users have to manually enter a number in the input-box to the side of the slider:

The slider cannot be dragged: attempting to drag the slider "thumb" with my fingers doesn't do anything, though the whole slider does briefly darken when initially tapped.
The slider also cannot be moved by tapping on the slider track/rail.

To Reproduce
Steps to reproduce the behavior:

Open https://ui.toast.com/tui-image-editor/ in iOS Safari on an iPad (I'm using a 2018 iPad Pro running iOS 13.3.
Select the text tool in the bottom menubar.
Try to drag the Text size slider with your fingers. It won't move.

Expected behavior
I expect to be able to drag the slider with my fingers and to tap any point on the slider trackbar/rail to make the slider thumb move directly to that location.
Screenshots
Smartphone (please complete the following information):

Device: iPad Pro 2018 (MTHN2LL/A)
OS: iOS 13.3
Browser Safari 13

Additional context
Is there a reason you're using a custom control using scripts and
 instead of using HTML5's <input type="range" />?
I noticed that when entering a value directly into the input box to the right there is no indication that the input box has focus and the displayed value doesn't update until you press the [Enter] key. I see that this is an <input type="text" />. Please change this to <input type="number" min="0" max="30" /> so that browsers can prevent invalid input with native UX.
Additionally, that <input /> next to the range slider should not wire-up the keyup, keydown, and blur events because those won't be fired by all types of user-interaction (e.g. pasting a value won't work), instead it should only use the input event (don't handle the change event either because that only fires when the input loses focus).

I just wrote this runtime patch for the Tui Image Editor that adds HTML5 range inputs, sets-up event handlers, and hides the original touch-unfriendly-sliders:

		function setUpHtml5Sliders() {

			// btw: https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/

			/*

			// Add HTML5 slider inputs to each slider wrapper:
			const tuiSliders = document.querySelectorAll( '.tui-image-editor-range' );
			for( let i = 0; i < tuiSliders.length; i++ ) {
				/** @type HTMLDivElement * /
				const div = tuiSliders[i];

				const input = document.createElement( 'input' );
				input.type = 'range';

				if( div.classList.contains( 'tie-rotate-range' ) ) {
					input.min = "-360";
					input.max = "360";
				}
				else if( div.classList.contains( 'tie-draw-range' ) ) {
					input.min = "5";
					input.max = "30";
				}
				else if( div.classList.contains( 'tie-stroke-range' ) ) {
					input.min = "2";
					input.max = "300";
				}
				else if( div.classList.contains( 'tie-text-range' ) ) {
					input.min = "10";
					input.max = "100";
				}
				// We don't care about brightness, noise, pixelate, colorfilter, filter-tint-opacity (which is an #id not a .class, weirdly)

				div.appendChild( input );
			}
			*/

			// Better idea:
			const rangeControls = [
				window.imageEditor.ui.rotate._els.rotateRange,
				window.imageEditor.ui.draw._els.drawRange,
				window.imageEditor.ui.shape._els.strokeRange,
				window.imageEditor.ui.text._els.textRange
			];

			rangeControls.forEach( convertTuiRangeToHtml5Range );
		}

		function convertTuiRangeToHtml5Range( tuiRange ) {

/*

	Range

		<input type="range" min="5" max="30" style="width: 100%; display: inline-block;">

    <input class="tie-draw-range-value tui-image-editor-range-value" value="0">

*/

			/** @type HTMLDivElement */
			const divWrapper = tuiRange.rangeElement; // `<div class="tie-draw-range tui-image-editor-range">`

			/** @type HTMLInputElement */
			const textBoxInput = tuiRange.rangeInputElement;

			//

			const rangeInput = document.createElement( 'input' );
			rangeInput.type          = 'range';
			rangeInput.min           = tuiRange._min.toString();
			rangeInput.max           = tuiRange._max.toString();
			rangeInput.valueAsNumber = textBoxInput.valueAsNumber;
			rangeInput.style.width   = '100%';
			rangeInput.style.display = 'inline-block';

			divWrapper.appendChild( rangeInput );

			// Reminder: 'input' happens "live" whereas 'change' happens only when the element loses focus.
			rangeInput.addEventListener( 'input', function( ev ) {

				/** @type HTMLInputElement */
				const inp = ev.currentTarget;

				// Update the value of the <input type="text" /> and fire its input/change event to cause the image-editor to see the value has changed. This will also cause `tuiRange._value` to be updated as well.
				textBoxInput.value = inp.value;

				//textBoxInput.dispatchEvent( new Event( 'input' ) );
				textBoxInput.dispatchEvent( new Event( 'blur' ) ); // annoyingly, the input's `keyup`, `keydown`, and `blur` events are wired-up, but not `input` or `change` - that's dumb.
			} );

			// Also reverse-wire-up the textbox input to the slider, so manual updates to the input will update the slider:
			textBoxInput.addEventListener( 'input', function( ev ) {

				rangeInput.valueAsNumber = textBoxInput.valueAsNumber; // don't forget that this won't fire 'input' or 'change' on the rangeInput, thus avoiding an infinite loop, phew!
			} );

			/** @type HTMLDivElement */
			const tuiRangeSlider = divWrapper.querySelector( '.tui-image-editor-virtual-range-bar' );
			tuiRangeSlider.style.visibility = 'hidden';
		}

To use this, just call setUpHtml5Slider() after the ImageEditor has loaded. In my case my page loads the ImageEditor with the page, so I call it during DOMContentLoaded:
window.addEventListener( 'DOMContentLoaded', function( ev ) {
			setUpHtml5Sliders();
} );

The imageEditor with includeUI option was created without considering the mobile situation. Improvements may be included after internal discussions.

This bug also affects Android tablets.

I just wrote this runtime patch for the Tui Image Editor that adds HTML5 range inputs, sets-up event handlers, and hides the original touch-unfriendly-sliders:
To use this, just call setUpHtml5Slider() after the ImageEditor has loaded. In my case my page loads the ImageEditor with the page, so I call it during DOMContentLoaded:
window.addEventListener( 'DOMContentLoaded', function( ev ) {
    setUpHtml5Sliders();
} );

function setUpHtml5Sliders() {

	const rangeControls = [
		window.imageEditor.ui.rotate._els.rotateRange, // NOTE: The element class name has a typo: `tie-ratate-range-value` not "tie-rotate-range-value".
		window.imageEditor.ui.draw  ._els.drawRange,
		window.imageEditor.ui.shape ._els.strokeRange,
		window.imageEditor.ui.text  ._els.textRange
	];

	rangeControls.forEach( convertTuiRangeToHtml5Range );
}

function convertTuiRangeToHtml5Range( tuiRange ) {
/*

Range

<input type="range" min="5" max="30" style="width: 100%; display: inline-block;">

<input class="tie-draw-range-value tui-image-editor-range-value" value="0">

*/
	/** @type HTMLDivElement */
	const divWrapper = tuiRange.rangeElement; // `<div class="tie-draw-range tui-image-editor-range">`
	correctRangeLabelText( divWrapper );

	/** @type HTMLInputElement */
	const textBoxInput = tuiRange.rangeInputElement;

	// `valueAsNumber` only returns a number if the input type specifically supports it - and unfortunately `<input type="text" />` (or in this case, undefined) will always return NaN even if it has a "numeric" string value. Boo!

	const rangeInput = document.createElement( 'input' );
	rangeInput.type          = 'range';
	if( rangeInput.type !== 'range' ) return; // Don't do anything if the browser doesn't support `<input type="range" />`.

	rangeInput.min           = tuiRange._min.toString();
	rangeInput.max           = tuiRange._max.toString();
	rangeInput.style.width   = '100%';
	rangeInput.style.display = 'inline-block';

	copyInputNumberValue( /*src*/ textBoxInput, /*dest:*/ rangeInput );

	divWrapper.appendChild( rangeInput );

	// Reminder: 'input' happens "live" whereas 'change' happens only when the element loses focus.
	rangeInput.addEventListener( 'input', function( ev ) {

		/** @type HTMLInputElement */
		const inp = ev.currentTarget;

		// Update the value of the <input type="text" /> and fire its input/change event to cause the image-editor to see the value has changed. This will also cause `tuiRange._value` to be updated as well.
		textBoxInput.value = inp.value;
		textBoxInput.dispatchEvent( new Event( 'blur' ) );
	} );

	// Also reverse-wire-up the textbox input to the slider, so manual updates to the input will update the slider:
	textBoxInput.addEventListener( 'input', function( ev ) {

		copyInputNumberValue( /*src*/ textBoxInput, /*dest:*/ rangeInput );
	} );

	textBoxInput.type = 'number';
	textBoxInput.min  = rangeInput.min;
	textBoxInput.max  = rangeInput.max;

	divWrapper.querySelector( 'div.tui-image-editor-virtual-range-bar' ).style.visibility = 'hidden'; // Hide the original slider track and thumb.
}

/**
	* @param {HTMLDivElement} divWrapper */
function correctRangeLabelText( divWrapper ) {

	if( divWrapper.classList.contains( 'tie-rotate-range' ) ) {
		/** @type HTMLLabelElement */
		const label = divWrapper.parentElement.querySelector( 'label.range' );
		if( label.textContent.trim() === "Range" ) {
			label.textContent = "Rotation angle";
		}
	}
	else if( divWrapper.classList.contains( 'tie-draw-range' ) ) {
		/** @type HTMLLabelElement */
		const label = divWrapper.parentElement.querySelector( 'label.range' );
		if( label.textContent.trim() === "Range" ) {
			label.textContent = "Brush size";
		}
	}
}

Here's how it looks in Chrome 80 on Windows 10:

While initially it isn't as pretty as the original custom slider, native range sliders can still be styled: https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/
But with these styles:

/* <input type="range"> styling: */
@supports ( -webkit-appearance: none ) {

	input[type=range] {
		-webkit-appearance: none; /* Hides the slider so that custom slider can be made */
		background: transparent; /* Otherwise white in Chrome */
	}
	input[type=range]:focus {
		outline: none; /* Removes the blue border. You should probably do some kind of focus styling for accessibility reasons though. */
	}

	input[type=range]::-webkit-slider-thumb {
		-webkit-appearance: none;
		border: none;
		height: 16px;
		width: 16px;
		border-radius: 8px;
		background: white;
		cursor: pointer;
		margin: 0;
	}
	input[type=range]::-webkit-slider-runnable-track {
	/* Unfortunately we can't have a thin or 1px tall track because:
	1. If the `-webkit-slider-runnable-track` element has a 1px height it's very difficult for the user to click or tap.
	2. It makes positioning the thumb a pain. */

		width: 100%;
		height: 18px; /* 18px height so users can click anywhere, if it's only a few px tall it's very hard to click on */

		cursor: pointer;
		background-color: #404040;
		border-radius: 9px;
	}
}
@supports ( -moz-appearance: none ) {

	input[type=range] {
		-moz-appearance: none;
		width: 100%;
	}
	input[type=range]:focus {
		outline: none; /* Removes the blue border. You should probably do some kind of focus styling for accessibility reasons though. */
	}

	/* All the same stuff for Firefox */
	input[type=range]::-moz-range-thumb {
		border: none;
		height: 16px;
		width: 16px;
		border-radius: 8px;
		background: white;
		cursor: pointer;
		margin: 0;
	}
	input[type=range]::-moz-range-track {
		width: 100%;
		height: 18px;
		cursor: pointer;
		background-color: #404040;
		border-radius: 9px;
	}
}

It looks like this in Chrome, Firefox, Safari (macOS and iOS), and MS Edge (Chromium-based).

@Jehoel I have been struggling with this and your solution seemed like a light at the end of the tunnel unless I came accross your function call of copyInputNumberValue( /*src*/ textBoxInput, /*dest:*/ rangeInput ). you haven't seemed to have defined it anywhere. Care to tell what that is? Just FYI, I am using this library inside React.

I received a comment reply earlier today (that seems to have been deleted?) asking me to post the copyInputNumberValue function referenced in my code above.
I've updated the above reply to now include the definition of function copyInputNumberValue.

I’ve updated my comment in that thread with the definition of copyInputNumberValue, you can Ctrl+F to get it. I’ve also posted it below for you:
                                /**
                                *
                                 * @param {HTMLInputElement} src
                                * @param {HTMLInputElement} dest
                                */
                                function copyInputNumberValue( src, dest ) {

                                                const valueNum = parseInt( src.value, /*radix:*/ 10 );
                                                if( isNaN( valueNum ) ) {
                                                                dest.valueAsNumber = parseInt( dest.min );
                                                }
                                                else {
                                                                dest.valueAsNumber = valueNum; // don't forget that this won't fire 'input' or 'change' on the rangeInput, thus avoiding an infinite loop, phew!
                                                }
                                }

From: Ganeshan Dash<EMAIL_ADDRESS>Sent: 08 October 2020 12:58
To: nhn/tui.image-editor<EMAIL_ADDRESS>Cc: Dai Rees<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [nhn/tui.image-editor] Sliders (text-size, brush width, etc) are not draggable on iPad Safari (#365)
I just wrote this runtime patch for the Tui Image Editor that adds HTML5 range inputs, sets-up event handlers, and hides the original touch-unfriendly-sliders:
To use this, just call setUpHtml5Slider() after the ImageEditor has loaded. In my case my page loads the ImageEditor with the page, so I call it during DOMContentLoaded:
window.addEventListener( 'DOMContentLoaded', function( ev ) {
setUpHtml5Sliders();

} );
function setUpHtml5Sliders() {
const rangeControls = [
     window.imageEditor.ui.rotate._els.rotateRange, // NOTE: The element class name has a typo: `tie-ratate-range-value` not "tie-rotate-range-value".

     window.imageEditor.ui.draw  ._els.drawRange,

     window.imageEditor.ui.shape ._els.strokeRange,

     window.imageEditor.ui.text  ._els.textRange

];
rangeControls.forEach( convertTuiRangeToHtml5Range );
}
function convertTuiRangeToHtml5Range( tuiRange ) {
/*

Range

*/
/** @type HTMLDivElement */
const divWrapper = tuiRange.rangeElement; //

correctRangeLabelText( divWrapper );
/** @type HTMLInputElement */
const textBoxInput = tuiRange.rangeInputElement;
// valueAsNumber only returns a number if the input type specifically supports it - and unfortunately <input type="text" /> (or in this case, undefined) will always return NaN even if it has a "numeric" string value. Boo!
const rangeInput = document.createElement( 'input' );
rangeInput.type          = 'range';
if( rangeInput.type !== 'range' ) return; // Don't do anything if the browser doesn't support <input type="range" />.
rangeInput.min           = tuiRange._min.toString();
rangeInput.max           = tuiRange._max.toString();
rangeInput.style.width   = '100%';
rangeInput.style.display = 'inline-block';
copyInputNumberValue( /src/ textBoxInput, /dest:/ rangeInput );
divWrapper.appendChild( rangeInput );
// Reminder: 'input' happens "live" whereas 'change' happens only when the element loses focus.
rangeInput.addEventListener( 'input', function( ev ) {
     /** @type HTMLInputElement */

     const inp = ev.currentTarget;

     // Update the value of the <input type="text" /> and fire its input/change event to cause the image-editor to see the value has changed. This will also cause `tuiRange._value` to be updated as well.

     textBoxInput.value = inp.value;

     textBoxInput.dispatchEvent( new Event( 'blur' ) );

} );
// Also reverse-wire-up the textbox input to the slider, so manual updates to the input will update the slider:
textBoxInput.addEventListener( 'input', function( ev ) {
     copyInputNumberValue( /*src*/ textBoxInput, /*dest:*/ rangeInput );

} );
textBoxInput.type = 'number';
textBoxInput.min  = rangeInput.min;
textBoxInput.max  = rangeInput.max;
divWrapper.querySelector( 'div.tui-image-editor-virtual-range-bar' ).style.visibility = 'hidden'; // Hide the original slider track and thumb.
}
/**

@param {HTMLDivElement} divWrapper */

function correctRangeLabelText( divWrapper ) {
if( divWrapper.classList.contains( 'tie-rotate-range' ) ) {
     /** @type HTMLLabelElement */

     const label = divWrapper.parentElement.querySelector( 'label.range' );

     if( label.textContent.trim() === "Range" ) {

             label.textContent = "Rotation angle";

     }

}
else if( divWrapper.classList.contains( 'tie-draw-range' ) ) {
     /** @type HTMLLabelElement */

     const label = divWrapper.parentElement.querySelector( 'label.range' );

     if( label.textContent.trim() === "Range" ) {

             label.textContent = "Brush size";

     }

}
}
Here's how it looks in Chrome 80 on Windows 10:
[image]https://user-images.githubusercontent.com/1693078/77242489-11825800-6bbc-11ea-887d-3b07837c4951.png
While initially it isn't as pretty as the original custom slider, native range sliders can still be styled: https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/
But with these styles:
/*  styling: */
@supports ( -webkit-appearance: none ) {
input[type=range] {
     -webkit-appearance: none; /* Hides the slider so that custom slider can be made */

     background: transparent; /* Otherwise white in Chrome */

}
input[type=range]:focus {
     outline: none; /* Removes the blue border. You should probably do some kind of focus styling for accessibility reasons though. */

}
input[type=range]::-webkit-slider-thumb {
     -webkit-appearance: none;

     border: none;

     height: 16px;

     width: 16px;

     border-radius: 8px;

     background: white;

     cursor: pointer;

     margin: 0;

}
input[type=range]::-webkit-slider-runnable-track {
/* Unfortunately we can't have a thin or 1px tall track because:

If the -webkit-slider-runnable-track element has a 1px height it's very difficult for the user to click or tap.

It makes positioning the thumb a pain. */
width: 100%;

height: 18px; /* 18px height so users can click anywhere, if it's only a few px tall it's very hard to click on */

cursor: pointer;

background-color: #404040;

border-radius: 9px;

}
}
@supports ( -moz-appearance: none ) {
input[type=range] {
     -moz-appearance: none;

     width: 100%;

}
input[type=range]:focus {
     outline: none; /* Removes the blue border. You should probably do some kind of focus styling for accessibility reasons though. */

}
/* All the same stuff for Firefox */
input[type=range]::-moz-range-thumb {
     border: none;

     height: 16px;

     width: 16px;

     border-radius: 8px;

     background: white;

     cursor: pointer;

     margin: 0;

}
input[type=range]::-moz-range-track {
     width: 100%;

     height: 18px;

     cursor: pointer;

     background-color: #404040;

     border-radius: 9px;

}
}
It looks like this in Chrome, Firefox, Safari (macOS and iOS), and MS Edge (Chromium-based).
[image]https://user-images.githubusercontent.com/1693078/77283477-aacb7000-6c89-11ea-9884-5f7a7550972d.png
@Jehoelhttps://github.com/Jehoel I have been struggling with this and your solution seemed like a light at the end of the tunnel unless I came accross your function call of copyInputNumberValue( /src/ textBoxInput, /dest:/ rangeInput ). you haven't seemed to have defined it anywhere. Care to tell what that is? Just FYI, I am using this library inside React.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/nhn/tui.image-editor/issues/365#issuecomment-705790473, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAM5LFTZ2N6W2M6RJAFQA7TSJYKS5ANCNFSM4LREQXQQ.

@Jehoel yes, i had added the commented. deleted I didn't really need the function. What is it's use anyway?
Also, unrelated, it seems like this library uses relative font size. Basically when I add text the default font size seems to be different for images with different dimensions. Is that something you have noticed?

I know this is not a solution, but it can be an alternative that uses image editor on a smartphone. i added button to increase and decrease the brightness, you can also added some icon to increase and decrease the brightness.
here is my code.
     const [brightness, setBrightness] = useState(0);
function brightness
brightnessImage(status,value) {     const editorInstance = this.editorRef.current.getInstance();  // get canvas      if(status === 'up'){       editorInstance.applyFilter("brightness", {         brightness: parseInt(Brightness + value, 10) / 255,       });       const countBrightness = Brightness + value;       setBrightness(countBrightness );     }else if (status === "down") {       editorInstance.applyFilter("brightness", {         brightness: parseInt(Brightness - value, 10) / 255,       });       const countBrightness = Brightness - value;       setBrightness(countBrightness );     }   }
and trigger button
          Brightness

I guess the problem is in this piece of code
{
    key: "_changeSlideFinally",
    value: function _changeSlideFinally(event) {
      event.stopPropagation();

      // This is where the bug is:
      if (event.target.className !== 'tui-image-editor-range') {
        return;
      }
      // ... More code
  }
}

The clicked slider element can't have extra classes, the comparison is for exact string and sometimes the element gets extra class like "tie-draw-range". Plus, the check is on event.target and the clicked element can be a sub element of the range slider. So this would solve it:
let bar = event.target.closest('.tui-image-editor-range')
if (!bar) {
  return;
}

My temporary solution is to reset the className on the range element before click gets fired
rangeElement.className = 'tui-image-editor-range'
But actually, on top of that you also need to transform the touch event to a 'click' event
    handleTouchStart(event) {
      let rangeEl = event.target.closest('.tui-image-editor-range')
      if (!rangeEl) {
        return
      }
      const touchX = event.touches[0].pageX
      const touchY = event.touches[0].pageY
      const clickEvent = new MouseEvent('click', {
        bubbles: true,
        cancelable: true,
        view: window,
        clientX: touchX,
        clientY: touchY,
        pageX: touchX,
        pageY: touchY,
        screenX: touchX,
        screenY: touchY
      })
      // Fix for bug in Tui-image-editor
      rangeEl.className = 'tui-image-editor-range'
      rangeEl.dispatchEvent(clickEvent)
    },


Is there any pattern behind when times are in ms or in s?

Try this:
import matplotlib.pyplot as plt

import mne
from mne.datasets import sample

# Load and preprocess data
data_path = sample.data_path()
raw_fname = data_path + '/MEG/sample/sample_audvis_filt-0-40_raw.fif'
raw = mne.io.read_raw_fif(raw_fname, preload=True).pick_types(
    meg='grad', stim=True, eeg=False).filter(1, None, method='iir')

# Set up events
events = mne.find_events(raw)
event_id = {'Aud/L': 1, 'Aud/R': 2}
tmin, tmax = -.1, .5

# regular epoching
picks = mne.pick_types(raw.info, meg=True)
epochs = mne.Epochs(raw, events, event_id, tmin, tmax, reject=None,
                    baseline=None, preload=True, verbose=False)

epochs["Aud"].average().plot_joint(times=[.1, .15], ts_args={'xlim':(-.1, .4)});

Or rather, DON'T do this, because the last step sometimes just results in a very silly plot, but sometimes (particularly when using %matplotlib inline) takes a very long time to run because it is trying to plot something very weird.
Instead, you must plot as:
epochs["Aud"].average().plot_joint(times=[.1, .15], ts_args={'xlim':(-100, 400)});

This is arguably very counterintuitive.
Is there any chance we can get this sorted out at all, or are we locked into this heterogeneity by legacy?

To clarify, this is not about plot_joint, which simply passes parameters to evoked.plot and evoked.plot_topomap.

I think in all newer code we try to use s and m but in some older legacy places we have ms and/or mm. IMO it would be worth going through a deprecation cycle with time_units='ms' -> 's', it's what we're doing with fit_sphere_to_headshape [here] (https://github.com/mne-tools/mne-python/blob/master/mne/bem.py#L826).

well I think we can live with : 'xlim':(-100, 400)
it does not say time and the data is plotted in x axis in milliseconds
that's why

well I think we can live with : 'xlim':(-100, 400)
it does not say time and the data is plotted in x axis in milliseconds
that's why

Definitely not least-surprise though you have to admit.

IMO it would be worth going through a deprecation cycle with time_units='ms' -> 's'

Yes! I can go through the code and see how big of a deal it would be.

I don't really like the idea of having complex API handling time units...
personally I think we can live with the current API

I just had my browser crash on me because I set xlim in seconds. (In the Notebook, it creates a massive PNG in that case.)
I will at least try to think of avoiding this situation, e.g. by fixing plot_joint for situations where times is not in xlim or xlim is very short.

Closing as "won't fix" until we convince @agramfort it's worthwhile :)
But yes if you can think of a good way to warn people at least that would help.

This continues to come up from time to time. And from working on XXX it looks like the only plots that use [ms] are evoked.plot. This is inconsistent even with things that produce evoked.plot-like sensor trace plots. :(
@agramfort any change of heart about adding time_unit to evoked.plot and evoked.plot_joint? I think it would be a couple dozen lines of code to do it.
I'd actually be in favor of a deprecation cycle to get to 's'. It would be painful but then everything would be unified.

And by "working on XXX" I meant "working on #5079" ... that's what I get for drafting a reply before actually making the PR :)

so "Time (s)" everywhere?

Yes, we are 98% there, just evoked.plot to conquer IIRC


feature req: add "scroll one page down" command for articlelist

For the articlelist it would be very convenient to be able to scroll a single page down without changing the currently selected line position. Using the PgUp, PgDn keys has the disadvantage that the selected line changes to the bottom/top.

Navigation keys are handled by STFL, so there's nothing we can do about it. But STFL is no longer maintained, and we plan to replace it with something else eventually, so I'll keep this issue open to remind us of the problem—we'll try to avoid it with the new library if we can.


Add input[type="search"] selector to box-sizing rule

More specific rules override more general ones, need to add this to override line 356 of normalize

Hey, thanks for this. If you could squash your changes into the first commit I'll get this merged.


ignore grace notes

In this musicxml file, the playback goes crazy in bars 9 and 10 because of the grace notes - it seems like beats are getting skipped somehow. I saw that grace notes are a future work item, but for the time-being would it be okay to omit them entirely?

Yes, that's right. And omitting them is indeed better than messing up the cursor & playback for now. Will merge this until it's handled correctly, thanks!


Prediction links have been changed from fields to descriptions in the embed.

Description

Prediction links have been changed from fields to descriptions in the embed. (Unable to test due to not being able to emulate lounge API requests)
Checklist

[ ] If code changes were made, they have been tested
[x] This PR fixes an issue
[ ] This PR is not a code change (ie. documentation, typehinting, comments, etc.)

2 commits due to error where I didnt sync my fork but I synced my local repo, and commited while it was desynced, had to revert changes.

Sorry I just saw this.

Please remove the variable updater_link from the code since it’s not used anymore.
You changed the wording on your prediction command. Idc too much, but I liked it the old way.

Overall, good work!

I am merging this in without a review. I see very little that could go wrong. Very straightforward changes.


What is the Microsoft Graph API for adding a row to excel present in another drive?

The documents on add row to workbook don't mention how to add row in Excel file present in another drive.
Although we have got the below api which works but it's not mentioned anywhere in documentation.
https://graph.microsoft.com/v1.0
 /sites/{siteId}
 /drives/{driveId}
 /items/{itemId}
 /workbook/tables/Status/rows/add

we need to get the actual documentation for the API to update Excel present in another drive for which I have the driveId.
[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: aa8ea6cf-6f8f-c862-ae29-699c5e0ddc0e
Version Independent ID: 5787d91b-2b8d-3a44-e2ec-475909e682ed
Content: Create TableRow - Microsoft Graph v1.0
Content Source: api-reference/v1.0/api/table-post-rows.md
Product: excel
Technology: microsoft-graph
GitHub Login: @lumine2008
Microsoft Alias: MSGraphDocsVteam

Hi @jasonjoh, Would it be possible to advice on this.

@raga-adbe-gh the URL you posted above works, right? This makes sense to me, since the /workbook/tables/Status/rows/add bit of the API URL should be the same no matter how you arrive at the file.
I see that the doc only lists URLs going through the /me/drive route, but there are so many other ways the API lets you get to a file:

/me/drives/{drive-id}/...
/users/{user-id}/drive/...
/users/{user-id}/drives/{drive-id}/...
/sites/{site-id}/drives/{drive-id}/...

And lots others, as listed in https://learn.microsoft.com/en-us/graph/api/driveitem-get?view=graph-rest-1.0&tabs=http#http-request.

Thanks a lot @jasonjoh this helps. The drives/{drive-id}/items/{item-id}/workbook/... worked good. As suggested we will proceed.
However the drives/{drive-id}/root:{item-path}:/workbook/... failed with Could not obtain a WAC access token, we could not get much details on this. But both works for default drive though.

Thanks @jasonjoh
Adding few more details on previous question.
For the https://graph.microsoft.com/v1.0/sites/{siteIds}/drives/{driveId}/root:/{item-path}:/workbook/tables/Status/rows/add
We are getting this error though, any inputs on this could help
{ 	"error": { 		"code": "AccessDenied", 		"message": "Could not obtain a WAC access token.", 		"innerError": { 			"date": "xyz", 			"request-id": "xyz", 			"client-request-id": "xyz" 		} 	} }
This would helps us to avoid additional call to get itemId from a path.

@raga-adbe-gh Disclaimer: I'm not part of the OneDrive or SharePoint teams so I'm just answering based on my observation. I reproduce the WAC access token error using the file path. It looks like you'll need to use the item's ID to access the Excel APIs.

Thank you @jasonjoh for helping again with valuable inputs.


std::_bind is not compatible with std::function

if (error == AAUDIO_ERROR_DISCONNECTED){
std::function<void(void)>
restartFunction = std::bind(&AudioEngine::restart,
static_cast<AudioEngine *>(userData));
        new std::thread(restartFunction);
}

Went over the whole file multiple times, and I can't find any difference from what is in your tutorial, but the block of text in the middle always shows an error

Thanks very much for filing this issue - and sorry that you ran into it. I believe something changed in the NDK which means that you now need to explicitly link against libandroid which can be done within CMakeLists.txt by adding android to the list of target_link_libraries

I thought that was the problem but having now removed libandroid from the list of libraries the app still compiles. Please could you post the compilation error you're receiving. I'll try cloning from scratch to see if I can reproduce.

Thanks for getting back to me!
It’s “Class ‘std::_bind<void(AudioEngine::)(),AudioEngine>’ is not compatible with class ‘std::function <void()>”


Missing QtWebKitWidgets thus cannot launch

Description of your problem
I tried to launch spyder 3.0.0 beta2 from command line with qt5 installed from homebrew, sip and pyqt5 install from source code and spyder preview installed from pip, when I launched it, the error log said
Traceback (most recent call last):
File "/usr/local/lib/python3.5/site-packages/spyderlib/spyder.py", line 3119, in main
mainwindow = run_spyder(app, options, args)
File "/usr/local/lib/python3.5/site-packages/spyderlib/spyder.py", line 3005, in run_spyder
main.setup()
File "/usr/local/lib/python3.5/site-packages/spyderlib/spyder.py", line 822, in setup
message=_("Spyder Internal Console\n\n"
File "/usr/local/lib/python3.5/site-packages/spyderlib/plugins/console.py", line 79, in init
self.find_widget.set_editor(self.shell)
File "/usr/local/lib/python3.5/site-packages/spyderlib/widgets/findreplace.py", line 250, in set_editor
from spyderlib.qt.QtWebKit import QWebView
File "/usr/local/lib/python3.5/site-packages/spyderlib/qt/QtWebKit.py", line 10, in
from PyQt5.QtWebKitWidgets import QWebPage, QWebView      # analysis:ignore
ImportError: dlopen(/usr/local/lib/python3.5/site-packages/PyQt5/QtWebKitWidgets.so, 2): Library not loaded: /usr/local/opt/qt5/lib/QtWebKitWidgets.framework/Versions/5/QtWebKitWidgets
Referenced from: /usr/local/lib/python3.5/site-packages/PyQt5/QtWebKitWidgets.so
Reason: image not found

Spyder Version: 3.0.0 beta2
Python Version: 3.5.1
Operating system: OS X 10.11 El Cap

This is probably caused because the latest Qt5 version (5.6) deprecated the QtWebKit module in favor of QtWebEngine.
This problem will be fixed in beta3.

Yeah, it worked again when I downgraded qt5 back to 5.5.1-2

I'm seeing this issue today.
I ran the following commands
 %  conda update qt pyqt
 %  conda install -c spyder-ide spyder=3.0.0b3
 %  spyder

Get this result:
  Traceback (most recent call last):
  File "/Users/raysalemi/anaconda/bin/spyder", line 3, in <module>
   start.main()
 File "/Users/raysalemi/anaconda/lib/python2.7/site-packages/spyderlib/app/start.py", line 118, in main
from spyderlib.app import spyder
 File "/Users/raysalemi/anaconda/lib/python2.7/site-packages/spyderlib/app/spyder.py", line 91, in    <module>
   from qtpy import QtWebEngineWidgets
 File "/Users/raysalemi/anaconda/lib/python2.7/site-packages/qtpy/QtWebEngineWidgets.py", line 32, in <module>
   from PyQt5.QtWebKitWidgets import QWebPage as QWebEnginePage
 ImportError: dlopen(/Users/raysalemi/anaconda/lib/python2.7/site-packages/PyQt5/QtWebKitWidgets.so, 2): Library not loaded: @rpath/./libQt5WebKitWidgets.5.dylib
 Referenced from: /Users/raysalemi/anaconda/lib/python2.7/site-packages/PyQt5/QtWebKitWidgets.so
 Reason: image not found

It looks like this bug may still exist.

This is caused by another problem. We're discussing about it in #3267.

Thanks for the pointer.  I'm over there now.


Bugfix: Search crashes webpart when its empty && upgrade to SPFx v1.13.1

Category

[ ] Bug Fix
[x] New Feature
Related issues: upgrade SPFx version to v1.13.1

What's in this Pull Request?
Solution updated to SPFx v1.13.1.
Solution version updated to 3.0.0
I had to disable a couple of tslint rules to prevent errors and warning during build. The 2 rules are indented in the tslint.json file.
Guidance
No changes were made to the webpart codebase.  As part of the SPFx version upgrade, all references to the hosted workbench were removed. Otherwise, everything should work the same.

Thank you for providing @DonKirkham. We are looking to create a new v3 of startkit asap, which we will merge this PR into shortly.

Sorry, the first 2 commits are not mine, but I could not figure out how to remove them from this PR. I think they have already been implemented. I have a separate PR ready for Issue 45 and this SPFx version upgrade should fix Issue 521.

Thank you @DonKirkham, this has been merged to the V3 branch. https://github.com/pnp/sp-starter-kit/tree/v3.


Remove CF-RAY header from being proxied to downstream services

If we orange-cloud proxy, downstream services using cloudflare orange-cloud would break. See: https://support.cloudflare.com/hc/en-us/articles/200171976-Error-1000-DNS-points-to-prohibited-IP
One of the things we can try is to remove the CF-RAY header from being passed downstream. I believe this should be safe because api.flow.io is currently grey-clouded and I set up a parallel proxy url at api2.flow.io (which is orange-clouded and we can test there).

Lgtm


Gy/tensor

Implemented TensorContext based on Apache Arrow.

As we discussed before, the sampler holds nothing.


Make kube-proxy container optional

This fixes #514
Changes:

Changed operator deployment to optionally create the proxy container based on the value kubeProxy.enable
By default it will be enabled to maintain backwards compatibility.

Hi @sergeiwaigant. We don't yet have concrete plans for when a new version will be released. We always release the helm chart in combination with a new operator version.


Solver Handler does not track right hand when tracked target type is set to Controller Ray or Interactor

This is for MRTK 3 using the Solver Handler to attach an object to the end of a hand ray.
When the solver Handler's Tracked Target Type is set to Controller Ray, it reverts to Interactor which requires two XRBaseInteractors to be assigned.

In our use case, the solver handler is in a prefab which gets instantiated later so the Ray Interactors cannot be manually assigned.
We added a component in the prefab that assigns the interactors on instantiation. All this is working fine, if that's the intended pattern we should use.
The actual issue
When the solver handler's Tracked Target Type is set to Controller Ray (Interactor) it will only listen to the left hand which is set as the preferred hand. This occurs even when there is only a right hand or right controller present. When the right hand/controller is present the solver stops working, it does not attach an object to the end of the ray.
To reproduce

Set a Solver Handler's Tracked Target Type to Controller Ray
Assign MRTK Ray Interactors for each hand to the XRBaseInteractor fields.
Use the right hand
Nothing happens, only the left hand ray works

Expected behavior
The Solver handler should switch hand or controller rays when the user switches hands or controllers.
Screenshots
I've added some modifications to fix this locally on line 444. Instead of always assigning the left handedness (PreferredTrackedHandeded), a function is called to chech if the other hand is present instead.

Proposed function

I can push a PR for this unless there are other changes in the works.
Your setup (please complete the following information)

Unity Version [2021.3.11f1]
MRTK Version [v3.0]

Target platform (please complete the following information)

HoloLens 2
WMR immersive
OpenVR

Additional context
Add any other context about the problem here.

Another issue is IsInvalidTracking does not have a condition for TrackedTargetType == TrackedTargetType.ControllerRay beyond testing if the controllerInteractor is null.

Here's a rough workaround to get the ControllerRay case to swap tracked interactors.

IsInvalidTracking is a private function, so we can't extend this to modify these conditions. It would be nice to have each condition separated into a function call specific to the TrackedTargetType. For both IsInvalidTracking and AttachedToNewTrackedObject. The latter is protected, but that's a lot of duplicate code to copy over to modify one line.
This is another method to test if the Interactor is being tracked or not. There may be a better way to check this.

I don't like how this last function is getting called twice per frame, per hand to make the workaround function, I'm sure there's a better way to condense that logic.

We're currently working on completely refactoring the solvers + constraints architecture. It will cover this, and much more :) Stay tuned! It'll combine solvers, constraints, elastics, other sorts of pose modifiers... etc. @RogPodge can chime in.
In the meantime, if you need a fix merged, please feel free to open a PR; we'd be more than happy to take a look.

Just for the sake of documentation, the best work around was to set the Solver Handler to Custom Override and control the target Interactors from another script. That keeps everything clean until the updates come. Looking forward to it. Thanks.

Thanks for the info @killerantz .


add form entry to syntax items

rename tagged literal entries to *-literal
add :form field to show literal form if possible
show in ref table as extra column
show in ref file as first column before type
remove docstring generator from syntax items

fixed: https://github.com/cljsinfo/api-refs/commit/a426b2a83fced53d2f47b7dfd323360017f02604


chore(deps): manually updating the Libraries BOM

Somehow the RenovateBot stopped working for libraries-bom
in this repository. Troubleshooting:
https://github.com/googleapis/synthtool/issues/1844
Followed https://github.com/googleapis/java-bigtable/pull/1868/files to locate the files.

samples/snippets/pom.xml is templated, really?

No, samples/snippets/pom.xml is not templated.

No, that's not in the todo items.
I'm experimenting how RenovateBot reacts after I manually update these lines.


ShellApi can't replan.

@sjmiles can you take a look at this? Filing after repro'ing issue noted by @cromwellian in chat:
ShellApi.receiveEntity('{"type":"tv_show", "name":"Buffy"}');
produces

app-shell.js:328 Uncaught TypeError: Cannot read property '_onDataChange' of undefined
    at HTMLElement._onReplan (app-shell.js:328)
    at HTMLElement.node.addEventListener.e (xen-base.js:31)
    at HTMLElement._fire (xen-element.js:79)
    at HTMLElement._fire (xen.js:68)
    at HTMLElement._setPipedEntity (device-client-pipe.js:137)
    at HTMLElement._updateEntity (device-client-pipe.js:126)
    at HTMLElement._update (device-client-pipe.js:105)
    at HTMLElement._doUpdate (xen-base.js:36)
    at HTMLElement._doUpdate (xen.js:75)
    at HTMLElement._validate (xen-state.js:126)```

@cromwellian had more info in his error as this.shadowRoot.querySelector(...)._state.planificator._onDataChange is not a function. On arcs-live in debugger we have no planificator though we do have _state.


Add workaround for MSVC bug

See https://github.com/apple/swift/pull/3759#event-734591467
The problem is that MSVC doesn't recognise the following syntax, reporting multiple errors here:
  size_t numTrailingObjects(
      typename TrailingObjects::template OverloadToken<Identifier>) const {
    return asDerived().getNumArguments();
  }

For some reason, MSVC ignores the fact that we gave friend access to llvm::TrailingObjects here.
Note that the Swift source code also has to be modified, as this is not enough. This is the new source code, that fully compiles after this change!
  // Work around MSVC bug: can't infer llvm::trailing_objects_internal, even though we granted friend access to it
	size_t numTrailingObjects(
#if defined(_MSC_VER)
		llvm::trailing_objects_internal::TrailingObjectsBase::OverloadToken<Identifier>) const {
#else
		typename TrailingObjects::template OverloadToken<Identifier>) const {
#endif
    return asDerived().getNumArguments();
  }

@DougGregor

Changes to LLVM really shouldn't happen here; they should go to llvm.org. The fact that they haven't made this change suggests to me that this isn't the only thing necessary to support, um, whatever version of MSVC you're on.

Hi Jordan, thanks for taking a look. I'm using the very latest version of MSVC:
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24215.1 for x86
I considered sending this PR upstream to the LLVM folks, but this exposes something as protected that really shouldn't be. Since this is a blocker for Swift only, I thought our fork would be a better fit for this fix.

The fact that they haven't made this change

Perhaps this error is only hit in the Swift source code, or MSVC only hits this bug in the Swift source code.
By the way, I've taken a look at the source code for where I'm hitting this bug - its probably too much to ask but could you take a look, just verifying that @DougGregor has written valid C++ (I'm sure you have) :D

@hughbe I think I saw this kind f error before, can you point me to where it's located? I think the class forgot to friend the TrailingObjects, which is what is typically done in clang.

@hyp https://github.com/apple/swift/pull/3759#discussion-diff-87514695R649
Thanks!!

Unfortunately, Doug did friend TrailingObjects: https://github.com/apple/swift/pull/3759/files#diff-323bdb4c6d842e3b3cd3b40e628c9771R633

Oh yeah, I see, then it probably is a MSVC issue indeed.

@hughbe I'm not sure if that will fix anything, but you might wanna try adding friend TrailingObjects to all classes that derive from TrailingCallArguments and see if that helps.

Clang uses TrailingObjects quite a bit... is there a canonical workaround that has been figured out in that code base?

@DougGregor AFAIK all classes that use TrailingObjects are final, so they don't have this problem. I just found one known MSVC issue that's related to TrailingObjects (https://github.com/llvm-mirror/clang/blob/a896e9a7d27788e7573f3ca13066cc5fc6d91da6/include/clang/CodeGen/CGFunctionInfo.h#L519), but that class is still final.

Hi all, sorry for the delay.
I tried out your suggest @hyp. This is what I got from MSVC:

I also got 84 errors of:
error C2248: 'swift::TrailingCallArguments<swift::UnresolvedMemberExpr>::TrailingObjects': cannot access private typedef declared in class 'swift::TrailingCallArguments<swift::UnresolvedMemberExpr>'

Let me know what you guys think - MSVC really doesn't seem to like TrailingObjects!

Hi all: what shall we do about this one? Whilst this deviates this fork from the actual LLVM source, it is necessary to build Swift using MSVC (so far, no workaround work!)

This still bothers me. I don't want to maintain this change out of LLVM tree, but that means taking it upstream and figuring out what to do there, or at the very least adding a test to their unit tests to make sure they don't break it in the future.

Okay - I've made a connect bug for this: https://connect.microsoft.com/VisualStudio/feedback/details/3116517
If anyone's curious, they can try coming up with a better workaround by compiling MSVC code online here: http://rextester.com/XIJ43194
Thanks!

Thank you for filing this.

Hopefully someone might tinker with the example and get a prettier workaround - I've genuinely spent hours trying but I assume someone with a fresh mind could help!

Closing, this is targeted to the wrong branch (stable) instead of swift-4.0-branch


Reimport of header file looses next-to-last entry

Hi all, thanx for this great utility! I hope it can help me to add german "umlaut" characters  (0xc4, 0xd6, 0xdc, 0xdf, 0xe4, 0xf6, 0xfc) to a given font.
Since this seems to be rather complicated, I intend to backup a new header file after each character added, and reimport it before adding the next character. Unfortunately, when reimporting a previously stored header into the form, the next-to-last character gets lost, and the previously added character is displayed at its position, being marked as inprintable.
That means that after having reimported a font with e.g. the 0xc4,  the entry for 0xc3, which should be empty, shows the omage of the added 0xc4 character (yet still being marked as inprintable!), and the entry for the 0xc4 character is lost.
Beside the problem, I would like to ask if it a copy-character function could be added - this would come in very handy for special charcters requiring only some pixels being added to an existing character and could help for many (not only german) umlauts.
Thanx a lot in advance!

I just realized that the problem does not appear with all fonts. I had the problem with a font having been created http://oleddisplay.squix.ch/#/home, however it does not appear with a font coming with the TFT_eSPI lib.
Each I imported once into the customizer, first exported it unchanged, then added the 0xc4 chacacter and then exported it again.
Please see the attached headers  testfonts.zip, importing
DejaVueSans12\002_exported_c4_added.h
into the customizer shows the described problem, whereas importing
FreeSans12pt7b\002_exported_c4_added.h
shows the proper 0xc4 character at the correct place.

Sorry to say that, but another porblem shows up. With the font FreeSans12pt7b mentioned in the last comment, where I was able to add one chacater, for each character I add, the previous one shows up all pixels white. So to say
import original - add 0xc4 image - export
import - 0xc4 image is ok - add d6 image -export
import - 0xc4 image is all white - 0xd6 image is ok - add 0xdc image - export
import - 0xc4 and 0xd6 are all white - 0xdc image ist ok ... and so forth...
Looking at the generated data and comparing the result of the different steps, it seems as for the new characters both the bitmap data is being messed with as well as the offsets into the bitmap data go wild. Can you reproduce the problem?

Hi @clanganke
Thanks for your feedback ! I will try to reproduce when I have some time and see if I can do something. I'll keep you posted.
On a side note, you shouldn't have to export / reimport for each character as you can add multiple characters in a range and just flag the ones you don't want so they don't appear in the export

I have tried to reproduce with the DejaVueSans12 font but I don't see a problem — all characters are kept in their respective place, and it's all good.
When looking at 002_exported_c4_added.h I see that you have a rogue line feed (non-printable NEL character) in the middle of the file (line 162) that can be misinterpreted by some browsers I guess. I have made a fix right now to change the comments when exporting. Can you retest your whole process now ?

Thnx for the quick research and response. I see that you removed the single quotes from the comments of the generated output. I cannot figure out the problematic character in 002_exported_c4_added.h you mention, is it the UTF-8 encoded character in the comment? The character at which offset is it?
Unfortunately both problems persist, and I am surprised that you cannot reproduce the problem.
First of all, as described before, reimporting the exported header file of DejaVueSans12 after having added the 0xc4 character, it is shown at the 0xc3 position, and the 0xc4 position is lost.
Second, adding one character to FreeSans12pt7b works, but adding a second will leave all pixels of the first added character white, and so forth for every character added after this.
I use Firefox 88.0.1 (64-bit Windows 10) here, pointing at https://tchapi.github.io/Adafruit-GFX-Font-Customiser/.
I have no current desktop Linux around here, but only an old Ubuntu 18 VM with Firefox 65, where I could reproduce both problems.
For the second problem I found an interesting detail, please find
testfonts2.zip
attached , where I added the exported headers for both platforms after

initial export
having added an 0xc4 character (dummy pixel data!)
having added an 0xd6 character (dummy pixel data!)

If ypou look at the *_win.h files the data of the last character of the initial export start at offset 1962 (001_exported_nochange_win.h line 264). After having added the 0xc4 character, the data of it starts at offset 1969 (002_exported_c4_added_win.h line 335). But after having added the 0xd6 character, the data of the 0xc4 character starts at offset 1962 again (003_exported_d6_added_win.hline 335). Please note that the data of the 0xc4 and 0xd6 character may well differ between the *_win.h and the *_linux.h versions since I just added some dummy data for a quick test only, not being identical in both cases.
BTW it is perfectly clear that I could add multiple characters at once, but if the problem persists, I wouldn't be able to make any changes to an existing export without losing data.
I appreciate your work very much and hope that this does not take too much of your time!

Ok, understood. I will need a bit more time to dig deeper then

Could it be linked to #26 ? I have a made a fix to resolve this

I see the point, however I am sorry to say that both problems persist even if I remove all comments from every exported file. Moreover, both problems showed up before you removed the single quotes from the comments, where #26 seems to be a consequence of that change.

Ok. Thanks for your help on this. Continuing investigation :)

Ok, a first thing to note: your DejaVueSans12\original.h (the font which seems to have a problem) seems to be incorrect as the last glyph exported is indicated as 0x7E whereas it's 0x7D (which is }):
// ...
	  {   660,   6,  11,   9,    1,   -9 } // '}'  <<----- this is 0x7D
};
const GFXfont DejaVuSans12 PROGMEM = {
(uint8_t  *)DejaVuSans12Bitmaps,(GFXglyph *)DejaVuSans12Glyphs,0x20, 0x7E, 15};

If you look at the other font (FreeSans12pt7b/original.h), that works well, the last glyph exported is correct:
// ...
    {1962, 10, 5, 12, 1, -10}}; // 0x7E '~'

const GFXfont FreeSans12pt7b PROGMEM = {(uint8_t *)FreeSans12pt7bBitmaps,
                                        (GFXglyph *)FreeSans12pt7bGlyphs, 0x20,
                                        0x7E, 29};

// Approx. 2641 bytes

Thus, there might be something off with the http://oleddisplay.squix.ch/#/home tool, or I have misinterpreted what needs to be indicated in the GFXfont struct at the end of the file., maybe ?
Happy to hear your thoughts on that

Congrats, VERY WELL FOUND!!! I corrected the original header and the first of the two problems (the one describted in the title of this issue!) does not show up anymore. Thanx a lot for your time investigating this!
It turns out that your tool does a better job compared to the squix font converter at least in one, but important  aspect - by just adding the hex values to each glyph line as a comment, as your tool does, such errors would be much easier detectable. Will give squix78 a hint, so that he for one can fix and otherwise possibly extend his great tool, and will for sure credit you for your finding!
Would it be out of scope to add a little check to your code and produce a warning if the amount of glyph data and the data in the font structure  do not match?
I just retested the second problem with the now fixed DejaVuSans Font, and it showed up with it as well. Would you prefer that I open a 2nd issue for that remaining problem so that this was better distinguishable, or would we better stick to this issue with it?

Would it be out of scope to add a little check to your code and produce a warning if the amount of glyph data and the data in the font structure do not match?

Good idea, will try to implement that

I just retested the second problem with the now fixed DejaVuSans Font, and it showed up with it as well. Would you prefer that I open a 2nd issue for that remaining problem so that this was better distinguishable, or would we better stick to this issue with it?

I think it will be useful to have a specific issue for that, yes, if you don't mind :) I will find some time in the week I hope

Ok, don't bother, I think I found the fix with https://github.com/tchapi/Adafruit-GFX-Font-Customiser/commit/1c4263cece99e4208b93d76bcd37f4e82f6dd13c

Thank you very much for your efforts, that's just great - I was able to add multiple characters!


License Issue

Hi,
The license should be BSD-3-Clause not BSD 3-Clause in package.json.
See: https://spdx.org/licenses/BSD-3-Clause.html
Thanks for fixing!

done in https://github.com/dankogai/js-base64/commit/819e9b42e797b9cc6fc9ca069770a9fbaacb26ae .  Thank you for reporting.


Server Crash When Entering Space with SpongeForge

Forge Version
<IP_ADDRESS>60
Galacticraft Version
4.0.3
Log or Crash Report
https://gist.github.com/spruill7716/564a99d28df5b7bd2ad250788776ad84
Reproduction steps
Using the latest SpongeForge, I am unable to to enter the space/planet selection menu after launching a rocket. The server eventually times out after a while after not getting a response.

In your server.properties file, set max-tick-time to a higher value or -1 to disable the server watchdog.
Example:
max-tick-time=-1


Remove unnecessary thread control.

Issue
None
Overview (Required)
Remove unnecessary thread control.
Since updateAllAsync() in SessionsLocalDataSource has no subscriber, I think that obserbeOn() is unnecessary.
Links
None
Screenshot
None

Good catch! Thank you so much!

Thanks!


FILEUPLOAD-312 - Use charset constant

Coverage increased (+0.1%) to 78.43% when pulling dc3074510a769599aefa84f368fcc27f94cf05ad on arturobernalg:feature/FILEUPLOAD-312 into b8253237867120ec8c99ea34b68ac86c6283dbc3 on apache:master.

Same as in #63: I am generally fine with those changes, but the patch is way too large. Please, dotake the time to split this into smaller pieces.


Issues with the "Collect text and IIS logs with Azure Monitor agent (preview)" webpage

While there is an Important note that you have a suffix for the _CL, there is not a note that you have to have the prefix "Custom-" when doing the "create data collection rule" template and want to change the name.  Without the Custom- prefex you will get "At least one resource deployment operation failed"  and "'Output Stream' string 'name here' must be a custom stream or one of...."

I found it was necessary to use the full URI ID path for the workspaceResourceId and endpointResourceId when acting on the "create data collection rule" template.  The pictures show just the short ID.

The picture in the Create data collection endpoint has a "Workspace Resource ID: field that don't match the template result when used.

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: fad5ecda-20b1-597c-81c8-f1347901b4fe
Version Independent ID: 707a9ca0-6800-0fd4-2a0b-c1aa28db622d
Content: Collect text and IIS logs with Azure Monitor agent (preview) - Azure Monitor
Content Source: articles/azure-monitor/agents/data-collection-text-log.md
Service: azure-monitor
Sub-service: agents
GitHub Login: @guywi-ms
Microsoft Alias: guywild

@dxk3355
Thanks for your feedback! We will investigate and update as appropriate.

@RyanHill-MSFT For assistance!


glibc: allow overriding common.nix

Description of changes
This PR allows glibc/default.nix to append to or modify -- rather than only replace -- attributes defined in glibc/common.nix
Things done

Built on platform(s)

[x] x86_64-linux
[  aarch64-linux

[x] Fits CONTRIBUTING.md.

squashed

Evaluation Performance Report looks ok
https://github.com/NixOS/nixpkgs/pull/210325/checks?check_run_id=10637720088

tip for reading them
ignore the cpuTime as it depends on the system load
focus on the percentages


Bug: User profile page is very slow

Before you start

[X] Have you updated FluentHub? You might be using an old version.
[X] Have you checked if a similar issue has already been reported?

What version of Windows is this issue present?
Windows 11
What version/architecture of FluentHub are you on?
<IP_ADDRESS> | X64 | RELEASE
Description
When you visit your profile sectio, after your start scrolling down the page response its too slow
Steps To Reproduce

Go to your profile
Start Scrolling

Expected behavior
Slow scroll
Stack Trace
Stack trace details
paste here

📸 Assets

Currently, Im working on redesigning the app. That issue is caused by loading contribution graph that has mass data. Probably I will remove in the future update.

Thank you for feedback.
This was fixed in v0.5.1


[Question] Read 2D Byte Array CSV

Hello,
I’m currently working with grayscale data stored in a CSV file, represented as a 2D byte array with dimensions 256 x 23156. I want to parse this data effectively using RecordParser, but I couldn’t find a suitable approach with the existing features.
Is there an efficient way to convert each row into a byte[] or parse the entire CSV file into a 2D array (such as byte[,] or byte[][])?
I’d like to inquire if there are better approaches for handling data of this size or if there are any additional features in RecordParser that could support this use case. I would also like to request support for directly handling 2D arrays if possible.
Thank you.

Hello @smj2350

Is there an efficient way to convert each row into a byte[] or parse the entire CSV file into a 2D array (such as byte[,] or byte[][])?

yes, of couse. if the length of columns are know things are simple. we just need a factory to build the array for each mapped line. the most weird part is the mapping of columns, that for some reason dotnet does not support to write the mapping expression directly, so we need do it manually.
Does the example bellow helps you? demonstration here
using System;
using System.IO;
using System.Linq.Expressions;
using RecordParser.Builders.Reader;
using RecordParser.Parsers;
using RecordParser.Extensions;

var columnCount = 5;
var linesCount = 3;
var array = new byte[linesCount][];

var content = """
	1,0,1,0,1
	0,1,0,1,0
	1,1,1,1,1
	""";

// I am using StringReader because in the example the content is a string
// but could be StreamReader or any TextReader
using TextReader source = new StringReader(content);
var parser = BuildReader(columnCount);

var readOptions = new VariableLengthReaderOptions
{
    HasHeader = false,
    ParallelismOptions = new() { Enabled = true },
    ContainsQuotedFields = false,
};

var lines = source.ReadRecords(parser, readOptions);

var i = 0;
foreach (var line in lines)
    array[i++] = line;

Display(array);

static void Display(byte[][] array)
{
    foreach (var line in array)
    {
        foreach (var column in line)
            Console.Write(column + " ");

        Console.WriteLine();
    }
}

static IVariableLengthReader<byte[]> BuildParse(int columnCount)
{
    var builder = new VariableLengthReaderSequentialBuilder<byte[]>();

    for (var i = 0; i < columnCount; i++)
        // map each array position to be assign (just like a regular field, in fact the expression here
        // dont need to be a field/property, but just an assignable expression)
        builder.Map(BuildExpression(i));

    var reader = builder.Build(",", factory: () => new byte[columnCount]);

    return reader;
}

// builds the lambda: array => array[i]
static Expression<Func<byte[], byte>> BuildExpression(int i)
{
    var arrayExpr = Expression.Parameter(typeof(byte[]));
    var indexExpr = Expression.Constant(i);
    var arrayAccessExpr = Expression.ArrayAccess(arrayExpr, indexExpr);

    return Expression.Lambda<Func<byte[], byte>>(arrayAccessExpr, arrayExpr);
}

close by inactivity


Handling Zoomed HTML Environment in Driver.js

Hi Team Driver.js,
I am currently facing a challenge in my project where I have an HTML zoom level set to 80% for the entire page, unfortunately this setting cannot be removed.
I have noticed that when I use Driver.js in this zoomed environment, there are problems with the way elements are highlighted or focused. It seems that the zoom level affects the calculation of element positions and sizes, causing misalignment or improper highlighting.
Could you provide any guidance or suggestions on how best to adapt Driver.js to work effectively in a zoomed HTML environment? Specifically, I am looking for a way to ensure that Driver.js's element highlighting and focus functions work properly when the HTML is resized to 80%.
Any advice, suggestions, or code snippets that can help solve this problem would be greatly appreciated. Thank you for your time and assistance.
Best regards,
Federico

Hey Federico. Did you end up solving this? I'm having the exact same problem.

no, sorry


Added playlist_create body structs

The current implementation require a full jspf struct to insert a playlist, while most of that information get discarded.
So I made a series of specialized structs for the creation specifically

BTW, the documentation errors aren't mine, and probably better into a separate PR

Once #29 is merged, the target branch for this PR should be changed to main, and rebased against main.
@RustyNova016 I don't want to conflate matters, so would it be OK if I leave the rebasing to you?
Then we can look at merging.

@RustyNova016 Could you rebase this PR so that it only includes commit https://github.com/InputUsername/listenbrainz-rs/pull/32/commits/da9d776e5e8d0a21fdf8591d050038828b65f9b3? The other commits have landed in main now.

@InputUsername To save time, I've rebased locally and pushed to my fork - this look good to you?

@InputUsername To save time, I've rebased locally and pushed to my fork - this look good to you?

Looks fine to me!

Looks like CI failed. Looking into it.

Fixed.

The doctests failed due to the changes in this PR, so I feel it's OK to keep the fix here. I will squash the last two commits together, though. Rebasing now.

This might still need actioning: https://github.com/RustyNova016/listenbrainz-rs/issues/19#issue-2291466134

Should be good to go!
I was busy today, and mostly forgot about doing the annotation fix.
I'm sure there might have some obscure options left missing, but the documentation not usage made me discover them.

Should be good to go! I was busy today, and mostly forgot about doing the annotation fix.
I'm sure there might have some obscure options left missing, but the documentation not usage made me discover them.

Once we resolve the review above, I'll squash the last commit, and we can merge.

Oh I thought I only put a comment, not a review. Sorry for that

Nice!
Is there's still stuff needed before do 8.0? Just wondering.
#34 will be delayed as I'm busy for the next few weeks, so if y'all rather release what we have already, it's fine

Nice! Is there's still stuff needed before do 8.0? Just wondering.
#34 will be delayed as I'm busy for the next few weeks, so if y'all rather release what we have already, it's fine

I think we're good to go for the 0.8.0 release. And no worries, that was the original plan anyway I think :smile:
@shymega could you give everything a sanity check? If everything is OK I'll roll out the release.

@InputUsername I'll try and have a look, but got an interview with an embedded company this week, so need to prep everything for that. At least, I think it's an interview. Given tests pass, the main thing I can think of is breaking-changes checks. So we can announce that to downstream users.

No worries, good luck with the interview, obviously focus on that!
The version bump should already imply breaking changes - Rust "breaks" semver by treating 0.x releases as major versions - but good call, I'll check to make sure breaking changes are mentioned in the changelog. I'll also check if the added methods actually work haha.

There's the I at least know that user_listens got its api changed to remove the useless time range part


DJL training on CPU is much slower on python

Question
On behalf of the author. Just open the issue here. I built a simple NN with 60k data. Training on PyTorch cost around 273s however 3h 2min on DJL. Just wondering if any parts I did is wrong. Help is appreciated.
File is attached here.
issue.zip
The above file includes python and Java code and some fake sample data.

I took a look into the code. A few of comments.
Python script

you don't need Variable. PyTorch merge Tensor & Variable. Whenever you need Variable, just call tensor. requires_grad().

# you don't create dataset with Variable as parameters are the one that need gradient
# when doing training, you are optimizing the parameters instead of dataset
x_data = Variable(torch.tensor(TrainData).float(), volatile = True)

To do a fair comparison

add a dataloader and TensorDataset. As a result, both Java and Python fetch 6000 items and construct a huge batch with size 6000. Now the python just skip small dataset construction DJL do which takes time.
add the optimzier.step in the end of dataloader iteration

# the code you need to add
dataset = TensorDataset(x_data, y_label)
loader = DataLoader(dataset, batch_size=6000, shuffle=False)

for k in range(i):
        optimizer.zero_grad()
        for data, labels in loader:
            out = model(data)
            loss = loss_fuc(out, labels)
            loss.backward()
            optimizer.step()

Java script

you don't need the batchFlatten as first layer

After the above change is made, the performance is still 3, 4 time slower than Python. I found the data loader is the bottleneck by following experiment.
# python
for _ in range(100000):
    data = x_data[100]
# java
for(int epoch = 1; epoch <= numEpoch; epoch++) {
    for(Batch batch : mytrainer.iterateDataset(dataset_train)) {
	;
    }
}

PyTorch python implements getitem in pure C++ while in Java we do lots of preprocessing before calling slice op. I will try to create another special JNI call to work around it

Thanks for correcting.
I was so careless in providing code and data to lanking520 that I missed optimizer.step(). You really made me discover that I need to deepen my understanding of models as a beginner.

There is another question, does this phenomenon also exist in spark clusters under Linux environment?

@shuli0721 I created a PR to boost the data loading https://github.com/awslabs/djl/pull/638

@shuli0721 The PR has been merged. You shouldn't see much difference now.

@stu1130  WOW  You guys solve problems so quickly.  Hope I can do the same day.
I will fix my code.
And happy Spring festival to all your team members. 🥟春节快乐！

@shuli0721 close this issue for now since there are no additional issues. Please feel free to reopen if you have any more concerns :) Happy Lunar New Year!


[cairo:x64-windows] build failure

Host Environment

OS: Windows 10
Compiler: MSVC/14.24.28314
Vcpkg version: 2020.02.04-nohash

To Reproduce
Steps to reproduce the behavior:
./vcpkg install gtk:x64-windows
Failure logs
Starting package 15/22: cairo:x64-windows
Building package cairo[core]:x64-windows...
-- Downloading https://www.cairographics.org/releases/cairo-1.16.0.tar.xz...
-- Extracting source C:/Dev/vcpkg/downloads/cairo-1.16.0.tar.xz
-- Applying patch export-only-in-shared-build.patch
-- Applying patch 0001_fix_osx_defined.patch
-- Using source at C:/Dev/vcpkg/buildtrees/cairo/src/1.16.0-1ead74a565
-- Configuring x64-windows
CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:72 (message):
Command failed: ninja -v
Working Directory: C:/Dev/vcpkg/buildtrees/cairo/x64-windows-rel/vcpkg-parallel-configure
Error code: 1
See logs for more information:
C:\Dev\vcpkg\buildtrees\cairo\config-x64-windows-out.log
Call Stack (most recent call first):
scripts/cmake/vcpkg_configure_cmake.cmake:295 (vcpkg_execute_required_process)
ports/cairo/portfile.cmake:32 (vcpkg_configure_cmake)
scripts/ports.cmake:90 (include)
Error: Building package cairo:x64-windows failed with: BUILD_FAILED
config-x64-windows-out.log

@DA40 thanks for posting this issue. Could you provide the error log config-x64-windows-out.log?

Hi Lily,
That log file is attached at the end of my bug report.
Regards,
Keith MacDonald
From: Lily<EMAIL_ADDRESS>Sent: 21 February 2020 09:18
To: microsoft/vcpkg<EMAIL_ADDRESS>Cc: DA40<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [microsoft/vcpkg] [cairo:x64-windows] build failure (#10149)
@DA40https://github.com/DA40 thanks for posting this issue. Could you provide the error log config-x64-windows-out.log?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/vcpkg/issues/10149?email_source=notifications&email_token=ABYUAHJ6IW7PKDH7RE2GXNDRD6L5PA5CNFSM4KYVV5W2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEMSBSKI#issuecomment-589568297, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABYUAHPWTZKA6C5IBU5E4ATRD6L5PANCNFSM4KYVV5WQ.

@DA40 I can't repro this issue, from your log, it failed with following failure, there is a similar issue #9554, could you double check if you have similar permission issue?
CMake Error at C:/Program Files/CMake/share/cmake-3.16/Modules/CMakeTestCCompiler.cmake:60 (message):
  The C compiler

    "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: C:/Dev/vcpkg/buildtrees/cairo/x64-windows-dbg/CMakeFiles/CMakeTmp

    Run Build Command(s):C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe cmTC_4b3e0 && [1/2] Building C object CMakeFiles\cmTC_4b3e0.dir\testCCompiler.c.obj
    [2/2] Linking C executable cmTC_4b3e0.exe
    FAILED: cmTC_4b3e0.exe
    cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\cmTC_4b3e0.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100177~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100177~1.0\x64\mt.exe --manifests  -- C:\PROGRA~2\MIB055~1\2019\PROFES~1\VC\Tools\MSVC\1424~1.283\bin\Hostx64\x64\link.exe /nologo CMakeFiles\cmTC_4b3e0.dir\testCCompiler.c.obj  /out:cmTC_4b3e0.exe /implib:cmTC_4b3e0.lib /pdb:cmTC_4b3e0.pdb /version:0.0  /machine:x64  /debug /INCREMENTAL /subsystem:console  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
    FINAL LINK: command "C:\PROGRA~2\MIB055~1\2019\PROFES~1\VC\Tools\MSVC\1424~1.283\bin\Hostx64\x64\link.exe /nologo CMakeFiles\cmTC_4b3e0.dir\testCCompiler.c.obj /out:cmTC_4b3e0.exe /implib:cmTC_4b3e0.lib /pdb:cmTC_4b3e0.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\cmTC_4b3e0.dir/intermediate.manifest CMakeFiles\cmTC_4b3e0.dir/manifest.res" failed (exit code 1168) with the following output:
    LINK : fatal error LNK1168: cannot open cmTC_4b3e0.exe for writing
    ninja: build stopped: subcommand failed.

The root of my C drive is write protected, so if that's where vcpkg is creating files, it explains my build failure.  Why doesn't it use the folder assigned to the TEMP environment variable?

@DA40 Sorrt I am late. Could you please try to clone VCPKG to other drives and install port again?

I've been able to install cairo by making the root of the C drive writeable. It would be better if VCPKG didn't try to create files there.

When VCPKG installing port, it will create install files on directory vcpkg/. It need directory vcpkg/ is writeable. This issue has been fixed, so I am closing this issue for now.


Getting error while running build

Hi,
I have cloned the repository and tried to do a build, getting the following error. Any insights into what could be the issue?
[commonjs--resolver] Failed to resolve entry for package "/icon-library/dist/icons". The package may have incorrect main/module/exports specified in its package.json.
error during build:
Error: Failed to resolve entry for package "/icon-library/dist/icons". The package may have incorrect main/module/exports specified in its package.json.
Thanks

Adding
"main": "index.ts",
to package.json fixed the error


Password encrypt issues.

Hi,
I have the ENV variable set and it appears that decrypting an already encrypted file - works great.
BUT a new file and I choose to encrypt it and it always asks for the password.
If I enter the password and choose NOT TO SAVE it ...
then decrypt it after - it works.
Thanks.

Hi, thanks for feedback, I'll try to reproduce this

@sadv1r
In here, there is only check for decryption of text/file one want to encrypt and in case of failure it just opens password popup.
Also here, FileEncryptAction is not using vault.openEditor() method.
So, there should be some small logic for that process but its too late for me right now to think about it, maybe tomorrow :sweat_smile:.

Are you using Vault IDs to distinguish the difference between PROD and DEV passwords? Or you are just using password file from ENV as default (e.g. for DEV) and manually provide different password for PROD?
In ansible, if you export password file ENV (ANSIBLE_VAULT_PASSWORD_FILE), it is used as encryption/decryption password file.
So the easiest way to allow users like myself, use ENV as default encryption/decryption password file would be to add configuration checkbox: "Always use found ENV password file to encrypt/decrypt data".
It would be also useful to display there current value of ENV/password file used by plugin.

Didn't know that ANSIBLE_VAULT_PASSWORD_FILE is used for encryption too, thanks! So, we need it to work here the same way and I'll look into it.
And I like your idea about having a way to configure this differently and to see if a plugin can see an ENV or another configuration of a password file

Fixed in v1.20


fix(deps): update icr.io/cpopen/ibm-operator-catalog:v4.16 docker digest to 6faeb20

This PR contains the following updates:

Package
Update
Change

icr.io/cpopen/ibm-operator-catalog
digest
0313bc2 -> 6faeb20

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

/run pipeline

/run pipeline

:tada: This issue has been resolved in version 1.4.21 :tada:
The release is available on:

GitHub release
v1.4.21

Your semantic-release bot :package::rocket:


auro-dropdown: Theming support

Is your feature request related to a problem? Please describe.
This is regarding theming updates that need to happen to nearly all auro components
Describe the solution you'd like

All tokens with the prefix --auro need to be renamed to --ds so they work with the new WCSS v5 update.
The WCSS package needs to be updated to ^5.0.0 and the import paths in the component *.scss files need to be updated as well

Describe alternatives you've considered
None
Additional context
Reference this auro-button pr https://github.com/AlaskaAirlines/auro-button/pull/231
And this auro-hyperlink pr https://github.com/AlaskaAirlines/auro-hyperlink/pull/185
Exit criteria
All tokens referencing --auro have been updated.

is this duplicated ticket with #205 ?

Yes I'll close this one


warn multiple call of WriteHeader.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

20 of 22 (90.91%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+4.1%) to 19.489%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

logger.go
20
22
90.91%

Totals

Change from base Build<PHONE_NUMBER>:
4.1%

Covered Lines:
122

Relevant Lines:
626

💛  - Coveralls


Feature: Add config setting to disable gzip compression #1627

rounds out all of the https://kubernetes.io/docs/reference/config-api/kubeconfig.v1/#Cluster options

Remaining work on this PR is to add a test to check the Accept-Encoding header when the disabled flag is set

Sorry for the late merge. Will get this released soon!


setup.md has getting_started twice in link to playground

The link to the Playground tutorial in setup.md has getting_started twice leading to 404 error.

Should be fixed. There are still some differences when viewing on github, https://armory3d.org/manual should be fine though.


Problem displaying ECS resources

Hey,
I am not sure if this is a good place to ask for a bit of help, but here goes... My VPC should, among other things, include:

2 load balancers
2 databases
2 ECS clusters with 2 services and 2 tasks - running on fargate

However - anything related to ECS is not shown. I have checked the account-data folder and everything is there. At first, I thought its an issue with security groups between load balancer and ECS so I have changed the security groups to this:

load balancer egress rule only allows traffic to ecs task security group
ecs task ingress rule only allows traffic from load balancer security group

Collected, prepared the data again (even removed everything from account-data) and it didnt change anything. I am 100% sure the problem is somewhere on my end. I have tried cloudcraft, cloudviz and lucidchart as an alternative just to see if they would work and they have the same problem. Some of them do not support fargate afaik.
Is there something else I can do?

I'm closing this issue as the network diagram functionality of CloudMapper is no longer being maintained.  Other features of CloudMapper, such as the audit functionality, is still maintained. If someone is interested in maintaining the network diagram functionality they can look at the issues tagged unmaintained_functionality for all the issues related to this that have been closed as they will unfortunately not be worked on by me.


Expected Data Limits with Flow?

Has this solution been tested at scale? How many records can it handle before max CPU time exceeded?
I'd like to use it for a cleanup process to avoid data skew, so I have thousands of records to move.

@allisonletts due to Flow only being able to update owners with invocable actions in an after update setting - which requires recursion - using Flow with the round robin assigner will be naturally more limited than using Apex (where recursion is not required).

@jamessimone order of magnitude, should it be able to handle more like 100, 1000, or 10000?

@allisonletts it depends on how much else you have going on in your Record Triggered flow. If the round robin assignment is the only thing happening before/after update, it should scale fairly well. For more complicated flows, I could definitely see some eventual timeouts - one way to handle this for Flow driven assignments would be to use the bulk API to upload updates (using a tool like dataloader) so that the chunk size for the updates could be set to something reasonable, like 200 records per chunk.


fix(build): Remove ngsummary files from published build

Fixes issue with https://github.com/ngrx/platform/issues/510

thanks!


Run patches on ruby 101 docker image during upload script

In order to run ruby v101 in the backwards compatibility interop suite

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

@yongni : this is a hack for building Ruby 1.0.1 image.

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE                                                 FILE SIZE
 ++++++++++++++ GROWING                                   ++++++++++++++
  +0.1%    +516 [None]                                    +2.69Ki  +0.0%
      +0.1%    +420 [Unmapped]                                +2.69Ki  +0.0%
      +300%     +48 g_start_time                                    0  [ = ]
      +5.3%     +40 [None]                                          0  [ = ]
      [NEW]      +8 g_last_start_time_update                        0  [ = ]
   +28%    +273 src/core/lib/iomgr/exec_ctx.cc               +273   +28%
      [NEW]    +168 grpc_exec_ctx_maybe_update_start_time        +168  [NEW]
      +163%     +49 grpc_exec_ctx_global_init                     +49  +163%
       +27%     +32 timespec_to_atm_round_down                    +32   +27%
       +23%     +25 [Unmapped]                                    +25   +23%
      [NEW]     +17 timespec_from_time_atm_pair                   +17  [NEW]
      +5.3%      +8 grpc_timespec_to_millis_round_up               +8  +5.3%
  +1.7%    +115 src/core/lib/iomgr/resource_quota.cc         +115  +1.7%
      [NEW]    +114 grpc_resource_user_slice_malloc              +114  [NEW]
      +0.3%      +1 [Unmapped]                                     +1  +0.3%

  +0.1%    +904 TOTAL                                     +3.07Ki  +0.1%

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] Performance differences noted:
Benchmark                                                                                cpu_time    nows_per_iteration    real_time
-------------------------------------------------------------------------------------------------  ----------  --------------------  -----------
BM_MetadataRefUnrefStatic                                                                          +20%                              +20%
BM_StreamingPingPong<InProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/1                                    -22%
BM_StreamingPingPong<InProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/2                                    -17%
BM_StreamingPingPong<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/1                                 -25%
BM_StreamingPingPong<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/2                                 -18%
BM_StreamingPingPongMsgs<InProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728                                  -26%
BM_StreamingPingPongMsgs<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728                               -22%
BM_StreamingPingPongWithCoalescingApi<InProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/1/0                 -11%
BM_StreamingPingPongWithCoalescingApi<InProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/1/1                 -5%
BM_StreamingPingPongWithCoalescingApi<InProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/2/0                 -22%
BM_StreamingPingPongWithCoalescingApi<InProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/2/1                 -24%
BM_StreamingPingPongWithCoalescingApi<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/1/1              -16%
BM_StreamingPingPongWithCoalescingApi<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/2/0              -21%
BM_StreamingPingPongWithCoalescingApi<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/2/1              -21%
BM_UnaryPingPong<InProcess, NoOpMutator, NoOpMutator>/134217728/134217728                                      -15%
BM_UnaryPingPong<InProcessCHTTP2, NoOpMutator, NoOpMutator>/0/134217728                                        -12%
BM_UnaryPingPong<InProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/0                                        -6%
BM_UnaryPingPong<InProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/134217728                                -13%
BM_UnaryPingPong<MinInProcess, NoOpMutator, NoOpMutator>/134217728/134217728                                   -15%
BM_UnaryPingPong<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/0/134217728                                     -15%
BM_UnaryPingPong<MinInProcessCHTTP2, NoOpMutator, NoOpMutator>/134217728/134217728                             -20%

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

Tested so far manually,
tools/interop_matrix/run_interop_matrix_tests.py --release=v1.0.1 --language all

looks is green when running manually on this PR, and ruby runs as well.

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

[microbenchmarks] No significant performance differences

Tried to address comments in latest updates, PTAL

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

thanks for the review.
@adelez I'll wait for your approval here too, if this looks ok

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

@adelez @yongni  friendly ping
Tested this change manually by running locally:
tools/interop_matrix/run_interop_matrix_tests.py --language=all --release=all --allow_flakes

... which ran successfully (a couple of flakes popped up but I think that's expected).
Also, ruby v1.0.1 runs successfully when doing this.

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

@adelez thanks for the review.
Mind taking one more look at the last commit here though? I resolved the logical merge conflict with https://github.com/grpc/grpc/pull/13398/files in the last commit but the fix might be a little weird

[microbenchmarks] No significant performance differences

tools/interop_matrix/run_interop_matrix_tests.py still passes when ran locally, minux a couple of "unavailable" flakes

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

asan C++: https://github.com/grpc/grpc/issues/12917
basic tests c linux opt: https://github.com/grpc/grpc/issues/13652
basic tests c++ linux dbg:  https://github.com/grpc/grpc/issues/12917
basic tests c++ linux opt: https://github.com/grpc/grpc/issues/12917, https://github.com/grpc/grpc/issues/13270
basic tests multi-lang linux: https://github.com/grpc/grpc/issues/13272
tsan C++: https://github.com/grpc/grpc/issues/12510
cpp_protobuf_sync_streaming_from_server_qps_unconstrained_secure_low_thread_count GRPC_POLL_STRATEGY=epollsig scenario

squashing the non-merge commits

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

asan c++: https://github.com/grpc/grpc/issues/12917
basic tests c++: https://github.com/grpc/grpc/issues/12917