Offcanvas as component

I did a first approach on an offcanvas component.
Αll of us, have used custom solutions, but maybe an official version,  would be more stable.
Do you find it interesting? May I continue on this?
Preview: https://deploy-preview-29017--twbs-bootstrap.netlify.app/docs/5.0/components/offcanvas/
TODO:

[x] we need to see if we can stop body scroll
[x] maybe blur the bg if it doesn't have any performance hit
[x] tweak blur, the current blur is too much IMO (XhmikosR)
[x] Remove height from bottom offcanvas
[x] Provide some default theming (white background, maybe a border or shadow like the modals)
[x] Disable body scrolling by default.
[ ] measure FPS when blurring the bg (@XhmikosR  i need guidance)
[x] update offcanvas example to use this (also move it away from the experimental category)
[x] reindent and fix missing end tags in the doc examples
[x] switch to event.key
[x] add more content in right, bottom examples
[ ] check accessibility (@patrickhlauke)
[x] <div class="h4"> should be changed to h4 or similar?
[x] spell checking from a native English speaker (@mdo?)
[ ] clean up/squash patches manually
[x] Make sure the element is hidden and not offscreen when inactive
[ ] Consistent behavior of modals and offcanvas (eg. same way of setting a backdrop)
[ ] non-text elements inside button related issue #32372
[x] enforce focus, only on open element

Awesome! Haven’t dived into the code yet m, but obviously there’s a huge need for this. Can we ensure we have support for left, right, and bottom slide-in? Can we also make sure to stop the body scroll behind the sidebar?

a crucial aspect of a properly working off-canvas is that focus should move to the offcanvas, remain trapped inside it until it's closed, and ideally the underlying document should be hidden via aria-hidden="true"

Hello Guys.
I really love this framework, and I want to contribute.
As you can see,  I am a bit slower than the requested changes, and really I don't have any experience on unit testing.
So I would appreciate any help

@GeoSot you should first focus on request changes and after I'll help you for the unit tests don't worry 😉

I don't have any experience on unit testing

Just have a look at the existing tests (js/tests/unit) and try to figure out how it works (for me, that worked 😛)
Other concerns:

I wouldn't nest the selectors (like &-right), we don't do that either for our modals. The full classname also makes searching for classes easier.
I would provide some default theming (like a default background) and create a theming section on the page with the colored components.
I spotted some inline styles like style="z-index: 1072;", we should avoid that.
Accessibility wise I would like to close the drawer when I press ESC key.

* I spotted some inline styles like `style="z-index: 1072;"`, we should avoid that.

Only because the doc header has 1071 z-index

Hi @GeoSot, do not hesitate to hit me up if you're stuck somewhere or if you did everything you planed to 😉

Thank u @Johann-S
You may have a look on  Js code and leave me some feedback. (Feel free to change things)

@GeoSot we switched from QUnit to Jasmine, so you'll have to update your branch and use Jasmine to write your unit tests, do not hesitate to take a look at other plugins

Hi @GeoSot, I improved your unit tests, so the JavaScript part should be ok 👍 now we have to check the docs and maybe the SCSS ? @twbs/css-review

I preferred to keep it simple and focus on functionality and minimalism. If it succeed to be merged we can add some styling

Our other components also work out of the box without additional utilities for backgrounds (like the modal). For consistency, I would also like to see this here.
We should also ditch the heights for the bottom variant. Also there's some visible outline when the component is focused which need to be removed, like we do with the modals.
This PR also needs an approval from @patrickhlauke, to make sure everything is accessible.

Before the final merge, I'd like to clean up/squash any patches manually.

Also, we need to see if we can stop body scroll like @mdo said above https://github.com/twbs/bootstrap/pull/29017#issuecomment-510986442
And maybe blur the bg if it doesn't have any performance hit.

Our other components also work out of the box without additional utilities for backgrounds (like the modal). For consistency, I would also like to see this here.

Maybe like the navBar?

Was the ugly way to keep the 'offcanvas-open' class, on body while toggling two different elements. I 've made some changes (maybe will need some refactoring)

Add a TODO list in the first post.

@XhmikosR is offcanvas example needed anymore?
With offcanvas as a basic component, maybe the example is redundant

You have a point there @GeoSot, but it's nice to have it as an individual example like we have navs etc.

Alright, I rebased this and cleaned up the patches.
Only a few things to do, and then another round of reviews.

The examples need to be reindended BTW.

@MartijnCuppens  I disagree with the "Provide some default theming (white background, maybe a border or shadow like the modals)" todo.
I would like an agnostic component, and I am trying to save, some bytes, but as you insist, I added color, shadow etc

@MartijnCuppens
I disagree with the "Provide some default theming (white background, maybe a border or shadow like the modals)" todo.
I would like an agnostic component, and I am trying to save, some bytes, but as you insist, I added color, shadow etc

You definitely got a point about saving some bytes, but those variables can be set to null if people really want to generate as less CSS possible. We also got to be consistent with the other components (modals, cards, toasts), they have some basic styling applied to.
@twbs/css-review, what do you guys think?

A new thought....... It could be responsive.
Ex: .offcanvas-sm => hide sidebar bellow 'sm' breakpoint

@GeoSot please rebase and fix the linting errors (i.e don't use a section)

Alright, I had some time to do another quick review.
First of all, I want to say thanks for sticking with the PR. We are low on resources and we have so many things to do. I definitely want this added for v5, so I'll do my best to move forward with this.

you shouldn't have squashed the patches. It's not very ethical IMO. But what's done is done :)
the offcanvas example's mobile menu doesn't work anymore
the "blur" implementation isn't really a blur, but a background-color; we should be able to use filter: blur(foo), /CC @MartijnCuppens
when one clicks the right offcanvas and doesn't close it, and then clicks the bottom one, the bottom one shows up and the right one is automatically closed; I'm not sure if this is right, we need more people to chime in
we definitely need spell checking from a native English speaker (ping @mdo)
accessibility-wise, does this LGTY @patrickhlauke?

the "blur" implementation isn't really a blur, but a background-color; we should be able to use filter: blur(foo), /CC @MartijnCuppens

The filter property can perform poorly when animated and doesn't work in IE. We might better keep the implementation but rename this to backdrop, just like the modals.
We should also keep the backdrop color the same as the modal for more consistency. Also the demos look a bit too colorful, just one example on how to change the background color should be enough. I also don't like the outlined focus state of the modal (Chrome), we should remove this (like we do with the modals).

Doesn't seem the blur is animated, though.

Is this planned for v4 as well?

Is this planned for v4 as well?

We're not planning on adding new features for v4 (bugfixes only)

Ok Let's sum up.
I have updated the 'todos' on first message and I have to work the following

"the offcanvas example's mobile menu doesn't work anymore"
It's true. in order to re-create the same example, the 'offcanvas' component has to be breakpoint -activated or to override it through css. Which approach should I follow?    (need decision to continue)

"blur" implementation has to be renamed to "backdrop" and try to keep a consistency with modal's implementation

we have to decide, the offcanvas behavior when another one opens (need decision to continue)

@GeoSot,
Please also address these issues I mentioned:

We should also keep the backdrop color the same as the modal for more consistency. Also the demos look a bit too colorful, just one example on how to change the background color should be enough. I also don't like the outlined focus state of the modal (Chrome), we should remove this (like we do with the modals).

we have to decide, the offcanvas behavior when another one opens (need decision to continue)

We don't support this with our modals. If we are going to support this, imo, the most logic approach is close the current offcanvas and open the next one.

Hello guys. May I have some feedback to keep the request rolling?
@patrickhlauke can you help with accessibility (todo on first post)?
@XhmikosR  do I have to do something with the  FPS measurement?
@MartijnCuppens any comment after the last changes?

@GeoSot sorry for the radio silence.
Please bear with us, I'm trying to get everyone together so that we can move faster. Don't let this get you down, I hope we'll manage to regroup soon.

@GeoSot, Sure:

The blue outline still feels weird (chrome):

The first example of the offcanvas can be opened with a <a>. I'm not sure that's a good idea accessibility-wise (ping @patrickhlauke)
I don't think it's a good idea to use that many background colors in our examples. Maybe it's better to bundle colored examples under the Color schemes  section?
There's still some blur copy left in the docs

@MartijnCuppens

The blue outline still feels weird (chrome):

I think the blue outline is because of  :focus styling (which is not mine). I have removed the outlines & shadows.  Do you want to override the default focus??

The first example of the offcanvas can be opened with a . I'm not sure that's a good idea accessibility-wise

I tried to copy the other components behavior. So yes, if we want, I can remove it

I don't think it's a good idea to use that many background colors in our examples. Maybe it's better to bundle colored examples under the Color schemes section?

I will handle it. I have changed only the example. my mistake ;)

I think the blue outline is because of :focus styling (which is not mine). I have removed the outlines & shadows. Do you want to override the default focus??

Indeed, those are browser defaults. We also remove them for the modals, so let's get rid of it.

The first example of the offcanvas can be opened with a . I'm not sure that's a good idea accessibility-wise.

I tried to copy the other components behavior. So yes, if we want, I can remove it

Leave it for now, unless @patrickhlauke has a strong opinion about this.

if its possible to make off-canvas with body animate to right like reveal

@GeoSot please make sure you do not overwrite my rebase.
@MartijnCuppens and I will have a look at the remaining things and let you know after that.

Pushed some changes. What bothers me, is the inconsistency between this offcanvas component and the modals (for example the way the backdrop is set). We got to make sure to keep this consistent (maybe we should make a backdrop component?).

@MartijnCuppens during the last commit you removed the choice to change size (width or height) below a breakpoint (ex:mobile devices). Are you sure you want to remove it?

@MartijnCuppens during the last commit you removed the choice to change size (width or height) below a breakpoint (ex:mobile devices). Are you sure you want to remove it?

Yes, we try to avoid mobile variables. Smaller viewports != mobile. Widths can be changed with the Sass variables.

Rebased. We should look into wrapping this up for v5.0.0-alpha1.

One thing that's always annoyed me with body overflow: hidden is with scroll bar width (e.g. Edge on windows, or if you have Show Scroll bars: always on your mac OS settings).

You get a jutter when applying overflow: hidden, just as the linked example for this PR. Anyway, I get around this by doing
const scrollBarGap = window.innerWidth - document.documentElement.clientWidth;
if (scrollBarGap > 0) {
  document.documentElement.style.setProperty('--scroll-bar-width', `${scrollBarGap}px`);
} else {
  document.documentElement.style.removeProperty('--scroll-bar-width');
}

In my javascript before applying the class that applies body overflow: hidden. Then, in that same class, I use the css
padding-right: var(--scroll-bar-width, 0);

Anyway, just a thought in case you find it useful. I'm not sure how the bootstrap project considers references to window, so there may be a different opinion there.

Would this component also handle this style of offcanvas, where the sidebar would push the body content as well? https://www.w3schools.com/howto/howto_js_off-canvas.asp

Would this component also handle this style of offcanvas, where the sidebar would push the body content as well? https://www.w3schools.com/howto/howto_js_off-canvas.asp

I am afraid not with this implementation. Maybe on a future update

@719media
Please make a reminder again, when you see this 'pr' is going to be merged (or after it). It is too early to add more things and as you see it is already difficult to proceed on this process

Actually it is easy to convert modal component into offcanvas.
Here is I made https://bootstrap-menu.com/demos/modal.html
Why not add special class like .modal-aside-right  and  .modal-aside-left  to make offcanvas from modal itself .

Actually it is easy to convert modal component into offcanvas.
Here is I made https://bootstrap-menu.com/demos/modal.html
Why not add special class like .modal-aside-right and .modal-aside-left to make offcanvas from modal itself .

I  had in mind a class that extends modal, but you went much further.
Yes personally i like it.
It's a bit confusing as concept,  but it is simple with some lines of pure css gaining smaller size on final result and already tested js code
@mdo
@XhmikosR
@MartijnCuppens
Please take a look on this.
It could be a good idea

Please consider supporting these kind of features: https://github.com/bootstrap-vue/bootstrap-vue/issues/5095
Just finished a custom implementation of a similar sidebar main navigation (also using collapsable submenus). Implemented it first without, and now with, BSV Sidebar component. Turned out to be much more work than anticipated. And still need to optimize for narrow mobile widths...
Should be pretty common layout for a modern web app that is optimized for mobile use.

Capturing some of these latest comments in a new PR: see #31285. I know there have been previous efforts on this as well, and I appreciate @vosidiy for sharing their own here again. Please head over there to share any feedback if y'all have any!

please add rtl support

Thank you very much for adding rtl support.
I compared:
https://deploy-preview-30980--twbs-bootstrap.netlify.app/docs/5.0/cheatsheet/
with:
https://deploy-preview-30980--twbs-bootstrap.netlify.app/docs/5.0/cheatsheet-rtl/
I have to say it's more than very good, It's one of the best.
Here are some thoughts:

Typography: every thing look fine. Thank you for that.

Images: Totally fine. nice.

Tables: Lovely.

Forms: Everything is nice.

Input group:
FYI: Email, URL and numbers in RTL languguages are LTR. Must of the time username is English (LTR).

Validation: great. very great. very very very great. Thanks. It's save a lots of work. Beautiful.

Alerts: Lovely.

Breadcrumb: seems nice to me.

Buttons: good

Dropdowns: By default it most starts from right to left:

and also:

and:

list groups: nice.

Modal: Lovely.

Navs: Good.

Navbar: Very good.

Pagination: Nice work.

Popovers: Default is better to be on the left.

Progress: Very nice, also ltr progress is also usable in rtl languages.

Scrollspy: Very good.

Spinners: Thanks but why? (Clockwise in rtl countries is same as ltr countries). Really thanks for that honest work.

Toasts: I love you for that.

Tooltips: Beautiful.

Thanks again.
By the way my first language is Persian and it's RTL.

@happynewlife there's a dedicated PR for RTL (#30980), this is off-topic on this one. Thanks for your feedback though, this is well aligned with what is being done.

Another thing to consider is the type of effect on off canvas. e.g. Switching between overlay and push(you could even consider putting in push where is shrinks the main content or 1 where is pushes this content off the other side off the canvas if off canvas expanded.)
see below for an example of what i mean.
https://tympanus.net/codrops/2013/04/17/slide-and-push-menus/

@m-peterman also I'd suggest to consider that kind of use case, that the 'offcanvas' sidebar would not be entirely hidden but just minimized. For example showing only icons while in expanded state having also link texts. That kind of layout seems pretty common need when implementing navigations.

Hey, if anyone wants help with the documentation on this tag me.
I'm maintaining a bootstrap 5 extension that already uses the off-canvas example template so I want to add this to it the second it gets merged into the main branches.

Thinking we'll still be going with side modals instead of a brand new component. Please see #31285 and weigh in with any feedback or contributions via PR if y'all have ideas!

@mdo yeah, I saw that and I'm keeping an eye on it.
Should this issue be closed then?

@mdo may I propose something different?
I agree that till now both components have the same functionality. So yes it' a good idea the side modal.
The disadvantages of the 'side' implementation, are that both components are chained by the same css and same functionality, and if you choose right now to keep them as one, they may be tied for ever.
I think it could be better to make an new component(js class), named as offcancvas, which for now will extend the modal js implementation and tests, so there is not need for extra writing, but with its own css classes.
Adapting this idea, will give the choice for a future decoupling or extra features, for both components

https://github.com/xcartmods/bootstrap-4-side-modals

Hi, @GeoSot I found an issue with current version of a script. If a button (or link) used as a toggle to show an OffCanvas component has non-text elements, eg. <svg> or <img> tags, button only works if you click on the padding area of the button/link.
https://codepen.io/demicanadian/pen/LYZErQP

@Boberro I confirm the case.
For now I do not want spend more time  to make a fix.
I do not have any new feedback to proceed on this PR, and as I see side-modal is in favor to be the new offcanvas

checked https://deploy-preview-29017--twbs-bootstrap.netlify.app/docs/5.0/components/offcanvas/ and it has major focus / focus order issues.
navigating through the page just with tab/shift+tab, the offcanvas can already be navigated into even when not visible (resulting in focus getting lost into the currently invisible offcanvas).
when the offcanvas is triggered, focus is not automatically moved to the offcanvas. in fact, it seems to reset itself to the start of the document (so on next tab you're all of a sudden on the "skip to content" link right at the top of the page).
once the user IS in the offcanvas, they can still tab back out of it.
at a high level, offcanvas should behave like a modal. this includes the way it handles focus.
having aria-expanded="true" on the offcanvas container makes no sense.
aria-offcanvas="true" makes absolutely no sense, that attribute does not exist.

Will this make it to 5.0, please?

Will this make it to 5.0, please?

Testing https://deploy-preview-29017--twbs-bootstrap.netlify.app/docs/5.0/components/offcanvas/

once the offcanvas is closed, focus / tabbing is broken in the page; can't reach anything when using Tab/Shift+Tab
offcanvas falls below the search bar in the docs
the offcanvas is, in essence, a modal dialog that just happens to show on the side rather than centered. it should have all the same things as modal dialog, e.g. role="dialog", aria-modal="true" etc
once the offcanvas is closed, focus should be programmatically set back to the control that originally opened the offcanvas

Testing https://deploy-preview-29017--twbs-bootstrap.netlify.app/docs/5.0/components/offcanvas/

once the offcanvas is closed, focus / tabbing is broken in the page; can't reach anything when using Tab/Shift+Tab
offcanvas falls below the search bar in the docs
the offcanvas is, in essence, a modal dialog that just happens to show on the side rather than centered. it should have all the same things as modal dialog, e.g. role="dialog", aria-modal="true" etc
once the offcanvas is closed, focus should be programmatically set back to the control that originally opened the offcanvas

Thank you again @patrickhlauke
The issue with search bar z-index it happens on modal too cause the search bar on the docs css has the biggest z-index of all.
So I didn't change something, in case you want to fix it on another scope

Thank you again @patrickhlauke
The issue with search bar z-index it happens on modal too cause the search bar on the docs css has the biggest z-index of all.
So I didn't change something, in case you want to fix it on another scope

hope 5.0 release publish this features

hope 5.0 release publish this features

@GeoSot thanks for making the changes requested - can confirm that this now behaves like a modal. One last suggestion: I'd make the title of the offcanvas an actual heading (in theory it should be <h1>, but probably something like an <h2> or <h3> would be acceptable too), give it an id, and reference it from the modal container using aria-labelledby (same as with the regular modals) - this gives the modal a label that is then announced by assistive technologies when the modal first pops up and focus is moved to it.

@GeoSot thanks for making the changes requested - can confirm that this now behaves like a modal. One last suggestion: I'd make the title of the offcanvas an actual heading (in theory it should be <h1>, but probably something like an <h2> or <h3> would be acceptable too), give it an id, and reference it from the modal container using aria-labelledby (same as with the regular modals) - this gives the modal a label that is then announced by assistive technologies when the modal first pops up and focus is moved to it.

regarding the subnavbar displaying over the offcanvas, i filed https://github.com/twbs/bootstrap/pull/32839

regarding the subnavbar displaying over the offcanvas, i filed https://github.com/twbs/bootstrap/pull/32839

oh, additionally, would be good to swap out the lorem ipsum text with some actual/pseudo text (see https://github.com/twbs/bootstrap/pull/32246 and a few related recent PRs)

oh, additionally, would be good to swap out the lorem ipsum text with some actual/pseudo text (see https://github.com/twbs/bootstrap/pull/32246 and a few related recent PRs)

when the off-canvas is hidden, but has keyboard-focusable elements, it is still in the focus order (aria-hidden="true" hides its content from AT, but does not prevent focusable controls from being focused). when not visible, the off-canvas needs to be fully neutralised (e.g. with display:none), the same way modal dialogs are.
color schemes and options examples should also have an explicit "X" close button. otherwise, a touch+AT user will not be able to close the off-canvas (nothing to swipe to and then click/activate to close it, and no ability to press Esc).
accessibility section points to collapse component accessibility docs, but really this should say that functionally, an off-canvas is like a modal dialog, that just happens to be positioned to the side. and then i'd say copy (rather than reference) and adapt the accessibility guidance for modal https://getbootstrap.com/docs/5.0/components/modal/#accessibility
a more high-level question (@mdo et al): do we call it "offcanvas" (one word, ugly) or "off-canvas", or even "off-canvas panel"? i'd tend towards the latter.
some of the wording in the docs part may also need a bit of tweaking, but i can get around to that once we're closer to finished.

when the off-canvas is hidden, but has keyboard-focusable elements, it is still in the focus order (aria-hidden="true" hides its content from AT, but does not prevent focusable controls from being focused). when not visible, the off-canvas needs to be fully neutralised (e.g. with display:none), the same way modal dialogs are.
color schemes and options examples should also have an explicit "X" close button. otherwise, a touch+AT user will not be able to close the off-canvas (nothing to swipe to and then click/activate to close it, and no ability to press Esc).
accessibility section points to collapse component accessibility docs, but really this should say that functionally, an off-canvas is like a modal dialog, that just happens to be positioned to the side. and then i'd say copy (rather than reference) and adapt the accessibility guidance for modal https://getbootstrap.com/docs/5.0/components/modal/#accessibility
a more high-level question (@mdo et al): do we call it "offcanvas" (one word, ugly) or "off-canvas", or even "off-canvas panel"? i'd tend towards the latter.
some of the wording in the docs part may also need a bit of tweaking, but i can get around to that once we're closer to finished.

What about 'Sidebar Navigation/Panel' or 'Side Panel'?

What about 'Sidebar Navigation/Panel' or 'Side Panel'?

@patrickhlauke you got me in thoughts. Should support swipe to close too?

@patrickhlauke you got me in thoughts. Should support swipe to close too?

@patrickhlauke you got me in thoughts. Should support swipe to close too?

i'd stay away from that to be honest, as it's...non-trivial (and swipe support would still not work for touch+AT users, as swipe gestures are handled directly by AT to control it first and foremost, unless a user explicitly does a pass-through gesture)

@patrickhlauke you got me in thoughts. Should support swipe to close too?

i'd stay away from that to be honest, as it's...non-trivial (and swipe support would still not work for touch+AT users, as swipe gestures are handled directly by AT to control it first and foremost, unless a user explicitly does a pass-through gesture)

@GeoSot  wait for you,everyone needs this feature.

Offcanvas is an essential feature, and required feature.
In Dashboard and Admin themes, the only required thing is Offcanvas.
The developers need to understand this and make this permanent feature of Bootstrap 5

@geosot I owe you a huge apology for the delays here. Thank you for continuing to update and contribute elsewhere. After talking with @XhmikosR and re-reviewing your PR here, I'd love to make this happen in v5 if you're still up for it. No more delays on our part, we'd love to get this in the core.
Here's what @XhmikosR and I discussed over Slack:

[ ] Finish and merge this PR
[ ] Close any other PRs
[ ] Iterate on the docs a bit more
[ ] Detach and de-dupe the backdrop in #32439

Anything else we'd want to do?

@mdo  I would like to super thank you. It is almost an honor for me to achieve this level of contribution. I 'll try my best

@mdo so,v5 beta2 can publish this feature?

Bootstrap Offcanvas should be visible in large screen, only hide in smaller screen.
Example: w3schools, tailwind.
Visible in large screen, collapse with hamburger in small(540px) screen.
For the intended behavior, take as example codeply-offcanvas,
this is how I am looking for the Offcanvas. I only need official support, and official touch - so that this does not get broken in say other browsers, mobile screens, other devices from other geographies.
Uses:

Tutorial Websites like w3schools
Dashboard theme(most used purpose)

a more high-level question (@mdo et al): do we call it "offcanvas" (one word, ugly) or "off-canvas", or even "off-canvas panel"? i'd tend towards the latter.

Still angling for at least the first hyphenated naming - @mdo thoughts?

The classes are currently named .offcanvas, .offcanvas-right and .offcanvas-bottom. Considering the recent move to RTL, should they be named that, or should they be named .offcanvas-start and .offcanvas-end instead?

Thank you for tackling the things I mentioned in https://github.com/twbs/bootstrap/pull/29017#issuecomment-766848961
Last few comments:

remove the aria-expanded="false" from the various trigger elements. it's incorrect to use these (it's not an open/close disclosure widget here)
wondering if for the code samples it would make sense to shorten the actual shown markup / only show ... for the actual content of the panel? the samples appear super long and complex, but most the complexity is just all the example markup stuff in the off-canvas itself. i'd shorten them samples to basically show what's needed for the trigger and what the most important constituent parts of the panel are, e.g.

<div class="offcanvas offcanvas-left" tabindex="-1" id="offcanvasExample" aria-labelledby="exampleOffCanvasLiveLabel">
  <div class="offcanvas-header">
    <h5 class="modal-title" id="exampleOffCanvasLiveLabel">offcanvas</h5>
    <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close">
    </button>
  </div>
  <div class="offcanvas-body">
    ...
  </div>
</div>

I would still love to see (at least in the documentation) a better name for this. "Offcanvas" as one word is awkward. still angling for "Off-canvas" (which seems quite popular as a term, from some googling). the class names can remain .offcanvas, I don't mind that, but in documentation, I'd strongly favour the hyphenated version.
There's some tweaks to the wording in the documentation that I'd do, but I'll go for that in a separate PR once this is merged.

The classes are currently named .offcanvas, .offcanvas-right and .offcanvas-bottom. Considering the recent move to RTL, should they be named that, or should they be named .offcanvas-start and .offcanvas-end instead?

Hey guys. I will need little help or your opinion.
Js tests for scrollbar fail in combination with modal's tests. I am very confident about the implementation and almost sure that it fails cause of some nailed bodystyle values on modal test. Both codes do their job (I think correct) but with different ways. Scrollbar.js uses only js and client widths, modal uses dummy html element.
The difference on tests is that scrollbar.js tries to find out only if there is a scrollbar and its width only, as modal tests do some tricks with body right padding and though time are over-engineered on what this code can do.
The right way for me, is to fix modal tests but that's me. Is there another advice? Can anyone help to align them with reality?
cc/
@mdo, @XhmikosR , @rohit2sharma95

I think I'd have to defer to @rohit2sharma95 and @XhmikosR on the best path forward there @geosot. The less clever a solution is though, the better it generally is. If we can streamline things and make it more accurate, that'd be the solution we should aim for IMO.

Pushed another update to edit some wording in the docs. For now, I'm leaving everything as offcanvas, from source code to usage in the docs copy. We can potentially change this later, but I prefer the one way to spell it, even though it's grammatically incorrect.
I've also renamed the -left and -right classes to -start and -end, to match RTL naming.
From my POV, this is basically good to merge. Then I believe we can tackle the backdrop issue.

All right, this is pretty hard to rebase to clean up the patches into less commits, so I'll have to squash it into one patch.
Huge thanks to @GeoSot for sticking with us after all this time, to everyone else who contributed to the branch and to those who helped reviewing the PR!
We'll need to make some refactoring later to deduplicate some stuff, tweak doc examples, add a navbar offcanvas example, etc, but at least this should help a lot of people.

Took us long enough 😆 ❤

Thank you George for the hard work :heart::blue_heart:  and for debugging BrowserStack tests :smile:

Thank you all for your support on this MR. Thanks @XhmikosR  for your patience


Multiple schema

On recommendation from Ken, I thought I would try to think through changing lasair-lsst repo so that it can handle multiple schema. There are three that I know of (below). There will be a SCHEMA keyword in the settings.py that must have the same value for each VM handling the alerts. See section 4 below for values of SCHEMA.
(1) This means changes to the deployment scripts for Cassandra
There will be an extra directory in the schema directories, so that for example
lasair-lsst/common/schema/lasair_cql/diaObjects.cql
becomes
lasair-lsst/common/schema/elasticc/lasair_cql/diaObjects.cql
(1.1) The Cassandra table names would get an extra tag, so that for example
diaSources
becomes
diaSources_elasticc
(1.2) The unit tests that compare what we have with the schema will also need to be changed to the new directory structure.
(1.3) Some utility code that uses the schema will need to be changed.
(2) There will be changes to the features code, for example
lasair-lsst/tree/main/pipeline/filter/features
becomes
lasair-lsst/tree/main/pipeline/filter/features/elasticc
which uses the diaSources etc to compute features, and we need to make sure the things are called the same thing, that quantities we want are still there, etc.
(3) There will be changes needed to the webserver and API, which fetch data from Cassandra, at least changing the names of the tables that are queried
(4) Here are the schema that I know of:
SCHEMA = lsst4
https://github.com/lsst/alert_packet/tree/main/python/lsst/alert/packet/schema/4/0
last updated 3 years ago, its the current schema for our code
SCHEMA = lsst5
https://github.com/lsst/alert_packet/tree/main/python/lsst/alert/packet/schema/5/0
just discovered this, last updated 4 months ago
SCHEMA = DP0.2
https://github.com/lsst/sdm_schemas/blob/main/yml/dp02_dc2.yaml
In Yaml format instead of AVSC
SCHEMA = elasticc
https://github.com/LSSTDESC/elasticc/blob/main/alert_schema/elasticc.v0_9_1.alert.avsc
all the cool kids are sucking these up now

Schema differences

lsst4 and lsst5
diaObject_lsst4 and diaObject_lsst5 are identical except slight changes to names, for example zLcPeriodic16 --> z_lcPeriodic16

diaSource_lsst4 and diaSource_lsst5 are identical except slight changes to names, for example dipAngle --> dipoleAngle and filterName --> band
(2) DP0.2
diaObject_DP0.2 is like diaObject_lsst5 but with real lightcurve features, it has uPSFluxStetsonJ instead of generic attributes like u_lcNonPeriodic09
diaSource_DP0.2 seems VERY DIFFERENT from diaSource_lsst5. There are for example 12 attributes pixelFlags* in the former that are not present in the latter.
(3) Elasticc
diaObject_elasticc schema is all about the HOST GALAXY, not about the lightcurve, for example hostgal2_ellipticity, hostgal_zphot_q000 etc
diaSource_elasticc is very small, only 9 attributes vs 107 in the diaSource_lsst5.


[test] Add check for Slurm error message when no constraint is given

The error in the sanity pattern may be too specific for daint and dom. It could also change to something more generic, like error: You have to specify, at least, what sort of node you need:.

Hello @ekouts, Thank you for updating!

In the file cscs-checks/system/slurm/slurm.py:

Line 65:80: E501 line too long (81 > 79 characters)

Do see the ReFrame Coding Style Guide

@jenkins-cscs retry

I am doing some fine tuning of the test and will push shortly.

@jenkins-cscs retry daint


fix build error for file import

Date: 22/01/2024
Description
This PR fixes the build error that we are getting in vercel for asset
The reason for that was that we renamed the assets from Github_logo to github_logo, and that was not able to figure that change.
Documentation Updated?

[ ] Yes
[ ] No

Under Feature Flag

[ ] Yes
[ ] No

Database Changes

[ ] Yes
[ ] No

Breaking Changes

[ ] Yes
[ ] No

Development Tested?

[ ] Yes
[ ] No

Screenshots

Screenshot 1

Test Coverage

Screenshot 1

Additional Notes

Looks good to me
Please add a description on why this occurred and how it is being solved

The reason for that was that we renamed the assets from Github_logo to github_logo, and that was not able to figure that change.

Why did we change from Github_logo to github_logo? @vinayak-trivedi


feat: add processing for NFC scan events

Description of change
Fixes #263
Some tests fail need help fixing them
FAILED tests/data/test_common.py::test_camera - AssertionError: assert {'anonymousDe...': False, ...} == {'anonymousDe...': False, ...} FAILED tests/data/test_common.py::test_events - pydantic.v1.error_wrappers.ValidationError: 1 validation error for Event FAILED tests/data/test_common.py::test_bootstrap - AssertionError: assert {'anonymousDe...': False, ...} == {'anonymousDe...': False, ...} FAILED tests/test_api.py::test_get_events_raw_default - AssertionError: assert 1375 == 1374 FAILED tests/test_api.py::test_get_events - pydantic.v1.error_wrappers.ValidationError: 1 validation error for Event FAILED tests/test_api.py::test_get_camera_video - FileNotFoundError: [Errno 2] No such file or directory: 'ffprobe'
Pull-Request Checklist

[x] Code is up-to-date with the main branch
[ ] This pull request follows the contributing guidelines.
[ ] This pull request links relevant issues as Fixes #0000
[x] There are new or updated unit tests validating the change
[ ] Documentation has been updated to reflect this change
[ ] The new commits follow conventions outlined in the conventional commit spec, such as "fix(api): prevent racing of requests".

If pre-commit.ci is failing, try pre-commit run -a for further information.
If CI / test is failing, try poetry run pytest for further information.

Summary by CodeRabbit

New Features

Introduced support for NFC card scanning events, enhancing camera event handling.
Added properties to track the last NFC card scanned and its event ID in the Camera class.
Implemented a new class for NFC metadata, allowing for detailed event tracking.

Tests

Added a new asynchronous test to validate NFC card scanned event handling in WebSocket communication.

These updates improve the system's capability to manage and track NFC-related events effectively.

replaced by a new one


Insane amounts of trout in frozen ocean

Which I have observed. and possibly other oceans.

Also possibly rivers... testing now.

It's in all biomes where trout spawn... I've fixed it... partially.

This will stay opened even though I said it was fixed... it's not really fixed... no idea how to fix it.

I've noticed that they aren't just spawning in water,  I've been finding them inland in areas where a spawn source of water could be near by.
As in we can be traveling around and then find random floating trout drops, or get to witness trout bouncing before they die and drop their item.  They are more commonly showing up on beaches or shores of large bodies of water, but have also witnessed floating trout drops while sailing a boat through an area.
I'm not sure where in the code the spawn information is located so I can't test out settings at this time.

Right. this is a possibly different, but likely the same issue. I do not know what causes either of these, as I am only using fabric's mixing/spawning implementations. I may someday figure out how to fix this... but currently it's got me at a standstill.


remove the startup shortcut from wix

this was auto-starting all of the non-Gui services. when we changed the way auto-start works (so that it would actually work) this was still hanging around.

LGTM

deprecatedStartupInfo is called from the log send codepath not on every startup.

Also this fails to build:
..\install\install_windows.go:381:37: undefined: appDataDir

Also this fails to build:
..\install\install_windows.go:381:37: undefined: appDataDir

yeah - fixed that :/


VLD1_LANE_S32

Missed instructions vld1_lane*,
I addition one of them (vld1_land_s32).
I will addition more missed instructions during my vvdec project develop.

Hi, thanks for the patch!  It's a great start, but we can't quite accept the patch as-is.
This repository is just an automatically generated mirror of the source code directory of SIMDe, and we can't accept patches here; the changes would just be overwritten as soon as there is another commit to SIMDe.  Please submit your pull request to SIMDe, and as soon as it hits the master branch the changes will automatically be pushed to this repository.
We do also require tests for all functions, so before we can accept your patch we'll also need a test.  In this case, you'll need to create a new file at test/arm/neon/vld1_lane.c and add it to meson.build.  For an example where we added a new NEON function family, see the patch which added vrndp*.
Also, a couple minor changes are in order.  First, please add yourself to the copyright declaration in vld1_lane.h! This is more your work than mine, and we don't require copyright assignment so legally you own the code.
Second, it looks like vld1_lane_s32 is actually available on armv7, not just AArch64. If you take a look at the bottom of the description on Arm's web site, you should see a "Supported architectures" section, which in this case says v7/A32/A64.  These correspond to the SIMDE_ARM_NEON_A32V7_NATIVE/SIMDE_ARM_NEON_A32V8_NATIVE/SIMDE_ARM_NEON_A64V8_NATIVE preprocessor macros.  If you change all those A64V8 strings to A32V7 SIMDe can use the native implementations on armv7 and armv8, not just aarch64.
If you need any help or have any questions, please feel free to ask on the SIMDe issue tracker, or there is a chat room if you prefer.

Thank your advices, I will redo the patch and submit to simde tree in later


fixes update table when geocode, fix #1934

@viddo review please

Frontend tests were OK :+1: (details)

:dancer:


user interface changes

removed reliance on external file hosting

dank

I'll have a separate branch for these types of PR in the future, use the dank branch


Requires reregistering of watchers

Hi
I've been using your gem, but it's not working quite as I would expect.
It seems that I have to reregister the watcher whenever an event has occurred. So running notifier.run will loop forever, but only handle each registered event once. To continuously handle events I have to use notifier.process in a loop and run notifier.watch after process, see example below. If I omit the call to watch() in the loop, the handler will only be called the first time the file is modified.
I don't know if this is intended behaviour or not, at least I don't think it is reflected in the readme.
Thanks,
Petur
require 'rb-inotify'

handler = Proc.new { puts "handle" }

notifier = INotify::Notifier.new
notifier.watch("./file.txt", :modify, &handler)

loop {
  notifier.process
  notifier.watch("./file.txt", :modify, &handler)
}

The solution is to handle the flag ":ignored" and re-instance the notifier.watch whenever you receive one.

Now that we have test, it would be great to add a spec for this including some documentation for the correct way this should be handled.

Feel free to submit a failing PR either here or in the listen gem.


Revert "Update jmx-metric-gatherer to latest (#5534)"

This reverts commit 5580753a03ec42e85fac58cc254c0df48a34c6d2.
The 0.112.0 PR indicates the version of the jmx-metrics-gatherer we merged in is still not supported, so reverting back to a known stable version.

I don't like our conditional test jobs. I think we need to enable all the tests unconditionally. It'll allow us to set make more of them required


Prefix our functions to prevent conflict

As discussed in #68: Call prompt as a single function:

I’m also wondering if we should prefix them with pure or something similar, since those are available everywhere in fish. How we can sure it won’t collide with other user packages? Is it the job for the package manager or there is a naming convention we should adopt?

@edouard-lopez Yes, let's use pure_* (or if the function is "private", _pure_*) to prefix functions.

I will remove the prefix in filename but keep it in function name.
Is it ok with you? cc @rafaelrinaldi

I wonder if we should to assemble all pure functions in one file like fisher do, so it won't clutter functions folder. They have one fisher.fish file that have all fisher related functions.

I will remove the prefix in filename but keep it in function name.

It won't work, fish autoloading mechanism demands functions to have the same name as the file name or it won't find it. It also means other functions inside this file are essentially private.

I wonder if we should to assemble all pure functions in one file like fisher do, so it won't clutter functions folder.

FYI I do that in Fisher to make Fisher's installation a simple file download and I consider it a special case.
Generally, I would use one file per function. If you are using a package manager to install pure, it will handle moving .fish files in and out of your functions directory, so I am not bothered by pure's exporting more than one .fish function.
Just my two cents, ultimately this is up to you.

I'm making a PR


verify_client: refactor this program via an init method

It's better to isoldate the init_secure_upgrade of sec_api into a method.
Use capital letter to define the constant variable
Check up boolean type via 'is' rather than '=='

Please add the modified files and re-submit.


Csrf not working properly

Issue Description
When I try to use the CSRF functionality, I get a 404 error and UndefinedError 'dict object' has no attribute 'username'
Reproduction Steps

Create 2 pages:
(1) index.html ( http://<IP_ADDRESS> ): containing <form action="redirect.html">
(2) redirect.html: containing:
{% do
  request.parameters.update({
   'j_username': request.parameters['username'],
    'j_password': request.parameters['password']
  })
%}
{{ make_csrf_page('https://fqdn.nextpage.com', request.parameters) }}

enter fake email address + password in index.html and submit

Environment Details
Linux kingphisher2 4.4.0-24-generic 43-Ubuntu SMP Wed Jun 8 19:27:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux.
Error Details / Stack Trace
/var/log/king-phisher.log:

2016-06-15 19:12:39,776 AdvancedHTTPServer                                 ERROR    jinja2 template /var/www/redirect.html render failed: UndefinedError 'dict object' has no attribute 'username'

And in the browser a 404 is given:

Error 404: Page Not Found
Sorry, the page you were looking for doesn't exist.

Am I doing something wrong or is this a bug?
Love the tool btw :D

Ocraz,
Looks like you have the CSRF function set up correctly. This issue is more then likely in your landing page. Make sure that the username and password fields variable names are "username" and "password" ( Harvesting Creds ). Then have the submit function refresh to the CSRF page. This way the King Phisher server records the necessary data to preform the CSRF prior to posting the request to the target server.
My recommendation is to set the refresh to a blank page currently, and send yourself a test email to see if the username and password is getting captured into your King Phisher data base.

Thanks for your answer! It seems an apology is in order: I did it correctly in the first place, but after trying some stuff, I accidentally left the incorrect names for the input types.
However, after changing it back, I get:

Exception happened during processing of request from ('aa.bb.cc.dd', 13606)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 596, in process_request_thread
self.finish_request(request, client_address)
File "/usr/local/lib/python2.7/dist-packages/AdvancedHTTPServer.py", line 669, in finish_request
super(AdvancedHTTPServerNonThreaded, self).finish_request(*args, **kwargs)
File "/usr/lib/python2.7/SocketServer.py", line 331, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/opt/king-phisher/king_phisher/server/server.py", line 120, in init
super(KingPhisherRequestHandler, self).init(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/AdvancedHTTPServer.py", line 743, in init
super(AdvancedHTTPServerRequestHandler, self).init(*args, **kwargs)
File "/usr/lib/python2.7/SocketServer.py", line 652, in init
self.handle()
File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle
self.handle_one_request()
File "/usr/lib/python2.7/BaseHTTPServer.py", line 328, in handle_one_request
method()
File "/opt/king-phisher/king_phisher/server/server.py", line 182, in _do_http_method
http_method_handler(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/AdvancedHTTPServer.py", line 1119, in do_POST
self.dispatch_handler(self.query_data)
File "/usr/local/lib/python2.7/dist-packages/AdvancedHTTPServer.py", line 954, in dispatch_handler
self.respond_file(file_path, query=query)
File "/opt/king-phisher/king_phisher/server/server.py", line 434, in respond_file
template_module = template.make_module(template_vars)
File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 1033, in make_module
return TemplateModule(self, self.new_context(vars, shared, locals))
File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 1090, in init
self._body_stream = list(template.root_render_func(context))
File "/var/www/redirect.html", line 10, in root
File "/usr/local/lib/python2.7/dist-packages/jinja2/runtime.py", line 196, in call
return __obj(*args, **kwargs)
File "/opt/king-phisher/king_phisher/server/pages.py", line 100, in make_csrf_page
return markupsafe.Markup(page)
File "/usr/local/lib/python2.7/dist-packages/markupsafe/init.py", line 74, in new
return text_type.new(cls, base)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 523: ordinal not in range(128)

That error message usually indicates that there is an invalid character in the page template, something that's not UTF-8. Which version of King Phisher are you running, those encoding issues should have all been resolved already.
You should open your redirect.html and ensure that it contains only valid UTF-8 characters.

According to docs/source/change_log.rst I'm using version 1.3.0
Saving it again with Notepad++ made the stack trace disappear :)
So far so good, but the error " the connection to the server was reset while the page was loading." still remains...
Any ideas?

Sounds like there still might be an issue in the server page. Can you please check the server logs as you reproduce that error? Also, this is on the CSRF page after you submit the credentials that you get this error correct?

When I submit the form:

the visit is registered
the credentials are not registered
no addition to the logfile is made

Yes correct, the error "the connection to the server was reset while the page was loading" appears after I submit the form on the landing page (index.html), so on the CSRF page (redirect.html)

It sounds like the index.html page is not POSTing the credentials to the redirect.html page. The index should have the HTML for the user to enter their credentials and have the redirect.html page specified as the target. This redirect.html page then allows the server to log the credentials and then creates an HTML form to forward them onto the CSRF target.
If you're not even getting a line in the log file regarding the redirect.html page being requested then it sounds like there's a problem with the index.html page not forwarding the user to it via the form.

How strange:

I tried a really basic landing page+form, same result, no credentials registered. So the problem isn't in the somewhat complex HTML code in the former landing page.
but when I submit to the landing page itself, the credentials are registered, both with the basic and complex landing page.

Are you referring to the landing page as the index.html with the form or redirect.html with the CSRF post? Regardless of any of the HTML (you could have a simple text file) if the username and password query parameters are sent with a valid message or visit id, they will be recorded for the campaign. Can you post the contents of your index.html and redirect.html as well as the setting for your landing page?

Yes, I am:
Landing page = index.html
CSRF page = redirect.html
index.html:
<html>
<body>
<form method="post"  action="redirect.html">
<input name="username">
<input name="username" type="password">
<input name="submit" type="submit" value="Submit">
</body>
</html>
and the redirect.html:
{% do
  request.parameters.update({
    'username_csrf': request.parameters['username'],
    'password_csrf': request.parameters['password']
  })
%}
{{ make_csrf_page('http://kenniscel.nl', request.parameters) }}
With the basic landing page, the error "the connection to the server was reset while the page was loading" seems to have been replaced with a 404...
for reference, the complex landing page has been renamed to index-complex.html

Is there a reason why you're doing it with JavaScript?
Why not have the form onder the landing page submit the form to the CSRF vulnerable target page and make the username and password values in the forms configurable by a Jinja2 command on the same page?
For example:
{{ username('custom_username_field') }}
{{ password('custom_password_field') }}
<form id="login_form" action="https://www.facebook.com/login.php method="post" >
<input type="email" name="custom_username_field" />
<input type="password" name="custom_password_field" />
<input value="Submit" type="submit" />
</form>
This way it's easier to configure and won't be blocked by plugins like NoScript or browsers like Lynx ;)
On my machines this setup doesn't seem to submit to the target page with Windows10/Firefox 47.0, Windows10/Internet Explorer 11 or with Ubuntu 14.04/Firefox 46.0.1

Because Javascript is how the HTML form is automatically submitted. Using the form you provided, the user would have to manually submit the form. If you wanted to do it that way you're certainly free too, you would just need to pull the username and password parameters using the Jinja variable request.parameters. The make_csrf function is only provided for convenience.

I get that the JavaScript is required to submit the form on the CSRF page.
But that's not what I meant.
What I meant is, why not submit the original form that is filled in by the visitor of the landing page, to the page the visitor thinks he/she's visiting?
For example:

Visitor visits landing page.
Visitor fills in form with credentials.
This form is submitted to the third-party website instead of to a local HTML file

If the information is not submitted to the local HTML file. The king
phisher server will not save the data in the King Phisher database. The
csrf function utilizes this is formation when creating the response to send
to the third party.
On Jun 16, 2016 17:17, "Ocraz"<EMAIL_ADDRESS>wrote:

I get that the JavaScript is required to submit the form on the CSRF page.
But that's not what I meant.
What I meant is, why not submit the original form that is filled in by the
visitor of the landing page, to the page the visitor thinks he/she's
visiting?
For example:

Visitor visits landing page.
Visitor fills in form with credentials.
This form is submitted to the third-party website instead of to a
local HTML file

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/securestate/king-phisher/issues/124#issuecomment-226616481,
or mute the thread
https://github.com/notifications/unsubscribe/AIngnfmWzRHO-uyBhvxAsBbDY61Dl_hoks5qMb1OgaJpZM4I3KUv
.

Of course, the server has no way of seeing that the client submits the form.

I think I found why the JavaScript is not submitting the form.
When I open the JavaScript console with F12, I see an error:

TypeError: document.getElementById(...).submit is not a function

This is because there's a hidden input field named ""submit"
But when renaming this input field to something else, it still won't submit because there's no submit button.
But if I replace the line:
<input type="hidden" name="submit" value="Submit" />
with
<input type="submit" name="submit2" value="Submit" />
It works! Hurray!
But it leaves a nasty button :p
So it got me thinking, how about:

letting make_csrf_page() insert the HTML from landing page

change the form 's action value on the CSRF page

change the input names according to the desired names on the CSRF page

This way:

No other page is shown while waiting for the target page

When a JavaScipt blocker is in place, hopefully the victim is inclined to press the submit button again, thinking the form submission didn't go well, while in fact subitting the form through the form's action field :)

To make it a little clearer, I've attached a PoC:
http://<IP_ADDRESS>/facebook_landing.html which submits to http://<IP_ADDRESS>/facebook_csrf.html

What OS and browser are you using? I can take a look at why the form is not being submitted correctly and possibly expose a button if that's the reason. At this time however, cloning the landing page into the CSRF page is not something I'm interested in pursuing.

I tried:

Windows 10/Firefox 47.0
Windows 10/Internet Explorer 11
Ubuntu 14.04/Firefox 46.0.1

I found out about it at Stackoverflow.
As for the cloning of the landing page, I can imagine such a thing would involve a lot of work.
Would it be feasible to make the CSRF page customizable (for example by inserting the necessary values with Jinja2 into a existing HTML page)?
That way I can either clone the landing page myself or create a custom "Please wait" page.

If you want to create a custom CSRF page you can make your own in HTML and Jinja.
<!DOCTYPE html>
<html lang="en-US">
  <body onload="document.getElementById('yFYXNJiR5T9k').submit()">
    <form id="yFYXNJiR5T9k" action="http://wherever.com/" method="post" >
      <input type="hidden" name="password" value="{{ request.parameters['password'] }}" />
    </form>
  </body>
</html>

I did just notice something however and that is that the line you referenced <input type="hidden" name="submit" value="Submit" /> is only added to the CSRF form because it's passed from the original landing page.

Sweet! I'll take a look at this later on!
Hmm, when I try to use the button tag, this fixes the problem for Firefox, but Internet Explorer doesn't submit the form at all :(

Awesome sauce!!! Got King Phisher to work the way I want it to :)
Thanks you guys for the good support and this awesome tool!

Our pleasure, does this issue need to remain open? It's unclear to me if there are any outstanding bugs / questions remaining.


How can I use ABSL flags in a child process when multiprocessing?

FLAGS are destroyed in child process

Although there seems to be a solution : https://github.com/abseil/abseil-py/issues/107, it can not solve this problem. Because in child process, after FLAGS.read_flag_from_files(['--flagfile=said_fiel']) + FLAGS._parse_args(),  the parsed flags are all classified into unknown_flags, or unparsed_args.

Do you have a simple re-producible example? Are your flags defined at module level? Alternatively, something like the following should work:
import multiprocessing
import sys
from absl import app
from absl import flags

FLAGS = flags.FLAGS
flags.DEFINE_string('flag', 'default', 'help')

def child(argv):
    print(f'argv = {argv}')
    print(f'FLAGS.flag = {FLAGS.flag}')

def main(argv):
    print(f'argv = {argv}')
    print(f'FLAGS.flag = {FLAGS.flag}')

    p = multiprocessing.Process(
        target=app.run, args=(child, ), kwargs={'argv': sys.argv})
    p.start()
    p.join()

if __name__ == '__main__':
    app.run(main)

Yes! By define flags at module level, my code works fine. Thanks very much! You help me a lot.


Adding support for manifest list based releases

To handle the existance of manifest list based releases, we need to call an oc image info with a --filter-by-os option to get the respective digest value that can be used to call oc adm release info where needed.  Unfortunately, this means we have to make 2 calls down into the git-cache pod, so it does take a bit more time for things like the changelog.

/hold
Waiting for https://github.com/openshift/release/pull/24435

/unhold


Request to add DocumentNo as a parameter to procedure IsOnBeforeCheckBlockedCustHandled in the Customer table

In order to allow some exceptions to the Customer Blocked field, based on a field in the sales header we would like to have the document number of the sales header added to procedure IsOnBeforeCheckBlockedCustHandled. And also, to the event publisher OnBeforeCheckBlockedCust that is raised in this procedure. Something like this:
local procedure IsOnBeforeCheckBlockedCustHandled(Customer: Record Customer; Source: Option Journal,Document; DocType: Enum "Gen. Journal Document Type"; DocumentNo: Code[20]; Shipment: Boolean; Transaction: Boolean) IsHandled: Boolean
begin
    OnBeforeCheckBlockedCust(Customer, Source, DocType.AsInteger(), DocumentNo, Shipment, Transaction, IsHandled)
end;

[IntegrationEvent(false, false)]
local procedure OnBeforeCheckBlockedCust(Customer: Record Customer; Source: Option Journal,Document; DocType: Option; DocumentNo: Code[20]; Shipment: Boolean; Transaction: Boolean; var IsHandled: Boolean)
begin
end;

If possible, we would like to know if this will be resolved and in what timeframe this could be realized

This will either get to the next minor or to the next after it.

@stephanpl we are not able to proceed with this request until you provide the info.

@Vadim-Stepanenko, in order to allow exceptions for the Customer Blocked field on sales document level we want to add a Blocked field on the Sales Header. This field will overrule the Blocked field on the Customer level. In order not to duplicate all the code where the functions CheckBlockedCustOnDocs  and CheckBlockedCustOnJnls are called, we will need these code changes

@Vadim-Stepanenko Thank you for clarifying this. Yes, that is the desired call for IsOnBeforeCheckBlockedCustHandled
Current code:
if IsOnBeforeCheckBlockedCustHandled(Cust2, Source::Document, DocType, Shipment, Transaction) then
exit;
Proposed change:
if IsOnBeforeCheckBlockedCustHandled(Cust2, Source::Document, DocType, DocumentNo, Shipment, Transaction) then
exit;
And for CheckBlockedCustOnDocs
Current Code:
Cust.CheckBlockedCustOnDocs(Cust, "Document Type", true, true);
Proposed change:
Cust.CheckBlockedCustOnDocs(Cust, "Document Type", "No.", true, true);
And for CheckBlockedCustOnJnls
Current Code:
Cust.CheckBlockedCustOnJnls(Cust, "Document Type", true);
Proposed change:
Cust.CheckBlockedCustOnJnls(Cust, "Document Type", "Document No.", true);


ng add @angular/material cannot find AppModule if imported through index.ts

Bug Report or Feature Request (mark with an x)

[x] bug report -> please search issues before submitting
[ ] feature request

Area

[ ] devkit
[x] schematics

Versions
node --version
v10.10.0
npm --version
6.4.1
ng --version

     _                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/

Angular CLI: 7.0.2
Node: 10.10.0
OS: win32 x64
Angular: 7.0.0
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.10.2
@angular-devkit/build-angular     0.10.2
@angular-devkit/build-optimizer   0.10.2
@angular-devkit/build-webpack     0.10.2
@angular-devkit/core              7.0.2
@angular-devkit/schematics        7.0.2
@angular/cdk                      7.0.1
@angular/cli                      7.0.2
@angular/material                 7.0.1
@ngtools/webpack                  7.0.2
@schematics/angular               7.0.2
@schematics/update                0.10.2
rxjs                              6.3.3
typescript                        3.1.3
webpack                           4.19.1

Repro steps
Create an Angular 7 application
If not present, create a index.ts in the App module folder with at least the following content:
export * from './app.module';

In the main.ts, import the App module indirectly by using its parent folder:
import './polyfills.ts';import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic()
  .bootstrapModule(AppModule)
  .catch(err => console.error(err));

Now use angular CLI to add material
 ng add @angular/material

The log given by the failure :
ng add @angular/material
Installing packages for tooling via npm.
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

+<EMAIL_ADDRESS>added 1 package and audited 39127 packages in 31.058s
found 0 vulnerabilities

Installed packages for tooling via npm.
? Enter a prebuilt theme name, or "custom" for a custom theme: custom
? Set up HammerJS for gesture recognition? No
? Set up browser animations for Angular Material? Yes
UPDATE package.json (1376 bytes)
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

added 2 packages from 1 contributor and audited 39130 packages in 23.409s
found 0 vulnerabilities

Could not read Angular module file: /src/app.ts

The logic for adding @angular/material is contained within the @angular/material package itself and is managed at its repository.  If the problem still persists when using the latest version of @angular/material (currently 8.2.0), please open an issue report at its repository.


OW-300: media processor - build an example using Unity and insertable  streams

See https://jira.vonage.com/browse/OW-300

please add the unity code
make it look like the capsule is moving.
fix the UI to work with vivid template


Support for  element

An unnumbered paragraph that appears after the Abstract. This is very useful for keeping TODOs.
https://tools.ietf.org/html/rfc7991#section-2.33

It's basically a <section> with attribute notInRFC.

They're already being dealt with, as admonitions appearing in the Asciidoc preamble (between the document header and the first text section).
Note that the attribute  notInRFC is a v3 attribute.


Bad pattern for 2+ digit decimal numbers

This will fail to parse 0.25 but will work with 0.2
<<if 0.1 < 0.25 >>
1
<>
2
<>
Reason:
Pattern is wrong in Lexer.cs:
patterns[TokenType.Number] = @"-?[0-9]+(.[0-9+])?";
Should be:
patterns[TokenType.Number] = @"-?[0-9]+(.[0-9]+)?";

We'll look into it. This might explain #148 also. Thanks for letting us know!

Closing this as the request was merged. Feel free to open again if you have any other issues!


7.3.0 crash : Fatal Exception: NSInvalidArgumentException -[__NSArrayM analytics]: unrecognized selector

Hi, guys! We are dealing with the following crash using version 7.3.0 of the SDK:
Fatal Exception: NSInvalidArgumentException - [__NSArrayM analytics]: unrecognized selector sent to instance
Thread : Fatal Exception: NSInvalidArgumentException
0  CoreFoundation                 0x18390ae38 __exceptionPreprocess
1  libobjc.A.dylib                0x182f6ff80 objc_exception_throw
2  CoreFoundation                 0x183911ccc __methodDescriptionForSelector
3  CoreFoundation                 0x18390ec74 ___forwarding___
4  CoreFoundation                 0x18380cd1c _CF_forwarding_prep_0
5  Foo                  0x100642c74 -[FlurryPulseEventController processEvent:withParams:forSession:]
6  Foo                  0x100614114 +[FlurrySession sessionWithApiKey:startTime:]
7  Foo                  0x1006247cc __29-[FlurryImpl setupForApiKey:]_block_invoke
8  libdispatch.dylib              0x1833554bc _dispatch_call_block_and_release
9  libdispatch.dylib              0x18335547c _dispatch_client_callout
10 libdispatch.dylib              0x1833614c0 _dispatch_queue_drain
11 libdispatch.dylib              0x183358f80 _dispatch_queue_invoke
12 libdispatch.dylib              0x18335547c _dispatch_client_callout
13 libdispatch.dylib              0x183363914 _dispatch_root_queue_drain
14 libdispatch.dylib              0x1833630b0 _dispatch_worker_thread3
15 libsystem_pthread.dylib        0x18356d470 _pthread_wqthread
16 libsystem_pthread.dylib        0x18356d020 start_wqthread
Recently updated to 7.6.0, can't yet confirm that the issue is reproducible with the newer version.
What do you guys think about this?

Bravo @RazvanMaris for your incredible use of memes!
As I recall, this was an accidentally breaking change that was introduced in 7.3 but was cleared up in 7.3.1.  Basically, we used a selector from iOS 8 while supporting iOS 7.  I will confirm for certain, so stand by.

And reading the stack more closely, that is not what it is!

I'll go see if this is new, and if it is, we'll hunt it down.

Any new, @rollinsio ?

@RazvanMaris do you have any reproduction steps I can test with on the latest?

@rollinsio, unfortunately, I don't have any steps.

@rollinsio, was this fixed in v7.6.3?

@RazvanMaris yes, this has been reported as fixed on 7.6.3.


[Refactoring] Improve Void handling for async conversion

When converting a function with a completion handler that has a Void success parameter, e.g (Void?, Error?) -> Void, or more likely a Result<Void, Error> parameter, make sure to omit the -> Void from the resulting async function conversion.
In addition, strip any Void bindings from an async function call, and any explicit Void return values from inside the async function.
Resolves rdar://75189289

@swift-ci please test

Build failed
Swift Test Linux Platform
Git Sha - 72b2616e857f57ec26bed59edd7c2d79ce40d91e

@swift-ci please test

@swift-ci please smoke test

Windows failure is unrelated


text overflowing from slides

Describe the bug
Text overflowing from all my slides. Sorry if this issue was already adressed. I searched for keywords "overflow" and "grid" and didn't find anything.
Samples to Reproduce

Using Windows 11.
Opened a brand new obsidian vault.
Installed only advanced slides. No other plugin.
Using the tpl-footer.md template proposed here as well as the example note.
Attached the vault I'm using and screenshots.

Here is a screenshot of what it looks like

Here is the sample vault I'm using to reproduce the bug:
slidesTest.zip
Expected behavior

Expected behavior is for the text to stay within the confines of the grid.

This is a normal behaviour. Since Advanced Slides is based on HTML it has to follow the rules and conventions of HTML. Scaling is very expensive and therefore there is no automatic way of doing this in HTML.
I would suggest one of 2 way:

Change the size of the slides - By default a slide is 960x700 pixel big. You can increase the size of slide which will reduce the size of the text by the frontmatter options width and height.

You can annotate the element or the slide with a <!-- .element: style="font-size: 16px" --> to reduce font size it.


Fix import grayscale EXR

Fix #27299

This should be PRed to TinyEXR, but it's not the first time this problem occurred: https://github.com/syoyo/tinyexr/issues/99#issuecomment-445637063
So I'm surprised TinyEXR needs another fix.

It appears the image will end up as RGBH, with 2 useless channels.

I simply matched tinyexr method. This will result in extra (probably unused?) channels.
I will investigate the single channel import. Thank you very much.

Well, if it makes images open that did not open before this should be fine I guess, there are no other hdr formats you can import to anyway.

@reduz that was the original request way back then, I wanted to be able to import an EXR that imports into an RH or RF image :p

Thanks!

Cherry-picked for 3.1.1.


Logger is not displaying wrapped errors correctly

fix: Logger is not displaying wrapped errors correctly
Fixes: #761
Signed-off-by: Haiyu Zuo<EMAIL_ADDRESS>

Hey, thanks. Maybe it was not clear but the goal of the issue is to see how we can fix the logger library to make it work with wrapped errors instead of just not using them.

Thanks for your reply! 😃After my research, I found the issue is caused by logrus. The logger under tetragon uses logrus and the func of Warnf will finally use Logf which uses fmt.Sprintf:

But fmt.Sprintf does not support error-wrapping directive %w

Maybe we can switch to a logger library that supports the %w verb, or manually unwrap the error and log the error message.For example:
if err != nil {
    if unwrappedErr := errors.Unwrap(err); unwrappedErr != nil {
        logger.GetLogger().Warnf("kprobe syscall prefix: %s", unwrappedErr.Error())
    } else {
        logger.GetLogger().Warnf("kprobe syscall prefix: %s", err.Error())
    }
}

fwiw, I think this patch makes sense, even if it does not fix the above issue. How about we remove the "Fix: " part from the PR/patch and then merge it?

Thanks!
fwiw, I think this patch makes sense, even if it does not fix the above issue. How about we remove the "Fix: " part from the PR/patch and then merge it?

Do you mean only change %w to %s, or use manually unwrap the error？

Thanks!
fwiw, I think this patch makes sense, even if it does not fix the above issue. How about we remove the "Fix: " part from the PR/patch and then merge it?

Thanks for reply！Did you mean only change %w to %v, or use manually unwrap the error？

Chagne %w to %v.

OK，already fixed.

PTAL,Thanks @kkourt

@zhy76 please take a look and see if the improvement is needed on the new code. Thanks!

What's the status of this PR? It looks like events have superseded it. For the future I think WithError(err) is probably the best way to include an error message in a logged event (unless anyone knows better?).

I agree with you !

Okay, do you want to close the PR?

Okay, do you want to close the PR?

OK


Getting warning messages in post-step

Hello maintainers..
I am having an issue with setup-beam. While using it in one of my workflow.. I am getting warning messages in post-step of one of my action, check. The warning message disappears when disable_problem_matchers is set to true check here.
Do you guys knows this issue with disable_problem_matchers ? if yes, do you know how this can be fixed ?
Thanks :)

It looks like the warning regex for the mix compiler problem matchers is the culprit here at a first glance. I think this might just be how problem matches work in github actions. That is to say, at a glance it looks like the owner tag for a problem matcher doesn't mean it just gets applied during mix compile, but I'd have to look further to verify that.
Or someone who knows more about problem matchers and github actions can chime in here.

Hello, @h0x0er.
Thanks for bringing this to our attention.
I was not aware of this problem, with the matchers, but I tend not to use them (not doing a lot of Elixir). Disabling them, via the option you mention, shouldn't be an issue, though, i.e. you'll not have the results they usually return, but you may also not want to use them.
In any case, if you want to dig deeper into this

... here's the definition of the matchers, for this action: https://github.com/erlef/setup-beam/blob/main/.github/elixir-matchers.json, and
... here's some generic documentation about matchers: https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md

I did find we have some (maybe invalid?) warnings in the action's CI, yesterday, while creating a PR, but since they're not super important, I postponed looking at the actions' matchers 😕
I can see that result Mon, 22 Aug 2022 05:29:17 GMT:NewAuditClient created is getting matched by ^(.*):(\d+):(.*) (this seems like a very generic reg.exp. in any case), so maybe the fix is somewhere around https://github.com/erlef/setup-beam/blob/main/.github/elixir-matchers.json#L66.
These matchers, of course, rely on output from what the action can "see" and sometimes that output is not standardised enough to have more specific reg.exp. to target them, e.g. if all dialyzer output messages started with [dialyzer] the reg.exp. could target those results easier, like ^[dialyzer] (.*):(\d+):(.*), or similar.
Pull requests are welcome 👍

@paulo-ferraz-oliveira thanks for the details..

@h0x0er, is this something you want to tweak via a pull request? Or should we close this issue?


Tables whos primary key isn't called ID

Hi,
I'm new to both Go and Buffalo. I don't know what to do when trying to interface with an existing database who's tables primary key's aren't called ID. For instance there is a user table and the primary key is called user_id. From what I can tell pop.Query.Find is the responsible function because it's inserting id as a hard-coded string. Maybe there could be a way of overriding the primary key name like there is a way of overriding the table name by implementing TableNameAble?
Thanks!
Edit: Looking further I guess I can just use pop.Query.Where instead. Is that the proper way of handling this?

Hello @cursey,
You're right, right now this one is hard-coded, but should support an override.
In the meanwhile, you can use Where instead, since Find is mostly a WHERE id = ? and a First to get the only row.

https://github.com/gobuffalo/pop/pull/97

@markbates @stanislas-m  Some strategy needs to be laid out for these id mapping issues.
Are they going to be done individually or all in a single enhancement?
I can see pros and cons of both.
Too many changes at once is risky.
On the other hand, if would be confusing and possibly breaking for users who have models that map their ID field for the query but it isn't for the relationships.

I am using postgres and I am getting the pq: column "id" does not exist. The following is my model:
type SellOrder struct {
	ID            uuid.UUID `json:"seller_order_id" db:"seller_order_id"`
	CreatedAt     time.Time `json:"created_at" db:"created_at"`
	Quantity      float64   `json:"quantity" db:"quantity"`
}

I have tried using the db tag to specify the correct column name however I dont think the tag is taken into consideration.

@nithin-bose No, the tag on the ID is not taken into consideration. It is hardcoded  currently.

Some strategy needs to be laid out for these id mapping issues.
Are they going to be done individually or all in a single enhancement?

I'd vote for a primary_key struct tag that can override defaults. That way it could be set in one place instead of using that in every Find. It could also hlp with migrations generation (is it a feature?)

On the other hand, if would be confusing and possibly breaking for users who have models that map their ID field for the query but it isn't for the associations.

Could you elaborate @petar-dambovaliev ?

Hi there
As pop documentation`s IDField :
/* pop/model.go:55 */
// IDField returns the name of the DB field used for the ID.
// By default, it will return "id".
func (m *Model) IDField() string {
	field, ok := reflect.TypeOf(m.Value).Elem().FieldByName("ID")
	if !ok {
		return "id"
	}
	dbField := field.Tag.Get("db")
	if dbField == "" {
		return "id"
	}
	return dbField
}

It would respect Db design BUT what I found in codes:
/*  po/dialect_postgresql.go:60 */
		if len(w.Cols) > 0 {
			query = fmt.Sprintf("INSERT INTO %s (%s) VALUES (%s) returning id", p.Quote(model.TableName()), w.QuotedString(p), w.SymbolizedString())
		} else {
			query = fmt.Sprintf("INSERT INTO %s DEFAULT VALUES returning id", p.Quote(model.TableName()))
		}

BUT SHOULD BE:
		if len(w.Cols) > 0 {
			query = fmt.Sprintf("INSERT INTO %s (%s) VALUES (%s) returning %s", p.Quote(model.TableName()), p.Quote(model.IDField()), w.QuotedString(p), w.SymbolizedString())
		} else {
			query = fmt.Sprintf("INSERT INTO %s DEFAULT VALUES returning %s", p.Quote(model.TableName()), p.Quote(model.IDField()))
		}

Not event "dialect_postgresql.go" but:
dialect_postgresql.go:61:                       query = fmt.Sprintf("INSERT INTO %s (%s) VALUES (%s) returning id", p.Quote(model.TableName()), w.QuotedString(p), w.SymbolizedString())
dialect_postgresql.go:63:                       query = fmt.Sprintf("INSERT INTO %s DEFAULT VALUES returning id", p.Quote(model.TableName()))
dialect_cockroach.go:75:                        query = fmt.Sprintf("INSERT INTO %s (%s) VALUES (%s) returning id", p.Quote(model.TableName()), w.QuotedString(p), w.SymbolizedString())
dialect_cockroach.go:77:                        query = fmt.Sprintf("INSERT INTO %s DEFAULT VALUES returning id", p.Quote(model.TableName()))

Anyone can do a favor to me, and tell me how to change them locally till these updates done?

After some googling finally found that (git init, git add .) able me to change files!
I can confirm that the above code (my previous comment) works as expected!
This will works:
type SellOrder struct {
	ID            uuid.UUID `json:"seller_order_id" db:"seller_order_id"`
	CreatedAt     time.Time `json:"created_at" db:"created_at"`
	Quantity      float64   `json:"quantity" db:"quantity"`
}


[release/v1.0] Cherrypick commits for v1.0.3

Brings in

https://github.com/envoyproxy/gateway/pull/3771
https://github.com/envoyproxy/gateway/pull/3893
https://github.com/envoyproxy/gateway/pull/3990
https://github.com/envoyproxy/gateway/pull/4000
https://github.com/envoyproxy/gateway/pull/4008
https://github.com/envoyproxy/gateway/pull/4021
https://github.com/envoyproxy/gateway/pull/4073
https://github.com/envoyproxy/gateway/pull/4126
https://github.com/envoyproxy/gateway/pull/4144

we may need https://github.com/envoyproxy/gateway/pull/4175?


Wild Wild West: The Steel Assassin DPI scaling issues

I'm splitting this off of #306 as it's a complicated problem (or a set of problems) that I believe warrants a separate ticket.
There are 2 unrelated problems with DPI scaling (tested at the size of 150%):

DDrawCompat defaults to the PerMonitor mode, and it switches the game to use it from the default "Unaware" mode. Except for some minor issues with the initial configuration window, there's a major problem with the in-game cursor being corrupt in this mode:

The cursor is off both with and without DDrawCompat, so clearly Microsoft is at fault, but I'm letting you know in case you can think of some GDI::Cursor magic to improve the situation.

If DDrawCompat is configured to use DpiAwareness = app, then the game runs in its default "Unaware" mode. It's mostly good (except for some expected blurriness of the scaled elements), but DDrawCompat causes a crash if the cursor is positioned on the top-left edge of a 3D screen (such as the shooting range). It may take a couple of tries -- position the cursor on the left edge of the screen and try touching the top a few times.

The crash occurs at 0x28524795 in vrd3d.dll:
        28524768 8b  8d  48       MOV        param_1, dword ptr [EBP + 0x80348]	 ; [EBP + 0x80348] is the Y position of the cursor
                 03  08  00
        2852476e 8b  84  24       MOV        EAX, dword ptr [ESP + 0x174]
                 74  01  00
                 00
        28524775 8b  f1           MOV        ESI, param_1
        28524777 0f  af  c1       IMUL       EAX, param_1
        2852477a 0f  af  35       IMUL       ESI, dword ptr [DAT_285e0828]	 ; [0x285e0828] == 800 (X of the game's resolution)
                 28  08  5e
                 28
        28524781 8b  95  44       MOV        EDX, dword ptr [EBP + 0x80344]	 ; [EBP + 0x80344] is the X position of the cursor
                 03  08  00
        28524787 8b  bd  c4       MOV        EDI, dword ptr [EBP + 0x400c4]	 ; a stable pointer to some table
                 00  04  00
        2852478d 8b  6c  24       MOV        EBP, dword ptr [ESP + 0x30]
                 30
        28524791 03  f2           ADD        ESI, EDX
        28524793 d1  e8           SHR        EAX, 0x1
        28524795 66  8b  0c       MOV        param_1, word ptr [EDI + ESI * 0x2] ; crash due to ESI being negative
                 77

The game tries to read a table with the index being CURSOR_Y * 800 + CURSOR_X. With DDrawCompat, positioning the cursor in the top-left corner may cause the game to read -1 as the cursor Y coordinate, which leads to an out-of-bounds access. Without DDrawCompat, or with DisplayResolution = app, the cursor coordinates in the top-left corner of the screen are always (0, 0). The crash emerged after d5a44eb -- before that revision, there was a problem with the minimum cursor position being (1, 1), i.e. it was unable to actually reach the edge.
Unrelated minor nit: at https://github.com/narzoul/DDrawCompat/wiki/Configuration, ColorKeyMethod should default to auto.

The cursor is off both with and without DDrawCompat, so clearly Microsoft is at fault, but I'm letting you know in case you can think of some GDI::Cursor magic to improve the situation.

Microsoft is not at fault either. The game uses DrawIcon to place the cursor image in DirectDraw surfaces and always expects the cursors to be 32x32, but at 150% they're scaled to 48x48. DrawIcon uses the correct cursor metrics, which is documented.
It's technically lying that the application is "high DPI aware" in the first place, as obviously none of these old applications would be. But there are drawbacks to both DPI awareness modes, so it depends on the game which one happens to work better. For fullscreen games, native DirectDraw itself enables the "high DPI aware" flag in the registry for the process, so Microsoft probably thought it works best for most games.

DDrawCompat causes a crash if the cursor is positioned on the top-left edge of a 3D screen (such as the shooting range).

To be fair, DDrawCompat doesn't "cause" a crash, but admittedly it seems I haven't successfully fixed the DPI unaware cursor position issues that are present without DDrawCompat also. The reason it doesn't crash without DDrawCompat is the same reason it doesn't crash when DisplayResolution=app is used: at low resolutions like 800x600, Windows automatically sets the DPI scale factor back to 100%.
The cursor position is quite inaccurate (even natively) while the cursor is above a DPI unaware window and the DPI scale factor is greater than 100%. It's not a straight mapping between the real (DPI aware) coordinates and the DPI unaware ones.
Originally, I thought the issue was related only to the ClipCursor API, as I observed that the cursor position can escape the bounds by 1 pixel in DPI unaware mode. But it turns out that ClipCursor is not needed, it's enough to have the cursor above a DPI unaware window. This can even result in negative cursor positions, both from GetCursorPos and from various other means of getting a cursor position, such as from window messages. In the game, the problematic source seems to be the lParam of the WM_MOUSEMOVE message.
I revisited my previous fixes with this in mind, and while this is probably still far from covering all possible error cases, it should cover the most frequent ones:
ddraw.zip (diff.txt compared to v0.5.2)

The crash emerged after https://github.com/narzoul/DDrawCompat/commit/d5a44eb40c05a8047dd26a2d3a10aa86f879d30b -- before that revision, there was a problem with the minimum cursor position being (1, 1), i.e. it was unable to actually reach the edge.

This was the previous workaround for wrong cursor coordinates, which also used to be documented in the wiki under the DpiAwareness setting, until I thought I fixed the issue by the mentioned commit. The issue was actually worse, because it was possible to click outside of the fullscreen application window, which caused the app to lose focus and minimize itself. But it seems I have somehow accidentally fixed this in some later version, and now only the coordinates remain inaccurate, but clicking at coordinates that are supposed to be 1 pixel outside the window somehow still end up clicking on the window itself.
I don't fully understand what Microsoft did here, and I probably never will...

I can confirm that moving the cursor to the top edge doesn't crash the game anymore, thanks!

The reason it doesn't crash without DDrawCompat is the same reason it doesn't crash when DisplayResolution=app is used: at low resolutions like 800x600, Windows automatically sets the DPI scale factor back to 100%.

This is something that I noticed while quitting the game: items on the taskbar will be smaller for a short while until the DPI scale factor is set back to 150%. However, I have difficulty reconciling that with your explanation of the cursor problem with DpiAwareness=permonitor, specifically this part:

The game uses DrawIcon to place the cursor image in DirectDraw surfaces and always expects the cursors to be 32x32, but at 150% they're scaled to 48x48.

The way I understand it, using DisplayResolution=app, which results in changing the scaling factor to 100%, should fix the corrupt cursor, but it does not.

The way I understand it, using DisplayResolution=app, which results in changing the scaling factor to 100%, should fix the corrupt cursor, but it does not.

I'm not sure how it's supposed to work either, but changing the scaling factor after the process has started does not change the cursor size, as reported by GetSystemMetrics, for example. A process restart is needed for that. Probably DrawIcon suffers from the same bug/feature.

Okay, thanks, I guess that they just send WM_DPICHANGED and don't care.
Too bad Windows doesn't allow per-app scale factors -- at 200%, the Unaware mode looks fantastic with zero blur whatsoever due to pure integer scaling (I imagine that the cursor position accuracy could potentially be improved too due to a very straightforward mapping), but one needs to change the scale factor for the whole OS instead of just one process tree. I guess I'll just wrap the main .exe with a script to change the OS DPI upon entry/exit to save some manual work.

The DPI unaware cursor clipping issue is fixed in v0.5.3.


SEO field is not saving for specific custom group

SEO field is not saving for specific custom group
Version <IP_ADDRESS>
please check the video
https://screencast.com/t/VlQF5CKd0K2j

this is fixed in this PR. Apparently the old version of seo plugin is installed in the demo.

@superchell  im using Camaleon Version <IP_ADDRESS>  in my local its the same and not saving
its not updated also?

@choyno try to install seo plugin manually
put in your gemfile gem 'cama_meta_tag', github: 'owen2345/camaleon-cms-seo'
and run bundle install

@superchell  thank you mate
confirm fixed done (Y)


[raz] Take S3 region from config and not from core-site

What changes were proposed in this pull request?

Here the region in the core-site is always set to env. bucket but if someone wants to browse a bucket of different region, if will try to find that bucket in that same region.
This happens even when we explicitly change the region via configs since core-site value was given preference. Now we are only depending on region values from Hue config.

How was this patch tested?

Tested in live E2E cluster.

Can someone review this PR? We need 1 more for merging it.


Install Extension fails: does not properly install node_modules into extension folder

VSCode Version:
1.3.0
OS Version:
Mac OS 10.11.5

Steps to Reproduce:

Install extension ForceCode
Open in Visual Studio Code - Insiders Build v. 1.3.0 while not debugging.
Attempt to activate extension with compile
Get the error 'No handler found for the command ...' An extension might be missing an activation event.

Notes:  Extension works properly when npm install is run in the extension directory.  When it's packaged or published and installed in the client, not all dependencies get installed, leading to "missing module" showing up in the developer console.  I've added about 30 low level dependencies, and it currently works on one of my macs and not the other, they are the same versions and OSs

Looking through the Developer Tools with the extension open, I'm getting lots of "Cannot find module ..." errors.
I am using node 6.2.1 and npm 3.9.3

Which versions of NPM and Node are recommended to be used for development?  It seems that I have the correct Node modules in my node_modules folder, but they are not registering for Code

@alexandrudima I opened up the extension and ran npm install in the extension folder, and the extension works properly now.

Here is the thing, currently vscode will not do anything after the extension bits are uploaded to the marketplace or after installing the extension to local disk, so when you publish the extension and the node_modules you referenced in the code are not included in the extension bits, they will not show in users' machine.
A proper solution is use .vscodeignore to handle file inclusion/exclusion, eg, https://github.com/rubyide/vscode-ruby/blob/master/.vscodeignore

@rebornix I had a .vscodeignore file  I copied the one you linked and removed a few lines from mine, then tried to publish again, but with the same results.  The package works on one machine, but not the other.  I don't understand why some packages would install, but not others, but then when I run npm install in the extension folder, it installs all the packages it needs.
I'm currently going through and bumping the version and installing package by package all the low-level packages like glob, faye-websocket, hawk, etc... basically dependencies of my dependencies are not getting installed.

Repro on my machine, only part of the npm packages are downloaded, seems not all dependencies are included into the final extension vsix. @joaomoreno any ideas?

This issue was moved to Microsoft/vscode-vsce#100


Typo "@publication"→"@publication"

https://docs.microsoft.com/en-us/sql/relational-databases/replication/delete-a-push-subscription?view=sql-server-2017

@hyoshioka0128 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

This pull request is for the Live branch. We can't merge to Live. Would you resubmit your changes to the master branch? Thanks.

Hi @hyoshioka0128 , thank you so much for your contribution, and for making docs better! You've actually identified an issue in our docs - these parameters should be in code blocks, and if they are, there is no escape character necessary. I am updating all of these within a bulk update which will supersede this PR. As such, I will proceed with closing out this PR, but please feel free to reply should you need anything further.
Thanks!
Masha from the SQL Docs team


[$50] Wallet transfer email styling is broken on iOS

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number:
Reproducible in staging?:  Needs reproduction
Reproducible in production?: Needs reproduction
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @roryabraham
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1724973813356679
Action Performed:

Have a wallet
Have someone send money to your wallet
Transfer your balance to a deposit account
Check your email on an iPhone

Expected Result:
Your profile picture should not appear cut off and the Expensify logo should not be misaligned
Actual Result:
Profile picture cut off and Expensify logo misaligned
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[X] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos

Add any screenshot/video evidence

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~021833437974479613431
Upwork Job ID:<PHONE_NUMBER>479613431
Last Price Increase: 2024-09-24

Issue OwnerCurrent Issue Owner: @ikevin127

This has been labelled "Needs Reproduction". Follow the steps here: https://stackoverflowteams.com/c/expensify/questions/16989

reviewing today!

external, but low priority/cost

💰 Looking for proposals.

@dylanexpensify Taking a second look at the issue I discovered a coincidence, exactly like issue: https://github.com/Expensify/App/issues/42301, I think this one should go Internal as well because the email template styling is handled from the BE side, codebase which External contributors don't have access to.

Callback to https://github.com/Expensify/App/issues/48388#issuecomment-2359254909, I think this should be Internal.

Sounds good, ty!

couldn't repro


Allow passing in metadata on the command line

If we did this any metadata item passed on the command line would supersede any equivalent static metadata item in the input file.

That would mean reading the static metadata and then parsing argv. Still very doable. Would be nice to see some votes for this - as I'm not sure I'd use it.


Error stack 0.4.1

Updates error-stack to 0.4.1

I don't have time to do this currently, added to https://fossa.atlassian.net/browse/ANE-950


Fixes Grammatical errors

Grammatical errors is being fixed at various places.
All Submissions

[+] Have you followed the guidelines in our Contributing document?
[+ ] Have you checked to ensure there aren't other open Pull Requests for the same update/change?

Changes to Core Features

[+] Have you added an explanation of what your changes do and why you'd like us to include them?
[+] Have you written new tests for your core changes, as applicable?
[+] Have you successfully ran tests with your changes locally?

Thanks for the improvement @mananbansal2002 🚀. Keep contributing, Keep Growing 📈


Multistore

the module does not support multistore option, everything think (image, text) you change in one store will bee propagated on the other stores.

Hi @SajRus,
We are aware of this issue, it is added to our debug roadmap.
Your ticket is a duplicate of https://github.com/PrestaShop/PrestaShop/issues/9710
So, I close it.
Thanks!