Brand triggers schedule not editable

It's hard to solve a problem when important details are missing. For fast resolution of problems, include as much detail in the fields below.
Actual Behavior:

What is the issue?
Brand triggers schedule not editable. If I enter 00:00 / 00:00 into the hours they won't be saved. If I use 00:01 / 23:59 it will save 02:00 / 00:59.No error is displayed.
What is the expected behavior?
Brand trigger should be editable

Additional Information:

Browser Type: Chromium
Browser Version: 55.0.2883.87
OS: Ubuntu 16.04 (64-bit)
Page URL: https://my.ctapp.io/#/brands/58779265e5b482000dd54a88/triggers/587c8253b2f6b0000d3169cc

Do not modify the titles or questions. Simply add your responses to the ends of the questions.
Add more lines if needed.

Add screenshots, gifs, illustrations as required to demonstrate your issue.

No duplicates, please use the search tool.

We have made some changes to the triggers, which should have fixed this issue now. We are unable to replicate the time issue, so could you please try to change the time of your scheduled triggers and let us know if the issue continues.

trigger-bug.mp4.zip

You will need VLC Player to open the video, sorry for that.


RaCoCo + App::mi6 bug?

Hi @atroxaper ! I found this while playing with SparkyCI:

racoco -l html fails for App::Mi6 - http://sparrowhub.io:2222/report/336
The same build without rakcoco succeeds zef test .. - http://sparrowhub.io:2222/report/335

HTH
Aleksei

cc @skaji

@melezhik Hello! Thank you for your report. Finally I found a time to fix it in v1.6.0 (just released). The issue was in no precompilation pragma in one of modules of App::Mi6.


genPrefix doesn't do anything at all

https://github.com/fritzy/ape-ecs/blob/d719d83c38e6fe8770fe058ee6418402d6959fe5/src/util.js#L10-L12
Well, kind of a bummer but - this method doesn't change the prefix currently.

My current take on this is:
 genPrefix() {
    this.prefix = uuid().substr(0, 8);
  }

I'll create a pull request, as soon as possible.

Sure, historically it did more. I don't know that it needs to do anything though?

It should set the prefix. Currently, it is a noop.

relates to #61


Skipped the non-applicables tests against Azure Data Warehouse

Skipped tests that depend on the existence of pre-populated tables and modified the tests that do not have to rely on any of those tables. Also skipped those tests that have to test max types or types that are not supported in Azure Data Warehouse:
https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-tables-data-types

Coverage decreased (-0.08%) to 72.21% when pulling 623c527ce3ab8265a15fcc730da441cdb79d290a on yitam:testADW into 5801edd5c6f4f20d1088fd14a97a869b01fb67f6 on Microsoft:dev.

Codecov Report

Merging #913 into dev will decrease coverage by 0.19%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##              dev     #913     +/-   ##
=========================================
- Coverage   80.37%   80.18%   -0.2%
=========================================
  Files          25       25
  Lines        7731     7731
=========================================
- Hits         6214     6199     -15
- Misses       1517     1532     +15

Impacted Files
Coverage Δ

.../php-7.1.25-src/ext/sqlsrv/shared/core_results.cpp
70.07% <0%> (-0.92%)
:arrow_down:

...php-7.1.25-src/ext/pdo_sqlsrv/shared/core_stmt.cpp
75.16% <0%> (-0.48%)
:arrow_down:

...x86/php-7.1.25-src/ext/sqlsrv/shared/core_stmt.cpp
84.9% <0%> (-0.48%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 5801edd...623c527. Read the comment docs.


az login --identity fails on the VM

Describe the bug
az login --identity fails on the VM with the following error.
Command Name
az login
Errors:
Traceback (most recent call last):
python3.6/site-packages/knack/cli.py, ln 215, in invoke
    cmd_result = self.invocation.execute(args)
cli/core/commands/__init__.py, ln 631, in execute
    raise ex
cli/core/commands/__init__.py, ln 695, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
cli/core/commands/__init__.py, ln 688, in _run_job
    six.reraise(*sys.exc_info())
lib/python3.6/site-packages/six.py, ln 693, in reraise
    raise value
...
python3.6/site-packages/msrestazure/azure_active_directory.py, ln 600, in set_token
    token_entry = self._vm_msi.get_token(self.resource)
python3.6/site-packages/msrestazure/azure_active_directory.py, ln 649, in get_token
    token_entry = self._retrieve_token_from_imds_with_retry(resource)
python3.6/site-packages/msrestazure/azure_active_directory.py, ln 704, in _retrieve_token_from_imds_with_retry
    raise HTTPError(request=result.request, response=result.raw)
requests.exceptions.HTTPError

To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

az login --identity

Expected Behavior
Environment Summary
Linux-5.3.0-1020-azure-x86_64-with-debian-buster-sid
Python 3.6.5
Installer: DEB

azure-cli 2.5.1

Additional Context

Was resolved after creating a managed identity. Closing..


csp.contribution.ts is missing the file extension

Reproducible in vscode.dev or in VS Code Desktop?

[X] Not reproducible in vscode.dev or VS Code Desktop

Reproducible in the monaco editor playground?

[ ] Not reproducible in the monaco editor playground

Monaco Editor Playground Link
No response
Monaco Editor Playground Code
No response
Reproduction Steps
No response
Actual (Problematic) Behavior
The file does not contain the file extension .csp.

Expected Behavior
No response
Additional Context
https://github.com/microsoft/monaco-editor/blob/main/src%2Fbasic-languages%2Fcsp%2Fcsp.contribution.ts#L13

xref: microsoft/PowerToys/issues/32771


Powerbutton not aligned.

Power button is not aligned. Using css from git.
Arch Linux, Hyprland, commit fe7b02b10c872ce7cc9d32a292dcade56742a466

Do you have Caskaydia Cove NF installed? (https://www.nerdfonts.com/font-downloads)
If you have, do you have an up-to-date version?

Embaressing, yes. That worked. thank you.


Can't mount volume to T3 machines

As da Infra dev
I want to mount volumes to network enhanced ec2 boxes
So that I can use them :)

done in #6 - released in v1.0.3


Found another feedback for you

Randy Gaul, game engine developer, gave another feedback on your code.
Please take a look here:
https://www.reddit.com/r/gamedev/comments/6wivay/gilbertjohnsonkeerthi_gjk_collision_detection/dm9g3mk/

@tommai78101, thanks!
Though, most commenters see this as an example of old school code with a readme ("code first, readme second"), the actual purpose of the repository is actually educational (readme first, code second). The code itself is made to look like old-school c intentionally, to be easily understandable, not to show off latest compiler features nor newest language keywords/practices, of course.
The goal of the repo is to help people understand GJK, it does not pretend to be the one and only way to name it and implement it. I will be happy if my text helps someone, even if nobody actually uses my code (which I would not recommend to use without having understood the algorithm in the first place).
Of course, I saw all implementations, including the docs of Erin Catto, and others. I've read them all multiple times. But again, my goal was not to be technically precise, but to be newb-friendly. People don't always want strict terminology and complex code. It's not an academically-sound scientific article, instead, I wanted GJK to be available to everyone so that everybody could play with it on their back yard...
Thx again!

Cross posting from reddit:
Sure that makes total sense :)
Though I have run into all these precision problems I am vaguely referring to in my own games and side projects. These aren't just scientific concerns; those problems arise in actual day to day games.
I setup a test to overlay two triangles and jostle the vertices with random perturbations. This is an example of something quite typical for a 2D game. There were an alarming number of failures. I submit a pull request so you can check this out.
Also I would suggest tracking your iteration count and look for cases where iteration count spikes. You may find it a good idea to cap the maximum number of iterations and return a failure if you hit the cap (perhaps 50 iterations or some arbitrary number).


Trim lightline components based on winwidth()

Hi itchyny,
I love your plugin and it's philosophy. Thank you for making this.
I followed your guide here: https://github.com/itchyny/lightline.vim/issues/237 but I'm wondering if there's someway to make this a little more terse?
function! LightlineFileformat()
  return winwidth(0) > 150 ? &fileformat : ''
endfunction
function! LightlineFiletype()
  return winwidth(0) > 150 ? (&filetype !=# '' ? &filetype : 'no ft') : ''
endfunction
function! LightlineFileencoding()
  return winwidth(0) > 150 ? (&fenc !=# '' ? &fenc : &enc) : ''
endfunction

Like some sort of setting where I can collapse the entire right or left active components in the status line?
Ideally some function where I can say
function! LightLineActiveRight()
  return winwidth(0) > 150 ? &lightline.active.right : ""
endfunction

Thank you 🙏 ☺

There's no way to do that... I think truncation in each component functions can cover the use case.

Got it 😄
Thank you for taking the time to reply. I hope you enjoy your day!
I'll close this now 🙏

hi @itchyny 👋
So I've been trying to convert my various component functions to accept a winwidth() check but I keep running into a few errors on these items:
for filepath
function! LightLineFilepath()
  return winwidth(0) > 120 ? (&filepath : '' != expand('%:p') ? expand('%:p') : '[No Name]')
endfunction

for percent
function! LightLinePercent()
  return winwidth(0) > 120 ? : (100 * line('.') / line('$')) . '%'
endfunction

for 'gitbranch': 'fugitive#head'
function! LightLineGitbranch()
  return windwidth(0) > 120 ? &fugitive#head : ''
endfunction

for getcwd()
function! LightLineGitbranch()
  return windwidth(0) > 120 ? &getcwd : ''
endfunction

For clarity here are my active and component functions:
  \ 'active': {
  \   'left': [ ['mode', 'paste'], ['gitbranch', 'readonly', 'filename', 'filepath', 'modified'] ],
  \   'right': [ ['percent', 'cwd'], ['lineinfo'], ['fileformat', 'fileencoding', 'filetype'] ]
  \ },
  \ 'component_function': { 'mode': 'LightLineMode', 'gitbranch': 'fugitive#head',
  \   'filepath': 'LightLineFilepath', 'cwd': 'getcwd', 'fileformat': 'LightLineFileformat',
  \   'filetype': 'LightLineFiletype', 'fileencoding': 'LightLineFileencoding',
  \   'lineinfo': 'LightLineLineinfo'}
  \ }

For many of these like, filepath, mode, fileencoding, filetype, lineinfo, etc. I've been able to apply the API and get lightline to collapse these based on winwidth() but for the ones I've mentioned above I haven't had any luck 😢
I've searched all the various issues and docs, including googling around and trying to search other's vimrc to see if they've come up with a solution but I haven't found anything 😞
Can you please help me figure out how I should be formatting these component functions?
Thanks again @itchyny 🙏

I think there're some mistake in your scripts.
incorrect parenthesis
function! LightLineFilepath()
  return winwidth(0) > 120 ? &filepath : '' != expand('%:p') ? expand('%:p') : '[No Name]'
endfunction

missing the second value '' for the ternary operator
function! LightLinePercent()
  return winwidth(0) > 120 ? '' : (100 * line('.') / line('$')) . '%'
endfunction

invalid invocation for the function:
function! LightLineGitbranch()
  return windwidth(0) > 120 ? fugitive#head() : ''
endfunction

same here:
function! LightLineGitbranch()
  return windwidth(0) > 120 ? getcwd() : ''
endfunction

(this prints the current directory instead of the git branch name though)

Hi, itchyny ! Thank you for the reply, hope your day is well.
For percents you were totally right I guess, I was missing the ternary operator. It's interesting though because in order to make it work I had to reverse the comparator operator > to less than <
function! LightLinePercent()
  return winwidth(0) < 120 ? '' : (100 * line('.') / line('$')) . '%'
endfunction

Though for LightLineFilepath() something breaks...
I get this error message, any ideas?

So these two are invalid...
function! LightLineGitbranch()
  return windwidth(0) > 120 ? fugitive#head() : ''
endfunction

function! LightLineGetcwd()
  return windwidth(0) > 120 ? &getcwd : ''
endfunction

(sorry about my quick edit earlier, realized I had copied the wrong function name)
I'm not sure how to really incorporate the fugitive#head and getcwd as when I was searching the docs + source code I couldn't find these properties defined. Like I know getcwd() is a vim function (and thanks to lightline actually) I was able to easily add that to my status line! But when trying to make it collapsable with winwidth() I fail  💥 😩 😭
I'm still getting the hang of vim script, really. 🙃
Thanks again for the fast reply itchyny 😄 I hope I'm not interrupting work 😅

Ahh, sorry. My comment above still has some mistake.
function! LightLineFilepath()
  return winwidth(0) > 120 ? '' : ('' != expand('%:p') ? expand('%:p') : '[No Name]')
endfunction

function! LightLineCwd()
 return windwidth(0) > 120 ? '' : getcwd()
endfunction

And I think you may have to recheck the cwd component function name in component_function.

itchyny! I fell asleep last night after that last comment (West Coast/Seattle times....) it was late 😴
So I got BOTH the LightLineFilepath() and LightLineCwd() to work thanks to your help!
With LightLineCwd() I was running into some errors at first
This blows up...
function! LightLineCwd()
 return winwidth(0) > 120 ? &getcwd() : ''
endfunction

This doesn't blow up... at first... but then once I make the window small it evaluates winwidth explodes and then I get a ton of errors :(
function! LightLineCwd()
 return winwidth(0) > 120 ? '' : getcwd
endfunction

but THIS! after rechecking as you suggested
function! LightLineCwd()
 return winwidth(0) < 120 ? '' : getcwd()
endfunction

THIS WORKS! 🎉 💃 😄 amazing.
Still a bit confused on how to set the gitbranch to a winwidth function but I will continue to play 🙂


Support for CommonJS

Right now VTUC only supports ES Modules, but not every nodejs environment supports these types of modules and does require a compilation step. It would provide a much better developer experience if it could support CommonJS modules as well.
It would also go well with the readme which uses CommonJS import style.
As a temporary solution you might use this in your jest.config.js if you're using Jest of course:
module.exports = {
  transformIgnorePatterns: ['/node_modules/(?!vue-test-utils-compat)'],
}

+1 on this. I couldn't even get jest to transpile this package with transformIgnorePatterns and wasn't able to figure out why, so I ended up just copying the code into my own project.


Fix stack-use-after-scope

Fixes regression from #5667.

Found while running sslapitest with ASAN and GCC 7.3.0.

Wow. 4 reviews. You can't say we haven't been thorough with this one! Pushed.


[2.x] Revert IDE helpers

Relation PR: #654, #674

Because IDE helpers caused trouble, so revert #413 and #625.

The above Illuminate\Testing part of the IDE helpers was created by @claudiodekker, I'm not the author, so I didn't remove it.

Hope this gets merged - it's small, but a great QOL change


Add Configuration README

What is the purpose of the change
Update README
Brief changelog
Verifying this change
Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Make sure there is a Github issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a Github issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[ ] Format the pull request title like [ISSUE #123] Fix UnknownException when host config not exist. Each commit in the pull request should have a meaningful subject line and body.
[ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist.
[ ] Run `mvn clean compile --batch-mode -DskipTests=false -Dcheckstyle.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true to make sure basic checks pass.

Codecov Report

Merging #1192 (61024f5) into refactor-with-go (ae08d9c) will decrease coverage by 0.08%.
The diff coverage is n/a.

@@                 Coverage Diff                  @@
##           refactor-with-go    #1192      +/-   ##
====================================================
- Coverage             49.51%   49.43%   -0.08%
====================================================
  Files                    95       95
  Lines                  5114     5114
  Branches                 41       41
====================================================
- Hits                   2532     2528       -4
- Misses                 2323     2327       +4
  Partials                259      259

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


Check disabled_add_to_sprout_pool in verify_sprout_shielded_data

Motivation
We want to do all the sprout checks in the same place, so we can skip sprout checks for V5 and later transactions.
This reduces the risk of sprout checks failing on transaction versions that don't contain sprout JoinSplits.
Related Work
Follow up to PR #2399.

This change isn't needed.


Incorrect method usage in README example

The README example uses connectWebsocket. That method doesn't exist.
It should be connectGateway.

Duplicate of #540?

Yes, I was using a very spotty internet connection and I guess this issue got created twice.


Adding "Quick open" for scenes and scripts

As my game project grows in size, I found myself navigating too often in files to open what I'm searching for. Tabs are okay, but at some point, I end up not using them so much.
So, just like Sublime Text, Atom or Visual Assist, why not adding a quick-open command triggered with a shortcut, to open files or scripts just by knowing a part of their path?
And if it's not a priority for the editor, how can it be added by extending it with a script?
EDIT: Oops, I found it actually exists for scripts with Ctrl+Alt+O, and for any file with Ctrl+Alt+P. But the latter doesn't opens the scene/script, it just locates it in the file system.

Isn't this already implemented?:

Yes it is, sorry about that. The issue can be closed :)


Perhaps the '??' operator works in a different way than it was expected.

Its priority is lower than priority of other operators in its left part.

What behavior is this fixing? Please explain in the PR title/description the actual fix here, rather than some code syntax observation that means nothing without context.


FALCON-2267 Definition api fails if resources are empty

This is extension of @sandeepSamudrala's work on PR 353. Completing it on his behalf as he is out on vacation.
Dev testing done:
`IM1738M1:falcon-0.11-SNAPSHOT pallavi.rao$ bin/falcon extension -enumerate
[
{
"name": "sample",
"type": "Custom extension",
"location": "hdfs://<IP_ADDRESS>:8020/tmp/extensions/extension-example"
},
…..
{
"name": "hive-mirroring",
"type": "Trusted extension",
"description": "This extension implements replicating hive metadata and data from one Hadoop cluster to another Hadoop cluster.",
"location": "file:/Users/pallavi.rao/falcon/falcon-0.11-SNAPSHOT/extensions/hive-mirroring"
}
]
IM1738M1:falcon-0.11-SNAPSHOT pallavi.rao$ bin/falcon extension -definition -extensionName hive-mirroring
{
"shortDescription":"This extension implements replicating hive metadata and data from one Hadoop cluster to another Hadoop cluster.",
"properties":[
{
"propertyName":"jobName",
"required":true,
"description":"Unique job name",
"example":"hive-monthly-sales-dr"
},
….
]
}
IM1738M1:falcon-0.11-SNAPSHOT pallavi.rao$ bin/falcon extension -definition -extensionName sample
Contents of file config:
Contents of file config2:

….
IM1738M1:falcon-0.11-SNAPSHOT pallavi.rao$ bin/falcon extension -describe -extensionName sample
Extension Test
IM1738M1:falcon-0.11-SNAPSHOT pallavi.rao$ bin/falcon extension -describe -extensionName hive-mirroring
.....
Hive Mirroring Extension
Overview
Falcon provides feature to replicate Hive metadata and data events from source cluster to destination cluster.
…..`

Thanks @PracheerAgarwal, @sandeepSamudrala for the review. Since this an extension of PR 353, merging it.


Adding in additional DSC Setup scripts for VS Pro and Enterprise

Summary of the Pull Request
DSC currently doesn't allow for variables so adding in vs enterprise and pro versions.

PR Checklist

[ ] Closes: #xxx
[ ] Communication: I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
[ ] Tests: Added/updated and all pass
[ ] Localization: All end user facing strings can be localized
[ ] Dev docs: Added/updated
[ ] New binaries: Added on the required places

[ ] JSON for signing for new binaries
[ ] WXS for installer for new binaries and localization folder
[ ] YML for CI pipeline for new test projects
[ ] YML for signed pipeline

[ ] Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

Merged in main for the CI fix.


closed the html tag

Learners, PR Template
Self checklist

[x] I have committed my files one by one, on purpose, and for a reason
[x] I have titled my PR with COHORT_NAME | FIRST_NAME LAST_NAME | REPO_NAME | WEEK
[x] I have tested my changes
[x] My changes follow the style guide
[x] My changes meet the requirements of this task

Changelist
Briefly explain your PR.
Questions
Ask any questions you have for your reviewer.

Hi there @samirahekmati . Thanks for this! Please update your PR title to follow the format and fill in the PR message with what you want a reviewer to look at with you. Thanks!

hi @SallyMcGrath thank you for your comment. To be honest, this pull request was my first ever pull request and I did not know what to do, i was kind of testing it. can you just ignore this and review this one instead? https://github.com/CodeYourFuture/Module-User-Focused-Data/pull/179


[Mapper] Fix default plain out-mapping bug

Current coverage is 80.12% (diff: 0.00%)

Merging #210 into master will decrease coverage by 0.02%

@@             master       #210   diff @@
==========================================
  Files           194        194
  Lines         14893      14898     +5
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits          11937      11937
- Misses         2956       2961     +5
  Partials          0          0

Powered by Codecov. Last update a03c901...73f1ad9

can you please add a test case?


Fix: Optimize the update logic of the default size of the Sprite

When replacing textures or modifying regions, the sprite size should be updated.
Before:
sprite.texture = oldTexture;
// sprite.region = oldRegion;
console.log('old width',  sprite.width);
sprite.texture = newTexture;
// sprite.region = newRegion;
console.log('new width',  sprite.width);

The results obtained are equal.
But we think that at this moment the developer wants to update the width and height of the sprite.

Already solved in https://github.com/galacean/engine/pull/1477


Order of clients matter if using pins and the catchall handler

This might either be a bug or a documentation issue. The following code works:
var s = require('seneca')()
          .client({ type: 'http', port: 8083 })
          .client({ type: 'tcp', port: 8081, pin: 'cmd:enqueue-remote,queue:q1' })
          .client({ type: 'tcp', port: 8082, pin: 'cmd:enqueue-remote,queue:q2' })

Being that everything is sent to the catch all handler, a part from what is pinned.
However, this does not:
var s = require('seneca')()
          .client({ type: 'tcp', port: 8081, pin: 'cmd:enqueue-remote,queue:q1' })
          .client({ type: 'tcp', port: 8082, pin: 'cmd:enqueue-remote,queue:q2' })
          .client({ type: 'http', port: 8083 })

As everything will be handled by the catch all.
I suggest the catch all to throw an Error if something is already pinned, and in any case to update the documentation.
This issue is kind-of hard to debug, too. Basically you expect Seneca to route your messages accordingly, while it fails saying that no matching action pattern found.
(At least this is the behavior on Seneca 0.5).

@nherment didn't we come across this in a project as well where something that we expected to be matched wasn't being matched?

I'm not sure but I think we had a similar situation with order vs pattern and we had to go through trial and error to find the right combination to make it work.

order does not matter anymore; most specific wins :)


Flutter Web  - Another exception was thrown: TypeError: Cannot read properties of null (reading 'dispatchEvent') - Since last Chrome version only (103.0.5060.134)

Hi everyone. Quite urgent problem here...

Flutter is already up to date on channel stable
Flutter 3.0.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision f1875d570e (il y a 10 jours) • 2022-07-13 11:24:16 -0700
Engine • revision e85ea0e79c
Tools • Dart 2.17.6 • DevTools 2.12.2

Flutter Web App which at some points use
import 'dart:js' as js;
//....
  InkWell(
    onTap: () {
      js.context.callMethod('toggleShareButtons'); //<----------------
    },

Everything was working well until last Chrome Update 103.0.5060.134 (on Linux)
Now returns ERROR in Flutter Console
Another exception was thrown: TypeError: Cannot read properties of null (reading 'dispatchEvent')
And in Chome DevTools Console:
Another exception was thrown: Instance of 'minified:FT<void>  main.dart.js:27690
At which we can read:
return}if(typeof console=="object"&&typeof console.log!="undefined"){console.log(a)
Which accordingly to Chrome's doc, refers to this :

Phase 1: Since Chrome 92 (July 20, 2021)
Warn about accessing navigator.userAgent, navigator.appVersion, and navigator.platform in DevTools, beginning in M92.

Just tried now with the other method, and it gives the same error message
import 'dart:js' as js;
@JS('toggleShareButtons')
external void toggleShareButtons();

Maybe my mistake...Not sure...More investgation needed


Fix networking issues in RHEL/Centos 6.6

Some parts of the bridge driver code needs to use a different kernel
api or use the already existing apis in slightly different ways to
make the bridge driver work in RHEL/Centos 6.6. This PR provides
those fixes.
Signed-off-by: Jana Radhakrishnan<EMAIL_ADDRESS>

LGTM

LGTM


Updated jvm and native Dockerfiles

Updated Dockerfiles since the outdated ones have issues running on OCP 4.11

run tests

run tests


GITKIT

Hello!
I was wondering if satellizer does the job of gitkit, I'm using Google app engines paid for an angularjs project and I need a way of getting and storing a session I'd when users log in Google,
Not strictly a satellizer issue but I'd appreciate the help!

Hi @LunarDevelopment,
The Google Authentication Toolkit (now Firebase Authentication) acts fairly similar to Satellizer, but Satellizer has many more login options in comparison.
You would be able to get and store sessions (including with Google login) from Satellizer without a problem.
Let me know if you have any other questions!


[14485] Hotfix: clarify -python Fast DDS-Gen option

This PR clarifies that:

Fast DDS-Gen option -typeobject does not support generation of Python bindings when using at the same time option -python (eProsima/Fast-DDS-Gen#114)
-python option is supported officially in more platforms than Windows currently.

Signed-off-by: JLBuenoLopez-eProsima<EMAIL_ADDRESS>

Thanks for your clarification.
Let me ask you for a possible related issue:
Is it possible in python to create Contentfilteredtopic, given that type object is not supported  ?
Please note that when I try to create a Contentfilteredtopic with python files generated without the -typeobject flag, I achieve the following run time error:
2022-05-05 16:42:13.907 [DDSSQLFILTER Error] No TypeObject found for type VideoTrackerActivateMultiobjectTracking -> Function create_content_filter
2022-05-05 16:42:13.907 [PARTICIPANT Error] Could not create filter of class DDSSQL for expression "(A_referenceNum == %0) -> Function create_contentfilteredtopic
F
where "VideoTrackerActivateMultiobjectTracking" is the reference topic data type name.
Thanks for the support,
Francesco

Hi @swarm59,
You are correct that the standard DDSSQL filter requires that the Type Object is defined in order to work. Otherwise the content filtered topic creation fails as you are seeing. And you are correct, ContentFilteredTopic feature is a really recent addition to Fast DDS library since release v2.5.1. It was being developed at the same time as the Python bindings (which was released almost at the same time), so this feature is still not supported in Fast DDS python bindings. That is the reason why the Fast DDS Python API reference does not include the corresponding section about ContentFilteredTopic. Nevertheless, I agree that the create_contentfilteredtopic python binding should return unsupported instead of failing trying to create the content filtered topic.


Document pip install option from git URL

Current instructions https://github.com/ActianCorp/ingres_sa_dialect/blob/a6acefa5b4024c5d709c3078dba13c0eaf0f6a7b/README.md?plain=1#L53  (git clone and dev install) are currently for developers.
Document alternative:
python -m pip install git+https://github.com/ActianCorp/ingres_sa_dialect.git

And for install from a branch:
python -m pip install git+https://github.com/ActianCorp/ingres_sa_dialect.git@branch_name

@hab6 with current test results do you think it's work talking about a PyPi release? Cross reference with https://github.com/ActianCorp/ingres_sa_dialect/issues/16

@clach04 Yes, I think we should work toward updating https://pypi.org/ with a new Ingres dialect release given the current one out there is 14 years old!

A bunch of commits went in that tackle this via https://github.com/ActianCorp/sqlalchemy-ingres/issues/11, sadly non-tag #12. The PR could/should :-)
See branch https://github.com/ActianCorp/sqlalchemy-ingres/tree/issues_11_pypi_rename
Relevant single Commit https://github.com/ActianCorp/sqlalchemy-ingres/commit/9330078104b3159ebf665d5a6a936f3c3a4d0910

@clach04 It looks like the following command doesn't work as given in the sqlalchemy-ingres repository README and also documented on the PyPi sqlalchemy-ingres page.
python -m pip install -e git+https://github.com/ActianCorp/sqlalchemy-ingres.git
 python -m pip install -e git+https://github.com/ActianCorp/sqlalchemy-ingres.git
 ERROR: Could not detect requirement name for
 'git+https://github.com/ActianCorp/sqlalchemy-ingres.git',
 please specify one with #egg=your_package_name

The documentation for pip install (6. Install a project from VCS in “editable” mode) shows adding the #egg=name syntax to explicitly state the project name.
With that change, it works:
(.venv) λ python -m pip install -e git+https://github.com/ActianCorp/sqlalchemy-ingres.git#egg=sqlalchemy-ingres
Obtaining sqlalchemy-ingres from git+https://github.com/ActianCorp/sqlalchemy-ingres.git#egg=sqlalchemy-ingres
  Updating c:\users\mhabiger\data\test\sqlalchemy\feb02\.venv\src\sqlalchemy-ingres clone
  Running command git fetch -q --tags
  Running command git reset --hard -q 6ebd23a20ae74f7f61d97e9fdce670e840c0b559
  Installing build dependencies ... done
  Checking if build backend supports build_editable ... done
  Getting requirements to build editable ... done
  Preparing editable metadata (pyproject.toml) ... done
Collecting sqlalchemy (from sqlalchemy-ingres)
  Using cached SQLAlchemy-2.0.25-cp310-cp310-win_amd64.whl.metadata (9.8 kB)
Requirement already satisfied: typing-extensions>=4.6.0 in c:\users\mhabiger\data\test\sqlalchemy\feb02\.venv\lib\site-packages (from sqlalchemy->sqlalchemy-ingres) (4.9.0)
Requirement already satisfied: greenlet!=0.4.17 in c:\users\mhabiger\data\test\sqlalchemy\feb02\.venv\lib\site-packages (from sqlalchemy->sqlalchemy-ingres) (3.0.3)
Using cached SQLAlchemy-2.0.25-cp310-cp310-win_amd64.whl (2.1 MB)
Building wheels for collected packages: sqlalchemy-ingres
  Building editable for sqlalchemy-ingres (pyproject.toml) ... done
  Created wheel for sqlalchemy-ingres: filename=sqlalchemy_ingres-0.0.4.dev1-0.editable-py3-none-any.whl size=9493 sha256=2dd50eda7dbb8a7c5123b2e03c6ba4cd6c50cb35fdd4a027dd7146f4413cb11b
  Stored in directory: C:\Users\mhabiger\AppData\Local\Temp\pip-ephem-wheel-cache-rwk8aeih\wheels\40\e8\43\14bdd537d5250b9b399b56095b6b68dcc351b9c8464d8bab2c
Successfully built sqlalchemy-ingres
Installing collected packages: sqlalchemy, sqlalchemy-ingres
Successfully installed sqlalchemy-2.0.25 sqlalchemy-ingres-0.0.4.dev1

For the sake of comparison, it's worth mentioning (the obvious) that a non-editable installation command works without adding the #egg=name. i.e.
(.venv) λ python -m pip install git+https://github.com/ActianCorp/sqlalchemy-ingres.git
Could you double-check and confirm?

Quick update post chat today.
This definitely used to work, my guess is that it's a change to pip. I don't have a machine to hand to report back what version it was working with but off the top of my head 1.x or 2.x (laptop failures, hence not being sure). With hindsight we should maybe document pip versions that instructions have been tested with. I've never seen a change in behavior like this that took away a feature so there is a remote chance this is a pip bug?
This sort of goes away, as we discussed for some of my personal projects I have 3 sets of instructions:

pip install from pypi
pipi install from git URL so no need to checkout code explicitly, implicit checkout to get latest bleeding-edge code
git checkout and install from checkout.

What this is about is number 2, With pypi package almost ready (it's public now) that's likely to be the primary installation use case. So number 2 may have some asterisks !

I think this is completed. @clach04 Okay to close?


After recent update the alarm card dont show the keypad

Requirements

[X] I checked the troubleshooting section in the README to verify that I have the latest Mushroom version.
[X] I did a search to see if there is a similar issue or if a pull request is open.
[X] I have read the state of card mod support (in pin issues) and understand card mod support is not provided in this repository.

Current Behavior
As the title says the alarm card lost the keypad, tried readding but its the same, the normal alarm card from lovelace has the keypad
Expected Behavior
No response
Steps To Reproduce
No response
Context
YAML state

Environment
- Browser:
- HA Version: 2024.7.1
- Mushroom: 3.6.3

Anything else?
No response

Since 3.6.0, the keypad is not displayed anymore as it now use a pin code dialog to ask for the code if needed. More info here : https://github.com/piitaya/lovelace-mushroom/releases/tag/v3.6.0

Didn't saw that... Thanks for the info.


ValueError: [ERROR] Error short batch syncing, could not fetch block at height 82560

There are few errors keep repeating: below is the log that I capture. `2021-11-23T14:58:34.295 full_node full_node_server        : WARNING  Banning <IP_ADDRESS> for 10 seconds
2021-11-23T14:58:47.033 full_node chia.full_node.weight_proof: ERROR    failed to validate ses hashes block height 134805
2021-11-23T14:58:47.034 full_node chia.full_node.weight_proof: ERROR    weight proof failed sub epoch data validation
2021-11-23T14:58:47.035 full_node full_node_server        : ERROR    Exception: Error short batch syncing, could not fetch block at height 82560, {'host': '<IP_ADDRESS>', 'port': 11444}. Traceback (most recent call last):
File "chia/server/server.py", line 559, in wrapped_coroutine
File "chia/full_node/full_node_api.py", line 115, in new_peak
File "chia/full_node/full_node.py", line 433, in new_peak
File "chia/full_node/full_node.py", line 266, in short_sync_batch
ValueError: Error short batch syncing, could not fetch block at height 82560
2021-11-23T14:58:47.035 full_node full_node_server        : ERROR    Exception: Error short batch syncing, could not fetch block at height 82560 <class 'ValueError'>, closing connection {'host': '<IP_ADDRESS>', 'port': 11444}. Traceback (most recent call last):
File "chia/server/server.py", line 569, in api_call
File "asyncio/tasks.py", line 455, in wait_for
File "chia/server/server.py", line 566, in wrapped_coroutine
File "chia/server/server.py", line 559, in wrapped_coroutine
File "chia/full_node/full_node_api.py", line 115, in new_peak
File "chia/full_node/full_node.py", line 433, in new_peak
File "chia/full_node/full_node.py", line 266, in short_sync_batch
ValueError: Error short batch syncing, could not fetch block at height 82560
2021-11-23T14:58:47.035 full_node full_node_server        : ERROR    Exception: Error short batch syncing, could not fetch block at height 82560, {'host': '<IP_ADDRESS>', 'port': 11444}. Traceback (most recent call last):
File "chia/server/server.py", line 559, in wrapped_coroutine
File "chia/full_node/full_node_api.py", line 115, in new_peak
File "chia/full_node/full_node.py", line 433, in new_peak
File "chia/full_node/full_node.py", line 266, in short_sync_batch
ValueError: Error short batch syncing, could not fetch block at height 82560
2021-11-23T14:58:47.036 full_node full_node_server        : ERROR    Exception: Error short batch syncing, could not fetch block at height 82560 <class 'ValueError'>, closing connection {'host': '<IP_ADDRESS>', 'port': 11444}. Traceback (most recent call last):
File "chia/server/server.py", line 569, in api_call
File "asyncio/tasks.py", line 455, in wait_for
File "chia/server/server.py", line 566, in wrapped_coroutine
File "chia/server/server.py", line 559, in wrapped_coroutine
File "chia/full_node/full_node_api.py", line 115, in new_peak
File "chia/full_node/full_node.py", line 433, in new_peak
File "chia/full_node/full_node.py", line 266, in short_sync_batch
ValueError: Error short batch syncing, could not fetch block at height 82560
2021-11-23T14:58:47.039 full_node full_node_server        : WARNING  Banning <IP_ADDRESS> for 600 seconds
2021-11-23T14:58:47.040 full_node chia.full_node.full_node: ERROR    Error with syncing: <class 'ValueError'>Traceback (most recent call last):
File "chia/full_node/full_node.py", line 743, in _sync
ValueError: Weight proof validation failed
`
the farmer looks running fine. I was still able to get reward yesterday afternoon. But no reward since, it is almost 24 hours in between. last Height farm was 79630

What is your Silicoin version and how many plot files you are farming, how many SIT are you staking?

What is your Silicoin version and how many plot files you are farming, how many SIT are you staking?

i'm currently using 1.1.3, 1776 plots and 27SIT staking

I have same problem...

What is your Silicoin version and how many plot files you are farming, how many SIT are you staking?

i'm currently using 1.1.3, 1776 plots and 27.1310 SIT staking

I think it is normal since your staking factor is around 4.9, which means your actual total size of plots is about 36 T.

the Error can be IMHO ignored as with the restart also Port have been switched from 11444 to 22444. I also get some "old" clients trying to connect to me -- you can cut them out in your firewall or let the full node on your side ban them.

So is it OK to ban 11444 on the router side?

So is it OK to ban 11444 on the router side? 11444 will no longer be use?

Yes, 11444 will no longer be use.


Adjusting text width in article

Hello, this is just a quick question.
The width of the text in the articles is a bit narrow, is there a way that I can adjust this to make each line longer? For example, if we say that currently we can fit about 100 characters on 1 line before a new line is written, how can we increase this?
Demonstration of what I mean by "line length" and "text width":
e.g. current maximum line witdth:

The lines are rather short, and quickly
continue on to a new line after a few
characters.

I would like this:

This line is a bit longer and fills up more of the screen, leaving less white space. I think this
looks nicer, but I cannot figure out how to do it.

Thank you for the very fast response! I am still having some difficulty understanding what to do, unfortunately.
Right now I am just using a regular laptop, I think the screen size is around 1360 x 768 (16:9).

I was not able to find a file called globals

there is a file called _global.css, but this file does not contain %padding-regular

_variables.css also does not contain %padding-regular
I was able to find the code snippet you provided in the _utility.scss file, but I am not sure if I am supposed to make changes here. It looks like %padding-regular is defined in _utility.scss:

%padding-regular {
  padding: $padding-small $padding-x-large;
  @media (max-width: 1000px) {
    padding: $padding-small * 1.5 $padding-large / 1.6;
  }
  @media (max-width: 576px) {
    padding: $padding-small;
  }
}

In _variables.scss I do indeed see the Padding variables.
// Padding
$padding-x-large: 23%;
$padding-large: 20%;
$padding-medium: 6%;
$padding-small: 4%;
$padding-x-small: 3%;
$title-padding: 0.5em;

I am still not sure what changes to make, however.

I think I figured it out, thanks for the help!
My solution:
in file _utility.css, I changed
%padding-regular {
  padding: $padding-small $padding-x-large;
  @media (max-width: 1000px) {
    padding: $padding-small * 1.5 $padding-large / 1.6;
  }
  @media (max-width: 576px) {
    padding: $padding-small;
  }
}

to
%padding-regular {
  padding: $padding-medium;          <-------------------------------------
  @media (max-width: 1000px) {
    padding: $padding-small * 1.5 $padding-large / 1.6;
  }
  @media (max-width: 576px) {
    padding: $padding-small;
  }
}

Then in _variables.scss I changed $padding-medium: 6% to $padding-medium: 12%.


Test

What does this PR do?
Checklist before merging

[ ] I have properly formatted metadata files (see CONTRIBUTING document)
[ ] I have added thorough tests. (see this)

Added @melix by load balancing the owners.


Added FileName() to generate random filenames

liberaly inspired by "https://www.npmjs.com/package/natural-filename-generator"
FileName(ext) generates a random multi-world filename with the provided extension.

I removed the comments. For the changes to fullprofile.go and fullprofile_test.go, actually the only changes compared to the original version is that I did run "go fmt". If you want I can revert those changes.

There also seems to be a failing test.

Closing this one since it's stale.


JuypterLab Kernel Restarting in Desktop app but not when running JupyterLab via terminal

Description
I get the following error when running from jupyterlab-desktop but not when running from the home-brew installation of Jupyter lab when running the server from the terminal.

Reproduce

!pip install --upgrade langchain #--quiet
!pip install --upgrade sentence_transformers #--quiet
from langchain.embeddings import HuggingFaceEmbeddings

embeddings = HuggingFaceEmbeddings(model_name='sentence-transformers/all-MiniLM-L6-v2',
                                       model_kwargs={'device': 'cpu'})

Expected behavior
Shouldn't crash.
Context
Jupyter lab desktop with error:

Operating System and version: Mac Sonoma 14.2.1 (M3 Max with 48Gb Ram)
JupyterLab-Desktop version: 4.0.11-1
Installer: arm64 .dmg

Jupyter lab server with no error:

OS: same as above
Installed via brew install jupyter and opened in browser via jupyter lab.
JupyterLab version: Version 4.0.12

Seems like someone else also might have been facing similar issue as mentioned at https://github.com/jupyterlab/jupyterlab-desktop/issues/504. Is there some way to say have unlimited memory and let the OS handle this?

@prabirshrestha this could be caused by one of the dependency Python packages. the environments you are comparing are not identical.
could you try with the latest version (4.0.12), and by also updating the bundled environment?

Do you see any error messages in the JupyterLab Desktop log when the kernel crashes? On macOS, the logs are in ~/Library/Logs/jupyterlab-desktop.

@prabirshrestha Any errors in the logs?

Here is the log.
[2024-02-13 10:20:27.754] [warn]  Connection lost, reconnecting in 0 seconds.
[2024-02-13 10:20:27.762] [error] Uncaught (in promise) Error: Canceled future for kernel_info_request message before replies were done
[2024-02-13 10:20:28.082] [warn]  Failed to fetch ipywidgets through the "jupyter.widget.control" comm channel, fallback to fetching individual model state. Reason: Control comm was closed too early

I have the same issue (
The log is the same


Deployment document updated info

This is the first step of updating the DEPLOYMENT.md file.

You should, however, have a look at why the build fails.

Duplicate of #41, closing this one.


add multiple select support

multiple_select_field: {
    type: 'string',
    title: 'test multiple',
    multiple: true,
    default: ['a','b'],
    enum: ['a','b','c','d','e']
}

I implemented a small ability to multi select field. maybe I did not properly use the default value? I'm putting out there saved data from db json... but for me it works. I think that features may be interesting for someone, how do you think?

Thanks. If this still is of interest to you, can you rebase and adapt with the Bootstrap 3 templates ?


Microsoft Teams: UpdateActivity expected use case with postBack

I just attempted to take a message I recieved via a button click (using postBack, I know it is not fully implemented), seems like the activity ID returned doesn't match the one returned by the SendToConversation.
My question is the intention that when a button is click that the message received by the http handler will have the same ID as the one returned when I sent the original message?

When you say you sent the original message, you mean you replied to a message?  Currently Teams can only reply to messages, and in this case, the message you received by your bot should have the activityID in the replyToId.

I mean bot sends a message to a user with a button. That message is given id A (as returned by the post to the framework endpoint). Then the user clicks the button. I'd expect postBack to return to me a message with id A again saying 'hey this message's button was clicked'.
Currently I get a different id when I receive the button click from the user.
An example use case would be to clear out the buttons once a selection has been made.

@james-lawrence are you still experiencing this issue? Let us know and we can follow up if so.

Unknown, havent tested that particular piece of functionality. the new invoke method solves part of the issue.

@james-lawrence that makes sense. Closing this now then, but feel free to reopen if you want to revisit.


What to send over the wire (kafka)?

Currently, arch-bom, a team at edX, is testing MVP Kafka event bus integration into the Open edX platform. During the implementation, a couple of questions were raised and github issues seems like a great public venue to have the discussion.
Questions:

What is sent over the over the wire in Kafka?
The options are:
a. The serialized versions of the attrs decorated classes implemented in data.py
b. The serialized version of signal classes implemented in signal.py
c. The serialized version of data attribute in signal classes. Example
What is sent by a django signals sender?
I do not know django signals very well, so I curious if the intention is for django signals to send the signals classes implemented in signal.py. Or will the signal sender also send exactly the same information as a Kafka producer.
Depending on which option we choose above for Kafka, what happens when we need to change data definition(schema)? Specifically, which unit changes?
Choices:
a. Attrs decorated classes in data.py
b. signals class in signal.py
c. Both??

My main goal for this discussion is pinpointing what to use to create a schema for Kafka. So far, I've been using the Attrs decorated classes in data.py.

@robrap I created this issue to further along discussions on Kafka/schema/signals from this convo: https://edx-internal.slack.com/archives/C024JPE27PV/p1642175923001100

@mariajgrimaldi and @felipemontoya are closer to this work, but I'll take a stab at this based on some early design thoughts and my understanding of where we're at. I'm also going to answer in a slightly different order because I think it makes it easier:
In-process Signals

What is sent by a django signals sender?
I do not know django signals very well, so I curious if the intention is for django signals to send the signals classes implemented in signals.py. Or will the signal sender also send exactly the same information as a Kafka producer.

OpenEdxPublicSignal subclasses Django's built-in Signal class, so we'd send it in the same way under the covers (well, more or less–we have extra validation that happens first).
On the receiving side, the convention used by Django signals is to send data in keyword arguments, since that allows you to add more data to the Signal in a backwards compatible way. OpenEdxPublicSignal echoes that convention and builds on top of it. So taking one example:
STUDENT_REGISTRATION_COMPLETED = OpenEdxPublicSignal(
    event_type="org.openedx.learning.student.registration.completed.v1",
    data={
        "user": UserData,
    }
)

The contents of the data dict are expanded out into **kwargs. There's also a metadata keyword argument added to hold things like the event type–probably most useful when we want to send this message across the network. A receiver might look something like:
@receiver(STUDENT_REGISTRATION_COMPLETED)  # note: we'd probably use manual signal connecting instead
def send_welcome_notification(sender, user, **kwargs):
    # do something here

Later on, when demographics gets added as a new data item, the above code still works.
Kafka message format

What is sent over the over the wire in Kafka?
The options are:
a. The serialized versions of the attrs decorated classes implemented in data.py
b. The serialized version of signal classes implemented in signal.py
c. The serialized version of data attribute in signal classes. Example

I'm not totally sure if I get your meaning, but I think my take would be (b)–or at least all the data from (b) even if we don't have access to the object itself (see example below). It would be really nice if we had a call that could convert a whole OpenEdxPublicSignal instance into a message format that goes over the wire. If it could be implemented at the receiver level, we could hook up a bunch of Signals to a handler like:
def send_signal_to_kafka(sender, metadata, **kwargs):
    # furious hand-waving
    message = create_message(metadata, **kwargs)
    kafka.send(message)

Whether that takes the form of Avro or JSON, I don't have any strong opinions on. I would caution against picking a format for purely performance reasons though, since I'm guessing our performance bottlenecks won't be in the serialization format.
My hope is that the processes that are pulling off of Kafka on the other end will get enough data to send their own OpenEdxPublicSignal internally. The metadata would be enough to figure out which instance to call send on, and the rest of the data gets deserialized into named arguments. So as a developer writing a Django app and interested in these events, you write the same code whether you're listening for the Signal in-process or in another service.
Evolving the format over time

Depending on which option we choose above for Kafka, what happens when we need to change data definition(schema)? Specifically, which unit changes?
Choices:
a. Attrs decorated classes in data.py
b. signals class in signal.py
c. Both??

I'm personally in favor of adding new things as new attrs classes–so as new entries in an OpenEdxPublicSignal's data dictionary. I think that it makes clients easier to write and maintain if you only have to check whether a keyword arg was sent at all, rather than also having to worry about what version of data was sent. It's also more consistent with Django signals conventions, where data is added incrementally as new keyword args. In the example I gave with STUDENT_REGISTRATION_COMPLETED, it would mean that demographics was added as a new keyword arg in some future version, rather than adding new data into the user argument.

I think this is a great place to have the discussion. Easier to follow in context than a thread in slack.
Now, I think the description that @ormsbee made about the django signals is very clear and I agree with all of it. Perhaps I'll add that all forms of connecting to the signal as a receiver are well supported and one could:

connect the signal manually as we do already for current events STUDENT_REGISTRATION_COMPLETED.connect(event_receiver)
use the decorator. @receiver(STUDENT_REGISTRATION_COMPLETED) ...
use the signals_config in a plugin definition

About the Kafka question, I have been tuning in to the current discussion but I have zero experience with it. From my understanding, you would like to send both the data passed to the OpenEdxPublicSignal and the metadata as well. Specially since that is the part that contains everything that makes a signal compatible with OEP-41. That probably also means option b. A simple way of serializing could mean the metadata renaming the event_type to type + id + data which would make the message a CloudEvents 1.0 kind of message already.
To the point of changing the data definition. We have had some discussions about this in the past that culminated in an ADR which I'm very much in favor of keeping. In summary Signals conform to semver2, so changes immediately triggers a major or minor change depending on the backwards compatibility of the change.
Should the change be major, then a complete new signal with a new definition would be required. On the "Consequences" section of the ADR, we made a note about new signals requiring that both are maintained for a while and follow a deprecation process.
STUDENT_REGISTRATION_COMPLETED = OpenEdxPublicSignal(
    event_type="org.openedx.learning.student.registration.completed.v1",
    data={
        "user": UserData,
    }
)
STUDENT_REGISTRATION_COMPLETED_V2 = OpenEdxPublicSignal(
    event_type="org.openedx.learning.student.registration.completed.v2",
    data={
        "registration": RegistrationData,
    }
)

In case the change is minor, then we only add entries to the data dict of the signal and add a minor_version to the definition.
STUDENT_REGISTRATION_COMPLETED = OpenEdxPublicSignal(
    event_type="org.openedx.learning.student.registration.completed.v1",
    minor_version=1,
    data={
        "user": UserData,
        "form": RegistrationFormData,
    }
)

Thanks for all your thoughts.

Regarding Kafka consumers, most example code ensure messages are processed by combining the listening, processing, error handling, and acknowledging (i.e. moving on). It would be a very different pattern to just send a signal and assume everything is doing what it needs to. This probably warrants a longer discussion that maybe should be its own thread?

I'm trying to reconcile the way explicit schemas, and a schema registry, and schema evolution rules work with the currently proposed design that is set up to work with signals, where no explicit schema and few rules have been defined.

Are there any rules for how and if one of the data objects might change internally, or is that left up in the air? For our explicit schema definitions, this would be much more well defined. Is that ok?
I think we'll just need to research how and if we could translate your top-level list of optional data keys to a formal schema definition that can evolve by adding new keys. @jinder1s: Is this simple? Can you evolve a schema adding optional fields representing objects? Would it just default to null (None)?

Other related event design questions.

I assume all of the top-level objects in the dict are limited to Data objects?
Existing example events seem to represent objects that seem agnostic to the type of event. For example, enrollment created, enrollment changed, and unenrollment completed, all just contain CourseEnrollmentData. What if there were data specific to creation or update or completion? Would we add a CourseEnrollmentUpdatedData class, as an example, to handle one additional field? Or, would we start adding fields to CourseEnrollmentData that only make sense for a subset of the events? This may not be important at this time. I'm not sure, but I'm trying to map a single schema per event to the dict of reusable data classes. Additionally, I have read it recommended not to try to reuse data definitions across events, and I'm trying to understand if that was a bad or good recommendation. Note: we have not started differentiating these events (other than via event_type), and we haven't started evolving our events (for any reason), so it may be too early to judge.

Regarding Kafka consumers, most example code ensure messages are processed by combining the listening, processing, error handling, and acknowledging (i.e. moving on). It would be a very different pattern to just send a signal and assume everything is doing what it needs to. This probably warrants a longer discussion that maybe should be its own thread?

A consumer still has that option. Django signals look asynchronous, but they're really just synchronously dispatching in-process. The send_event method even has a send_robust flag already, so we can stop processing at the first handler that goes wrong. Whatever is listening to the Kafka queue as a consumer could do something like:
def message_handler(message):
    signal, data = create_signal_from_message(message)  # Do the lookup based on event_id and fill in the fields.
    results = signal.send_event(**data)
    # At this point in the code, all handlers have executed. We can inspect results, catch errors, etc.
    kafka.ack_msg()  # (waves hands)

I'm trying to reconcile the way explicit schemas, and a schema registry, and schema evolution rules work with the currently proposed design that is set up to work with signals, where no explicit schema and few rules have been defined.

I don't know the specifics of schema specification. I had thought that it would be possible to generate the schema from the attrs data classes, either dynamically at runtime, or via code generation.
Would it help if you fleshed out how we'd want to do schema specification if signals were completely out of the picture, and then we can see what it would take to bridge the two?

Are there any rules for how and if one of the data objects might change internally, or is that left up in the air?

I'd say that the data objects shouldn't change internally, and that all new data should be new objects.

For our explicit schema definitions, this would be much more well defined. Is that ok?

Probably? What would we express in the schema definition that we couldn't derive from the signal definition and attrs classes?

I think we'll just need to research how and if we could translate your top-level list of optional data keys to a formal schema definition that can evolve by adding new keys. @jinder1s: Is this simple? Can you evolve a schema adding optional fields representing objects? Would it just default to null (None)?

Based on my brief reading of Avro compatibility modes, I think we'd be shooting for FORWARD or FORWARD_TRANSITIVE compatibility. The producer gets upgraded first, and the consumers can lag behind a bit–which seems appropriate for our situation since something like COURSE_ENROLLMENT_CREATED may have a whole bunch of consumers that may or may not be updated in a timely fashion. That allows for the addition of new fields as the schema evolves, with old consumers just ignoring the new stuff they don't understand.

Other related event design questions.

I assume all of the top-level objects in the dict are limited to Data objects?

I don't think they have to be. There are some use cases where I could see a single top-level primitive being added, like a boolean for has_pii or a string for site for people running multiple instances. It's also possible that there will be just one tiny extra piece of data that folks want to include in a message, but can't add it to an existing attrs data class because of the "don't change it, make a new entry" rule that I'd like to see us use.

Existing example events seem to represent objects that seem agnostic to the type of event. For example, enrollment created, enrollment changed, and unenrollment completed, all just contain CourseEnrollmentData. What if there were data specific to creation or update or completion? Would we add a CourseEnrollmentUpdatedData class, as an example, to handle one additional field? Or, would we start adding fields to CourseEnrollmentData that only make sense for a subset of the events? This may not be important at this time. I'm not sure, but I'm trying to map a single schema per event to the dict of reusable data classes. Additionally, I have read it recommended not to try to reuse data definitions across events, and I'm trying to understand if that was a bad or good recommendation. Note: we have not started differentiating these events (other than via event_type), and we haven't started evolving our events (for any reason), so it may be too early to judge.

I'm in favor of adding new top-level objects/primitives, and not adding fields to existing classes. It looks uglier, but it's more predictable.

Thanks @ormsbee for your thoughtful responses.

Regarding Kafka consumers, ...

A consumer still has that option. Django signals look asynchronous, ...

Yes. It seems there are options here. We will be working on this shortly, so we'll understand more soon.

I'm trying to reconcile the way explicit schemas, and a schema registry, and schema evolution rules work with the currently proposed design...

I don't know the specifics of schema specification. I had thought that it would be possible to generate the schema from the attrs data classes, either dynamically at runtime, or via code generation.

Yes. This is what we was implemented for runtime generation here: https://github.com/eduNEXT/openedx-events/blob/main/openedx_events/avro_attrs_bridge.py. This code assumes that attrs with a default represents an optional field.
However, after Jinder built that code that can convert a Data attrs class, we learned more about the top-level data dict in the Signal class, which led to this discussion. Because this top-level data dict is not using attrs, we don't have defaults to determine what should be optional. I guess we'd assume that every top-level dict field is required, which would force FORWARD compatibility at best, to enable adding fields.
Based on recommendations we had read, I was hoping for "FULL" compatibility and loosening as needed. I guess that is still possible, as long as the top-level doesn't change. Note: the idea of a consumer (separate squad) being able to flexibly deploy an update that is ready for new events as soon as they are produced, seems nice.

Are there any rules for how and if one of the data objects might change internally, or is that left up in the air?

I'd say that the data objects shouldn't change internally, and that all new data should be new objects.

Interesting. I imagined that you were thinking something looser than I was thinking, but instead, it seems you were thinking something more strict. Note that FULL compatibility is an option where optional fields could be added or removed.

For our explicit schema definitions, this would be much more well defined. Is that ok?

Probably? What would we express in the schema definition that we couldn't derive from the signal definition and attrs classes?

I guess "more well defined" should have been "more explicit", because of the schema registry and schema evolution checks. I can confirm that the attrs classes can convert to a schema definition. As noted above, the data dict will be able to as well, but will be less flexible because attrs have default capabilities and a dict does not (unless we add a custom mechanism for this).

Other related event design questions.

I assume all of the top-level objects in the dict are limited to Data objects?

I don't think they have to be. There are some use cases where I could see a single top-level primitive being added,...
I'm in favor of adding new top-level objects/primitives, and not adding fields to existing classes. It looks uglier, but it's more predictable.

Ah. Glad I'm checking my invalid assumptions. I'm also glad for the flexibility. I still don't love the exceptional nature of the top-level dict, relative to all the attrs classes, but oh well. Again, it is possible that allowing the addition of optional fields into existing Data classes might keep some changes cleaner, but I guess that is a future event design option that we haven't yet made impossible.

@robrap: Thanks for the quick reply. I think I have a better understanding of where you folks are coming from now.

I guess we'd assume that every top-level dict field is required, which would force FORWARD compatibility at best, to enable adding fields.

Yeah, I guess I'd lean towards having all top-level dict fields be required.
Okay, so my understanding of how Avro serialization works is rudimentary at best, so please bear with me if this is a really silly question: Do we need optional fields in the schema at all?
It's true that we have defaults in our data structures, but those values are being filled in as soon as the data class is instantiated. The values are never going to be missing when it gets to the stage of serializing to send over Kafka. So for the purposes of the Avro schema, can we specify them as required fields that will always be present, but sometimes the value will be null?
Regardless, we should probably make the type information more accurate by taking into account the whole nullable-field thing in our attrs class definitions. So something like:
created_by = attr.ib(type=Optional[UserData], default=None)  # instead of just type=UserData

@ormsbee: Just a quick response to:

Do we need optional fields in the schema at all?

In terms of schema evolution, optional fields are needed for FULL compatibility (repeat of Avro schema evolution link).
I think the benefit is that the producer and all consumers (presumably managed by a mix of owners) can deploy to the new version of the event in any order. Without optional fields, we would commit to FORWARD compatibility, and consumers could not deploy code for a newer event until it is already being produced. I can imagine scenarios where that adds some friction, but all scenarios are imaginary at this point.
So, it is possible for us to say we won't support optional fields, or that we might support them in the future. Note that since defaults and optional are different things, I agree that we should be more explicit if and when we want to support optional fields.

Thank you all for your responses. I plan on writing an ADR based on these responses. For now I will close this issue and then ping you folks when the ADR is ready.

Hi all, I wrote three ADRs based on conversations in this issue and #39:

0004-event-bus-as-extension-of-django-signals.rst
0005-event-bus-support-forward-schema-evolution.rst
0006-schema-implementation-decisions.rst

To learn more about what I wrote and to review: please see PR #40. Thank You!

I plan on working with Jinder to get some updates to the ADRs. You all are welcome to review in their current state, but I can also let you know when our team has completed reviews/updates.


Create PlayButton Plugin

Goal
Creating a PlayButton plugin to append in MediaControl plugins.
How to test
Run example and tests:
Execute the video and make sure that you can play and pause the video.

There are a few commented MediaControlTests, should we keep commented instead of delete them? why?


Security issues (missing headers, mainly)

score is F, that's pretty awful
https://snyk.io/test/website-scanner/?test=210321_XiQF_7eae8bde8d4a1d08cd1fb9d900c247e1&utm_medium=referral&utm_source=webpagetest&utm_campaign=website-scanner

Some tech debt left with content type stuff
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
https://blog.mozilla.org/security/2016/08/26/mitigating-mime-confusion-attacks-in-firefox/
but mostly addressed in #20


No Keyboard input and Problematic Keyboard Mapping

BUG: User can only typing by holding (ALT) + Typing.
BUG: Keyboard Mapping bug: Holding Alt + Enter key = Full screen and,
Holding Alt + F11 = no full screen,
Holding Alt+ All FN = 0 , the keys are not working  in the way that supposed to be. For example Holding ALT + Enter = F11 (Full Screen). Holding Enter + FN keys = Zero.
Let hope you fix these bugs.
Stay safe and thank you in advanced.

Do you have PowerToys installed? Any unusual keyboard layout software? What version of Windows, and what version of Terminal?

Do you have PowerToys installed? Any unusual keyboard layout software? What version of Windows, and what version of Terminal?

Yes. PowerToys installed. US layout  Microsoft. Windows 10 RPO 2004,  latest version of Terminal from Microsoft Store.


SDL mouse driver ignores touchscreen events

We're using the SDL display and mouse drivers.  We had naively assumed that if the UI worked with a mouse then it'd work with a touchscreen, however touchscreen events are completely ignored.
In our use case I fixed this by adding the following to mouse_handler(), but not sure if this is the correct general solution.  Maybe you'd prefer it if this went into a separate touchscreen driver.
        case SDL_FINGERUP:
            left_button_down = false;
            last_x = LV_HOR_RES_MAX * event->tfinger.x / MONITOR_ZOOM;
            last_y = LV_VER_RES_MAX * event->tfinger.y / MONITOR_ZOOM;
            break;
        case SDL_FINGERDOWN:
            left_button_down = true;
            last_x = LV_HOR_RES_MAX * event->tfinger.x / MONITOR_ZOOM;
            last_y = LV_VER_RES_MAX * event->tfinger.y / MONITOR_ZOOM;
            break;
        case SDL_FINGERMOTION:
            last_x = LV_HOR_RES_MAX * event->tfinger.x / MONITOR_ZOOM;
            last_y = LV_VER_RES_MAX * event->tfinger.y / MONITOR_ZOOM;
            break;

Hmm, that's interesting. I thought that mouse events would still be emulated for compatibility purposes.
I think your solution is reasonable and shouldn't break anything on non-touchscreen devices.

I think it's fine to add it to the mouse driver for simplicity.
Can you send a Pull request?


Small updates

Hello,
I stumbled a bit with the actual script, so I took the liberty of rewriting get_system_paths with a more concise piece of code.
I have added/updated the following systems:

Gameboy
Gameboy Color
Gamegear
SMS
Wonderswan
Wonderswan Color

And as a bonus I add a little script used to update the json for the downloader.
I hope this helps a little

oh my god! i just saw this. i'm so sorry. i will see if i can still merge this

Hi there,
I had totally forgotten about the existence of this PR
I'm happy to have contributed


make undefined strict when not capturing macros (#1389)

Fixes #1389
During the non-macro-capture part of dbt parsing, set the undefined handling to 'strict' - currently we let jinja use its default, which is permissive - many times, overly so.
I expect this will break a good number of macros/models/materializations in end user code.
A fix for a lot of issues is, if x.y now raises an error, try x.get('y', '').

@beckjake this does look great, but I am just realizing exactly how many macros out in the wild are going to be totally broken once this is merged.
I think this is in the category of "bandaids we should rip off sooner rather than later". Let me play around with this on some example projects to determine the extent of the damage.

We could subclass that class to have it go through a WARN_ERROR check, and then users could --strict to turn warnings into errors.

Will that approach arrest parsing? I imagine that once the exception is thrown, dbt isn't going to actually parse the rest of the file, right?
This is broadly what I had in mind, but I was picturing either 1) tucking this thing behind --strict mode, or (maybe less desirably) parsing twice, once with StrictUndefined to catch any errors (and throwing a warning) and then with the non-strict Undefined to actually parse the files. I don't think this is necessarily a good idea, but wanted to throw it out there

I think we're saying the same thing - I'm just saying you'd do something along these lines (untested, but seems reasonable enough):
class WarnUndefined(jinja2.StrictUndefined):
    def _fail_with_undefined_warning(self, *args, **kwargs):
        try:
            self._fail_with_undefined_error(*args, **kwargs)
        except Exception as exc:
            if dbt.flags.WARN_ERROR:
                raise
            else:
                logger.warning('WARNING - Undefined jinja: {}'.format(str(exc)))

    __slots__ = ()
    __iter__ = __str__ = __len__ = __nonzero__ = __eq__ = \
    __ne__ = __bool__ = __hash__ = \
        _fail_with_undefined_warning

args['undefined'] = WarnUndefined

Oh, ok, I think i might misunderstand how this jinja handles undefined values. Sure, let's try something like this! I will ping you to make sure I have the right idea :)

Does this close #1389?

@clrcrl it does! I updated the description accordingly - thanks! :)

@beckjake this is super close! Are we able to add a WARNING in the event that an undefined value is encountered, but --warn-error is not provided? At is stands, there's no indication that dbt encountered an undefined variable unless --warn-error is supplied, which doesn't feel right to me.
I think we can use self._undefined_name to help print the warning message

I think we can use self._undefined_name to help print the warning message

So, I definitely could rewrite the function that generates the message and hope it doesn't change in future jinja versions. That said, how much would you object to just doing:
try:
    self._fail_with_undefined_error(*args, **kwargs)
except Exception as exc:
    if dbt.flags.WARN_ERROR:
        raise
    else:
        logger.warning('WARNING: {}'.format(str(exc)))

I'm ok with that! Is there a reason we wouldn't go through the existing warn_or_error codepath?
The other thing I would love would be to add info about the resource where the undefined variable was found. Is that something that Jinja would make easy for us? I'm picturing:
WARNING: <exception text> in model models/abc.sql

Just looking at the code though, I'm not sure how we'd be able to snag that from the WarnUndefined scope

I'm ok with that! Is there a reason we wouldn't go through the existing warn_or_error codepath?

Just that I feel super comfortable letting jinja raise the error and generate a great error message in all sorts of weird edge cases (where does hint come from and what kind of stuff can it get up to? I sure don't know!).

If we let jinja do the reporting, I believe we'll catch it here and display something pleasant that includes the file path, right?

Ah, I meant specifically for the WARNING case, I assumed we'd decorate the error message for an exception... maybe that's not the case....
Let's get this bad boy merged with just a warning log line. Don't worry about the model path -- we're not doing a good job of handling that anywhere at the moment. Presumably if some var is undefined, it will be pretty easy to cmd+f for :)

Let's get this bad boy merged with just a warning log line. Don't worry about the model path -- we're not doing a good job of handling that anywhere at the moment. Presumably if some var is undefined, it will be pretty easy to cmd+f for :)

Are you sure? I've come up with a reasonably nice solution for it and it's actually not too hard.

I take it all back! Yeah, give it a shot then!

On warnings it now looks like this:
$ dbt compile
Running with dbt=0.13.0
Found 1 models, 0 tests, 0 archives, 0 analyses, 101 macros, 0 operations, 0 seed files, 0 sources

19:42:39 | Concurrency: 2 threads (target='default')
19:42:39 |
COMPILATION WARNING in model x (models/x.sql)
	'value' is undefined
19:42:40 | Done.


Parametrize serde_json::value::Serializer with Strategy to serialize values

Feature request:
Currently, the serde_json::value::Serializer uses to_value() at various points. It would be very convenient to allow configuring this via Generics. Today, this Serializer cannot collect metadata or have special logic, which is applied on all nesting-levels. This pseudo code shows a solution to overcome this limitation:
pub trait SerializeToValue {
   fn serialize_value<S: Serialize>(&mut self, key: &str, item: S) -> Result<serde_json::Value, serde_json::error::Error>;
}

#[derive(Default)]
struct DefaultSerializeToValue;
impl SerializeToValue for DefaultSerializeToValue  {
   fn serialize_value<S: Serialize>(&mut self, key: &str, item: S) -> Result<serde_json::Value, serde_json::error::Error> {
      to_value(item)
   }
}

// In the next major version, this could be added:
// type Serializer = GenericSerializer<DefaultSerializeToValue>;
struct GenericSerializer<T=DefaultToValue> {
   strategy: T
}

Instead of to_value, we could then use self.strategy.serialize_value (e.g. in serialize_newtype_variant). The runtime performance should not change, but there might be some build-time regressions.
As you can see, the above solution doesn't work without breaking changes. Would you consider to mark Serializer deprecated and add a GenericSerializer<T>? For now, the serde_json::value::Serializer and serde_json::value::GenericSerializer could be generated with a macro to avoid Code-Duplication. An alternative would be to ship this Serializer in a separate crate and duplicate the serde_json::value::Serializer code.

I would prefer not to build this into this crate, so you would need to put it in a different crate.

Instead of a macro, we could also tackle the code duplication problem by forwarding all methods/traits of serde_json::value::Seralizer to GenericSerializer::<DefaultSerializeToValue>::*


A problem with the Pop Model

Steps to Reproduce the Problem
Model
type Body struct {
   ID           int     `db:"id"`
  Head          Head    `has_one:"head"`
  Info          string  `db:"info"`
}

func (b Body) TableName() string {
   return "wb_bodies"
}

type Head struct {
    ID           int        `db:"id"`
    BodyID       int        `db:"body_id"`
    Body         *Body      `belongs_to:"body"`
}

func (h Head) TableName() string {
    return "wb_heads"
}

Use Eager().Create ()
    body := &models.Body{
        Info:"Body1",
        Head:models.Head{},
    }
    err := tx.Eager().Create(body)
    if err != nil{
        log.Panic(err)
    }

Expected Behavior
Expected err to be nil
Actual Behavior
But err is not nil
Info
OS : win10 1903
Pop version : 4.11.6
Buffalo version : v0.14.10
Ok ! The database table is normal, the console has output that may help you
    DEBU[2019-09-07T20:40:58+08:00] INSERT INTO `wb_bodies` (`info`) VALUES (:info)
    DEBU[2019-09-07T20:40:58+08:00] INSERT INTO `wb_heads` (`body_id`) VALUES (:body_id)
    2019/09/07 20:40:58 Error 1146: Table 'test.heads' doesn't exist

Pop does not create database tables for you automatically. You can use a fizz migration to create a table.
You can use the buffalo pop create to create a database, then use buffalo pop migrate up to run your migrations. If you used buffalo generate resource, they should be made for you.
See: https://gobuffalo.io/en/docs/db/toolbox#creating-databases

Hi @a952135763, the PR https://github.com/gobuffalo/pop/pull/445 could have solved this
Can you test again with the development branch?

Does anyone know how a workaround for this for Buffalo? I'm trying to create my first Buffalo app and I haven't been able to start a new project, create a resource, buffalo dev, and add a new entry without the above error. I tried setting Pop in Go Mod to development, but I think Buffalo is using it's own binary under the covers so it's not calling out to the development pop.

Hi @tatang26, thanks for the help. I did the replace and go mod tidy, but the table still "doesn't exist", even though I can open the SQLite file with a GUI and see the table created and existing just fine. Any further ideas, or other troubleshooting steps? Should I open a Buffalo issue for this? It seems to make a vanilla install unusable when following the docs.

If the issue is about table creation as you mentioned, the mentioned issue #447 (which was https://github.com/gobuffalo/buffalo/issues/1800) is fixed so I am closing this issue.


fix: 🚑 .github/labeler.yml not available

Description
Fixed the error The configuration file (path: .github/labeler.yml) was not found locally, fetching via the api that occurred when running label.yml (See https://github.com/material-extensions/vscode-material-icon-theme/actions/runs/10141258562/job/28038132986?pr=2496)
Link to fix: https://github.com/actions/labeler/issues/628#issuecomment-1647600431
Contribution Guidelines

[x] By creating this pull request, I acknowledge that I have read the Contribution Guidelines for this project.
[x] I have read the Code Of Conduct and promise to abide by these rules

already worked successfully.

prove it

Then why wasn't a tag added to #2943?

already worked successfully.

prove it

I just merged main into your branch. The workflows are not working for branches which have been created before the workflow was added. That's why backmerging is necessary to apply changes of the workflows also to the PR branch.

already worked successfully.

prove it

I just merged main into your branch. The workflows are not working for branches which have been created before the workflow was added. That's why backmerging is necessary to apply changes of the workflows also to the PR branch.

Got it now, well, now I can close this PR because it is optional


⚠ Bofrost.lu has degraded performance

In 5093691, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2093 ms

Resolved: Bofrost.lu performance has improved in c1e9cc5 after 20 minutes.


Fix import docs fro aws_networkfirewall_resource_policy

Fixes #2760

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@f872722). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #2764   +/-   ##
=========================================
  Coverage          ?   58.33%
=========================================
  Files             ?        1
  Lines             ?       12
  Branches          ?        0
=========================================
  Hits              ?        7
  Misses            ?        4
  Partials          ?        1

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


feat(facepile): add directive

New component - uif-facepile
Closes #275
Code coverage @ 100% for component.

Coverage increased (+0.02%) to 97.443% when pulling 62f84f0fa38e55b27c7393e3ec887d8a89a8e9ef on tobiaswest83:issue-275 into 526e5bd7f2caff871204d04f2524ba8fdba3fae4 on ngOfficeUIFabric:dev.

Unfortunately it appears you forgot to include the JavaScript files in the demo when you committed it. As such, the demo doesn't work so i can't merge this in. can you add the JS files and resubmit the PR? Feel free to create a new one / reopen this one.

dang, sorry @andrewconnell - sorting now for you


Wrong i18n resolution scope while using rspec for views

Hi,
In the code bellow, when I use t('layouts.application.allrights') all works fine, but when I use t('.allrights') the "view spec" fails in that point; however, the page renders correctly in the browser.
I am using RoR 3.1 and rspec-rails 2.7. Any ideas?
the file views/layouts/application.html.haml is:
!!! 5
%html
  %head
    %title= app_name
    -# stylesheet
    = render 'layouts/stylesheets'
    -# javascript
    = render 'layouts/javascripts'
    = csrf_meta_tags
  %body
    .container
      %header#page-header
        %section#page-header-left
          = app_logo
        %section#page-header-right
          = render 'layouts/signin_form'
          #header-content= yield :header
      %section#page-main
        = yield
      %footer#page-footer
        %section#page-footer-top
          #footer-content= yield :footer
        %section#page-footer-left
          = "#{app_author} #{t('layouts.application.allrights')} #{DateTime.now.year}"
        %section#page-footer-right
          %nav
            = link_to t('.user_agreement'), "#"
            = link_to t('.privacy_policy'), "#"
            = link_to t('.copyright_policy'), "#"

the file /config/locales/views/layouts/en.yml is:
en:

  layouts:

    application:

      allrights: "All rights reserved"
      user_agreement: "User Agreement"
      privacy_policy: "Privacy Policy"
      copyright_policy: "Copyright Policy"

    signin_form:

      username: "email"
      password: "password"
      signin: "Sign in"
      keepmesignedin: "keep me signed in"
      forgotyourpass: "forgot your password?"

This is a rails or rspec issue, certainly not i18n one.


Update vim autocmd from 'Lint' to 'GoLint'

I think the current one is correct. Perhaps you're using vim-go, which hooks up GoLint by default.

Oops, you are right!


Proposal: using gob for record-based serialization

Motivation
The gob encoder includes type data on a just-in-time basis within a stream. This makes it impossible to use gobs as a record-based serialization format. Some changes could expand gobs to this use case.
Protobufs are an instructive example: a fixed specification, once loaded, can be used to quickly encode/decode any number of independent records in any order. Protobufs, however, incur the overhead of external specification and compilation in order to support multiple languages.
Since gobs are "unashamedly Go-centric", external specification and compilation should not be needed. It should be possible to dynamically generate the type specification information directly while encoding values.
Proposal
Allow the developer to generate their own type specifications needed to encode or decode a given type. The developer can subsequently encode values in a strict fashion, adhering to previously-created type specifications. Finally, the developer can decode values adhering to provided type specifications.
Implementation
A simple implementation permits generating an ordered list of wireType structs needed to encode a value. This list could be encapsulated in an opaque object RecordSpec which can be added to the built-in types so that serializing it as a record does not itself require a RecordSpec.
Once generated, RecordSpec can be used to create a RecordEncoder and a RecordDecoder.
type RecordSpec []wireType
func NewRecordSpec(interface{}) (*RecordSpec, error) { ... }

func NewRecordEncoder(*RecordSpec) *RecordEncoder { ... }
func (*RecordEncoder) Encode(interface{}) ([]byte, error) { ... }

func NewRecordDecoder(*RecordSpec) *RecordDecoder { ... }
func (*RecordDecoder) Decode([]byte, interface{}) error { ... }

Example usage
package main

import "encoding/gob"

type Type1 struct {
  v2 Type2
}
type Type2 struct {
  i int
}

func main() {
  t1 := new(Type1)
  t1.v2.i = 42
  rs, err := gob.NewRecordSpec(t)
  if err != nil {
    return err
  }

  // rs == []gob.wireType {
  //    wireType{ /* for Type1 */ },
  //    wireType{ /* for Type2 */ },
  // }

  renc := gob.NewRecordEncoder(rs)
  b, err := renc.Encode(t)
  if err != nil {
    // In addition to the usual errors, Encode also reports an error if the
    // provided type cannot be fully encoded using only the given RecordSpec
    // (i.e. no additional wireType's need to be generated).
    return err
  }

  // Internal: type_ids in byte stream b correspond to indexes into the list
  // of wireType's in rs

  // developer transfers or persists b and rs separately

  rdec := gob.NewRecordDecoder(rs)
  t2 := new(Type1)
  err = rdec.Decode(b, t2)
  if err != nil {
    // Additional possible error as above.
    return err
  }
}

This seems to be overstepping the bounds of what gob was designed for, and is an odd API addition IMO. Does this exist as an external package somewhere? Is anyone using it?
cc @robpike

Gob is designed to work as a stream. This violates its design principles. There are some nasty questions around making this work, too. Interface values would be particularly problematic.
I advise against this proposal.

I'm going to decline this proposal and close the issue. This is in line with our plans to finish the standard library rather than keep adding more and more over time.
If this feature is useful for you, you can implement it as a separate external package.

Would you entertain a proposal to export some of the gob machinery for re-use by external packages implementing different serialization schemes like this one? I would specifically be interested in the type specification (wireType and friends) and the generation of encoding machines.
These components are implicitly stabilized since they either appear on the wire or generate data on the wire for use by programs possibly compiled against multiple versions of Go1. So adding a stable developer-facing API to them would not appreciably restrict future development of the standard libraries any more than is already the case.

Just fork encoding/gob into your own package and use what you need. We don't want to expand the public API, especially just for "util" functions that 99% of users will never use and only be confused by when reading docs.


Workspace – Workspace name/avatar not updated on another device if workspace chat is open

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: 9.0.30-7
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/4936874
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Issue reported by: Applause - Internal Team
Action Performed:

Go to https://staging.new.expensify.com/
Log in
Go to Account settings > Workspaces
Create a new Workspace
Log in as the same user on another device
On another device open Workspace chat created on step 4
On main device change Workspace avatar and name
Observe the Workspace chat header on another device

Expected Result:
Workspace name/avatar updated on another device workspace chat header
Actual Result:
Workspace name/avatar not updated on another device workspace chat header
Workaround:
Unknown
Platforms:

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

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

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/user-attachments/assets/50337814-f8af-4da3-a32b-d126f1a10ac4
View all open jobs on GitHub

Proposal
Please re-state the problem that we are trying to solve in this issue.
WS name & avatar isn't updated dynamically.
What is the root cause of that problem?
The name of the workspace comes from the policy object, but we pass undefined to the policy param of getReportName.
https://github.com/Expensify/App/blob/7ebfaa0daaa43a20083250e0f263964ed5b647b2/src/pages/home/HeaderView.tsx#L81
react-complier automatically memoized the result, so it won't be re-calculated when the policy data is changed.
For the workspace avatar, we get the avatar from the report policyAvatar and fallback to the policy avatarURL.
https://github.com/Expensify/App/blob/7ebfaa0daaa43a20083250e0f263964ed5b647b2/src/libs/ReportUtils.ts#L1952
However, the Pusher only updates the policy.avatarURL, but doesn't send the updated policyAvatar. But if we look at the LHN, the avatar is updated, that's because we use caching for the avatar. The announce room of the workspace doesn't have policyAvatar, so it will use the updated policy.avatarURL and save it to the cache. When the LHN tries to get the avatar, the cache is available, so it shows the updated avatar.
But this doesn't happen with the header or the report welcome text avatar because the same reason as above, that is we don't pass the policy to the function.
https://github.com/Expensify/App/blob/7ebfaa0daaa43a20083250e0f263964ed5b647b2/src/pages/home/HeaderView.tsx#L128
https://github.com/Expensify/App/blob/7ebfaa0daaa43a20083250e0f263964ed5b647b2/src/pages/home/report/ReportActionItemCreated.tsx#L50
What changes do you think we should make in order to solve the problem?

We need to pass policy to both getIcons and getReportName.
https://github.com/Expensify/App/blob/7ebfaa0daaa43a20083250e0f263964ed5b647b2/src/pages/home/HeaderView.tsx#L81
https://github.com/Expensify/App/blob/7ebfaa0daaa43a20083250e0f263964ed5b647b2/src/pages/home/HeaderView.tsx#L128
https://github.com/Expensify/App/blob/7ebfaa0daaa43a20083250e0f263964ed5b647b2/src/pages/home/report/ReportActionItemCreated.tsx#L50
optionally, I think we should prioritize the policy avatarURL instead of the report.policyAvatar.
https://github.com/Expensify/App/blob/7ebfaa0daaa43a20083250e0f263964ed5b647b2/src/libs/ReportUtils.ts#L1952

Looking at this today

Still reproducible by the tester.
https://github.com/user-attachments/assets/9b18770e-86cf-4fbf-ad47-763055eb64bb

Thanks @kavimuru !

@bernhardoj proposal LGTM as updation of workspace name and avatar requires policy in  getIcons and getReportName.  Regarding the optional suggestion, let us not change the existing order of report policyAvatar and policy avatarURL unless there is a concrete need to do this.
🎀👀🎀 C+ reviewed

Friendly bump @neil-marcellini 😃 . Thank you!

@bernhardoj proposal LGTM as updation of workspace name and avatar requires policy in getIcons and getReportName. Regarding the optional suggestion, let us not change the existing order of report policyAvatar and policy avatarURL unless there is a concrete need to do this. 🎀👀🎀 C+ reviewed

I agree, hiring 🚀

Any update here @bernhardoj @rojiphil? 😃

PR is ready
cc: @rojiphil

Deployed to production yesterday. Will issue payment on 2024-10-07.
@rojiphil can you propose regression testing if needed? Thank you!

[x]  [@rojiphil] The PR that introduced the bug has been identified. Link to the PR: Offending PR
[x]  [@rojiphil] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment: Added comment
[x]  [@rojiphil] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion: Not Required. Existing checklist is good enough to capture such issues.
[x]  [@rojiphil] Determine if we should create a regression test for this bug. : Yes. We can
[x]  [@rojiphil] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.

Steps:
Prerequisite: Login using the same account in two devices: Device 1 and Device 2. Also, ensure that Device 1 and Device 2 receives pusher updates so that the UI get’s updated automatically.

Device 1: Navigate to a Workspace Chat
Device 2 : Navigate to Account Settings -> Workspace -> Profile
Device 2 : Change the workspace avatar and name.
Device 1: Verify that the Workspace Chat header and Item Created action reflects the updated workspace avatar.  Also verify that the updated workspace name is reflected in header.

can you propose regression testing if needed? Thank you!

@OfstadC I have completed the BZ checklist which includes the regression test. Thanks.

Just a note for myself for Monday's payment - @bernhardoj is paid via New Expensify & @rojiphil is issued payment in Upwork

@rojiphil It looks like you haven't accepted the offer yet. Could you please accept this offer so I can issue payment in Upwork? 😃

Payment Summary

@rojiphil Upwork offer pending
@bernhardoj due $250 via New Expensify request

It looks like you haven't accepted the offer yet. Could you please accept this offer so I can issue payment in Upwork? 😃

@OfstadC Accepted Offer. Thanks.

Requested in ND.

$250 approved for @bernhardoj


order projects by latest commit

Would there be a way to order project by latest commit in GitList index page ?
Regards,
Jérémie

I would be interested in a feature for that too!

@jgastonraoul
Warning: very hacky solution ahead!
Adding the following code snippet in src/Git/Client.php at line 230 (before return statement, after foreach loop) will sort the repositories by last modification date:
        # START CUSTOM DIR SORTING

        $dirs = [];
        foreach ($repositories as $repository) {
            $dirs[$repository['path']] = filemtime($repository['path']);
        }
        arsort($dirs);

        $repositories = [];
        foreach (array_keys($dirs) as $dir) {
            if (file_exists($dir . '/HEAD')) {
                $description = $dir . '/description';
            } else {
                $description = $dir . '/.git/description';
            }

            if (file_exists($description)) {
                $description = file_get_contents($description);
            } else {
                $description = null;
            }

            $repositories[] = [
                'path' => $dir,
                'name' => basename($dir),
                'description' => $description
            ];
        }

        # END CUSTOM DIR SORTING


String literals should not be duplicated

What is the code smell/ issue?
String literals should not be duplicates.
How is this code smell/ issue relevant?
Using duplicate string literals can make the refactoring process error-prone and can also make the code less complex.
How can this issue be resolved?
Using constants instead of duplicating string literals can make the code less complex as constants can be referred from many places and can be updated in a single place.

Looks good, but the new variable does not have to be public.


Calculator code in Android Language

I have created a folder for android language and added one file in it with the code of calculator

Hey it was a Java code for android it can be useful for beginners